My43LjIKOWRiOTU0YjNjYzU2ZDU0MDQzZjQxN2M3YTRlY2RmZGJhOWUyMThiNwoECG86GVNhc3M6OlRyZWU6OlJvb3ROb2RlDDoOQGNoaWxkcmVuWxBvOhxTYXNzOjpUcmVlOjpDb21tZW50Tm9kZQw6C0B2YWx1ZVsGSSJxLyogU2FzcyBVdGlsaXRpZXMKICogPT09PT09PT09PT09PT0KICogLSBTdXN5IEVycm9yIE91dHB1dCBPdmVycmlkZSBbdmFyaWFibGVdCiAqIC0gU3VzeSBFcnJvciBbZnVuY3Rpb25dICovBjoGRVQ6CkB0eXBlOgtzaWxlbnQ7BlsAOg5AZmlsZW5hbWUwOg1Ab3B0aW9uc3sAOgpAbGluZWkGOhJAc291cmNlX3JhbmdlbzoYU2Fzczo6U291cmNlOjpSYW5nZQk6D0BzdGFydF9wb3NvOhtTYXNzOjpTb3VyY2U6OlBvc2l0aW9uBzsOaQY6DEBvZmZzZXRpBjoNQGVuZF9wb3NvOxIHOw5pCTsTaSA6CkBmaWxlSSJ5L0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzL21pbmltYWwtbWlzdGFrZXMvdmVuZG9yL3N1c3kvc3VzeS9fdXRpbGl0aWVzLnNjc3MGOwlUOg5AaW1wb3J0ZXJvOiBTYXNzOjpJbXBvcnRlcnM6OkZpbGVzeXN0ZW0IOgpAcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7CUY6D0ByZWFsX3Jvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwlUOhhAc2FtZV9uYW1lX3dhcm5pbmdzbzoIU2V0BjoKQGhhc2h9AEZvOwcMOwhbBkkiAY0vKiBTdXN5IEVycm9yIE91dHB1dCBPdmVycmlkZQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8gVHVybiBvZmYgZXJyb3Igb3V0cHV0IGZvciB0ZXN0aW5nCiAqLyBAZ3JvdXAgeC11dGlsaXR5CiAqLyBAYWNjZXNzIHByaXZhdGUgKi8GOwlUOwo7CzsGWwA7DDA7DUALOw5pDTsPbzsQCTsRbzsSBzsOaQ07E2kGOxRvOxIHOw5pETsTaRk7FUAPOxZAEG86HVNhc3M6OlRyZWU6OlZhcmlhYmxlTm9kZQ46CkBuYW1lSSIgX3N1c3ktZXJyb3Itb3V0cHV0LW92ZXJyaWRlBjsJVDoKQGV4cHJvOiBTYXNzOjpTY3JpcHQ6OlRyZWU6OkxpdGVyYWwJOwhvOh5TYXNzOjpTY3JpcHQ6OlZhbHVlOjpCb29sCDsIRjsNQAs7D287EAk7EW87Egc7DmkzOxNpLDsUbzsSBzsOaTM7E2kxOxVJIn0vTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MvbWluaW1hbC1taXN0YWtlcy92ZW5kb3IvbWFnbmlmaWMtcG9wdXAvX3NldHRpbmdzLnNjc3MGOwlUOxZAEDsOaRI7D287EAk7EW87Egc7DmkSOxNpJDsUbzsSBzsOaRI7E2kpOxVADzsWQBA7DEAPOg1AZ3VhcmRlZFQ6DEBnbG9iYWwwOwZbADsMMDsNQAs7DmkSOw9vOxAJOxFvOxIHOw5pEjsTaQc7FG87Egc7DmkSOxNpMjsVQA87FkAQbzsHDDsIWwZJIgIpAi8qIFN1c3kgRXJyb3IKICogLS0tLS0tLS0tLQogKi8gT3B0aW9uYWxseSByZXR1cm4gZXJyb3IgbWVzc2FnZXMgd2l0aG91dCBmYWlsaW5nLAogKi8gYXMgYSB3YXkgdG8gdGVzdCBlcnJvciBjYXNlcwogKi8KICovIEBncm91cCB4LXV0aWxpdHkKICovIEBhY2Nlc3MgcHJpdmF0ZQogKi8KICovIEBwYXJhbSB7c3RyaW5nfSAkbWVzc2FnZSAtCiAqLyAgIEEgdXNlZnVsIGVycm9yIG1lc3NhZ2UsIGV4cGxhaW5pbmcgdGhlIHByb2JsZW0KICovIEBwYXJhbSB7c3RyaW5nfSAkc291cmNlIC0KICovICAgVGhlIG9yaWdpbmFsIHNvdXJjZSBvZiB0aGUgZXJyb3IgZm9yIGRlYnVnZ2luZwogKi8gQHBhcmFtIHtib29sfSAkb3ZlcnJpZGUgWyRfc3VzeS1lcnJvci1vdXRwdXQtb3ZlcnJpZGVdIC0KICovICAgT3B0aW9uYWxseSByZXR1cm4gdGhlIGVycm9yIHJhdGhlciB0aGFuIGZhaWxpbmcKICovIEByZXR1cm4ge3N0cmluZ30gLQogKi8gICBDb21iaW5lZCBlcnJvciB3aXRoIHNvdXJjZSBhbmQgbWVzc2FnZQogKi8gQHRocm93cyBXaGVuIGAkb3ZlcnJpZGUgPT0gdHJ1ZWAgKi8GOwlUOwo7CzsGWwA7DDA7DUALOw5pFjsPbzsQCTsRbzsSBzsOaRY7E2kGOxRvOxIHOw5pJjsTaSo7FUAPOxZAEG86HVNhc3M6OlRyZWU6OkZ1bmN0aW9uTm9kZQ47HkkiEF9zdXN5LWVycm9yBjsJVDoKQGFyZ3NbCFsHbzohU2Fzczo6U2NyaXB0OjpUcmVlOjpWYXJpYWJsZQs7HkkiDG1lc3NhZ2UGOwlUOhZAdW5kZXJzY29yZWRfbmFtZUkiDG1lc3NhZ2UGOwlUOw5pKDsPbzsQCTsRbzsSBzsOaSg7E2kIOxRvOxIHOw5pKDsTaRA7FUAPOxZAEDsMQA87DUALMFsHbzsmCzseSSILc291cmNlBjsJVDsnSSILc291cmNlBjsJVDsOaSk7D287EAk7EW87Egc7DmkpOxNpCDsUbzsSBzsOaSk7E2kPOxVADzsWQBA7DEAPOw1ACzBbB287Jgs7HkkiDW92ZXJyaWRlBjsJVDsnSSINb3ZlcnJpZGUGOwlUOw5pKjsPbzsQCTsRbzsSBzsOaSo7E2kIOxRvOxIHOw5pKjsTaRE7FUAPOxZAEDsMQA87DUALbzsmCzseSSIgX3N1c3ktZXJyb3Itb3V0cHV0LW92ZXJyaWRlBjsJVDsnSSIgX3N1c3lfZXJyb3Jfb3V0cHV0X292ZXJyaWRlBjsJVDsOaSo7D287EAk7EW87Egc7DmkqOxNpEzsUbzsSBzsOaSo7E2kvOxVADzsWQBA7DEAPOw1ACzoLQHNwbGF0MDsGWwd1OhdTYXNzOjpUcmVlOjpJZk5vZGUCgAUECFsIbzohU2Fzczo6U2NyaXB0OjpUcmVlOjpWYXJpYWJsZQs6CkBuYW1lSSINb3ZlcnJpZGUGOgZFVDoWQHVuZGVyc2NvcmVkX25hbWVJIg1vdmVycmlkZQY7B1Q6CkBsaW5laSw6EkBzb3VyY2VfcmFuZ2VvOhhTYXNzOjpTb3VyY2U6OlJhbmdlCToPQHN0YXJ0X3Bvc286G1Nhc3M6OlNvdXJjZTo6UG9zaXRpb24HOwlpLDoMQG9mZnNldGkMOg1AZW5kX3Bvc287DQc7CWksOw5pFToKQGZpbGVJInkvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MvbWluaW1hbC1taXN0YWtlcy92ZW5kb3Ivc3VzeS9zdXN5L191dGlsaXRpZXMuc2NzcwY7B1Q6DkBpbXBvcnRlcm86IFNhc3M6OkltcG9ydGVyczo6RmlsZXN5c3RlbQg6CkByb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsHRjoPQHJlYWxfcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7B1Q6GEBzYW1lX25hbWVfd2FybmluZ3NvOghTZXQGOgpAaGFzaH0ARjoOQGZpbGVuYW1lQAw6DUBvcHRpb25zewAwWwZvOhtTYXNzOjpUcmVlOjpSZXR1cm5Ob2RlCzoKQGV4cHJvOixTYXNzOjpTY3JpcHQ6OlRyZWU6OlN0cmluZ0ludGVycG9sYXRpb24MOgxAYmVmb3JlbzogU2Fzczo6U2NyaXB0OjpUcmVlOjpMaXRlcmFsCToLQHZhbHVlbzogU2Fzczo6U2NyaXB0OjpWYWx1ZTo6U3RyaW5nCTsfSSIMRVJST1IgWwY7B1Q7GUASOgpAdHlwZToLc3RyaW5nOiJAZGVwcmVjYXRlZF9pbnRlcnBfZXF1aXZhbGVudDA7CWktOwpvOwsJOwxvOw0HOwlpLTsOaRI7D287DQc7CWktOw5pHDsQQAw7EUANOxhADDoJQG1pZG87AAs7BkkiC3NvdXJjZQY7B1Q7CEkiC3NvdXJjZQY7B1Q7CWktOwpvOwsJOwxvOw0HOwlpLTsOaRw7D287DQc7CWktOw5pIzsQQAw7EUANOxhADDsZQBI6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ZUkieS9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9zdXN5L3N1c3kvX3V0aWxpdGllcy5zY3NzBjsKVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwpGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsKVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGOg5AZmlsZW5hbWVAEDoNQG9wdGlvbnN7ADoOQGtleXdvcmRzbzoeU2Fzczo6VXRpbDo6Tm9ybWFsaXplZE1hcAc6EUBrZXlfc3RyaW5nc3sAOglAbWFwewA6C0BzcGxhdDA6EUBrd2FyZ19zcGxhdDA7DmlHOw9vOxAJOxFvOxIHOw5pRzsTaQ07FG87Egc7DmlHOxNpHTsVQBA7FkAROx1AEDseQBY6DkBvcGVyYW5kMm86IFNhc3M6OlNjcmlwdDo6VHJlZTo6TGl0ZXJhbAk6C0B2YWx1ZW86IFNhc3M6OlNjcmlwdDo6VmFsdWU6Ok51bWJlcgo7J2kGOx5AFjoVQG51bWVyYXRvcl91bml0c1sAOhdAZGVub21pbmF0b3JfdW5pdHNbADoOQG9yaWdpbmFsMDsOaUc7D287EAk7EW87Egc7DmlHOxNpITsUbzsSBzsOaUc7E2kiOxVAEDsWQBE7HUAQOg5Ab3BlcmF0b3I6B2VxOw5pRzsPbzsQCTsRQBs7FG87Egc7DmlHOxNpIjsVQBA7FkAROx1AEDseQBYwWwZvOhtTYXNzOjpUcmVlOjpSZXR1cm5Ob2RlCzoKQGV4cHJvOwcPOwgwOwlJIgdpZgY7ClQ7C1sIbzsHDzsIMDsJSSINdW5pdGxlc3MGOwpUOwtbBm87DAs7CUkiCmZpcnN0BjsKVDsNSSIKZmly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dTspAiUFBAhbCG86IlNhc3M6OlNjcmlwdDo6VHJlZTo6T3BlcmF0aW9uDDoOQG9wZXJhbmQxbzogU2Fzczo6U2NyaXB0OjpUcmVlOjpGdW5jYWxsDzoOQGNhbGxhYmxlMDoKQG5hbWVJIgx0eXBlLW9mBjoGRVQ6CkBhcmdzWwZvOiFTYXNzOjpTY3JpcHQ6OlRyZWU6OlZhcmlhYmxlCzsJSSIJbGlzdAY7ClQ6FkB1bmRlcnNjb3JlZF9uYW1lSSIJbGlzdAY7ClQ6CkBsaW5laQGXOhJAc291cmNlX3JhbmdlbzoYU2Fzczo6U291cmNlOjpSYW5nZQk6D0BzdGFydF9wb3NvOhtTYXNzOjpTb3VyY2U6OlBvc2l0aW9uBzsOaQGXOgxAb2Zmc2V0aRU6DUBlbmRfcG9zbzsSBzsOaQGXOxNpGjoKQGZpbGVJInkvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MvbWluaW1hbC1taXN0YWtlcy92ZW5kb3Ivc3VzeS9zdXN5L191dGlsaXRpZXMuc2NzcwY7ClQ6DkBpbXBvcnRlcm86IFNhc3M6OkltcG9ydGVyczo6RmlsZXN5c3RlbQg6CkByb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsKRjoPQHJlYWxfcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7ClQ6GEBzYW1lX25hbWVfd2FybmluZ3NvOghTZXQGOgpAaGFzaH0ARjoOQGZpbGVuYW1lQBA6DUBvcHRpb25zewA6DkBrZXl3b3Jkc286HlNhc3M6OlV0aWw6Ok5vcm1hbGl6ZWRNYXAHOhFAa2V5X3N0cmluZ3N7ADoJQG1hcHsAOgtAc3BsYXQwOhFAa3dhcmdfc3BsYXQwOw5pAZc7D287EAk7EW87Egc7DmkBlzsTaQ07FG87Egc7DmkBlzsTaRs7FUAQOxZAETsdQBA7HkAWOg5Ab3BlcmFuZDJvOiBTYXNzOjpTY3JpcHQ6OlRyZWU6OkxpdGVyYWwJOgtAdmFsdWVvOiBTYXNzOjpTY3JpcHQ6OlZhbHVlOjpTdHJpbmcJOydJIghtYXAGOwpUOx5AFjoKQHR5cGU6C3N0cmluZzoiQGRlcHJlY2F0ZWRfaW50ZXJwX2VxdWl2YWxlbnQwOw5pAZc7D287EAk7EW87Egc7DmkBlzsTaR87FG87Egc7DmkBlzsTaSQ7FUAQOxZAETsdQBA6DkBvcGVyYXRvcjoHZXE7DmkBlzsPbzsQCTsRQBs7FG87Egc7DmkBlzsTaSQ7FUAQOxZAETsdQBA7HkAWMFsGbzobU2Fzczo6VHJlZTo6UmV0dXJuTm9kZQs6CkBleHBybzsMCzsJSSIJbGlzdAY7ClQ7DUkiCWxpc3QGOwpUOw5pAZg7D287EAk7EW87Egc7DmkBmDsTaRI7FG87Egc7DmkBmDsTaRc7FUAQOxZAETsdQBA7HkAWOg5AY2hpbGRyZW5bADsdMDseQBY7DmkBmDsPbzsQCTsRbzsSBzsOaQGYOxNpCjsUbzsSBzsOaQGYOxNpFzsVQBA7FkARbzsHDDsIWwZJIi8vKiBJdGVyYXRlIG92ZXIgbGlzdHMgKG9yIHNpbmdsZSBpdGVtcykgKi8GOwlUOwo7CzsGWwA7DDA7DUALOw5pAZs7D287EAk7EW87Egc7DmkBmzsTaQg7FG87Egc7DmkBmzsTaS87FUAPOxZAEG86GVNhc3M6OlRyZWU6OkVhY2hOb2RlDToKQHZhcnNbBkkiCWl0ZW0GOwlUOgpAbGlzdG87Jgs7HkkiCWxpc3QGOwlUOydJIglsaXN0BjsJVDsOaQGcOw9vOxAJOxFvOxIHOw5pAZw7E2kXOxRvOxIHOw5pAZw7E2kcOxVADzsWQBA7DEAPOw1ACzsGWwZ1OykCUgsECFsIbzoiU2Fzczo6U2NyaXB0OjpUcmVlOjpPcGVyYXRpb24MOg5Ab3BlcmFuZDFvOiBTYXNzOjpTY3JpcHQ6OlRyZWU6OkZ1bmNhbGwPOg5AY2FsbGFibGUwOgpAbmFtZUkiDHR5cGUtb2YGOgZFVDoKQGFyZ3NbBm86IVNhc3M6OlNjcmlwdDo6VHJlZTo6VmFyaWFibGULOwlJIglpdGVtBjsKVDoWQHVuZGVyc2NvcmVkX25hbWVJIglpdGVtBjsKVDoKQGxpbmVpAZ06EkBzb3VyY2VfcmFuZ2VvOhhTYXNzOjpTb3VyY2U6OlJhbmdlCToPQHN0YXJ0X3Bvc286G1Nhc3M6OlNvdXJjZTo6UG9zaXRpb24HOw5pAZ06DEBvZmZzZXRpFzoNQGVuZF9wb3NvOxIHOw5pAZ07E2kcOgpAZmlsZUkieS9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9zdXN5L3N1c3kvX3V0aWxpdGllcy5zY3NzBjsKVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwpGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsKVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGOg5AZmlsZW5hbWVAEDoNQG9wdGlvbnN7ADoOQGtleXdvcmRzbzoeU2Fzczo6VXRpbDo6Tm9ybWFsaXplZE1hcAc6EUBrZXlfc3RyaW5nc3sAOglAbWFwewA6C0BzcGxhdDA6EUBrd2FyZ19zcGxhdDA7DmkBnTsPbzsQCTsRbzsSBzsOaQGdOxNpDzsUbzsSBzsOaQGdOxNpHTsVQBA7FkAROx1AEDseQBY6DkBvcGVyYW5kMm86IFNhc3M6OlNjcmlwdDo6VHJlZTo6TGl0ZXJhbAk6C0B2YWx1ZW86IFNhc3M6OlNjcmlwdDo6VmFsdWU6OlN0cmluZwk7J0kiCWxpc3QGOwpUOx5AFjoKQHR5cGU6C3N0cmluZzoiQGRlcHJlY2F0ZWRfaW50ZXJwX2VxdWl2YWxlbnQwOw5pAZ07D287EAk7EW87Egc7DmkBnTsTaSE7FG87Egc7DmkBnTsTaSc7FUAQOxZAETsdQBA6DkBvcGVyYXRvcjoHZXE7DmkBnTsPbzsQCTsRQBs7FG87Egc7DmkBnTsTaSc7FUAQOxZAETsdQBA7HkAWdToXU2Fzczo6VHJlZTo6SWZOb2RlAhsEBAhbCDAwWwZvOh1TYXNzOjpUcmVlOjpWYXJpYWJsZU5vZGUOOgpAbmFtZUkiCWZsYXQGOgZFVDoKQGV4cHJvOiBTYXNzOjpTY3JpcHQ6OlRyZWU6OkZ1bmNhbGwPOg5AY2FsbGFibGUwOwZJIgthcHBlbmQGOwdUOgpAYXJnc1sHbzohU2Fzczo6U2NyaXB0OjpUcmVlOjpWYXJpYWJsZQs7BkkiCWZsYXQGOwdUOhZAdW5kZXJzY29yZWRfbmFtZUkiCWZsYXQGOwdUOgpAbGluZWkBoToSQHNvdXJjZV9yYW5nZW86GFNhc3M6OlNvdXJjZTo6UmFuZ2UJOg9Ac3RhcnRfcG9zbzobU2Fzczo6U291cmNlOjpQb3NpdGlvbgc7DmkBoToMQG9mZnNldGkaOg1AZW5kX3Bvc287Egc7DmkBoTsTaR86CkBmaWxlSSJ5L0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzL21pbmltYWwtbWlzdGFrZXMvdmVuZG9yL3N1c3kvc3VzeS9fdXRpbGl0aWVzLnNjc3MGOwdUOg5AaW1wb3J0ZXJvOiBTYXNzOjpJbXBvcnRlcnM6OkZpbGVzeXN0ZW0IOgpAcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7B0Y6D0ByZWFsX3Jvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwdUOhhAc2FtZV9uYW1lX3dhcm5pbmdzbzoIU2V0BjoKQGhhc2h9AEY6DkBmaWxlbmFtZUASOg1Ab3B0aW9uc3sAbzsMCzsGSSIJaXRlbQY7B1Q7DUkiCWl0ZW0GOwdUOw5pAaE7D287EAk7EW87Egc7DmkBoTsTaSE7FG87Egc7DmkBoTsTaSY7FUASOxZAEzsdQBI7HkAYOg5Aa2V5d29yZHNvOh5TYXNzOjpVdGlsOjpOb3JtYWxpemVkTWFwBzoR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b3IgbWVzc2FnZSwgZXhwbGFpbmluZyB0aGUgcHJvYmxlbQovLy8gQHBhcmFtIHtzdHJpbmd9ICRzb3VyY2UgLQovLy8gICBUaGUgb3JpZ2luYWwgc291cmNlIG9mIHRoZSBlcnJvciBmb3IgZGVidWdnaW5nCi8vLyBAcGFyYW0ge2Jvb2x9ICRvdmVycmlkZSBbJF9zdXN5LWVycm9yLW91dHB1dC1vdmVycmlkZV0gLQovLy8gICBPcHRpb25hbGx5IHJldHVybiB0aGUgZXJyb3IgcmF0aGVyIHRoYW4gZmFpbGluZwovLy8gQHJldHVybiB7c3RyaW5nfSAtCi8vLyAgIENvbWJpbmVkIGVycm9yIHdpdGggc291cmNlIGFuZCBtZXNzYWdlCi8vLyBAdGhyb3dzIFdoZW4gYCRvdmVycmlkZSA9PSB0cnVlYApAZnVuY3Rpb24gX3N1c3ktZXJyb3IoCiAgJG1lc3NhZ2UsCiAgJHNvdXJjZSwKICAkb3ZlcnJpZGU6ICRfc3VzeS1lcnJvci1vdXRwdXQtb3ZlcnJpZGUKKSB7CiAgQGlmICRvdmVycmlkZSB7CiAgICBAcmV0dXJuICdFUlJPUiBbI3skc291cmNlfV0gI3skbWVzc2FnZX0nOwogIH0KCiAgQGVycm9yICdbI3skc291cmNlfV0gI3skbWVzc2FnZX0nOwp9CgoKLy8gU3UgSXMgQ29tcGFyYWJsZQovLyAtLS0tLS0tLS0tLS0tLS0tCi8vLyBDaGVjayB0aGF0IHRoZSB1bml0cyBpbiBhIGdyaWQgYXJlIGNvbXBhcmFibGUKLy8vCi8vLyBAZ3JvdXAgeC12YWxpZGF0aW9uCi8vLyBAYWNjZXNzIHByaXZhdGUKLy8vCi8vLyBAcGFyYW0ge251bWJlcnN9ICRsZW5ndGhz4oCmIC0KLy8vICAgQXJnbGlzdCBvZiBhbGwgdGhlIG51bWJlciB2YWx1ZXMgdG8gY29tcGFyZQovLy8gICAoY29sdW1ucywgZ3V0dGVycywgc3BhbiwgZXRjKQovLy8KLy8vIEByZXR1cm4geydmbHVpZCcgfCAnc3RhdGljJyB8IGZhbHNlfSAtCi8vLyAgIFRoZSB0eXBlIG9mIHNwYW4gKGZsdWlkIG9yIHN0YXRpYykgd2hlbiB1bml0cyBtYXRjaCwKLy8vICAgb3IgYGZhbHNlYCBmb3IgbWlzbWF0Y2hlZCB1bml0cwpAZnVuY3Rpb24gX3N1LWlzLWNvbXBhcmFibGUoCiAgJGxlbmd0aHMuLi4KKSB7CiAgJGZpcnN0OiBudGgoJGxlbmd0aHMsIDEpOwoKICBAaWYgKGxlbmd0aCgkbGVuZ3RocykgPT0gMSkgewogICAgQHJldHVybiBpZih1bml0bGVzcygkZmlyc3QpLCAnZmx1aWQnLCAnc3RhdGljJyk7CiAgfQoKICBAZm9yICRpIGZyb20gMiB0aHJvdWdoIGxlbmd0aCgkbGVuZ3RocykgewogICAgJGNvbXA6IG50aCgkbGVuZ3RocywgJGkpOwoKICAgICRmYWlsOiBub3QgY29tcGFyYWJsZSgkZmlyc3QsICRjb21wKTsKICAgICRmYWlsOiAkZmFpbCBvciAodW5pdGxlc3MoJGZpcnN0KSBhbmQgbm90IHVuaXRsZXNzKCRjb21wKSk7CiAgICAkZmFpbDogJGZhaWwgb3IgKHVuaXRsZXNzKCRjb21wKSBhbmQgbm90IHVuaXRsZXNzKCRmaXJzdCkpOwoKICAgIEBpZiAkZmFpbCB7CiAgICAgIEByZXR1cm4gZmFsc2U7CiAgICB9CiAgfQoKICBAcmV0dXJuIGlmKHVuaXRsZXNzKCRmaXJzdCksICdmbHVpZCcsICdzdGF0aWMnKTsKfQoKCi8vIFN1IE1hcCBBZGQgVW5pdHMKLy8gLS0tLS0tLS0tLS0tLS0tLQovLy8gVGhlIGNhbGMgZmVhdHVyZXMgdXNlIGEgbWFwIG9mIHVuaXRzIGFuZCB2YWx1ZXMKLy8vIHRvIGNvbXBpbGUgdGhlIHByb3BlciBhbGdvcnl0aG0uCi8vLyBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBuZXcgdmFsdWUgdG8gYW55IGNvbXBhcmFibGUgZXhpc3RpbmcgdW5pdC92YWx1ZSwKLy8vIG9yIGFkZHMgYSBuZXcgdW5pdC92YWx1ZSBwYWlyIHRvIHRoZSBtYXAKLy8vCi8vLyBAZ3JvdXAgeC11dGlsaXR5Ci8vLyBAYWNjZXNzIHByaXZhdGUKLy8vCi8vLyBAcGFyYW0ge21hcH0gJG1hcCAtCi8vLyAgIEEgbWFwIG9mIHVuaXQvdmFsdWUgcGFpcnMsIGUuZy4gKCdweCc6IDEyMHB4KQovLy8gQHBhcmFtIHtsZW5ndGh9ICR2YWx1ZSAtCi8vLyAgIEEgbmV3IGxlbmd0aCB0byBiZSBhZGRlZCB0byB0aGUgbWFwCi8vLyBAcmV0dXJuIHttYXB9IC0KLy8vICAgVGhlIHVwZGF0ZWQgbWFwLCB3aXRoIG5ldyB2YWx1ZSBhZGRlZAovLy8KLy8vIEBleGFtcGxlIHNjc3MgLQovLy8gICAkbWFwOiAoMHB4OiAxMjBweCk7Ci8vLyAgICRtYXA6IF9zdS1tYXAtYWRkLXVuaXRzKCRtYXAsIDFpbik7IC8vIGFkZCBhIGNvbXBhcmFibGUgdW5pdAovLy8gICAkbWFwOiBfc3UtbWFwLWFkZC11bml0cygkbWFwLCAzdncpOyAvLyBhZGQgYSBuZXcgdW5pdAovLy8KLy8vICAgQGVhY2ggJHVuaXRzLCAkdmFsdWUgaW4gJG1hcCB7Ci8vLyAgICAgLyogI3skdW5pdHN9OiAjeyR2YWx1ZX0gKi8KLy8vICAgfQpAZnVuY3Rpb24gX3N1LW1hcC1hZGQtdW5pdHMoCiAgJG1hcCwKICAkdmFsdWUKKSB7CiAgJHVuaXQ6ICR2YWx1ZSAqIDA7CiAgJGhhczogbWFwLWdldCgkbWFwLCAkdW5pdCkgb3IgMDsKCiAgQGlmICgkaGFzID09IDApIHsKICAgIEBlYWNoICR0cnksICRjb3VsZCBpbiAkbWFwIHsKICAgICAgJG1hdGNoOiBjb21wYXJhYmxlKCR0cnksICR2YWx1ZSk7CiAgICAgICR1bml0OiBpZigkbWF0Y2gsICR0cnksICR1bml0KTsKICAgICAgJGhhczogaWYoJG1hdGNoLCAkY291bGQsICRoYXMpOwogICAgfQogIH0KCiAgQHJldHVybiBtYXAtbWVyZ2UoJG1hcCwgKCR1bml0OiAkaGFzICsgJHZhbHVlKSk7Cn0KCgovLyBTdXN5IEZsYXR0ZW4KLy8gLS0tLS0tLS0tLS0tCi8vLyBGbGF0dGVuIGEgbXVsdGlkaW1lbnNpb25hbCBsaXN0Ci8vLwovLy8gQGdyb3VwIHgtdXRpbGl0eQovLy8gQGFjY2VzcyBwcml2YXRlCi8vLwovLy8gQHBhcmFtIHtsaXN0fSAkbGlzdCAtCi8vLyAgIFRoZSBsaXN0IHRvIGJlIGZsYXR0ZW5lZAovLy8gQHJldHVybiB7bGlzdH0gLQovLy8gICBUaGUgZmxhdHRlbmVkIGxpc3QKLy8vCi8vLyBAZXhhbXBsZSBzY3NzIC0KLy8vICAgJGxpc3Q6IDEyMHB4ICgzMGVtIDMwZW0pIDEyMHB4OwovLy8gICAvKiAje19zdXN5LWZsYXR0ZW4oJGxpc3QpfSAqLwpAZnVuY3Rpb24gX3N1c3ktZmxhdHRlbigKICAkbGlzdAopIHsKICAkZmxhdDogKCk7CgogIC8vIERvbid0IGl0ZXJhdGUgb3ZlciBtYXBzCiAgQGlmICh0eXBlLW9mKCRsaXN0KSA9PSAnbWFwJykgewogICAgQHJldHVybiAkbGlzdDsKICB9CgogIC8vIEl0ZXJhdGUgb3ZlciBsaXN0cyAob3Igc2luZ2xlIGl0ZW1zKQogIEBlYWNoICRpdGVtIGluICRsaXN0IHsKICAgIEBpZiAodHlwZS1vZigkaXRlbSkgPT0gJ2xpc3QnKSB7CiAgICAgICRpdGVtOiBfc3VzeS1mbGF0dGVuKCRpdGVtKTsKICAgICAgJGZsYXQ6IGpvaW4oJGZsYXQsICRpdGVtKTsKICAgIH0gQGVsc2UgewogICAgICAkZmxhdDogYXBwZW5kKCRmbGF0LCAkaXRlbSk7CiAgICB9CiAgfQoKICAvLyBSZXR1cm4gZmxhdHRlbmVkIGxpc3QKICBAcmV0dXJuICRmbGF0Owp9CgY7CVQ7DmkGOw9vOxAJOxFvOxIHOw5pBjsTaQY7FG87Egc7DmkGOxNpBjsVQA87FkAQOzJU