My43LjIKNDdlOWY4ZjhlNjMxOGYwYWViOWJkMzg0ZDhjZjIxZjg1YTBkZWE2OQoECG86GVNhc3M6OlRyZWU6OlJvb3ROb2RlDDoOQGNoaWxkcmVuWxBvOhxTYXNzOjpUcmVlOjpDb21tZW50Tm9kZQw6C0B2YWx1ZVsGSSICnAIvKi8gU3ludGF4IE5vcm1hbGl6YXRpb24KICovID09PT09PT09PT09PT09PT09PT09CiAqLyBTdXN5IGlzIGRpdmlkZWQgaW50byB0d28gbGF5ZXJzOgogKi8gIlN1IiBwcm92aWRlcyB0aGUgY29yZSBtYXRoIGZ1bmN0aW9ucyB3aXRoIGEgc3RyaXBwZWQtZG93biBzeW50YXgsCiAqLyB3aGlsZSAiU3VzeSIgYWRkcyBnbG9iYWwgc2V0dGluZ3MsIHNob3J0aGFuZCBzeW50YXgsCiAqLyBhbmQgb3RoZXIgaGVscGVycy4KICovIEVhY2ggc2V0dGluZyAoZS5nLiBzcGFuLCBsb2NhdGlvbiwgY29sdW1ucywgc3ByZWFkLCBldGMuKQogKi8gaGFzIGEgc2luZ2xlIGNhbm9uaWNhbCBzeW50YXggaW4gU3UuCiAqLwogKi8gVGhpcyBub3JtYWxpemF0aW9uIG1vZHVsZSBoZWxwcyB0cmFuc2xhdGUgYmV0d2VlbiB0aG9zZSBsYXllcnMsCiAqLyB0cmFuc2Zvcm1pbmcgcGFyc2VkIFN1c3kgaW5wdXQgaW50bwogKi8gdmFsdWVzIHRoYXQgU3Ugd2lsbCB1bmRlcnN0YW5kLgogKi8KICovIEBncm91cCB4LW5vcm1hbAogKi8KICovIEBzZWUgc3VzeS1ub3JtYWxpemUKICovIEBzZWUgc3VzeS1ub3JtYWxpemUtc3BhbgogKi8gQHNlZSBzdXN5LW5vcm1hbGl6ZS1jb2x1bW5zCiAqLyBAc2VlIHN1c3ktbm9ybWFsaXplLXNwcmVhZAogKi8gQHNlZSBzdXN5LW5vcm1hbGl6ZS1sb2NhdGlvbiAqLwY6BkVUOgpAdHlwZToLc2lsZW50OwZbADoOQGZpbGVuYW1lMDoNQG9wdGlvbnN7ADoKQGxpbmVpBjoSQHNvdXJjZV9yYW5nZW86GFNhc3M6OlNvdXJjZTo6UmFuZ2UJOg9Ac3RhcnRfcG9zbzobU2Fzczo6U291cmNlOjpQb3NpdGlvbgc7DmkGOgxAb2Zmc2V0aQY6DUBlbmRfcG9zbzsSBzsOaRk7E2kmOgpAZmlsZUkieS9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9zdXN5L3N1c3kvX25vcm1hbGl6ZS5zY3NzBjsJVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwlGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsJVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGbzsHDDsIWwZJIgIfBC8qIFN1c3kgTm9ybWFsaXplCiAqIC0tLS0tLS0tLS0tLS0tCiAqLyBOb3JtYWxpemUgdGhlIHZhbHVlcyBpbiBhIGNvbmZpZ3VyYXRpb24gbWFwLgogKi8gSW4gYWRkaXRpb24gdG8gdGhlIGdsb2JhbCBgJHN1c3lgIHByb3BlcnRpZXMsCiAqLyB0aGlzIG1hcCBjYW4gaW5jbHVkZSBsb2NhbCBzcGFuLXJlbGF0ZWQgaW1mb3JtYXRpb24sCiAqLyBsaWtlIGBzcGFuYCBhbmQgYGxvY2F0aW9uYC4KICovCiAqLyBOb3JtYWxpemF0aW9uIGRvZXMgbm90IGNoZWNrIHRoYXQgdmFsdWVzIGFyZSB2YWxpZCwKICovIHdoaWNoIHdpbGwgaGFwcGVuIGluIHRoZSBTdSBtYXRoIGxheWVyLgogKi8gVGhlc2UgZnVuY3Rpb25zIG1lcmVseSBsb29rIGZvciBrbm93biBTdXN5IHN5bnRheCDigJMKICovIHJldHVybmluZyBhIG1hcCB3aXRoIHRob3NlIHNob3J0aGFuZCB2YWx1ZXMKICovIGNvbnZlcnRlZCBpbnRvIGxvdy1sZXZlbCBkYXRhIGZvciBTdS4KICovIEZvciBleGFtcGxlIGBzcGFuOiBhbGxgIGFuZCBgbG9jYXRpb246IGZpcnN0YAogKi8gd2lsbCBiZSBjb252ZXJ0ZWQgaW50byBzcGVjaWZpYyBudW1iZXJzLgogKi8KICovIEBncm91cCB4LW5vcm1hbAogKi8gQHNlZSAkc3VzeQogKi8gQHNlZSBzdXN5LXBhcnNlCiAqLwogKi8gQHBhcmFtIHttYXB9ICRjb25maWcgLQogKi8gICBNYXAgb2YgU3VzeSBjb25maWd1cmF0aW9uIHNldHRpbmdzIHRvIG5vcm1hbGl6ZS4KICovICAgU2VlIGAkc3VzeWAgYW5kIGBzdXN5LXBhcnNlKClgIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuCiAqLyBAcGFyYW0ge21hcCB8IG51bGx9ICRjb250ZXh0IFtudWxsXSAtCiAqLyAgIE1hcCBvZiBTdXN5IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgdG8gdXNlIGFzIGdsb2JhbCByZWZlcmVuY2UsCiAqLyAgIG9yIGBudWxsYCB0byB1c2UgZ2xvYmFsIHNldHRpbmdzLgogKi8KICovIEByZXR1cm4ge21hcH0gLQogKi8gICBNYXAgb2YgU3VzeSBjb25maWd1cmF0aW9uIHNldHRpbmdzLAogKi8gICB3aXRoIGFsbCB2YWx1ZXMgbm9ybWFsaXplZCBmb3IgU3UgbWF0aCBmdW5jdGlvbnMuICovBjsJVDsKOws7BlsAOwwwOw1ACzsOaR07D287EAk7EW87Egc7DmkdOxNpBjsUbzsSBzsOaTk7E2k9OxVADzsWQBBvOh1TYXNzOjpUcmVlOjpGdW5jdGlvbk5vZGUOOgpAbmFtZUkiE3N1c3ktbm9ybWFsaXplBjsJVDoKQGFyZ3NbB1sHbzohU2Fzczo6U2NyaXB0OjpUcmVlOjpWYXJpYWJsZQs7HkkiC2NvbmZpZwY7CVQ6FkB1bmRlcnNjb3JlZF9uYW1lSSILY29uZmlnBjsJVDsOaTs7D287EAk7EW87Egc7Dmk7OxNpCDsUbzsSBzsOaTs7E2kPOxVADzsWQBA7DEAPOw1ACzBbB287IAs7HkkiDGNvbnRleHQGOwlUOyFJIgxjb250ZXh0BjsJVDsOaTw7D287EAk7EW87Egc7Dmk8OxNpCDsUbzsSBzsOaTw7E2kQOxVADzsWQBA7DEAPOw1AC286IFNhc3M6OlNjcmlwdDo6VHJlZTo6TGl0ZXJhbAk7CG86HlNhc3M6OlNjcmlwdDo6VmFsdWU6Ok51bGwHOwgwOw1ACzsOaTw7D287EAk7EW87Egc7Dmk8OxNpEjsUbzsSBzsOaTw7E2kWOxVADzsWQBA7DEAPOgtAc3BsYXQwOwZbEm87Bww7CFsGSSIRLyogU3ByZWFkICovBjsJVDsKOws7BlsAOwwwOw1ACzsOaT47D287EAk7EW87Egc7Dmk+OxNpCDsUbzsSBzsOaT47E2kROxVADzsWQBBvOhlTYXNzOjpUcmVlOjpFYWNoTm9kZQ06CkB2YXJzWwZJIgxzZXR0aW5nBjsJVDoKQGxpc3RvOiRTYXNzOjpTY3JpcHQ6OlRyZWU6Okxpc3RMaXRlcmFsDDoOQGVsZW1lbnRzWwdvOyIJOwhvOiBTYXNzOjpTY3JpcHQ6OlZhbHVlOjpTdHJpbmcJOwhJIgtzcHJlYWQGOwlUOw1ACzsKOgtzdHJpbmc6IkBkZXByZWNhdGVkX2ludGVycF9lcXVpdmFsZW50MDsOaT87D287EAk7EW87Egc7Dmk/OxNpGzsUbzsSBzsOaT87E2kjOxVADzsWQBA7DEAPbzsiCTsIbzsqCTsISSIVY29udGFpbmVyLXNwcmVhZAY7CVQ7DUALOwo7KzssMDsOaT87D287EAk7EW87Egc7Dmk/OxNpJTsUbzsSBzsOaT87E2k3OxVADzsWQBA7DEAPOg9Ac2VwYXJhdG9yOgpjb21tYToPQGJyYWNrZXRlZEY7Dmk/Ow9vOxAJOxFvOxIHOw5pPzsTaRs7FEBKOxVADzsWQBA7DEAPOw1ACzsGWwdvOh1TYXNzOjpUcmVlOjpWYXJpYWJsZU5vZGUOOx5JIgp2YWx1ZQY7CVQ6CkBleHBybzogU2Fzczo6U2NyaXB0OjpUcmVlOjpGdW5jYWxsDzoOQGNhbGxhYmxlMDseSSIMbWFwLWdldAY7CVQ7H1sHbzsgCzseSSILY29uZmlnBjsJVDshSSILY29uZmlnBjsJVDsOaUA7D287EAk7EW87Egc7DmlAOxNpGjsUbzsSBzsOaUA7E2khOxVADzsWQBA7DEAPOw1AC287IAs7HkkiDHNldHRpbmcGOwlUOyFJIgxzZXR0aW5nBjsJVDsOaUA7D287EAk7EW87Egc7DmlAOxNpIzsUbzsSBzsOaUA7E2krOxVADzsWQBA7DEAPOw1ACzoOQGtleXdvcmRzbzoeU2Fzczo6VXRpbDo6Tm9ybWFsaXplZE1hcAc6EUBrZXlfc3RyaW5nc3sAOglAbWFwewA7JDA6EUBrd2FyZ19zcGxhdDA7DmlAOw9vOxAJOxFvOxIHOw5pQDsTaRI7FG87Egc7DmlAOxNpLDsVQA87FkAQOwxADzsNQAs6DUBndWFyZGVkMDoMQGdsb2JhbDA7BlsAOwwwOw1ACzsOaUA7D287EAk7EW87Egc7DmlAOxNpCzsUbzsSBzsOaUA7E2ksOxVADzsWQBB1OhdTYXNzOjpUcmVlOjpJZk5vZGUCSQYECFsIbzohU2Fzczo6U2NyaXB0OjpUcmVlOjpWYXJpYWJsZQs6CkBuYW1lSSIKdmFsdWUGOgZFVDoWQHVuZGVyc2NvcmVkX25hbWVJIgp2YWx1ZQY7B1Q6CkBsaW5laUI6EkBzb3VyY2VfcmFuZ2VvOhhTYXNzOjpTb3VyY2U6OlJhbmdlCToPQHN0YXJ0X3Bvc286G1Nhc3M6OlNvdXJjZTo6UG9zaXRpb24HOwlpQjoMQG9mZnNldGkOOg1AZW5kX3Bvc287DQc7CWlCOw5pFDoKQGZpbGVJInkvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MvbWluaW1hbC1taXN0YWtlcy92ZW5kb3Ivc3VzeS9zdXN5L19ub3JtYWxpemUuc2NzcwY7B1Q6DkBpbXBvcnRlcm86IFNhc3M6OkltcG9ydGVyczo6RmlsZXN5c3RlbQg6CkByb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsHRjoPQHJlYWxfcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7B1Q6GEBzYW1lX25hbWVf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aWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9zdXN5L3N1c3kvX25vcm1hbGl6ZS5zY3NzBjsHVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwdGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsHVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGOg5AZmlsZW5hbWVADDoNQG9wdGlvbnN7ADBbB286HVNhc3M6OlRyZWU6OlZhcmlhYmxlTm9kZQ47BkkiDGNvbHVtbnMGOwdUOgpAZXhwcm86IFNhc3M6OlNjcmlwdDo6VHJlZTo6RnVuY2FsbA86DkBjYWxsYWJsZTA7BkkiG3N1c3ktbm9ybWFsaXplLWNvbHVtbnMGOwdUOgpAYXJnc1sHbzsACzsGSSIMY29sdW1ucwY7B1Q7CEkiDGNvbHVtbnMGOwdUOwlpTDsKbzsLCTsMbzsNBzsJaUw7DmkrOw9vOw0HOwlpTDsOaTM7EEAMOxFADTsYQAw7GUASbzsACzsGSSIMY29udGV4dAY7B1Q7CEkiDGNvbnRleHQGOwdUOwlpTDsKbzsLCTsMbzsNBzsJaUw7Dmk1Ow9vOw0HOwlpTDsOaT07EEAMOxFADTsYQAw7GUASOg5Aa2V5d29yZHNvOh5TYXNzOjpVdGlsOjpOb3JtYWxpemVkTWFwBzoRQGtleV9zdHJpbmdzewA6CUBtYXB7ADoLQHNwbGF0MDoRQGt3YXJnX3NwbGF0MDsJaUw7Cm87Cwk7DG87DQc7CWlMOw5pFDsPbzsNBzsJaUw7Dmk+OxBADDsRQA07GEAMOxlAEjoNQGd1YXJkZWQwOgxAZ2xvYmFsMDoOQGNoaWxkcmVuWwA7GDA7GUASOwlpTDsKbzsLCTsMbzsNBzsJaUw7DmkLOw9vOw0HOwlpTDsOaT47EEAMOxFADW87Gg47BkkiC2NvbmZpZwY7B1Q7G287HA87HTA7BkkiDm1hcC1tZXJnZQY7B1Q7HlsHbzsACzsGSSILY29uZmlnBjsHVDsISSILY29uZmlnBjsHVDsJaU07Cm87Cwk7DG87DQc7CWlNOw5pHTsPbzsNBzsJaU07DmkkOxBADDsRQA07GEAMOxlAEm86I1Nhc3M6OlNjcmlwdDo6VHJlZTo6TWFwTGl0ZXJhbAo6C0BwYWlyc1sGWwdvOiBTYXNzOjpTY3JpcHQ6OlRyZWU6OkxpdGVyYWwJOgtAdmFsdWVvOiBTYXNzOjpTY3JpcHQ6OlZhbHVlOjpTdHJpbmcJOytJIgxjb2x1bW5zBjsHVDsZQBI6CkB0eXBlOgtzdHJpbmc6IkBkZXByZWNhdGVkX2ludGVycF9lcXVpdmFsZW50MDsJaU07Cm87Cwk7DG87DQc7CWlNOw5pJzsPbzsNBzsJaU07DmkwOxBADDsRQA07GEAMbzsACzsGSSIMY29sdW1ucwY7B1Q7CEkiDGNvbHVtbnMGOwdUOwlpTTsKbzsLCTsMbzsNBzsJaU07DmkyOw9vOw0HOwlpTTsOaTo7EEAMOxFADTsYQAw7GUASOwlpTTsKbzsLCTsMbzsNBzsJaU07DmknOw9vOw0HOwlpTTsOaTo7EEAMOxFADTsYQAw7GUASOx9vOyAHOyF7ADsiewA7IzA7JDA7CWlNOwpvOwsJOwxvOw0HOwlpTTsOaRM7D287DQc7CWlNOw5pPDsQQAw7EUANOxhADDsZQBI7JTA7JjA7J1sAOxgwOxlAEjsJaU07Cm87Cwk7DG87DQc7CWlNOw5pCzsPbzsNBzsJaU07Dmk8OxBADDsRQA11OzsCzwkECFsIbzonU2Fzczo6U2NyaXB0OjpUcmVlOjpVbmFyeU9wZXJhdGlvbgs6DUBvcGVyYW5kbzohU2Fzczo6U2NyaXB0OjpUcmVlOjpWYXJpYWJsZQs6CkBuYW1lSSIMY29sdW1ucwY6BkVUOhZAdW5kZXJzY29yZWRfbmFtZUkiDGNvbHVtbnMGOwlUOgpAbGluZWlQOhJAc291cmNlX3JhbmdlbzoYU2Fzczo6U291cmNlOjpSYW5nZQk6D0BzdGFydF9wb3NvOhtTYXNzOjpTb3VyY2U6OlBvc2l0aW9uBzsLaVA6DEBvZmZzZXRpEDoNQGVuZF9wb3NvOw8HOwtpUDsQaRg6CkBmaWxlSSJ5L0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzL21pbmltYWwtbWlzdGFrZXMvdmVuZG9yL3N1c3kvc3VzeS9fbm9ybWFsaXplLnNjc3MGOwlUOg5AaW1wb3J0ZXJvOiBTYXNzOjpJbXBvcnRlcnM6OkZpbGVzeXN0ZW0IOgpAcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7CUY6D0ByZWFsX3Jvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwlUOhhAc2FtZV9uYW1lX3dhcm5pbmdzbzoIU2V0BjoKQGhhc2h9AEY6DkBmaWxlbmFtZUANOg1Ab3B0aW9uc3sAOg5Ab3BlcmF0b3I6CG5vdDsLaVA7DG87DQk7Dm87Dwc7C2lQOxBpEDsRbzsPBzsLaVA7EGkYOxJADTsTQA47GkANOxtAEzBbCG86HVNhc3M6OlRyZWU6OlZhcmlhYmxlTm9kZQ47CEkiCG1hcAY7CVQ6CkBleHBybzoiU2Fzczo6U2NyaXB0OjpUcmVlOjpPcGVyYXRpb24MOg5Ab3BlcmFuZDFvOiBTYXNzOjpTY3JpcHQ6OlRyZWU6OkZ1bmNhbGwPOg5AY2FsbGFibGUwOwhJIgx0eXBlLW9mBjsJVDoKQGFyZ3NbBm87Bws7CEkiDGNvbnRleHQGOwlUOwpJIgxjb250ZXh0BjsJVDsLaVE7DG87DQk7Dm87Dwc7C2lROxBpGDsRbzsPBzsLaVE7EGkgOxJADTsTQA47GkANOxtAEzoOQGtleXdvcmRzbzoeU2Fzczo6VXRpbDo6Tm9ybWFsaXplZE1hcAc6EUBrZXlfc3RyaW5nc3sAOglAbWFwewA6C0BzcGxhdDA6EUBrd2FyZ19zcGxhdDA7C2lROwxvOw0JOw5vOw8HOwtpUTsQaRA7EW87Dwc7C2lROxBp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aVc7D287EAk7EW87Egc7DmlXOxNpCTsUbzsSBzsOaVc7E2knOxVADzsWQBB1OzsC+AYECFsIbzohU2Fzczo6U2NyaXB0OjpUcmVlOjpWYXJpYWJsZQs6CkBuYW1lSSIJc3BhbgY6BkVUOhZAdW5kZXJzY29yZWRfbmFtZUkiCXNwYW4GOwdUOgpAbGluZWlZOhJAc291cmNlX3JhbmdlbzoYU2Fzczo6U291cmNlOjpSYW5nZQk6D0BzdGFydF9wb3NvOhtTYXNzOjpTb3VyY2U6OlBvc2l0aW9uBzsJaVk6DEBvZmZzZXRpDDoNQGVuZF9wb3NvOw0HOwlpWTsOaRE6CkBmaWxlSSJ5L0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzL21pbmltYWwtbWlzdGFrZXMvdmVuZG9yL3N1c3kvc3VzeS9fbm9ybWFsaXplLnNjc3MGOwdUOg5AaW1wb3J0ZXJvOiBTYXNzOjpJbXBvcnRlcnM6OkZpbGVzeXN0ZW0IOgpAcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7B0Y6D0ByZWFsX3Jvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwdUOhhAc2FtZV9uYW1lX3dhcm5pbmdzbzoIU2V0BjoKQGhhc2h9AEY6DkBmaWxlbmFtZUAMOg1Ab3B0aW9uc3sAMFsHbzodU2Fzczo6VHJlZTo6VmFyaWFibGVOb2RlDjsGSSIJc3BhbgY7B1Q6CkBleHBybzogU2Fzczo6U2NyaXB0OjpUcmVlOjpGdW5jYWxsDzoOQGNhbGxhYmxlMDsGSSIYc3VzeS1ub3JtYWxpemUtc3BhbgY7B1Q6CkBhcmdzWwdvOwALOwZJIglzcGFuBjsHVDsISSIJc3BhbgY7B1Q7CWlaOwpvOwsJOwxvOw0HOwlpWjsOaSU7D287DQc7CWlaOw5pKjsQQAw7EUANOxhADDsZQBJvOwALOwZJIgxjb2x1bW5zBjsHVDsISSIMY29s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VDsNQAs7CjsrOywwOw5pAXw7D287EAk7EW87Egc7DmkBfDsTaRs7FG87Egc7DmkBfDsTaSQ7FUAPOxZAEDsMQA87NG87NQc7NnsAOzd7ADskMDs4MDsOaQF8Ow9vOxAJOxFvOxIHOw5pAXw7E2kSOxRvOxIHOw5pAXw7E2klOxVADzsWQBA7DEAPOw1ACzskMDsGWwd1OzsCKgUECFsIbzoiU2Fzczo6U2NyaXB0OjpUcmVlOjpPcGVyYXRpb24MOg5Ab3BlcmFuZDFvOiFTYXNzOjpTY3JpcHQ6OlRyZWU6OlZhcmlhYmxlCzoKQG5hbWVJIglzcGFuBjoGRVQ6FkB1bmRlcnNjb3JlZF9uYW1lSSIJc3BhbgY7CVQ6CkBsaW5laQF+OhJAc291cmNlX3JhbmdlbzoYU2Fzczo6U291cmNlOjpSYW5nZQk6D0BzdGFydF9wb3NvOhtTYXNzOjpTb3VyY2U6OlBvc2l0aW9uBzsLaQF+OgxAb2Zmc2V0aQ06DUBlbmRfcG9zbzsPBzsLaQF+OxBpEjoKQGZpbGVJInkvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MvbWluaW1hbC1taXN0YWtlcy92ZW5kb3Ivc3VzeS9zdXN5L19ub3JtYWxpemUuc2NzcwY7CVQ6DkBpbXBvcnRlcm86IFNhc3M6OkltcG9ydGVyczo6RmlsZXN5c3RlbQg6CkByb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsJRjoPQHJlYWxfcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7CVQ6GEBzYW1lX25hbWVfd2FybmluZ3NvOghTZXQGOgpAaGFzaH0ARjoOQGZpbGVuYW1lQA06DUBvcHRpb25zewA6DkBvcGVyYW5kMm86IFNhc3M6OlNjcmlwdDo6VHJlZTo6TGl0ZXJhbAk6C0B2YWx1ZW86IFNhc3M6OlNjcmlwdDo6VmFsdWU6OlN0cmluZwk7HkkiCGFsbAY7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BzsOaQGlOxNpHDoKQGZpbGVJInkvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MvbWluaW1hbC1taXN0YWtlcy92ZW5kb3Ivc3VzeS9zdXN5L19ub3JtYWxpemUuc2NzcwY7ClQ6DkBpbXBvcnRlcm86IFNhc3M6OkltcG9ydGVyczo6RmlsZXN5c3RlbQg6CkByb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsKRjoPQHJlYWxfcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7ClQ6GEBzYW1lX25hbWVfd2FybmluZ3NvOghTZXQGOgpAaGFzaH0ARjoOQGZpbGVuYW1lQBA6DUBvcHRpb25zewA6DkBrZXl3b3Jkc286HlNhc3M6OlV0aWw6Ok5vcm1hbGl6ZWRNYXAHOhFAa2V5X3N0cmluZ3N7ADoJQG1hcHsAOgtAc3BsYXQwOhFAa3dhcmdfc3BsYXQwOw5pAaU7D287EAk7EW87Egc7DmkBpTsTaQw7FG87Egc7DmkBpTsTaR07FUAQOxZAETsdQBA7HkAWOg5Ab3BlcmFuZDJvOiBTYXNzOjpTY3JpcHQ6OlRyZWU6OkxpdGVyYWwJOgtAdmFsdWVvOiBTYXNzOjpTY3JpcHQ6OlZhbHVlOjpTdHJpbmcJOydJIglsaXN0BjsKVDseQBY6CkB0eXBlOgtzdHJpbmc6IkBkZXByZWNhdGVkX2ludGVycF9lcXVpdmFsZW50MDsOaQGlOw9vOxAJOxFvOxIHOw5pAaU7E2khOxRvOxIHOw5pAaU7E2knOxVAEDsWQBE7HUAQOg5Ab3BlcmF0b3I6B2VxOw5pAaU7D287EAk7EUAbOxRvOxIHOw5pAaU7E2koOxVAEDsWQBE7HUAQOx5AFjBbBm86G1Nhc3M6OlRyZWU6OlJldHVybk5vZGULOgpAZXhwcm87Bw87CDA7CUkiEl9zdXN5LWZsYXR0ZW4GOwpUOwtbBm87DAs7CUkiDGNvbHVtbnMGOwpUOw1JIgxjb2x1bW5zBjsKVDsOaQGmOw9vOxAJOxFvOxIHOw5pAaY7E2kgOxRvOxIHOw5pAaY7E2koOxVAEDsWQBE7HUAQOx5AFjsfbzsgBzshewA7InsAOyMwOyQwOw5pAaY7D287EAk7EW87Egc7DmkBpjsTaRI7FG87Egc7DmkBpjsTaSk7FUAQOxZAETsdQBA7HkAWOg5AY2hpbGRyZW5bADsdMDseQBY7DmkBpjsPbzsQCTsRbzsSBzsOaQGmOxNpCjsUbzsSBzsOaQGmOxNpKTsVQBA7FkARdTs7AkUbBAhbCG86IlNhc3M6OlNjcmlwdDo6VHJlZTo6T3BlcmF0aW9uDDoOQG9wZXJhbmQxbzsADDsGbzogU2Fzczo6U2NyaXB0OjpUcmVlOjpGdW5jYWxsDzoOQGNhbGxhYmxlMDoKQG5hbWVJIgx0eXBlLW9mBjoGRVQ6CkBhcmdzWwZvOiFTYXNzOjpTY3JpcHQ6OlRyZWU6OlZhcmlhYmxlCzsJSSIMY29sdW1ucwY7ClQ6FkB1bmRlcnNjb3JlZF9uYW1lSSIMY29sdW1ucwY7ClQ6CkBsaW5laQGpOhJAc291cmNlX3JhbmdlbzoYU2Fzczo6U291cmNlOjpSYW5nZQk6D0BzdGFydF9wb3NvOhtTYXNzOjpTb3VyY2U6OlBvc2l0aW9uBzsOaQGpOgxAb2Zmc2V0aRU6DUBlbmRfcG9zbzsSBzsOaQGpOxNpHToKQGZpbGVJInkvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MvbWluaW1hbC1taXN0YWtlcy92ZW5kb3Ivc3VzeS9zdXN5L19ub3JtYWxpemUuc2NzcwY7ClQ6DkBpbXBvcnRlcm86IFNhc3M6OkltcG9ydGVyczo6RmlsZXN5c3RlbQg6CkByb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsKRjoPQHJlYWxfcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7ClQ6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MQY7CkY7DmkBrDsPbzsQCTsRbzsSBzsOaQGsOxNpRDsUbzsSBzsOaQGsOxNpRTsVQBE7FkASOx1AETsfbzsgBzshewA7InsAOyMwOyQwOw5pAaw7D287EAk7EW87Egc7DmkBrDsTaTY7FG87Egc7DmkBrDsTaUY7FUAROxZAEjsdQBE7HkAXOx9vOyAHOyF7ADsiewA7IzA7JDA7DmkBrDsPbzsQCTsRbzsSBzsOaQGsOxNpGDsUbzsSBzsOaQGsOxNpRzsVQBE7FkASOx1AETseQBc7MTA7MjA7M1sAOx0wOx5AFzsOaQGsOw9vOxAJOxFvOxIHOw5pAaw7E2kLOxRvOxIHOw5pAaw7E2lHOxVAETsWQBJ1OhdTYXNzOjpUcmVlOjpJZk5vZGUCbxAECFsIbzoiU2Fzczo6U2NyaXB0OjpUcmVlOjpPcGVyYXRpb24MOg5Ab3BlcmFuZDFvOiFTYXNzOjpTY3JpcHQ6OlRyZWU6OlZhcmlhYmxlCzoKQG5hbWVJIgxjb250ZXh0BjoGRVQ6FkB1bmRlcnNjb3JlZF9uYW1lSSIMY29udGV4dAY7CVQ6CkBsaW5laQGuOhJAc291cmNlX3JhbmdlbzoYU2Fzczo6U291cmNlOjpSYW5nZQk6D0BzdGFydF9wb3NvOhtTYXNzOjpTb3VyY2U6OlBvc2l0aW9uBzsLaQGuOgxAb2Zmc2V0aQ86DUBlbmRfcG9zbzsPBzsLaQGuOxBpFzoKQGZpbGVJInkvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MvbWluaW1hbC1taXN0YWtlcy92ZW5kb3Ivc3VzeS9zdXN5L19ub3JtYWxpemUuc2NzcwY7CVQ6DkBpbXBvcnRlcm86IFNhc3M6OkltcG9ydGVyczo6RmlsZXN5c3RlbQg6CkByb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsJRjoPQHJlYWxfcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7CVQ6GEBzYW1lX25hbWVfd2FybmluZ3NvOghTZXQGOgpAaGFzaH0ARjoOQGZpbGVuYW1lQA06DUBvcHRpb25zewA6DkBvcGVyYW5kMm87Bws7CEkiEHN5bW1ldHJpY2FsBjsJVDsKSSIQc3ltbWV0cmljYWwGOwlUOwtpAa47DG87DQk7Dm87Dwc7C2kBrjsQaRs7EW87Dwc7C2kBrjsQaSc7EkANOxNADjsaQA07G0ATOg5Ab3BlcmF0b3I6B2VxOwtpAa47DG87DQk7DkALOxFvOw8HOwtpAa47EGknOxJADTsTQA47GkANOxtAE3U6F1Nhc3M6OlRyZWU6OklmTm9kZQL9CQQIWwgwMFsIbzodU2Fzczo6VHJlZTo6VmFyaWFibGVOb2RlDjoKQG5hbWVJIgthY3R1YWwGOgZFVDoKQGV4cHJvOixTYXNzOjpTY3JpcHQ6OlRyZWU6OlN0cmluZ0ludGVycG9sYXRpb24MOgxAYmVmb3JlbzogU2Fzczo6U2NyaXB0OjpUcmVlOjpMaXRlcmFsCToLQHZhbHVlbzogU2Fzczo6U2NyaXB0OjpWYWx1ZTo6U3RyaW5nCTsMSSIJb2YgYAY7B1Q6DUBvcHRpb25zewA6CkB0eXBlOgtzdHJpbmc6IkBkZXByZWNhdGVkX2ludGVycF9lcXVpdmFsZW50MDoKQGxpbmVpAbE6EkBzb3VyY2VfcmFuZ2VvOhhTYXNzOjpTb3VyY2U6OlJhbmdlCToPQHN0YXJ0X3Bvc286G1Nhc3M6OlNvdXJjZTo6UG9zaXRpb24HOxJpAbE6DEBvZmZzZXRpFToNQGVuZF9wb3NvOxYHOxJpAbE7F2kcOgpAZmlsZUkieS9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9zdXN5L3N1c3kvX25vcm1hbGl6ZS5zY3NzBjsHVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwdGOg9AcmVh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aGFuZCBzeW50YXgsCi8vLyBhbmQgb3RoZXIgaGVscGVycy4KLy8vIEVhY2ggc2V0dGluZyAoZS5nLiBzcGFuLCBsb2NhdGlvbiwgY29sdW1ucywgc3ByZWFkLCBldGMuKQovLy8gaGFzIGEgc2luZ2xlIGNhbm9uaWNhbCBzeW50YXggaW4gU3UuCi8vLwovLy8gVGhpcyBub3JtYWxpemF0aW9uIG1vZHVsZSBoZWxwcyB0cmFuc2xhdGUgYmV0d2VlbiB0aG9zZSBsYXllcnMsCi8vLyB0cmFuc2Zvcm1pbmcgcGFyc2VkIFN1c3kgaW5wdXQgaW50bwovLy8gdmFsdWVzIHRoYXQgU3Ugd2lsbCB1bmRlcnN0YW5kLgovLy8KLy8vIEBncm91cCB4LW5vcm1hbAovLy8KLy8vIEBzZWUgc3VzeS1ub3JtYWxpemUKLy8vIEBzZWUgc3VzeS1ub3JtYWxpemUtc3BhbgovLy8gQHNlZSBzdXN5LW5vcm1hbGl6ZS1jb2x1bW5zCi8vLyBAc2VlIHN1c3ktbm9ybWFsaXplLXNwcmVhZAovLy8gQHNlZSBzdXN5LW5vcm1hbGl6ZS1sb2NhdGlvbgoKCgovLyBTdXN5IE5vcm1hbGl6ZQovLyAtLS0tLS0tLS0tLS0tLQovLy8gTm9ybWFsaXplIHRoZSB2YWx1ZXMgaW4gYSBjb25maWd1cmF0aW9uIG1hcC4KLy8vIEluIGFkZGl0aW9uIHRvIHRoZSBnbG9iYWwgYCRzdXN5YCBwcm9wZXJ0aWVzLAovLy8gdGhpcyBtYXAgY2FuIGluY2x1ZGUgbG9jYWwgc3Bhbi1yZWxhdGVkIGltZm9ybWF0aW9uLAovLy8gbGlrZSBgc3BhbmAgYW5kIGBsb2NhdGlvbmAuCi8vLwovLy8gTm9ybWFsaXphdGlvbiBkb2VzIG5vdCBjaGVjayB0aGF0IHZhbHVlcyBhcmUgdmFsaWQsCi8vLyB3aGljaCB3aWxsIGhhcHBlbiBpbiB0aGUgU3UgbWF0aCBsYXllci4KLy8vIFRoZXNlIGZ1bmN0aW9ucyBtZXJlbHkgbG9vayBmb3Iga25vd24gU3VzeSBzeW50YXgg4oCTCi8vLyByZXR1cm5pbmcgYSBtYXAgd2l0aCB0aG9zZSBzaG9ydGhhbmQgdmFsdWVzCi8vLyBjb252ZXJ0ZWQgaW50byBsb3ctbGV2ZWwgZGF0YSBmb3IgU3UuCi8vLyBGb3IgZXhhbXBsZSBgc3BhbjogYWxsYCBhbmQgYGxvY2F0aW9uOiBmaXJzdGAKLy8vIHdpbGwgYmUgY29udmVydGVkIGludG8gc3BlY2lmaWMgbnVtYmVycy4KLy8vCi8vLyBAZ3JvdXAgeC1ub3JtYWwKLy8vIEBzZWUgJHN1c3kKLy8vIEBzZWUgc3VzeS1wYXJzZQovLy8KLy8vIEBwYXJhbSB7bWFwfSAkY29uZmlnIC0KLy8vICAgTWFwIG9mIFN1c3kgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB0byBub3JtYWxpemUuCi8vLyAgIFNlZSBgJHN1c3lgIGFuZCBgc3VzeS1wYXJzZSgpYCBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLgovLy8gQHBhcmFtIHttYXAgfCBudWxsfSAkY29udGV4dCBbbnVsbF0gLQovLy8gICBNYXAgb2YgU3VzeSBjb25maWd1cmF0aW9uIHNldHRpbmdzIHRvIHVzZSBhcyBnbG9iYWwgcmVmZXJlbmNlLAovLy8gICBvciBgbnVsbGAgdG8gdXNlIGdsb2JhbCBzZXR0aW5ncy4KLy8vCi8vLyBAcmV0dXJuIHttYXB9IC0KLy8vICAgTWFwIG9mIFN1c3kgY29uZmlndXJhdGlvbiBzZXR0aW5ncywKLy8vICAgd2l0aCBhbGwgdmFsdWVzIG5vcm1hbGl6ZWQgZm9yIFN1IG1hdGggZnVuY3Rpb25zLgpAZnVuY3Rpb24gc3VzeS1ub3JtYWxpemUoCiAgJGNvbmZpZywKICAkY29udGV4dDogbnVsbAopIHsKICAvLyBTcHJlYWQKICBAZWFjaCAkc2V0dGluZyBpbiAoJ3NwcmVhZCcsICdjb250YWluZXItc3ByZWFkJykgewogICAgJHZhbHVlOiBtYXAtZ2V0KCRjb25maWcsICRzZXR0aW5nKTsKCiAgICBAaWYgJHZhbHVlIHsKICAgICAgJHZhbHVlOiBzdXN5LW5vcm1hbGl6ZS1zcHJlYWQoJHZhbHVlKTsKICAgICAgJGNvbmZpZzogbWFwLW1lcmdlKCRjb25maWcsICgkc2V0dGluZzogJHZhbHVlKSk7CiAgICB9CiAgfQoKICAvLyBDb2x1bW5zCiAgJGNvbHVtbnM6IG1hcC1nZXQoJGNvbmZpZywgJ2NvbHVtbnMnKTsKCiAgQGlmICRjb2x1bW5zIHsKICAgICRjb2x1bW5zOiBzdXN5LW5vcm1hbGl6ZS1jb2x1bW5zKCRjb2x1bW5zLCAkY29udGV4dCk7CiAgICAkY29uZmlnOiBtYXAtbWVyZ2UoJGNvbmZpZywgKCdjb2x1bW5zJzogJGNvbHVtbnMpKTsKICB9CgogIEBpZiBub3QgJGNvbHVtbnMgewogICAgJG1hcDogdHlwZS1vZigkY29udGV4dCkgPT0gJ21hcCc7CiAgICAkY29sdW1uczogaWYoJG1hcCwgbWFwLWdldCgkY29udGV4dCwgJ2NvbHVtbnMnKSwgbnVsbCk7CiAgICAkY29sdW1uczogJGNvbHVtbnMgb3Igc3VzeS1nZXQoJ2NvbHVtbnMnKTsKICB9CgogIC8vIFNwYW4KICAkc3BhbjogbWFwLWdldCgkY29uZmlnLCAnc3BhbicpOwoKICBAaWYgJHNwYW4gewogICAgJHNwYW46IHN1c3ktbm9ybWFsaXplLXNwYW4oJHNwYW4sICRjb2x1bW5zKTsKICAgICRjb25maWc6IG1hcC1tZXJnZSgkY29uZmlnLCAoJ3NwYW4nOiAkc3BhbikpOwogIH0KCiAgLy8gTG9jYXRpb24KICAkbG9jYXRpb246IG1hcC1nZXQoJGNvbmZpZywgJ2xvY2F0aW9uJyk7CgogIEBpZiAkbG9jYXRpb24gewogICAgJGxvY2F0aW9uOiBzdXN5LW5vcm1hbGl6ZS1sb2NhdGlvbigkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7CiAgICAkY29uZmlnOiBtYXAtbWVyZ2UoJGNvbmZpZywgKCdsb2NhdGlvbic6ICRsb2NhdGlvbikpOwogIH0KCiAgQHJldHVybiAkY29uZmlnOwp9CgoKCi8vIE5vcm1hbGl6ZSBTcGFuCi8vIC0tLS0tLS0tLS0tLS0tCi8vLyBOb3JtYWxpemUgYHNwYW5gIHNob3J0aGFuZCBmb3IgU3UuCi8vLyBTdSBzcGFuIHN5bnRheCBhbGxvd3MgYW4gZXhwbGljaXQgbGVuZ3RoIChlLmcuIGAzZW1gKSwKLy8vIHVuaXRsZXNzIGNvbHVtbi1zcGFuIG51bWJlciAoZS5nLiBgM2AgY29sdW1ucyksCi8vLyBvciBhbiBleHBsaWNpdCBsaXN0IG9mIGNvbHVtbnMgKGUuZy4gYCgzIDUgOClgKS4KLy8vCi8vLyBTdXN5IHNwYW4gc3ludGF4IGFsc28gYWxsb3dzIHRoZSBgYWxsYCBrZXl3b3JkLAovLy8gd2hpY2ggd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBzbGljZSBvZiB0aGUgY29udGV4dAovLy8gaW4gbm9ybWFsaXphdGlvbi4KLy8vCi8vLyBAZ3JvdXAgeC1ub3JtYWwKLy8vCi8vLyBAcGFyYW0ge251bWJlciB8IGxpc3QgfCAnYWxsJ30gJHNwYW4gLQovLy8gICBTcGFuIHZhbHVlIHRvIG5vcm1hbGl6ZS4KLy8vIEBwYXJhbSB7bGlzdH0gJGNvbHVtbnMgLQovLy8gICBOb3JtYWxpemVkIGxpc3Qgb2YgY29sdW1ucyBpbiB0aGUgZ3JpZAovLy8KLy8vIEByZXR1cm4ge251bWJlciB8IGxpc3R9IC0KLy8vICAgTnVtYmVyIG9yIGxpc3QgdmFsdWUgZm9yIGAkc3BhbmAKQGZ1bmN0aW9uIHN1c3ktbm9ybWFsaXplLXNwYW4oCiAgJHNwYW4sCiAgJGNvbHVtbnM6IHN1c3ktZ2V0KCdjb2x1bW5zJykKKSB7CiAgQGlmICgkc3BhbiA9PSAnYWxsJykgewogICAgQHJldHVybiBsZW5ndGgoJGNvbHVtbnMpOwogIH0KCiAgQHJldHVybiAkc3BhbjsKfQoKCgovLyBOb3JtYWxpemUgQ29sdW1ucwovLyAtLS0tLS0tLS0tLS0tLS0tLQovLy8gTm9ybWFsaXplIGBjb2x1bW5gIHNob3J0aGFuZCBmb3IgU3UuCi8vLyBTdSBjb2x1bW4gc3ludGF4IG9ubHkgYWxsb3dzIGNvbHVtbiBsaXN0cyAoZS5nLiBgMTIwcHggMSAxIDEgMTIwcHhgKS4KLy8vCi8vLyBTdXN5IHNwYW4gc3ludGF4IGFsc28gYWxsb3dzIGEgdW5pdGxlc3MgYHNsaWNlYCBudW1iZXIgKGUuZyBgb2YgNWApLAovLy8gd2hpY2ggd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBzbGljZSBvZiB0aGUgY29udGV4dAovLy8gaW4gbm9ybWFsaXphdGlvbi4KLy8vCi8vLyBAZ3JvdXAgeC1ub3JtYWwKLy8vCi8vLyBAcGFyYW0ge2xpc3QgfCBpbnRlZ2VyfSAkY29sdW1ucyAtCi8vLyAgIExpc3Qgb2YgYXZhaWxhYmxlIGNvbHVtbnMsCi8vLyAgIG9yIHVuaXRsZXNzIGludGVnZXIgcmVwcmVzZW50aW5nIGEgc2xpY2Ugb2YKLy8vICAgdGhlIGF2YWlsYWJsZSBjb250ZXh0LgovLy8gQHBhcmFtIHttYXAgfCBudWxsfSAkY29udGV4dCBbbnVsbF0gLQovLy8gICBNYXAgb2YgU3VzeSBjb25maWd1cmF0aW9uIHNldHRpbmdzIHRvIHVzZSBhcyBnbG9iYWwgcmVmZXJlbmNlLAovLy8gICBvciBgbnVsbGAgdG8gYWNjZXNzIGdsb2JhbCBzZXR0aW5ncy4KLy8vCi8vLyBAcmV0dXJuIHtsaXN0fSAtCi8vLyAgIENvbHVtbnMgbGlzdCB2YWx1ZSwgbm9ybWFsaXplZCBmb3IgU3UgaW5wdXQuCi8vLwovLy8gQHRocm93cwovLy8gICB3aGVuIGF0dGVtcHRpbmcgdG8gYWNjZXNzIGEgc2xpY2Ugb2YgYXN5bW1ldHJpY2FsIGNvbnRleHQKQGZ1bmN0aW9uIHN1c3ktbm9ybWFsaXplLWNvbHVtbnMoCiAgJGNvbHVtbnMsCiAgJGNvbnRleHQ6IG51bGwKKSB7CiAgJGNvbnRleHQ6ICRjb250ZXh0IG9yIHN1c3ktc2V0dGluZ3MoKTsKCiAgQGlmIHR5cGUtb2YoJGNvbHVtbnMpID09ICdsaXN0JyB7CiAgICBAcmV0dXJuIF9zdXN5LWZsYXR0ZW4oJGNvbHVtbnMpOwogIH0KCiAgQGlmICh0eXBlLW9mKCRjb2x1bW5zKSA9PSAnbnVtYmVyJykgYW5kICh1bml0bGVzcygkY29sdW1ucykpIHsKICAgICRzcGFuOiAkY29sdW1uczsKICAgICRjb250ZXh0OiBtYXAtZ2V0KCRjb250ZXh0LCAnY29sdW1ucycpOwogICAgJHN5bW1ldHJpY2FsOiBzdXN5LXJlcGVhdChsZW5ndGgoJGNvbnRleHQpLCBudGgoJGNvbnRleHQsIDEpKTsKCiAgICBAaWYgKCRjb250ZXh0ID09ICRzeW1tZXRyaWNhbCkgewogICAgICBAcmV0dXJuIHN1c3ktcmVwZWF0KCRzcGFuLCBudGgoJGNvbnRleHQsIDEpKTsKICAgIH0gQGVsc2UgewogICAgICAkYWN0dWFsOiAnb2YgYCN7JHNwYW59YCc7CiAgICAgICRjb2x1bW5zOiAnZ3JpZC1jb2x1bW5zIGAjeyRjb250ZXh0fWAnOwogICAgICBAcmV0dXJuIF9zdXN5LWVycm9yKAogICAgICAgICdjb250ZXh0LXNsaWNlICN7JGFjdHVhbH0gY2FuIG5vdCBiZSBkZXRlcm1pbmVkIGJhc2VkIG9uICN7JGNvbHVtbnN9LicsCiAgICAgICAgJ3N1c3ktbm9ybWFsaXplLWNvbHVtbnMnKTsKICAgIH0KICB9CgogIEByZXR1cm4gJGNvbHVtbnM7Cn0KCgoKLy8gTm9ybWFsaXplIFNwcmVhZAovLyAtLS0tLS0tLS0tLS0tLS0tCi8vLyBOb3JtYWxpemUgYHNwcmVhZGAgc2hvcnRoYW5kIGZvciBTdS4KLy8vIFN1IHNwcmVhZCBzeW50YXggb25seSBhbGxvd3MgdGhlIG51bWJlcnMgYC0xYCwgYDBgLCBvciBgMWAg4oCTCi8vLyByZXByZXNlbnRpbmcgdGhlIG51bWJlciBvZiBndXR0ZXJzIGNvdmVyZWQKLy8vIGluIHJlbGF0aW9uIHRvIGNvbHVtbnMgc3Bhbm5lZC4KLy8vCi8vLyBTdXN5IHNwcmVhZCBzeW50YXggYWxzbyBhbGxvd3Mga2V5d29yZHMgZm9yIGVhY2ggdmFsdWUg4oCTCi8vLyBgbmFycm93YCBmb3IgYC0xYCwgYHdpZGVgIGZvciBgMGAsIG9yIGB3aWRlcmAgZm9yIGAxYCDigJMKLy8vIHdoaWNoIHdpbGwgYmUgY29udmVydGVkIHRvIHRoZWlyIHJlc3BlY3RpdmUgaW50ZWdlcnMKLy8vIGluIG5vcm1hbGl6YXRpb24uCi8vLwovLy8gQGdyb3VwIHgtbm9ybWFsCi8vLwovLy8gQHBhcmFtIHswIHwgMSB8IC0xIHwgJ25hcnJvdycgfCAnd2lkZScgfCAnd2lkZXInfSAkc3ByZWFkIC0KLy8vICAgU3ByZWFkIGFjcm9zcyBhZGphY2VudCBndXR0ZXJzLCByZWxhdGl2ZSB0byBhIGNvbHVtbi1jb3VudCDigJQKLy8vICAgZWl0aGVyIGBuYXJyb3dgICgtMSksIGB3aWRlYCAoMCksIG9yIGB3aWRlcmAgKDEpCi8vLwovLy8gQHJldHVybiB7bnVtYmVyfSAtCi8vLyAgIE51bWVyaWMgdmFsdWUgZm9yIGAkc3ByZWFkYApAZnVuY3Rpb24gc3VzeS1ub3JtYWxpemUtc3ByZWFkKAogICRzcHJlYWQKKSB7CiAgJG5vcm1hbC1zcHJlYWQ6ICgKICAgICduYXJyb3cnOiAtMSwKICAgICd3aWRlJzogMCwKICAgICd3aWRlcic6IDEsCiAgKTsKCiAgQHJldHVybiBtYXAtZ2V0KCRub3JtYWwtc3ByZWFkLCAkc3ByZWFkKSBvciAkc3ByZWFkOwp9CgoKCi8vIE5vcm1hbGl6ZSBMb2NhdGlvbgovLyAtLS0tLS0tLS0tLS0tLS0tLS0KLy8vIE5vcm1hbGl6ZSBgbG9jYXRpb25gIHNob3J0aGFuZCBmb3IgU3UuCi8vLyBTdSBsb2NhdGlvbiBzeW50YXggcmVxdWlyZXMgdGhlICgxLWluZGV4ZWQpIG51bWJlciBmb3IgYSBjb2x1bW4uCi8vLwovLy8gU3VzeSBhbHNvIGFsbG93cyB0aGUgYGZpcnN0YCBhbmQgYGxhc3RgIGtleXdvcmRzLAovLy8gd2hlcmUgYGZpcnN0YCBpcyBhbHdheXMgYDFgLAovLy8gYW5kIGBsYXN0YCBpcyBjYWxjdWxhdGVkIGJhc2VkIG9uIHNwYW4gYW5kIGNvbHVtbiB2YWx1ZXMuCi8vLyBCb3RoIGtleXdvcmRzIGFyZSBub3JtYWxpemVkIGludG8gYW4gaW50ZWdlciBpbmRleAovLy8gaW4gbm9ybWFsaXphdGlvbi4KLy8vCi8vLyBAZ3JvdXAgeC1ub3JtYWwKLy8vCi8vLyBAcGFyYW0ge251bWJlcn0gJHNwYW4gLQovLy8gICBOdW1iZXIgb2YgZ3JpZC1jb2x1bW5zIHRvIGJlIHNwYW5uZWQKLy8vIEBwYXJhbSB7aW50ZWdlciB8ICdmaXJzdCcgfCAnbGFzdCd9ICRsb2NhdGlvbiAtCi8vLyAgIFN0YXJ0aW5nICgxLWluZGV4ZWQpIGNvbHVtbiBwb3NpdGlvbiBvZiBhIHNwYW4sCi8vLyAgIG9yIGEgbmFtZWQgbG9jYXRpb24ga2V5d29yZC4KLy8vIEBwYXJhbSB7bGlzdH0gJGNvbHVtbnMgLQovLy8gICBBbHJlYWR5LW5vcm1hbGl6ZWQgbGlzdCBvZiBjb2x1bW5zIGluIHRoZSBncmlkLgovLy8KLy8vIEByZXR1cm4ge2ludGVnZXJ9IC0KLy8vICAgTnVtZXJpYyB2YWx1ZSBmb3IgYCRsb2NhdGlvbmAKQGZ1bmN0aW9uIHN1c3ktbm9ybWFsaXplLWxvY2F0aW9uKAogICRzcGFuLAogICRsb2NhdGlvbiwKICAkY29sdW1ucwopIHsKICAkY291bnQ6IGxlbmd0aCgkY29sdW1ucyk7CiAgJG5vcm1hbC1sb2NhdGlvbnM6ICgKICAgICdmaXJzdCc6IDEsCiAgICAnYWxwaGEnOiAxLAogICAgJ2xhc3QnOiAkY291bnQgLSAkc3BhbiArIDEsCiAgICAnb21lZ2EnOiAkY291bnQgLSAkc3BhbiArIDEsCiAgKTsKCiAgQHJldHVybiBtYXAtZ2V0KCRub3JtYWwtbG9jYXRpb25zLCAkbG9jYXRpb24pIG9yICRsb2NhdGlvbjsKfQoGOwlUOw5pBjsPbzsQCTsRbzsSBzsOaQY7E2kGOxRvOxIHOw5pBjsTaQY7FUAPOxZAEDs8VA==