UEtJWDEgeyB9CkRFRklOSVRJT05TIElNUExJQ0lUIFRBR1MgOjo9CkJFR0lOCmlkLS9lIE9CSkVDVCBJREVOVElGSUVSICA6Oj0gIHtqb2ludC1pc28tY2NpdHQoMikgZHMoNSkgMjl9CmlkLWNlLWF1dGhvcml0eUtleUlkZW50aWZpZXIgT0JKRUNUIElERU5USUZJRVIgOjo9ICB7IGlkLWNlIDM1IH0KQXV0aG9yaXR5S2V5SWRlbnRpZmllciA6Oj0gU0VRVUVOQ0UgewogICAgICBrZkNFIHsKICAgYnVpbHQtaW4tc3RhbmRhcmQtYXR0cmlidXRlcyBCdWlsdEluU3RhbmRhcmRBdHRyaWJ1dGVzLAogICBidWlsdC1pbi1kb21haW4tZGVmaW5lZC1hdHRyaWJ1dGVzCiAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWx0SW5Eb21haW5EZWZpbmVkQXR0cmlidXRlcyBPUFRJT05BTCwKICAgLS0gc2VlIGFsc28gdGVsZXRleC1kb21haW4tZGVmaW5lZC1hdHRyaWJ1dGVzCiAgIGV4dGVuc2lvbi1hdHRyaWJ1dGVzIEV4dGVuc2lvbkF0dHJpYnV0ZXMgT1BUSU9OQUwgfQpCdWlsdEluU3RhbmRhcmRBdHRyaWJ1dGVzIDo6PSBTRVFVRU5DRSB7CiAgIGNvdW50cnktbmFtZSBDb3VudHJ5TmFtZSBPUFRJT05BTCwKICAgYWRtaW5pc2FtZS1udW1lcmljLWxlbmd0aCkpLAogICBpc28tMzE2Ni1hbHBoYTItY29kZSBQcmludGFibGVTdHJpbmcKICAgICAgICAgICAgICAgIChTSVpFICh1Yi1jb3VudHJ5LW5hbWUtYWxwaGEtbGVuZ3RoKSkgfQpBZG1pbmlzdHJhdGlvbkRvbWFpbk5hbWUgOjo9IFtBUFBMSUNBVElPTiAyXSBFWFBMSUNJVCBDSE9JQ0UgewogICBudW1lcmljIE51bWVyaWNTdHJpbmcgKFNJWkUgKDAuLnViLWRvbWFpbi1uYW1lLWxlbmd0aCkpLAogICBwcmludGFibGUgUHJpbnRhYmxlU3RyaW5nIChTSVpFICgwLi51Yi1kb21haW4tbmFtZS1sZW5ndGgpKSB9Ck5ldHdvcmtBZGRyZXNzIDo6PSBYMTIxQWRkcmVzcyAgLS0gc2VlIGFsc28gZXh0ZW5kZWQtbmV0d29yay1hZGRyZXNzClgxMjFBZGRyZXNzIDo6PSBOdW1lcmljU3RyaW5nIChTSVpFICgxLi51Yi14MTIxLWFkZHJlc3MtbGVuZ3RoKSkKVGVybWluYWxJZGVudGlmaWVyIDo6PSBQcmludGFibGVTdHJpbmcgKFNJWkUgKDEuLnViLXRlcm1pbmFsLWlkLWxlbmd0aCkpClByaXZhdGVEb21haW5OYW1lIDo6PSBDSE9JQ0UgewogICBudW1lcmljIE51bWVyaWNTdHJpbmcgKFNJWkUgKDEuLnViLWRvbWFpbi1uYW1lLWxlbmd0aCkpLAogICBwcmludGFibGUgUHJpbnRhYmxlU3RyaW5nIChTSVpFICgxLi51Yi1kb21haW4tbmFtZS1sZW5ndGgpKSB9Ck9yZ2FuaXphdGlvbk5hbWUgOjo9IFByaW50YWJsZVN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNJWkUgKDEuLnViLW9yZ2FuaXphdGlvbi1uYW1lLWxlbmd0aCkpCk51bWVyaWNVc2VySWRlbnRpZmllciA6Oj0gTnVtZXJpY1N0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNJWkUgKDEuLnViLW51bWVyaWMtdXNlci1pZC1sZW5ndGgpKQpQZSAgKFNJWkUgKHViLWNvdW50cnktbmFtZS1hbHBoYS1sZW5ndGgpKSB9CkFkbWluaXN0cmF0aW9uRG9tYWluTmFtZSA6Oj0gW0FQUExJQ0FUSU9OIDJdIEVYUExJQ0lUIENIT0lDRSB7CiAgIG51bWVyaWMgTnVtZXJpY1N0cmluZyAoU0laRSAoMC4udWItZG9tYWluLW5hbWUtbGVuZ3RoKSksCiAgIHByaW50YWJsZSBQcmludGFibGVTdHJpbmcgKFNJWkUgKDAuLnViLWRvbWFpbi1uYW0gICAgICAgICAgICAgICAgICAgICAgICAgIE9GIE9yZ2FuaXphdGlvbmFsVW5pdE5hbWUKT3JnYW5pemF0aW9uYWxVbml0TmFtZSA6Oj0gUHJpbnRhYmxlU3RyaW5nIChTSVpFCiAgICAgICAgICAgICAgIPkgICAgICAgICgxLi51Yi1vcmdhbml6YXRpb25hbC11bml0LW5hbWUtbGVuZ3RoKSkKQnVpbHROIDJdIEVYUExJQ0lUIENIT0lDRSB7CiAgIG51bWVyaWMgTnVtZXJpY1N0cmluZyAoU0laRSAoMC4udWItZG9tYWluLW5hbWUtbGVuZ3RoKSksCiAgIHByaW50YWJsZSBQcmludGFibGVTdHJpbmcgKFNJWkUgKDAuLnViLWRvbWFpbi1uYW1lLWxlbmd0aCkpIH0KTmV0d29ya0FkZHJlc3MgOjo9IFgxMjFBZGRyZXNzICAtLSBzZWUgYWxzbyBleHRlbmRlZC1uZXR3b3JrLWFkZHJlc3MKWDEyMUFkZHJlc3MgOjo9IE51bWVyaWNTdHJpbmcgKFNJWkUgKDEuLnViLXgxMjEtYWRkcmVzcy1sZW5ndGgpKQpUZXJtaW5hbElkZW50aWZpZXIgOjo9IFByaW50YWJsZVN0cmluZyAoU0laRSAoMS4udWItdGVybWluYWwtaWQtbGVuZ3RoKSkKUHJpdmF0ZURvbWFpbk5hbWUgOjo9IENIT0lDRSB7CiAgIG51bWVyaWMgTnVtZXJpY1N0cmluZyAoU0laRSAoMS4udWItZG9tYWluLW5hbWUtbGVuZ3RoKSksCiAgIHByaW50YWJsZSBQcmludGFibGVTdHJpbmcgKFNJWkUgKDEuLnViLWRvbWFpbi1uYW1lLWxlbmd0aCkpIH0KT3JnYW5pemF0aW9uTmFtZSA6Oj0gUHJpbnRhYmxlU3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU0laRSAoMS4udWItb3JnYW5pemF0aW9uLW5hbWUtbGVuZ3RoKSkKTnVtZXJpY1VzZXJJZGVudGlmaWVyIDo6PSBOdW1lcmljU3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU0laRSAoMS4udWItbnVtZXJpYy11c2VyLWlkLWxlbmd0aCkpClBlICAoU0laRSAodWItY291bnRyeS1uYW1lLWFscGhhLWxlbmd0aCkpIH0KQWRtaW5pc3RyYXRpb25Eb21haW5OYW1lIDo6PSBbQVBQTElDQVRJT04gMl0gRVhQTElDSVQgQ0hPSUNFIHsKICAgbnVtZXJpYyBOdW1lcmljU3RyaW5nIChTSVpFICgwLi51Yi1kb21haW4tbmFtZS1sZW5ndGgpKSwKICAgcHJpbnRhYmxlIFByaW50YWJsZVN0cmluZyAoU0laRSAoMC4udWItZG9tYWluLW5hbWUtbGVuZ3RoKSkgfQpOZXR3b3JrQWRkcmVzcyA6Oj0gWDEyMUFkZHJlc3MgIC0tIHNlZSBhbHNvIGV4dGVuZGVkLW5ldHdvcmstYWRkcmVzcwpYMTIxQWRkcmVzcyA6Oj0gTnVtZXJpY1N0cmluZyAoU0laRSAoMS4udWIteDEyMS1hZGRyZXNzLWxlbmd0aCkpClRlcm1pbmFsSWRlbnRpZmllciA6Oj0gUHJpbnRhYmxlU3RyaW5nIChTSVpFICgxLi51Yi10ZXJtaW5hbC1pZC1sZW5ndGgpKQpQcml2YXRlRG9tYWluTmFtZSA6Oj0gQ0hPSUNFIHsKICAgbnVtZXJpYyBOdW1lcmljU3RyaW5nIChTSVpFICgxLi51Yi1kb21haW4tbmFtZS1sZW5ndGgpKSwKICAgcHJpbnRhYmxlIFByaW50YWJsZVN0cmluZyAoU0laRSAoMS4udWItZG9tYWluLW5hbWUtbGVuZ3RoKSkgfQpPcmdhbml6YXRpb25OYW1lIDo6PSBQcmludGFibGVTdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTSVpFICgxLi51Yi1vcmdhbml6YXRpb24tbmFtZS1sZW5ndGgpKQpOdW1lcmljVXNlcklkZW50aWZpZXIgOjo9IE51bWVyaWNTdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTSVpFICgxLi51Yi1udW1lcmljLXVzZXItaWQtbGVuZ3RoKSkKUGVyc29uYWxOYW1lIDo6PSBTRVQgewogICBzdXJuYW1lIFswXSBQcmludGFibGVTdHJpbmcgKFNJWkUgKDEuLnViLXN1cm5hbWUtbGVuZ3RoKSksCiAgIGdpdmVuLW5hbWUgWzFdIFByaW50YWJsZVN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAoU0laRSAoMS4udWItZ2l2ZW4tbmFtZS1sZW5ndGgpKSBPUFRJT05BTCwKICAgaW5pdGlhbHMgWzJdIFByaW50YWJsZVN0cmluZyAoU0laRSAoMS4udWItaW5pdGlhbHMtbGVuZ3RoKSkgT1BUSU9OQUwsaWRlbnRpZmllciAgWzFdIEVYUExJQ0lUIFRlcm1pbmFsSWRlbnRpZmllciBPUFRJT05BTCwKICAgcHJpdmF0ZS1kb21haW4tbmFtZSAgWzJdIEVYUExJQ0lUIFByaXZhdGVEb21haW5OYW1lQUwsCiAgIGdlbmVyYXRpb24tcXVhbGlmaWVyIFszXSBQcmludGFibGVTdHJpbmcKICAgICAgICAgICAgICAgIChTSVpFICgxLi51Yi1nZW5lcmF0aW9uLXF1YWxpZmllci1sZW5ndGgpKSBPUFRJT05BTCB9Ck9yZ2FuaXphdGlvbmFsVW5pdE5hbWVzIDo6PSBTRVFVRU5DRSBTSVpFICgxLi51Yi1vcmdhbml6YXRpb25hbC11bml0cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9GIE9yZ2FuaXphdGlvbmFsVW5pdE5hbWUKT3JnYW5pemF0aW9uYWxVbml0TmFtZSA6Oj0gUHJpbnRhYmxlU3RyaW5nIChTSVpFCiAgICAgICAgICAgICAgICAgICAgICAgICgxLi51Yi1vcmdhbml6YXRpb25hbC11bml0LW5hbWUtbGVuZ3RoKSkKQnVpbHRJbkRvbWFpbkRlZmluZWRBdHRyaWJ1dGVzIDo6PSBTRVFVRU5DnCBTSVpFCiAgICAgICAgICAgICAgICA6Oj0gQ0hPSUNFIHsKICAgbnVtZXJpYyBOdW1lcmljU3RyaW5nIChTSVpFICgxLi51Yi1kb21haW4tbmFtZS1sZW5ndGgpKSwKICAgcHJpbnRhYmxlIFByaW50YWJsZVN0cmluZyAoU0laRSAoMS4udWItZG9tYWluLW5hbWUtbGVuZ3RoKSkgfQpPcmdhbml6YXRpb25OYW1lIDo6PSBQcmludGFibGVTdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTSVpFICgxLi51Yi1vcmdhbml6YXRpb24tbmFtZS1sZW5ndGgpKQpOdW1lcmljVXNlcklkZW50aWZpZXIgOjo9IE51bWVyaWNTdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTSVpFICgxLi51Yi1udW1lcmljLXVzZXItaWQtbGVuZ3RoKSkKUGVyc29uYWxOYW1lIDo6PSBTRVQgewogICBzdXJuYW1lIFswXSBQcmludGFibGVTdHJpbmcgKFNJWkUgKDEuLnViLXN1cm5hbWUtbGVuZ3RoKSksCiAgIGdpdmVuLW5hbWUgWzFdIFByaW50YWJsZVN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAoU0laRSAoMS4udWItZ2l2ZW4tbmFtZS1sZW5ndGgpKSBPUFRJT05BTCwKICAgaW5pdGlhbHMgWzJdIFByaW50YWJsZVN0cmluZyAoU0laRSAoMS4udWItaW5pdGlhbHMtbGVuZ3RoKSkgT1BUSU9OQUwsCiAgIGdlbmVyYXRpb24tcXVhbGlmaWVyIFszXSBQcmludGFibGVTdHJpbmcKICAgICAgICAgICAgICAgIChTSVpFICgxLi51Yi1nZW5lcmF0aW9uLXF1YWxpZmllci1sZW5ndGgpKSBPUFRJT05BTCB9Ck9yZ2FuaXphdGlvbmFsVW5pdE5hbWVzIDo6PSBTRVFVRU5DRSBTSVpFICgxLi51Yi1vcmdhbml6YXRpb25hbC11bml0cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9GIE9yZ2FuaXphdGlvbmFsVW5pdE5hbWUKT3JnYW5pemF0aW9uYWxVbml0TmFtZSA6Oj0gUHJpbnRhYmxlU3RyaW5nIChTSVpFCiAgICAgICAgICAgICAgIPkgICAgICAgICgxLi51Yi1vcmdhbml6YXRpb25hbC11bml0LW5hbWUtbGVuZ3RoKSkKQnVpbHROIDJdIEVYUExJQ0lUIENIT0lDRSB7CiAgIG51bWVyaWMgTnVtZXJpY1N0cmluZyAoU0laRSAoMC4udWItZG9tYWluLW5hbWUtbGVuZ3RoKSksCiAgIHByaW50YWJsZSBQcmludGFibGVTdHJpbmcgKFNJWkUgKDAuLnViLWRvbWFpbi1uYW1lLWxlbmd0aCkpIH0KTmV0d29ya0FkZHJlc3MgOjo9IFgxMjFBZGRyZXNzICAtLSBzZWUgYWxzbyBleHRlbmRlZC1uZXR3b3JrLWFkZHJlc3MKWDEyMUFkZHJlc3MgOjo9IE51bWVyaWNTdHJpbmcgKFNJWkUgKDEuLnViLXgxMjEtYWRkcmVzcy1sZW5ndGgpKQpUZXJtaW5hbElkZW50aWZpZXIgOjo9IFByaW50YWJsZVN0cmluZyAoU0laRSAoMS4udWItdGVybWluYWwtaWQtbGVuZ3RoKSkKUHJpdmF0ZURvbWFpbk5hbWUgOjo9IENIT0lDRSB7CiAgIG51bWVyaWMgTnVtZXJpY1N0cmluZyAoU0laRSAoMS4udWItZG9tYWluLW5hbWUtbGVuZ3RoKSksCiAgIHByaW50YWJsZSBQcmludGFibGVTdHJpbmcgKFNJWkUgKDEuLnViLWRvbWFpbi1uYW1lLWxlbmd0aCkpIH0KT3JnYW5pemF0aW9uTmFtZSA6Oj0gUHJpbnRhYmxlU3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU0laRSAoMS4udWItb3JnYW5pemF0aW9uLW5hbWUtbGVuZ3RoKSkKRXVtZXJpY1VzZXJJZGVudGlmaWVyIDo6PSBOdW1lcmljU3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU0laRSAoMS4udWItbnVtZXJpYy11c2VyLWlkLWxlbmd0aCkpClBlICAoU0laRSAodWItY291bnRyeS1uYW1lLWFscGhhLWxlbmd0aCkpIH0KQWRtaW5pc3RyYXRpb25Eb21haW5OYW1lIDo6PSBbQVBQTElDQVRJT04gMl0gRVhQTElDSVQgQ0hPSUNFIHsKICAgbnVtZXJpYyBOdW1lcmljU3RyaW5nIChTSVpFICgwLi51Yi1kb21haW4tbmFtZS1sZW5ndGgpKSwKICAgcHJpbnRhYmxlIFByaW50YWJsZVN0cmluZyAoU0laRSAoMC4udWItZG9tYWluLW5hbWUtbGVuZ3RoKSkgfQpOZXR3b3JrQWRkcmVzcyA6Oj0gWDEyMUFkZHJlc3MgIC0tIHNlZSBhbHNvIGV4dGVuZGVkLW5ldHdvcmstYWRkcmVzcwpYMTIxQWRkcmVzcyA6Oj0gTnVtZXJpY1N0cmluZyAoU0laRSAoMS4udWIteDEyMS1hZGRyZXNzLWxlbmd0aCkpClRlcm1pbmFsSWRlbnRpZmllciA6Oj0gUHJpbnRhYmxlU3RyaW5nIChTSVpFICgxLi51Yi10ZXJtaW5hbC1pZC1sZW5ndGgpKQpQcml2YXRlRG9tYWluTmFtZSA6Oj0gQ0hPSUNFIHsKICAgbnVtZXJpYyBOdW1lcmljU3RyaW5nIChTSVpFICgxLi51Yi1kb21haW4tbmFtZS1sZW5ndGgpKSwKICAgcHJpbnRhYmxlIFByaW50YWJsZVN0cmluZyAoU0laRSAoMS4udWItZG9tYWluLW5hbWUtbGVuZ3RoKSkgfQpPcmdhbml6YXRpb25OYW1lIDo6PSBQcmludGFibGVTdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTSVpFICgxLi51Yi1vcmdhbml6YXRpb24tbmFtZS1sZW5ndGgpKQpOdW1lcmljVXNlcklkZW50aWZpZXIgOjo9IE51bWVyaWNTdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTSVpFICgxLi51Yi1udW1lcmljLXVzZXItaWQtbGVuZ3RoKSkKUGVyc29uYWxOYW1lIDo6PSBTRVQgewogICBzdXJuYW1lIFswXSBQcmludGFibGVTdHJpbmcgKFNJWkUgKDEuLnViLXN1cm5hbWUtbGVuZ3RoKSksCiAgIGdpdmVuLW5hbWUgWzFdIFByaW50YWJsZVN0cmluZwogICAgICBQS0lYMSB7IH0KREVGSU5JVElPTlMgSU1QTElDSVQgVEFHUyA6Oj0KQkVHSU4KaWQtY2UgT0JKRUNUIElERU5USUZJRVIgIDo6PSAge2pvaW50LWlzby1jY2l0dCgyKSBkcyg1KSAyOX0KaWQtY2UtYWl0cmhvdXR5S2V5SWRlbnRpZmllciBPQkpFQ1QgSURFTlRJRklFUiA6Oj0gIHsgaWQtY2UgMzUgfQpBdXRob3JpdHlLZXlJZGVudGlmaWVyIDo6PSBTRVFVRU5DRSB7CiAgICAgIGtmaW5lZEF0dHJpYnV0ZSA6Oj0gU0VRVUVOQ0UgewogICB0eXBlIFByaW50YWJsZVN0cmluZyAoU0laRQogICAgICAgICAgICAgICAgICAgICAoMSAgLiAudWItZG9tYWluLWRlZmluZWQtYXR0cmlidXRlLXR5cGUtbGVuZ3RoKSksCiAgIHZhbHVlIFByaW50YWJsZVN0cmluZyAoU0laRQogICAgICAgICAgICAgICAgICAgICAgICAoMS4udWItZG9tYWluLWRlZmluZWQtYXR0cmlidXRlLXZhbHVlLWxlbmd0aCkpfQpFeHRlbnNpb25BdHRyaWJ1dGVzIDo6PSBTRVQgU0laRSAoMS4udWItZXh0ZW5zaW9uLWF0dHJpYnV0ZXMpIE9GCiAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVuc2lvbkF0dHJpYnV0ZQpFeHRlbnNpb25BdHRyaWJ1dGUgOjo9ICBTRVFVRU5DRSB7CiAgIGV4dGVuc2lvbi1hdHRyaWJ1dGUtdHlwZSBbNV0gRVhQTElDSVQgSU5URUdFUiAoMC4udWItZXh0ZW5zaW9uLWF0dHJpYnV0ZXMpLAogICBleHRlbnNpb24tYXR0cmlidXRlLXZhbHVlIFsxXSBFWFBMSUNJVAogICAgICAgICAgICAgICAgICAgICAgICBBTlkgREVGSU5FRCBCWSBleHRlbnNpb24tYXR0cmliICAgICAgICAgICAgICAgICAgKFNJWkUgKDEuLnViLWdpdmVuLW5hbWUtbGVuZ3RoKSkgT1BUSU9OQUwsCiAgIGluaXRpYWxzIFsyXSBQcmludGFidXRlLXR5cGUgfQpjb21tb24tbmFtZSBJTlRFR0VSIDo6PSAxCkNvbW1vbk5hbWUgOjo9IFByaW50YWJsZVN0cmluZyAoU0laRSAoMS4udWItY29tbW9uLW5hbWUtbGVuZ3RoKSkKdGVsZXRleC1jb21tb24tbmFtZSBJTlRFR0VSIDo6PSAyClRlbGV0ZXhDb21tb25OYW1lIDo6PSBUZWxldGV4U3RyaW5nIChTSVpFICgxLi51Yi1jb21tb2xlU3RyaW5nIChTbkk=