ZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGFhNWY3NDIuLmRmMTc0ZWQgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtNjYsNiArNjYsNyBAQAogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogbGlidG9vbAogbG9jYWwvc25tcGNoZWNrCitsb2NhbC9zbm1wY29uZgogTWFrZWZpbGUKIG1hbi8qLlsxMzU4XQogbWFuL2RlZmF1bHRfc3RvcmUuMy5oCmRpZmYgLS1naXQgYS9DSEFOR0VTIGIvQ0hBTkdFUwppbmRleCBkMDI1NzhmLi5mNWY1ZjAwIDEwMDY0NAotLS0gYS9DSEFOR0VTCisrKyBiL0NIQU5HRVMKQEAgLTMsMTE4ICszLDYyMSBAQAogYSBzdW1tYXJ5IG9mIHRoZSBtYWpvciBjaGFuZ2VzLCBhbmQgdGhlIENoYW5nZUxvZyBmaWxlIGZvciBhIGNvbXByZWhlbnNpdmUKIGxpc3Rpbmcgb2YgYWxsIGNoYW5nZXMgbWFkZSB0byB0aGUgY29kZS4KIAotCi0qNS42LjIqCi0KKyo1LjcuMyoKICAgICBzbm1wbGliOgotICAgICAgLSBbUEFUQ0ggMjgzNTU3N106IFJlcGxhY2UgU05NUF9aRVJPIG9mIGFycmF5cyB3aXRoIGEgbWVtc2V0LgotICAgICAgLSBbUEFUQ0ggMzUxMDQ1NF06IEFsbG93IHRoZSB1c2Ugb2YgMC4wLjAuMC8wIGFzIGFsaWFzIGZvciBkZWZhdWx0Ci0gICAgICAtIFtQQVRDSCAzNTI2NTk5XTogRG9uJ3QgaGFuZyBvbiByZXRyaWVkIGZhaWxpbmcgU05NUHYzIHJlc3BvbnNlcwotICAgICAgLSBbQlVHIDMxMzQzMjNdOiBGaXggY3Jhc2ggd2hlbiBjb21wYXJpbmcgaW52YWxpZCBPSURzCi0gICAgICAtIEF2b2lkIHVubmVjZXNzYXJ5IGNhc3RzIHdoZW4gdXNpbmcgbmV0c25tcF9zZXRfcm93X2NvbHVtbigpCi0gICAgICAtIEVsaW1pbmF0ZSBhc3NvcnRlZCBkZWFkIHZhcmlhYmxlcworICAgICAgLSBGaXhlZCBjcmFzaCB3aGVuIE1ENSBoYXNoIGlzIG5vdCBzdXBwb3J0ZWQgYnkgT3BlblNTTC4KKyAgICAgIC0gRml4ZWQgcGFyc2luZyBvZiBzZXF1ZW5jZXMuIERvbid0IG92ZXJ3cml0ZSAnZGF0YScgdmFyaWFibGUsIGl0J3MKKwl1c2VkIHdoZW4gcGFyc2luZyBidWxrIHJlc3BvbnNlcy4KKworICAgIHNubXA6CisgICAgICAtIFVzbS1kaC1vYmplY3RzLW1pYjogQXZvaWQgdHJpZ2dlcmluZyBhbiBhc3NlcnQgc3RhdGVtZW50IGluCisJbmV0c25tcF9yZWFkeV9tb25vdG9uaWMoKSBUaGUgY2FjaGUgdGltZW91dCBmb3IKKwlzbm1wLXVzbS1kaC1vYmplY3RzLW1pYiBpcyAtMS4gQW55IGNhY2hlIHRpbWVvdXQgdmFsdWUgPCAwIGRpc2FibGVzCisJY2FjaGluZy4gSG93ZXZlciwgc3RyaWN0bHkgbmVnYXRpdmUgdmFsdWVzIHRyaWdnZXIgdGhlIGFzc2VydAorCXN0YXRlbWVudCBpbiBuZXRzbm1wX3JlYWR5X21vbm90b25pYygpLiBBdm9pZCB0cmlnZ2VyaW5nIHRoYXQKKwlhc3NlcnQgc3RhdGVtZW50LgorICAgICAgLSBGaXhlZCBtb25pdG9yaW5nIGJhc2VkIG9uIG5vbi1kZWx0YSB0cmlnZ2VyLiAgIHNubXBkIGNyYXNoZWQgd2l0CisJZm9sbG93aW5nIHNubXBkLmNvbmY6IG1vbml0b3IgLXMgLUQgLXIgMTAgLWUgTE9HTUFUQ0ggLW8KKwlsb2dNYXRjaEN1cnJlbnRDb3VudCAiTG9nIE1hdGNoIiAhPSBsb2dNYXRjaEN1cnJlbnRDb3VudCBsb2dtYXRjaAorCUxvZ2luRmFpbHVyZTEgL3Zhci9sb2cvc2VjdXJlIDEwIHN1OiAuKmZhaWwuKiBUaGUgcmVhc29uIHdhcworCXVuaXRpYWxpemVkIHZhcmlhYmxlIHN5c1VUX3ZhciBpbiBtdGVUcmlnZ2VyX3J1bigpLCBpdCB3YXMgZmlsbGVkCisJb25seSBpZiB0aGUgdHJpZ2dlciB3YXMgZGVsdGEtdmFsdWVkLCB3aGlsZSBpdHMgdmFsdWUgd2FzIHVzZWQgZm9yCisJYWxsIHRyaWdnZXJzLiBXaXRoIHRoaXMgcGF0Y2gsIHN5c1VUX3ZhciBpcyBmaWxsZWQgZm9yIGFsbCBjb2RlCisJYnJhbmNoZXMgd2hlcmUgaXQgaXMgbmVlZGVkLgogCiAgICAgc25tcGQ6Ci0gICAgICAtIFtQQVRDSCAyOTQxODExXTogSGFuZGxlIHN1Y2Nlc3NmdWwgcmVxdWVzdHMgd2l0aCByZXFJRCAwCi0gICAgICAtIFtQQVRDSCAzMDk2NzI1XTogc3lzT1JUYWJsZSByZWdpc3RhdGlvbiBmb3Igbm90aWZpY2F0aW9uIGxvZyBtaWIKLSAgICAgIC0gW1BBVENIIDM0Nzk3NDBdOiBGaXggaHJTV1J1blBlcmYgc3RhdGlzdGljcwotICAgICAgLSBbUEFUQ0ggMzQ4Nzg2N106IERvbid0IHNraXAgbWlzc2luZyBpZlhUYWJsZSBlbnRyaWVzIChpZkNvbm5lY3RvclByZXNlbnQgRkFMU0UpCi0gICAgICAtIFtQQVRDSCAzNDg3OTE5XTogRml4IGNvbXBpbGF0aW9uIHdoZW4gY2FjaGluZyBpcyBkaXNhYmxlZAotICAgICAgLSBbUEFUQ0ggMzQ5NTY5N106IFN0b3JlIHBlcnNpc3RlbnQgc25tcFRhcmdldCB0YWJsZSBjaGFuZ2VzCi0gICAgICAtIFtCVUcgMzUyNjU0OV06IENWRS0yMDEyLTIxNDEgQXJyYXkgaW5kZXggZXJyb3IgbGVhZGluZyB0byBjcmFzaAotICAgICAgLSBbQlVHIDM1MzIwOTBdOiBGaXggaGlnaCBpZkluZGV4IHZhbHVlcyBjcmFzaGluZyBockRldmljZURlc2NyCi0gICAgICAtIEFkZGVkIE9DRlMyIChPcmFjbGUgQ2x1c3RlciBGUykgdG8gaHJTdG9yYWdlVGFibGUgYW5kIGhyRlNUYWJsZQotICAgICAgLSBFbGltaW5hdGUgYXNzb3J0ZWQgZGVhZCB2YXJpYWJsZXMKLSAgICAgIC0gVURQLU1JQjogUmVwb3J0IHByb3BlciB1ZHBMb2NhbEFkZHJlc3MgKGluc3RlYWQgb2YgMC4wLjAuMCkKKyAgICAgIC0gQWRkIGEgbWlzc2luZyBmdW5jdGlvbiBkZWNsYXJhdGlvbgorICAgICAgLSBBZGRlZCBidHJmcyBzdXBwb3J0IHRvIGhyRlNUYWJsZQorICAgICAgLSBDb3JyZWN0IHRoZSBzaXplIG9mIG9mIHRoZSBFWEFNUExFSVBBRERSRVNTIHZhbHVlIG9uIEw2NCBob3N0cworICAgICAgLSBGaXhlZCBjcmFzaCBpbiBVQ0QtU05NUC1NSUI6OmV4dFRhYmxlIHNubXBkIGNyYXNoZWQgd2hlbiB0aGUKKwljb21tYW5kIHRvIGV4ZWN1dGUgaGFkIG5vIGFyZ3VtZW50cywgaS5lLiBleHRlbmQtPmFyZ3Mgd2FzIE5VTEwuCisgICAgICAtIEZpeGVkIHZhbHVlIG9mIFVDRC1TTk1QLU1JQjo6ZXh0Q29tbWFuZCB0byBjb250YWluIGZ1bGwgY29tbWFuZAorCWxpbmUuIE1JQiBkZXNjcmlwdGlvbiBvZiBVQ0QtU05NUC1NSUI6OmV4dENvbW1hbmQgc3VnZ2VzdHMgaXQKKwlzaG91bGQgY29udGFpbCBmdWxsIGNvbW1hbmQgbGluZS4gQWxzbyBpbiBOZXQtU05NUCA1LjMuMi4yLCB3aG9sZQorCWNvbW1hbmQgbGluZSB3YXMgc2hvd24uCisgICAgICAtIE1ha2UgaXQgcG9zc2libGUgdG8gdXNlIE5VTCBjaGFyYWN0ZXJzIGluIHRoZSBpbmRpY2VzIGZvcgorCXNubXBUYXJnZXRBZGRyVGFibGUKKyAgICAgIC0gUEFUQ0ggMjQ3MjogZnJvbSBTdW5pbDogZG9uJ3QgdXNlIEhCS1QgYXMgaGVhcnRiZWF0IGludGVydmFsIGluCisJU0NUUC1NSUI6OnNjdHBBc3NvY1RhYmxlLgorICAgICAgLSBSZW1vdmUgc29tZSB1bnVzZWQgaW5jbHVkZXMKKyAgICAgIC0gU2hvdyBMaW51eCBrZXJuZWwgdGhyZWFkcyBpbiBoclNXUnVuVGFibGUuCisgICAgICAtIFVzZSAwIGZvciB0aGUgaWdub3JlZCBudW12YXJzIGFyZ3VtZW50IHRvIG5ldHNubXBfcmVnaXN0ZXJfbWliIFRoZQorCW51bXZhcnMgYXJndW1lbnQgb2YgbmV0c25tcF9yZWdpc3Rlcl9taWIgaXMgaWdub3JlZCBpZiB0aGUgdmFyCisJYXJndW1lbnQgaXMgTlVMTC4gSW4gb3JkZXIgdG8gdW5pZnkgdGhpcyB1c2Ugb2YgaXQgd2l0aCBhbGwgb3RoZXIKKwlvbmVzLCBjaGFuZ2UgaXQgZnJvbSAxIHRvIDAKKyAgICAgIC0gU0VDVVJJVFk6IGEgZGVuaWFsIG9mIHNlcnZpY2UgYXR0YWNrIHZlY3RvciB3YXMgZGlzY292ZXJlZCBvbgorICAgICAgICB0aGUgbGludXggaW1wbGVtZW50YXRpb24gb2YgdGhlIElDTVAtTUlCLiAgVGhpcyByZWxlYXNlIGZpeGVzCisgICAgICAgIHRoaXMgYnVnIGFuZCBhbGwgdXNlcnMgYXJlIGVuY291cmFnZWQgdG8gdXBkYXRlIHRoZWlyIFNOTVAKKyAgICAgICAgYWdlbnQgaWYgdGhleSBtYWtlIHVzZSBvZiB0aGUgSUNNUC1NSUIgdGFibGUgb2JqZWN0cy4KIAotICAgIHNubXBkeDoKLSAgICAgIC0gW1BBVENIIDM0NDU0MzddOiBMb2cgQWdlbnRYIGRpc2Nvbm5lY3Rpb25zIChpbiBsaW5lIHdpdGggY29ubmVjdGlvbnMpCisgICAgc25tcGQsIHNubXB0cmFwZCBhbmQgYXBwczoKKyAgICAgIC0gTWFrZSBFTlZfU0VQQVJBVE9SX0NIQVIgY29uZmlndXJhYmxlCiAKICAgICBzbm1wdHJhcGQ6Ci0gICAgICAtIFtCVUcgMzE1MTI1NF06IEZpeCBjcmFzaCB3aXRoIGludmFsaWQgdHJhcGhhbmRsZSBkaXJlY3RpdmUKLSAgICAgIC0gQXZvaWQgY3Jhc2ggZHVyaW5nIHNodXRkb3duIGR1ZSB0byBpbnZva2luZyBwZXJsX2Rlc3RydWN0KE5VTEwpCi0gICAgICAtIERvbid0IGludm9rZSBzaHV0ZG93bl9wZXJsKCkgZnJvbSBTSUdURVJNIGhhbmRsZXIKLSAgICAgIC0gSGFuZGxlIGNoYW5nZXMgdG8gbGlibXlzcWxjbGllbnQgQVBJIChhZmZlY3RzIEZlZG9yYSAxNS8xNikKLSAgICAgIC0gUmVtb3ZlIHN1cGVyZmx1b3VzIGNhc3RzCiAKICAgICBhcHBzOgotICAgICAgLSBbUEFUQ0ggMjgzNTU3N106IFJlcGxhY2UgU05NUF9aRVJPIG9mIGFycmF5cyB3aXRoIGEgbWVtc2V0LgorICAgICAgLSBTdG9wIGFnZW50eHRyYXAgZnJvbSBhY2Nlc3NpbmcgdGhlIHBlcnNpc3RlbnQgY29uZmlndXJhdGlvbiBUaGlzIGlzCisJbmVlZGVkIHRvIHByZXZlbnQgbW9hbmluZyBhYm91dCBub3QgYmVlaW5nIGFsbG93ZWQgdG8gd3JpdGUgdGhvc2UKKwlmaWxlcyBkdWUgdG8gYmFkIHBlcm1pc3Npb25zLgorICAgICAgLSBTdG9wIHVzaW5nIHNubXBfcGVycm9yIHdoZW4gbG9nZ2luZyBhZnRlciBmdW5jdGlvbnMgdGhhdCBkb24ndCBzZXQKKwlzbm1wX2Vycm5vLgogCi0gICAgYnVpbGQvaW5zdGFsbDoKLSAgICAgIC0gW0JVRyAzMTUyODQxXTogSW5zdGFsbCB1dGlsX2Z1bmNzIHN1YmhlYWRlcnMKLSAgICAgIC0gT3BlbkJTRDogRml4IG9yZGVyIG9mIGhlYWRlcnMgd2hlbiBjaGVja2luZyA8bmV0aW5ldC9pbl9wY2IuaD4KLSAgICAgIC0gQWRkIHRhcmdldCB0byBidWlsZCBhZ2VudHh0cmFwIGZyb20gdGhlIHRvcGxldmVsCi0gICAgICAtIEJ1aWxkIGZpeCBmb3Igc3lzdGVtcyBsYWNraW5nIGZpZWxkIG1zZ19jb250cm9sIGluIHN0cnVjdCBtc2doZHIKLSAgICAgIC0gRml4IHN0YXRpYyBidWlsZHMgdXNpbmcgbmV0LXNubXAtY29uZmlnIGFuZCAtKmxpYnMgZmxhZ3MKKyAgICBidWlsZGluZzoKKyAgICAgIC0gTWFrZSB0aGUgLXdpdGhvdXQgb3B0aW9ucyB0byBycG1idWlsZCB3b3JrCisgICAgICAtIEF2b2lkIGR1cGxpY2F0ZSBhbmQgdHJhaWxpbmcgc3BhY2VzIGluIHRoZSBkZXBlbmRlbmN5IGZpbGVzLgogCi0gICAgbWFuOgotICAgICAgLSBbQlVHIDMxOTA3MjVdOiBEb2N1bWVudCBzbm1weyxfc2Vzc31zeW5jaF9yZXNwb25zZSBhbmQgc25tcF9hc3luY19zZW5kCi0KLSAgICBtaWIyYzoKLSAgICAgIC0gTWFrZSB0aGUgbWliMmMgZm9yZWFjaCByYW5nZXMgd29yayBhcyBhZHZlcnRpc2VkIGluIHRoZSBjb21tZW50cy4KKyAgICBkb2N1bWVudGF0aW9uOgorICAgICAgLSBGcm9tICJFcmljIFMuIFJheW1vbmQiOiBDb3JyZWN0IG1hbiBwYWdlIG1hcmt1cCBwcm9ibGVtIEFtYmlndW91cworCW9yIGludmFsaWQgYmFja3NsYXNoLiAgVGhpcyBkb2Vzbid0IGNhdXNlIGdyb2ZmIGEgcHJvYmxlbS4gYnV0IGl0CisJY29uZnVzZXMgZG9jbGlmdGVyIGFuZCBtYXkgY29uZnVzZSBvbGRlciB0cm9mZiBpbXBsZW1lbnRhdGlvbnMuCiAKICAgICBwZXJsOgotICAgICAgLSBGaXggc3BlbGxpbmcgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIFNOTVAgbW9kdWxlCi0gICAgICAtIEZpeGVkIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIGhhbmRsZXIgcmVnaXN0cmF0aW9uIGZhaWxzLgotICAgICAgLSBEb24ndCBvcGVuIHN0ZGVyciB1bm5lY2Vzc2FyaWx5IChhZmZlY3RzIGVtYmVkZGVkIGFnZW50KQorICAgICAgLSBCVUc6IDI0MDI6IEFkZCBzdXBwb3J0IGZvciBTTk1QdjMgdHJhcHMKIAogICAgIHB5dGhvbjoKLSAgICAgIC0gW1BBVENIIDMxODUwODVdOiBGaXggc2VnZmF1bHQgb24gNjQtYml0IHN5c3RlbXMKKyAgICAgIC0gRml4ZWQgSVBBRERSRVNTIHNpemUgb24gNjRiaXQgc3lzdGVtcy4KKyAgICAgIC0gRml4ZWQgcmV0dXJuaW5nIG9mIGVtcHR5IHN0cmluZ3MuIFZhcmJpbmQgdHlwZSAoU05NUF9OT1NVQ0hPQkpFQ1QKKwlldGMuKSBzaG91bGQgYmUgdXNlZCB0byBkZXRlY3QgZXJyb3JzIGluc3RlYWQgb2YgbGVuZ3RoIG9mIHRoZQorCXZhcmlhYmxlIC0gaXQgY2FuIGJlIGVtcHR5IHN0cmluZy4KKyAgICAgIC0gW1BBVENIIDEyMzldOiBGaXggbWVtb3J5IGxlYWsKIAogICAgIHRlc3Rpbmc6Ci0gICAgICAtIFtCVUcgMzQ3NDU5MF06IERvbid0IG1hdGNoIHVuZGVyc2NvcmVzIHdpdGhpbiB0aGUgc291cmNlIHJvb3QgZmlsZW5hbWUKLSAgICAgIC0gQWRkIGEgdGVzdCBmb3Igc2Vfc3RvcmVfbGlzdCgpCi0gICAgICAtIEZpeCBQZXJsIHJlZ3Jlc3Npb24gdGVzdCBmYWlsdXJlcwotICAgICAgLSBEb24ndCBmYWlsIHNraXBwZWQgUGVybCB0ZXN0cy4KLSAgICAgIC0gUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMKKyAgICAgIC0gTWFrZSBzdXJlIFRlc3Q6Okhhcm5lc3MgaXMgb2YgYXQgbGVhc3QgdmVyc2lvbiAxLjIxIFRlc3Q6Okhhcm5lc3MKKwkxLjIxIGlzIHRoZSBmaXJzdCB2ZXJzaW9uIHRoYXQgaW1wbGVtZW50cyBUQVAgdjEyIHdoaWNoIGFsbG93cworCXB1dHRpbmcgdGhlIGhlYWRlciAoMS4uTikgYWZ0ZXIgdGhlIHRlc3RzIGFuZCBzaW5jZSBvdXIgdGVzdHMKKwl1dGlsaXplIHRoYXQgd2Ugc2hvdWxkIG1ha2Ugc3VyZSB0aGF0IHRoZSB0ZXN0IHJ1bm5lciBzdXBwb3J0cyBpdC4KKworICAgIHVuc3BlY2lmaWVkOgorICAgICAgLSBBZGRlZCBzaW1mcyAoT3BlblZaIGZpbGVzeXN0ZW0pIHRvIGhyU3RvcmFnZVRhYmxlIGFuZCBockZTVGFibGUuCisgICAgICAtIFVwcG9ydCBuZXcgTUlCIHN0cnVjdHVyZXMgYW5kIE1GRCByZXdyaXRlcyB1bmRlciBEYXJ3aW4KKyAgICAgIC0gW0JVRyAyNDcwXTogQWNjZXB0IDY1NTM1IGFzIGEgdmFsaWQgSVB2NiBwb3J0IG51bWJlcgorICAgICAgLSBbQlVHIDI0NzZdOiBzbm1wZCBmYWlscyB0byBzdGFydCBvbiBBSVggT24gYW4gQUlYIHN5c3RlbSB0aGVyZSBpcworCW5vIDxrdm0uaD4gaGVhZGVyIGZpbGUgbm9yIGRvIHRoZSAvZGV2L2RtZW0gb3IgL2Rldi9kcnVtIGRldmljZXMKKwlleGlzdCBhbmQgaGVuY2UgRE1FTV9MT0MgaXMgbm90IGRlZmluZWQuIEF2b2lkIHRoYXQgaW5pdF9rbWVtKCkKKwlmYWlscyBpbiB0aGF0IGNhc2UuCiAKICAgICBBSVg6Ci0gICAgICAtIEVsaW1pbmF0ZSBjb25maWd1cmUgd2FybmluZyByZWdhcmRpbmcgbGlicGVyZnN0YXQuaCAoQUlYIDYuMWZmKQorICAgICAgLSBNYWtlIHRjcC1taWIgYnVpbGQKKyAgICAgIC0gTWFrZSB1ZHAtbWliIGJ1aWxkCisKKyAgICBMaW51eDoKKyAgICAgIC0gQlVHOiAyMjM4OiBBZGQgbGlibmwzIHN1cHBvcnQKKyAgICAgIC0gUkVTT1VSQ0VTLU1JQiwgaHJTV1J1biB0YWJsZTogUGFyc2UgL3Byb2MvPHBpZD4vc3RhdCBjb3JyZWN0bHkgb24KKwlMaW51eCBUaGlzIGlzc3VlIHdhcyByZXBvcnRlZCBieSBWaW5jZW50IEJlcm5hdAorCTx2aW5jZW50LmJlcm5hdEBkYWlseW1vdGlvbi5jb20+LiBTZWUgYWxzbworCWh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9uZXQtc25tcC9wYXRjaGVzLzEyNTcvLgorCisgICAgV2luMzI6CisgICAgICAtIFBlcmw6IEJVRzogMjQ4ODogQXZvaWQgIkZyZWUgdG8gd3JvbmcgcG9vbCIgZXJyb3IKKyAgICAgIC0gUGVybDogQlVHOiAyNDg4OiBBdm9pZCAiRnJlZSB0byB3cm9uZyBwb29sIiBlcnJvciIgVGhpcyByZXZlcnRzCisJY29tbWl0IGIyNzI1OTY0YmRlOTIxYjYyODVlM2E1OWE1MTI1NTJjYWUwYTBjYTUuCisKKyAgICBXaW5kb3dzOgorICAgICAgLSBBZGQgbXVsdGlob21pbmcgc3VwcG9ydCBPbiBXaW5kb3dzIFZpc3RhIC8gV2luZG93cyBTZXJ2ZXIgMjAwOCBhbmQKKwlsYXRlciBpdCBpcyBwb3NzaWJsZSB0byBhZGQgbXVsdGlob21pbmcgc3VwcG9ydCBieSB1c2luZyB0aGUKKwlJUF9QS1RJTkZPIHNvY2tldCBvcHRpb24uIENvbmZsaWN0czoKKwlzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYworICAgICAgLSBNYWtlIHdpbkV4dERMTCB3b3JrIG9uIDY0LWJpdCBXaW5kb3dzIHN5c3RlbXMKKyAgICAgIC0gUG9ydCBiYXRjaCBidWlsZCBpbmZyYXN0cnVjdHVyZSB0byBWaXN1YWwgU3R1ZGlvIDIwMTAgYW5kIGxhdGVyCisJRnJvbSBWaXN1YWwgU3R1ZGlvIDIwMTAgb24gaXQgaXMgbm8gbG9uZ2VyIHBvc3NpYmxlIHRvIHNwZWNpZnkKKwlpbmNsdWRlIG9yIGxpYnJhcnkgZGlyZWN0b3JpZXMgZ2xvYmFsbHkgLSB0aGVzZSBoYXZlIHRvIGJlCisJc3BlY2lmaWVkIHBlciBwcm9qZWN0LiBIZW5jZSB0d28gYWRkaXRpb25hbCBtZW51IGVudHJpZXMgaW4KKwlidWlsZC5iYXQgdGhhdCBhbGxvdyB0byBzcGVjaWZ5IHRoZXNlIGRpcmVjdG9yaWVzLgorICAgICAgLSBQb3J0ZWQgdWNkLXNubXAvZGxtb2QgdG8gTWluR1cgLyBNU1ZDCisKKyo1LjcuMioKKworICAgIHNubXBsaWI6CisgICAgICAtIEFkZCBEb3h5Z2VuLXN0eWxlIGZ1bmN0aW9uIGhlYWRlciBmb3IKKwluZXRzbm1wX3JlZ2lzdGVyX2RlZmF1bHRfdGFyZ2V0KCkgYW5kCisJbmV0c25tcF9jbGVhcl9kZWZhdWx0X3RhcmdldCgpLgorICAgICAgLSBBZGQgbmV0c25tcF9zZXRlbnYoKS4KKyAgICAgIC0gQXZvaWQgdGhhdCBzeXN0ZW0gY2xvY2sgY2hhbmdlcyAoZS5nLiBieSBudHBkKSBhZmZlY3QgY29kZSB0aGF0CisJbmVlZHMgcmVsYXRpdmUgdGltZSBNYWtlIHN1cmUgdGhhdCB0aGUgcmFuZ2Ugb2YgdGhlIFNOTVB2MyB2YXJpYWJsZQorCXNubXBFbmdpbmVUaW1lIGlzIDAuLjIxNDc0ODM2NDcgb24gYWxsIHN1cHBvcnRlZCBzeXN0ZW1zIGluc3RlYWQgb2YKKwkwLi40Mjk0OTY3MiBvbiBzb21lIHN5c3RlbXMgKGkuZS4gd3JhcGFyb3VuZCBhZnRlciA0OTcgZGF5cykgQWRkCisJbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCksIG5ldHNubXBfc2V0X21vbm90b25pY19tYXJrZXIoKSwKKwluZXRzbm1wX3JlYWR5X21vbm90b25pYygpLCBuZXRzbm1wX2dldF9hZ2VudF9ydW50aW1lKCkKKyAgICAgIC0gQXZvaWQgdGhhdCBzeXN0ZW0gY2xvY2sgY2hhbmdlcyAoZS5nLiBieSBudHBkKSBhZmZlY3QgY29kZSB0aGF0CisJbmVlZHMgcmVsYXRpdmUgdGltZSBNYWtlIHN1cmUgdGhhdCB0aGUgcmFuZ2Ugb2YgdGhlIFNOTVB2MyB2YXJpYWJsZQorCXNubXBFbmdpbmVUaW1lIGlzIDAuLjIxNDc0ODM2NDcgb24gYWxsIHN1cHBvcnRlZCBzeXN0ZW1zIGluc3RlYWQgb2YKKwkwLi40Mjk0OTY3MiBvbiBzb21lIHN5c3RlbXMgKGkuZS4gd3JhcGFyb3VuZCBhZnRlciA0OTcgZGF5cykgQWRkCisJbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCksIG5ldHNubXBfc2V0X21vbm90b25pY19tYXJrZXIoKSwKKwluZXRzbm1wX3JlYWR5X21vbm90b25pYygpLCBuZXRzbm1wX2dldF9hZ2VudF9ydW50aW1lKCkgRGVwcmVjYXRlCisJYXRpbWVfZGlmZigpLCBhdGltZV9uZXdNYXJrZXIoKSwgYXRpbWVfcmVhZHkoKSwgYXRpbWVfc2V0TWFya2VyKCksCisJbWFya2VyX3R0aWNrcygpLCBuZXRzbm1wX21hcmtlcl91cHRpbWUoKSwgbmV0c25tcF90aW1ldmFsX3VwdGltZSgpLAorCXRpbWV2YWxfdHRpY2tzKCksIHVhdGltZV9kaWZmKCksIHVhdGltZV9oZGlmZigpIGFuZCB1YXRpbWVfcmVhZHkoKS4KKyAgICAgIC0gQXZvaWQgd2FpdGluZyBpbmRlZmluaXRlbHkgaWYgYSBzZXNzaW9uIGhhcyB0aW1lb3V0IHplcm8KKyAgICAgIC0gRGVjbGFyZSAidHlwZSIgYXJndW1lbnQgb2Ygc2Vfc3RvcmVfbGlzdCgpIC8gc2Vfc3RvcmVfc2xpc3QoKSAvCisJc2Vfc3RvcmVfZW51bV9saXN0KCkgY29uc3QKKyAgICAgIC0gTWFrZSBpdCBleHBsaWNpdCB0aGF0IE1BWF9TVUJJRCBpcyBhbiB1bnNpZ25lZCBjb25zdGFudAorICAgICAgLSBNYWtlIG5ldHNubXBfY2FsbGJhY2tfYWNjZXB0KCkgcmV0dXJuIC0xIChmYWlsdXJlKSBpbnN0ZWFkIG9mIDAKKwkoU1RESU5fRklMRU5PKQorICAgICAgLSBNYWtlIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSgpIHJvYnVzdCBhZ2FpbnN0IG1lbW9yeSBhbGxvY2F0aW9uCisJZmFpbHVyZXMuIE1ha2UgTkVUU05NUF9MQVJHRV9GRF9aRVJPKCkgdXNlIG1lbXNldCgpIG9uIFVuaXggc3lzdGVtcworCWluc3RlYWQgb2YgYW4gZXhwbGljaXQgbG9vcC4KKyAgICAgIC0gTWFrZSBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKSByb2J1c3QgYWdhaW5zdCBtZW1vcnkgYWxsb2NhdGlvbgorCWZhaWx1cmVzLiBNYWtlIE5FVFNOTVBfTEFSR0VfRkRfWkVSTygpIHVzZSBtZW1zZXQoKSBvbiBVbml4IHN5c3RlbXMKKwlpbnN0ZWFkIG9mIGFuIGV4cGxpY2l0IGxvb3AuIE1ha2Ugc3VyZSB0aGF0IG9uIFVuaXggc3lzdGVtcworCW5ldHNubXBfbGFyZ2VfZmRfY2xyKCkgZG9lc24ndCB0cnkgdG8gcmVhZCBtZW1vcnkgaXQgaXNuJ3QgYWxsb3dlZAorCXRvIHJlYWQgaWYgdGhlIGZpcnN0IGFyZ3VtZW50IGVxdWFscyAtMSAoYSB2YWx1ZSB0aGF0IHNob3VsZG4ndCBiZQorCXBhc3NlZCBieSB0aGUgY2FsbGVyKS4KKyAgICAgIC0gTWVyZ2UgdG9nZXRoZXIgdGhlIExpbnV4IGFuZCAqQlNEIHZlcnNpb24gb2Ygc3JjIHBvcnQgc2VuZGluZy4KKyAgICAgIC0gT25seSB0cmFuc2Zvcm0gdGhlIGFkZHJlc3MgdG8gcHJpbnRhYmxlIGZvcm0gd2hlbiBuZWVkZWQuCisgICAgICAtIFBBVENIIDM1MTA0NTQ6IEFsbG93IHRoZSB1c2Ugb2YgMC4wLjAuMC8wIGFzIGFsaWFzIGZvciBkZWZhdWx0CisgICAgICAtIFByZXZlbnQgZ2NjIHBlZC13YXJuaW5nIGZvciBORVRTTk1QX1JFTU9WRV9DT05TVCBnaXQtc3ZuLWlkOgorCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDEKKwk4MDUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgICAgLSBSZWR1Y2Ugb3ZlcmhlYWQgb2YgY29uZmlnIGZpbGUgcGFyc2luZworICAgICAgLSBSZW1vdmUgb2Jzb2xldGUgc25tcF9nZXRfZmRfZm9yX3Nlc3Npb24oKSBkZWNsYXJhdGlvbgorICAgICAgLSBTZXBhcmF0ZSBvdXQgdGhlIGNtZXNnIGJ1ZmZlciBzaXplCisgICAgICAtIFNldCB0aGUgcnBhdGggZm9yIGxpYnBlcmwuc28gaW4gbGlibmV0c25tcG1pYnMuc28gc3VjaCB0aGF0IHRoZQorCWR5bmFtaWMgbGlua2VyIGNhbiBmaW5kIGxpYnBlcmwuc28gd2l0aG91dCByZXF1aXJpbmcgdGhlIHVzZXIgdG8KKwltb2RpZnkgdGhlIGR5bmFtaWMgbGlua2VyIHNldHRpbmdzLiBUaGlzIGNoYW5nZSBpbgorCWFnZW50L01ha2VmaWxlLmluIGlzIG5lY2Vzc2FyeSBvbiB0aGUgNS41IGJyYW5jaCBhbmQgbGF0ZXIgYnV0IG5vdAorCW9uIHRoZSA1LjQgYnJhbmNoLiBUaGF0IGlzIGJlY2F1c2UgdGhlIDUuNCBicmFuY2ggdXNlcyBhbiBvbGRlcgorCXZlcnNpb24gb2YgbGlidG9vbCB0aGF0IHByb3BhZ2F0ZXMgdGhlIHJwYXRoIG9mIGRlcGVuZGVudAorCWxpYnJhcmllcy4gVGhpcyBpcyBjYWxsZWQgaW50ZXItbGlicmFyeSBkZXBlbmRlbmN5IHRyYWNraW5nIGluIHRoZQorCWxpYnRvb2wgbWFudWFsLiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgcHJlc2VudCBpbiBsaWJ0b29sIHZlcnNpb24gMQorCWJ1dCBub3QgaW4gbGlidG9vbCB2ZXJzaW9uIDIuIEZvciBtb3JlIGJhY2tncm91bmQgaW5mb3JtYXRpb24gYWJvdXQKKwlkeW5hbWljIGxpYnJhcmllcyBhbmQgcnBhdGhzLCBzZWUgYWxzbyB0aGUgZG9jdW1lbnQgd2l0aCB0aGUgdGl0bGUKKwkiUnBhdGhJc3N1ZSIgb24gdGhlIERlYmlhbiB3aWtpCisJKGh0dHA6Ly93aWtpLmRlYmlhbi5vcmcvUnBhdGhJc3N1ZSkuCisgICAgICAtIFNpbXBsaWZ5IGltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBtYW5pcHVsYXRpbmcgNjQtYml0IG51bWJlcnMuCisgICAgICAtIFNpbXBsaWZ5IHRoZSBzZV9zdG9yZV9lbnVtX2xpc3QoKSBpbXBsZW1lbnRhdGlvbgorICAgICAgLSBVc2UgU05NUF9BTExPQ19UWVBFREVGIHRvIGFsbG9jYXRlIHRyYW5zcG9ydHMgaW4gb3JkZXIgdG8gYXZvaWQgdGhlCisJc2VwYXJhdGUgY2FsbCB0byBtZW1zZXQuCisgICAgICAtIFtQQVRDSCAzNDE0NzczXTogRW5jb2RlIGludGVnZXIgdmFsdWUgdXNpbmcgQVNOX0lOVEVHRVIKKyAgICAgIC0gW1BBVENIIDM1MjY1OTldOiBEb24ndCBoYW5nIG9uIHJldHJpZWQgZmFpbGluZyBTTk1QdjMgcmVzcG9uc2VzCisgICAgICAtIFBBVENIIDM1NjA0NzM6IGZyb20gZmVubmVyOiBIYW5kbGUgVGltZVRpY2tzIHdoZW4gcHJldHR5LXByaW50aW5nCisJT0lEICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisgICAgICAtIEFkZCB0aGUgc3ltYm9sIE5FVFNOTVBfUFJJbyB0byBoZWxwIGluIHByaW50aW5nIG9pZCB2YWx1ZXMuCisgICAgICAtIERvIG5vdCBjcmFzaCBmcm9tIGVtcHR5IHZhbHVlcyBpbiAtLXRva2VuPXZhbHVlIGFyZ3VtZW50cworICAgICAgLSBEbyBub3QgY3Jhc2ggb24gaW5jb21wbGV0ZSBjb25maWd1cmF0aW9uIHRva2Vucy4KKyAgICAgIC0gRG8gbm90IHRydW5jYXRlIHNpbmdsZSBkZWZhdWx0IHRyYW5zcG9ydCBkb21haW5zCisgICAgICAtIE1vdmUgdGhlIGNoZWNrIHRoYXQgdGhlIHBkdSB2YXJpYWJsZSBpcyBub24tTlVMTCB0byBiZWZvcmUgdGhlCisJZmlyc3QgZGVyZWZlcmVuY2Ugb2YgaXQuCisKKyAgICBzbm1wbGliICsgc25tcGQgKyBzbm1wd2FsazoKKyAgICAgIC0gQXZvaWQgdGhhdCBzeXN0ZW0gY2xvY2sgY2hhbmdlcyAoZS5nLiBieSBudHBkKSBhZmZlY3QgY29kZSB0aGF0CisJbmVlZHMgcmVsYXRpdmUgdGltZQorCisgICAgc25tcGxpYiwgc25tcGQsIHBlcmw6CisgICAgICAtIEVsaW1pbmF0ZSBkZWFkIHZhcmlhYmxlcyBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMKKwlhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0c19saW51eC5jCisJYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX2FjYworCWVzcy5jIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYworCWFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2ZzX3N0YXR1cy5jCisJYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2xpbnV4LmMKKwlhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYworCWFnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHNfbGludXguYworCWFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MKKwkuYyBhcHBzL3NubXB0bHMuYyBhcHBzL3NubXB0cmFwZF9sb2cuYyBzbm1wbGliL2Rpcl91dGlscy5jCisJc25tcGxpYi9zbm1wX2NsaWVudC5jIHNubXBsaWIvc25tcF9vcGVuc3NsLmMKKwlzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU1RDUERvbWFpbi5jCisgICAgICAtIEJVRzogMzUxNzAzMDogRW5zdXJlIGxhcmdlIHRhYmxlcyBhcmUgd2Fsa2VkIHByb3Blcmx5CisgICAgICAtIEJVRzogMzU0MTAxMjogRml4IGhhbmRsaW5nIG9mIGdldHRhYmxlIGNvbHVtbnMKKyAgICAgIC0gW1BBVENIIDM1Mjk1NDFdOiBEb24ndCByZWZlciB0byBpbnRlcm5hbCAnbXknIHZhcmlhYmxlcyBmcm9tCisJZXh0ZXJuYWwgc2NyaXB0cyBGaXggcHJvdmlkZWQgYnkgTGV6eiBHaWxlcworCisgICAgc25tcDoKKyAgICAgIC0gQnJpZGdlLW1pYjogRml4IGluZGV4IGludGVycHJldGF0aW9uLiBUaGlzIHBhdGNoIGNvcnJlY3RzIGEgd3JvbmcKKwlkYXRhIGludGVycHJldGF0aW9uLiBzbm1wLWJyaWRnZS1taWIgb2J0YWlucyB0aGUgaWZpbmRleCB2YWx1ZSBmcm9tCisJdGhlIHN5c2ZzIGF0dHJpYnV0ZSAnaWZpbmRleCcgVGhlIHZhbHVlIGdpdmVuIGJ5IHRoZSBzeXNmcworCWF0dHJpYnV0ZSBpcyBhbiBpbnRlZ2VyLCB3aGljaCBpcyBoYW5kbGVkIGFzIGhleCBhbmQgbGVhZHMgdG8KKwlpbmNvcnJlY3QgZGF0YSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuIGUuZy4gJCA+IHNubXB3YWxrIGxvY2FsaG9zdAorCUJSSURHRS1NSUI6OmRvdDFkQmFzZVBvcnRJZkluZGV4LjIKKwlCUklER0UtTUlCOjpkb3QxZEJhc2VQb3J0SWZJbmRleC4yID0gSU5URUdFUjogNTQgYWNjb3JkaW5nIHRvIHRoZQorCXN5c2ZzIGF0dHJpYnV0ZSB0aGUgdmFsdWUgaXMgMzYgJCA+IGNhdAorCS9zeXMvY2xhc3MvbmV0LzxkZXZpY2U+L2lmaW5kZXggMzYgU2lnbmVkLW9mZi1ieTogTWlqbyBTYWZyYWRpbgorCTxzYWZyYWRpbkBsaW51eC52bmV0LmlibS5jb20+CisKKyAgICBzbm1wZDoKKyAgICAgIC0gTG93ZXJlZCBzZXZlcml0eSBvZiAnRXJyb3IgZXhwYW5kaW5nIFhYWCB0byA2NGJpdHMnIG1lc3NhZ2VzLgorICAgICAgLSBSZW1vdmVkIGVycm9yIGxvZyBtZXNzYWdlcyB3aGVuIElQdjYgaXMgZGlzYWJsZWQuCisgICAgICAtIEFkZCBtaXNzaW5nIGRlYnVnIHRhZworICAgICAgLSBBZGQgbmV0c25tcF9nZXRfbmV4dF9hbGFybV90aW1lKCkKKyAgICAgIC0gQXZvaWQgdGhhdCBzeXN0ZW0gY2xvY2sgY2hhbmdlcyAoZS5nLiBieSBudHBkKSBhZmZlY3QgY29kZSB0aGF0CisJbmVlZHMgcmVsYXRpdmUgdGltZSBNYWtlIHN1cmUgdGhhdCB0aGUgcmFuZ2Ugb2YgdGhlIFNOTVB2MyB2YXJpYWJsZQorCXNubXBFbmdpbmVUaW1lIGlzIDAuLjIxNDc0ODM2NDcgb24gYWxsIHN1cHBvcnRlZCBzeXN0ZW1zIGluc3RlYWQgb2YKKwkwLi40Mjk0OTY3MiBvbiBzb21lIHN5c3RlbXMgKGkuZS4gd3JhcGFyb3VuZCBhZnRlciA0OTcgZGF5cykKKyAgICAgIC0gQlVHIDM1NDIxODg6IENvcnJlY3Qgc3lzT1JEZXNjciBmb3Igc25tcFVzbU1JQi4gVGhhbmtzIHRvIERhdmUKKwlWdWNpY2ggZm9yIHJlcG9ydGluZyB0aGlzLgorICAgICAgLSBCVUcgMzU0MjMwNzogQ29ycmVjdCBzeXNPUklEIGZvciBzbm1wTVBEU3RhdHMuIFRoYW5rcyB0byBEYXZlCisJVnVjaWNoIGZvciByZXBvcnRpbmcgdGhpcy4KKyAgICAgIC0gQlVHOiAzNDM5MjM0OiBDb3JyZWN0IHRoZSBkZXBlbmRlbmNpZXMgb2YgdWNkLXNubXAvcGFzcyBhbmQKKwl1Y2Qtc25tcC9wYXNzX3BlcnNpc3QKKyAgICAgIC0gQlVHOiAzNDM5MjM0OiBNb3ZlIG5ldHNubXBfcGFzc19zdHJfdG9fZXJybm8gdG8gcGFzc19jb21tb24gYW5kCisJcmVuYW1lIGl0IHRvIG5ldHNubXBfaW50ZXJuYWxfcGFzc19zdHJfdG9fZXJybm8KKyAgICAgIC0gQlVHOiAzNDYzNzY3OiBIYW5kbGUgcGFyc2luZyBzdWJpZGVudGlmaWVycyA+IDJeMzEKKyAgICAgIC0gQlVHOiAzNTMyMDkwOiBGaXggaGlnaCBpZkluZGV4IHZhbHVlcyBjcmFzaGluZyBockRldmljZURlc2NyCisgICAgICAtIENhbGwgc25tcF9vaWR0cmVlX2NvbXBhcmUgaW5zdGVhZCBvZiBzbm1wX29pZF9taW5fY29tcGFyZQorICAgICAgLSBESVNNQU4tUElORy1NSUI6IEF2b2lkIGRhbmdsaW5nIHBvaW50ZXJzIChiYXNlZCBvbiBwYXRjaCAzNTAzMjU5KQorICAgICAgLSBESVNNQU4tUElORy1NSUI6IEF2b2lkIHJlYWRpbmcgZnJlZWQgbWVtb3J5IHdoZW4gZGVsZXRpbmcgYSByb3cKKwlmcm9tIGEgdGFibGUKKyAgICAgIC0gRElTTUFOLVBJTkctTUlCOiBEbyBub3Qgc2VuZCB0aGUgY29udGVudHMgb2YgdGhlIHN0YWNrIG92ZXIgdGhlCisJbmV0d29yaworICAgICAgLSBESVNNQU4tUElORy1NSUI6IERvbid0IGNhbGwgZXhpdCgpIHVwb24gbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZQorICAgICAgLSBESVNNQU4tUElORy1NSUI6IEZpeCBJUHY2IHNvY2tldCBsZWFrIGluIGVycm9yIHBhdGhzCisgICAgICAtIERJU01BTi1QSU5HLU1JQjogRml4IGEgc29ja2V0IGxlYWsgdHJpZ2dlcmVkIGJ5IHBpbmdpbmcgYSByZW1vdGUKKwlob3N0CisgICAgICAtIERJU01BTi1QSU5HLU1JQjogRml4IG1vcmUgbWVtb3J5IGxlYWtzCisgICAgICAtIERJU01BTi1QSU5HLU1JQjogRml4IHNldmVyYWwgbWVtb3J5IGxlYWtzCisgICAgICAtIERJU01BTi1QSU5HLU1JQjogTWFrZSBwaW5nIGltcGxlbWVudGF0aW9uIGluZGVwZW5kZW50IG9mIG50cGQgY2xvY2sKKwlqdW1wcworICAgICAgLSBESVNNQU4tUElORy1NSUI6IE1ha2UgcGluZ2luZyBsb2NhbCBpbnRlcmZhY2UgYWRkcmVzc2VzIHdvcmsKKyAgICAgIC0gRElTTUFOLVNDSEVEVUxFUi1NSUI6IEhhbmRsZSAzMi1jaGFyYWN0ZXIgc2NoZWRDb250ZXh0TmFtZSB2YWx1ZXMKKwljb3JyZWN0bHkuIFNlZSBhbHNvIGNvbW1pdAorCWIzYzQ5ODI1NDJlMGFiMTUxZmIzODg0NzU0Y2RmYmNiNDcyZGE1MmQuCisgICAgICAtIERpc2FibGUgdGhlIHN1cHBvcnQgZm9yIGludGVnZXI2NCBpbiBwYXNzIHNjcmlwdHMgaWYgY29tcGlsaW5nCisJd2l0aG91dCBvcGFxdWUtc3BlY2lhbC10eXBlcy4KKyAgICAgIC0gRmFjdG9yIG91dCBhc2MyYmluIGFuZCBiaW4yYXNjLiBBZGQgYSBuZXRzbm1wX2ludGVybmFsXyBwcmVmaXggdG8KKwl0aGVtCisgICAgICAtIEZpeGVkIFVDRC1TTk1QLU1JQjo6c3lzdGVtU3RhdHMgYWZ0ZXIgMzAgZGF5cyBvZiB1cHRpbWUuIEFmdGVyIDMwCisJZGF5cywgdmFsdWVzIGZyb20gL3Byb2Mvc3RhdCAob24gTGludXgpIGNhbiBnZXQgYmlnZ2VyIHRoYW4gMzJiaXRzCisJYW5kIHNubXBkIGNhbGN1bGF0aW9ucyBtaWdodCByZW5kZXIgY291bnRlcnMgbGlrZSBzc0NwdVVzZXIKKwluZWdhdGl2ZSBvciB6ZXJvLCB3aGlsZSB0aGUgcmVhbCB2YWx1ZSBpcyBoaWdoZXIuIFRoZXJlZm9yZSB0aGUKKwljb3VudGVycyBzaG91bGQgYmUgdHJhY2tlZCBhcyB0aGUgbGFyZ2VzdCBpbnRlZ2VyIGF2YWlsYWJsZS4KKyAgICAgIC0gRml4ZWQgc25tcGQgJy1kJyBvcHRpb24uIE5vdyBpdCBkdW1wcyBwYWNrZXRzIGFnYWluLgorICAgICAgLSBJRi1NSUI6OmlmVHlwZTogUmVwb3J0IHR5cGUgImluZmluaWJhbmQgKDE5OSkiIGZvciBJbmZpbmlCYW5kCisJaW50ZXJmYWNlcyBpbnN0ZWFkIG9mIHR5cGUgIm90aGVyICgxKSIuCisgICAgICAtIEluaXRfYWdlbnQoKSArIGluaXRfa21lbSgpOiBSZXR1cm4gYW4gZXJyb3IgdmFsdWUgaW5zdGVhZCBvZgorCWludm9raW5nIGV4aXQoKSBpZiBhY2Nlc3MgdG8ga2VybmVsIHZpcnR1YWwgbWVtb3J5IGlzIGRlbmllZAorICAgICAgLSBNYWtlIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBkbG1vZCBtb2R1bGUgZmFpbCByYXRoZXIgdGhhbgorCWdlbmVyYXRlIGEgZHVtbXkgbW9kdWxlIGlmIHRoZSBkbG9wZW4gZnVuY3Rpb24gaXNuJ3QgYXZhaWxhYmxlLgorICAgICAgLSBNYXRjaCBlYWNoIGdldHB3bmFtKCkvZ2V0cHd1aWQoKSBjYWxsIHdpdGggYW4gZW5kcHdlbnQoKSBjYWxsIGFuZAorCWVhY2ggZ2V0Z3JlbnQoKSBjYWxsIHdpdGggYW4gZW5kZ3JlbnQoKSBjYWxsLgorICAgICAgLSBQQVRDSCAzNDAyMzc2OiBmcm9tIExlb25hcmRvIENoaXF1aXR0bzogUmVjb2duaXNlIFJlaXNlckZTIEFsc28KKwltb3ZlIHZhcmlvdXMgRlNUeXBlIGRlZmluaXRpb25zIHRvIHRoZSBhcHByb3ByaWF0ZSBibG9ja3MKKyAgICAgIC0gUEFUQ0ggMzQ1Mzg2ODogZnJvbSAiQmlsbCBGZW5uZXIgPGZlbm5lckBnbWFpbC5jb20+IjogRmFjdG9yIGNvbW1vbgorCWNvZGUgaW50byBwYXNzX2NvbW1vbiBNb3ZlIHRoZSBjb2RlIGZvciBwb3JtYXR0aW5nIGFuZCBwcmludGluZworCXZhbHVlcyBmcm9tIHBhc3MgYW5kIHBhc3NfcGVyc2lzdCBpbnRvIHBhc3NfY29tbW9uLgorICAgICAgLSBQQVRDSDogMzQ4Nzg2NzogRG9uJ3Qgc2tpcCBtaXNzaW5nIGlmWFRhYmxlIGVudHJpZXMKKwkoaWZDb25uZWN0b3JQcmVzZW50IEZBTFNFKQorICAgICAgLSBQYXNzX3BlcnNpc3Q6ICBGaXhlcyBhIHJhY2UgY29uZGl0aW9uIGludHJvZHVjZWQgaW4gY29tbWl0CisJMzFmYTA3Y2Q5ZmZkZTQ2ZDQxZDJiNTgzOGMzZmM0ZDAxNTQ4YmZiNS4gVGhlIGZvbGxvd2luZyByYWNlCisJY29uZGl0aW9uIGNvdWxkIGhhcHBlbjogLSBBIHN5c3RlbSBjYWxsIGZhaWxzIGFuZCBlcnJubyBpcyBzZXQKKwlhY2NvcmRpbmdseSBieSB0aGUgQyBsaWJyYXJ5LiAtIFNJR0NITEQgaGFuZGxlciBpbnZva2VzIGEgc3lzdGVtCisJY2FsbCB0aGF0IGZhaWxzIGFuZCBoZW5jZSBvdmVyd3JpdGVzIGVycm5vLiAtIFNJR0NITEQgaGFuZGxlcgorCWxlYXZlcy4gLSBvcmlnaW5hbCBjb250ZXh0IGNoZWNrcyBlcnJubyBhbmQgZmluZHMgdGhlIHZhbHVlIGZyb20KKwl0aGUgc3lzdGVtIGNhbGwgaW52b2tlZCBieSB0aGUgU0lHQ0hMRCBoYW5kbGVyIGluc3RlYWQgb2YgdGhlCisJc3lzdGVtIGNhbGwgdGhhdCBmYWlsZWQgb3JpZ2luYWxseS4gT3RoZXIgZml4ZXMgaW5jbHVkZWQgaW4gdGhpcworCXBhdGNoOiAtIFJlbmFtZWQgZGVpbml0X3Bhc3NfcGVyc2lzdCgpIGludG8gc2h1dGRvd25fcGFzc19wZXJzaXN0KCkKKwlzdWNoIHRoYXQgdGhpcyBmdW5jdGlvbiBnZXRzIGNhbGxlZCBkdXJpbmcgYWdlbnQgc2h1dGRvd24uIC0gTWFkZQorCXN1cmUgdGhhdCBzaHV0ZG93bl9wYXNzX3BlcnNpc3QoKSBpcyBjYWxsZWQgYnkgdGhlIFdpbmRvd3MKKwlzbm1wZC5leGUgdG9vLiAtIFdpbmRvd3M6IGF2b2lkIGNhbGxpbmcKKwlDbG9zZUhhbmRsZShJTlZBTElEX0hBTkRMRV9WQUxVRSkuIC0gV2luZG93czogYXZvaWQgdGhhdCBjbG9zaW5nIGEKKwlwYXNzX3BlcnNpc3QgcGlwZSB0cmlnZ2VycyBhIGNyYXNoLiAtIFdpbmRvd3M6IHBhc3NfcGVyc2lzdDogY2xvc2UKKwloYW5kbGVzIG9mIGZpbmlzaGVkIHByb2Nlc3Nlcy4KKwlhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuYyB3aW4zMi9taWJfbW9kdWxlX3NodXRkb3duLmgKKyAgICAgIC0gU211eDogc2ltcGxpZnkgc211eF9saXN0X2RldGFjaCgpCisgICAgICAtIFVEUC1NSUI6IFJlcG9ydCB0aGUgcHJvcGVyIGFkZHJlc3MgaW4gdWRwTG9jYWxBZGRyZXNzIGluc3RlYWQgb2YKKwkwLjAuMC4wLiBNYWtlcyB0ZXN0IFQxNjBzbm1wbmV0c3RhdCBwYXNzIGFnYWluLiBGaXhlcyBhIGJ1ZworCWludHJvZHVjZWQgaW4gY29tbWl0IGM3NmZiOTZmNjVlMzNiYTJmZDIxMmE5MjFlOGMzODYxNTVlZTVjN2EuCisgICAgICAtIFtCVUcgMzQ2MDM2NF06IEZpeCB1c2Ugb2YgYmxvY2sgZmFjdG9yIHdoZW4gZGV0ZWN0aW5nIGVycm9yCisJY29uZGl0aW9ucworICAgICAgLSBbQlVHIDM0ODk2MzFdOiBGaXggaW5jb3JyZWN0IGhhbmRsaW5nIG9mIFVDRCBtb25pdG9yaW5nIGZsYWcKKyAgICAgIC0gW1BBVENIIDM0MTAwNTBdOiBTa2lwIGFscmVhZHktJ3Byb2Nlc3NlZCcgdmFyYmluZHMgQmFzZWQgb24gbWliMmMKKwlwYXRjaCBwcm92aWRlZCBieSBTdGVwaGVuIFR1cm5lcgorICAgICAgLSBbUEFUQ0ggMzQxMDA1OV06IEZpeCBzcGFyc2VseSBhdWdtZW50aW5nIHRyaWdnZXIgdGFibGVzIFBhdGNoCisJcHJvdmlkZWQgYnkgU3RlcGhlbiBUdXJuZXIKKyAgICAgIC0gW1BBVENIIDM0NDc0NDRdOiBGaXggU0lHX1BJUEUgaGFuZGxpbmcgUGF0Y2ggcHJvdmlkZWQgYnkgQmlsbAorCUZlbm5lcgorICAgICAgLSBbUEFUQ0ggMzQ0NzY3MV06IEZpeCBvdmVycmlkZSBoYW5kbGluZyBvZiBPSUQgdmFsdWVzIFBhdGNoIHN1cHBsaWVkCisJYnkgUGhpbGxpcCBPJ0Rvbm5lbGwKKyAgICAgIC0gW1BBVENIIDM0Nzk3NDBdOiBGaXggaHJTV1J1blBlcmYgc3RhdGlzdGljcworICAgICAgLSBbUEFUQ0ggMzQ4NzkxOV06IEZpeCBjb21waWxhdGlvbiB3aGVuIGNhY2hpbmcgaXMgZGlzYWJsZWQKKyAgICAgIC0gW1BBVENIIDM0OTU2OTddOiBTdG9yZSBwZXJzaXN0ZW50IHNubXBUYXJnZXQgdGFibGUgY2hhbmdlcworICAgICAgLSBCVUcgMzU0MjE4ODogQ29ycmVjdCBzeXNPUkRlc2NyIGZvciBzbm1wVXNtTUlCLiBUaGFua3MgdG8gRGF2ZQorCVZ1Y2ljaCBmb3IgcmVwb3J0aW5nIHRoaXMuCisgICAgICAtIEJVRyAzNTQyMzA3OiBDb3JyZWN0IHN5c09SSUQgZm9yIHNubXBNUERTdGF0cy4gVGhhbmtzIHRvIERhdmUKKwlWdWNpY2ggZm9yIHJlcG9ydGluZyB0aGlzLgorICAgICAgLSBCVUc6IDM1NDM4NjQ6IFJlbW92ZSBleHRyYW5lb3VzIGZ1bmN0aW9uIHR5cGUgKGFuZCBmaXggYSByZWxhdGVkCisJdHlwbykKKyAgICAgIC0gUmVtb3ZlZCBsaW1pdCBvZiAnZXhlYycgYW5kICdzaCcgZW50cmllcyBpbiBzbm1wZC5jb25mIFVzZSBkeW5hbWljCisJKHJlKWFsbG9jYXRpb24gaW5zdGVhZC4KKyAgICAgIC0gW1BBVENIIDM1NDMwMDBdOiBWYXJpb3VzIGZpeGVzIHRvIFJtb24gY29kZSBTdXBwbGllZCBieSBQYXRyaWNrCisJUml0dGVyCisKKyAgICBzbm1wZHg6CisgICAgICAtIFtQQVRDSCAzNDQ1NDM3XTogTG9nIEFnZW50WCBkaXNjb25uZWN0aW9ucyAoaW4gbGluZSB3aXRoCisJY29ubmVjdGlvbnMpIFBhdGNoIHByb3ZpZGVkIGJ5IEJpbGwgRmVubmVyCisKKyAgICBzbm1wdHJhcGQ6CisgICAgICAtIEF2b2lkIGNyYXNoIGR1cmluZyBzaHV0ZG93biBkdWUgdG8gaW52b2tpbmcgcGVybF9kZXN0cnVjdChOVUxMKQorICAgICAgLSBEbyBub3QgaW52b2tlIHNodXRkb3duX3BlcmwoKSBmcm9tIGluc2lkZSB0aGUgU0lHVEVSTSBoYW5kbGVyIHNpbmNlCisJdGhhdCBmYWlscyBpZiBTSUdURVJNIGlzIHJlY2VpdmVkIHdoaWxlIGEgUGVybCBoYW5kbGVyIGlzIGFjdGl2ZS4KKwlCYXNlZCBvbiBhIHBhdGNoIHBvc3RlZCBieSBKb2VsIEF2bmkgPGphdm5pQGFydWJhbmV0d29ya3MuY29tPgorICAgICAgLSBFbGltaW5hdGUgYW4gdW51c2VkIHZhcmlhYmxlIChOb3cpCisgICAgICAtIE1vdmUgdGhlIG1haW4gbG9vcCBjb2RlIGludG8gYSBuZXcgZnVuY3Rpb24KKyAgICAgIC0gUmVtb3ZlIHN1cGVyZmx1b3VzIGNhc3RzCisKKyAgICBzbm1wdHJhcGRfc3FsOgorICAgICAgLSBBdm9pZCB0aGF0IGEgbGlua2VyIGVycm9yIGlzIHRyaWdnZXJlZCBvbiBzeXN0ZW1zIHdoZXJlIG15X3Byb2duYW1lCisJaXMgbWlzc2luZyBpbiBsaWJteXNxbGNsaWVudCAoZS5nLiBGZWRvcmEgMTUgYW5kIDE2KS4gVGhpcyBpcyBhCisJYmFja3BvcnQgb2YgY29tbWl0IDlmNjUzZjcuCisKKyAgICBhaXg6CisgICAgICAtIEVsaW1pbmF0ZSBjb25maWd1cmUgd2FybmluZyByZWdhcmRpbmcgbGlicGVyZnN0YXQuaCBvbiBBSVggNi4xIGFuZAorCXVwCisgICAgICAtIFBBVENIIDM0MDM0MzM6IGZyb20gYmxlbnR6OiBJc3N1ZXMgd2l0aCBoclNXUnVuTmFtZSBhbmQgUGFyYW1ldGVycworCW9uIEFJWAkgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyCisJPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgIGFwcHMsIHNubXBsaWI6CisgICAgICAtIFBBVENIOiAyODM1NTc3OiBpZGVudGlmaWVkIGJ5ICJCYXJ0IFZhbiBBc3NjaGUiOiBSZXBsYWNlIFNOTVBfWkVSTworCW9mIGFycmF5cyB3aXRoIGEgbWVtc2V0LiBnaXQtc3ZuLWlkOgorCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDEKKwk3Nzk3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgICAgLSBCVUc6IDM1Mjk3Njg6IEJlIG1vcmUgY2FyZWZ1bCB3aGVuIHN0cmlwcGluZyBvZmYgbnVtZXJpYyBzdWZmaXhlcworCisgICAgYnVpbGQ6CisgICAgICAtIERvIG5vdCBnZW5lcmF0ZSBhbiBvdXRwdXQgZmlsZSBvbiBmYWlsdXJlIG1ha2Ugc3VwcG9zZXMgdGhhdCBubworCW91dHB1dCBpcyBnZW5lcmF0ZWQgaWYgdGhlIGNvbW1hbmQgZmFpbGVkLiBDaGFuZ2UgZmVhdHVyZS1yZW1vdmUgdG8KKwlmb2xsb3cgdGhhdCBwcmVzdW1wdGlvbi4KKyAgICAgIC0gQlVHOiAzNTMyMjM0OiBGaXggdHlwbyBpbiBsaWJ0b29sIHNjcmlwdCAoYWRkcmVzc2VkIHByb3Blcmx5IGluCisJbGlidG9vbCAyLjQuMikKKworICAgIGJ1aWxkaW5nOgorICAgICAgLSBBZGQgZGVwZW5kZW5jaWVzIG9uIEBGRUFUVVJFVEFSR1NAIHRvIG1ha2UgdGhlIHN1YnRhcmdldCB3b3JrIGFzCisJd2VsbC4KKyAgICAgIC0gQWRkIG1pc3NpbmcgZW5kIGNvbW1lbnRzIHRvIGZlYXR1cmUgaWZuZGVmcy4KKyAgICAgIC0gQWRkIHRhcmdldCB0byBidWlsZCBhZ2VudHh0cmFwIGZyb20gdGhlIHRvcGxldmVsCisgICAgICAtIEJ1aWxkIGZpeCBmb3Igc3lzdGVtcyBsYWNraW5nIGZpZWxkIG1zZ19mbGFncyBpbiBzdHJ1Y3QgbXNnaGRyCisJKGUuZy4gSVJJWCkKKyAgICAgIC0gQnVpbGQgZml4IGZvciBzeXN0ZW1zIGxhY2tpbmcgZmllbGRzIG1zZ19jb250cm9sL21zZ19mbGFncyBpbgorCXN0cnVjdCBtc2doZHIgKGJhY2twb3J0KQorICAgICAgLSBDb3JyZWN0IGRlcGVuZGVuY2llcyAtIHNpbmNlCisJYmY3NGZlYTY5ZjI0ZGM2ZTg1ZjkwOGYzZjQxZDE0MjZiMmUwOTY4OCBzbm1wY29uZiBpcyBsb2NhdGVkIGluCisJYnVpbGRkaXIsIG5vdCBzcmNkaXIKKyAgICAgIC0gQ29ycmVjdCBkZXBlbmRlbmNpZXMgLSBzaW5jZQorCWJmNzRmZWE2OWYyNGRjNmU4NWY5MDhmM2Y0MWQxNDI2YjJlMDk2ODggc25tcGNvbmYgaXMgbG9jYXRlZCBpbgorCWJ1aWxkZGlyLCBub3Qgc3JjZGlyIiBUaGlzIHJldmVydHMgY29tbWl0CisJOWVmYTQ2N2E5NzJiYjZlMWM3ZmJkYWYyZTI3NDI5ZDI5ZjRhYjg5ZS4KKyAgICAgIC0gTWFrZSB0aGUgdHJhbnNwb3J0IGNvbmZpZ3VyYXRpb24gY29kZSB3b3JrIGFnYWluIFByZXZpb3VzbHkgdGhlCisJdHJhbnNwb3J0IGluaGVyaXRhbmNlIHByb2Nlc3NpbmcgY29kZSByYW4gd2l0aAorCU5FVFNOTVBfRkVBVFVSRV9DSEVDS0lORyBzZXQuIEluIHRoaXMgbW9kZSB0aGUgZmlsZQorCW5ldC1zbm1wL2ZlYXR1cmUtZGV0YWlscy5oIGlzIHJlcXVpZXJlZC4gVGhhdCBmaWxlIGlzIGNyZWF0ZWQKKwlkdXJpbmcgdGhlIGZpcnN0IG1ha2UgcnVuLCBhbmQgdGhhdCBoYXBwZW5zIGFmdGVyIGNvbmZpZ3VyZSBpcyBydW4uCisJQ2hhbmdlIHRoaXMgdG8gdW5kZWZpbmUgTkVUU05NUF9NSU5JTUFMX0NPREUsIGVmZmVjdGl2ZWx5IHR1cm5pbmcKKwlvZmYgZmVhdHVyZSBzdXBwb3J0IGR1cmluZyB0cmFuc3BvcnQgY29uZmlndXJhdGlvbiBpbiBvcmRlciB0byBtYWtlCisJaXQgd29yayBhdCBhbGwuCisgICAgICAtIFJ1biBsaWJ0b29sIC0tbW9kZT1maW5pc2ggb24gdGhlIHJpZ2h0IGRpcmVjdG9yeQorCisgICAgbGlibmV0c25tcDoKKyAgICAgIC0gUEFUQ0ggMzM5NDU4NjogZnJvbSByd2EtY286IGZpbGUgZGVzY3JpcHRvciBsZWFrIGluIHJlYWRfY29uZmlnCisJKCtmaXgpIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAgbGlic25tcDoKKyAgICAgIC0gQ2hhbmdlZCB0aGUgdHlwZSBvZiB0aGUgZm91cnRoIGFyZ3VtZW50IG9mIG5ldHNubXBfc2V0X3Jvd19jb2x1bW4oKQorCWZyb20gY29uc3QgY2hhciogdG8gY29uc3Qgdm9pZCogc3VjaCB0aGF0IG5vIGNhc3QgaXMgbmVjZXNzYXJ5IHdoZW4KKwlwYXNzaW5nIGFub3RoZXIgZGF0YXR5cGUgdGhlbiBjaGFyKiBvciBjb25zdCBjaGFyKi4KKworICAgIG1hbjoKKyAgICAgIC0gW0JVRyAzNDkwNzA4XTogQ2xhcmlmeSB1c2Ugb2YgY29tbW9uIGNvbW1hbmQtbGluZSBvcHRpb25zCisgICAgICAtIEJVRzogMzUzNTI2OTogRG9jdW1lbnQgdXNlIG9mIFtzbm1wXSBmb3IgY2xpZW50LXNpZGUgdG9vbHMuCisKKyAgICBwYXNzOgorCisgICAgcGVybDoKKyAgICAgIC0gQWRkIGFnZW50Ojp1cHRpbWUoKQorICAgICAgLSBFbmFibGUgc2VuZGluZyBTTk1QdjIgdHJhcHMgd2l0aCBhbiBlbXB0eSB2YXJiaW5kIGxpc3QKKyAgICAgIC0gRml4IHNwZWxsaW5nIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBTTk1QIG1vZHVsZQorICAgICAgLSBGaXhlZCBzZWdtZW50YXRpb24gZmF1bHQgd2hlbiBoYW5kbGVyIHJlZ2lzdHJhdGlvbiBmYWlscy4gV2hlbgorCW5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlciBmYWlscywgaXQgZnJlZXMgaXRzIHJlZ2luZm8gLT4KKwluc2Focl9ERVNUUk9ZIChhbmQgYW55IG90aGVyIGZ1bmN0aW9uKSBtdXN0IG5vdCBkZXJlZmVyZW5jZSBpdC4KKyAgICAgIC0gUGVybDogTWFrZSBzdXJlIHRoYXQgdGhlIGNvbnN0YW50IFNOTVBfREVGQVVMVF9SRVRSSUVTIGlzCisJcmVjb2duaXplZC4gU05NUCBtb2R1bGU6IEFkZCBjb25zdGFudHMKKwlORVRTTk1QX0NBTExCQUNLX09QX1JFQ0VJVkVEX01FU1NBR0UgYW5kCisJTkVUU05NUF9DQUxMQkFDS19PUF9USU1FRF9PVVQuIFdoZW4gdGhlIE5ldC1TTk1QIFBlcmwgbW9kdWxlcyBhcmUKKwlidWlsdCBvbiBXaW5kb3dzIHdpdGggTVNWQyBvciBNaW5HVyBpdCBpcyBwb3NzaWJsZSB0aGF0IGVhY2ggdGhlc2UKKwlhcmUgbGlua2VkIHdpdGggYW5vdGhlciB2ZXJzaW9uIG9mIHRoZSBNU1ZDIHJ1bnRpbWUgbGlicmFyeSB0aGFuCisJdGhlIFBlcmwgaW50ZXJwcmV0ZXIgaXRzZWxmLiBJbiB0aGF0IGNhc2UgdGhlICJlcnJubyIgdmFyaWFibGUgdXNlZAorCWluc2lkZSAueHMgc291cmNlIGZpbGVzIGlzIGFub3RoZXIgdmFyaWFibGUgdGhhbiB0aGUgJCEgdmFyaWFibGUgaW4KKwkucG0gZmlsZXMuIE9yOiBhc3NpZ25tZW50cyB0byAiZXJybm8iIGluIGEgLnhzIGZpbGUgZG8gbm90IG1vZGlmeQorCXRoZSAiJCEiIFBlcmwgdmFyaWFibGUgVGhpcyBwYXRjaCBhdm9pZHMgdXNpbmcgImVycm5vIiBieSBtb2RpZnlpbmcKKwl0aGUgZGlmZmVyZW50IGNvbnN0YW50KCkgZnVuY3Rpb25zIHN1Y2ggdGhhdCB0aGVzZSByZXR1cm4gYQorCXR3by1lbGVtZW50IGFycmF5IGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgc2NhbGFyIGFuZCBzZXR0aW5nIGVycm5vLgorCisgICAgcHl0aG9uOgorICAgICAgLSBBdm9pZCB0aGF0IGFuIFNOTVAgc2V0IHdpdGggVXNlRW51bXMgZW5hYmxlZCBjYXVzZXMgYSBzZWdtZW50YXRpb24KKwlmYXVsdAorICAgICAgLSBbUEFUQ0ggMzQzMzg0Nl06IEZpeCBmb3IgdXNlIHdpdGggcHl0aG9uIDIuNAorICAgICAgLSBCVUc6IDM1MzU5Njc6IEZpeCBtZW1vcnkgbGVhayAtIHNubXBfe3Nlc3NffWVycm9yIGFsbG9jYXRlcyB0aGUKKwlvdXRwdXQgYnVmZmVyCisKKyAgICB0ZXN0aW5nOgorICAgICAgLSBBZGQgYSB0ZXN0IGZvciBzZV9zdG9yZV9saXN0KCkKKyAgICAgIC0gQWRkIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDE1NGRpc21hbnBpbmdtaWJfc2ltcGxlCisgICAgICAtIEF2b2lkIGZhbHNlIG5lZ2F0aXZlIGZvciBUMTE0YWdlbnR4YWdlbnR4dHJhcF9zaW1wbGUgY2F1c2VkIGJ5IHRoZQorCXRlc3QgcmVzdWx0IGJlaW5nIHByZXNlbnQgaW4gdGhlIGhleCBkdW1wICgibW9zdGx5X2hhcm1sZXNzIikKKyAgICAgIC0gQ29udmVydCBzbm1wbGliL3Rlc3RfYmluYXJ5X2FycmF5LmMgaW50byB0d28gdW5pdCB0ZXN0cworICAgICAgLSBGaXggUGVybCByZWdyZXNzaW9uIHRlc3QgZmFpbHVyZXMgQWxsIFBlcmwgcmVncmVzc2lvbiB0ZXN0cyBwYXNzCisJbm93IG9uIExpbnV4IGFuZCBvbiBXaW5kb3dzIChNU1ZDKS4KKyAgICAgIC0gTWFrZSB0aGUgYXNuMSB0ZXN0IHBhc3MgZXZlbiBpZiBzdXBwb3J0IGZvciBvcGFxdWUgdHlwZXMgYXJlCisJcmVtb3ZlZC4KKyAgICAgIC0gUGVybCByZWdyZXNzaW9uIHRlc3RzOiBEb24ndCBmYWlsIHNraXBwZWQgdGVzdHMuCisgICAgICAtIFByb3RlY3QgdGhlIHVzZSBvZiAkT1NUWVBFIHRvIGVuc3VyZSB0aGF0ICd0ZXN0JyBnZXQgZW5vdWdoCisJcGFyYW1ldGVycy4KKyAgICAgIC0gUmVtb3ZlIGFuIGluY29ycmVjdCBjb21tZW50IGZyb20gc2ltcGxlX2V2YWxfdG9vbHMuc2gKKyAgICAgIC0gUmVtb3ZlIHVudXNlZCB2YXJpYWJsZQorICAgICAgLSBSZXF1aXJlIGEgc2VtaWNvbG9uIGFmdGVyIE9LKCksIE9LRigpIGFuZCBQTEFOKCkgQWxzbywgbGV0IE9LRigpCisJZW1pdCBhIHNpbmdsZSBsaW5lIG9mIG91dHB1dCBzdWNoIHRoYXQgYWxsIG91dHB1dCBpdCBwcm9kdWNlcyBpcworCXZpc2libGUgaW4gdGhlIG91dHB1dCBvZiAibWFrZSB0ZXN0Ii4KKyAgICAgIC0gW0JVRyAzNDc0NTkwXTogRG9uJ3QgbWF0Y2ggdW5kZXJzY29yZXMgd2l0aGluIHRoZSBzb3VyY2Ugcm9vdAorCWZpbGVuYW1lCisgICAgICAtIEFkZCB0ZXN0IGNhc2VzIGZvciBzbm1wX3NlcnZpY2UKKworICAgIHVuc3BlY2lmaWVkOgorICAgICAgLSBBZGRlZCBDVkZTIChDZW50cmFWaXNpb24gRmlsZSBTeXN0ZW0pIHRvIGhyU3RvcmFnZVRhYmxlIGFuZAorCWhyRlNUYWJsZS4KKyAgICAgIC0gUmVtb3ZlZCBjb3VudGVyLTY0IGVycm9yIG1lc3NhZ2VzLiAgIFRoZXNlIG1lc3NhZ2VzIGRvIG5vdCBzYXkKKwllbnl0aGluZyB1c2VmdWwsIGNhbGxlciBzaG91bGQgY2hlY2sgdGhlaXIgcmV0dXJuIHZhbHVlIGFuZCByZXBvcnQKKwlpdC4KKyAgICAgIC0gQWRkZWQgT0NGUzIgKE9yYWNsZSBDbHVzdGVyIEZTKSB0byBoclN0b3JhZ2VUYWJsZSBhbmQgaHJGU1RhYmxlCisgICAgICAtIFtCVUcgMzQ0NDkzOV06IEJVRzogMTc5Njg4Njogc25tcGxpYjogQXZvaWQgdGhhdAorCXNwcmludF9yZWFsbG9jX29jdGV0X3N0cmluZygpIGVtYmVkcyB1bnByaW50YWJsZSBjb250cm9sIGNoYXJhY3RlcnMKKwlvciBiaW5hcnkgemVyb2VzIGluIGl0cyBvdXRwdXQuIFRoaXMgYmVoYXZpb3IgY291bGQgY2F1c2UgdHJ1bmNhdGVkCisJb3V0cHV0IGluIHNubXB0cmFwZC4KKyAgICAgIC0gW0JVRyAzNDUyMDY5XTogRml4IHNubXB0cmFwX29pZCBkZWNsYXJhdGlvbiBpbiBtaWIyYyBnZW5lcmF0ZWQgY29kZQorCVRoaXMgYnVnIHdhcyBpbnRyb2R1Y2VkIGNvbnNpZGVyYWJsZSB0aW1lIGFnby4gSXQgZGlkIGFscmVhZHkgZXhpc3QKKwlhdCB0aGUgdGltZSB0aGUgNS42IGJyYW5jaCB3YXMgY3JlYXRlZCAoc2VlIGFsc28gY29tbWl0CisJMGVjMDg4YWZhMjdjZmRhNGU2ZWE3OGFhZTdjZmM1NTA3NTY0ZWRkZSkuCisgICAgICAtIFtCVUcgMzQ1NDE2OF06IGNvbmZpZ3VyZTogRml4IGJ1aWxkaW5nIHdpdGggLS1lbmFibGUtcmVhZC1vbmx5CisgICAgICAtIFtQQVRDSCAzNDE4NjQ5XTogSE9TVC1SRVNPVVJDRVMtTUlCOiBVc2UgcGNsb3NlKCkgaW5zdGVhZCBvZgorCWZjbG9zZSgpIHRvIGNsb3NlIGEgcGlwZS4KKyAgICAgIC0gW0JVRyAzNTQwNjIxXTogZGlzdDogQWRkIG1pc3NpbmcgUHJvdmlkZXM6IHRvIG5ldC1zbm1wLXBlcmxtb2RzIFJQTQorCXNwZWMKKworICAgIEJTRDoKKworICAgIEJ1ZyAzMTUyODQxOgorICAgICAgLSBEbyBub3QgaW5zdGFsbCB0aGUgdXRpbF9mdW5jcyBzdWJoZWFkZXJzIHRoYXQgd2VyZSByZW1vdmVkIGluIDUuNworICAgICAgLSBJbnN0YWxsIHV0aWxfZnVuY3Mgc3ViaGVhZGVycworICAgICAgLSBJbnN0YWxsIHV0aWxfZnVuY3Mgc3ViaGVhZGVycyBpbnRyb2R1Y2VkIGluIDUuNgogCiAgICAgQ3lnd2luOgogICAgICAgLSBNYWtlIGRhdGVfbl90aW1lKCkgcHJvZHVjZSB0aW1lIHpvbmUgaW5mb3JtYXRpb24KLSAgICAgIC0gRml4IGdldF91cHRpbWUoKSAvIGhyU3lzdGVtVXB0aW1lIGltcGxlbWVudGF0aW9uCisKKyAgICBDeXdpbjoKKyAgICAgIC0gQWdlbnQ6IEltcGxlbWVudCBnZXRfdXB0aW1lKCkgc3VjaCB0aGF0IHF1ZXJ5aW5nCisJSE9TVC1SRVNPVVJDRVMtTUlCOjpoclN5c3RlbVVwdGltZSByZXR1cm5zIGEgbm9uLXplcm8gdmFsdWUuCiAKICAgICBGcmVlQlNEOgotICAgICAgLSBbUEFUQ0ggMzQ4OTM4N106IEluc3RhbGwgRnJlZUJTRCAxMCBoZWFkZXIgZmlsZSAocGx1cyBvdGhlciBtaXNzaW5nIHZlcnNpb25zKQogICAgICAgLSBSZXN0b3JlIElQX1JFQ1ZEU1RBRERSIGZ1bmN0aW9uYWxpdHkuCisgICAgICAtIFNubXBkICsgYXBwczogU2VuZGluZyBVRFAgcGFja2V0cyB3b3JrcyBhZ2FpbiBmb3Igbm9uLXJvb3QgdXNlcnMKKyAgICAgIC0gW1BBVENIIDM0ODkzODddOiBJbnN0YWxsIEZyZWVCU0QgMTAgaGVhZGVyIGZpbGUgKHBsdXMgb3RoZXIgbWlzc2luZworCXZlcnNpb25zKQogCiAgICAgTGludXg6Ci0gICAgICAtIFtQQVRDSCAzMjA1ODExXTogT3B0aW9uIHRvIHNraXAgZmQvbG9vcC9yYW0gZGV2aWNlcyBpbiBkaXNrSU9UYWJsZQotICAgICAgLSBbUEFUQ0ggMzUyNTk5OF06IERvbid0IHVzZSBhbiB1bmluaXRpYWxpc2VkIHZhbHVlIGluIGVycm9yIG1lc3NhZ2UKKyAgICAgIC0gUEFUQ0g6IDM1MjU5OTg6IERvbid0IHVzZSBhbiB1bmluaXRpYWxpc2VkIHZhbHVlIGluIGVycm9yIG1lc3NhZ2UKKyAgICAgIC0gW1BBVENIIDM1MzY0MjBdOiBFbnN1cmUgc25kL3JjdiBtZW1vcnkgYnVmZmVycyBhcmUgc3VpdGFibHkgYWxpZ25lZAorCVBhdGNoIHByb3ZpZGVkIGJ5IFR5bGVyIE9sbXN0ZWFkCiAKICAgICBNaW5HVzoKLSAgICAgIC0gQXZvaWQgInByYWdtYSBjb21tZW50IiB3YXJuaW5ncyBpbiA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+Ci0gICAgICAtIE1hZGUgcmVncmVzc2lvbiB0ZXN0IG91dHB1dCBpbmRlcGVuZGVudCBvZiBXaW5kb3dzIHJlZ2lzdHJ5IHNldHRpbmdzCisgICAgICAtIE5ldC1TTk1QIFBlcmwgbW9kdWxlcyBidWlsZCBhZ2Fpbi4KKyAgICAgIC0gU3VwcG9ydCB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBvZiByZWNlbnQgU2hpbmluZyBMaWdodCBPcGVuU1NMCisJYmluYXJ5IGRpc3RyaWJ1dGlvbnMKKyAgICAgIC0gVGVzdGluZzogRml4IGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRlc3QgZnJhbWV3b3JrCisgICAgICAtIFRlc3Rpbmc6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSB0ZXN0IHJ1bm5lcgorICAgICAgLSBUZXN0aW5nOiBNYWtlIHRlc3QgVDEzMHNubXB2MXZhY21nZXRfc2ltcGxlIHBhc3MKKyAgICAgIC0gVGVzdGluZzogTWFrZSB0aG9zZSByZWdyZXNzaW9uIHRlc3RzIHBhc3MgZm9yIHdoaWNoIFNOTVBDT05GUEFUSAorCWFuZC9vciBTTk1QX1BFUlNJU1RFTlRfRElSIG1hdHRlcgorICAgICAgLSBUZXN0aW5nOiBNYWtlIHVuaXQtdGVzdHMvVDAxNGdldGhvc3RieWFkZHJfY2xpYiBwYXNzCisgICAgICAtIFRlc3Rpbmc6IE1ha2UgdW5pdC10ZXN0cy9UMTAycGR1X2J1aWxkX2NsaWIgcGFzcy4KKyAgICAgIC0gVGVzdGluZzogT2J0YWluIHRoZSBNU1lTIHBhdGggZnJvbSB0aGUgZW52aXJvbm1lbnQKIAotICAgIE5ldEJTRDoKLSAgICAgIC0gVXBkYXRlIG1lbW9yeSBhbmQgQ1BVIHN0YXRpc3RpY3MgaGFuZGxpbmcKLQotICAgIE9wZW5CU0Q6Ci0gICAgICAtIFN1cHBvcnQgdXBkYXRpbmcgdGhlIHJvdXRpbmcgdGFibGUKKyAgICBXaW4zMjoKKyAgICAgIC0gQXZvaWQgdGhhdCBjb21waWxpbmcgdGhlIGhlYWRlciBmaWxlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKwl3aXRoIHRoZSBNaW5HVyBnY2MgY29tcGlsZXIgdHJpZ2dlcnMgd2FybmluZ3MgYWJvdXQgInByYWdtYQorCWNvbW1lbnQiLgorICAgICAgLSBBdm9pZCB0aGF0IHRoZSBQQUNLQUdFXyogbWFjcm9zIGRlZmluZWQgaW4KKwk8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhdXNlIHRyb3VibGUgd2hlbiBpbmNsdWRpbmcgdGhpcworCWhlYWRlciBpbiBhIHBhY2thZ2UgdGhhdCB1c2VzIHRoZSBHTlUgYXV0b3Rvb2xzLgorICAgICAgLSBCdWlsZGluZzogQnVpbGRzIG5vdyBjb3JyZWN0bHkgd2l0aCBhIDY0LWJpdCBjb21waWxlci4gZ2l0LXN2bi1pZDoKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxCisJOTQ1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICAgIC0gU25tcGQ6IFJlbW92ZSBkbG1vZAogCiAgICAgV2luZG93czoKLSAgICAgIC0gQXZvaWQgcHJvYmxlbXMgaWYgTmV0LVNOTVAgUGVybCBtb2R1bGVzIGFyZSBidWlsdCB3aXRoIGEgZGlmZmVyZW50Ci0JdmVyc2lvbiBvZiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyB0aGFuIHRoYXQgdXNlZCBmb3IgQWN0aXZlUGVybAotICAgICAgLSBBdm9pZCBwcm9ibGVtcyB3aXRoIFBBQ0tBR0VfKiBtYWNyb3Mgd2hlbiB1c2luZyBHTlUgYXV0b3Rvb2xzLgotICAgICAgLSBOb3cgYnVpbGRzIGNvcnJlY3RseSB3aXRoIGEgNjQtYml0IGNvbXBpbGVyLgotICAgICAgLSBidWlsZC5iYXQ6IEdlbmVyYXRlIFBEQiBmaWxlcyBpbiByZWxlYXNlIG1vZGUuCi0gICAgICAtIGJ1aWxkLmJhdDogSW5zdGFsbCBuZXRzbm1wLmRsbCBiZWZvcmUgcnVubmluZyBQZXJsIHJlZ3Jlc3Npb24gdGVzdHMKLSAgICAgIC0gRGVwcmVjYXRlZCBsaWJzbm1wLmRlZiAtIHVzZSBORVRTTk1QX0lNUE9SVCBpbnN0ZWFkCi0gICAgICAtIEZpeCB3aW5FeHRETEwgY29tcGlsZXIgd2FybmluZ3MgKGZvbGxvd2luZyB1X2xvbmcgb2lkIHR5cGVkZWYpCi0gICAgICAtIE1ha2UgbGlua2luZyB3aXRoIHJlY2VudCBPcGVuU1NMIGJpbmFyaWVzIHN1Y2NlZWQuCi0gICAgICAtIE1ha2UgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKCkgcm9idXN0IGFnYWluc3QgbWVtYWxsb2MgZmFpbHVyZXMuCi0gICAgICAtIFBlcmwgbW9kdWxlcyBidWlsZCBub3cgd2l0aCBJUHY2IGVuYWJsZWQuCi0gICAgICAtIFNubXBkOiBSZW1vdmUgZGxtb2QKKyAgICAgIC0gQnVpbGRpbmcgKGJ1aWxkLmJhdCk6IEluc3RhbGwgbmV0c25tcC5kbGwgYmVmb3JlIHJ1bm5pbmcgdGhlIFBlcmwKKwlyZWdyZXNzaW9uIHRlc3RzIHN1Y2ggdGhhdCB0aGUgcmVncmVzc2lvbiB0ZXN0cyBhcmUgcnVuIHdpdGggdGhlCisJY29ycmVjdCB2ZXJzaW9uIG9mIG5ldHNubXAuZGxsLgorICAgICAgLSBNU1ZDOiBBdm9pZCB0aGF0IHRoZSB0eXBlZGVmcyBpbiA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisJY29uZmxpY3Qgd2l0aCB0aG9zZSBpbiA8c3RkaW50Lmg+IGZyb20gdGhlIG1zaW50dHlwZXMgcHJvamVjdAorICAgICAgLSBNU1ZDOiBMaW5rIHdpdGggcHJvcGVyIGxpYmVheTMyIGxpYnJhcnkKKyAgICAgIC0gTVNWQzogV2hlbiBsaW5raW5nIHdpdGggT3BlblNTTCwgbGluayB3aXRoIHVzZXIzMi5saWIgdG9vCisgICAgICAtIE1ha2UgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKCkgcm9idXN0IGFnYWluc3QgbWVtb3J5IGFsbG9jYXRpb24KKwlmYWlsdXJlcy4gTWFrZSBORVRTTk1QX0xBUkdFX0ZEX1pFUk8oKSB1c2UgbWVtc2V0KCkgb24gVW5peCBzeXN0ZW1zCisJaW5zdGVhZCBvZiBhbiBleHBsaWNpdCBsb29wLiBNYWtlIHN1cmUgdGhhdCBvbiBVbml4IHN5c3RlbXMKKwluZXRzbm1wX2xhcmdlX2ZkX2NscigpIGRvZXNuJ3QgdHJ5IHRvIHJlYWQgbWVtb3J5IGl0IGlzbid0IGFsbG93ZWQKKwl0byByZWFkIGlmIHRoZSBmaXJzdCBhcmd1bWVudCBlcXVhbHMgLTEgKGEgdmFsdWUgdGhhdCBzaG91bGRuJ3QgYmUKKwlwYXNzZWQgYnkgdGhlIGNhbGxlcikuIE1ha2UgbmV0c25tcF9sYXJnZV9mZF9pc19zZXQoKSByZXR1cm4gZmFsc2UKKwlvbiBVbml4IHN5c3RlbXMgaWYgdGhlIGZpcnN0IGFyZ3VtZW50IGVxdWFscyAtMSAoYSB2YWx1ZSB0aGF0CisJc2hvdWxkbid0IGJlIHBhc3NlZCBieSB0aGUgY2FsbGVyKS4gTWFrZQorCW5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSgpIHNocmluayBiZWhhdmlvciBjb3JyZWN0LgorICAgICAgLSBQZXJsIChidWlsZC5iYXQpOiBXaGVuIGluc3RhbGxpbmcgZGV2ZWxvcG1lbnQgZmlsZXMsIGluc3RhbGwgdGhlCisJUERCIGZpbGVzIHRvby4KKyAgICAgIC0gUmVtb3ZlIHN1cGVyZmx1b3VzIGxpbmsgbGlicmFyaWVzIGZyb20gcHJvamVjdCBmaWxlcyAoKi5kc3ApCiAgICAgICAtIFNubXB0cmFwZDogTWFrZSB0aGUgSVAgYWRkcmVzcyB0byBob3N0bmFtZSBjb252ZXJzaW9uIHdvcmsKKyAgICAgIC0gVGVzdGluZzogcGVybDogRml4IGFuIGluY29ycmVjdCBtZXNzYWdlIHByaW50ZWQgd2hpbGUgcnVubmluZyB0aGUKKwlQZXJsIG1vZHVsZSByZWdyZXNzaW9uIHRlc3RzCiAKIAotKjUuNi4xKgogCi0gICAgZ2VuZXJhbDoKLSAgICAgIC0gVXBncmFkZWQgRFRMUyBzdXBwb3J0IGZyb20gYWxwaGEgdG8gZnVsbDsgbWVudGlvbiB0aGF0IHRzbSBpcwotCW5lZWRlZCBmb3IgVExTIHRvbwogCisqNS43LjEqCisKKyAgICBzbm1wbGliOgorICAgICAgLSBGaXggYSBjcmFzaCB0aGF0IGNvdWxkIGJlCisgICAgICAtIHR3ZWFrIHBhdGNoIDMwNDQ4ODggdG8gcmVzdG9yZQorCisgICAgc25tcGQ6CisgICAgICAtIFtQQVRDSCAzMzg2NjMzXTogZml4IGludGVnZXIgb3ZlcmZsb3cgaW4gZGlzayBwZXJjZW50IGNhbGN1bGF0aW9ucworICAgICAgLSBNYWtlCisgICAgICAtIFJlc3RvcmUgc3RvcmFnZSB0YWJsZXMgb24gTGludXgKKyAgICAgIC0gcnVuIHNpZ25hbCBoYW5kbGVycyB3aGVuIHNlbGVjdCgpCisKKyAgICBzbm1wdHJhcGQ6CisgICAgICAtIEFkZCBtaXNzaW5nIG5ld2xpbmUKKyAgICAgIC0gSW52b2tlIHNodXRkb3duX3BlcmwoKSB3aGVuCisKKyAgICBidWlsZGluZzoKKyAgICAgIC0gW1BBVENIIDMzODM5NTFdOiBGaXggLVd1bnVzZWQgY29tcGlsZSB3YXJuaW5ncyB3aXRoIEZyZWVCU0QvTmV0QlNECisJU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisgICAgICAtIGJ1aWxkIGZpeAorICAgICAgLSBidWlsZCBmaXggZm9yIHN5c3RlbXMgbGFja2luZworCisgICAgbGlibmV0c25tcDoKKyAgICAgIC0gW1BBVENIIDMzODcxMzldOiBmcm9tCisKKyAgICBtYW46CisgICAgICAtIFtQQVRDSCAzMzEyODYxXTogTWFuIHBhZ2VzCisKKyAgICB0ZXN0aW5nOgorICAgICAgLSBDaGFuZ2VkCisgICAgICAtIENoZWNrIFBJRCBmaWxlIGV4aXN0ZW5jZSBhZnRlciBoYXZpbmcgcmVhZCBpdCBpbnN0ZWFkIG9mIGJlZm9yZS4KKwlUaGlzIGZpeGVzIHRoZSByYWNlIGNvbmRpdGlvbiB3aGVyZSB0aGUgUElEIGZpbGUgZGlzYXBwZWFyZWQgYWZ0ZXIKKwl0aGUgZXhpc3RlbmNlIGNoZWNrIGFuZCBiZWZvcmUgaXQgd2FzIHJlYWQuCisgICAgICAtIE1ha2UgdGhlIFNOTVBfVkVSQk9TRT0xIG91dHB1dCBldmVuIG1vcmUgdmVyYm9zZS4KKworICAgIHVuc3BlY2lmaWVkOgorICAgICAgLSBtaW5vciBORVdTIHBvbGlzaAorCisgICAgUGVybDoKKyAgICAgIC0gUmVtb3ZlIGZpbGUgcGVybC9OZXRTTk1QLnhzCisKKyAgICBXaW4zMjoKKyAgICAgIC0gQWRkIHN1cHBvcnQgZm9yCisgICAgICAtIERvY3VtZW50IGhvdyB0byBidWlsZCA2NC1iaXQKKyAgICAgIC0gRG9jdW1lbnRlZCBob3cgdG8gdXNlIGJ1aWxkLmJhdCB3aXRoCisgICAgICAtIHdpbkV4dERMTDogSW52b2tlCisKKyAgICBXaW5kb3dzOgorICAgICAgLSBBdm9pZCB0aGF0IGlmCisgICAgICAtIFJlbW92ZSBvdXRkYXRlZCBpbnN0cnVjdGlvbnMgYWJvdXQKKworKjUuNyoKICAgICBzbm1wbGliOgogICAgICAgLSBBZGRlZCBmdW5jdGlvbiBuZXRzbm1wX2RlbGV0ZV90YWJsZV9kYXRhX3NldCgpLgogICAgICAgLSBBZGRlZCBmdW5jdGlvbiBuZXRzbm1wX2RlbGV0ZV90YWJsZV9kYXRhX3NldCgpLiBBZGRlZCBkZWNsYXJhdGlvbgpAQCAtMTIzLDIwICs2MjYsMzkgQEAKICAgICAgIC0gQWRkZWQgZnVuY3Rpb24gbmV0c25tcF9kZWxldGVfdGFibGVfZGF0YV9zZXQoKS4gQWRkZWQgZGVjbGFyYXRpb24KIAlmb3IgdGhlIGZ1bmN0aW9uIG5ldHNubXBfdGFibGVfZGF0YV9kZWxldGVfdGFibGUoKSBpbiBhIHB1YmxpYwogCWFnZW50IGhlYWRlciBmaWxlLiBGaXhlZCBtZW1vcnkgbGVhayBpbgotCW5ldHNubXBfdGFibGVfZGF0YV9kZWxldGVfdGFibGUoKS4gKEJhY2twb3J0ZWQgcjE5NDUwIGFuZCByMTk0NTQKLQlmcm9tIHRydW5rLikKKwluZXRzbm1wX3RhYmxlX2RhdGFfZGVsZXRlX3RhYmxlKCkuCisgICAgICAtIEFkZGVkIGZ1bmN0aW9uIG5ldHNubXBfZGVsZXRlX3RhYmxlX2RhdGFfc2V0KCkuIEFkZGVkIGRlY2xhcmF0aW9uCisJZm9yIHRoZSBmdW5jdGlvbiBuZXRzbm1wX3RhYmxlX2RhdGFfZGVsZXRlX3RhYmxlKCkgaW4gYSBwdWJsaWMKKwlhZ2VudCBoZWFkZXIgZmlsZS4gRml4ZWQgbWVtb3J5IGxlYWsgaW4KKwluZXRzbm1wX3RhYmxlX2RhdGFfZGVsZXRlX3RhYmxlKCkuIEZpeGVkIG1lbW9yeSBsZWFrIHRyaWdnZXJlZCBieQorCXVucmVnaXN0ZXJpbmcgYSB0YWJsZSBoYW5kbGVyLgogICAgICAgLSBBZGRlZCBtYWNybyBuZXRzbm1wX3N0YXRpY19hc3NlcnQoKS4KKyAgICAgIC0gQWRkZWQgbmV0c25tcF9taWJfaGFuZGxlci5kYXRhX2Nsb25lLCBhIGZ1bmN0aW9uIHBvaW50ZXIgdGhhdAorCWRlZmluZXMgaG93IHRvIGNsb25lIG5ldHNubXBfbWliX2hhbmRsZXIubXl2b2lkLiBNdXN0IGJlIGRlZmluZWQgaWYKKwlhbmQgb25seSBpZiBkYXRhX2ZyZWUgaXMgc2V0LiBUaGUgZnVuY3Rpb24gbmV0c25tcF9oYW5kbGVyX2R1cCgpCisJZG9lcyBub3cgY2xvbmUgTUlCIGhhbmRsZXIgcHJpdmF0ZSBkYXRhIGlmIGRhdGFfY2xvbmUoKSBpcyBzZXQuCisJUHJldmlvdXNseSBhZnRlciBkdXBsaWNhdGluZyBhIE1JQiBoYW5kbGVyIGFuZCB1bnJlZ2lzdGVyaW5nIG9uZSBvZgorCXRoZSB0d28gTUlCIGhhbmRsZXJzLCB0aGUgcHJpdmF0ZSBkYXRhIHBvaW50ZXIgKG15dm9pZCkgb2YgdGhlCisJb3RoZXIgYmVjYW1lIGEgZGFuZ2xpbmcgcG9pbnRlci4gTm90ZTogYWRkaXRpb24gb2YKKwluZXRzbm1wX21pYl9oYW5kbGVyLmRhdGFfY2xvbmUgaXMgYW4gQUJJIGNoYW5nZS4KICAgICAgIC0gQWRkZWQgc25tcF9zZXNzX3Nlc3Npb25fbG9va3VwKCkuCisgICAgICAtIEFkZGVkIHRoZSBmdW5jdGlvbiBuZXRzbm1wX2NoZWNrX2RlZmluZWRuZXNzKCksIHdoaWNoIGhlbHBzIHRvIGZpbmQKKwl0aGUgY2F1c2Ugb2YgdW5kZWZpbmVkIHZhbHVlIGVycm9ycyBhcyByZXBvcnRlZCBieSBWYWxncmluZC4KICAgICAgIC0gQXZvaWQgdGhhdCBWYWxncmluZCBjb21wbGFpbnMgYWJvdXQgdW5pbml0aWFsaXplZCBkYXRhIGZvciB0aGUKIAlidWZmZXJzIHJldHVybmVkIGJ5IG5ldHNubXBfY2FsbGJhY2tfcmVjdigpIGFuZAogCW5ldHNubXBfY2FsbGJhY2tfaG9va19idWlsZCgpLgogICAgICAgLSBCZSBjb25zdCBjb3JyZWN0IG92ZXIgY2FsbHMgdG8gc3RyKiBmdW5jdGlvbnMuCiAgICAgICAtIENoYW5nZWQgdGhlIGFyZ3VtZW50IHR5cGUgb2YgZGVidWdfcmVnaXN0ZXJfdG9rZW5zKCkgZnJvbSBjaGFyICoKLQlpbnRvIGNvbnN0IGNoYXIgKi4gKEJhY2twb3J0ZWQgcjE5NjY1IGFuZCByMTk2NjYgZnJvbSB0aGUgdHJ1bmsuKQorCWludG8gY29uc3QgY2hhciAqLgorICAgICAgLSBDaGVjayB0aGF0IHRoZSBhcmd1bWVudCB0byBuZXRzbm1wX3RyYW5zcG9ydF9jb3B5IGlzIG5vbi1OVUxMCiAgICAgICAtIENoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2Ygc3RyZHVwIGluIG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdCBhbmQKIAlmYWlsIGlmIHN0cmR1cCBmYWlscy4KICAgICAgIC0gQ29ycmVjdCB0aGUgZXh0ZXJuICJDIiBkZWNsYXJhdGlvbnMgdG8gYmUgY29uc2lzdGVudC4gUmVtb3ZlCiAJY29tbWVudGVkIG91dCBjb2RlLgorICAgICAgLSBGZW5uZXI6IGZpeCBzZW5kaW5nIG9mIFVEUCByZXNwb25zZXMgZnJvbSBtdWx0aWhvbWVkIGFnZW50cy4gVHJ5IHRvCisJc2VuZCB0aGUgcmVzcG9uc2UgYXMgaXQgd2FzIGJlZm9yZSBOZXQtU05NUCA1LjYgKGFzc3VtaW5nIHRoZQorCWFwcHJvcHJpYXRlIHJlcXVlc3Qgd2FzIHVuaWNhc3QpIGFuZCBvbmx5IGlmIGl0IGZhaWxzIHRyeSB0byBzZXQKKwlpZl9pbmRleCAodGhlIHJlcXVlc3QgbXVzdCBiZSBicm9hZGNhc3QpLgogICAgICAgLSBGaXhlZCBidWdzIGluIGFzbl9wYXJzZV91bnNpZ25lZF9pbnQ2NCgpLAogCWFzbl9idWlsZF91bnNpZ25lZF9pbnQ2NCgpLCBhc25fcGFyc2Vfc2lnbmVkX2ludDY0KCkgYW5kCiAJYXNuX2J1aWxkX3NpZ25lZF9pbnQ2NCgpLiBNb3N0IGJ1dCBub3QgYWxsIG9mIHRoZXNlIGJ1Z3Mgd2VyZQpAQCAtMTYxLDI0ICs2ODMsMTAxIEBACiAJYnkgdGhlICh1bmRvY3VtZW50ZWQpIHNubXBkLmNvbmYgImVudW0iIGtleXdvcmQgaGFuZGxlciAtIHN0b3JpbmcKIAlwb2ludGVycyB0byBzdHJpbmdzIGFsbG9jYXRlZCBvbiB0aGUgc3RhY2sgaW4gYSBnbG9iYWwgbGlzdCBkb2VzCiAJbm90IHdvcmsuCi0gICAgICAtIEludm9raW5nIHNlX2NsZWFyX3NsaXN0KCkgZG9lcyBubyBsb25nZXIgY3JlYXRlIGEgZGFuZ2xpbmcgcG9pbnRlci4KLQlGaXhlZCBsZWFrcy1hdC1leGl0IHRyaWdnZXJlZCBieSB1c2luZyB0aGUgc25tcF9lbnVtIGNvZGUuCi0JRG9jdW1lbnRlZCBiZWhhdmlvciBvZiBzZV9hZGRfcGFpcigpLCBzZV9hZGRfcGFpcl90b19zbGlzdCgpIGFuZAotCWNsZWFyX3NubXBfZW51bSgpLiBNYWRlIHNubXBfZW51bSBleGFtcGxlIGNvbnNpc3RlbnQgd2l0aCB0aGUgcmVzdAotCW9mIHRoZSBjb2RlIGJ5IGFkZGluZyBzdHJkdXAoKSBjYWxscyBhbmQgYWRkZWQgYSBjYWxsIHRvCi0Jc2VfY2xlYXJfYWxsX2xpc3RzKCkuIEZpeGVkIGEgbWVtb3J5IGNvcnJ1cHRpb24gcHJvYmxlbSB0cmlnZ2VyZWQKLQlieSB0aGUgKHVuZG9jdW1lbnRlZCkgc25tcGQuY29uZiAiZW51bSIga2V5d29yZCBoYW5kbGVyIC0gc3RvcmluZwotCXBvaW50ZXJzIHRvIHN0cmluZ3MgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBpbiBhIGdsb2JhbCBsaXN0IGRvZXMKLQlub3Qgd29yay4gCisgICAgICAtIFJlbW92ZSB0aGUgc3VwcG9ydCBmb3IgQ01VIGNvbXBhdGliaWxpdHkgc2luY2UgdGhlcmUgaXMgbm8gd2F5IHRvCisJZW5hYmxlIGl0IGFuZCBub2JvZHkgaGF2ZSBtaXNzZWQgaXQuCisgICAgICAtIFtCVUcgMzEzNDMyM106IEZpeCBjcmFzaCB3aGVuIGNvbXBhcmluZyBpbnZhbGlkIE9JRHMKKyAgICAgIC0gW1BBVENIIDMxNjU4NzhdOiBDYXRjaCBidWZmZXIgb3ZlcnJ1biBvbiA2NC1iaXQgc3lzdGVtcworICAgICAgLSBbUEFUQ0ggMzE5NTUzN106IE1pbm9yIGJpbmFyeV9hcnJheSBjb250YWluZXIgc29ydCBvcHRpbWl6YXRpb24KKyAgICAgIC0gW1BBVENIIDMyMDM4MDZdOiBBZGQgdGhlIGZ1bmN0aW9uIG5ldHNubXBfbGFyZ2Vfc2VsZWN0KCkuCisgICAgICAtIFtQQVRDSCAzMjAzODA2XTogTWFrZSBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKSBjbGVhciBhbGwKKwlyZWxldmFudCBmaWxlIGRlc2NyaXB0b3JzLgorICAgICAgLSBbUEFUQ0ggMzIwMzgwNl06IE1pbm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBvZgorCW5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSgpLgorICAgICAgLSBhZGQgSVB2NiBzdXBwb3J0IHRvIERUTFNVRFAgdHJhbnNwb3J0CisgICAgICAtIGFkZCBJUHY2IHN1cHBvcnQgdG8gRFRMU1VEUCB0cmFuc3BvcnQgdXNlIG5ldworCW5ldHNubXBfc29ja2FkZHJfc3RvcmFnZSBpbiBuZXRzbm1wX2FkZHJfcGFpcgorICAgICAgLSBhZGQgSVB2NiBzdXBwb3J0IHRvIERUTFNVRFAgdHJhbnNwb3J0IHVzZSBuZXcKKwluZXRzbm1wX3NvY2thZGRyX3N0b3JhZ2UgaW4gbmV0c25tcF9hZGRyX3BhaXIgYWRkIGJhc2VfdHJhbnNwb3J0CisJcHRyIGZvciB0dW5uZWxlZCB0cmFuc3BvcnRzCisgICAgICAtIGFkZCBtb3JlIG9wZW5zc2wgZXJyb3IgY2FzZXMgd2hlcmUgd2UgY2hlY2sgZm9yIGxvY2FsIGNlcnQKKyAgICAgIC0gYWRkIG5ldyB0cmFuc3BvcnQgY29uZmlnIHRva2VucyBsb2NhbENlcnQvcGVlckNlcnQsIGRlcHJlY2F0ZQorCW91cl9pZGVudGl0eSwgdGhlaXJfaWRlbnRpdHkKKyAgICAgIC0gYWRkIG9wdGlvbmFsIHN1cHBvcnQgZm9yIGxvY2FsIEROU1NFQyB2YWxpZGF0aW9uIG9mIGhvc3RuYW1lcwktCisJb3B0aW9uYWwgYXQgY29uZmlndXJlIHRpbWU6IC0td2l0aC1sb2NhbC1kbnNzZWMtdmFsaWRhdGlvbiAtCisJcmVxdWlyZXMgRE5TU0VDLVRvb2wgdmFsaWRhdGlvbiBsaWJyYXJpZXMgLSBpbml0aWFsIHN1cHBvcnQsIGZvcgorCXN5c3RlbXMgd2l0aCBnZXRhZGRyaW5mby4gc3VwcG9ydCBmb3IgYWRkaXRpb25hbCByZXNvbHZlcgorCWludGVyZmFjZXMgY29taW5nIHNvb24uIC0gYWxzbyBUT0RPOiBmbGFnIGZvciBpZ25vcmluZyB2YWxpZGF0b2luCisJZXJyb3JzIChsb2cgJiBjb250aW51ZSkKKyAgICAgIC0gZG9udCByZXR1cm4gZW1wdHkgYXJyYXkKICAgICAgIC0gZm9yY2UgYSA7IGF0IHRoZSBlbmQgb2YgdGhlIHN0YXRpY19hc3NlcnQgbWFjcm8uCisgICAgICAtIGludHJvZHVjZSBuZXcgbG9jYWxDZXJ0L3BlZXJDZXJ0LCBkZXByZWNhdGUgc2VydmVyQ2VydCwgY2xpZW50Q2VydCwKKwlkZWZYNTA5U2VydmVyUHViLCBkZWZYNTA5Q2xpZW50UHViCiAgICAgICAtIG5ldHNubXBfaGFuZGxlcl9kdXAoKTogZnJlZWluZyB0aGUgZHVwbGljYXRlZCBoYW5kbGVyIG5vIGxvbmdlcgogCWNhdXNlcyBhIGNyYXNoIChkb3VibGUgZnJlZSkgd2hlbiBoYW5kbGVyLT5teXZvaWQgb2YgdGhlIG9yaWdpbmFsCiAJaGFuZGxlciB3YXMgbm9uLU5VTEwuCisgICAgICAtIHJlYWxsb2MraW5pdCBpbnN0ZWFkIG9mIGNhbGxvYyBpbnNwaXJlZCBieSBwYXRjaCAzMTk1NTMyIGZyb20KKwlTdGVwaGVuIEhlbW1pbmdlcgorICAgICAgLSByZWZpbmUgY2VydCBkZWJ1Z2dpbmc7IHJlbW92ZSB1bnVzZWQgZnVuY3Rpb24KKyAgICAgIC0gcmVtb3ZlIGlubGluZSB2ZXJzaW9ucyBvZiBjb250YWluZXIgZnVuY3MKKyAgICAgIC0gc25tcF9zaHV0ZG93bigpOiBhZGRlZCBjYWxsIHRvIG5ldHNubXBfY2VydHNfc2h1dGRvd24oKS4KKyAgICAgIC0gMCBBcHBsaWVkIHRoZSBpbnRlbnQgb2YgcGF0Y2ggMzA0NDg4OCB0byBhbGxvdyBhcHBsaWNhdGlvbnMgdG8gcmVhZAorCXRoZSBlcnJvciBtZXNzYWdlcyBvZiBhIE1JQiBwYXJzaW5nIGZhaWx1cmUuCisgICAgICAtIEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gc25tcF9mcmVlX3Nlc3Npb24oKS4KKyAgICAgIC0gW0JVRyAzMTg0Njk3XTogRG9uJ3QgcmVmZXJlbmNlIGludGVybmFsIE1ENSB3aGVuIGl0J3MgZXhwbGljaXRseQorCWRpc2FibGVkCisgICAgICAtIFtCVUcgMzIzNDc1NF06IEVuc3VyZSBvbGQgZl9jcmVhdGVfZnJvbV90c3RyaW5nIGhvb2sgaXMgaW5pdGlhbGl6ZWQKKwl0byBOVUxMCisgICAgICAtIFtCVUcgMzI2NDg1Ml06IFJlY29nbmlzZSBtaXNzaW5nIHJlcG9ydCB0eXBlcworCShzbm1we1VuYXZhaWxhYmxlLFVua25vd259Q29udGV4dHMsc25tcFVua25vd25QRFVIYW5kbGVycykKKyAgICAgIC0gX21pYmluZGV4X2FkZCgpIG5vIGxvbmdlciByZWFkcyBwYXN0IHRoZSBlbmQgb2YgdGhlIGR5bmFtaWNhbGx5CisJYWxsb2NhdGVkIGFycmF5IF9taWJpbmRleGVzLgorICAgICAgLSBbQlVHIDMxNTE4NDVdOiBmaXggbXVsdGlwbGUgcmVnaXN0cmF0aW9ucyBvZiBzbm1wIHRyYW5zcG9ydCBoYW5kbGVyCisKKyAgICBzbm1wOgorICAgICAgLSBwYXRjaDogMzA5NjcyNTogc3lzT1JUYWJsZSByZWdpc3RhdGlvbiBmb3Igbm90aWZpY2F0aW9uIGxvZyBtaWIKKwlvcmlnaW5hbCBwYXRjaCBmaXhlZCBzZXZlcmFsIGlzc3Vlcywgb3RoZXIgcGFydHMgYXBwbGllZCBlYXJsaWVyCiAKICAgICBzbm1wZDoKLSAgICAgIC0gUGF0Y2ggMzE0MTQ2MjogZnJvbSBmZW5uZXI6IGZpeCBhZ2VudHggc3ViYWdlbnQgaXNzdWVzIHdpdGgKLQltdWx0aXBsZS1vYmplY3QgcmVxdWVzdHMKLSAgICAgIC0gUGF0Y2ggZnJvbSBOaWVscyB0byBmaXggVkFDTSBwZXJzaXN0YW50IHN0b3JhZ2UuCisgICAgICAtIEFkZCBtaXNzaW5nIGZ1bmN0aW9uIGRlY2xhcmF0aW9uCisgICAgICAtIEFkZGVkIGZ1bmN0aW9ucyBuZXRzbm1wX2hhbmRsZXJfb3duc190YWJyZXEoKSwKKwluZXRzbm1wX3JlZ2lzdHJhdGlvbl9vd25zX3RhYnJlcSgpLCBuZXRzbm1wX2l0ZXJhdG9yX2Nsb25lKCkuCisJRXhwb3J0ZWQgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19jbG9uZSgpLgorICAgICAgLSBBZGRlZCBmdW5jdGlvbnMgbmV0c25tcF9oYW5kbGVyX293bnNfdGFicmVxKCksCisJbmV0c25tcF9yZWdpc3RyYXRpb25fb3duc190YWJyZXEoKSwgbmV0c25tcF9pdGVyYXRvcl9jbG9uZSgpLgorCUV4cG9ydGVkIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fY2xvbmUoKS4gTW9kaWZpZWQKKwluZXRzbm1wX2l0ZXJhdG9yX2RlbGV0ZV90YWJsZSgpIHN1Y2ggdGhhdCBpdCBmcmVlcyB0aGUgdGFibGUKKwlyZWdpc3RyYXRpb24gaW5mb3JtYXRpb24gc3RvcmVkIGluIGEgdGFibGUgaXRlcmF0b3IgdG9vLiBNb2RpZmllZAorCW5ldHNubXBfZ2V0X3RhYmxlX2l0ZXJhdG9yX2hhbmRsZXIoKSBzdWNoIHRoYXQgdGhlIHRhYmxlIGl0ZXJhdG9yCisJcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gaXMgZnJlZWQgd2hlbiB0aGUgYXNzb2NpYXRlZCBoYW5kbGVyIGlzCisJZnJlZWQuIFJlc3RvcmVkIHRoZSBiZWhhdmlvciBvZiBuZXRzbm1wX2dldF90YWJsZV9oYW5kbGVyKCkgdG8gdGhhdAorCW9mIHIxOTQ0OSwgdGhhdCBpcywgbm90IHNldHRpbmcgdXAgdGhlIGRhdGFfZnJlZSBwb2ludGVyIGJlY2F1c2UKKwlub3QgYWxsIGNhbGxlcnMgb2YgbmV0c25tcF9nZXRfdGFibGVfaGFuZGxlcigpIGV4cGVjdCB0aGF0IHRhYmxlCisJcmVnaXN0cmF0aW9uIGluZm9ybWF0aW9uIGlzIGZyZWVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgaGFuZGxlciBpcworCWZyZWVkLgorICAgICAgLSBBZGRlZCBuZXRzbm1wX2dldF90YWJsZV9pdGVyYXRvcjIoKS4KKyAgICAgIC0gQWRkZWQgbmV0c25tcF9nZXRfdGFibGVfaXRlcmF0b3IyKCkuIEFkZGVkCisJbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcjIoKS4KKyAgICAgIC0gQWRkZWQgbmV0c25tcF9nZXRfdGFibGVfaXRlcmF0b3IyKCkuIEFkZGVkCisJbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcjIoKS4gQWRkZWQKKwluZXRzbm1wX2hhbmRsZXJfb3duc19pdGVyYXRvcl9pbmZvKCkuCisgICAgICAtIEFkZGVkIG5ldHNubXBfZ2V0X3RhYmxlX2l0ZXJhdG9yMigpLiBBZGRlZAorCW5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IyKCkuIEFkZGVkCisJbmV0c25tcF9oYW5kbGVyX293bnNfaXRlcmF0b3JfaW5mbygpLiBGaXhlZCBsZWFrLWF0LWV4aXQgdHJpZ2dlcmVkCisJYnkgc25tcE5vdGlmeVRhYmxlLgorICAgICAgLSBBZGRlZCBuZXRzbm1wX2dldF90YWJsZV9pdGVyYXRvcjIoKS4gQWRkZWQKKwluZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yMigpLiBBZGRlZAorCW5ldHNubXBfaGFuZGxlcl9vd25zX2l0ZXJhdG9yX2luZm8oKS4gRml4ZWQgbGVhay1hdC1leGl0IHRyaWdnZXJlZAorCWJ5IHNubXBOb3RpZnlUYWJsZS4gRml4ZWQgbGVhay1hdC1leGl0IHRyaWdnZXJlZCBieQorCXNubXBUYXJnZXRBZGRyVGFibGUuIEFsc28sIHJlc3RvcmVkIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IG9mCisJbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcigpLgorICAgICAgLSBBZGRlZCBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UyKCksCisJbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcjIoKSwgbmV0c25tcF9jbG9uZV93YXRjaGVyX2luZm8oKQorCWFuZCBuZXRzbm1wX293bnNfd2F0Y2hlcl9pbmZvKCkuIFNlZSBhbHNvIHRoZSBEb3h5Z2VuIGNvbW1lbnRzIGZvcgorCW1vcmUgaW5mby4KKyAgICAgIC0gQWRkZWQgbmV0c25tcF91bnJlZ2lzdGVyX2F1dG9fZGF0YV90YWJsZSgpLgorICAgICAgLSBBZGRlZCByZWZlcmVuY2UgY291bnQgaW4gdGhlIG5ldHNubXBfYmFieV9zdGVwc19tb2RlcyBkYXRhCisJc3RydWN0dXJlIGFuZCBtYWRlIHN1cmUgdGhhdCB0aGlzIGRhdGEgc3RydWN0dXJlIGlzIGF1dG9tYXRpY2FsbHkKKwlmcmVlZCB3aGVuIHRoZSBoYW5kbGVyIHRoYXQgb3ducyBpdCBpcyB1bnJlZ2lzdGVyZWQuCiAgICAgICAtIEFkZGVkIHNubXBfc2Vzc19zZXNzaW9uX2xvb2t1cCgpLiBDYWxsIHNodXRkb3duX21hc3Rlcl9hZ2VudCgpIGFuZAogCXNodXRkb3duX2FnZW50KCkgZHVyaW5nIHNodXRkb3duLgogICAgICAgLSBBZGRlZCBzbm1wX3Nlc3Nfc2Vzc2lvbl9sb29rdXAoKS4gQ2FsbCBzaHV0ZG93bl9tYXN0ZXJfYWdlbnQoKSBhbmQKQEAgLTIwMywxMCArODAyLDY5IEBACiAJc3VjaCB0aGF0IGl0IG5ldmVyIGV4YW1pbmVzIHNlc3Npb25zIHRoYXQgYWxyZWFkeSBoYXZlIGJlZW4gY2xvc2VkLgogCUl0IGlzIGZvciB0aGlzIGNoYW5nZSB0aGF0IGl0IHdhcyBuZWNlc3NhcnkgdG8gaW50cm9kdWNlIHRoZSBuZXcKIAlmdW5jdGlvbiBzbm1wX3Nlc3Nfc2Vzc2lvbl9sb29rdXAoKS4KKyAgICAgIC0gQWRkZWQgdGhlIGZ1bmN0aW9ucyBuZXRzbm1wX2R1cGxpY2F0ZV92YXJpYWJsZSgpIGFuZAorCW5ldHNubXBfY2FjaGVfaGFuZGxlcl9vd25zX2NhY2hlKCkuCisgICAgICAtIEFkZGVkIHRoZSBmdW5jdGlvbnMgbmV0c25tcF9kdXBsaWNhdGVfdmFyaWFibGUoKSBhbmQKKwluZXRzbm1wX2NhY2hlX2hhbmRsZXJfb3duc19jYWNoZSgpLiBNZW1vcnkgYWxsb2NhdGVkIGJ5CisJbmV0c25tcF9yZWdpc3Rlcl9vbGRfYXBpKCkgZm9yIHN0b3JpbmcgU05NUCB2YXJpYWJsZXMgaXMgbm93IGZyZWVkCisJd2hlbiB0aGUgYXNzb2NpYXRlZCBoYW5kbGVyIGlzIHVucmVnaXN0ZXJlZC4KKyAgICAgIC0gQWRkZWQgdGhlIGZ1bmN0aW9ucyBuZXRzbm1wX2R1cGxpY2F0ZV92YXJpYWJsZSgpIGFuZAorCW5ldHNubXBfY2FjaGVfaGFuZGxlcl9vd25zX2NhY2hlKCkuIE1lbW9yeSBhbGxvY2F0ZWQgYnkKKwluZXRzbm1wX3JlZ2lzdGVyX29sZF9hcGkoKSBmb3Igc3RvcmluZyBTTk1QIHZhcmlhYmxlcyBpcyBub3cgZnJlZWQKKwl3aGVuIHRoZSBhc3NvY2lhdGVkIGhhbmRsZXIgaXMgdW5yZWdpc3RlcmVkLiBDYWxsYmFjayBmdW5jdGlvbiBkYXRhCisJZGVhbGxvY2F0aW9uIGRvZXMgbm8gbG9uZ2VyIGZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIHRoZQorCUFnZW50WCBzZXNzaW9uIC0gdGhlIG1lbW9yeSB0aGF0IHdhcyBhbGxvY2F0ZWQgZm9yIEFnZW50WCBzZXNzaW9ucworCWlzIG5vdyBkZWFsbG9jYXRlZCBqdXN0IGFzIHRoYXQgZm9yIGFueSBvdGhlciBzZXNzaW9uLiBUaGlzIGZpeGVzIGEKKwlsZWFrLWF0LWV4aXQuCisgICAgICAtIEFkZGVkIHRoZSBmdW5jdGlvbnMgbmV0c25tcF9kdXBsaWNhdGVfdmFyaWFibGUoKSBhbmQKKwluZXRzbm1wX2NhY2hlX2hhbmRsZXJfb3duc19jYWNoZSgpLiBNZW1vcnkgYWxsb2NhdGVkIGJ5CisJbmV0c25tcF9yZWdpc3Rlcl9vbGRfYXBpKCkgZm9yIHN0b3JpbmcgU05NUCB2YXJpYWJsZXMgaXMgbm93IGZyZWVkCisJd2hlbiB0aGUgYXNzb2NpYXRlZCBoYW5kbGVyIGlzIHVucmVnaXN0ZXJlZC4gQ2FsbGJhY2sgZnVuY3Rpb24gZGF0YQorCWRlYWxsb2NhdGlvbiBkb2VzIG5vIGxvbmdlciBmcmVlIHRoZSBtZW1vcnkgYWxsb2NhdGVkIGZvciB0aGUKKwlBZ2VudFggc2Vzc2lvbiAtIHRoZSBtZW1vcnkgdGhhdCB3YXMgYWxsb2NhdGVkIGZvciBBZ2VudFggc2Vzc2lvbnMKKwlpcyBub3cgZGVhbGxvY2F0ZWQganVzdCBhcyB0aGF0IGZvciBhbnkgb3RoZXIgc2Vzc2lvbi4gVGhpcyBmaXhlcyBhCisJbGVhay1hdC1leGl0LiBOb3RpZnkgZmlsdGVyIHRhYmxlOiBDYWxsYmFjayBmdW5jdGlvbiBkYXRhCisJZGVhbGxvY2F0aW9uIGRvZXMgbm8gbG9uZ2VyIGZyZWUgdGhlIGRhdGEgaW4gKgkgIAorCSpzbm1wTm90aWZ5RmlsdGVyVGFibGVfaWZfY3R4LmNvbnRhaW5lciAtIHRoaXMgaXMgbm93IGRvbmUgYnkgIAorCXNodXRkb3duX3NubXBOb3RpZnlGaWx0ZXJUYWJsZSgpIGFuZAorICAgICAgLSBBdXRvbWF0aWNhbGx5IGZyZWUgdGhlIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUgYWxsb2NhdGVkIGJ5CisJbmV0c25tcF9jb250YWluZXJfdGFibGVfaGFuZGxlcl9nZXQoKS4KKyAgICAgIC0gQnVpbGRzIHdpdGggbW9zdCByZWNlbnQgTWluR1cgKGhhdmluZyAjZGVmaW5lIGxvY2FsdGltZV9yKS4KKyAgICAgIC0gQ291bnQgdGhlIG51bWJlciBvZiB1c2VycyBvZiBhIG5ldHNubXBfY2FjaGUgZGF0YSBzdHJ1Y3R1cmUgaW5zdGVhZAorCW9mIGR1cGxpY2F0aW5nIGl0LgorICAgICAgLSBEZWNsYXJlIHRoZSBPSUQgYXJndW1lbnQgdHlwZSBvZiBNSUIgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhcworCSdjb25zdCBvaWQgKicgaW5zdGVhZCBvZiAnb2lkIConIHNpbmNlIHRoZXNlIGZ1bmN0aW9ucyBkbyBub3QKKwltb2RpZnkgdGhlIE9JRC4KKyAgICAgIC0gRG8gbm90IGxlYWsgdGhlIGxpbWl0cyBvZiBzY2FsYXJfZ3JvdXAgb2JqZWN0cyBvbiBzaHV0ZG93bi4KKyAgICAgIC0gRXh0ZW5kIHRoZSBkb2N1bWVudGF0aW9uIGZvciBkYXRhX2Nsb25lIGFuZCBkYXRhX2ZyZWUKKyAgICAgIC0gRmFjdG9yIG91dCBjb21tb24gY29uZmlnX2FkZF9taWIgc3RhdG1lbnRzCisgICAgICAtIEZpbmQgb3V0IHdoZXRoZXIgbGlicnBtIGlzIGF2YWlsYWJsZSBiZWZvcmUgY29uZmlndXJpbmcgdGhlIGFnZW50CisJbW9kdWxlcyBiZWNhdXNlIGhvc3QvZGF0YS9hY2Nlc3Mvc3dpbnN0IG5lZWRzIHN5bWJvbCBIQVZFX0xJQlJQTS4KKwlBcyBhIHJlc3VsdCwgY29uZmlndXJlIGhhcyB0byBiZSBydW4gb25seSBvbmNlIGluc3RlYWQgb2YgdHdpY2UgdG8KKwllbmFibGUgdGhlIGhyU1dJbnN0YWxsZWQgdGFibGUgb24gc3lzdGVtcyB0aGF0IGhhdmUgbGlicnBtLgogICAgICAgLSBGaXhlZCBhIGRvdWJsZSBmcmVlIGF0IGV4aXQgdGhhdCB3YXMgdHJpZ2dlcmVkIGJ5IGNsZWFuaW5nIHVwIHRoZQogCWRhdGEgc3RydWN0dXJlcyB1c2VkIGZvciBlbWJlZGRlZCBQZXJsIHN1cHBvcnQuCi0gICAgICAtIEZpeGVkIG9yZGVyIG9mIHJwbWxpYiBkZXRlY3Rpb24gYW5kIGFnZW50IG1vZHVsZSBjb25maWd1cmF0aW9uCi0JKGJhY2twb3J0ZWQgcjE5NjIxIGZyb20gdHJ1bmspLgorICAgICAgLSBGaXhlZCBhIHllYXItMjAzOCBidWcgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIGlwUm91dGVUYWJsZS4KKyAgICAgIC0gSW50cm9kdWNlZCBuZXRzbm1wX3BpZF90LgorICAgICAgLSBNSUItc3BlY2lmaWMgbGVhay1hdC1leGl0IGZpeGVzLgorICAgICAgLSBNYWtlIGl0IHBvc3NpYmxlIHRvIGNvcHkgd2F0Y2hlZCBkYXRhIGl0ZW1zIHdpdGhvdXQgbWVtb3J5IGxlYWtzLgorICAgICAgLSBNYWtlIHRoZSBzZXR0aW5nIG9mIHRoZSBhcmd2cmVzdGFydCogdmFyaWFibGVzIG9wdGlvbmFsIG9uCisJVVNJTkdfVVRJTF9GVU5DU19SRVNUQVJUX01PRFVMRS4KKyAgICAgIC0gTWFrZSB0aGUgc2V0dGluZyBvZiB0aGUgYXJndnJlc3RhcnQqIHZhcmlhYmxlcyBvcHRpb25hbCBvbgorCVVTSU5HX1VUSUxfRlVOQ1NfUkVTVEFSVF9NT0RVTEUuIFJlbW92ZSB1dGlsX2Z1bmNzL3Jlc3RhcnQgZnJvbSB0aGUKKwlyZXF1aXJlbWVudCBzZXRzIG9mIHV0aWxfZnVuY3MgYW5kIGRlZmF1bHRfbW9kdWxlcy4KKyAgICAgIC0gTWFrZSB0aGUgc2V0dGluZyBvZiB0aGUgYXJndnJlc3RhcnQqIHZhcmlhYmxlcyBvcHRpb25hbCBvbgorCVVTSU5HX1VUSUxfRlVOQ1NfUkVTVEFSVF9NT0RVTEUuIFJlbW92ZSB1dGlsX2Z1bmNzL3Jlc3RhcnQgZnJvbSB0aGUKKwlyZXF1aXJlbWVudCBzZXRzIG9mIHV0aWxfZnVuY3MgYW5kIGRlZmF1bHRfbW9kdWxlcy4gQWRkCisJdXRpbF9mdW5jcy9yZXN0YXJ0IHRvIHRoZSByZXF1aXJlbWVudCBzZXQgb2YgdWNkLXNubXAvdmVyc2lvbmluZm8uCisgICAgICAtIFBhdGNoIDMxNDE0NjI6IGZyb20gZmVubmVyOiBmaXggYWdlbnR4IHN1YmFnZW50IGlzc3VlcyB3aXRoCisJbXVsdGlwbGUtb2JqZWN0IHJlcXVlc3RzCisgICAgICAtIFBhdGNoIGZyb20gTmllbHMgdG8gZml4IFZBQ00gcGVyc2lzdGFudCBzdG9yYWdlLgorICAgICAgLSBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGNtcAorICAgICAgLSBSZW1vdmUgdXRpbF9mdW5jcy9FeGl0IGZyb20gdGhlIHJlcXVpcmVtZW50IHNldHMgb2YgdXRpbF9mdW5jcyBhbmQKKwlkZWZhdWx0X21vZHVsZXMuCisgICAgICAtIFJlbW92ZSB1dGlsX2Z1bmNzL0V4aXQgZnJvbSB0aGUgcmVxdWlyZW1lbnQgc2V0cyBvZiB1dGlsX2Z1bmNzIGFuZAorCWRlZmF1bHRfbW9kdWxlcy4gTmV2ZXIgdXNlIEV4aXQgdG8gdGVybWluYXRlIHRoZSBhZ2VudC4KICAgICAgIC0gUmVtb3ZpbmcgdGhlIGxhc3QgY2FjaGUgdmlhIG5ldHNubXBfY2FjaGVfcmVtb3ZlKCkgZG9lcyBubyBsb25nZXIKIAl0cmlnZ2VyIGEgY3Jhc2guCiAgICAgICAtIFVwZGF0ZSB0aGUgbGVuZ3RoIG9mIHN5c09iamVjdElEIGFzIHdlbGwgYXMgdGhlIGRhdGEgd2hlbiBpdCBpcyBzZXQKQEAgLTIxOCwyNiArODc2LDU0IEBACiAgICAgICAtIFtCVUcgMzA1ODEwMV06IFdyaXRlYWJsZSAnbG9uZycgaW5zdGFuY2VzIHdvcmsgb24gNjQtYml0IHN5c3RlbXMsCiAJYnV0IG5vdCB3cml0YWJsZSAnaW50J3MKICAgICAgIC0gW0JVRyAzMDYyNTM4XTogRml4IGNvbTJzZWMqIGhhbmRsaW5nIG9mIG5vbi1kZWZhdWx0IGNvbnRleHRzCisgICAgICAtIFtCVUcgMzIwNTc2NV06IGhhbmRsZSByZWNvbmZpZyBmb3IgY2VydFNlY05hbWUgdG9rZW4KICAgICAgIC0gW0JVRyBdOiBlbmZvcmNlIG1heCBsZW5ndGggb24gVExTIHNlY05hbWUgbWFwcworICAgICAgLSBbQlVHIF06IGVuZm9yY2UgbWF4IGxlbmd0aCBvbiBUTFMgc2VjTmFtZSBtYXBzIGFkZCBwcmlvcml0eSB0bworCXNlY25hbWUgZGVidWdnaW5nCiAgICAgICAtIFtQQVRDSCAyMTE5NzI1XTogRml4IHNraXBORlNJbkhvc3RSZXNvdXJjZXMgaGFuZGxpbmcgb2YKIAloclN0b3JhZ2VUYWJsZQorICAgICAgLSBbUEFUQ0ggMjk0MTgxMV06IEhhbmRsZSBzdWNjZXNzZnVsIHJlcXVlc3RzIHdpdGggcmVxSUQgMAorICAgICAgLSBbUEFUQ0ggMjk3NTI1NF06IEF2b2lkIGNhbGxiYWNrIHJlLXVzZSBvZiBjbG9zZWQgc2Vzc2lvbnMgUW46CisJU2hvdWxkIHRoaXMgYWxzbyBiZSBhcHBsaWVkIHdoZW4gbWFpbiBzZXNzaW9uIGlzIE5VTEw/CiAgICAgICAtIFtQQVRDSCAzMDUzNDM2XTogZnJvbTogdGFrZXZvczogZml4OiB0Y3BDb25uZWN0aW9uVGFibGVfZGF0YV9hY2Nlc3MKIAlpbnZhbGlkIG1lbW9yeSBhY2Nlc3MKICAgICAgIC0gW1BBVENIIDMwNTcwOTBdOiBtYWtlIGV0aHRvb2wgc3VwcG9ydCBvbiBsaW51eCB1c2UgdGhlIGhpZ2ggc3BlZWQKIAlzdHJ1Y3QgaW5mbyBmb3IgMTAwRysuCisgICAgICAtIFtQQVRDSCAzMDU3MDkzXTogYWxsb3cgbGludXggdG8gdXNlIGxpYnBjaSBmb3IgY3JlYXRpbmcgdXNlZnVsCisJaWZEZXNjciBzdHJpbmdzCiAgICAgICAtIFtQQVRDSCAzMDk2NzI1XTogRG9uJ3QgcmVnaXN0ZXIgdjFUcmFwIGNhbGxiYWNrLCBpZiBTTk1QdjEgaXMgbm90CiAJc3VwcG9ydGVkCiAgICAgICAtIFtQQVRDSCAzMDk2NzI1XTogSW5jbHVkZSBTTk1QdjEgdHJhcCBPSURzIGluIG5sbUxvZ05vdGlmaWNhdGlvbklECiAJY29sdW1uCisgICAgICAtIFtQQVRDSCAzMTI1OTZdOiBsaXN0ZW4gZm9yIG5ldGxpbmsgY2hhbmdlIGV2ZW50cyBmb3IgdGhlCisJYXJwLXJlbGF0ZWQgdGFibGVzCisgICAgICAtIFtQQVRDSCAzMTUyNDEyXTogSGFuZGxlIChhbmQgcmVwb3J0KSBwcm9ibGVtcyByZWFkaW5nIC9wcm9jL3Ztc3RhdAorICAgICAgLSBbUEFUQ0ggMzIwMzgwNl06IEF2b2lkIHRoYXQgdGhlIG1haW4gYWdlbnQgcHJvY2Vzc2luZyBsb29wIC0gd2hlbgorCXVzaW5nIG1vcmUgdGhhbiBGRF9TRVRTSVpFIGZpbGUgZGVzY3JpcHRvcnMgLSBjYW4gY2F1c2UgbWVtb3J5CisJY29ycnVwdGlvbiBieSBpbnZva2luZyBzZWxlY3QoKS4KKyAgICAgIC0gW1BBVENIIF06IG9wdGltaXphdGlvbnMgZm9yIGxhcmdlIHJvdXRlIHRhYmxlcyBmcm9tIFN0ZXBoZW4KKwlIZW1taW5nZXIgYXBwbGllZCBwYXJ0cyAxLTMgb2YgNCBmcm9tIGhpbSAobXNncyB0byBjb2RlcnMgb24KKwkyLzI4LzExOyBzdWJqZWN0IGlwLWZvcndhcmQtbWliIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50czsgcGFydCA0CisJbmVlZHMgbW9yZSB3b3JrCiAgICAgICAtIGFkZCBkZWJ1ZyBmb3IgY2VydCBmaW5kIGhpbnQgYXMgc3RyaW5nL2ludAotICAgICAgLSBhZGQgZGVidWcgZm9yIHNzbCBjaXBoZXJzLCBjbGFyaWZ5IGZpbmdlcnByaW50IG1hdGNoIGRlYnVnCisgICAgICAtIGFkZCBuZXdseSBjcmVhdGVkL2Rlc3Ryb3llZCBpbnRlcmZhY2VzIHRvIGlwdjZJZlRhYmxlIFRoZSBsaXN0IG9mCisJaW50ZXJmYWNlcyB3YXMgbmV2ZXIgcmVmcmVzaGVkLCBub3cgaXQgaXMgcmVsb2FkZWQgZXZlcnkgdGltZSB0aGUKKwl0YWJsZSBpcyBhY2Nlc3NlZC4gSSd2ZSBhbHNvIGZpeGVkIGEgbWVtb3J5IGxlYWsgYW5kIG9wdGltaXplZCB0aGUKKwlsb2FkaW5nIG9mIHRoZSBsaXN0IGEgYml0LgogICAgICAgLSBjb20yc2VjNiBkaXJlY3RpdmU6IElmIGNvbmZpZ3VyZSBoYXMgbm90IGZvdW5kIGdldGFkZHJpbmZvKCksCiAJbm9uLW51bWVyaWMgSVB2NiBhZGRyZXNzZXMgZG8gbm93IHRyaWdnZXIgYW4gZXJyb3IgbWVzc2FnZS4KLQkoQmFja3BvcnRlZCByMTk2NTAuKQotICAgICAgLSBkb24ndCBzZWNvbmQtZ3Vlc3MgY2FjaGUgaGFuZGxlciAgICh3YXZlcyBoYW5kKSB0aGlzIGlzIG5vdCB0aGUKKyAgICAgIC0gZG9uJ3Qgc2Vjb25kLWd1ZXNzIGNhY2hlIGhhbmRsZXIgKHdhdmVzIGhhbmQpIHRoaXMgaXMgbm90IHRoZQogCWZ1bmN0aW9uIHlvdSBhcmUgbG9va2luZyBmb3IuIG5ldHNubXBfY2FjaGVfaXNfdmFsaWQoKSBpcyBub3QgbWVhbnQKIAlmb3IgbWliIG1vZHVsZXMKKyAgICAgIC0gZXhhbXBsZSBNSUI6IEFkZGVkIHNodXRkb3duIGZ1bmN0aW9uIHRoYXQgZnJlZXMgYWxsIG1lbW9yeSBvd25lZCBieQorCXRoaXMgTUlCIGltcGxlbWVudGF0aW9uLgogICAgICAgLSBmaXggZG91YmxlIGZyZWUgaW4gVExTIGVycm9yIGhhbmRsaW5nCisgICAgICAtIGZpeGVkIHRoZSBhZ2VudCB3cml0aW5nICdsb29rcyBsaWtlIGEgNjRiaXQgd3JhcCwgYnV0IHByZXYhPW5ldycgaW4KKwlzeXNsb2cgd2hlbiBjb21wdXRpbmcgaXBTeXN0ZW1TdGF0cyBXaXRob3V0IHRoZSBtZW1jcHksCisJcHJldl92YWxzLT5zdGF0cyBhbmQgbmV3X3ZhbHMtPnN0YXRzIGNvdWxkIGdldCBkaWZmZXJlbnQsIHdoaWNoCisJY291bGQgbXVjaCBtdWNoIGxhdGVyICh3aGVuIGEgY291bnRlciBnZXRzIGJpZ2dlciB0aGFuIDMyIGJpdHMpCisJcmVzdWx0IGluICdwcmV2IT1uZXcnIG1lc3NhZ2UgaW4gc3lzbG9nLiBUeXBpY2FsbHkgdGhpcyBoYXBwZW5zCisJYWZ0ZXIgbG9uZyB0aW1lIG9mIHVwdGltZSBhbmQgaXQgaXMgdmVyeSBoYXJkIHRvIHJlcHJvZHVjZS4KICAgICAgIC0gaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcnBtOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluCiAJbmV0c25tX3N3aW5zdF9hcmNoX2luaXQoKS4KICAgICAgIC0gaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcnBtOiBQYXNzIGNvcnJlY3QgcGF0aCB0byBycG1kYk9wZW4oKSBzdWNoCkBAIC0yNDksMTcgKzkzNSw0MSBAQAogCWluaXRzIHRvIG5ldyBhZ2VudCBjZXJ0IGluaXQgZnVuY3Rpb24sIGNhbGxlZCBmcm9tIGluaXRfYWdlbnQuCiAgICAgICAtIG5ldHNubXBfY2FjaGVfZnJlZSgpOiBBIG1vcmUgZGV0YWlsZWQgbWVzc2FnZSBpcyBub3cgbG9nZ2VkIHdoZW4KIAlhdHRlbXB0aW5nIHRvIGZyZWUgYSBjYWNoZSB0aGF0IGlzIHN0aWxsIGluIHRoZSBjYWNoZSBsaXN0LgotCShCYWNrcG9ydGVkIHIxOTUyNC4pCisgICAgICAtIHJld29ya2VkIGhyU3RvcmFnZVRhYmxlIHRvIHN1cHBvcnQgbGFyZ2UgZmlsZXN5c3RlbXMuIFRoZQorCWhyU3RvcmFnZUFsbG9jYXRpb25Vbml0cyBkb2VzIG5vdCByZXBvcnQgcmVhbCBhbGxvY2F0aW9uIHVuaXQgc2l6ZSwKKwlidXQgc29tZSBjYWxjdWxhdGVkIHZhbHVlIHNvIGhyU3RvcmFnZUFsbG9jYXRpb25Vbml0cyAqCisJaHJTdG9yYWdlU2l6ZSBnaXZlcyByZWFsIHNpemUgb2YgdGhlIGZpbGVzeXN0ZW0uIFRoaXMgY2FsY3VsYXRpb24KKwloYXBwZW5zIG9ubHkgd2hlbiBoclN0b3JhZ2VTaXplIGlzIHRvbyBzbWFsbCAoMzJiaXRzKSBmb3IKKwlmaWxlc3lzdGVtIHNpemUsIGUuZy4gZmlsZXN5c3RlbXMgbGFyZ2VyIHRoYW4gOFRCIHdpdGggNDA5NiBieXRlcworCWJsb2NrIHNpemUuIFRoaXMgY2FsY3VsYXRpb24gY2FuIGJlIHR1cm5lZCBvZmYgYnkKKwkncmVhbFN0b3JhZ2VVbml0cycgY29uZmlnIG9wdGlvbi4KKyAgICAgIC0gc2tpcCBub24tQUZfSU5FVCBpbnRlcmZhY2VzIHdoZW4gbG9hZGluZyBpcHY0IGFkZHJzCiAgICAgICAtIHNubXBkIGlzIGFnYWluIHNpbmdsZS10aHJlYWRlZC4gW1BBVENIIDI5NTk4MTFdOiBTYWZyYW5lazoKIAlSZWltcGxlbWVudCBMaW51eCBOZXRsaW5rIElQdjYgcHJlZml4IGxpc3RlbmVyLgotICAgICAgLSB1c2UgY2FjaGUtdW5pcXVlIGlkIGluc3RlYWQgb2YgaGFuZGxlciBuYW1lIGZvciBzaGFyZWQgY2FjaGUgcmVsb2FkCi0JcHJvdGVjdGlvbgotICAgICAgLSBQYXRjaCBmcm9tIENsYXVzIEtsZWluIHRvIGZpeCBlbmdpbmVpZCBnZW5lcmF0aW9uIG9uIG91dGdvaW5nIHYzCi0JdHJhcHMgZnJvbSB0aGUgYWdlbnQKLSAgICAgIC0gYWRkIG5ld2x5IGNyZWF0ZWQvZGVzdHJveWVkIGludGVyZmFjZXMgdG8gaXB2NklmVGFibGUJVGhlIGxpc3Qgb2YKLQlpbnRlcmZhY2VzIHdhcyBuZXZlciByZWZyZXNoZWQsIG5vdyBpdCBpcyByZWxvYWRlZCBldmVyeSB0aW1lIHRoZQotCXRhYmxlIGlzIGFjY2Vzc2VkLiBJJ3ZlIGFsc28gZml4ZWQgYSBtZW1vcnkgbGVhayBhbmQgb3B0aW1pemVkIHRoZQotCWxvYWRpbmcgb2YgdGhlIGxpc3QgYSBiaXQuCisgICAgICAtIEZpeGVkIG1lbW9yeSBsZWFrIGluIFRDUC1NSUIgdGFibGVzIGludHJvZHVjZWQgYnkgcGF0Y2ggIzMwNTM0MzYuCisgICAgICAtIEZpeGVkIG1lbW9yeSBsZWFrIGluIFRDUC1NSUIgdGFibGVzIGludHJvZHVjZWQgYnkgcGF0Y2ggIzMwNTM0MzYuIgorCVtQQVRDSCAzMDUzNDM2XTogZnJvbTogdGFrZXZvczogZml4OiB0Y3BDb25uZWN0aW9uVGFibGVfZGF0YV9hY2Nlc3MKKwlpbnZhbGlkIG1lbW9yeSBhY2Nlc3MiIHRoZSBidWcgMzA1MzQzNiBpcyBmaXhpbmcgd2FzIGludHJvZHVjZWQgaW4KKwlyMTc3MTksIGFuZCBmaXhlZCBpbiByMTc4NjEuCisgICAgICAtIFVzZSBwcm9wZXIgZm9ybWF0IHNwZWNpZmllciBpbiBkZWJ1ZyBzdGF0ZW1lbnRzIGZvciBwcmludGluZyB2YWx1ZXMKKwlvZiB0eXBlICdvaWQnLgorICAgICAgLSBbUEFUQ0ggMzA2Njg2Ml06IGZpeCB0aGUgYWdlbnQgZm9yIGNvbXBhcmluZyB1bnNpZ25lZCBsYXJnZSBpbmRleGVzCisJb2YgdGhlIGRpc2sgYW5kIGV4dGVuZCB0YWJsZXMuCisgICAgICAtIGZpeGVkIGhyU1dSdW5QYXRoIG9mIHN3YXBwZWQtb3V0IHByb2Nlc3NlcyBvbiBMaW51eC4gICBmZ2V0cygpCisJcmV0dXJucyBOVUxMIGJvdGggd2hlbiAvcHJvYy9QSUQvY21kbGluZSBpcyBlbXB0eSAoPSBzd2FwcGVkIG91dCkKKwlhbmQgd2hlbiB0aGUgcHJvY2VzcyBleGl0ZWQgYWZ0ZXIgZm9wZW4oKSwgc28gY2hlY2sKKwkvcHJvYy9QSUQvc3RhdHVzIGluIGJvdGggY2FzZXMuCisgICAgICAtIGZpeGVkIHJhY2UgY29uZGl0aW9uIGluIGhyU1dSdW5UYWJsZSBUcmVhdCB0aGUgcmVhZHMgZnJvbQorCS9wcm9jLzxwaWQ+LyogY2FyZWZ1bHksIHByb2Nlc3NlcyBjYW4gZXhpdCBpbiB0aGUgbWlkZGxlIG9mCisJcHJvY2Vzc2luZy4gKGFscmVhZHkgZml4ZWQgaW4gVjUtNS1wYXRjaGVzIGFuZCBWNS00LXBhdGNoZXMgaW4gU1ZOCisJcmV2LiAyMDExNSwgZHVubm8gd2h5IEkgZGlkIG5vdCBwYXRjaCB0cnVuaykKKyAgICAgIC0gcGF0Y2ggMzEzMTM5NzogZnJvbSB0YWtldm9zOiBodWdlIHNwZWVkdXBzIG9mIHRoZSBUQ1AvVURQIFRhYmxlcworICAgICAgLSBwYXRjaCAzMjk5Mzg0OiBmaXggSU5GT1JNcyBzbyB0aGV5IHJldHJ5IHByb2JpbmcgZm9yIGFuIGVuZ2luZUlELgorICAgICAgLSBwYXRjaCAzMzA2NDc2OiBmcm9tIHRpbnlweXJhbWlkczogZml4IG1lbW9yeSBsZWFrIGluIHRoZSBzd3J1bgorCWNvbnRhaW5lciBsb2FkaW5nCisgICAgICAtIHVjZF9zbm1wIGJ1aWxkcyBhZ2FpbiBvbiBNaW5HVyBhbmQgQ3lnd2luLgorICAgICAgLSBwYXRjaCAzMzEwMjUwOiBmcm9tIGZlbm5lcjogbWlzYyBmaXhlcyBmb3IgZGVidWdnaW5nIG91dHB1dCBvZgorCWFnZW50eAogCiAgICAgc25tcHRyYXBkOgogICAgICAgLSBGaXhlZCBhIGRvdWJsZSBmcmVlIGF0IGV4aXQgdGhhdCB3YXMgdHJpZ2dlcmVkIGJ5IGNsZWFuaW5nIHVwIHRoZQpAQCAtMjc2LDIyICs5ODYsOTMgQEAKIAlfX3NlbGVjdF9ub2NhbmNlbCAoaW4gL2xpYjY0L2xpYmMtMi4xMS4yLnNvKSBieSAweDQwNEUyMDogbWFpbgogCShzbm1wdHJhcGQuYzoxMjU4KQogCi0gICAgc25tcGluZm9ybToKLSAgICAgIC0gZml4IGNvbnRleHRFbmdpbmVJRHMgZm9yIG91dGdvaW5nIGluZm9ybXMgZnJvbSBzbm1waW5mb3JtIHRvCi0gICAgICAgIGJlIHRoZSBsb2NhbCBlbmdpbmVJRAorICAgIGFwcHM6CisgICAgICAtIFtQQVRDSCAzMDU0ODE3XTogQWRkcyBwZXItdmFyaWFibGUgdGltZWQgb3V0cHV0IHN1cHBvcnQgdG8gc25tcHdhbGsKKwl1c2luZyAtQ1QKKyAgICAgIC0gYWRkIHNubXAuY29uZiB0b2tlbnMgZm9yIHRpbWVvdXRzIGFuZCByZXRyaWVzCiAKICAgICBidWlsZDoKICAgICAgIC0gW0JVRyAzMDg4MzYwXTogRW5zdXJlIHB5dGhvbiBtb2R1bGVzIGFyZSBidWlsdCBhZ2FpbnN0IHRoZSBjb3JyZWN0CiAJbGlicmFyaWVzCiAKICAgICBidWlsZGluZzoKKyAgICAgIC0gRml4IC0td2l0aC1zZWN1cml0eS1tb2R1bGVzIGhhbmRsaW5nIEFsbG93IHJlcGVhdGVkIG1vZHVsZXMKKwkodHNtLHRzbSkgYXMgd2VsbCBhcyBkZWZhaWx0IG1vZHVsZXMgKHVzbSkgTW92ZSB0aGUgZ2VuZXJhdGlvbiBvZgorCXRoZSBmaWxlcyBhZnRlciB0aGUgY2hlY2tpbmcKKyAgICAgIC0gTWFrZSBpdCBwb3NzaWJsZSB0byByZWdlbmVyYXRlIHVzaW5nIGF1dG9jb25mIDIuNjguCiAgICAgICAtIFNvbWUgc3lzdGVtcyBkbyBub3Qgc3VwcG9ydCB0aGUgLUUgZmxhZyB0byBncmVwLCB1c2UgYXV0b2NvbmYgdG8KIAlmaW5kIHRoZSByaWdodCBlZ3JlcCBhdCBhbGwgdGltZXMuCisgICAgICAtIGNoZWNrIGZvciAvZGV2L2ttZW0gaW5zdGVhZCBvZiBhc3N1bWluZyBpdCBleGlzdHMgYW5kIGhhcmRjb2RpbmcKKwl3aGVuIGl0IGlzIG5vdCB0aGVyZQorCisgICAgbGlibmV0c25tcDoKKyAgICAgIC0gbWFkZSB0aGUgU1NIIHRyYW5zcG9ydCBjb25maWd1cmFibGUgYXMgaXQgc2hvdWxkIGJlLgorCisgICAgbGlibmV0c25tcG1pYnM6CisgICAgICAtIE1ha2UgYWxsIGZ1bmN0aW9ucyBpbiB0aGUgZGxtb2QgbW9kdWxlIHRoYXQgZG9uJ3QgaGF2ZSB0byBiZSBwdWJsaWMKKwlzdGF0aWMKKworICAgIG1pYjJjOgorICAgICAgLSBbUEFUQ0ggMzE3NTMyM106IEZpeCBoYW5kbGluZyBvZiAnd2hpbGUgKGZhbHNlKScgYmxvY2tzCisgICAgICAtIFtQQVRDSCAzMjA0ODgzXTogRml4IGhhbmRsaW5nIG9mIG5vbi10YWJsZSBvYmplY3RzIG5hbWVkIGZvb1RhYmxlCisgICAgICAtIFtQQVRDSCAzMjExNDg0XTogU3VwcG9ydCBlbnVtZXJhdGlvbnMgaW4gbm90aWZpY2F0aW9uIHZhcmJpbmRzCisgICAgICAtIG1ha2UgdGhlIG1pYjJjIGZvcmVhY2ggcmFuZ2VzIHdvcmsgYXMgYWR2ZXJ0aXNlZCBpbiB0aGUgY29tbWVudHMuCisKKyAgICBwYWNrYWdpbmc6CisgICAgICAtIEVuYWJsZSBtaWNyby1hbmQtbWFjcm8tZmVhdHVyZSBtYW5hZ2VtZW50IHdpdGhpbiBOZXQtU05NUDsgdGhpcworCWFkZHMgYSBudW1iZXIgb2YgbmV3IGZsYWdzIHRvIGNvbmZpZ3VyZSAoLS1lbmFibGUtbWluaW1hbGlzdCBhbmQKKwktLWVuYWJsZS1yZWFkLW9ubHkpLiBUaGVzZSBjaGFuZ2VzIGFyZSBkZXNpZ25lZCB0byByZW1vdmUgbXVjaCBvZgorCXRoZSBpbmxpbmUgY29kZSB0aGF0IGlzbid0IGFsd2F5cyBuZWNlc3Nhcnkgb3IgZGVzaXJlZC4gU2NyaXB0cworCWV4aXN0IChhbmQgd2lsbCBiZSBpbXByb3ZlZCkgdG8gc3RpcCBvdXQgdW51c2VkIGNvbXBvbmVudHMgZnJvbSB0aGUKKwljb2RlIGVudGlyZWx5IHRvIGVuYWJsZSBhIHNob3J0ZXIgcmV2aWV3IHByb2Nlc3MgZm9yIHVwZ3JhZGluZyB0bworCW5ldyByZWxlYXNlcy4gVGhpcyB3b3JrIHdhcyBkb25lIGJ5IFdlcyBIYXJkYWtlciBhbmQgTWljaGFlbCBCYWVyCisJZnJvbSBTUEFSVEEsIEluYy4gYnV0IGlzIGJlaW5nIGNoZWNrZWQgaW4gYXMgYSBsYXJnZSBwYXRjaCBzaW5jZQorCWNvbnZlcnRpbmcgdGhlIG1pY3JvIHBhdGNoZXMgZnJvbSBnaXQgdG8gc3ZuIHR1cmVuZCBvdXQgdG8gYmUKKwlpbXBvc3NpYmxlCisKKyAgICBwYXRjaCAzMTQwODMzOgorICAgICAgLSBmaXggcHJveHkgR0VUTkVYVCByZXF1ZXN0cyBXaGVuIE9JRHMgcmVxdWVzdGVkIGFyZSBiZWxvdyB0aGUgcHJveHkKKwlyZXF1ZXN0IHJlbWFwLCB3ZSBuZWVkIHRvIG5vdCBpbmNsdWRlIGFueSBPSURzIHRoYXQgbWlnaHQgYmUgaW4gdGhlCisJc3BhY2UgYmV0d2VlbiB0aGUgb3JpZ2luYWwgT0lEIGFuZCB0aGUgcmVtYXBwZWQgT0lELiBUaGlzIHBhdGNoCisJZnVkZ2VzIHRoZSByZXF1ZXN0IHNvIHRoYXQgaXQgZml4ZXMgdGhlIHJlcXVlc3QgT0lEIHNvIGl0J3MganVzdAorCWJlZm9yZSB0aGUgcmVtYXBwZWQgcHJveHkgcmFuZ2UuCisKKyAgICBwYXRjaCAzMTg0MDI2OgorICAgICAgLSBBdm9pZCBjb25zdGFudCByZWZyZXNoIG9mIGludGVyZmFjZSBzdGF0aXN0aWNzCiAKICAgICBwZXJsOgotICAgICAgLSAwIHBhdGNoIDMwNDkwMjk6IGZyb20gZmVubmVjOiBmaXggYSBtZW1vcnkgbGVhayB3aXRoIHNubXAgYnVsa3dhbGtzCisgICAgICAtIHBhdGNoIDMwNDkwMjk6IGZyb20gZmVubmVjOiBmaXggYSBtZW1vcnkgbGVhayB3aXRoIHNubXAgYnVsa3dhbGtzCisgICAgICAtIHBhdGNoIGZyb20gTWFydGluIEJ1Y2s6IGRvbid0IGFsd2F5cyBvcGVuIHN0ZGVyciBhcyB0aGUgY2FsbHMgdG8KKwlzbm1wX2xvZyBhbHJlYWR5IGRvIHRoaXMgYW5kIGl0IG1lc3NlcyB1cCB0aGUgYWdlbnQgd2hlbiBlbWJlZGRlZAorCisgICAgcHl0aG9uOgorICAgICAgLSBbUEFUQ0ggMzE4NTA4NV06IEZpeCBzZWdmYXVsdCBvbiA2NC1iaXQgc3lzdGVtcworICAgICAgLSBbQlVHIDMyOTU0MDddOiBGaXggaGFuZGxpbmcgb2Ygdm9pZCBwb2ludGVyCiAKICAgICB0ZXN0aW5nOgorICAgICAgLSBBZGQgbWlzc2luZyBwcmVjb25kaXRpb25zCisgICAgICAtIEFkZGVkIGZ1bmN0aW9uIG5ldHNubXBfZGVsZXRlX3RhYmxlX2RhdGFfc2V0KCkuIEFkZGVkIGRlY2xhcmF0aW9uCisJZm9yIHRoZSBmdW5jdGlvbiBuZXRzbm1wX3RhYmxlX2RhdGFfZGVsZXRlX3RhYmxlKCkgaW4gYSBwdWJsaWMKKwlhZ2VudCBoZWFkZXIgZmlsZS4gRml4ZWQgbWVtb3J5IGxlYWsgaW4KKwluZXRzbm1wX3RhYmxlX2RhdGFfZGVsZXRlX3RhYmxlKCkuIEZpeGVkIG1lbW9yeSBsZWFrIHRyaWdnZXJlZCBieQorCXVucmVnaXN0ZXJpbmcgYSB0YWJsZSBoYW5kbGVyLiBVbml0IHRlc3RzIGNhbiBub3cgaW52b2tlIGZ1bmN0aW9ucworCWZyb20gbGliYWdlbnQuCisgICAgICAtIEFkZGVkIGZ1bmN0aW9uIG5ldHNubXBfZGVsZXRlX3RhYmxlX2RhdGFfc2V0KCkuIEFkZGVkIGRlY2xhcmF0aW9uCisJZm9yIHRoZSBmdW5jdGlvbiBuZXRzbm1wX3RhYmxlX2RhdGFfZGVsZXRlX3RhYmxlKCkgaW4gYSBwdWJsaWMKKwlhZ2VudCBoZWFkZXIgZmlsZS4gRml4ZWQgbWVtb3J5IGxlYWsgaW4KKwluZXRzbm1wX3RhYmxlX2RhdGFfZGVsZXRlX3RhYmxlKCkuIEZpeGVkIG1lbW9yeSBsZWFrIHRyaWdnZXJlZCBieQorCXVucmVnaXN0ZXJpbmcgYSB0YWJsZSBoYW5kbGVyLiBVbml0IHRlc3RzIGNhbiBub3cgaW52b2tlIGZ1bmN0aW9ucworCWZyb20gbGliYWdlbnQuIEFkZGVkIHVuaXQgdGVzdCBmb3IgdGFibGVfZGF0YXNldC4KKyAgICAgIC0gQWRkZWQgaW5ldF9udG9wKCkgYW5kIGluZXRfcHRvbigpIHVuaXQgdGVzdC4KKyAgICAgIC0gQWRkZWQgbmV0c25tcF9taWJfaGFuZGxlci5kYXRhX2Nsb25lLCBhIGZ1bmN0aW9uIHBvaW50ZXIgdGhhdAorCWRlZmluZXMgaG93IHRvIGNsb25lIG5ldHNubXBfbWliX2hhbmRsZXIubXl2b2lkLiBNdXN0IGJlIGRlZmluZWQgaWYKKwlhbmQgb25seSBpZiBkYXRhX2ZyZWUgaXMgc2V0LiBUaGUgZnVuY3Rpb24gbmV0c25tcF9oYW5kbGVyX2R1cCgpCisJZG9lcyBub3cgY2xvbmUgTUlCIGhhbmRsZXIgcHJpdmF0ZSBkYXRhIGlmIGRhdGFfY2xvbmUoKSBpcyBzZXQuCisJUHJldmlvdXNseSBhZnRlciBkdXBsaWNhdGluZyBhIE1JQiBoYW5kbGVyIGFuZCB1bnJlZ2lzdGVyaW5nIG9uZSBvZgorCXRoZSB0d28gTUlCIGhhbmRsZXJzLCB0aGUgcHJpdmF0ZSBkYXRhIHBvaW50ZXIgKG15dm9pZCkgb2YgdGhlCisJb3RoZXIgYmVjYW1lIGEgZGFuZ2xpbmcgcG9pbnRlci4gTm90ZTogYWRkaXRpb24gb2YKKwluZXRzbm1wX21pYl9oYW5kbGVyLmRhdGFfY2xvbmUgaXMgYW4gQUJJIGNoYW5nZS4gYWRkZWQgbW9yZSB0ZXN0CisJY2FzZXMgdG8gdGhlIGhhbmRsZXIgcmVnaXN0cmF0aW9uIHRlc3QuCiAgICAgICAtIEdlbmVyYXRlIGEgbm9ybWFsICNsaW5lIGRpcmVjdGl2ZSBhcyBwZXIgQzk5IGluc3RlYWQgb2YgdGhlCiAJY29tcGlsZXItc3BlY2lmaWMgIzxuPi1kaXJlY3RpdmUuCiAgICAgICAtIEludHJvZHVjZWQgbmV3IHRlc3QgdHlwZSBuZXh0IHRvIGNhcHAgYW5kIGNsaWI6IGNhZ2VudGxpYi4KQEAgLTMwMywyMyArMTA4NCwzMiBAQAogCURZTkFNSUNfQU5BTFlaRVI9InZhbGdyaW5kIC0tdHJhY2UtY2hpbGRyZW49eWVzIC0tbGVhay1jaGVjaz1mdWxsIjsKIAljZCB0ZXN0aW5nICYmIC4vUlVORlVMTFRFU1RTIC1nIHVuaXQtdGVzdHMpCiAgICAgICAtIFRlc3QgNzEgKGNvbTJzZWM2X3NpbXBsZSkgZG9lcyBub3cgc3VjY2VlZCBldmVuIGlmIElQdjYgRE5TCi0JcmVzb2x1dGlvbiBpcyBub3QgYXZhaWxhYmxlLiAoQmFja3BvcnRlZCByMTk2NDguKQorCXJlc29sdXRpb24gaXMgbm90IGF2YWlsYWJsZS4KICAgICAgIC0gVGVzdCBUMDMwIGRvZXMgbm93IHBhc3Mgb24gTWluR1cuCi0gICAgICAtIFVuaXQgdGVzdHMgY2FuIG5vdyBpbnZva2UgZnVuY3Rpb25zIGZyb20gbGliYWdlbnQuCi0gICAgICAtIFVuaXQgdGVzdHMgY2FuIG5vdyBpbnZva2UgZnVuY3Rpb25zIGZyb20gbGliYWdlbnQuIEFkZGVkIHVuaXQgdGVzdAotCWZvciB0YWJsZV9kYXRhc2V0LiAoQmFja3BvcnRlZCBmcm9tIHIxOTQ1MCBmcm9tIHRoZSB0cnVuay4pCisgICAgICAtIGF1dG8tY3JlYXRlIHVzZXIgc3BlY2lmaWVkIFNOTVBfVE1QRElSIGFuZCBTTk1QX1RNUF9QRVJTSVNURU5URElSCisJdG9vOyBkZWZhdWx0IFNOTVBfVE1QX1BFUlNJU1RFTkRJUiBiYXNlZCBvbiBTTk1QX1RNUERJUiBmb3IgdXNlcgorCXNwZWNpZmllZCBTTk1QX1RNUERJUgogCi0gICAgdW5zcGVjaWZpZWQ6CisgICAgbWFuOgorICAgICAgLSBbQlVHIDMxOTA3MjVdOiBEb2N1bWVudCBzbm1weyxfc2Vzc31zeW5jaF9yZXNwb25zZSBhbmQKKwlzbm1wX2FzeW5jX3NlbmQKKworICAgIEdlbmVyaWM6CisgICAgICAtIE1ha2UgaXQgcG9zc2libGUgdG8gYnVpbGQgc3RhdGljIGFwcGxpY2F0aW9ucyB1c2luZyBuZXQtc25tcC1jb25maWcKKwlhbmQgdGhlIC0qbGlicyBmbGFncyBvbmNlIG1vcmUuCiAgICAgICAtIFtCVUcgMzEwMjkwNF06IEFsbCBOZXQtU05NUCBDIHNvdXJjZSBmaWxlcyBhcmUgbm93IGNvbXBpbGVkIHdpdGgKIAktZm5vLXN0IHJpY3QtYWxpYXNpbmcsIGF0IGxlYXN0IGlmIHRoZSBjb25maWd1cmVkIGNvbXBpbGVyIHN1cHBvcnRzCiAJdGhpcyBmbGFnLgogICAgICAgLSBbUEFUQ0ggMzA3NDkxOF06IGZyb20gd2Vpemhlbmc6IGNoZWNrIGZvciBDT05UQUlORVJfSU5TRVJUIGZhaWx1cmVzCiAJYW5kIHJlYWN0IGFwcHJvcHJpYXRlbHkgdG8gYXZvaWQgbWVtb3J5IGxlYWtzCisgICAgICAtIFtQQVRDSCAzMTY3MzI1XTogZnJvbSBrcmlzenRvZm9ybzogVUNELVNOTVAvU3lzdGVtU3RhdHM6IGFkZAorCXZhcmlhYmxlcyB0byByZXBvcnQgY3B1c3RlYWwsIGNwdWd1ZXN0LCBjcHVndWVzdG5pY2UKIAogICAgIEN5Z3dpbjoKIAogICAgIExpbnV4OgogICAgICAgLSBbUEFUQ0ggMzA4MzAyN106IEZpeCBSUE0gc3BlYyBmaWxlIHRvIHN1cHBvcnQgQ2VudE9TCisgICAgICAtIFtQQVRDSCAzMjA1ODExXTogT3B0aW9uIHRvIHNraXAgZmQvbG9vcC9yYW0gZGV2aWNlcyBpbiBkaXNrSU9UYWJsZQogICAgICAgLSBhZ2VudDogaXBOZXRUb1BoeXNpY2FsVGFibGU6IERvIG5vdCBsb2cgYW4gZXJyb3IgbWVzc2FnZSBpZiBvbmUgb3IKIAltb3JlIGludGVyZmFjZXMgYXJlIHByZXNlbnQgdGhhdCBkbyBub3QgaGF2ZSBzdWNoIGluZm9ybWF0aW9uCiAJKE5VRF9OT0FSUCksIGUuZy4gdHVubmVscy4gUmVwb3J0ZWQgYnkgU3RlcGhlbiBIZW1taW5nZXIuIFNlZSBhbHNvCkBAIC0zMjcsMzAgKzExMTcsNTQgQEAKICAgICAgIC0gc25tcGQgaXMgYWdhaW4gc2luZ2xlLXRocmVhZGVkLgogCiAgICAgTWluR1c6CisgICAgICAtIE1hZGUgcmVncmVzc2lvbiB0ZXN0IG91dHB1dCBpbmRlcGVuZGVudCBvZiB0aGUgTmV0LVNOTVAgdmFyaWFibGVzCisJZGVmaW5lZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeS4gU29tZSB0ZXN0cyB0aGF0IGZhaWxlZCBwcmV2aW91c2x5CisJYWZ0ZXIgdGhlIE5ldC1TTk1QIGJpbmFyaWVzIChNU1ZDIGJ1aWxkKSBoYWQgYmVlbiBpbnN0YWxsZWQgZG8gbm93CisJcGFzcy4KICAgICAgIC0gY29uZmlndXJlOiBEZXRlY3Rpb24gb2YgdGhlIGZ1bmN0aW9ucyBnYWlfc3RyZXJyb3IoKSwKLQlnZXRhZGRyaW5mbygpLCBnZXRob3N0bmFtZSgpIGFuZCBnZXRob3N0bmFtZSgpIGRvZXMgbm93IHN1Y2NlZWQuCi0JKEJhY2twb3J0ZWQgcjE5NjQ2IGZyb20gdGhlIHRydW5rLikKKwlnZXRhZGRyaW5mbygpLCBnZXRob3N0YnluYW1lKCkgYW5kIGdldGhvc3RuYW1lKCkgZG9lcyBub3cgc3VjY2VlZC4KICAgICAgIC0gdGVzdGluZzogSWYgdGhlIGFnZW50IGhhcyBiZWVuIGFza2VkIHRvIHN0b3AsIHdhaXQgdW50aWwgdGhlIHNubXBkCiAJcHJvY2VzcyBkaXNhcHBlYXJlZCBiZWZvcmUgcHJvY2VlZGluZy4KKyAgICAgIC0gVGVzdHMgMDI1IGFuZCAwMjYgcGFzcyBvbiBNaW5HVyBldmVuIGlmIHdpbkV4dERMTCBoYXMgYmVlbiBlbmFibGVkLgorCisgICAgTmV0QlNEOgorICAgICAgLSBEcmFnb25GbHkgc3VwcG9ydCBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KKworICAgIE9wZW5CU0Q6CisgICAgICAtIFVwZGF0ZSBTV1J1biBjb2RlIHRvIHVzZSBrdm1fZ2V0cHJvYzIgW0Zyb20gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQogCiAgICAgV2luMzI6CiAgICAgICAtIEF2b2lkIHRoYXQgTVNWQyByZXBvcnRzIGEgd2FybmluZyBtZXNzYWdlIGFib3V0IHJlZGVmaW5pdGlvbiBvZiB0aGUKIAltYWxsb2MoKSBtYWNybyBkdXJpbmcgYnVpbGRpbmcgdGhlIE5ldC1TTk1QIHNvdXJjZSBjb2RlLgorICAgICAgLSBEZXByZWNhdGVkIGxpYnNubXAuZGVmIC0gYWRkIE5FVFNOTVBfSU1QT1JUIHRvIGZ1bmN0aW9uCisJZGVjbGFyYXRpb25zIGluc3RlYWQgdG8gZXhwb3J0IGEgZnVuY3Rpb24gZnJvbSBuZXRzbm1wLmRsbC4KKyAgICAgIC0gR3VhcmQgbmV0c25tcF91ZHBfcmVjdmZyb20oKSBldGMuIGRlY2xhcmF0aW9ucyBjb25zaXN0ZW50bHkuIEJ1aWxkcworCXdpdGggVmlzdWFsIFN0dWRpbyAyMDEwLgorICAgICAgLSBJbnRyb2R1Y2VkIG5ldHNubXBfcGlkX3QuIEVsaW1pbmF0ZWQgY2FzdHMgYmV0d2VlbiBpbnQgYW5kIEhBTkRMRQorCWluIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYyBhbmQKKwlhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuYy4KICAgICAgIC0gV2hlbiBzbm1wZC5leGUgaXMgc3RhcnRlZCBpbiBhIGNvbW1hbmQgcHJvbXB0IHdpbmRvdywgdGhlIHNubXBkCiAJcHJvY2VzcyBub3cgc3RvcHMgdXBvbiB0aGUgZmlyc3Qga2V5IHByZXNzLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0bwogCWRlYnVnIHNubXBkLmV4ZSBmb3IgbWVtb3J5IGxlYWtzLgogICAgICAgLSBbUEFUQ0ggMzA4NTE4N106IEJ1aWxkaW5nIHZpYSB0aGUgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gcHJvamVjdAogCWZpbGUgKC5kc3cvLmRzcCkgd29ya3MgYWdhaW4uCisgICAgICAtIFtQQVRDSCAzMjkzODQyXTogRWxpbWluYXRlIHJlZ2lzdHJ5IGFyZ3VtZW50IGxpbWl0IG9mIDEyNworCWNoYXJhY3RlcnMgKHRoaXMgbGltaXRhdGlvbiB3YXMgcmVwb3J0ZWQgYnkgU3lsdmFpbiBEZXJ5KS4KICAgICAgIC0gYnVpbGRpbmc6IEF2b2lkIHRoYXQgTVNWQyAyMDEwIHByaW50cyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dAogCXJlZGVmaW5pbmcgRUFERFJJTlVTRS4KICAgICAgIC0gYnVpbGRpbmc6IEJ1aWxkcyBub3cgY29ycmVjdGx5IHdpdGggYSA2NC1iaXQgY29tcGlsZXIuCiAgICAgICAtIGJ1aWxkaW5nOiBiYXRjaCBidWlsZCB3aXRoIE9wZW5TU0wgZW5hYmxlZCBhbmQgd2l0aCByZWNlbnQgT3BlblNTTAogCWRldmVsb3BtZW50IGZpbGVzIHdvcmtzIGFnYWluLgotICAgICAgLSBzaHV0ZG93bl9zbm1wTm90aWZ5RmlsdGVyVGFibGUoKSBhbmQgc2h1dGRvd25fd2luRXh0RExMKCkgYXJlIG5vdwotCWludm9rZWQgd2hlbiB0aGUgTmV0LVNOTVAgc2VydmljZSBpcyBzdG9wcGVkLiAoUGFydGlhbGx5IGJhY2twb3J0ZWQKLQlyMTk1MTUgZnJvbSB0aGUgdHJ1bmsuKQorICAgICAgLSBoZWFkZXIgZmlsZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhbiBub3cgYmUgdXNlZCBpbiB0aGUKKwlNaW5HVyBlbnZpcm9ubWVudC4KICAgICAgIC0gdGVzdGluZzogQXZvaWQgdGhhdCBUMjAwIGZhaWxzIG9uIGtub3duIE1pY3Jvc29mdCBTTk1QIGV4dGVuc2lvbgogCURMTCBidWdzLgorICAgICAgLSBCdWlsZCBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmMgb25seSBpZgorCU5FVFNOTVBfRU5BQkxFX0lQVjYgaGFzIGJlZW4gZGVmaW5lZC4KKyAgICAgIC0gRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uCisJb2YgdGhlIE1JQi1JSSBpcE5ldFRvTWVkaWFUYWJsZS4KKyAgICAgIC0gTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW86IExpbmsgd2l0aCBnZGkzMi5saWIgaWYgT3BlblNTTCBoYXMgYmVlbgorCWVuYWJsZWQgYmVjYXVzZSBnZGkzMi5saWIgaXMgYSBkZXBlbmRlbmN5IG9mIE9wZW5TU0wuCiAKICo1LjYqCiAKQEAgLTE2MjMsNiArMjQzNyw3IEBACiAgICAgICAtIFtQQVRDSCAxNjAwNDUzXTogT1MgWCBjb21waWxlLXRpbWUgZW5kaWFuIGRldGVybWluYXRpb24KICAgICAgIC0gW1BBVENIIDE2MDA1MjJdOiBDUFUgSEFMIGltcGxlbWVudGF0aW9uIGZvciBtYWNoL2RhcndpbgogICAgICAgLSBJbXByb3ZlIG1lbW9yeSByZXBvcnRpbmcgKHBhdGNoIGZyb20gQXBwbGUpCisgICAgICAtIFBhdGNoOiAzNTE0MDQ5IGZyb20gdHdvYml0cy1naXRodWI6IGZpeCBjb21waWxhdGlvbiBvbiBkYXJ3aW4xMQogCiAgICAgU29sYXJpczoKICAgICAgIC0gW0JVRyAxNjI2MTUzXTogTm8gaHJTV1J1biBpbmZvcm1hdGlvbnMgb24gU29sYXJpcyB6b25lcwpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDc5Zjk0OGIuLjVmYWJjOGEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsNiArMSwzMzc0IEBACisjIC0qLSB0ZXh0IC0qLQorCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUNoYW5nZXM6IFY1LjYuMSAtPiBWNS42LjIKK0NoYW5nZXM6IFY1LjcuMy5wcmUyIC0+IFY1LjcuMy5wcmUzCisKK2NvbW1pdCA1NDE2NmNmNmM3YTk4YmY4ZTVkMGRiYWJmOWI1ZTVhMjU1YzRjNDIxCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgRmViIDI1IDEyOjQ1OjE0IDIwMTQgLTA4MDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjcuMy5wcmUzCisKK2NvbW1pdCAzZDRlM2E2NmJkMDk3ZTM3MjBmZTVkZTJmMmUwNTc0MWIzMzA2MzA1CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgRmViIDI1IDExOjQyOjE1IDIwMTQgLTA4MDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjMucHJlMworCitjb21taXQgYTFmZDY0NzE2ZjY3OTRjNTVjMzRkNzdlNjE4MjEwMjM4YTczYmZhMQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEZlYiAxOSAxNToyMTo1NyAyMDE0IC0wODAwCisKKyAgICBidWcgZml4IGZyb20gZmVubmVyOiBmaXggSUNNUCBtaWIgdGFibGUgaGFuZGxpbmcgb24gbGludXgKKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjcuMy5wcmUxIC0+IFY1LjcuMy5wcmUyCisKK2NvbW1pdCBiZjBhMWMzN2Q4YjhjNjQ0ZTgzNzA0MWQwOTBhYWJlOGZkODEzMWU4CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgRmViIDI1IDA3OjQ5OjA0IDIwMTQgLTA4MDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjcuMy5wcmUyCisKK2NvbW1pdCBkZWNmZDhkNzliNTRkMjk4ZGVkOTc0MzllZmI3MTBlOGY2YmE1MjRjCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgRmViIDI1IDA3OjMzOjUyIDIwMTQgLTA4MDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjMucHJlMgorCitjb21taXQgOGFlY2NlZjM5YmJhZWI4YjgwMjVhNjhlYzQ3NjFiYzgyZWM5YWVhYQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEZlYiAyNSAwNzoyNzo0NyAyMDE0IC0wODAwCisKKyAgICBORVdTOiBzbm1wZDogcGF0Y2ggMjUyNTogZnJvbSBSeWFuIFN0ZWlubWV0ejogRml4IGFyZ3VtZW50IGxlbmd0aCBwYXJzaW5nIG9mIHRoZSBob3N0IHJlc291cmNlcyBtaWIKKworY29tbWl0IGIyMjJlN2EzZWVmNTljYmI2OGE0NTM0NzZjYjM2NDM0MmM3NGU2NDAKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBGZWIgMTkgMjI6MjY6MDggMjAxNCArMDEwMAorCisgICAgRml4IHNwZWxpbmcgZXJyb3IKKworY29tbWl0IGY4ZmNiM2JjMzgxODhjY2JlOWJhY2VlNThkNmZkMmI5ODNkMDk5MjcKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBGZWIgMTkgMjI6MjQ6MjYgMjAxNCArMDEwMAorCisgICAgRml4IHNwZWxpbmcgZXJyb3IKKworY29tbWl0IGQyMTRkNzBjNDUyNGU2MmZjY2FmMTA4M2FiYzViYTFhNDM5YTQ2M2UKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBGZWIgMTkgMjI6MjE6NTUgMjAxNCArMDEwMAorCisgICAgc25tcHN0YXR1czogZGV0ZWN0IFNOTVAgZXhjZXB0aW9uIHJlc3BvbnNlcy4KKworY29tbWl0IGJmNzVlYzY2OTY1ZDE1N2NiMDQ0MmY3ZGZmNTY1NmY5OWNkNzA2MzUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBGZWIgMTkgMjI6MjA6MDUgMjAxNCArMDEwMAorCisgICAgRml4IHRlc3QgZm9yIGNvbTJzZWM2IGFjY2Vzcy4KKworY29tbWl0IDY1NjdhMzdmYTMwMWI4ZmExYjY4MDA5ZDVhMGIzYTNjYmZiOWU4ZjEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBGZWIgMTcgMjE6NDk6MTMgMjAxNCArMDEwMAorCisgICAgdGVzdGluZy9NYWtlZmlsZS5pbjogbWFrZSBzdXJlICckJyBzdXJ2aXZlcyBmb3IgcGVybCB0ZXN0LgorCitjb21taXQgMDViNTUxYmMzMzExODVlZGExYzA4MWQzMTM4ZDBhYzYyNWIwN2Q2YQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEZlYiAxNyAyMTozNjo0OCAyMDE0ICswMTAwCisKKyAgICBGaXggc29tZSBtYW4gcGFnZSBzcGVsbGluZ3MuCisKK2NvbW1pdCA4YjA1NTVkOTVjYmMyMzhjYmU5ODM2NDM5Yjg4MDcwYzgwYTljYTVlCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gRmViIDE3IDIxOjM1OjI4IDIwMTQgKzAxMDAKKworICAgIHNubXBuZXRzdGF0OiBmaXggY2FsbCBvZiBtZW1jcHkgd2l0aCBvdmVybGFwcGluZyBhcmVhcy4KKworY29tbWl0IDNjNmE3YTZjOTQ3NDI0ODI0ZTcyNGUyOTQ0ODNhN2VjZDcwZDlkNDEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBGZWIgMTcgMjE6MzM6NDcgMjAxNCArMDEwMAorCisgICAgcm91dGVfaW9jdGwuYzogc2V0IHByb3BlciBtYXNrIGJlZm9yZSBTSU9DREVMUlQuCisKK2NvbW1pdCBmOTllZjVjZWYyMDNlYTM3ODU1M2EyYWI0OTI1ZmNkODY5ZTdmNWEzCitBdXRob3I6IEJpbGwgRmVubmVyIDxmZW5uZXJAZ21haWwuY29tPgorRGF0ZTogICBUdWUgRmViIDExIDA4OjQ3OjUxIDIwMTQgLTA4MDAKKworICAgIERhdmlkIEphcnZpZSdzIHBhdGNoIGZvciBidWcgMjUwNworCitjb21taXQgZDcwZjJlOTFlMmM3MjU4ZTc2OGUzMmI2ODNkODE0YTk0MTU2NGFjMQorQXV0aG9yOiBCaWxsIEZlbm5lciA8ZmVubmVyQGdtYWlsLmNvbT4KK0RhdGU6ICAgTW9uIEZlYiAzIDExOjU4OjAzIDIwMTQgLTA4MDAKKworICAgIEFsbG93IHRoZSBub2RlbWFwIHRvIGNvbnRhaW4gbXVsdGlwbGUgbm9kZXMgZm9yIG1pYnMgbGlrZSBJRi1NSUIKKyAgICAKKyAgICBJbiB0aGUgSUYtTUlCLCAiaW50ZXJmYWNlcyIgYW5kICJpZk1JQk9iamVjdHMiIGJvdGggY29udGFpbgorICAgIHNpZ25pZmljYW50IHN1YnRyZWVzLiAgQWxsb3cgbm9kZW1hcCB0byBjb250YWluIGEgY29tbWEtc2VwYXJhdGVkCisgICAgbGlzdCBvZiBub2RlcywgdG8gaGFuZGxlIE1JQnMgbGlrZSB0aGlzLgorCitjb21taXQgOTg3ODFhZTNkYTQzYjdiMTU4M2VjZGUzZTIxYmI2NTI1YTJjMGI4MAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEphbiAyNyAyMjoyNDoxOCAyMDE0ICswMTAwCisKKyAgICByb3V0ZV9pb2N0bC5jOiBGaXggc2V0dGluZyB0aGUgbmV0bWFzayB3aGVuIGNyZWF0aW5nIHJvdXRlIHRocm91Z2gKKyAgICBpbmV0Q2lkclJvdXRlVGFibGUgYW5kIGlwQ2lkclJvdXRlVGFibGUuCisKK2NvbW1pdCAyZTk0Nzc3NjkzZjE4NTM0NzlkZWQ2NzBiZTMwN2VjZTcxMzhmZWI1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSmFuIDI3IDIyOjEzOjA1IDIwMTQgKzAxMDAKKworICAgIEZpeCBjb21waWxlIGZvciBTb2xhcmlzIHdpdGhvdXQgSVB2Ni4KKworY29tbWl0IDhmNjk5MWEyMTE0ZmQyMWJhNTUxOWVlOTU3NmJlYjA4MmY2MDNkZWMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMjMgMTY6MzA6NDYgMjAxNCArMDEwMAorCisgICAgc25tcG5ldHN0YXQ6IHNlYXJjaCBpZk5hbWUgYW5kIGlmQWxpYXMgd2hlbiBsb29raW5nIGZvciBpbnRlcmZhY2UKKyAgICBuYW1lIGZyb20gLUNJIG9wdGlvbi4KKworY29tbWl0IDRhMzYwMTA0NjU5YzE2OWNlMjMyMjU2ZTEzOGQ5MzhkOTRlNDM1ZjkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMjMgMTY6Mjg6MzIgMjAxNCArMDEwMAorCisgICAgbG9nbWF0Y2g6IGZpeCBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhhbmtzIHRvIGdjYyBvciBjbGFuZworICAgIHdpdGggLWZzYW5pdGl6ZT1hZGRyZXNzIChyZWNvbW1lbmRlZCEpCisKK2NvbW1pdCBlZWYyZjY0YjQ2MzU3YjM1M2M3OTUwNGJjNTkzNTM1ZWJlNzQyMWU3CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDIzIDE2OjI3OjA3IDIwMTQgKzAxMDAKKworICAgIGNwdV9saW51eDogc3VwcG9ydCBzeXN0ZW1zIHdpdGggbW9yZSB0aGFuIDEwMCBjcHVzLgorCitjb21taXQgM2JkNjgzYzk2ZDZhODg2NGZiZDgwNzg1NzRhZWU4Y2Q0MzFjZTMwMgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxNSAxODozNjowMSAyMDE0ICswMTAwCisKKyAgICBVcGRhdGUgb3B0aW9ucyBsaXN0cyBpbiBtYW51YWwgcGFnZXMgYW5kIGNvbW1hbmRzIGhlbHAuCisKK2NvbW1pdCBhNWVmZThkZjE3ZGRjNGY2NjkzYzdkYTlhNTJjNDAxZjRkYjJiZTYzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDE1IDE4OjI4OjI0IDIwMTQgKzAxMDAKKworICAgIHRlc3QgVDAyNzogbWFrZSBzdXJlIGl0IHdvcmtzIGFsc28gd2hlbiBjb25maWd1cmVkIHdpdGggLS13aXRoLWRlZmF1bHQtc25tcC12ZXJzaW9uICE9IDMuCisKK2NvbW1pdCA1N2QxMDgyOTAwZjlhYzkzMTQ0NDMxNmE2Zjk1ZjE5ZWRhMDY5MDc0CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDE1IDE4OjI2OjI0IDIwMTQgKzAxMDAKKworICAgIGNwdV9saW51eDogcmVtb3ZlIHJlZHVuZGFudCBjYXN0cy4KKworY29tbWl0IDlmNGM1NzI2MTQwOTE0MDRkZWNiYTBkNGVmMWE0Y2JhZjlmYzViZDIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDkgMTM6MzU6MjcgMjAxNCArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEZpeGVkIG1vbml0b3JpbmcgYmFzZWQgb24gbm9uLWRlbHRhIHRyaWdnZXIuCisgICAgCisgICAgc25tcGQgY3Jhc2hlZCB3aXQgZm9sbG93aW5nIHNubXBkLmNvbmY6CisgICAgICAgIG1vbml0b3IgLXMgLUQgLXIgMTAgLWUgTE9HTUFUQ0ggLW8gbG9nTWF0Y2hDdXJyZW50Q291bnQgIkxvZyBNYXRjaCIgIT0gbG9nTWF0Y2hDdXJyZW50Q291bnQKKyAgICAgICAgbG9nbWF0Y2ggTG9naW5GYWlsdXJlMSAvdmFyL2xvZy9zZWN1cmUgMTAgc3U6IC4qZmFpbC4qCisgICAgCisgICAgVGhlIHJlYXNvbiB3YXMgdW5pdGlhbGl6ZWQgdmFyaWFibGUgc3lzVVRfdmFyIGluIG10ZVRyaWdnZXJfcnVuKCksIGl0IHdhcworICAgIGZpbGxlZCBvbmx5IGlmIHRoZSB0cmlnZ2VyIHdhcyBkZWx0YS12YWx1ZWQsIHdoaWxlIGl0cyB2YWx1ZSB3YXMgdXNlZCBmb3IgYWxsCisgICAgdHJpZ2dlcnMuCisgICAgCisgICAgV2l0aCB0aGlzIHBhdGNoLCBzeXNVVF92YXIgaXMgZmlsbGVkIGZvciBhbGwgY29kZSBicmFuY2hlcyB3aGVyZSBpdCBpcyBuZWVkZWQuCisKK2NvbW1pdCBjNzUxMmFmZTU2NDNlY2FhZTk3NDVhYzE5OWI4MzljM2FhZDg0NTdiCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDI5IDE3OjM0OjUxIDIwMTMgKzAxMDAKKworICAgIFJlZ2VuZXJhdGUgZGVwZW5kZW5jaWVzCisKK2NvbW1pdCBjOTFmODQwZDgzOTgxZjY2MGI3NTI3NGRiY2MzODdjYjVjNWY5OWFmCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDI5IDE3OjI5OjI2IDIwMTMgKzAxMDAKKworICAgIFJlZ2VuZXJhdGUgZGVwZW5kZW5jaWVzCisKK2NvbW1pdCAyZGQ3ZGJhNzZkMWQwYjRmODY2ODM0ZTBmZDYwMTQ4YzI4MWExNTNjCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDI5IDE3OjI1OjA1IDIwMTMgKzAxMDAKKworICAgIFJlZ2VuZXJhdGUgZGVwZW5kZW5jaWVzCisKK2NvbW1pdCA1OTE0MzFmNzk5MWY4M2QyMzg1YWRiYzVhMjJjNGE4OTU3NmJjMzEzCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDI5IDE3OjIxOjU2IDIwMTMgKzAxMDAKKworICAgIFJlZ2VuZXJhdGUgY29uZmlndXJlIHVzaW5nIHRoZSByaWdodCBhdXRvY29uZiB2ZXJzaW9uCisKK2NvbW1pdCA4NWJiNGI1YzlmNDg5Njg3NjcxNWNiMWYxNGY0ZjFiNTgyZDIyM2JkCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDI5IDE3OjEyOjAzIDIwMTMgKzAxMDAKKworICAgIFJlZ2VuZXJhdGUgZGVwZW5kZW5jaWVzCisKK2NvbW1pdCBkMjU1Y2E0MjZkMWUzZDRiYzQ4YjhmM2RiOTM3NDM1Nzg4OTM0YzQyCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDI5IDEyOjM1OjMwIDIwMTMgKzAxMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBBdm9pZCBkdXBsaWNhdGUgYW5kIHRyYWlsaW5nIHNwYWNlcyBpbiB0aGUgZGVwZW5kZW5jeSBmaWxlcy4KKworY29tbWl0IGQxNWNkMmI5NzQzY2NjYjUwMmRlYWZkMTQzYWRlMGFhOTBjZjMxZTQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBTZXAgMjEgMDk6MDU6MTMgMjAxMyArMDIwMAorCisgICAgTWluR1c6IEJ1aWxkIGZpeAorICAgIAorICAgIEFwcGFyZW50bHkgd2l0aCByZWNlbnQgTWluR1cgaGVhZGVyIGZpbGVzIDx3aW5zb2NrMi5oPiBzaG91bGQgYmUKKyAgICBpbmNsdWRlZCBpbnN0ZWFkIG9mIDx3aW5zb2NrLmg+LiBNb2RpZnkgPG5ldC1zbm1wL3R5cGVzLmg+IGFjY29yZGluZ2x5LgorCitjb21taXQgN2JhMjNlNTcwNzY0OTllZjhlZWIyMzg4NTM4MzQ3M2NjZjQ0NzM2NQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIERlYyAxNSAxMDo1ODoyNSAyMDEzICswMTAwCisKKyAgICBXaW4zMjogYmF0Y2ggYnVpbGQ6IENoZWNrIHdoZXRoZXIgUGVybCBhcmNoaXRlY3R1cmUgbWF0Y2hlcyB0YXJnZXQgYXJjaGl0ZWN0dXJlCisgICAgCisgICAgQnVpbGRpbmcgdGhlIFBlcmwgbW9kdWxlcyBmYWlscyBpbiBhIHN1YnRsZSB3YXkgaWYgZS5nLiBhIDMyLWJpdCBQZXJsCisgICAgaW50ZXJwcmV0ZXIgaXMgcHJlc2VudCBpbiAlUEFUSCUgYW5kIGEgNjQtYml0IEMgY29tcGlsZXIgb3IgdmljZSB2ZXJzYS4KKyAgICBIZW5jZSBjaGVjayB3aGV0aGVyIFBlcmwgaW50ZXJwcmV0ZXIgYW5kIEMgY29tcGlsZXIgdGFyZ2V0IGFyY2hpdGVjdHVyZQorICAgIG1hdGNoIGJlZm9yZSBzdGFydGluZyBhIGJ1aWxkLgorCitjb21taXQgNmI3MDZjNTNkNGNmNzUxZTQ5NWFhYjY2ZmUzOWZkNTFjMzJjZTkzMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIERlYyAxNSAxMDowNjoyMSAyMDEzICswMTAwCisKKyAgICBXaW4zMjogVmlzdWFsIFN0dWRpbyAyMDEzIGJ1aWxkIGZpeAorICAgIAorICAgIEFwcGFyZW50bHkgVmlzdWFsIFN0dWRpbyAyMDEzIGRvZXMgbm90IHN1cHBvcnQgZ290byA8dHlwZWRlZiBuYW1lPi4KKyAgICBIZW5jZSByZW5hbWUgdGhlIFVJTlQgbGFiZWwuIEZvciBjb25zaXN0ZW5jeSByZWFzb25zLCBhbHNvIHJlbmFtZQorICAgIHRoZSBPQ1QgbGFiZWwuCisKK2NvbW1pdCAxM2M4NTkwZTM4MjY5YTkyNjVlYWQ1Yzg1ZjA1Yzg4OTRlODZkODRjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gRGVjIDE1IDA5OjMxOjQ0IDIwMTMgKzAxMDAKKworICAgIFJlbW92ZSB0aGUgTkVUU05NUF9ET05UV0FJVCAvIE5FVFNOTVBfTk9TSUdOQUwgYWxpYXNlcyBmb3Igc2VuZHRvL3NlbmRtc2cgZmxhZ3MKKyAgICAKKyAgICBOb3RlOiB0aGlzIHBhdGNoIGlzIGEgbW9yZSBlbGFib3JhdGUgdmVyc2lvbiBvZiB0aGUgVjUtNy1wYXRjaGVzIGNvbW1pdAorICAgIDg5YTUwNGZlMzMxZTA5YTU0ZjZiMDFjMjg3N2NmMDIyOTAwNzA1YTggKDIwMTEtMTItMTkpLgorCitjb21taXQgZTBlYWQyZDU0ZWJmNDM1MzNlNTYyYzM0MDJlMTIxODhjZmRjMDc5ZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IERlYyAxNCAxODo1NDowMSAyMDEzICswMTAwCisKKyAgICB3aW4zMi9idWlsZC5wbDogQWRkIHN1cHBvcnQgZm9yIHRoZSBWaXN1YWwgU3R1ZGlvIDIwMTMgY29tbWFuZC1saW5lIGVudmlyb25tZW50CisKK2NvbW1pdCA4ODg2MDk1YTk5MDkwMjkzYjA2YTA3MTllN2I4NjhmMWVkYzE0OTMzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgRGVjIDE0IDE4OjI5OjAxIDIwMTMgKzAxMDAKKworICAgIGxpYmFnZW50OiBXaW4zMiBidWlsZCBmaXggKHNlZSBhbHNvIGNvbW1pdCAwMTcyM2M2KQorCitjb21taXQgNWYzMmI0YWFhOGJjZDIyZWJhOWM2NDkyMjNmZTA4MGQ1NDc5YmM4ZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IERlYyAxNCAxNzoxNzozMCAyMDEzICswMTAwCisKKyAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaDogQWRkIGEgbWlzc2luZyBkZWNsYXJhdGlvbgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjcuMiAtPiBWNS43LjMucHJlMQorCitjb21taXQgZDAxMTdhZGVlODRlZmNiNThhNWU0MTgzZjdkN2NjNmU3MDBmMDI2NAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IERlYyA1IDIzOjMzOjUxIDIwMTMgLTA4MDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjcuMy5wcmUxCisKK2NvbW1pdCBiMWRiZGE4YmJjY2E4MjM3NzY2NGRjYTljYjZiYjA2ZjljZTYzN2EyCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDUgMjM6MzM6MzcgMjAxMyAtMDgwMAorCisgICAgUmVwbGFjZSAvLyBjb21tZW50cyB3aXRoIC8qIGNvbW1lbnRzCisKK2NvbW1pdCA5ZWUzOTZjZWMxODExNTEyZmJjYjI0NDkwYjNiZTBiOTcwZjY5ZmZiCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDUgMjM6MDY6MTMgMjAxMyAtMDgwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcuMy5wcmUxCisKK2NvbW1pdCA2YzM5MmZlZDZjZDVkN2EzMmVkMTBjODE3MGFlZDg1MWNlZTc3OTg1CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDUgMjM6MDQ6MjUgMjAxMyAtMDgwMAorCisgICAgaW5jcmVtZW50IHRoZSByZXZpc2lvbgorCitjb21taXQgZjU0MDNlNzU2N2ViMDcxYmVkOGRhZGJhMzhhMmNkYTYwMzMyYjhmYworQXV0aG9yOiBCaWxsIEZlbm5lciA8ZmVubmVyQGdtYWlsLmNvbT4KK0RhdGU6ICAgU3VuIERlYyAxIDE4OjI0OjEyIDIwMTMgLTA4MDAKKworICAgIERvbid0IHNldCB0aGUgaWZpbmRleCB3aGVuIHNlbmRpbmcgYSBub3JtYWwgcmVwbHkuCisgICAgCisgICAgU2V0dGluZyB0aGUgaWZpbmRleCBpbiB0aGUgSVBfUEtUSU5GTyByZXN1bHRzIGluIHNldHRpbmcKKyAgICB0aGUgc291cmNlIGFkZHJlc3MgdG9vIChpZ25vcmluZyB0aGUgc291cmNlIGFkZHJlc3MgdGhhdAorICAgIHdlIGFsc28gc3VwcGx5KS4gIFRoZSBzZXF1ZW5jZSBoZXJlIGlzIHRoYXQgd2Ugc2VuZCB3aXRoCisgICAgbm8gaW50ZXJmYWNlIHNwZWNpZmllZCBidXQgdGhlIHJlcXVlc3QncyBkZXN0aW5hdGlvbgorICAgIHNwZWNpZmllZCBhcyBvdXIgc291cmNlLiAgSWYgd2UgZ2V0IEVJTlZBTCwgaXQncyBiZWNhdXNlCisgICAgdGhlIHJlcXVlc3QncyBkZXN0aW5hdGlvbiB3YXMgYSBicm9hZGNhc3QgYWRkcmVzcyB3aGljaAorICAgIGlzIGFuIGludmFsaWQgc291cmNlIGFkZHJlc3MsIHNvIHdlIHRyeSBhZ2FpbiB3aXRoIHRoZQorICAgIGluY29taW5nIGludGVyZmFjZSdzIGlmX2luZGV4IGFuZCBzcGVjaWZ5IHRoZSBzb3VyY2UKKyAgICBhcyBJTkFERFJfQU5ZLgorICAgIAorICAgIElmIHdlIHN1cHBseSB0aGUgaWZpbmRleCBpbiB0aGUgZmlyc3QgY2FsbCwgYSByZXBseSBmcm9tCisgICAgYSBtdWx0aS1ob21lZCBhZ2VudCBtYXkgY29tZSBmcm9tIGEgZGlmZmVyZW50IHNvdXJjZSBhZGRyZXNzCisgICAgdGhhbiB0aGUgcmVxdWVzdCB3YXMgc2VudCB0bywgcG90ZW50aWFsbHkgY29uZnVzaW5nIGEgbWFuYWdlci4KKyAgICBUaGlzIGJ1ZyB3YXMgZmlyc3QgaW50cm9kdWNlZCBpbiBTVk4gcjE3ODU1IGFuZCB3YXMgZml4ZWQKKyAgICBpbiBTVk4gcjE5NzY3OyBhbHNvIHNlZSB0aGUgbWFpbGluZyBsaXN0IHRocmVhZAorICAgIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvbWFpbGFyY2hpdmUvZm9ydW0ucGhwP3RocmVhZF9uYW1lPUFBTkxrVGltMzdIN003QmEwMTBMbWRrMVlHWUt3UFRrRHlSS29Ecjc2dXFEVCU0MG1haWwuZ21haWwuY29tJmZvcnVtX25hbWU9bmV0LXNubXAtY29kZXJzCisKK2NvbW1pdCAxNDRhMTMyMDhiNGZhNmYwYTFjZDk3MWY0MWE3Mjc5NzE2YjI3ZWVlCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTm92IDI5IDA4OjA3OjI4IDIwMTMgKzAxMDAKKworICAgIHNubXBuZXRzdGF0OiBmaXhpbmcgdGhlIHN0YXRzIG91dHB1dCBicm9rZSB0aGUgY29ubiBvdXRwdXQgOi0oLiBGaXhlZC4KKworY29tbWl0IGY0ZTVlZTZmMzk2MzBiNzNmOGFkOTk0NmM5OTBlOTY5MDU4MGQ3Y2YKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFdlZCBOb3YgMjcgMDE6MTI6MDAgMjAxMyArMDEwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogQWRkIHRlc3RzIGZvciBhc25fcmVhbGxvY19yYnVpbGRfKmludCogYW5kIHRlc3RzIGZvciBvcGFxdWUgdW5zaWduZWQgNjQtYml0IHR5cGVzLgorCitjb21taXQgMjBlNGIzNzkzMmE5ZTljYzU2YjM2MGEyMzZlOWQ4MTgwNzkzYTI5NworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgV2VkIE5vdiAyNyAwMDo1NDo1OCAyMDEzICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBDb3JyZWN0IHRoZSB0eXBlIGNoZWNrIGZvciBvcGFxdWUgdmFyaWFibGVzIHdoZW4gZGVjb2RpbmcgY291bnRlcjY0IHZhbHVlcy4KKyAgICAKKyAgICBUaGFua3MgdG8gcmtqQHNvZnRob21lLm5ldCBmb3IgcmVwb3J0aW5nIHRoaXMgaXNzdWUuCisKK2NvbW1pdCA2ZTc2Y2JiYjJhMDc4M2YyMmY1OGZiN2QzMjNlOWY3MjE3Y2M2MDRhCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBXZWQgTm92IDI3IDAxOjAxOjA0IDIwMTMgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEF2b2lkIGZhaWx1cmUgdG8gdHJpZ2dlciBzaWduIGV4dGVuc2lvbiBkdWUgdG8gb3ZlcmxvbmcgdHlwZXMKKyAgICAKKyAgICBJbiBhc25fcmVhbGxvY19yYnVpbGRfc2lnbmVkX2ludDY0IHRoZSBhbGdvcml0aG0gYXNzdW1lcyB0aGF0IHNoaWZ0aW5nCisgICAgdmFsdWVzIGdyZWF0ZXIgdGhhbiAweDdmZmZmZmZmIHJpZ2h0IGlzIGFuIGFyaXRobWV0aWMgc2hpZnQgdGhhdCB3aWxsCisgICAgc2hpZnQgaW4gMSdzLiBPbiBob3N0cyB3aGVyZSBsb25nIGlzIG1vcmUgdGhhbiAzMiBiaXRzIHRoZSB1c2Ugb2YgbG9uZworICAgIGZvciAnbG93JyBhbmQgJ2hpZ2gnIG1ha2VzIHRoaXMgYXNzdW1wdGlvbiBmYWxzZS4KKyAgICAKKyAgICBUaGFua3MgdG8gcmtqQHNvZnRob21lLm5ldCBmb3IgcmVwb3J0aW5nIHRoaXMgaXNzdWUuCisKK2NvbW1pdCA0YTRiNzhlNjNkZDY4ODg5MmI3Mzk5YjU4NGUyNmUwNDdkMzY3NTAxCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDI3IDIyOjE2OjQ0IDIwMTMgKzAxMDAKKworICAgIEFkZGl0aW9uYWwgZml4IGZvciBkYXJ3aW4xMworCitjb21taXQgOTFiZDVkNGM1ZjQxYjU0YzQ2MjQyODgzZGI5MmFhNGU0OTQ1NTI5NAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAyNyAyMjoxMzowMyAyMDEzICswMTAwCisKKyAgICBzbm1wbmV0c3RhdDogZml4IHRydW5jYXRlZCBzdGF0aXN0aWNzIHdoZW4gdXNpbmcgLXYxCisKK2NvbW1pdCAwY2IxNGQ0ZTVjMzlhMDdjNzg0NzQ4ODFlNmM3M2ZhNjE3NTA3YmRiCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDI3IDIyOjA2OjU4IDIwMTMgKzAxMDAKKworICAgIHNubXBuZXRzdGF0OiBmaXggc3RhdGlzdGljcyBmb3IgaXB2NgorCitjb21taXQgMmQ0ZGVmZTc3YmRlYmJiYzFhNzczZWI4ZDQ4NDk4YjZmMjU1OGYyMworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVHVlIE5vdiA1IDA2OjQ5OjM1IDIwMTMgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBVc2UgMCBmb3IgdGhlIGlnbm9yZWQgbnVtdmFycyBhcmd1bWVudCB0byBuZXRzbm1wX3JlZ2lzdGVyX21pYgorICAgIAorICAgIFRoZSBudW12YXJzIGFyZ3VtZW50IG9mIG5ldHNubXBfcmVnaXN0ZXJfbWliIGlzIGlnbm9yZWQgaWYgdGhlIHZhcgorICAgIGFyZ3VtZW50IGlzIE5VTEwuIEluIG9yZGVyIHRvIHVuaWZ5IHRoaXMgdXNlIG9mIGl0IHdpdGggYWxsIG90aGVyIG9uZXMsCisgICAgY2hhbmdlIGl0IGZyb20gMSB0byAwCisKK2NvbW1pdCBiOTkzM2U2MTgzYjE3MTVjOTBkN2NmNmRmYWMxODkxMDAwNzk2YmNlCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgTm92IDIyIDIzOjA0OjA4IDIwMTMgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBSZW1vdmUgc29tZSB1bnVzZWQgaW5jbHVkZXMKKworY29tbWl0IGE3ODMwNzAzOGJmMGI0ODU5ZTExYmQ4NmNhMzA0OWMzMzlhYmUxMjYKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBOb3YgMjMgMDk6NDk6MDEgMjAxMyArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEFkZCBhIG1pc3NpbmcgZnVuY3Rpb24gZGVjbGFyYXRpb24KKworY29tbWl0IGQ4ZDYwNzhiM2U2NWI1YmExMzFkZjg0MmQ5MmM3NzQzNzM3ZmY5NTUKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFR1ZSBOb3YgMTkgMDg6MDY6MzQgMjAxMyArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogTWFyayByZWdpc3Rlcl9zaWduYWwgYW5kIHVucmVnaXN0ZXJfc2lnbmFsIGFzIHVudXNlZC4KKworY29tbWl0IGJmMDgzZjViNjljY2I5NWZmNzBlMmEyOGE3YzY0ZmVjN2Q3ZTQyMmUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBOb3YgMTggMjI6NDE6MjggMjAxMyArMDEwMAorCisgICAgUGF0Y2ggYTEyNzA6IG1hbiBwYWdlIGZpeHVwcyAodGhua3MgQWxla3NhbmRycyBTYXZlbGpldnMpCisKK2NvbW1pdCA2MmE2MzRjZTY3MWMzOGFkZTk3OTE3MDc3MDM5ZTM0YWUzZDkyNzM0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gTm92IDMgMTY6MDI6MzkgMjAxMyAtMDgwMAorCisgICAgV2luMzI6IFVuYnJlYWsgdGhlIGJ1aWxkIChzZWUgYWxzbyBjb21taXQgMjUzZjkwNzQzKQorCitjb21taXQgYTgxM2I1MTExMjU1Zjc1ZmVmNjk0NGNlZGQ2NDhkYmY4YzM0YTlhZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE5vdiAxMSAxNzo1NDo0NCAyMDEzICswMTAwCisKKyAgICBXaW4zMjogcGVybDogQXZvaWQgdHJhbnNwb3J0IGluaXRpYWxpemF0aW9uIGZhaWx1cmUgaW4gUGVybCBTTk1QIGFnZW50cworICAgIAorICAgIEF2b2lkIHRoYXQgdGhlIGZvbGxvd2luZ24gbWVzc2FnZSBpcyBwcmludGVkIGR1cmluZyBzdGFydHVwIG9mIGEgUGVybCBTTk1QCisgICAgYWdlbnQ6CisgICAgCisgICAgbmV0c25tcF9hc3NlcnQgcyAhPSAoLTEpIGZhaWxlZCAuLlwuLlxzbm1wbGliXHRyYW5zcG9ydHNcc25tcFVEUEJhc2VEb21haW4uYzo0ODQKKyAgICAKKyAgICBTZWUgYWxzbyBjb21taXQgMzZhN2RlNzIzMGZiYmJiNTJjYzM3Y2JiZWQyODFlYjU1OTQwNGJlOS4KKworY29tbWl0IGEyYTNhMWFhNjdmZjM4ZGFhOGYxMzk1MThhYmIzNTQ4NDc1ZWQ1OTEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBOb3YgOCAyMjozMjoyOSAyMDEzICswMTAwCisKKyAgICBzbm1wbmV0c3RhdDogZml4IHVzYWdlIG1lc3NhZ2UgdG8gYmUgY2xvc2VyIHRvIHJlYWxpdHkuIEZpeCBoYW5kbGluZyBvZiAtQ3AgYW5kIC1DZiBvcHRpb25zIHdpdGggbmV3IHRhYmxlcy4KKworY29tbWl0IDcyNzc0MDAxMDJkZmNhOTIxZWFjMGJkOWNlZjg2YjMyZjU5ODAwM2QKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBOb3YgOCAyMjozMDoxNCAyMDEzICswMTAwCisKKyAgICBDbGVhbiB1cCBzbm1wbmV0c3RhdCBtYW4gcGFnZSwgcmVtb3Zpbmcgc29tZSBsZWZ0IG92ZXIgY3J1ZnQgbWFuCisgICAgb3JpZ2luYWwgYnNkIG5ldHN0YXQgcGFnZS4KKworY29tbWl0IGViMDM3OWRiMzg1M2ZhZDEzOGY5MmY0NzkyYTgwMzQxNzdkOTYyOWEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBOb3YgNCAyMjowOTo1NSAyMDEzICswMTAwCisKKyAgICBGaXggbGVuZ3RoIG9mIGRlZmF1bHQgcm91dGVyIGFkZGRyZXNzIHVzaW5nIHN5c2N0bC4KKworY29tbWl0IDhmYTQ2ZjI5NjEzYzE3OTJjNGExNDQzMjk0NDI3M2I2ZDc0ZTNmM2MKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBOb3YgNCAyMjowNzo1NiAyMDEzICswMTAwCisKKyAgICBGaXggaGFuZGxpbmcgb2YgY29tbWFuZCBuYW1lcyB3aXRoIGJsYW5rcyBvbiBMaW51eC4KKworY29tbWl0IDZmY2IzODFkY2Q0NjBiNzk1NTYzMzllYjM2ZmJlNTc5YmY0OWRjMDMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBOb3YgNCAyMjowNTo1NiAyMDEzICswMTAwCisKKyAgICBBZGQgTElTUC1NSUIgdG8gcmZjbGlzdC4KKworY29tbWl0IDFjNTEwNDc0MTA3MDIxOWYxMzgwMGQ3NmFmZDU3YTBkNjM2YzI0M2IKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBOb3YgNCAyMTo1NDozNiAyMDEzICswMTAwCisKKyAgICBGaXggcGFnaW5nIHN0YXRpc3RpY3MgZm9yIE9wZW5CU0QgNS40CisKK2NvbW1pdCAyZjU3YjgwNGU4M2I4Zjg5Yjg5Njk2MzdmODNkODg4NjAxMDgzOGZmCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgT2N0IDMwIDIxOjM1OjMzIDIwMTMgKzAxMDAKKworICAgIEFkZCBkYXJ3aW4xMyBzdXBwb3J0IGZpbGUKKworY29tbWl0IDgyM2Q1MWY3OWI4NGUxMzU5M2U1YjFhYzliNDA3NjM0YzU0MzQ2ZjQKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBPY3QgMjEgMjA6NDk6NTMgMjAxMyArMDIwMAorCisgICAgRml4IG1ha2UgaW5zdGFsbCBpbiBtYW4gZGlyZWN0b3J5IGZvciBTb2xhcmlzIGNhdXNlZCBieSBWUEFUSCBvZGRpdHkuCisKK2NvbW1pdCBjNTc1MjA0YTAyMDU5MTk5NDI4Y2UxMzViYzEyZWNiMzg1ZTM2NzYzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gT2N0IDIxIDIwOjQ3OjMxIDIwMTMgKzAyMDAKKworICAgIENoYW5nZSBhbiBvY2N1cnJlbmNlb2Ygc3ByaW50ZiB0byBzbnByaW50Zi4KKworY29tbWl0IGEyYmRhOTk0MDE5MjgwMjc4YmVkZWQ3OTE3Yzg3N2ZjYjQ0ODg3M2QKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBPY3QgMjEgMjA6NDY6MzAgMjAxMyArMDIwMAorCisgICAgQmV0dGVyIHdvcmRpbmcgZm9yIHN0YXRpc3RpYyBlbnRyeS4KKworY29tbWl0IDY2NDRiMDVkM2NmMzQxMjNjZWRhNzRiN2I4NGYxNjk0NDM1OWU3Y2EKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBPY3QgMjEgMjA6NDU6MTUgMjAxMyArMDIwMAorCisgICAgRml4IHdhcm5pbmdzIGZvciBsaWJubDEuCisKK2NvbW1pdCA5NDA4MTZlMDE5MTcxYTA0MTRlZTAwYTQ2Y2RhNGNlNjBiYzAxZjcxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgT2N0IDUgMTE6MDU6MTIgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDEyNjU6IEZpeCBhIGJ1ZmZlciBvdmVyZmxvdyBpbiBkdW1wX3JlYWxsb2Nfb2lkX3RvX2luZXRhZGRyZXNzKCkKKworY29tbWl0IDA5OTJlY2Y4ZmM1ZDg3ODM3MDA2ZDRiYzNhODY4MWU1NzM2ZTM1NzMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBPY3QgMTcgMDc6MTY6MjMgMjAxMyArMDIwMAorCisgICAgcGFzc19wZXJzaXN0OiB6YXAgcG9zc2libGUgQ1IgYXQgZW5kIG9mIGxpbmUuCisKK2NvbW1pdCBlYjg4ZTAyNGI0YzI2Nzk5NGRlNDA0MDFlOGI3ZDc3ZTMyZGVjNmNmCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgT2N0IDE1IDIxOjMzOjU2IDIwMTMgKzAyMDAKKworICAgIE1haW50YWluIGJ5dGUgb3JkZXIgZm9yIElQdjYgcG9ydCBudW1iZXJzIGluIHRyYW5zcG9ydCBkYXRhIChwcm9ibGVtIHN1cmZhY2VkIGluIHNubXBUYXJnZXRBZGRyRW50cnkpCisKK2NvbW1pdCBmMmU1N2I4ZTYzOGExZmNkYzg1ZmQwZmQyZjY1NTJhMzNmY2FiM2Y4CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgT2N0IDE1IDIxOjE3OjIxIDIwMTMgKzAyMDAKKworICAgIHNubXBuZXRzdGF0OiBiZXR0ZXIgaGFuZGxpbmcgb2Ygc25tcCBleGNlcHRpb25zLgorCitjb21taXQgZTAyODAyOTRlN2U2YmViZDYyZmJhYjk5MjhiMWI1ZjAxYjczNWU3MgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE9jdCAxNSAyMToxNTozOSAyMDEzICswMjAwCisKKyAgICBGaXggRElTUExBWS1ISU5UIGZvciBuZWdhdGl2ZSB2YWx1ZXMgYW5kIGhpbnQgImQtbiIuCisKK2NvbW1pdCAxYWJiNWEwOTRkMjc1MTRiODE0N2IxMTI4ZGIyY2RkY2IxNzAzYmI4CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgTm92IDIgMTQ6NDU6NDIgMjAxMiArMDEwMAorCisgICAgVXNlIE5FVFNOTVBfUFJJeiB0byBwcmludCBzaXplX3QgdmFsdWVzIGluIF9zZXNzX3JlYWQKKworY29tbWl0IGFjYjcyNTg5YWNiMzAxOGU0NDNmNWUzZjY1NGRkMDNmN2MyNjMxNmEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBPY3QgMSAxODo0MTo1MSAyMDEzICswMjAwCisKKyAgICBBZGQgZm9yZ290dGVuIGljbXBPdXRFY2hvcyB0byBpY21wTXNnVGFibGUuCisKK2NvbW1pdCAyNTNmOTA3NDM5MTUxMDIzYTkyYTNhYzQzYTlmMzE3ZTNhNGUxN2ZhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gU2VwIDMwIDIyOjEzOjQzIDIwMTMgKzAyMDAKKworICAgIFNvbGFyaXM6IHN1cHBvcnQgaWNtcE1zZ1N0YXRzVGFibGUKKworY29tbWl0IDZlZTkxZjA2YjViZDBlMGNiZDJiNjlmM2RhZTBiZjYxNDFjYzk1NTYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBTZXAgMzAgMDY6NTk6MTAgMjAxMyArMDIwMAorCisgICAgU29sYXJpcyBzdXBwb3J0IGZvciBJUC1GT1JXQVJELU1JQgorCitjb21taXQgNGViZGYzZmIwNDQ1ZjkwNjdlY2IzODM5NGMyZGYyYmQzYjczODE4MgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIFNlcCAzMCAwNjo1NDoyOCAyMDEzICswMjAwCisKKyAgICBQcm9wZXJseSBoYW5kbGUgdGhlICdiJyBkaXNwbGF5IGhpbnQuCisKK2NvbW1pdCA3ZjJlZGJmNjgzNDhjYWJlYWY5OTVhYWJhMWIyYTc4OTNkMThjNWU3CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgQXVnIDMwIDA4OjUwOjA5IDIwMTMgKzAyMDAKKworICAgIFJlbW92ZSBzb21lIGNvbW1lbnRlZCBvdXQgZGVmaW5lcworCitjb21taXQgNDM1ZWUxZjQwMjNjYjAwMjI0NWMzYTU2ZGJlYWJhMzdhM2QzZWRiZQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IFNlcCAyOCAxNDoyNjoxMCAyMDEzICswMjAwCisKKyAgICBQYXRjaCBhMTI1OSAoYnVnIGEyNDU2KTogcHJvYmxlbXMgd2l0aCBpcENpZHJSb3V0ZVRhYmxlIG9uIDY0LWJpdCBiaWdlbmRpYW4gbWFjaGluZXMuIFRoYW5rcyB0byBDaHJpc3RvcGhlciBXdS4KKworY29tbWl0IDlhNmY1NjYzOTJhM2NmMTJkYWI0ODhhNzZkNjlmYzg3M2RiZWMyYWMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBBdWcgMjUgMTA6MTg6NTMgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUmVuYW1lIG1lbWR1cCgpIGludG8gbmV0c25tcF9tZW1kdXAoKQorICAgIAorICAgIFJlbmFtZSB0aGUgZnVuY3Rpb24gbWVtZHVwKCkgZGVmaW5lZCBpbiBsaWJuZXRzbm1wLnNvIGludG8KKyAgICBuZXRzbm1wX21lbWR1cCgpLiBUaGlzIGF2b2lkcyBjb25mbGljdHMgd2l0aCBtZW1kdXAoKSBmdW5jdGlvbnMKKyAgICBkZWZpbmVkIGluIG90aGVyIGxpYnJhcmllcyB0aGF0IGRlZmluZSBhIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUKKyAgICBuYW1lLiBBcyBhbiBleGFtcGxlLCBpZiBXSU5TIG5hbWUgcmVzb2x1dGlvbiBoYXMgYmVlbiBlbmFibGVkIHZpYQorICAgIC9ldGMvbnNzd2l0Y2guY29uZiB0aGVuIHBlcmZvcm1pbmcgYSBob3N0IG5hbWUgbG9va3VwIGNhbiB0cmlnZ2VyCisgICAgYSBjcmFzaCBpbiB0aGUgU0FNQkEgV0lOUyBuYW1lIGxvb2t1cCBsaWJyYXJ5IGJlY2F1c2UgY2FsbHMgdG8KKyAgICBtZW1kdXAoKSBmcm9tIHRoYXQgbGlicmFyeSBnZXQgcmVkaXJlY3RlZCB0byB0aGUgaW5jb21wYXRpYmxlCisgICAgTmV0LVNOTVAgbWVtZHVwKCkgZnVuY3Rpb24uIFNlZSBhbHNvCisgICAgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xMDAwNzgwIGZvciB0aGUgZGV0YWlscy4KKyAgICBUaGlzIHBhdGNoIGludGVudGlvbmFsbHkgY2hhbmdlcyB0aGUgTmV0LVNOTVAgQUJJLgorCitjb21taXQgM2RkZTQxOTk4NjI1ZmUwZTI0MTE5YTJlMWY0NTA5YmEzYmEyZmQ5YQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IFNlcCA1IDIwOjI3OjIyIDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IExpbnV4OiBCVUc6IDIyMzg6IEFkZCBsaWJubDMgc3VwcG9ydAorCitjb21taXQgYTM3OTU3YmVlOWY3OWRiMTliYmE5M2YxMWZhYTAzNzkyMWQ2ZTU4NAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIFNlcCAyMyAyMjoyNDoxNSAyMDEzICswMjAwCisKKyAgICByb3V0ZV9zeXNjdGwuYzogRml4IGZvciBsaW5rbG9jYWwgcm91dGVzIG9uIEZyZWVCU0QgMTAKKworY29tbWl0IGQ5YTdmOWZjNjc5NDU1YjBmYTMyOGZiYWU2N2VjMmVlMjkwNmI5NGIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBTZXAgMjIgMTk6NDI6NTEgMjAxMyArMDIwMAorCisgICAgd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGw6IEF1dG9tYXRlIGJ1aWxkaW5nIHRoZSBpbnN0YWxsZXIKKworY29tbWl0IGViMWExNjQxNTAwZDZiY2YzOWY5Yjg0N2EyYzA2YzllZGEwYzg4YzQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBTZXAgMjIgMTk6MzI6MzEgMjAxMyArMDIwMAorCisgICAgd2luMzIvZGlzdC9pbnN0YWxsZXIvbmV0LXNubXAubnNpOiBNYWtlIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIGFuIGluc3RhbGxlciB3aXRob3V0IGFkbWluaXN0cmF0aXZlIHByaXZpbGVnZXMKKworY29tbWl0IGE5Nzc3ZWM5YWZiMzdjYTY0NDIxNjYwNzliZDViMmUwMzQ5YmUzZTMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBTZXAgMjIgMTg6MzU6NTUgMjAxMyArMDIwMAorCisgICAgd2luMzIvZGlzdC9pbnN0YWxsZXIvbmV0LXNubXAubnNpOiBGaXggT3BlblNTTCB2ZXJzaW9uIGNoZWNrCisKK2NvbW1pdCA1Y2IyY2M3YWIyMGIyOTBhNmM3NDU4NWY5ODVmOWM5MTJjZGVjOGNlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gU2VwIDIyIDEwOjI1OjAwIDIwMTMgKzAyMDAKKworICAgIHdpbjMyL2Rpc3QvaW5zdGFsbGVyL25ldC1zbm1wLm5zaTogUmVtb3ZlIE1TVkMgcmVkaXN0cmlidXRhYmxlIGZpbGVzIGZyb20gdGhlIGluc3RhbGxlcgorCitjb21taXQgMTc4MTIwMDYxZWNlNDhjY2Q5N2EzYWUzNmI4ODBkYTZiMTA5NTIwNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIFNlcCAyMiAwOTo1MDoxOCAyMDEzICswMjAwCisKKyAgICB3aW4zMi9kaXN0L2J1aWxkLWJpbmFyeS5iYXQ6IEdlbmVyYWxpemUKKworY29tbWl0IDg1YTFjNTAyNmYxMGZmMTQzZjQzN2YwMDM4OTRhNmM0YWExODdhOTYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBTZXAgMjIgMTg6NDM6MDUgMjAxMyArMDIwMAorCisgICAgd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGw6IEZpeCB4NjQgZGV0ZWN0aW9uCisKK2NvbW1pdCBhMGMyYTdhYjQyOTk3NDMzZTcwN2MxMGY4YWNmNjFmOTEyNDQyZjcwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gU2VwIDIyIDE3OjI4OjU0IDIwMTMgKzAyMDAKKworICAgIHdpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LnBsOiBFeGFtaW5lIHR3byBsb2NhdGlvbnMgZm9yIE1pbkdXIGJpbiBkaXIKKworY29tbWl0IGNmMTAwNmU2N2Y5Yzc3ZmJkYTk0ZDQ1MjFlNzhmMDA5OGM4YTBlMTkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBTZXAgMjIgMTA6MTE6MTMgMjAxMyArMDIwMAorCisgICAgd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGw6IEZpeCBTU0wgYnVpbGQKKworY29tbWl0IGI0N2YxMzZiZWE4ZWY1NDY4YTIwZDk0NTJiMTIzMThkYjZjMzQ5ZWIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBTZXAgMjIgMTc6MDU6MzcgMjAxMyArMDIwMAorCisgICAgd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGw6IEFkZCBXU0RLIHN1cHBvcnQKKworY29tbWl0IDBlMThhMjA2YWFhNDkwZmRlYjJjNzBhMGU2ZTUyYzkxZWI1ZjNlZDkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBTZXAgMjIgMDk6NDg6MDYgMjAxMyArMDIwMAorCisgICAgd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGw6IFJlZHVjZSBjb2RlIGR1cGxpY2F0aW9uCisKK2NvbW1pdCA4NWRmMDJiODM2MzIwY2M0NWU1ZDJkYjQ1NDgzYmM1MDg2MzE0NDZjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gU2VwIDIyIDEwOjAyOjIxIDIwMTMgKzAyMDAKKworICAgIHdpbjMyL0NvbmZpZ3VyZTogRml4IGJ1aWxkIHdpdGhvdXQgT3BlblNTTAorCitjb21taXQgM2Y5YWRiOTg3YjViZjVkMmQwOTVjZmQ2ZWEyZGE5Y2Q4MWQxYmVjNAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIFNlcCAyMiAwOToxNTo0MSAyMDEzICswMjAwCisKKyAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYzogV2luMzIgYnVpbGQgZml4CisKK2NvbW1pdCBhNmUxODUxZmJlNzQ3Y2YxNWVkMDc1ODA3NzgxY2U4OWEzNGU5NmMyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgU2VwIDIxIDE5OjU1OjAyIDIwMTMgKzAyMDAKKworICAgIFJlc3RvcmUgIkNIQU5HRVM6IFdpbjMyOiBwZXJsOiBCVUc6IDI0ODg6IEF2b2lkICJGcmVlIHRvIHdyb25nIHBvb2wiIGVycm9yIgorICAgIAorICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgYjI3MjU5NjRiZGU5MjFiNjI4NWUzYTU5YTUxMjU1MmNhZTBhMGNhNS4KKworY29tbWl0IGIyNzI1OTY0YmRlOTIxYjYyODVlM2E1OWE1MTI1NTJjYWUwYTBjYTUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBTZXAgMjEgMTk6NDk6NTggMjAxMyArMDIwMAorCisgICAgUmV2ZXJ0ICJDSEFOR0VTOiBXaW4zMjogcGVybDogQlVHOiAyNDg4OiBBdm9pZCAiRnJlZSB0byB3cm9uZyBwb29sIiBlcnJvciIKKyAgICAKKyAgICBUaGlzIHBhdGNoIGlzIG5vdCBhcHByb3ByaWF0ZSBmb3IgdGhlIHY1LjQgYnJhbmNoLgorCitjb21taXQgNjQ1MzcxN2Y2YWM2NjViZjUzMjc0NGE4NmNkYjg5OGFhZjgzZDZiZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IFNlcCAyMSAxOTozNDoyNSAyMDEzICswMjAwCisKKyAgICBBZGQgcmVwcm9kdWNlciBmb3IgYnVnIDI0ODgKKworY29tbWl0IDBkMGE0NjI5NzAyZWI5ZjlmZTk5NTZjMWJhYzRiNDQ1NjEwZmYzYzcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBBdWcgMzEgMTc6MjE6MjIgMjAxMyArMDIwMAorCisgICAgU2ltcGxpZnkgc25tcFRhcmdldEFkZHJfcm93U3RhdHVzQ2hlY2soKQorCitjb21taXQgNGI4N2UzY2I0ZDM2NzlhYjYwYzM1M2JhNGZmMzAxZjY4NDJiODRiYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IFNlcCAyMSAxNjozNzowOSAyMDEzICswMjAwCisKKyAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNjhleGVjZml4X3NpbXBsZTogU2ltcGxpZnkKKworY29tbWl0IDY1Yzg4ZTJlY2Y1ZGU5MzY1YzgzYzQ2ZWYzYmI0Y2Q4OWNkYzQ0ZTgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBTZXAgMTUgMTE6MTE6NDMgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogV2luMzI6IHBlcmw6IEJVRzogMjQ4ODogQXZvaWQgIkZyZWUgdG8gd3JvbmcgcG9vbCIgZXJyb3IKKworY29tbWl0IDFhNDg1NWRhNGIxZGQ2OTNhMmIwMzc3YjkxZTljMzNlM2M3ZjJhNGQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBTZXAgMjEgMTc6MTE6NDUgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogcGVybDogQlVHOiAyNDAyOiBBZGQgc3VwcG9ydCBmb3IgU05NUHYzIHRyYXBzCisKK2NvbW1pdCAzZDA1MTU2OTNmNmEwZDI5ZDM5ZGQwYzg2OGQzNzhjNzRiYzRmODdjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgU2VwIDIxIDA5OjE2OjMzIDIwMTMgKzAyMDAKKworICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA2OGV4ZWNmaXhfc2ltcGxlOiBQb3J0IHRvIE1pbkdXIGFuZCBGcmVlQlNECisKK2NvbW1pdCA1YjZlNDMxZDlmNjYzYTNjMzI3ZDcxZGFjOTUzOTJjZmQ4NmIzMjkxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgU2VwIDIxIDA5OjAzOjU5IDIwMTMgKzAyMDAKKworICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYzogRml4IGNvbXBpbGVyIHdhcm5pbmdzCisKK2NvbW1pdCA5ZjJlOGZjOGQ5YTI2ZjU3YWIwODlhYmEzZDFhZTI2YjNlOGYyZDU0CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgU2VwIDE3IDIyOjMwOjM4IDIwMTMgKzAyMDAKKworICAgIEZpeCBkZXBlbmRlbmN5IGZvciBGcmVlQlNEMTAKKworY29tbWl0IGE1MDZlZmRkMWRiODI0YTllZWVlMDNkMDAyMWM5MGZhZjNiNjI5MjQKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBTZXAgMTcgMjI6Mjk6MzQgMjAxMyArMDIwMAorCisgICAgc25tcGRmIG1hbiBwYWdlOiBmaXggZm9ybWF0dGluZyBvZiAtQ2gvLUNIIG9wdGlvbnMKKworY29tbWl0IGEyZTk3YmViZmM1MjE3MGY5ZWMxMDM2ZDI0YWE4NGY1OWNmMmU1MDgKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBTZXAgMTcgMjI6Mjc6NDkgMjAxMyArMDIwMAorCisgICAgVXBkYXRlIHRoZSBCU0QgbXVsdGktY3B1IGNvdW50ZXJzIGNvZGUgdG8gd29yayB3aXRob3V0IGNvbmZpZ3VyZSBoZWxwLgorCitjb21taXQgYzg1ZDY0ZDU0YjA2ODc5YTNhNjkxZGFkZmZjMDNiZmIxZjU5MDk2ZAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVHVlIFNlcCAxNyAwNjozNzoxOCAyMDEzICswMjAwCisKKyAgICBPbmx5IHRlc3QgdGhlIGV4ZWNmaXggY29uZmlndXJhdGlvbiBkaXJlY3RpdmUgaWYgaXQgaXMgZW5hYmxlZAorCitjb21taXQgZWQ4YjY5N2NlYTA2NzlkZTdiZTViM2Y1ZDQ2OTEzNGUxY2RhZWQ1NgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IFNlcCA3IDEwOjI3OjAyIDIwMTMgKzAyMDAKKworICAgIG00L2FjX2FkZF9zZWFyY2hfcGF0aC5tNDogRml4IGEgY29tbWVudAorCitjb21taXQgZjc3OWM1ZTk0Njc4ODU4NTJmMTZjNTU0MWEzODAxMTFmOWVhZDA2MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IFNlcCA3IDIwOjI4OjI5IDIwMTMgKzAyMDAKKworICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X2FwdC5jOiBGaXggY29tcGlsZXIgd2FybmluZ3MKKyAgICAKKyAgICBSZW1vdmUgdGhlIHVudXNlZCB2YXJpYWJsZSAncmMnIGFuZCBmaXggYSBmb3JtYXQgc3RyaW5nLgorCitjb21taXQgYzY0Mzk2MjdkMDlmNTAzZmRjOGNmYTMyZDg4NGU4MzQ3MzgzMTc1NAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE1hciA4IDAwOjEzOjA1IDIwMTEgKzAwMDAKKworICAgIGFsbG93IGZvciB2MmMgU0VUIHN1cHBvcnQgdGVzdGluZworICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDg0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgNWNiZDU0MzQxYTJhNzliZjg1MzczNzdkMTEzNzI0ODNmMDg2NDdhZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IFNlcCAxNCAxNDoyODoyMSAyMDEzICswMjAwCisKKyAgICByZWdyZXNzaW9uIHRlc3RzOiBBZGQgYSB0ZXN0IGZvciB0aGUgZXhlY2ZpeCBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZQorCitjb21taXQgMWM3NTYzNDllNGQzMWQzOWVjMmZjNTNjNjQ0MGFlNTNiM2IwM2RmMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IFNlcCA3IDIwOjI4OjU2IDIwMTMgKzAyMDAKKworICAgIHNubXBkOiB1Y2Qtc25tcDogRml4IGEgcG90ZW50aWFsIGNyYXNoIGluIGZpeEV4ZWNFcnJvcigpCisgICAgCisgICAgRG8gbm90IGludGVycHJldCBhIGNvbW1hbmQgc3BlY2lmaWVkIHZpYSB0aGUgZXhlY2ZpeCBjb25maWd1cmF0aW9uCisgICAgZGlyZWN0aXZlIGFzIGEgcHJpbnRmKCkgZm9ybWF0IHN0cmluZy4KKworY29tbWl0IDhiMTQwZDA5NjVlMTFmNTkyMTc2OGJmMDVkMGMyYjE5NDFjMGQzMzUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBBdWcgMzEgMTc6MTA6NTUgMjAxMyArMDIwMAorCisgICAgU05NUC1UQVJHRVQtTUlCOiBEZWNsYXJlIGxvY2FsIHZhcmlhYmxlcyBhdCBmaWxlIHNjb3BlIHN0YXRpYworICAgIAorICAgIEFsc28sIGRlY2xhcmUgdGhvc2UgdmFyaWFibGVzIGNvbnN0IHRoYXQgYXJlIG5vdCBtb2RpZmllZC4KKworY29tbWl0IDdiODJjNjFlNzUzZTE1N2M0Yjg2OTgyMTkwMDZmMmY4M2RmNTI4MDEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBBdWcgMzEgMTY6NTE6MTUgMjAxMyArMDIwMAorCisgICAgU05NUC1UQVJHRVQtTUlCOiBFbGltaW5hdGUgdHdvIHN1cGVyZmx1b3VzIGNhc3RzCisKK2NvbW1pdCBkYmNmNDdkZDRmZTUyNjJhZDBmYWQ3Yzk3NzQ1MjA5NTg5NTQwYzQwCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIFNlcCAxMSAxMDoyMTozMiAyMDEzICswMjAwCisKKyAgICBSZXdvcmQgdGhlIGluY2x1ZGVGaWxlIHNlYXJjaCBwcm9jZXNzIHRvIGZpdCB0aGUgaW1wbGVtZW50YXRpb24uCisKK2NvbW1pdCA4NTA3MzA4NWQ2N2VkNjZhYjc0NjExYzhlNWY4MTAxOTI0OTFiYTY4CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gU2VwIDkgMjI6MjY6MjMgMjAxMyArMDIwMAorCisgICAgUGF0Y2ggYTEyNjM6IE1ha2UgZGF0YWJhc2UgbmFtZSBjb25maWd1cmFibGUgZm9yIHRyYXBkIHNxbCBsb2dnaW5nLgorICAgIFRoYW5rcyB0byBSb2JpbiBTb25lZm9ycy4KKworY29tbWl0IDdlNzI1OGVmOGIzMmY5NzQwNDhmM2ZkMDk4YTlkYTUyNmRhMmU2MTMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBTZXAgOSAyMjoxNzoxNSAyMDEzICswMjAwCisKKyAgICBQYXRjaCBhMTI2MjogRml4IG1lbW9yeSBlcnJvciBjYXVzZWQgYnkgY29uZnVzaW5nIHNpemUgb2YgcG9pbnRlcgorICAgIHdpdGggc2l1emUgb2YgcG9pbnRlZCBhcmVhLiBUaGFua3MgdG8gUm9iaW4gU29uZWZvcnMuCisKK2NvbW1pdCA1ODZlMDdiOGRlNTFiMDU0MDBkNTgyZmFjZDkxZDQ0MTBkZDM3NzAzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgQXVnIDMxIDE3OjA5OjU5IDIwMTMgKzAyMDAKKworICAgIHNubXBkOiBDb25zdGlmeSBhIGZldyBhcmd1bWVudHMgb2YgTUlCIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMKKyAgICAKKyAgICBOb3RlOiB0aGlzIHBhdGNoIGRvZXMgbm90IGNoYW5nZSB0aGUgQUJJLgorCitjb21taXQgNDRjMzY3MWRkOTNmZTBmMDgyOTllNjFkMGE0MjJmZDA3MmI0OTBlNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIFNlcCA4IDA3OjM1OjQ2IDIwMTMgKzAyMDAKKworICAgIFJ1biBhdXRvcmVjb25mCisKK2NvbW1pdCA2MmRhZGVmYTFiMjY4OGMwMjc5MmU5ZmQyZDNmYzMxYzc5ZWQxMWMzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgU2VwIDYgMTE6NTQ6MTMgMjAxMyArMDIwMAorCisgICAgc3dydW5fZGFyd2luOiBGaXggYnVmZmVyIG92ZXJydW4gd2hlbiBjb2xsZWN0aW5nIGhyU1dSdW5QYXJhbWV0ZXJzCisKK2NvbW1pdCAxZTA1MjZmODVlZDYxNTY3Y2E2ZWE1M2I1NjZjNzcyOTkyMTExYzllCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgU2VwIDQgMjI6MzA6NDAgMjAxMyArMDIwMAorCisgICAgQWRkIGEgY291cGxlIG9mIGNvbnRyaWJ1dG9ycyB0byBSRUFETUUKKworY29tbWl0IGVkYzYwOGViZDVkMDIxOTg2M2JjNWY2NTZkMTc3YjFkNTYxMDQ4YzIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBTZXAgNCAyMTo1OToxOCAyMDEzICswMjAwCisKKyAgICBGaXggYSBwcmludGYgZm9ybWF0IHdhcm5pbmcuCisKK2NvbW1pdCBmYjI0ZjczM2NiMzE2YzM1Y2NmZGM1OWY0ODdiNjVlMGNkOTc0YzY4CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgU2VwIDQgMjE6NTQ6MjcgMjAxMyArMDIwMAorCisgICAgc25tcG5ldHN0YXQ6IEluZGVudCBJQ01QIGhpc3RvZ3JhbSBmb3IgcmVhZGFiaWxpdHkuCisKK2NvbW1pdCBmNzk0M2E1ZDU4YTZmOTUzYzc5ZmI1NWFiODk3Yzg0OTIyOGVkYjhhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgU2VwIDQgMjE6NDU6MTkgMjAxMyArMDIwMAorCisgICAgUmVjb2duaXplIHpmcyBmaWxlIHN5c3RlbXMKKworY29tbWl0IGFiNDM3MGJhZjVjY2MxNDZmOGQxYzgzOWJiMGY0MTllZTM3ZTcxYzIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBTZXAgMiAyMToyMToyNSAyMDEzICswMjAwCisKKyAgICBQYXRjaCBhMTI2MSAoQmlsbCBGZW5uZXIpOiBGaXggY3Jhc2ggd2hlbiBtaWItaW5kZXhlcyBhcmUgbm90IGFsbCByZWFkYWJsZQorCitjb21taXQgYzZjYWEzMDA3ZjYwZjZjZGVhYTEzNDE1Mjc1ODY0NWE3M2E3ZmU2NAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIFNlcCAyIDE5OjM5OjE0IDIwMTMgKzAyMDAKKworICAgIHNubXBuZXRzdGF0OiBQcm9wZXIgdGVzdHMgZm9yIHYyL3YzIGV4Y2VwdGlvbiByZXN1bHRzIChCdWcgYTI0NzcpCisKK2NvbW1pdCAzOTQyMGJkNDBiN2ExYmE3MjBhOWNiYjkyMjY0ZDNmOWNjMGE3ZTJmCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgQXVnIDIxIDIyOjA4OjQxIDIwMTMgKzAyMDAKKworICAgIFBBVENIIGExMjYwOiBTdXBwb3J0IG11bHRpLWNwdSB1c2FnZSBmb3IgRnJlZS9OZXQvT3Blbi1CU0QuCisgICAgVGhhbmtzIHRvIFBhYmxvIENhcmJvbmkgZm9yIGZpcnN0IHN0YWIgYXQgdGhpcy4KKworY29tbWl0IDYyMzA1Y2QwMjhkOGFiZjQzMDEyMWU5MDA4YWNjOGYwZDE4NzFlMWMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBBdWcgMjEgMjI6MDg6NDEgMjAxMyArMDIwMAorCisgICAgUEFUQ0ggYTEyNjA6IFN1cHBvcnQgbXVsdGktY3B1IHVzYWdlIGZvciBGcmVlL05ldC9PcGVuLUJTRC4KKyAgICBUaGFua3MgdG8gUGFibG8gQ2FyYm9uaSBmb3IgZmlyc3Qgc3RhYiBhdCB0aGlzLgorCitjb21taXQgY2MyZmU2YmRlNmEzYzI4YjNjMWFkMTY1YzliYTNmYzFkNTgzYzI1MworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIEF1ZyAyNSAwODoyMzo0MyAyMDEzICswMjAwCisKKyAgICBJUC1NSUI6IEZpeCBEb3h5Z2VuIGhlYWRlciBvZiBuZXRzbm1wX2lwYWRkcmVzc19pcHY0X3ByZWZpeF9sZW4oKQorCitjb21taXQgOTYzMDJhZjdmYzMxMDhjMjA4MjI3NDMyZjBmMGI3NWYzZTdiOTA2ZAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgV2VkIEF1ZyAyOCAxMDo1OTowNSAyMDEzICswMjAwCisKKyAgICBDb3JyZWN0IGNvbnZlcnNpb24gZmFjdG9yIGZyb20gbWljcm9zZWNvbmRzIHRvIGNlbnRpc2Vjb25kcy4KKworY29tbWl0IGU4Y2Y3NjZlMDgzODM0YWY3ZmRmZWQ4NzdkYmU4ODEwYmYwMGE0ZWEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBdWcgMTkgMjI6MTc6MTEgMjAxMyArMDIwMAorCisgICAgRml4IG5ldHNubXBfaXBhZGRyZXNzX2lwdjRfcHJlZml4X2xlbiB0byB0YWtlIGFuIGFyZ3VtZW50IGluIG5ldHdvcmsgYnl0ZSBvcmRlciBhcyBkb2t1bWVudGV0CisKK2NvbW1pdCBhMGM1OWEzYjQ1OGU4YThkZmIwNTlhNjI3OTJkMjVhNGM1YzlmYzllCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXVnIDE5IDIyOjE0OjE1IDIwMTMgKzAyMDAKKworICAgIEZpeCBuZXRzbm1wX2lwYWRkcmVzc19pcHY0X3ByZWZpeF9sZW4gdG8gdGFrZSBhbiBhcmd1bWVudCBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIgYXMgZG9rdW1lbnRldAorCitjb21taXQgNjZiOWJmYmE0ZWFlODQ5NDRhYmY0ZTZkMDc0ODk0YWNkMDUxM2M2YgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEF1ZyAxOSAyMjoxMjo1NyAyMDEzICswMjAwCisKKyAgICBGaXggbmV0c25tcF9pcGFkZHJlc3NfaXB2NF9wcmVmaXhfbGVuIHRvIHRha2UgYW4gYXJndW1lbnQgaW4gbmV0d29yayBieXRlIG9yZGVyIGFzIGRva3VtZW50ZXQKKworY29tbWl0IGVjOTZiMzVkNTA2MGMwOWI5ZjUzZDRkZWM3M2ZiNzk2NWMyYWMxNDUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBdWcgMTkgMjI6MTE6MzYgMjAxMyArMDIwMAorCisgICAgRml4IG5ldHNubXBfaXBhZGRyZXNzX2lwdjRfcHJlZml4X2xlbiB0byB0YWtlIGFuIGFyZ3VtZW50IGluIG5ldHdvcmsgYnl0ZSBvcmRlciBhcyBkb2t1bWVudGV0CisKK2NvbW1pdCBiMjdiNDdiNTc5ODQ2OWU5YWI1YmQ0YjUxYWMzOWQ0M2ZjZDk1NjA4CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgQXVnIDE3IDEwOjEyOjE0IDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IE1ha2Ugc3VyZSBUZXN0OjpIYXJuZXNzIGlzIG9mIGF0IGxlYXN0IHZlcnNpb24gMS4yMQorICAgIAorICAgIFRlc3Q6Okhhcm5lc3MgMS4yMSBpcyB0aGUgZmlyc3QgdmVyc2lvbiB0aGF0IGltcGxlbWVudHMgVEFQIHYxMiB3aGljaCBhbGxvd3MKKyAgICBwdXR0aW5nIHRoZSBoZWFkZXIgKDEuLk4pIGFmdGVyIHRoZSB0ZXN0cyBhbmQgc2luY2Ugb3VyIHRlc3RzIHV0aWxpemUgdGhhdAorICAgIHdlIHNob3VsZCBtYWtlIHN1cmUgdGhhdCB0aGUgdGVzdCBydW5uZXIgc3VwcG9ydHMgaXQuCisKK2NvbW1pdCAxNGY4ZDRhZDZmMDZkMDlkODcwOTZkZDY4MTM3YTEyNWEwMzljNTYyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgSnVuIDI5IDE3OjQyOjU0IDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IEFJWDogTWFrZSB1ZHAtbWliIGJ1aWxkCisKK2NvbW1pdCAzOGQ3N2M3YzIwYTNlNzk3OWMwOWM1MTQ0Zjg2OTM0ZWQ0NjU0MGRjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgSnVuIDI5IDE3OjM5OjM4IDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IEFJWDogTWFrZSB0Y3AtbWliIGJ1aWxkCisKK2NvbW1pdCA1OGZkMjNiNzExMGM5M2VlNDk2ZmZhZmU4Njg1MzljMmFmODU0M2JkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgQXVnIDE2IDEwOjM5OjAzIDIwMTMgKzAyMDAKKworICAgIFdpbjMyOiBCdWlsZCBmaXg6IEV4cG9ydCBza2lwX3doaXRlX2NvbnN0KCksIHNraXBfbm90X3doaXRlX2NvbnN0KCkgYW5kIHJlYWRfY29uZmlnX3JlYWRfb2N0ZXRfc3RyaW5nX2NvbnN0KCkKKworY29tbWl0IDBhYjljZDE2NTVkNDZmOTY4ZGMxMmJkNjcxNGFjMTdiOWJjZTVlNzEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBBdWcgMTYgMDg6Mjg6MDggMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcC11c20tZGgtb2JqZWN0cy1taWI6IEF2b2lkIHRyaWdnZXJpbmcgYW4gYXNzZXJ0IHN0YXRlbWVudCBpbiBuZXRzbm1wX3JlYWR5X21vbm90b25pYygpCisgICAgCisgICAgVGhlIGNhY2hlIHRpbWVvdXQgZm9yIHNubXAtdXNtLWRoLW9iamVjdHMtbWliIGlzIC0xLiBBbnkgY2FjaGUgdGltZW91dAorICAgIHZhbHVlIDwgMCBkaXNhYmxlcyBjYWNoaW5nLiBIb3dldmVyLCBzdHJpY3RseSBuZWdhdGl2ZSB2YWx1ZXMgdHJpZ2dlcgorICAgIHRoZSBhc3NlcnQgc3RhdGVtZW50IGluIG5ldHNubXBfcmVhZHlfbW9ub3RvbmljKCkuIEF2b2lkIHRyaWdnZXJpbmcgdGhhdAorICAgIGFzc2VydCBzdGF0ZW1lbnQuCisKK2NvbW1pdCAxZmE1ODRiMjIyYzU2NzI0Mzc4ZjVjODU5OTNlZWVlNjUxNTI2MGFiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgQXVnIDE2IDEwOjAyOjQ3IDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEZpeCBORVRTTk1QX0ZEX1NFVF9CWVRFUygpCisgICAgCisgICAgVGhpcyBwYXRjaCBhdm9pZHMgdGhhdCB1bml0IHRlc3QgVDAwOWxhcmdlX2ZkX3NldF9jbGliIGNyYXNoZXMgb24gQUlYLgorCitjb21taXQgOTVhYzE5MGI1MjZkYmE1MjA1NjM3NDExYTg5MmI1MmI5ZWQ2Yjk0YworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIEp1bCAyMSAxNzoxNjo0MiAyMDEzICswMjAwCisKKyAgICBDSEFOR0VTOiBCVUc6IDI0NzY6IHNubXBkIGZhaWxzIHRvIHN0YXJ0IG9uIEFJWAorICAgIAorICAgIE9uIGFuIEFJWCBzeXN0ZW0gdGhlcmUgaXMgbm8gPGt2bS5oPiBoZWFkZXIgZmlsZSBub3IgZG8gdGhlIC9kZXYvZG1lbQorICAgIG9yIC9kZXYvZHJ1bSBkZXZpY2VzIGV4aXN0IGFuZCBoZW5jZSBETUVNX0xPQyBpcyBub3QgZGVmaW5lZC4gQXZvaWQKKyAgICB0aGF0IGluaXRfa21lbSgpIGZhaWxzIGluIHRoYXQgY2FzZS4KKworY29tbWl0IDUwNDgxYjc2OWUyOWZjNWNlNmIxZTQwY2U1NjgxODViYjA4OTg0NTgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBBdWcgMTYgMDc6MjI6MDIgMjAxMyArMDIwMAorCisgICAgc25tcGQ6IFJlZmFjdG9yIGluaXRfa21lbSgpCisgICAgCisgICAgVGhpcyBwYXRjaCBkb2VzIG5vdCBjaGFuZ2UgYW55IGZ1bmN0aW9uYWxpdHkuCisKK2NvbW1pdCBjZDdlZjdiZTM5MTAzNWQ5ZGYwNWVkYzZhYzllNmYzNTE5YjQ2ZjhiCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBXZWQgQXVnIDE0IDIzOjM4OjIxIDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEJlIG1vcmUgcm9idXN0IGlmIGNsb2NrX2dldHRpbWUgZmFpbHMuCisgICAgCisgICAgT24gUkhFTDMgaXQgc2VlbXMgY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICkgYWx3YXlzIHJldHVybnMgRUlOVkFMIGJ1dAorICAgIGl0IHdvcmtzIGZvciB0aGUgb3RoZXIgY2xvY2tzLgorICAgIAorICAgIEZ1cnRoZXIsIHRoZSBvbGQgY29kZSB3aGljaCByZXR1cm5lZCBhIGNvbnN0YW50IHsgMCwgMCB9IGNhdXNlZCB0aGUgdGVzdCBzdWl0ZQorICAgIHRvIGdldCBzdHVjayBpbiBhIGxvb3AgaWYgbm8gcmVzcG9uc2UgYXJyaXZlZCAtIHRodXMgdGhpcyBjb2RlIGhhdmUgdGhlCisgICAgYWR2YW50YWdlIG9mIHdvcmtpbmcgbGVzcyBiYWQuCisKK2NvbW1pdCA5ZDcxZmVlYTI3MWY5MWNjOWI3YWRlZTY2MTNhZjE5ZWJhN2VjNmNkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEF1ZyAxNCAxNTo1Njo1NiAyMDEzICswMjAwCisKKyAgICBGaXhlZCByZXR1cm4gdmFsdWUgb24gZXJyb3IuCisKK2NvbW1pdCA5NjIxZjRjZGM1YTE5Y2VlNGUxMWJmMjcwOTRhYmYzMzM5ZGRjMzBlCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEF1ZyAxNCAxNTo0ODozOSAyMDEzICswMjAwCisKKyAgICBSZW1vdmluZyB1c2VsZXNzIGNoZWNrLCBlbnRyeS0+ZF9uYW1lIGlzIGFycmF5IGFuZCBjYW4ndCBiZSBOVUxMLgorCitjb21taXQgZTQxYzJmNTc0YzI1ZDhkZDI3M2YyNDA2ZWVlYWMxOWJjMmFlMTZkYgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBdWcgMTIgMTQ6MzA6NTEgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogRml4ZWQgcGFyc2luZyBvZiBzZXF1ZW5jZXMuCisgICAgCisgICAgRG9uJ3Qgb3ZlcndyaXRlICdkYXRhJyB2YXJpYWJsZSwgaXQncyB1c2VkIHdoZW4gcGFyc2luZyBidWxrIHJlc3BvbnNlcy4KKworY29tbWl0IDM5MDMwMzA1OWZiZDk4YjFlZTc2MjFkZGQ0YWQ0YzExZDEwMGZmZjkKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBKdWwgMjggMjE6Mjg6MTQgMjAxMyArMDIwMAorCisgICAgUmV2ZXJ0IDc4ZGFjNmUzNzk0M2QxYWQ5OTg0MTg5ODgwNmVhNjBiMGVlZGU2MzYgYW5kIHJlc29sdmUgYTI0NzggaW4gYSB3YXkgdGhhdCBhdm9pZHMgdHJ1bmNhdGluZyBzbm1wVGFyZ2V0QWRkclRpbWVvdXQuCisKK2NvbW1pdCBlNTlkNWRiNmQ2ZTcyZDEzNDU5MWJiYWFhNmZhYTU5YjI5MzM4MTkxCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gSnVsIDI4IDIxOjE3OjU4IDIwMTMgKzAyMDAKKworICAgIENoZWNrIHRoYXQgdGhlIHRpbWVvdXQgdmFsdWUgaXMgaW4gcmFuZ2UuCisKK2NvbW1pdCA0ZWNiMzZhN2FiYTNhYjBlZmE4OTM1MTY1MGNlMDUzZWJjZjQ4YjZhCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBNb24gSnVsIDI5IDIxOjU0OjI1IDIwMTMgKzAyMDAKKworICAgIENoZWNrIHRoYXQgc25tcFRhcmdldEFkZHJUaW1lb3V0IGhhbmRsZXMgc2V0dGluZyBwcm9wZXJseQorCitjb21taXQgMWFlODViNjcyZWIwN2QwYzAxYTU0ZTA2ZDNkZGQ0ZjRkYzU4ZmYyZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIEp1bCAyOCAxMDo0MzoxNyAyMDEzICswMjAwCisKKyAgICBBZGQgc29tZSBtb3JlIHRlc3RzIGZvciBzbm1wVGFyZ2V0QWRkcgorICAgIChjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDZlMTNlYmI4NWU0NDA0OTg0NmVhZTdmNjBlMDUwMzc1ZjlhY2Y1OGUpCisgICAgU2FuaXRpemVkCisKK2NvbW1pdCA2YTVhMDQ3Y2JjMTFkNjJkZjA0YTk2NjY5MDhmNzY1MmIyMTdjMWFhCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgQXVnIDEgMjM6MTk6MzQgMjAxMyArMDIwMAorCisgICAgUmVpbnN0YXRlIHRoZSBjaGVjayBmb3IgY3JlYXRpb24gb2YgZW50cmllcyB3aXRoIGVtYmVkZGVkIE5VTCdzIGluIHRoZSBuYW1lCisKK2NvbW1pdCA1MzNiYjgwYTVhNDMwNWIzNWRiYjc5NzQ0NGJkNTk2ZDdkNTk5NTFjCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgQXVnIDEgMjI6NTU6NDUgMjAxMyArMDIwMAorCisgICAgU2FuaXRpemUuCisgICAgCisgICAgQ2hhbmdlIHRvIHVzZSBTTk1QdjMgc2luY2UgdGhhdCBpcyB3cml0ZWFibGUgaW4gVjUtNi1wYXRjaGVzLgorICAgIENoYW5nZSB0byBjaGVjayB2YWx1ZXMgb24gaW5kZXggJ0EnCisgICAgUmVtb3ZlIHRoZSBjaGVjayBmb3IgZW1iZWRkZWQgTlVMIGluIGluZGljZXMuCisKK2NvbW1pdCBiMjRiZjQ2MjIwYWFhZjU3OTRlOTQwZjVkNDY3M2RiNzEzMzlmOWMwCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgSnVsIDIwIDEyOjM5OjU5IDIwMTMgKzAyMDAKKworICAgIEFkZCB0ZXN0cyBmb3Igc25tcFRhcmdldEFkZHIKKyAgICAoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA3MWYzMTljZDIzNDQ1YzZlMjJhNjBhMWE4NWYzMWMyYjY5MDRiM2ZiKQorCitjb21taXQgNmUxM2ViYjg1ZTQ0MDQ5ODQ2ZWFlN2Y2MGUwNTAzNzVmOWFjZjU4ZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIEp1bCAyOCAxMDo0MzoxNyAyMDEzICswMjAwCisKKyAgICBBZGQgc29tZSBtb3JlIHRlc3RzIGZvciBzbm1wVGFyZ2V0QWRkcgorCitjb21taXQgMDc2OWY0MjBkOGY0Mjc5OTNiMTM0MGZkYjdlY2IzYmMwNDlkM2Y2YworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVGh1IEp1bCAyNSAwODoxNTozMiAyMDEzICswMjAwCisKKyAgICBGaXJzdCBzaG90IG9uIGhhbmRsaW5nIGNlcnRpZmljYXRlcyB3aXRoIGVtYmVkZGVkIG51bCBjaGFyYWN0ZXJzCisKK2NvbW1pdCBkODMzYjBjOGJlNTA5YmZhM2I4MDAxYWU2ZjU1MjI4OWNlOTU2N2QwCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgSnVsIDIwIDEyOjQxOjQwIDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBNYWtlIGl0IHBvc3NpYmxlIHRvIHVzZSBOVUwgY2hhcmFjdGVycyBpbiB0aGUgaW5kaWNlcyBmb3Igc25tcFRhcmdldEFkZHJUYWJsZQorCitjb21taXQgNzFmMzE5Y2QyMzQ0NWM2ZTIyYTYwYTFhODVmMzFjMmI2OTA0YjNmYgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IEp1bCAyMCAxMjozOTo1OSAyMDEzICswMjAwCisKKyAgICBBZGQgdGVzdHMgZm9yIHNubXBUYXJnZXRBZGRyCisKK2NvbW1pdCBlYTM5ZTM2NzY2NjViN2U4Y2M1ZGZlYjViYmJjZDBhZDQzNGFkOTEyCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgSnVsIDE4IDAxOjM2OjI2IDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IE1ha2UgdGhlIGRhdGEgYXJndW1lbnQgdG8gcmVhZF9jb25maWdfc2F2ZV9vY3RldF9zdHJpbmcgYWNjZXB0IGNvbnN0YW50IHZhbHVlcworCitjb21taXQgNzhkYWM2ZTM3OTQzZDFhZDk5ODQxODk4ODA2ZWE2MGIwZWVkZTYzNgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEp1bCAyMiAxMjozOTowMCAyMDEzIC0wNzAwCisKKyAgICBmaXggYnVnIG51bWJlciAjYTI0Nzg6IGZpeCBtaWIgcmVwcmVzZW50YXRpb24gb2YgdGltZW91dCB2YWx1ZXMKKworY29tbWl0IGE3ZTNiYzhkZGJlMzg3ZWJmNmYzZjZiMDUwZTI5OTI5NTZiZDJlNjEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKdWwgMTEgMjA6MTQ6NDcgMjAxMyArMDIwMAorCisgICAgRml4ZXMgZm9yIG1lbW9yeSBzdGF0aXN0aWNzIGZyb20gKkJTRAorCitjb21taXQgOWRiZTEyNDAzY2VhYWZlNjE3ZjdkNDk5OTMzMTZhMjQ5ZmNiYjk5YQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEp1bCAxMSAyMDoxMzozNiAyMDEzICswMjAwCisKKyAgICBGaXggYSBtaXNzaW5nIG5ld2ZpbGUgaW4gYSBkZWJ1ZyBtZXNzYWdlCisKK2NvbW1pdCAwNDFkZWVkZjgxNTM3YmM2MTY5Mjk4NzUzZjlkY2EzZjZjZDYxYTM1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSnVsIDExIDIwOjEyOjEyIDIwMTMgKzAyMDAKKworICAgIE1ha2Ugc3VyZSB3ZSBkb24ndCBtYWtlIElQdjYgbWFzayBsb25nZXIgdGhlbiAxMjgKKworY29tbWl0IGM2N2M3ODk0MDMzOWZhZWFiNDJiMWIxYTBhNmJlNmNkNmRmZTJlMjIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKdWwgMTEgMjA6MDY6MzEgMjAxMyArMDIwMAorCisgICAgSW1wbGFtZW50IGlwQWRkcmVzc1RhYmxlIGZvciAqQlNECisKK2NvbW1pdCBiMTgxZTQzYTZkMWY1NjdiZmQxMDcxN2E3N2RmMTg0OGUzYmIwZjQzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSnVsIDExIDIwOjA1OjA4IDIwMTMgKzAyMDAKKworICAgIE1hcmsgT1MgdGhyZWFkcyBhcyBzdWNoLgorCitjb21taXQgZTM2YTVjYzVmMjAyNzJhZmZmNDIyOGU3ZTQzOTFkZDVlNmMwNjNiMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEp1bCAxMSAyMDowMzozNiAyMDEzICswMjAwCisKKyAgICBGaWMgc29tZSBtYW4gcGFnZSBjcm9zcyByZWZlcmVuY2VzCisKK2NvbW1pdCBlY2Y4NjgyZDg2NGQyZjA4NTI1MDc4NTQzODU4ZDM2MWIzYWRjYTVjCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1bCAxMCAxMDo0NzozMyAyMDEzICswMjAwCisKKyAgICBMb3dlciBpbXBvcnRhbmNlIG9mIGRlYnVnZ2luZyBtZXNzYWdlcywgdGhleSBzcGFtIHN5c2xvZy4KKworY29tbWl0IGVmOTYzMDYzZGU0OTQ4NWJkOTFjMTI5ZTA1M2YwNmQwNzQ0NDgzZTEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSnVsIDQgMTE6MzQ6MjUgMjAxMyArMDIwMAorCisgICAgRml4ZWQgc2l6ZSBvZiBuZXRsaW5rIG1lc3NhZ2UuCisgICAgCisgICAgUHJldmVudGluZyBrZXJuZWwgdG8gbG9nICduZXRsaW5rOiAxMiBieXRlcyBsZWZ0b3ZlciBhZnRlciBwYXJzaW5nIGF0dHJpYnV0ZXMuJyBtZXNzYWdlLgorCitjb21taXQgMmUwZDEwODczMTNiMGZhMDgzZTJiMWNhNDg5NWZiZjI0OGQ2M2NhOQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVGh1IEp1bCA0IDIyOjA0OjEyIDIwMTMgKzAyMDAKKworICAgIFJ1biBhdXRvcmVjb25mCisKK2NvbW1pdCBjN2ZiYTc4ZTEyMjUyNTRhMGY2NTYwNWYzODFhZWRkN2Q4YTIxMmNhCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgSnVsIDQgMjE6NDc6MDkgMjAxMyArMDIwMAorCisgICAgUnVuIGF1dG9yZWNvbmYKKworY29tbWl0IDU3MWJkNDA3ZjhiZTljOTRjYzU1MmQ0ZDNiN2Y1YjZiMDk4NGQyMzcKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFRodSBKdWwgNCAyMTozOTo1OSAyMDEzICswMjAwCisKKyAgICBSdW4gYXV0b3JlY29uZgorCitjb21taXQgOGFhNTBlZGJhN2EyZDk2NmQ4ZGZjN2ZmNGQ3Yzc4ZWZkZGU4YzViZAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVGh1IEp1bCA0IDA4OjUzOjU2IDIwMTMgKzAyMDAKKworICAgIFVzZSBBQ19MSU5LX0lGRUxTRSBpbnN0ZWFkIG9mIEFDX1RSWV9MSU5LIGFzIHRoZSBsYXR0ZXIgaXMgZGVwcmVjYXRlZAorCitjb21taXQgNTljNmFlMzQ2MjVlZTA0YWNlMzgyNGVjNDA0NjEzZTBiNTFkYzFiMAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVHVlIEp1bCAyIDE3OjQwOjU0IDIwMTMgKzAyMDAKKworICAgIFVzZSB0aGUgY3BwIGFuZCBsaW5rZXIgZmxhZ3MgZnJvbSBteXNxbF9jb25maWcgd2hlbiBjaGVja2luZyBmb3IgbXlzcWwgaGVhZGVycy4KKworY29tbWl0IGY4OWNmY2FmZGFlMjFmYWI1MGE3MGJkZGYxNThmZmQ5ZTRlMDAxZDIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFR1ZSBKdWwgMiAxNzozOToyNSAyMDEzICswMjAwCisKKyAgICBVc2UgdGhlIG91dHB1dCBvZiBteXNxbF9jb25maWcgLS1pbmNsdWRlIGluc3RyZWFkIG9mIHRoZSBvdXRwdXQgb2YgbXlzcWxfY29uZmlnIC0tY2ZsYWdzIGl0byBmaW5kIGluY2x1ZGUgZmlsZXMuCisgICAgCisgICAgQWNjb3JkaW5nIHRvIHRoZSBteXNxbF9jb25maWcgbWFuIHBhZ2UsIC0taW5jbHVkZSBpcyByZWNvbW1lbmRlZCBmb3IgZ3JlYXRlcgorICAgIHBvcnRhYmlsaXR5IHNpbmNlIC0tY2ZsYWdzIG1pZ2h0IGNvbnRhaW4gY29tcGlsZXIgZmxhZ3MgZm9yIHRoZSBjb21waWxlciB0aGF0CisgICAgd2FzIHVzZWQgdG8gYnVpbGQgbGlibXlzcWxjbGllbnQgd2hpY2ggbWlnaHQgY2xhc2ggd2l0aCB0aGUgb25lcyB1c2VkIHRvCisgICAgYnVpbGQgdGhlIGFwcGxpY2F0aW9uLgorCitjb21taXQgNjhhNmExY2E2ZGM0Y2E4OTAxYmFjYWI1OTgzMjZhZjczYjQ0NDY1NAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVHVlIEp1bCAyIDE3OjMwOjI5IDIwMTMgKzAyMDAKKworICAgIE9ubHkgY2hlY2sgZm9yIG15c3FsL215c3FsLmggb25jZS4gUmVtb3ZlIEhBVkVfTVlTUUxfTVlTUUxfSCBzaW5jZSBub3RoaW5nIHVzZXMgaXQuCisKK2NvbW1pdCBhZDg3YmI2MDhiMzA1NTY3YTNjNWVhZjA0NmI3Yzk4ZWEzZTRiZGQ1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEp1bCA0IDExOjMwOjA0IDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSCAyNDcyOiBmcm9tIFN1bmlsOiBkb24ndCB1c2UgSEJLVCBhcyBoZWFydGJlYXQgaW50ZXJ2YWwgaW4gU0NUUC1NSUI6OnNjdHBBc3NvY1RhYmxlLgorCitjb21taXQgNGM0YTQyODFmZDViMmM2MTU2YzUxMjBmOWEyZThiNzA4ZjQ2NmNjZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKdWwgNCAxMTowODo0OCAyMDEzICswMjAwCisKKyAgICBpbmNsdWRlRGlyIGlzIG5vdCBwcmVkaWN0YWJsZSB3aXRoIHJlbGF0aXZlIHBhdGhzCisKK2NvbW1pdCA3OWU4ZGQyYTM3MmEyMGVlOTdkZTFjNzEwN2I1OWFkNGFhZjg5YTM2CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEp1bCA0IDEwOjQ3OjI5IDIwMTMgKzAyMDAKKworICAgIFVwZGF0ZSBjb25maWd1cmF0aW9uIGRvY3VtZW50YXRpb24gd2l0aCBpbmNsdWRlRmlsZSBhbmQgaW5jbHVkZURpci4KKworY29tbWl0IGUwZTgwNDQ4MmJlYzcwZjRjNDE2YTM1ZmNiMzIzYTQxNjk5NjVjNWYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKdWwgMyAxNTowODoxNCAyMDEzICswMjAwCisKKyAgICBDSEFOR0VTOiBCVUc6IDI0NzA6IEFjY2VwdCA2NTUzNSBhcyBhIHZhbGlkIElQdjYgcG9ydCBudW1iZXIKKworY29tbWl0IGRkMzMyYTAzNWU4NTNjNzJhODMyNzQ4NDY5YmFiN2I4ODJlMjdiN2MKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKdWwgMiAwNzowMDo1MSAyMDEzICswMjAwCisKKyAgICBCVUcgYSMyNDYzOiBGaXggY29uZmlndXJlIHRvIHJlc3BlY3QgZGF0YSBmcm9tIG15c3FsX2NvbmZpZy4KKworY29tbWl0IDQwOGNjOTczMmMzNDYxMTFmYzFmZGEyM2UxMzZkNjA4ODNjZGI3ZTQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSnVsIDEgMTQ6MjU6NDEgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogcHl0aG9uOiBjb3JyZWN0bHkgcmVwb3J0IGVycm9yIHdoZW4gcGFyc2luZyBtYWxmb3JtZWQgT0lELgorCitjb21taXQgOWEyYmZjOGY5NWQ2ZTkyNmRjYmYxNmZmNDRiNTNiMjdlMzhjODQzNworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBKdWwgMSAxMzo1NDozOCAyMDEzICswMjAwCisKKyAgICBDSEFOR0VTOiBweXRob246IEZpeGVkIHJldHVybmluZyBvZiBlbXB0eSBzdHJpbmdzLgorICAgIAorICAgIFZhcmJpbmQgdHlwZSAoU05NUF9OT1NVQ0hPQkpFQ1QgZXRjLikgc2hvdWxkIGJlIHVzZWQgdG8gZGV0ZWN0IGVycm9ycyBpbnN0ZWFkIG9mIGxlbmd0aCBvZiB0aGUgdmFyaWFibGUgLSBpdCBjYW4gYmUgZW1wdHkgc3RyaW5nLgorCitjb21taXQgMWEwZjA3NTc0YTgwZDFkNmE2Nzg4Y2FlYjM5MWExZDJmZWY5NTcxMAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKdW4gMjggMTA6Mzc6NDYgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IHNob3cgTGludXgga2VybmVsIHRocmVhZHMgaW4gaHJTV1J1blRhYmxlLgorCitjb21taXQgMjY1OWMwZjZiZDg2ZjAxNzE4NjlkMzRmZjhhN2Q0ODE5NGVhNGIzMQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBNYXkgMjEgMDk6MTM6NDEgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEFkZGVkIGJ0cmZzIHN1cHBvcnQgdG8gaHJGU1RhYmxlCisKK2NvbW1pdCBhODQwMzlkMGExZDZmNTUwYjQ3M2QyOTU5MjEwMTBkODBlMThkODNmCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSnVuIDI1IDE0OjU1OjI2IDIwMTMgKzAyMDAKKworICAgIHNubXBfc3RyY2F0OiBkb250IHRlc3QgKmJ1ZiBiZWZvcmUgd2UgaGF2ZSB0cmllZCByZWFsbG9jCisKK2NvbW1pdCA1NTUzZWY0MzYyZDUyNGEwODhiNTE5ZTEzNTU2MTU4ZTVkNjI1ZWM0CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gSnVuIDMgMDI6NDg6MDYgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogRG8gbm90IHByaW50ZigiJXMiLCBOVUxMKSBhcyB0aGF0IGlzIHVuZGVmaW5lZCBiZWhhdmlvdXIuCisKK2NvbW1pdCA4OTQxNmU3OWY1YzUwNTY4ZTk5YzA3ZmFiMDZhOWFlOWY5NzZiYmVmCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBNb24gSnVuIDI0IDIyOjIyOjAzIDIwMTMgKzAyMDAKKworICAgIEJVRzogQTI0NDE6IENvcnJlY3QgY29tbWVudAorCitjb21taXQgMWEzYWU2NDc3YjgxNjNhMWI0M2I4MzRhYmIzMGIxZjAzMTQ1YWI2MgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IEp1biAyMiAyMDoyNzozNCAyMDEzICswMjAwCisKKyAgICBDSEFOR0VTOiBIT1NULVJFU09VUkNFUy1NSUIsIGhyU1dSdW4gdGFibGU6IFBhcnNlIC9wcm9jLzxwaWQ+L3N0YXQgY29ycmVjdGx5IG9uIExpbnV4CisgICAgCisgICAgVGhpcyBpc3N1ZSB3YXMgcmVwb3J0ZWQgYnkgVmluY2VudCBCZXJuYXQgPHZpbmNlbnQuYmVybmF0QGRhaWx5bW90aW9uLmNvbT4uCisgICAgU2VlIGFsc28gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wL25ldC1zbm1wL3BhdGNoZXMvMTI1Ny8uCisKK2NvbW1pdCBmOTJmZmU5MTdhMzAwYzQxZWJlMDdlMjRjNjQxODg1NWU3NTlmOTM4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgSnVuIDIyIDE5OjM3OjAzIDIwMTMgKzAyMDAKKworICAgIHNubXB0cmFwZDogRml4IGEgZG91YmxlIGZyZWUgaW4gYW4gZXJyb3IgcGF0aAorICAgIAorICAgIERldGVjdGVkIGJ5IENvdmVyaXR5LiBTZWUgYWxzbyBodHRwOi8vc291cmNlZm9yZ2UubmV0L3AvbmV0LXNubXAvcGF0Y2hlcy8xMjUxLy4KKworY29tbWl0IGM1ZjNhMWQ4YmI1ODA0Nzk5YjYwMmQyNzY5YjAzMWQ2ZmFmNWYwZWQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBKdW4gMjIgMTc6NTE6NDMgMjAxMyArMDIwMAorCisgICAgc25tcGxpYjogaGV4X3RvX2JpbmFyeTIoKTogUmV0dXJuIC0xIGlmIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxzCisKK2NvbW1pdCBmOGYwOGUxZDZkM2VjODE5NGZhYmQ2YWIwMDJhYjkxN2FmYmE5MWEzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgSnVuIDIyIDE3OjEzOjAxIDIwMTMgKzAyMDAKKworICAgIHNubXBsaWI6IFNpbXBsaWZ5IHRoZSBjb2RlIGZvciBkZWxldGluZyBhIHJlcXVlc3QgZnJvbSB0aGUgcmVxdWVzdCBsaXN0CisgICAgCisgICAgVGhlIGdvYWwgaXMgKGhvcGVmdWxseSkgdGhhdCB0aGUgbmV3IGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGNvbmZ1c2UKKyAgICBDb3Zlcml0eSBhbnltb3JlLiBTZWUgYWxzbyBodHRwOi8vc291cmNlZm9yZ2UubmV0L3AvbmV0LXNubXAvcGF0Y2hlcy8xMjUxLy4KKworY29tbWl0IGVmNmQ1YzdhMDMxMzI0N2E2Yzk0NzMyNjE3NzdlOTYzZjdhNDk1MjkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBKdW4gMjIgMTQ6NDg6MjIgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogc25tcF9zdHJjYXQoKTogQ2hlY2sgKmJ1ZiBiZWZvcmUgdXNpbmcgaXQKKyAgICAKKyAgICBEZXRlY3RlZCBieSBDb3Zlcml0eS4gU2VlIGFsc28gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wL25ldC1zbm1wL3BhdGNoZXMvMTI1MS8uCisKK2NvbW1pdCAyNTY2YjgzZWJlYjBlMzRlZWE5MDc5MjhjNTRjMmI0ZTc0ZmYzN2Y4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgSnVuIDIyIDE0OjIzOjMzIDIwMTMgKzAyMDAKKworICAgIGhyU1dJbnN0YWxsZWQgdGFibGU6IENoZWNrIHN0YXQoKSByZXR1cm4gdmFsdWUgKDIvMikKKyAgICAKKyAgICBEZXRlY3RlZCBieSBDb3Zlcml0eS4gU2VlIGFsc28gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wL25ldC1zbm1wL3BhdGNoZXMvMTI1MS8uCisKK2NvbW1pdCA0OWNmZTRkODQwYzU4ZTEyMDJmYTI3MWZiZTc2MGJkNzUyNmE4M2E4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgSnVuIDIyIDE0OjIzOjAzIDIwMTMgKzAyMDAKKworICAgIGhyU1dJbnN0YWxsZWQgdGFibGU6IENoZWNrIHN0YXQoKSByZXR1cm4gdmFsdWUgKDEvMikKKyAgICAKKyAgICBEZXRlY3RlZCBieSBDb3Zlcml0eS4gU2VlIGFsc28gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wL25ldC1zbm1wL3BhdGNoZXMvMTI1MS8uCisKK2NvbW1pdCA1ZGY1NDYyNjM5ZjI0M2Q1OTI5ZmE5YmExNGQyMGIzNzExZjdjYWNlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgSnVuIDIyIDE0OjIxOjE4IDIwMTMgKzAyMDAKKworICAgIHVjZC1zbm1wOiBmaW5kX2RldmljZSgpOiBSZW1vdmUgYW4gdW51c2VkIHZhcmlhYmxlCisgICAgCisgICAgRGV0ZWN0ZWQgYnkgQ292ZXJpdHkuIFNlZSBhbHNvIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9uZXQtc25tcC9wYXRjaGVzLzEyNTEvCisKK2NvbW1pdCAxM2NlMTk5NmE4MmUwYjQ1OGIyNmFlMzlhYmYyMDEyZGI1OWM4YTU1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgSnVuIDIyIDE0OjIwOjE1IDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IF9pbnNlcnRfbnNmaWxlKCk6IENoZWNrIHN0YXQoKSByZXR1cm4gdmFsdWUKKyAgICAKKyAgICBEZXRlY3RlZCBieSBDb3Zlcml0eS4gU2VlIGFsc28gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wL25ldC1zbm1wL3BhdGNoZXMvMTI1MS8uCisKK2NvbW1pdCA4MWEwZDg1OTE2M2Y4ZDU0OTA4NTI1YjUyMjQzMjk1ZDdiNDE0NTUwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgSnVuIDIyIDE0OjA3OjM3IDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEZpeCBhIGJhZCBmcmVlKCkKKyAgICAKKyAgICBEZXRlY3RlZCBieSBDb3Zlcml0eS4gU2VlIGFsc28gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wL25ldC1zbm1wL3BhdGNoZXMvMTI1MS8uCisKK2NvbW1pdCBkMzRjODNlOTM0MjQxOWFlZWNmZjVmZmQ3ZGVhYjgzOTg3ZGJlYmNhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgSnVuIDIyIDE0OjAwOjM5IDIwMTMgKzAyMDAKKworICAgIGV0aGVybGlrZS1taWIsIHJtb24tbWliOiBGaXggbWFsbG9jKC4uLikgPCAwIHRlc3RzCisgICAgCisgICAgRGV0ZWN0ZWQgYnkgQ292ZXJpdHkuIFNlZSBhbHNvIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9uZXQtc25tcC9wYXRjaGVzLzEyNTEvLgorCitjb21taXQgNDNjNDQwMTc2YjNlNGY5Y2U5OTVlNDgyZWM2OTc1YmEwYzg1OWJmMworQXV0aG9yOiBNaWNoYWVsIFNoY3dhcmN6IDxNaWNoYWVsLlNoY3dhcmN6QGNvbXBhc3MtZW9zLmNvbT4KK0RhdGU6ICAgU2F0IEp1biAyMiAxMjo0NjowNCAyMDEzICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IEZpeCBhIGRvdWJsZSBmcmVlIGF0IGV4aXQKKyAgICAKKyAgICBBIHF1b3RlIGZyb20gYSBtZXNzYWdlIGZyb20gTWljaGFlbCBTaGN3YXJjejoKKyAgICAKKyAgICBJIGFtIHJ1bm5pbmcgbmV0LXNubXAgNS43LjIgYW5kIGl0IGxvb2tzIGxpa2UgdGhlcmUgaXMgYSBkb3VibGUKKyAgICBmcmVlIHByb2JsZW0gaW4gc25tcHRyYXBkLCBpbiBmcmVlX3RyYXBkX2FkZHJlc3MoKSBhbmQKKyAgICBwYXJzZV90cmFwZF9hZGRyZXNzKCkuIEkgZ2V0IGEgU0lHQUJPUlQgb24gdGhlIHNlY29uZCBTSUdIVVAKKyAgICAobG9va3MgbGlrZSBpdCBkb2VzIGEgZG91YmxlIGZyZWUgb24gdGhlIGZpcnN0IFNJR0hVUCBhbmQgb24KKyAgICB0aGUgc2Vjb25kIGl0IGNyYXNoZXMpLgorICAgIAorICAgIEkgaGF2ZSB0aGlzIHNubXB0cmFwZC5jb25mIGNvbmZpZ3VyYXRpb246CisgICAgICBzbm1wVHJhcGRBZGRyIHVkcDoxNjIsdWRwNjoxNjIKKyAgICAgIGF1dGhDb21tdW5pdHkgbG9nLGV4ZWN1dGUsbmV0IHB1YmxpYworICAgIAorICAgIEFuZCB0aGlzIGlzIHRoZSBiYWNrLXRyYWNlIGZyb20gZ2RiOgorICAgICoqKiBnbGliYyBkZXRlY3RlZCAqKiogL29wdC9jb21wYXNzL2Jpbi9zbm1wdHJhcGQ6IGZyZWUoKTogaW52YWxpZCBuZXh0IHNpemUgKGZhc3QpOiAweDA4MGMxN2E4ICoqKgorICAgID09PT09PT0gQmFja3RyYWNlOiA9PT09PT09PT0KKyAgICAvbGliL2xpYmMuc28uNlsweGY3MjA0ODQ1XQorICAgIC9saWIvbGliYy5zby42KGNmcmVlKzB4OWMpWzB4ZjcyMDY2ZWNdCisgICAgL29wdC9jb21wYXNzL2Jpbi9zbm1wdHJhcGQoZnJlZV90cmFwZF9hZGRyZXNzKzB4MmEpWzB4ODA0YTZiYV0KKyAgICAvdXNyL2xpYi9saWJuZXRzbm1wLnNvLjMwKGZyZWVfY29uZmlnKzB4MzIpWzB4Zjc0YWU0YzJdCisgICAgL29wdC9jb21wYXNzL2Jpbi9zbm1wdHJhcGRbMHg4MDRhNTU3XQorICAgIC9vcHQvY29tcGFzcy9iaW4vc25tcHRyYXBkWzB4ODA0YmZhOV0KKyAgICAvbGliL2xpYmMuc28uNihfX2xpYmNfc3RhcnRfbWFpbisweGU1KVsweGY3MWIwNDU1XQorICAgIAorICAgIEkgaGF2ZSBhIHBhdGNoIHRoYXQgZml4ZXMgdGhpcyBpc3N1ZSwgaGVyZSBpcyB0aGUgZGlmZjoKKyAgICBAQCAtNDQ2LDYgKzQ0Niw3IEBAIGZyZWVfdHJhcGRfYWRkcmVzcyh2b2lkKQorICAgIHsKKyAgICAgICAgIGlmIChkZWZhdWx0X3BvcnQgIT0gZGRlZmF1bHRfcG9ydCkgeworICAgICAgICAgICAgZnJlZShkZWZhdWx0X3BvcnQpOworICAgICsgICAgICAgZGVmYXVsdF9wb3J0ID0gZGRlZmF1bHRfcG9ydDsKKyAgICAgICAgIH0KKyAgICB9CisKK2NvbW1pdCAyZGI1NDg1ZmMxY2NjZTM5ZWZhNjlhMzc3YmI4ZDZmNjIzMWViMGIyCitBdXRob3I6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHRoeXJzdXMuY29tPgorRGF0ZTogICBGcmkgSnVuIDIxIDEwOjQ3OjMyIDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IGRvY3VtZW50YXRpb246IGZyb20gIkVyaWMgUy4gUmF5bW9uZCI6IENvcnJlY3QgbWFuIHBhZ2UgbWFya3VwIHByb2JsZW0KKyAgICBBbWJpZ3VvdXMgb3IgaW52YWxpZCBiYWNrc2xhc2guICBUaGlzIGRvZXNuJ3QgY2F1c2UgZ3JvZmYgYSBwcm9ibGVtLgorICAgIGJ1dCBpdCBjb25mdXNlcyBkb2NsaWZ0ZXIgYW5kIG1heSBjb25mdXNlIG9sZGVyIHRyb2ZmIGltcGxlbWVudGF0aW9ucy4KKworY29tbWl0IGQ2NzcxNDY0ZjE2ZGM2ZmU2NGRkMjRjMDhhZjRiZTcyNTg4NWFkYWQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFR1ZSBKdW4gMTggMjM6NDU6MjggMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogYXBwczogU3RvcCBhZ2VudHh0cmFwIGZyb20gYWNjZXNzaW5nIHRoZSBwZXJzaXN0ZW50IGNvbmZpZ3VyYXRpb24KKyAgICBUaGlzIGlzIG5lZWRlZCB0byBwcmV2ZW50IG1vYW5pbmcgYWJvdXQgbm90IGJlZWluZyBhbGxvd2VkIHRvIHdyaXRlIHRob3NlCisgICAgZmlsZXMgZHVlIHRvIGJhZCBwZXJtaXNzaW9ucy4KKworY29tbWl0IDE0YWM1ZDVkMmM0ZDlmM2E3OTlkNDAxY2MxZTQwM2E4YTI5MmQ0MjUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdW4gMTIgMjI6Mzc6MjMgMjAxMyArMDIwMAorCisgICAgRGFyd2luIGZpeGVzOiBVRFAgYW5kIFRDUCB0YWJsZXMsIG1lbW9yeSBkYXRhLCBhbmQgc29tZSBlcnJvciBjaGVja2luZy4KKworY29tbWl0IGJhYmQzMWQxMDQ5ZTIzM2M0NTRmMWNiZDg4YmJhNzVmMmY0MDc4MWUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdW4gMTIgMjI6MjU6MTkgMjAxMyArMDIwMAorCisgICAgRml4IHNvbWUgbWFuIHBhZ2VzIHJlZmVyZW5jZXMgdG8gb3RoZXIgcGFnZXMKKworY29tbWl0IGJkZWZjZTA2YTFlYTFjMTQzMDgwMjcxNGZjODM3YjU1OGUxYTY3NWEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdW4gMTIgMjI6MjM6NTcgMjAxMyArMDIwMAorCisgICAgVXBkYXRlZCBFTlRJVFktTUlCIGluIHJmYyA2OTMzCisKK2NvbW1pdCBkZjg2M2E1MzQ4YWFiZjcxYmJjYTdiZmVmY2Y4YmViOGJiOWU3NzYyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDEyIDIyOjE3OjQ2IDIwMTMgKzAyMDAKKworICAgIEZpeCBCdWcgIzI0Mjc6IENhbm5vdCByZXNvbHZlIElQdjYgb25seSBob3N0bmFtZXMsIGJ5IGFjY2VwdGluZyBhIGxpc3QKKyAgICBvZiB0cmFuc3BvcnQgZG9tYWlucy4KKworY29tbWl0IGRhMWZlZjM4MjU5MWZmNDVkYzkyZWIzYjk1YTZiZmVmZjllY2ZhNGYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgTWF5IDIxIDA5OjEzOjQxIDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBBZGRlZCBidHJmcyBzdXBwb3J0IHRvIGhyRlNUYWJsZQorCitjb21taXQgOTMxYzg3YTA1ZjVmNjYyODk2MTNmZWQ3N2FjNzg4NDRiNjFjYjc5ZgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1heSAxNSAyMDoxODoxNCAyMDEzICswMjAwCisKKyAgICBCVUcgMjQ1ODogRml4IG1pc3NpbmcgaW5pdGlhbGl6YXRpb24gb2YgYXV0b19ubGlzdCBzdHJ1Y3R1cmUgKFRoYW5rcyBSeWFuIFN0ZWlubWV0eikKKworY29tbWl0IDkxMDRlMmEzZjE5NTUwNmE0NzczMzk4M2Q4Y2JhMzhlZDU5MmE5ODgKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXkgMTUgMjA6MTM6MDUgMjAxMyArMDIwMAorCisgICAgUEFUQ0ggMTI1MzogRml4IHBhcnNpbmcgb2YgREVGVkFMIEJJVFMgKFRoYW5rcyBNaWtlKQorCitjb21taXQgODU1ZTU0ZTM0NWM1NWVhMjJiN2U3YWMxMmEyNDlkNzQwOWZiYjMwOQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1heSAxNSAyMDoxMToyOSAyMDEzICswMjAwCisKKyAgICByZmNsaXN0OiBhZGQgUkZDIDY5NDUKKworY29tbWl0IDM2NTI3Y2Q4Y2NhNjUwNzEzYzg1ZTAzMjhjMGMyYTFjZDA5NWMzNTgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBNYXkgMTIgMTA6MDQ6MDggMjAxMyArMDIwMAorCisgICAgV2luZG93cywgVmlzdWFsIFN0dWRpbzogVW5icmVhayBjb21waWxhdGlvbiB3aXRoIHRoZSBXaW5kb3dzIFhQIFBsYXRmb3JtIFNESworICAgIAorICAgIFRoaXMgd2FzIHJlcG9ydGVkIGJ5IFdpbSBEZXZvcworCitjb21taXQgNTE3YTU1MTIxMDJkMzM5NDg5YzlhNzBlYThkMDg3YTBlMTAwMzVhOQorQXV0aG9yOiBXaW0gRGV2b3MgPFdpbS5EZXZvc0BtZXVjY2ktc29sdXRpb25zLmNvbT4KK0RhdGU6ICAgU3VuIE1heSAxMiAwOTo0MDo1MyAyMDEzICswMjAwCisKKyAgICBXaW5kb3dzOiBVbmJyZWFrIHRoZSBWaXN1YWwgU3R1ZGlvIGJ1aWxkCisgICAgCisgICAgInN0YXRpYyBORVRTTk1QX0lOTElORSIgdHJpZ2dlcnMgdGhlIGVycm9yIG1lc3NhZ2UgImVycm9yIEMyMTU5OiBtb3JlCisgICAgdGhhbiBvbmUgc3RvcmFnZSBjbGFzcyBzcGVjaWZpZWQiLCBzbyB1c2UgTkVUU05NUF9TVEFUSUNfSU5MSU5FIGluc3RlYWQuCisKK2NvbW1pdCA0ZGYwMmY5NjdkMGI5ZDE2Y2ExMmI1ODIxNWU5ODM1YmM5ZjM5MWNhCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgTWF5IDQgMTQ6NTQ6NDggMjAxMyArMDIwMAorCisgICAgUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmcgYWJvdXQgbWlzc2luZyBwcm90b3R5cGUKKworY29tbWl0IDE4ZGFmYTU4ZDgxMjE5NjFiMDU4ZDZkNDE2NzA3ZGYxZDZhMDQyYWMKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBNYXkgNCAxNDo1MzoxMCAyMDEzICswMjAwCisKKyAgICBSZW1vdmUgb25lIGNvcHkgb2YgdGhlIGxpbnV4X3N0YXRlcyBhcnJheS4gTWFrZSB0aGUgd2hvbGUgdGhpbmcgY29uc3QuCisKK2NvbW1pdCAwMmFkODFlYTJkZTJkNDY4Nzc5NDA1N2UyZTgxMDRhNjUyMzkyNTRkCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgTWF5IDMgMDg6MDg6MDEgMjAxMyArMDIwMAorCisgICAgUmV2ZXJ0IHRoZSBmdW5jdGlvbmFsIGNoYW5nZXMgZnJvbSAnRml4IG1peGluZyBvZiBjb2RlIGFuZCBkZWNsYXJhdGlvbnMnWzFdCisgICAgaW4gb3JkZXIgdG8gbm90IHVzZSB2YXJpYWJsZXMgYmVmb3JlIHRoZXkgYXJlIHNldCBhbmQgbm90IGluY3JlYXNlIHRoZQorICAgIHByb2JhYmlsaXR5IGZvciBtZW1vcnkgbGVha3MuCisgICAgCisgICAgMSkgcmV2IGVlZmMyNWNhNjcwNWEyZDFhOGY1MjE2MDc2ZjQzOWUwZDNlM2VmNzYKKworY29tbWl0IDRmZDA1MjVkNmE2NWFjZmVhM2Q3YjQzMWM5Nzg5M2RjNDc5MjdkYTgKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXkgMiAyMjo0NTo1MSAyMDEzICswMjAwCisKKyAgICBhdXRvY29uZgorCitjb21taXQgNTVkZGQ4Mjk1YWU2NWU0N2YyMjBmNDgwNzc5NGZiYWM5YjY5ZjBmYQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSAyIDIyOjIwOjQ2IDIwMTMgKzAyMDAKKworICAgIHRlc3Rpbmc6IERvY3VtZW50IHdoeSB3ZSBza2lwIHRlc3RzCisKK2NvbW1pdCBlZWZjMjVjYTY3MDVhMmQxYThmNTIxNjA3NmY0MzllMGQzZTNlZjc2CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWF5IDIgMjI6MTM6NDIgMjAxMyArMDIwMAorCisgICAgRml4IG1peGluZyBvZiBjb2RlIGFuZCBkZWNsYXJhdGlvbnMuCisKK2NvbW1pdCBiOTRiNzM0ZGQzNTNiY2Y3OTNjOGI2NWEyNzNhMTM4N2JmZDI1NmVhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWF5IDIgMjI6MTI6MTEgMjAxMyArMDIwMAorCisgICAgRGFyd2luOiBzdXBwb3J0IDY0LWJpdCBjb3VudGVycyBmb3IgZGlza2lvIHRhYmxlCisKK2NvbW1pdCA4ZDg0MWMxZDliMWI0ZWVjMjY0ZDY4MmFjMTI2MDMyYWEwOGYyZTgyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWF5IDIgMjI6MDk6MTcgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogU3VwcG9ydCBuZXcgTUlCIHN0cnVjdHVyZXMgYW5kIE1GRCByZXdyaXRlcyB1bmRlciBEYXJ3aW4KKworY29tbWl0IDI3NjQwZmNmYjIwNTI2YmVmMmY2ZWI0MGMyYTU0NTY2ZGZjNmM0YzYKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBBcHIgMjcgMTA6NTg6MjkgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IENvcnJlY3QgdGhlIHNpemUgb2Ygb2YgdGhlIEVYQU1QTEVJUEFERFJFU1MgdmFsdWUgb24gTDY0IGhvc3RzCisKK2NvbW1pdCBlYmJlMmEzOTkwZWY2ZGNiZGNiOTlhMzlhZGQ0NjUzOTgzNTRjMzRjCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUdWUgQXByIDIzIDA3OjI1OjIxIDIwMTMgKzAyMDAKKworICAgIGJ1aWxkaW5nOiBNYWtlIC0tZW5hYmxlLW1pbmltYWxpc3QgY29tcGlsYXRpb24gd29yayBhZ2FpbgorCitjb21taXQgNGJkN2Q3M2IxZmU2MGJiNTM2YmYzOWViNGEzODU5NmU4OTY1YzNmMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEFwciAyMiAyMjoyNTozOCAyMDEzICswMjAwCisKKyAgICB0eXBlY2FzdCB0byBzaWxlbmNlIHdhcm5pbmcgZm9yIGZvcm1hdAorCitjb21taXQgZGIwNzFkMGE2ZjQ4NzQyMTc2OWI2OWYyMmNjZjA5Y2MyNDJkOTQ1NAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEFwciAyMiAyMjoyMzo1MiAyMDEzICswMjAwCisKKyAgICBPbmx5IGRlY2xhcmUgSFJQX21heG5hbWVzIHdoZW4gbmVlZGVkCisKK2NvbW1pdCBmYWYwMGNlM2IwZmViNGQzN2ZhYmVmNmQ0MTM1ZTM2ODAzYjAwMzc5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDIyIDIyOjIyOjI0IDIwMTMgKzAyMDAKKworICAgIGlwLmM6IGZpeCBpbmNvbnNpc3RlbnMgZGVjbGFyYXRpb25zIG9mIGlwX21vZHVsZV9vaWRfbGVuCisKK2NvbW1pdCA3ZjZiNTk1MzNjZGZhMDY0NTBhZWU0MTU3MDIyM2IxY2RkMmNhNmI4CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDIyIDIyOjE5OjQ0IDIwMTMgKzAyMDAKKworICAgIFJlY292ZXIgZnJvbSBmYWlsdXJlcyBpbiBsaWJwY2kKKworY29tbWl0IDQwOTM4YTYyNjE5NTkwYjRlYTA3MWFlODViYWEyZjQyYTBiN2ZjYjIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDIyIDE1OjAwOjAwIDIwMTMgKzAyMDAKKworICAgIENoZWNrIGlmICdhc25fcGFyc2VfKiAnIGFjdHVhbGx5IHN1Y2NlZWRlZC4KKyAgICAKKyAgICBJZiBub3QsIGRpc2NhcmQgdGhlIHBhY2tldCBpbnN0ZWFkIG9mIHVzaW5nIHdyb25nIGRhdGEuCisKK2NvbW1pdCBhYTRmYjk0OTAxMmQ3YzAyMmE0MzY5OTJhYzIwM2MwNjVmZDc0MjBhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEFwciAyMiAxNDo1ODo0MSAyMDEzICswMjAwCisKKyAgICBJbnRlZ2VyIHZhbHVlcyBlbmNvZGVkIGluIEJFUiBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGNoYXJhY3Rlci4KKyAgICAKKyAgICBJZiBhc25fbGVuZ3RoID09IDAsIHdlIHdvdWxkIHJlYWQgdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIG5leHQgdmFyYmluZCBvbiBuZXh0IGxpbmU6CisgICAgICAgIGlmICgqYnVmcCAmIDB4ODApCisgICAgLT4gcmVhZGluZyBwYXN0IHRoZSBidWZmZXIgaWYgdGhlcmUgaXMgbm8gc3VjaCB2YXJpYWJsZSAtPiBzaWdzZWd2LgorCitjb21taXQgZjZlZWQ2ZTIzODRjYmY4NTc3NjhmMGVlOGM2NjAyZWI3Y2QyZjAzYQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgTW9uIEFwciAyMiAwODoxODo1NCAyMDEzICswMjAwCisKKyAgICBSZWdlbmVyYXRlIGNvbmZpZ3VyZQorCitjb21taXQgYTU4N2QxMWZiNjdmYWQzYWYyNDUxN2E0MDhhYmMzNzAwNTY1ZWRmNQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgTW9uIEFwciAyMiAwODoxODozNSAyMDEzICswMjAwCisKKyAgICBSZWdlbmVyYXRlIGNvbmZpZ3VyZQorCitjb21taXQgY2UzYzkyMTQxMjhiMWNkYmViZDI5NzVkYTBmMzZhNTVlMjU4NGZhMAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgTW9uIEFwciAyMiAwODoxNjowMiAyMDEzICswMjAwCisKKyAgICBSZXBvcnQgdGhlIHJlc3VsdCBvZiB0aGUgUE9TSVggc2hlbGwgdGVzdCwgbm90IGEgY29uc3RhbnQgeWVzCisKK2NvbW1pdCAwYzg3MGY3NGIyZTQzMzdiNGJmM2I3ZjExZjU1YjEyZTgwZGY0OWZmCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBNb24gQXByIDIyIDA4OjAwOjMyIDIwMTMgKzAyMDAKKworICAgIENoYW5nZSB0aGUgY2hlY2sgb2YgcGVybCBzaGVsbCBkZXRlY3Rpb24gdG8gd29yayB3aXRoIEFJWCBzaCBhcyB3ZWxsCisKK2NvbW1pdCA1ZjA4MTlmMTAyZDFjZGUzODk5ZDA4NzA4YzljMTI2MjY4ODk5MzE4CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBNb24gQXByIDEgMDc6Mzg6MDkgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IE1ha2UgdXBkYXRlLWNvbnRyb2xsZWQgY2hhbmdlcyB0cmlnZ2VyIHBlcmlvZGljIHNhdmVzLiBUaGFua3MgdG8gQ2xhdXMgS2xlaW4gZm9yIG5vdGljaW5nIHRoYXQgdGhpcyB3YXMgbWlzc2luZy4KKworY29tbWl0IGE4ZmYyNjg4M2Q2Mzg2MWQ4NzY5ODVkZGU4OWYzODkxNTc3ZDYwMjYKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBNYXIgMzEgMTM6MzM6MDIgMjAxMyArMDIwMAorCisgICAgc25tcGQ6IE1ha2UgdGhlIHVwZGF0ZSBoYW5kbGVyIGNhbGwgYW55IGNoaWxkIGhhbmRsZXJzCisKK2NvbW1pdCAyYmM2MmI5NzJhMmJkMGI5MWRkZDRmN2MxMWQ0N2RiZTViZjZmZjAzCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gTWFyIDMxIDEzOjMyOjI5IDIwMTMgKzAyMDAKKworICAgIHNubXBkOiBEbyBub3QgbGVhayBtZW1vcnkgaWYgaGFuZGxlciByZWdpc3RyYXRpb24gZmFpbHMuCisKK2NvbW1pdCBhZTkxNDhiNTFiOWIwMjI3MGZkZGJiNzQxMTFiYTJjMDJhOGVhNjdjCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXByIDE2IDIyOjAzOjAwIDIwMTMgKzAyMDAKKworICAgIGV4dGVuZC5jOiBmaXggbWlzc2luZyBzZW1pY29sb24gYW5kIHdhcm5pbmcKKworY29tbWl0IDQ2NDIyZDE3ZGZkYjQxNmViMjRhZDdkYjc0NTNlYzQ3M2RiMjA4MjAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXByIDE2IDEzOjQ4OjI2IDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBGaXhlZCBjcmFzaCBpbiBVQ0QtU05NUC1NSUI6OmV4dFRhYmxlCisgICAgCisgICAgc25tcGQgY3Jhc2hlZCB3aGVuIHRoZSBjb21tYW5kIHRvIGV4ZWN1dGUgaGFkIG5vIGFyZ3VtZW50cywgaS5lLiBleHRlbmQtPmFyZ3Mgd2FzIE5VTEwuCisKK2NvbW1pdCA4YjU3YmRiMGEwOTQ3MmExNmQzYWY2OWZkMmIxMzc0YzA5ZTZhM2FkCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDggMjA6MzY6MzUgMjAxMyArMDIwMAorCisgICAgcmVydW4gYXV0b2hlYWRlci9hdXRvY29uZgorCitjb21taXQgOWE5ZWEyNTdlNmViNDc4MDBkMzRmMWE4NmVjMGEyYTZlOTA4NWYzMQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEFwciA4IDIwOjM1OjI0IDIwMTMgKzAyMDAKKworICAgIHJlcnVuIGF1dG9oZWFkZXIvYXV0b2NvbmYKKworY29tbWl0IDU5YTMyMTQzOThiY2ViMjJjNDhkNThjMGZlOWM1NTJiMmUxZWNiOGMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBcHIgOCAyMDozMTo0OSAyMDEzICswMjAwCisKKyAgICByZXJ1biBhdXRvaGVhZGVyL2F1dG9jb25mCisKK2NvbW1pdCBlNGQ3MmRiMTFkM2ZiN2E0NDQyNTA5N2I1ZWMyNmI5ZjkxN2E5YzgyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDggMTk6MTQ6MDQgMjAxMyArMDIwMAorCisgICAgc25tcGtzbTogaGFuZGxlIGRlcHJlY2F0ZWQga3JiNV9hdXRoX2Nvbl9nZXR7bG9jYWwscmVtb3RlfXN1YmtleQorCitjb21taXQgOTlmZjk1MzY3M2Y3MzYxNDQ2M2FjZTEyMTBjNGFjMDczYTFmMmE4MQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEFwciA4IDE5OjA1OjQ3IDIwMTMgKzAyMDAKKworICAgIHNubXBrc206IGZpeCBzb21lIGNvbnN0IGNhc3Qgd2FybmluZ3MKKworY29tbWl0IGNmMGQ0ZWYyMjRiYWQwMDA5OTUzNzA0ODNhNWM5OGRjMTc4MzlhNDEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBBcHIgNSAyMjowNTozMyAyMDEzICswMjAwCisKKyAgICBJbml0aWFsaXplIGEgY291cGxlIG9mIHZhcmlhYmxlcyB0byBwbGVhc2UgY2xhbmcKKworY29tbWl0IDcxZjU5ZTllNmM5OGU4ZGJmYWIxZmZiMGQxZTQ2OGMxMmUzZDkyY2UKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBBcHIgNSAyMTozODo0NCAyMDEzICswMjAwCisKKyAgICBNYWtlIHN1cmUgc25tcGtzbSBpbmNsdWRlcyBjb21fZXJyLmggKHdoZXJldmVyIGl0IGlzKSB0byBkZWNsYXJlIGVycm9yX21lc3NhZ2UKKworY29tbWl0IDhjMDFmNjQ3MjhhNDM2NTZkYzNhYzVmYmVmZGY4ZWNlYzhkYTE1MDYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBBcHIgNSAyMToxMzozMCAyMDEzICswMjAwCisKKyAgICBNaW5vciBmaXggdG8gaW5saW5lIHRvIGFsbG93IGNvbXBpbGF0aW9uIHdpdGggY2xhbmcKKworY29tbWl0IDJkYjEyZjY4OGUxZjJlZWViYjU4OWVjNzNkYTgyZWI4OTdmMzRiZDEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIE1vbiBNYXIgMTggMDg6NTQ6NDkgMjAxMyArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IE1ha2UgdGhlIGxvY2FsIHRydXRodmFsdWUgaGFuZGxlciBjYWxsIGFueSBzdWJoYW5kbGVycyBpdCBtaWdodCBoYXZlLiBUaGFua3MgdG8gQ2xhdXMgS2xlaW4gZm9yIG5vdGljaW5nIHRoaXMgcHJvYmxlbS4KKworY29tbWl0IDkwNTEyYTMyYmQxYzJiZTVkMTdiMjNmMTA5NTYyNzgzOTVkZTM3NTQKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBNYXIgMTkgMjI6Mjg6MzQgMjAxMyArMDEwMAorCisgICAgUGF0Y2ggMTI1MCBmcm9tIHN0aGVuOiBpbmNsdWRlIDxzeXMvcHJvYy5oPiBpbiBzd3J1bl9raW5mby5jIGZvciBPcGVuQlNEIDUuMworCitjb21taXQgMzkxOTM2MDBlYzM4ZGViNTEzNzlhMTA5NjQ4ZDY5ZTdlOTAwMTcwMgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1hciA3IDIxOjQ0OjU5IDIwMTMgKzAxMDAKKworICAgIHNubXBuZXRzdGF0OiBwcm90b3R5cGUgcm91dGU2cHIKKworY29tbWl0IGFjY2U4Mjk2ZGM1YjY4ZDIxMmY3NDA0ZWRjMmFmZGI4YjAyODE3YzAKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXIgNyAyMTozOToxNiAyMDEzICswMTAwCisKKyAgICBjbGVhbiB0YWJzIHRwIHNwYWNlcworCitjb21taXQgNDAyYmRhZTk2YTZkNzliM2I2M2I2NzI2MWIzN2E4NDdhYjQ4MTdlMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1hciA3IDIxOjM3OjQzIDIwMTMgKzAxMDAKKworICAgIHNubXBuZXRzdGF0OiBmYWxsIGJhY2sgdG8gaXB2NFJvdXRlVGFibGUgKFRoYW5rcyB0byBmZW5uZXIpCisKK2NvbW1pdCBlNjkxN2UzNzJhMDZkZGQ3NzYxYjMxMDNiMzI5YmNmNjk2ZTkzYTFmCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWFyIDcgMjE6Mjk6NDQgMjAxMyArMDEwMAorCisgICAgc25tcG5ldHN0YXQ6IHNob3cgQVMgaW4gcm91dGluZyB0YWJsZSBpZiBhdmFpbGFibGUgKFRoYW5rcyB0byBmZW5uZXIpCisKK2NvbW1pdCA5ZWI4ZDBmOTA3ZWQ4ZDc4ZGU5MGRjZjY2MjNjMzMwNjA5OTNmMmEwCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWFyIDcgMjE6Mjg6MjYgMjAxMyArMDEwMAorCisgICAgc25tcG5ldHN0YXQ6IGVhcmx5IGRldGVjdCBpZiB3ZSB3YW50IGlwdjQgcm91dGUgdGFibGUgKFRoYW5rcyB0byBmZW5uZXIpCisKK2NvbW1pdCA0MDgzNzM0ZWY3ZjRiZWFmMWI5YTEzMjU3MzhiYTE4NWViN2NjNzE2CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWFyIDcgMjE6MjU6NTMgMjAxMyArMDEwMAorCisgICAgRml4IG1pc3BsYWNlZCBuZXdsaW5lcyBpbiBlcnJvciBtZXNzYWdlcworCitjb21taXQgNWIwZWQzYjc2ZjZlNDY2OWYyMzhiNWM4MmNkM2NjNmNiNmNhYTVjZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciA1IDE3OjE2OjI2IDIwMTMgKzAxMDAKKworICAgIFVuaXQgdGVzdCBUMDE0OiBGaXggYSBDeWd3aW4gYnVpbGQgd2FybmluZworCitjb21taXQgMTA2YWQyNDUwZjJiNzg4NDhmMjkyYWQwMzQ0NWE5N2M3Zjg3ZTZmNAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciA1IDE3OjE3OjA1IDIwMTMgKzAxMDAKKworICAgIFVuaXQgdGVzdCBUMDE0OiBJbml0aWFsaXplIHZhcmlhYmxlcyBwcm9wZXJseQorCitjb21taXQgYTdkZWE1NzM0ODU5MzE1NjEwNTFhMjAxOTAyN2Q3ZWQwOWQxNTU2NQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE1hciA0IDIyOjM1OjA2IDIwMTMgKzAxMDAKKworICAgIHJmY2xpc3Q6IGFkZCBHOTk4eCBtaWJzCisKK2NvbW1pdCA0NjA0Y2Y2MWU3Y2Y2ZWE2NGU3ODJmNGEzZDcyZDRmYjAyNGMxZjliCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTWFyIDQgMjI6MjM6MjMgMjAxMyArMDEwMAorCisgICAgc25tcG5ldHN0YXQgLUNzOiBjb25zaXN0ZW50IGZpZWxkIHdpZHRocyBmb3Igc3RhdGlzdGljcy4gRG9jdW1lbnQKKyAgICBzbm1wbmV0c3RhdCAtQ3NzIHZhcmlhbnQuCisKK2NvbW1pdCA0YWE5MjE1N2NlNTVkMWU1MjhkN2RlNTI0OTFkM2ViNzAyMDg2OWU3CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTWFyIDQgMjI6MTc6MTkgMjAxMyArMDEwMAorCisgICAgc25tcG5ldHN0YXQuMTogcmVtb3ZlIGludmFsaWQgcmVmZXJlbmNlcyB0byByb3V0aW5nIHN0YXRpc3RpY3Mgb3V0cHV0LgorCitjb21taXQgNzUxZjRhNmM3ZmM4OWE1Y2YyYjI4NzlmNmY5MTViMzE0NjZhMDRiNworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE1hciA0IDIyOjE0OjI5IDIwMTMgKzAxMDAKKworICAgIHNubXBuZXRzdGF0OiBmYWxsIGJhY2sgZmlyc3QgdG8gaXBDaWRyUm91dGVUYWJsZS4gVGhhbmtzIHRvCisgICAgQmlsbCBGZW5uZXIgZm9yIGluaXRpYWwgcGF0Y2ggZm9yIHRoaXMuCisKK2NvbW1pdCA5M2M4NmU2ZTFjZjMwMWJkMjY5ZmRmZmI1ZTlhYWFjZThhYTE5M2Y0CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUdWUgSmFuIDMgMDc6MjE6MDMgMjAxMiArMDEwMAorCisgICAgRG8gbm90IGxlYWsgbWVtb3J5IG9uIGVycm9yCisgICAgCisgICAgSWYgYWxsb2NhdGlvbiBvZiBpaW5mbyBmYWlscyB0aGVuIHRhYmxlX2luZm8gaXMgbGVha2VkLgorICAgIERlYWxsb2NhdGUgdGFibGVfaW5mbyBpbiB0aGlzIGNhc2UuCisKK2NvbW1pdCAzNmE3ZGU3MjMwZmJiYmI1MmNjMzdjYmJlZDI4MWViNTU5NDA0YmU5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDI1IDIwOjQwOjA5IDIwMTMgKzAxMDAKKworICAgIENIQU5HRVM6IFdpbmRvd3M6IEFkZCBtdWx0aWhvbWluZyBzdXBwb3J0CisgICAgCisgICAgT24gV2luZG93cyBWaXN0YSAvIFdpbmRvd3MgU2VydmVyIDIwMDggYW5kIGxhdGVyIGl0IGlzIHBvc3NpYmxlIHRvIGFkZAorICAgIG11bHRpaG9taW5nIHN1cHBvcnQgYnkgdXNpbmcgdGhlIElQX1BLVElORk8gc29ja2V0IG9wdGlvbi4KKyAgICAKKyAgICBDb25mbGljdHM6CisgICAgCXNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jCisKK2NvbW1pdCA3YmJhYmFiMjM2MmRhYTZkNzZhZDczMDMzYjNmMzJiMmNiYTcyNTNmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgRmViIDIyIDE4OjU1OjQ3IDIwMTMgKzAxMDAKKworICAgIFJld29yayBJUF9QS1RJTkZPIC8gSVBfUkVDVkRTVEFERFIgZGV0ZWN0aW9uCisgICAgCisgICAgRGV0ZWN0IElQX1BLVElORk8gLyBJUF9SRUNWRFNUQUREUiBzdXBwb3J0IGR1cmluZyB0aGUgY29uZmlndXJlCisgICAgcGhhc2UgaW5zdGVhZCBvZiByZXBlYXRpbmcgdGhlIGZvbGxvd2luZyB0ZXN0IGluIGVpZ2h0IGRpZmZlcmVudAorICAgIHBsYWNlczoKKyAgICAKKyAgICAgI2lmIChkZWZpbmVkKGxpbnV4KSAmJiBkZWZpbmVkKElQX1BLVElORk8pKSBcCisgICAgICAgICB8fCBkZWZpbmVkKElQX1JFQ1ZEU1RBRERSKSAmJiBIQVZFX1NUUlVDVF9NU0dIRFJfTVNHX0NPTlRST0wgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgSEFWRV9TVFJVQ1RfTVNHSERSX01TR19GTEFHUworICAgICAuLi4KKyAgICAgI2VuZGlmCisgICAgCisgICAgVHdvIHNpZGUtZWZmZWN0cyBvZiB0aGlzIHBhdGNoIGFyZToKKyAgICAqIElQX1BLVElORk8gc3VwcG9ydCBpcyBlbmFibGVkIG9uIEN5Z3dpbi4KKyAgICAqIHNldHNvY2tvcHQoSVBfUkVDVkRTVEFERFIpIGlzIG5vIGxvbmdlciBpbnZva2VkIG9uIFdpbmRvd3Mgd2hlbgorICAgICAgYnVpbHQgd2l0aCBWaXN1YWwgU3R1ZGlvIG9yIE1pbkdXLWdjYy4KKworY29tbWl0IDFhMTk2YWQ5ZjE1MTc4NjhiOTNhNmJlYzkzYTBjZmUxZDI5ZTI4M2IKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBGZWIgMjMgMTQ6MDM6MjkgMjAxMyArMDEwMAorCisgICAgVGVzdGluZzogTWFrZSB1bml0IHRlc3QgVDAxNCBtb3JlIHJvYnVzdAorCitjb21taXQgOWJlMjJhYWFmODM5MzcxM2ZiYzM5MDI1ZjcwMjExMWY1MGYxZTRlYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IEZlYiAyMyAxMTowMzoyMCAyMDEzICswMTAwCisKKyAgICBXaW5kb3dzOiBBdm9pZCBjb2xsaXNpb25zIHdpdGggdGhlIFdpbmRvd3MgVmlzdGEgb3IgbGF0ZXIgU0RLCisKK2NvbW1pdCAwYjZiZmVmMmNhOWFlOWUxYzJiZWFmZTcwMDEwMGZhZTVmNmY0YzFhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgRmViIDIzIDExOjIwOjIzIDIwMTMgKzAxMDAKKworICAgIGluZXRfbnRvcCgpIC8gaW5ldF9wdG9uKCk6IENvbnZlcnQgcHJvdG90eXBlcyBmcm9tIEsmUiB0byBBTlNJIEMKKworY29tbWl0IDJiYjUxZDcxZWVjNGU3ODk5ODJjMmE3NDExODZkY2U2ZGYyMzg1NDIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMjEgMjA6NTk6MjUgMjAxMyArMDEwMAorCisgICAgUmVkdWNlIHRoZSB0aW1lIG5lZWRlZCB0byBydW4gdGhlIHJlZ3Jlc3Npb24gdGVzdHMgKHdhcyBlbmxhcmdlZCBieSBjb21taXQgYjNkNWVkODcpCisKK2NvbW1pdCBjZjY0MGNjZDY4ZTk2MzY4MDViNzUwNzk5MjhjNzI3N2ZhMjYwODNiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIxIDExOjU1OjAzIDIwMTMgKzAwMDAKKworICAgIFVuaXQgdGVzdCBUMDE0OiBBY2NlcHQgImxvY2FsaG9zdC5sb2NhbGRvbWFpbiIgdG9vCisKK2NvbW1pdCBiZGE0MzU3Mzc1YWQyOTljZjE4NDc1NzllMWExYmMzYzYxMTg5NWMzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIxIDE2OjA3OjQxIDIwMTMgKzAxMDAKKworICAgIFJlZ3Jlc3Npb24gdGVzdCBUMDYwOiBFc2NhcGUgYmFja3NsYXNoZXMgcGFzc2VkIHRvIENPTkZJR1RSQVBECisKK2NvbW1pdCA2YjVkNzg0ZjRkNmQwMDAzOTAwMTRkMTIwZjE1YjkzNzM2MmY4YzA3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIxIDIwOjMzOjAyIDIwMTMgKzAxMDAKKworICAgIFB5dGhvbiBiaW5kaW5nczogRml4IGEgcmVjZW50bHkgaW50cm9kdWNlZCBjb21waWxlciB3YXJuaW5nCisKK2NvbW1pdCA2ZDI1OGVmYTJhY2NhZGZjY2M1MGQ4NmJkNDYzNzk3NDU0NDljYTRhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIxIDE1OjI3OjE5IDIwMTMgKzAxMDAKKworICAgIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6IFJlbW92ZSBzdXBlcmZsdW91cyBjYXN0cworCitjb21taXQgMmMyZTFmNDE2MzkzZDQ4NWY5YWM5MGM4N2Y3MjA2NWM2NjhiNzMyMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyMSAxNTo0ODozNCAyMDEzICswMTAwCisKKyAgICBweXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jOiBGaXggYSBjb21waWxlciB3YXJuaW5nCisKK2NvbW1pdCAxYmM3OTlkZTZjYWIwMTBiMjVjMGM0ZDNmNTE1NWI1ZmJhZjUyN2YwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIxIDIwOjA1OjE0IDIwMTMgKzAxMDAKKworICAgIFB5dGhvbiBiaW5kaW5nczogRml4IHRoZSBvdXQtb2YtYm91bmRzIHdyaXRlCisgICAgCisgICAgU2VlIGFsc28gY29tbWl0IDIzNDE1OGI4ZTg0Y2MyMDRjYmFjOTZlNmU5YmU2OTU5NjM1NDA0YjgKKworY29tbWl0IDRmNGVhZWI5MjBhZDE1YzkyOWM2Njc4MmNjMGE2NDI5MTJjYWJkMDYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE3IDEyOjI0OjI2IDIwMTMgKzAxMDAKKworICAgIENIQU5HRVM6IHB5dGhvbjogZml4ZWQgSVBBRERSRVNTIHNpemUgb24gNjRiaXQgc3lzdGVtcy4KKworY29tbWl0IDQ4NmYxMWRkZWU5ZjFjMmRkODA1NjQ0OWU5MDMxZTI0Yjg2NDY4NzIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRmViIDIxIDEwOjA2OjEyIDIwMTMgKzAxMDAKKworICAgIEFkZGVkIElFVEYgQlNEIGxpY2Vuc2UgZm9yIE1JQiBmaWxlcy4KKyAgICAKKyAgICBNSUJzIGluY2x1ZGVkIGluIE5ldC1TTk1QIHRha2VuIGZyb20gSUVURiBEb2N1bWVudHMgYXJlIGNvbnNpZGVyZWQKKyAgICBDb2RlIENvbXBvbmVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBJRVRGIFRydXN0IExpY2Vuc2UgUG9saWN5LCBhcyBmb3VuZAorICAgIGhlcmU6CisgICAgCisgICAgaHR0cDovL3RydXN0ZWUuaWV0Zi5vcmcvbGljZW5zZS1pbmZvLworCitjb21taXQgZDI0ZWZiMDQ3NzhkODcwZWZhMjczOTQ5Mzk0OWRiNjVmM2ZkZDRmMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEZlYiAxMiAyMDo0NDo0NiAyMDEzICswMTAwCisKKyAgICBTb2xhcmlzOiBGaXggZmV0Y2hpbmcgb2YgbGFyZ2UgY2h1bmtzIG9mIGRhdGEgKGxhcmdlciB0aGFuIG9uZSBidWZmZXIpCisgICAgVGhpcyBmaXhlcyBwcm9ibGVtIHdpdGggbWFueSBpbnRlcmZhY2VzLCBidXQgY291bGQgYWxzbyBmaXggb3RoZXIgbGFyZ2UgdGFibGVzLgorCitjb21taXQgNDUwMDFmZDk4YzcyOWRmOWZmMDUzNjI3YzQxNmFiNWYyZTRjNjBmMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEZlYiAxMiAyMDozOTo1MCAyMDEzICswMTAwCisKKyAgICBGaXggYnVnIDIyODYsMjQzOTogQm91bmQgYnVmZmVyc2l6ZSBmb3Igc3dydW4gZGF0YSBvbiBGcmVlQlNECisKK2NvbW1pdCA5YmQwNDEzYmZiZGNkODQ1NDEzYzEzNWJiZmY4NzcxZmE3MTMwODA5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEZlYiAxMSAxMTo1NzowMSAyMDEzICswMTAwCisKKyAgICBFeHBsaWNpdGx5IGVudW1lcmF0ZSBjb25maWd1cmF0aW9uIGZpbGVzLgorICAgIAorICAgIFRoZSBnZW5lcmljIGNvbmYgYW5kIGxvY2FsLmNvbmYgZXh0ZW5zaW9ucyB3ZXJlIGludGVycHJldGVkIGFzIG15LnNubXAuY29uZiBhbmQgbXkub3RoZXIuc25tcC5sb2NhbC5jb25mIGJ5IHNvbWUgY3VzdG9tZXJzLgorCitjb21taXQgMGJkZDA5ODg5ZDA4MTFmODY0ZGYxMzFiODQ0ZjIwYjAwMzkyMDYyYgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEZlYiA3IDAwOjA1OjAzIDIwMTMgKzAxMDAKKworICAgIHNubXBfY2xpZW50LmM6Om5ldHNubXBfcXVlcnlfd2FsazogaGFuZGxlIFNOTVB2MiBleGNlcHRpb24gcmVzdWx0cworCitjb21taXQgODY0YjRhY2E4ZGZhNDgwYTc4Yjc0NWZhZTIwOTFlZGM1MzczYTBjNgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEZlYiA2IDE2OjAwOjU0IDIwMTMgKzAxMDAKKworICAgIHNubXB0cmFwZDogQWRkIC1YIG9wdGlvbiB0byBkaXNhYmxlIEFnZW50WAorCitjb21taXQgMTEyZjNkNGZhNTM2YjJjNTMxZDA3ODA2NzYxOTg5MTVhMWY1ODE3OQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEZlYiA2IDE1OjU5OjUzIDIwMTMgKzAxMDAKKworICAgIHJmY2xpc3Q6IEFkZCBSQlJJREdFLU1JQgorCitjb21taXQgYzBhNjU0OTU5Nzk0N2YyOWMzNmVmYWRiMDQ5MjdmZjY5MDE4OWViYQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAzMCAxNTo1MzoxNSAyMDEzICswMTAwCisKKyAgICBSVU5URVNUUzogZG9uJ3QgdHJhcCBvbiBTSUdDSExELiBJdCBjb25mdXNlcyBkYXNoLCBta3NoIGFuZCBtYXliZSBvdGhlciBzaGVsbHMuCisgICAgKGRhc2ggaXMgL2Jpbi9zaCBvbiBVYnVudHUpCisKK2NvbW1pdCBiOTVhYzM4NmU2YzIzNTZhMWVjMjlmMWM0MDliMmVjM2U5MDE1OWMzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDI5IDA4OjU5OjAxIDIwMTMgKzAxMDAKKworICAgIHJmY2xpc3Q6IGFkZCBURUQtTUlCCisKK2NvbW1pdCAyM2JkZjZkMjZmNDMzN2QwN2VhNmU5OTAxYTc3MzhkMTE4NmQxNmQ0CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDI5IDA4OjU4OjA3IDIwMTMgKzAxMDAKKworICAgIHNubXBkZjogYWRkIC1DSCBhcyBhbHRlcm5hdGl2ZSB0byAtQ2gKKworY29tbWl0IDQwMjU4ZTljMDYwYWVjYWM2NTU1YWVkZmYzZTcwYmRlN2QyYWI4NDYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBKYW4gMjggMTc6MDU6MDggMjAxMyArMDEwMAorCisgICAgVDA3MmNvbTJzZWN1bml4X3NpbXBsZTogYXdrIHN0cmluZyBpbmRpY2VzIHN0YXJ0IGF0IDEhCisgICAgRml4IHRlc3QgdG8gd29yayB3aXRoIG1hd2sgKGRlZmF1bHQgZm9yIERlYmlhbi9VYnVudHUpCisKK2NvbW1pdCBlMzdmMmI2YmRmZmE3YWZhYTFkYzBiOGFlZTU2NWE0ZGE4MmQ2ZmU0CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDI1IDE2OjI0OjEwIDIwMTMgKzAxMDAKKworICAgIHNubXBkZjogQWRkIC1DaCAoaHVtYW4gdW5pdHMpIG9wdGlvbgorCitjb21taXQgN2E0MDdhZDM0NTA1ZWQ0ZGJhYTJlODRlMDZhMWRiZjQ4YzNjNzdlNQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyNSAxNToyODo0MyAyMDEzICswMTAwCisKKyAgICBzbm1wZGY6IEhhbmRsZSBTTk1QICh2MmMvdjMpIGV4Y2VwdGlvbnMKKworY29tbWl0IGM3MzljYjM4NzVmYjVkNGNhZDQxMzg2NjFjYzBhNDE3MTM4NGMzNDEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjUgMTA6MTQ6MDIgMjAxMyArMDEwMAorCisgICAgQXBwbHkgcGF0Y2gjMTI0NjogRml4IHBhc3NpbmcgYSBTRVQgb2YgYSBzdHJpbmcgdG8gbm90IGN1dCBpdCBhdAorICAgIGZvdXIgY2hhcmFjdGVycyB0byBhIHBhc3MvcGFzc19wZXJzaXN0IGhlbHBlci4KKworY29tbWl0IDIzNDE1OGI4ZTg0Y2MyMDRjYmFjOTZlNmU5YmU2OTU5NjM1NDA0YjgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE3IDEyOjI0OjI2IDIwMTMgKzAxMDAKKworICAgIENIQU5HRVM6IHB5dGhvbjogZml4ZWQgSVBBRERSRVNTIHNpemUgb24gNjRiaXQgc3lzdGVtcy4KKworY29tbWl0IDllMGEwZTM1ZDhkMWIzNmZhNDdjZWM5MzhkNmM4NzRkZTAwNzFiYjYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBXZWQgSmFuIDkgMjI6Mzc6NDcgMjAxMyArMDAwMAorCisgICAgQ0hBTkdFUzogcHl0aG9uOiBQQVRDSEVTOiAxMjM5OiBGaXggbWVtb3J5IGxlYWsKKworY29tbWl0IDU1NjA1ZWUzNDUyYWVmNWFhYmU0ZWQxNWE4MzM3NGE5NzcyOGU2NGEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDkgMDk6MjY6NTYgMjAxMyArMDEwMAorCisgICAgRml4ZWQgbWVtb3J5IGxlYWsgb24gZmFpbGVkIHJlYWxsb2MuCisKK2NvbW1pdCBhMzJjYTkzYTliOTE2NzRhOGMxZTg5ZTFhMzgzYTc2MTM2YjhhYzM4CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEphbiA4IDE2OjQyOjU0IDIwMTMgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxMjQwOiBGaXggZGVhbGxvY2F0aW9uIG9mIGludGVnZXIgaW5kZXhlcworCitjb21taXQgODc2ODFmMGZiMjg1YTAyMTYzNmUwNmE2ZjIzNTFkNzY0MDllZWJjOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IEphbiA1IDE1OjA2OjEyIDIwMTMgKzAxMDAKKworICAgIEF2b2lkIHVzaW5nICJsb2NhbCIgc2luY2UgU29sYXJpcycgL2Jpbi9zaCBkb2VzIG5vdCB1bmRlcnN0YW5kIGl0CisKK2NvbW1pdCA1OWI0ZDQwZjM5NzBiYTgyZjNkZjJhMzk5OTcxMjU0YjA0ODI3NDQzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDQgMTg6MDA6NTMgMjAxMyArMDEwMAorCisgICAgQ0hBTkdFUzogV2luZG93czogTWFrZSB3aW5FeHRETEwgd29yayBvbiA2NC1iaXQgV2luZG93cyBzeXN0ZW1zCisKK2NvbW1pdCAzOTU5NzEwNjAzOGY2ZTFjNWVkNDliM2ZjZTAwMjFhNmM1OWVjMWZlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDQgMTg6MDU6MzggMjAxMyArMDEwMAorCisgICAgd2luRXh0RExMOiBBZGQgbW9yZSBkZWJ1Z2dpbmcKKworY29tbWl0IDg1Y2U5MDYyOTExZDMxYjQyZTBjMWUxMzVhYmQzYmRhODEzZTMwMDMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNCAxODowMjozMCAyMDEzICswMTAwCisKKyAgICB3aW5FeHRETEw6IEludm9rZSBTbm1wRXh0ZW5zaW9uQ2xvc2UoKSBiZWZvcmUgdW5sb2FkaW5nIGFuIGV4dGVuc2lvbiBhZ2VudAorCitjb21taXQgN2UwMzEyMjk1NDM1NzlkMzdiMDA2Mjk2ZTJmNDQ1NDgyZDA1MTJjYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IEphbiA1IDEzOjA0OjAyIDIwMTMgKzAxMDAKKworICAgIHdpbkV4dERMTDogUmVtb3ZlIHNvdXJjZSBmaWxlIHdpbjMyL01nbXRBcGktd2luRXh0RExMLmgKKworY29tbWl0IDJlODk2MjRlNTVlNzM1NTc4NjI1OTRmMWY1MjVmOWRmZmM4Mjc5ODYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gNCAyMjoyNjo0NyAyMDEzICswMTAwCisKKyAgICBTb2xhcmlzIC9iaW4vc2ggZG9lcyBub3QgdW5kZXJzdGFuZCAnbG9jYWwnIGJ1aWx0aW4uCisKK2NvbW1pdCA2MjU3ZGVhNDgyN2U4NWM3YWY4NDVhZTljZGVkNDhkNDRhYTdiYjNkCitBdXRob3I6IEphbiBQb2tvcm7DvSA8anBva29ybnlAcmVkaGF0LmNvbT4KK0RhdGU6ICAgVGh1IERlYyAyMCAxNDo0NTo0NSAyMDEyICswMTAwCisKKyAgICBGaXggY29tbWVudCB0eXBvcyBpbiBleGFtcGxlLmMKKyAgICAKKyAgICBQYXRjaCBmcm9tIFBva29ybsO9IDxqcG9rb3JueSBhdCByZWRoYXQuY29tPgorCitjb21taXQgOWRmYzQ0YzkxZDdhMjlhNGM0M2Y3NzkwODVkZGUzNGM1ZmU2ZDVhYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiAzIDEwOjMwOjI3IDIwMTMgKzAxMDAKKworICAgIE1pbkdXLCB0ZXN0IGhhcm5lc3M6IEZpeCBhIGxvZyBtZXNzYWdlCisKK2NvbW1pdCAxZDA5OWM3YjkxOWVmMjVlZmEwM2MxNGFhNzdjY2JlYzhlNWJiMDA5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDMgMTA6MjQ6NDggMjAxMyArMDEwMAorCisgICAgYXBwcy9hZ2VudHh0cmFwLmMsIFdpbmRvd3M6IEZpeCB1c2FnZSB0ZXh0CisKK2NvbW1pdCBmMDIxZTZmZDRiYzJhY2I2ZmZhYzMzOWQzZjM4ZTRjMTViYjViZDdkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgSmFuIDEgMTc6NTM6MTYgMjAxMyArMDEwMAorCisgICAgTWluR1c6IFVwZGF0ZSB0ZXN0IGhhcm5lc3MuIEluc3RhbGxhdGlvbiBvZiBwc2xpc3QuZXhlIGlzIG5vdyByZXF1aXJlZC4KKworY29tbWl0IDRiYzNjMDU0N2UwYjMzZWVhNzFmM2MxYTA5ZWZkZDU5NjlkN2UyNzgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBEZWMgMzEgMTc6MjQ6MzMgMjAxMiArMDEwMAorCisgICAgdWNkLXNubXAvZGxtb2Q6IEVuYWJsZSBpbiBNU1ZDIGJhdGNoIGJ1aWxkCisKK2NvbW1pdCBlOWVmYjIwMDk1NDY4ZTY0MTU3Yjg0ZjE4YjZjY2Q5OTFlMTA4MmUzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgSmFuIDEgMTU6MDQ6MzcgMjAxMyArMDEwMAorCisgICAgV2luZG93czogTGluayB3aXRoIHNubXBhcGkubGliIGFuZCBtZ210YXBpLmxpYiBldmVuIGlmIG5vdCB1c2luZyB0aGUgcGxhdGZvcm0gU0RLCisKK2NvbW1pdCA5MDBhYWU4ZWE2OTNmYjg0MGQ1NzUyNmZiNjcxZDIxNWY4NjViZWRiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgSmFuIDEgMDE6MzM6MDEgMjAxMyAtMDgwMAorCisgICAgdWNkLXNubXAvZGxtb2Q6IEZpeCBhbiBNU1ZDIGNvbXBpbGVyIHdhcm5pbmcKKworY29tbWl0IDM2M2UzZmExYTQzY2E2MjIzZmUzYjA4MDhlNjYyOTViM2Q5Mzg2YjgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKYW4gMSAwMToyNzo0MiAyMDEzIC0wODAwCisKKyAgICB1Y2Qtc25tcC9kbG1vZDogQWRkIGRsbW9kLmMgdG8gTVNWQyBwcm9qZWN0CisKK2NvbW1pdCBlMzU0MmMwNGE4NDYxNzg1NzY4OGFiOGU4NzE4Y2RjNGM2YTY4Y2Y1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgSmFuIDEgMDk6MTQ6MzMgMjAxMyArMDEwMAorCisgICAgdWNkLXNubXAvZGxtb2Q6IFJlbW92ZSBtb3JlIHN1cGVyZmx1b3VzIGNhc3RzCisKK2NvbW1pdCAxZTNiMGFlMmIwMmNmMWZhY2NhZDQ4OTZiYzNiZGJlYTFkYjRhNjhmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRGVjIDMxIDEzOjE5OjM2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IFdpbmRvd3M6IFBvcnRlZCB1Y2Qtc25tcC9kbG1vZCB0byBNaW5HVyAvIE1TVkMKKworY29tbWl0IDk4NmZiOWI4NWUxMzgzYjgxZWFlYTQwZDJjYjdjMTQ0OTJkZGJkYWMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBEZWMgMzEgMTI6MzI6NTYgMjAxMiArMDEwMAorCisgICAgTWluR1c6IEF2b2lkIGNvbmZ1c2lvbiBiZXR3ZWVuIE1pbkdXJ3Mga2lsbC5leGUgYW5kIHRoZSBTeXNJbnRlcm5hbHMgcHNraWxsLmV4ZSAoYmFja3BvcnQgY29tbWl0IDliNDI3YjM1M2YxY2ViOGZlODdlNmZjOGVkM2I2Y2ZhYjNjZTdmMjApCisKK2NvbW1pdCA3OThiNzNjZjU5ZTM2ODdmNjViZDU0YTdhOGFjMjlmZTI0OThjNjlmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDE3IDEzOjA1OjUzIDIwMDkgKzAwMDAKKworICAgIFVuYnJlYWsgdGhlIE1pbkdXIGJ1aWxkIGZvciB0aGUgNS40IGJyYW5jaCAtIHRpbWVyYWRkKCkgaXMgbm90IEFOU0kgQworICAgIAorICAgIFJlbW92ZSBESUZGVElNRVZBTCgpIGJlY2F1c2UgaXQncyBidWdneTogaW4gImRpZmYudHZfdXNlYyA+IDEwMDAwMDBMIiB0aGUgIj4iCisgICAgc2hvdWxkIGhhdmUgYmVlbiAiPj0iIGluc3RlYWQuCisgICAgCisgICAgVGhpcyBpcyBhIHBhcnRpYWwgYmFja3BvcnQgb2YgY29tbWl0IDg1ODUwOWM5ZTE5OThmNmQyNmU5MGNiNjIyZTRiMTdlYjI0ODhhNGYuCisKK2NvbW1pdCAxZTU1NmNjNzc0MGMwNjM2N2ZmMzM2MWFhOTZiZjQ1MzM5YzJlOGEyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gRGVjIDMwIDE3OjU5OjQ0IDIwMTIgKzAxMDAKKworICAgIHVjZC1zbm1wL2RsbW9kOiBSZW1vdmUgc3VwZXJmbHVvdXMgY2FzdHMKKworY29tbWl0IDUxZGZhNmU2N2ZkODQ4N2I4ODgyYzE2MzJlODExMTk1ZDk0OTZlNDEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBEZWMgMzAgMTA6NDI6MTYgMjAxMiArMDEwMAorCisgICAgdWNkLXNubXAvZGxtb2Q6IE1lbnRpb24gbGlicmFyeSBwYXRoIGluIGVycm9yIG1lc3NhZ2VzCisKK2NvbW1pdCAwMmEzNTdkNmI5NTM4YTQ4ODk2MzY4OTAwYmJiNTkzZGJiNGRjMzc0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gRGVjIDMwIDEwOjQwOjU1IDIwMTIgKzAxMDAKKworICAgIHVjZC1zbm1wL2RsbW9kOiBSZW1vdmUgYSBzdXBlcmZsdW91cyBpbml0aWFsaXplcgorCitjb21taXQgZWY3NDg4NDViMTRjMDk1MDQ5ZWQ1NDgwM2VhNzRjZjQ1N2VmZDE4OQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIERlYyAzMCAwOTo1NzozOCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBGaXggZW52aXJvbm1lbnQgc2VwYXJhdG9yIGluIHNubXBkL3NubXB0cmFwZC9zbm1wdHJhbnNsYXRlIGhlbHAgdGV4dC4gUmVwb3J0ZWQgYnkgSmFzb24gTWNDb2xsdW0gPGptY2NvbGx1bUBjb210ZWNoZWZkYXRhLmNvbT4uCisKK2NvbW1pdCBiYzBhYmFlNTVkZDg2N2RiYmY0ZTQyZTY3YTM2MjM0MDg4YzkzNzcxCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDIgMDk6MjU6MzMgMjAxMyAtMDgwMAorCisgICAgY29weXJpZ2h0IHVwZGF0ZQorCitjb21taXQgNDA4NmFmOTViMjk4ZjFjZjEzMGQwOGRlYjdlMDkwMDU4YjMyMWFmOQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IERlYyAyMCAwNzozNzoxNCAyMDEyICswMTAwCisKKyAgICBGaXggdGhlIE1JQiBuYW1lcyB0byBhY3R1YWxseSB3b3JrCisKK2NvbW1pdCA3OTUyNzRmYzIxZTFiYTAzZWZiZTliNjA0MmM2YTM1MTNkODlkZWJmCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDIwIDA3OjI0OjQ3IDIwMTIgKzAxMDAKKworICAgIENsZWFuIHVwIGFuZCB2YWx1ZSBjaGVja2luZyBmb3IgaXBEZWZhdWx0VFRMLCBpcHY2SXBEZWZhdWx0SG9wTGltaXQKKworY29tbWl0IDQzOWQ1MGM2NzllOWYwOWIxMDZiZmRmNjRmOGNjNzY2NDE5ZTEzNDQKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBEZWMgMjAgMDc6MjQ6MTYgMjAxMiArMDEwMAorCisgICAgRml4IGljbXBNc2dTdGF0c1RhYmxlIGZvciBTb2xhcmlzCisKK2NvbW1pdCAwMDdhN2QyNGJjNWYyNzkzOTJmZDBlYzQzNjE0NzdjZDhmMTRlNWFmCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgRGVjIDE5IDIyOjE0OjA2IDIwMTIgKzAxMDAKKworICAgIGdpdCBpZ25vcmUgdGlsZGUgZmlsZXMKKworY29tbWl0IGFmZjAyZjI0ZTE5OGEyOTIzMTI3M2Q0OTQ4MjBkZDZlMzU0MTU1Y2EKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBEZWMgMTcgMjI6NDQ6MTggMjAxMiArMDEwMAorCisgICAgUnVubmluZyBhdXRvaGVhZGVyL2F1dG9jb25mCisKK2NvbW1pdCA5Y2ZkNjgwZjJmMmY0NWNmNzZjZDQyMTY2OTNiODYyZmFhMjdjYmMxCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gRGVjIDE3IDIyOjQyOjAwIDIwMTIgKzAxMDAKKworICAgIENvbmZpZyBjaGVjayBmb3IgQlNEIHVkcHN0YXQudWRwc19pcGFja2V0cworCitjb21taXQgNTNjMmZkZDViNjYwMjExNDRhZDI2NTM5YjUzYmU5YzE1OTNiNDg4NAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIERlYyAxNyAyMjoyNzowMyAyMDEyICswMTAwCisKKyAgICBBZGQgU0Qgc3VwcG9ydCBmb3IgaXAtZm9yd2FyZC1taWIKKworY29tbWl0IGNhN2IxN2E0MWQ0ZDE2YmQyN2FhY2Y5MjExNmJlYTM1NjJlZWVhMzYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gRGVjIDE3IDEyOjQwOjMyIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiB1c2UgY2FjaGUgZm9yIGRza1RhYmxlIHRvIHNwZWVkIGl0IHVwLgorICAgIAorICAgIFVDRC1TTk1QOjpkc2tUYWJsZSB3YXMgc2xvdyBvbiBORlMgbW91bnRzLiBOb3cgaXQgdXNlcyBmc3lzIGNhY2hlCisgICAgdG8gcmVsb2FkIG1vdW50cyBldmVyeSA1IHNlY29uZHMuCisKK2NvbW1pdCAwYjcxODE4NGUwNzBkMjU3NGMwOWIxOGY1Njg5NTBhOGM5ZmY3NjU5CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDE2IDIwOjU3OjI5IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IGFwcHM6IFN0b3AgdXNpbmcgc25tcF9wZXJyb3Igd2hlbiBsb2dnaW5nIGFmdGVyIGZ1bmN0aW9ucyB0aGF0IGRvbid0IHNldCBzbm1wX2Vycm5vLgorCitjb21taXQgN2VkY2UwYzMxMWE3ZGQ1NDI4ZTBlZGI3MDFkYWJlOWRjNzlkMDk2NworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IERlYyAxNSAxMjo0MDoxMCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogTWFrZSB0aGUgLXdpdGhvdXQgb3B0aW9ucyB0byBycG1idWlsZCB3b3JrCisKK2NvbW1pdCBjNjAzNzU0OGZiNGI0Nzk5NjMzMGZlMWJjMWU4MjY1YWNlYTVkZDU0CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gRGVjIDEwIDAwOjQxOjQyIDIwMTIgKzAxMDAKKworICAgIFRoZSBwcm9wZXIgcm91dGVyIGZpbGVzIGZvciBCU0QKKworY29tbWl0IDJiMzU5ZTQ1MDk4NmJiODc0NGJiZmYyMWUwY2FiNDkzYWNhY2VhOTgKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBEZWMgOSAyMzowMjowMiAyMDEyICswMTAwCisKKyAgICBTdXBwb3J0IGZvciBpcFN5c3RlbVN0YXRzVGFibGUgZm9yICpCU0QuIE1vc3Qgb2YgdGhlIGNvZGUgYnkgR2FycmV0dAorICAgIENvb3Blci4gUGFydGlhbGx5IGZ1bmRlZCBieSBDaXNjbyBJcm9ucG9ydC4KKworY29tbWl0IDlhMDQ0MTI4ZThiMzMxNzk2MjIxMTY2MzU4NzY5ZWIwNTM1ZGZjMWYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBEZWMgOSAyMjozNjoyMSAyMDEyICswMTAwCisKKyAgICBTdXBwb3J0IGZvciBpcE5ldFRvTWVkaWFUYWJsZSBmb3IgKkJTRC4gTW9zdCBvZiB0aGUgY29kZSBieSBHYXJyZXR0IENvb3Blci4KKyAgICBQYXJ0aWFsbHkgZnVuZGVkIGJ5IENpc2NvIElyb25wb3J0LgorCitjb21taXQgZjljYjI5OGRkMjBlZjZkNGJjNjgzY2UwNjdmMjMzMDczN2JlNGUwOQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIERlYyA5IDIyOjE3OjIyIDIwMTIgKzAxMDAKKworICAgIFN1cHBvcnQgZm9yIGlwRGVmYXVsdFJvdXRlclRhYmxlIGZvciAqQlNELiBNb3N0IG9mIHRoZSBjb2RlIGJ5IEdhcnJldHQKKyAgICBDb29wZXIuIFBhcnRpYWxseSBmdW5kZWQgYnkgQ2lzY28gSXJvbnBvcnQuCisKK2NvbW1pdCAxZGVlNDE1NjJjNTRlMGI1NGIzMDFhMzc4MzhiM2JhNjUwOWRjYzM4CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gRGVjIDkgMjE6NTQ6MTQgMjAxMiArMDEwMAorCisgICAgU3VwcG9ydCBmb3IgaXBTeXN0ZW1TdGF0c1RhYmxlIGZvciAqQlNELiBNb3N0IG9mIHRoZSBjb2RlIGJ5IEdhcnJldHQgQ29vcGVyLgorICAgIFBhcnRpYWxseSBmdW5kZWQgYnkgQ2lzY28gSXJvbnBvcnQuCisKK2NvbW1pdCAzZGJhYmM5NzA2OGI2YzY5MGIzZmRmOTdiNWFiM2FlMGQ5ZWFiMjhjCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gRGVjIDkgMjE6NDc6NDUgMjAxMiArMDEwMAorCisgICAgQ2hhbmdlIHNvbWUgZGVidWcgb3V0cHV0IGludG8gZXJyb3IgbG9nZ2luZy4gRmFpbHVyZSB0byBleHBhbmQgMzIgdG8gNjQKKyAgICBJUyBhbiBlcnJvci4KKworY29tbWl0IDkwNzM2MGUwOWZmZjMzOTBkNjI2OWY4Y2I0NzQwYmRiY2Q5NTgxNjYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBEZWMgOSAyMTo0NTo0NCAyMDEyICswMTAwCisKKyAgICBGaXggc29tZSBsYWJlbHMgZm9yIG5ldHN0YXQgaWNtcCBvdXRwdXQuCisKK2NvbW1pdCA5ZjJmMDU0MDVjN2JiNDk5ZWJlMDgzOWIwZDc5YmEyNWM2MWMwZjU1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgRGVjIDcgMDk6NDk6NTEgMjAxMiArMDEwMAorCisgICAgUnVubmluZyBhdXRvY29uZgorCitjb21taXQgZDI3ZjM2NDUyNTgzZDI5MWYyNTVlZjA5MGUyYWVhZWFmMzlhOWUwZQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIERlYyA3IDA5OjQ5OjAyIDIwMTIgKzAxMDAKKworICAgIFJ1bm5pbmcgYXV0b2NvbmYKKworY29tbWl0IDU2MzUyYzJlYmU5NTQxZjZhYmY5ZDJiOWViYzQ3MDVkODE4ZDg5YjgKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBEZWMgNyAwOTo0ODoyMSAyMDEyICswMTAwCisKKyAgICBSdW5uaW5nIGF1dG9jb25mCisKK2NvbW1pdCAzOTc5MjNlMGFhZTEzODVhMGFmM2E4MDNlNjBlYmU4MTI0Zjk2MWQyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgRGVjIDcgMDk6MjY6MjEgMjAxMiArMDEwMAorCisgICAgRml4ZXMgZm9yIGNvbmZpZ3VyZSBvZiBrc20gbW9kdWxlLiBQcmV2aW91c2x5IGtzbSBoYWQgdG8gYmUgdGhlCisgICAgZmlyc3Qgc2VjdXJpdHkgbW9kdWxlIGluIGxpc3QgdG8gYmUgaW5jbHVkZWQuCisKK2NvbW1pdCA0MzBkMTBkMjk2YjhkOGM5OGEzYWFmZDI3YThjNmZmNGY2NDA4MTE0CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgRGVjIDcgMDk6MjQ6MzkgMjAxMiArMDEwMAorCisgICAgRml4IHNwZWxpbmcgd2hpY2ggaGFzIHByZXZlbnRlZCBrc20gbW9kdWxlIGZyb20gY29tcGlsaW5nIGZvciBtYW55IHllYXJzIDotKAorICAgIEFsc28gc29tZSBmaXhlcyB0byBzdXBwb3J0IEhlaW1kYWwgS2VyYmVyb3MuIFRoaXMgc3VwcG9ydHMgRnJlZS9OZXRCU0QuCisKK2NvbW1pdCBiZmY4MzJhYjI0OGUwODYyOGJlNDZlYmY3NjExMTkxMWU3ZjM5ZTUyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgRGVjIDcgMDk6MTc6MjIgMjAxMiArMDEwMAorCisgICAgQWRhcHQgZm9yIGxvbmdlciBsaW5lcyBmcm9tIC9wcm9jL25ldC90Y3A2LiBBbmQgaXNzdWUgYW4gZXJyb3IgaWYKKyAgICBpdCBoYXBwZW5zIHRvIGZhaWwgYWdhaW4uIFBhdGNoIGZyb20gYnVnICMyNDI1IChUaGFua3MgWmhpeHUgTGl1KQorCitjb21taXQgOTY4N2U0ZDUwNzgxYmEwMTY4NDE2ZjE1YzRmMmQ5ZmM4MzcxMDUwYQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIERlYyA3IDA5OjE1OjQ4IDIwMTIgKzAxMDAKKworICAgIGljbXAgc3VwcG9ydCBmaWxlcyBmb3IgKkJTRCAoZXhjZXB0TmV0QlNEKQorCitjb21taXQgZjIxNWJhMWUzN2E4YzNlMDc2OTU4ZWZkODNjMGY1ZDM5M2ExNGMyMgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIERlYyA3IDA5OjEzOjI0IDIwMTIgKzAxMDAKKworICAgIFN1cHBvcnQgZm9yIGljbXBTdGF0c1RhYmxlL2ljbXBNc2dTdGF0c1RhYmxlIGZvciAqQlNEIGFuZCBTb2xhcmlzCisKK2NvbW1pdCBhN2I3YzNjMGMzYmUzZjZjZjJkMDlmNjQ3MGQzZmEwODYxNTNkMDM2CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTm92IDMwIDE1OjM1OjMzIDIwMTIgKzAxMDAKKworICAgIFNodWZmbGUgaW4gcHJlcGFyYXRpb24gZm9yIGJyb2FkZXIgc3VwcG9ydCBmb3IgaWNtcFN0YXRzL2ljbXBNc2dTdGF0cworCitjb21taXQgYmQyOTZhYzE4NDIzNTAzZWRhOGVmZmViODZhZmIxOWUwMDE0Mzg4OQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE5vdiAzMCAxNTozNDo1MiAyMDEyICswMTAwCisKKyAgICBTaHVmZmxlIGluIHByZXBhcmF0aW9uIGZvciBicm9hZGVyIHN1cHBvcnQgZm9yIGljbXBTdGF0cy9pY21wTXNnU3RhdHMKKworY29tbWl0IDJlMjNlYTBmMjkzYmI4ZTljZWFmNTYzNmRiN2I3ZDA3ZjZkNjJjN2EKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBOb3YgMjAgMjM6MzM6NTggMjAxMiArMDEwMAorCisgICAgQWRkIG1pc3Npbmcgc3NJT1Jhd1NlbnQvcmVjZWl2ZWQgZm9yIFNvbGFyaXMuCisKK2NvbW1pdCA1OWVlYmM0MWE5NDM1ODExMDczZmVjNTBkNzZkZDZhZWY5ZGQ1OGE3CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgTm92IDIwIDIzOjMyOjUzIDIwMTIgKzAxMDAKKworICAgIEFkZCBzb21lIGVycm9yIGNoZWNraW5nIHRvIGdpdHRvb2xzCisKK2NvbW1pdCA4MGIxODM3NTgyNjY1MzYyNmMyZDcwNDUxYzJiNTRhMWM1MGEzY2U2CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgTm92IDEzIDEzOjU1OjQ3IDIwMTIgKzAxMDAKKworICAgIFJlbWVtYmVyIHRvIGluaXQgdGhlIHN5c3RlbXN0YXRzIHByb3ZpZGVyCisKK2NvbW1pdCA3NDNjYjY2NzE4OTA0OTc5ZjU1ODk1NDcyNTAxNTg0YzMwYzY2ZjEwCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE5vdiAxMiAxNTo0OToxNSAyMDEyICswMTAwCisKKyAgICBGaXhlZCBjcmFzaCB3aGVuIE1ENSBhbmQvb3IgU0hBLTEgaGFzaCBpcyBub3Qgc3VwcG9ydGVkIGJ5IE9wZW5TU0wuCisKK2NvbW1pdCAxODk4Y2ZjNzFiZGIzZjRhMTY4NWM2ZDIxYjU0ZGQxYTM0ODI1OTFjCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTm92IDEyIDE1OjQ4OjE1IDIwMTIgKzAxMDAKKworICAgIE9wZW5CU0QgNS4yIHN1cHBvcnQuCisKK2NvbW1pdCBkZDUzZmZiYWZlYjMxY2RlNjE2YTg5OTQ5ZTcwZTNkNWZlMGNjMWIzCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE5vdiAxMiAxNTo0Njo0MyAyMDEyICswMTAwCisKKyAgICBGYWxsIGJhY2sgdG8gU0hBLTEgaWYgTUQ1IGlzIG5vdCBhdmFpbGFibGUuCisgICAgCisgICAgT24gcGFyYW5vaWQgc3lzdGVtcyB3aGVyZSBNRDUgaXMgZGlzYWJsZWQgdXNlIFNIQS0xIGluc3RlYWQgb2YgTUQ1IGFuZCBkb24ndCBjcmFzaC4KKworY29tbWl0IGVhOGY3NGM4MWY4MmMxMDViOWZjMDE5NjVhZGNlMTRiMGQ4MTg2ZGEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBOb3YgMTIgMTU6NDY6MzQgMjAxMiArMDEwMAorCisgICAgRml4IE5ldEJTRCBtZW1vcnkgZGF0YSB0eXBpbmcKKworY29tbWl0IGRkZTNhMzViYWFlYjY4M2NmMTQ0MWExNmExNTQ0MWY4YjQ1NmM1MjAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTm92IDEyIDE1OjQ1OjI3IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEZpeGVkIGNyYXNoIHdoZW4gTUQ1IGhhc2ggaXMgbm90IHN1cHBvcnRlZCBieSBPcGVuU1NMLgorCitjb21taXQgYjc3YjY3ZDhkNjI5Zjc4NTYzOWU0MDJmYTRmYmVlNmNjZmUxOGZhNQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE5vdiAxMiAxNTo0NDo0OSAyMDEyICswMTAwCisKKyAgICBLZXJuZWwgcHJvY2Vzc2VzIGluIERyYWdvbkZseSwgYW5kIGZpeGVkIGNwdSB1c2FnZSBkYXRhCisKK2NvbW1pdCBkNmM2MjAxMmM4MDgyZmM4ODZmNzQ3ZTBlMmM5YmI4YTZjNjZjNjYzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTm92IDEyIDE1OjQxOjU1IDIwMTIgKzAxMDAKKworICAgIERpc2tpbyBmb3IgT3BlbkJTRCwgYW5kIHNvbWUgY2xlYW4tdXAgZm9yIEZyZWVCU0QvRHJhZ29uRmx5CisKK2NvbW1pdCA0YTVlMGY0Yzk1ZmI2Y2QxMjNhNDkwMTc4NzM3NmU0NDdkMzMyYzAyCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE9jdCA5IDE0OjIzOjQ4IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IGFkZGVkIHNpbWZzIChPcGVuVlogZmlsZXN5c3RlbSkgdG8gaHJTdG9yYWdlVGFibGUgYW5kIGhyRlNUYWJsZS4KKworY29tbWl0IDJhMGNkMzVhY2YzMzI1YTZmZGMwYTEwNDIzZjU0Y2I4YjVjZTUyMmIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgU2VwIDEzIDE1OjI1OjUyIDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCBpbmZpbml0ZSBsb29wIHdoZW4gU0lHVEVNIGFycml2ZXMgaW4gbWlkZGxlIG9mIGludGVybmFsIHF1ZXJ5IHByb2Nlc3NpbmcuCisgICAgCisgICAgV2hlbiBzbm1wZCBzdGFydHMgaW50ZXJuYWwgcXVlcnksIGUuZy4gZm9yICdtb25pdG9yJyBjb25maWcgb3B0aW9ucywgaXQgY2FsbHMKKyAgICBuZXRzbm1wX3F1ZXJ5X3dhbGsoKS4gVGhpcyBmdW5jdGlvbiBsb29wcyB1bnRpbCBlaXRoZXIgZXJyb3Igb2NjdXJzIG9yIHRoZQorICAgIGludGVybmFsIHJlcXVlc3QgaXMgcHJvY2Vzc2VkLiBBbmQgaWYgU0lHVEVSTSBjb21lcyB0byB0aGlzIGxvb3AsIHRoZSByZXF1ZXN0CisgICAgaXMgbm90IG1hcmtlZCBhcyBmYWlsZWQuCisgICAgCisgICAgUGF0Y2ggb3JpZ2luYWxseSBmcm9tIE1hc2FoaXJvIE1hdHN1eWEsIG1tYXRzdXlhIFthdF0gcmVkaGF0LmNvbQorCitjb21taXQgYmM0NDljMGY4NWFlOWZhMDhhYzRmY2U2NzI4MmY0OGViN2FiMTk4NAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBTZXAgMTAgMTM6MjU6MzggMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkIHZhbHVlIG9mIFVDRC1TTk1QLU1JQjo6ZXh0Q29tbWFuZCB0byBjb250YWluIGZ1bGwgY29tbWFuZCBsaW5lLgorICAgIAorICAgIE1JQiBkZXNjcmlwdGlvbiBvZiBVQ0QtU05NUC1NSUI6OmV4dENvbW1hbmQgc3VnZ2VzdHMgaXQgc2hvdWxkIGNvbnRhaWwgZnVsbCBjb21tYW5kIGxpbmUuCisgICAgQWxzbyBpbiBOZXQtU05NUCA1LjMuMi4yLCB3aG9sZSBjb21tYW5kIGxpbmUgd2FzIHNob3duLgorCitjb21taXQgYTM5NzhmMmNjMjA1NmM5N2E0YzNmMzM4ZjcwOWEyMDI5MWFlZDQ3MgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE5vdiAxMiAwNjo0ODozNyAyMDEyICswMTAwCisKKyAgICBQcm9wZXIgaGFuZGxpbmcgb2YgY29uZmlndXJlLWdlbmVyYXRlZCBzbm1wY29uZgorCitjb21taXQgMGY0Njk5MjkyNGRlNWE0YWIwNzYzYThkNDRhMWNlY2U0YTk5MWQ4MAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE5vdiA1IDIxOjE2OjM3IDIwMTIgKzAxMDAKKworICAgIFBhdGNoIGZvciBPcGVuQlNEIDUuMiAoUGF0Y2ggMzU1OTQyMCkKKworY29tbWl0IDllZDBiMmUwYWMwYzhlNTQ5YjhmOWE1ODQ1ZTlkMWZhYWNhYjczYzUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBOb3YgNSAyMDowODo0MSAyMDEyICswMTAwCisKKyAgICByZmM2Nzc5CisKK2NvbW1pdCBhZWY3NmNhMGNiYTJjYTU2ZjZhYTFkYjVjNWI1OGE1NDkzOWYzODliCitBdXRob3I6IHFxc2hrYSA8cXFzaGthQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE9jdCAzMSAyMDowMDowNCAyMDEyICswMTAwCisKKyAgICBBZ2VudFgsIElQWDogUmVzdG9yZSBkZWZhdWx0IHBvcnQgKGJ1ZyAjMzU4MjI4MykuCisgICAgCisgICAgVGhpcyByZXZlcnRzIGNvbW1pdCA3YjllMDM0NDFjM2RjM2EwNzY3MGVkMDFmNWQwNDc5MWE4MmM3NTBjLgorCitjb21taXQgZDdkOThlNWFhOWVlOGNhNzkxOGI3Njc1MDQzZDQ3OWNmNzdiODNjNAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IFNlcCAxIDEwOjMzOjA2IDIwMTEgKzAyMDAKKworICAgIC5naXRpZ25vcmU6IEFkZCBsb2NhbC9zbm1wY29uZgorCitjb21taXQgNzFkODNiYTQxMTdhMmNmYjc4NzRlOTE4MzJlNDU5NzNkYTQyZWU5OAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IFNlcCAxIDEwOjM0OjMwIDIwMTEgKzAyMDAKKworICAgIFdpbjMyLCBNU1ZDOiBNYWtlIGJ1aWxkLmJhdCB3b3JrIGFnYWluIG5vdyB0aGF0IEVOVl9TRVBBUkFUT1IgaXMgY29uZmlndXJhYmxlCisKK2NvbW1pdCA1ZTUwMDA4MjcyOGY0NTM1OTVmNTAyNGQyNDEyMDhjNTFmMDhkMjJjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gT2N0IDI5IDE4OjEyOjQxIDIwMTIgKzAxMDAKKworICAgIFJFQURNRS53aW4zMjogUmVtb3ZlIHJlZmVyZW5jZSB0byB0aGUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBDeWd3aW4gY29tcGlsZXIgb3B0aW9uIC0tbW5vLWN5Z3dpbgorCitjb21taXQgMWEzNmRlZTE2NWI4YmQ3ZGYzZWY2OTRiN2MzZjI2MjFhNTQ0OWRhYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEF1ZyAzMCAyMDo1NDowMCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZCwgc25tcHRyYXBkIGFuZCBhcHBzOiBNYWtlIEVOVl9TRVBBUkFUT1JfQ0hBUiBjb25maWd1cmFibGUKKworY29tbWl0IDBlMWNhNDVhNmY4ZDhhY2Y0NGFhMjFhMDA5YTllNTExOTJlODQ3ODMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBPY3QgMjggMTA6MTE6MjIgMjAxMiAtMDcwMAorCisgICAgc25tcG5ldHN0YXQ6IEZpeCBNU1ZDIGNvbXBpbGVyIHdhcm5pbmdzCisKK2NvbW1pdCA0YTZkMDM3OGEzOTE2NTcxY2U3NjA0YzRhM2Q1NGE4Yzk2YThmODA3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gT2N0IDI4IDA5OjU0OjEyIDIwMTIgLTA3MDAKKworICAgIFdpbmRvd3M6IFZpc3VhbCBTdHVkaW8gNiBidWlsZCBmaXggZm9yIHN0cmxjYXQoKQorCitjb21taXQgNDFiNDhhNjM3MDk1MmJmNGIxMmQzNGZiMDVlYzU1ZmIwNzAyZThjZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIE9jdCAyOCAxNDozNzo1MiAyMDEyICswMTAwCisKKyAgICBXaW5kb3dzOiBNYWtlIHNubXBuZXRzdGF0IGJ1aWxkIGFnYWluCisKK2NvbW1pdCAyNDUxZjgyNjQ3OTg4MWE0OTI2ZmNmODg4NTVmNTgyNTg1ZWI4MTNiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gT2N0IDI4IDEwOjIzOjE3IDIwMTIgKzAxMDAKKworICAgIHdpbjMyL2J1aWxkLnBsOiBSZWR1Y2UgY29kZSByZWR1bmRhbmN5CisKK2NvbW1pdCA2ZTk5Mzg4NjgzYTZjODU0MDM1ZjA0MmE5ZDA3YzA3MjMxMTdlOGE2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gT2N0IDI4IDA5OjQxOjIwIDIwMTIgKzAxMDAKKworICAgIFdpbmRvd3MsIGJhdGNoIGJ1aWxkOiBSZW1vdmUgdGhlIG9ic29sZXRlIHZhcmlhYmxlICJTU0wiCisKK2NvbW1pdCA3NTQ0YWRjNWExYzc2ODg5ZTRhOWVkNTFlOTZkMjJkMDJmZDU2OTVlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgQXVnIDIyIDE1OjM1OjA0IDIwMTIgKzAwMDAKKworICAgIE5FV1M6IFdpbmRvd3M6IFBvcnQgYmF0Y2ggYnVpbGQgaW5mcmFzdHJ1Y3R1cmUgdG8gVmlzdWFsIFN0dWRpbyAyMDEwIGFuZCBsYXRlcgorICAgIAorICAgIEZyb20gVmlzdWFsIFN0dWRpbyAyMDEwIG9uIGl0IGlzIG5vIGxvbmdlciBwb3NzaWJsZSB0byBzcGVjaWZ5CisgICAgaW5jbHVkZSBvciBsaWJyYXJ5IGRpcmVjdG9yaWVzIGdsb2JhbGx5IC0gdGhlc2UgaGF2ZSB0byBiZSBzcGVjaWZpZWQKKyAgICBwZXIgcHJvamVjdC4gSGVuY2UgdHdvIGFkZGl0aW9uYWwgbWVudSBlbnRyaWVzIGluIGJ1aWxkLmJhdCB0aGF0CisgICAgYWxsb3cgdG8gc3BlY2lmeSB0aGVzZSBkaXJlY3Rvcmllcy4KKworY29tbWl0IDFiOGE3OWMxYzJlYjEzZjhiMjA3YzEyYWE2ZTcxYTI5ZmYwMDM5NmYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBBdWcgMjIgMTk6MTA6MDcgMjAxMiArMDAwMAorCisgICAgd2luMzIvQ29uZmlndXJlOiBGYWN0b3Igb3V0IGNvbW1vbiBjb2RlCisKK2NvbW1pdCAyYWY3YTczYjBjYThjZGJkMzZhN2YxOWRkOGU1NTc2NGM4NDk4NTUyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgT2N0IDI3IDE4OjI3OjQyIDIwMTIgKzAyMDAKKworICAgIFdpbmRvd3M6IE1ha2Ugc25tcG5ldHN0YXQgYnVpbGQgYWdhaW4gKHNlZSBhbHNvIGNvbW1pdCBhYTU5MTJiODk4NmNkZTc0MDkwYmExNWJlMTk2NDI2MzA5YTFlMWYwKQorCitjb21taXQgZmE5OGI0Y2JkNmRjMTVhYTkyNjE2NmVlZjA0ZDViYzhkZmJhYWFkNgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE9jdCAyNiAwNzo1NjowNiAyMDEyICswMjAwCisKKyAgICBDb3BlIHdpdGggYWRkaXRpb25hbCBzdGF0aXN0aWNzIGluIC9wcm9jL25ldC9zY3RwL3NubXAgaW4gUkg2CisKK2NvbW1pdCA1NDI5MGJlZGUzMzgxNjRjYTY1YTNlZWQyMjRmYTUwNDBkN2RkODU3CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgT2N0IDI2IDA3OjUwOjExIDIwMTIgKzAyMDAKKworICAgIEJldHRlciBjbGVhbnVwIG9mICJleGVjIiBjb25maWcgdG8gYXZvaWQgY3Jhc2ggZHVyaW5nIHJlbG9hZCBvZiBjb25maWcKKworY29tbWl0IDgyYWEyNDY2NzExOTRmMDRiZTUyYzYyMWU5ZjgzZDBmYWJkMjRmYTUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBPY3QgMjQgMTU6MzA6MTEgMjAxMiArMDIwMAorCisgICAgRG9uJ3QgbWl4IGNvZGUgYW5kIGRlY2xhcmF0aW9ucyEKKworY29tbWl0IDRlOWVhODQ1NTkyZmZmOGIyYWFlNWQzMThkY2FiZjQxZjk1NzA2MzIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBPY3QgMjQgMTU6MjU6MzUgMjAxMiArMDIwMAorCisgICAgRG9uJ3QgbWl4IGNvZGUgYW5kIGRlY2xhcmF0aW9ucyEKKworY29tbWl0IDIxZDVjNjc4NWU5MTZiNTEwMTQ0MGVkMWE0ZjcxYjQxYmEyZWI4MDkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBPY3QgMjQgMDk6Mjc6MjMgMjAxMiArMDIwMAorCisgICAgUmVtZW1iZXIgdG8gZnJlZSB0aGUgZGVzY3JpcHRpb24gKGlmIHNhdmVkKSBkdXJpbmcgdW5sb2FkX2FsbF9taWJzCisgICAgKHBhdGNoIDM1NjU5MjIpCisKK2NvbW1pdCAyYjk5NDBjYTU2ZmM4ZDNkNjEwZWZkMmViYTlhZTRlYmI3NDFlNjcxCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgT2N0IDI0IDA2OjQxOjQ2IDIwMTIgKzAyMDAKKworICAgIENsZWFuIHVwIGRpc2tpbyBjb25maWcgYmVmb3JlIHJlbG9hZGluZy4KKworY29tbWl0IGY3NzY4ZmI2NDNiZTI4MmQ2MzUyODliNTdmODhhMDdkMDcwNDg3YjAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBPY3QgMjMgMTE6NDg6MzEgMjAxMiArMDIwMAorCisgICAgYXBwcy9zbm1wbmV0c3RhdC9pbmV0eC5jOiBFbGltaW5hdGUgZGVhZCBjb2RlIChzZWUgYWxzbyBjb21taXQgYWE1OTEyYjgpCisKK2NvbW1pdCA2NGM1NmYyN2M1ZWQ0MzJjZThkZTQ0ZTI1NzljYTBjODA2YTUxN2VhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgQXVnIDIyIDE3OjQ1OjE5IDIwMTIgKzAwMDAKKworICAgIGJ1aWxkLnBsOiBFbGltaW5hdGUgYSB0ZW1wb3JhcnkgdmFyaWFibGUKKworY29tbWl0IDMwYTVkMDEzYTgwZTlmZDUwYjhmZDBmNzBmZmQ5NmZmMjZiNmU0NTQKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBPY3QgMjIgMjA6Mjk6MDkgMjAxMiArMDIwMAorCisgICAgVXBkYXRlIHRvIGN1cnJlbnQgSUFOQSB2ZXJzaW9uCisKK2NvbW1pdCBmNDBkNDQwNjg5MDY3ZWY2YzRkYTdkZGFkZmIzNzNhNDUyMTk3ZmJkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gT2N0IDIyIDE5OjQ3OjA2IDIwMTIgKzAyMDAKKworICAgIHdpbjMyL0NvbmZpZ3VyZTogU3RyaXAgdHJhaWxpbmcgd2hpdGVzcGFjZQorCitjb21taXQgZDM0ZTA1Nzc3OWNiMzJlOTQzMjQwODlkYzQ2MjU2MzgzMDljZmU4OQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE9jdCAyMiAxODozNjo1OSAyMDEyICswMjAwCisKKyAgICB3aW4zMi9idWlsZC5wbDogU3RyaXAgdHJhaWxpbmcgd2hpdGVzcGFjZQorCitjb21taXQgMzBkYWVmMTg2MDM5N2YwNDVjNDA1NWNkNjFkNjYzZDI5MGRkNDdmMgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE9jdCAyMiAxODozMjozOCAyMDEyICswMjAwCisKKyAgICBGaXggTVNZUyBraWxsL3Bza2lsbCBjb25mdXNpb24KKworY29tbWl0IDE0YmU5MTMyYjkxMTU4YjA1MTIwNzEwYjFmZjZhNGIyYWNjYzUzMWQKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBPY3QgMjIgMTg6MTA6NDQgMjAxMiArMDIwMAorCisgICAgRml4IG5ldDAvbmV0eCBjb25mdXNpb24KKworY29tbWl0IDgxMDdhNjM1MmRmMjQ3ODY2MDk5NGVmMTAzZDUyODAxYTY2MDdjYzkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBPY3QgMjIgMTc6MDM6NDcgMjAxMiArMDIwMAorCisgICAgRml4IHNwZWxpbmcgZXJyb3JzCisKK2NvbW1pdCBhYTU5MTJiODk4NmNkZTc0MDkwYmExNWJlMTk2NDI2MzA5YTFlMWYwCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gT2N0IDIyIDE2OjU4OjUwIDIwMTIgKzAyMDAKKworICAgIEltcGxlbWVudCB0aGUgbW9kZXJuIElQIHZlcnNpb24gYWdub3N0aWMgdGFibGUgaW4gc25tcG5ldHN0YXQuCisgICAgSWYgdGhlIG1vZGVybiB0YWJsZSBpcyBub3QgYXZhaWxhYmxlIChvciB0aGUgLUNMIG9wdGlvbiBpcyB1c2VkKQorICAgIGZhbGwgYmFjayB0byB0aGUgbGVnYWN5IHRhYmxlcy4KKworY29tbWl0IDFhMzRkMjI0OWVmMGQyMjE1ZTU4ODZmOWIzYzk3ZWNmYTdlYjUxOTAKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBPY3QgMjIgMTY6Mzk6NDEgMjAxMiArMDIwMAorCisgICAgUGljayB1cCBpZkRlc2NyIGZyb20gaWZYVGFibGUgd2hlbiBhdmFpbGFibGUsIGFuZCB1c2UgdGhhdCBhcyB0aGUgbmFtZS4KKyAgICBWZXJ5IHVzZWZ1bCBpZiBwY2ktdXRpbHMgd2VyZSBhdmFsYWJsZSB3aGVuIGNvbXBpbGluZyB0aGUgYWdlbnQgYXMgdGhlCisgICAgbmFtZSBvdGhlcndpc2Ugd2lsbCBiZSB0aGUgdmVyeSBvYnNjdXJlIGNoaXAgbmFtZQorCitjb21taXQgYjRjYWY1NDNjZmY3ZGJhOGY5YWNjYTJiOWVhODhjOWI3OWRjMzllZQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE9jdCAyMiAxNjozMjoxMiAyMDEyICswMjAwCisKKyAgICBQaWNrIHVwIEhDIG9jdGV0cyBhbmQgTWNhc3RPY3RldHMgZnJvbSAvcHJvYy9uZXQvbmV0c3RhdCBvZiBjdXJyZW50IFJIRUw2CisgICAgYW5kIEZlZG9yYSBrZXJuZWxzLgorCitjb21taXQgYzY1NWZjZTc4NDUzMmE1MjNmN2RiNTgyZDBjZDA3ZGVlNGFkN2FjNQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE9jdCAyMiAxNjoyNTo1OSAyMDEyICswMjAwCisKKyAgICBUcnkgdG8gYmV0dGVyIGNsYXNzaWZ5IExpbnV4IGtlcm5lbCB0aHJlYWRzIGFzIGhyU1dSdW5UeXBlPU9zCisKK2NvbW1pdCBlMWE4Yzk1Y2E1NWY1Njk1ODVjODhlMTc0YTQzZjZkNDEyOWM0MzlkCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgT2N0IDIwIDA5OjU5OjQxIDIwMTIgKzAyMDAKKworICAgIENvcnJlY3QgdGhlIG5lc3Rpbmcgb3JkZXIgb2YgdGhlIGRveHlnZW4gZW5kIHNlY3Rpb24gY29tbWVudCBhbmQgdGhlIGZlYXR1cmUgcmVtb3ZhbCBlbmRpZi4KKworY29tbWl0IGY2N2FkZjJhMzdhOGMxODJlYWNiY2ZlNTJkNWI3ODkxOTFhNjU5MjkKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBPY3QgOSAxNjozMjo0NyAyMDEyIC0wNzAwCisKKyAgICByZW1vdmUgcmVsZWFzZSByZXF1aXJlbWVudHMKKworY29tbWl0IDNlNTQzMzAzOTNjY2M4NjUyNWVkNmZiOWEwZmMxOWMwNjgzMDY2MTAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZUByZWRoYXQuY29tPgorRGF0ZTogICBUdWUgT2N0IDkgMDY6MzQ6MTAgMjAxMiAtMDcwMAorCisgICAgZml4IGRvdWJsZS1uZWdhdGl2ZSB0eXBvCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ2hhbmdlczogVjUuNy4yLnJjMyAtPiBWNS43LjIKKworY29tbWl0IDUwNTRiNTcwNjE5ZGYwYTgxOTU4YTA0NWJlZjEzNWIyMDIwNWYwMzYKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBPY3QgOSAxNToyNjowNSAyMDEyIC0wNzAwCisKKyAgICBtYWtlIGRlcGVuZCBmb3IgNS43LjIKKworY29tbWl0IDU2YTc5N2ZmM2U3MWRjODg2NDY3ZDE3Y2UwMjViMDIzN2M4YzFjYzMKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBPY3QgOSAxNDo0MjoyMyAyMDEyIC0wNzAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNy4yCisKK2NvbW1pdCAwODEzZjhiNjJkZjBlODQ0MGZmZWYxNjFjZTEzNGZmOTQ1NWU3ZGU5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVAcmVkaGF0LmNvbT4KK0RhdGU6ICAgVHVlIE9jdCA5IDA2OjMzOjU4IDIwMTIgLTA3MDAKKworICAgIGZpeCBkb3VibGUtbmVnYXRpdmUgdHlwbworICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgYTZhODg5Mjc1MzQ2ODRlMjc1Y2NmMGU3ODA1MTMwOTRhNzNmYzZiYgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE9jdCA5IDA2OjMxOjIxIDIwMTIgLTA3MDAKKworICAgIEFJWCBuZXQtc25tcDUuNy4xIGhyU1dSdW5QYXRoIG5vdCBjb21wbGV0ZQorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgNThhNGQ4ODM5MDIxZjc3MmMzNWE3MzJiZDA5NmQxZTI5MGRjMGE2MgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE9jdCA5IDA2OjMwOjU3IDIwMTIgLTA3MDAKKworICAgIEFJWCBuZXQtc25tcDUuNy4xIGhyU1dSdW5QYXRoIG5vdCBjb21wbGV0ZQorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgNjI2ZWFiZWM0ZWE5OGU1MzU5MDg5NzkwODU4NDc5YTU5YTI2Y2RjYgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIFNlcCAzMCAyMzozMDoyOCAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBNb3ZlIHRoZSBjaGVjayB0aGF0IHRoZSBwZHUgdmFyaWFibGUgaXMgbm9uLU5VTEwgdG8gYmVmb3JlIHRoZSBmaXJzdCBkZXJlZmVyZW5jZSBvZiBpdC4KKworY29tbWl0IDY4YWFiNTcyYzJkMjc0NmI1MWE5NWViYTExMDU2OGMzOGIwNTA4MDgKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBTZXAgMjUgMTk6MDc6NDIgMjAxMiAtMDcwMAorCisgICAgUmVsZWFzZSBDYW5kaWRhdGUgZm9yIFY1LTctcGF0Y2hlcworCitjb21taXQgMGE0MTUzM2IxYjQ5ZjAwZDczNTdhM2QyYmVhNWRmYTc1ZThlZGNkNworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgTW9uIFNlcCAyNCAwMDowNzoxOSAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBBZGQgdGVzdCBjYXNlcyBmb3Igc25tcF9zZXJ2aWNlCisKK2NvbW1pdCBhNjFiNDhkNzhlMTFkOTQ1ZGVmNDZmZGUwZjdkNTVmNzkxOWMzMzVhCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gU2VwIDIzIDA3OjUzOjA5IDIwMTIgKzAyMDAKKworICAgIFByZWZlciBjb3B5X253b3JkX2NvbnN0IG92ZXIgY29weV9ud29yZChORVRTTk1QX1JFTU9WRV9DT05TVAorCitjb21taXQgOWJmZmM1NDEzZDBkODgyMzk4YjA2ZjQxMDlhYzgwN2FmMmY3ODM0NworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIFNlcCAyMyAwMDoyOTo0NCAyMDEyICswMjAwCisKKyAgICBTaW1wbGlmeSBsb2dnaW5nIHRocm91Z2ggdGhlIHVzZSBvZiBuZXRzbm1wX2NvbmZpZ19lcnJvcgorCitjb21taXQgZDA5ZDUzYTBmYTZkZjYzYjIxZTZmMTI3MzFiZWU1MWEzNjI0ZTg1ZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IFNlcCAyMiAyMTozMDowOCAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBEbyBub3QgY3Jhc2ggb24gaW5jb21wbGV0ZSBjb25maWd1cmF0aW9uIHRva2Vucy4KKworY29tbWl0IDAyZGNlNmY0M2I5OWY4NTk0MTYyNzkyOGMxYTUwMjJkNjcyNWQxMjQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBTZXAgMjIgMjE6Mjg6NTEgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogRG8gbm90IHRydW5jYXRlIHNpbmdsZSBkZWZhdWx0IHRyYW5zcG9ydCBkb21haW5zCisKK2NvbW1pdCAyMTFlM2M3MDYyNTk2NTQ0MWIyYTAyOWE2MTEzODAyOTc0NjczYzQzCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgU2VwIDIyIDExOjIzOjE5IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IERvIG5vdCBjcmFzaCBmcm9tIGVtcHR5IHZhbHVlcyBpbiAtLXRva2VuPXZhbHVlIGFyZ3VtZW50cworCitjb21taXQgYWYzZDJkOTczYjFlOGUyOWQyMDVkOGEwN2FjZDgyYjFmODU0ODE5ZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IFNlcCAyMiAxMDozMDoxNiAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBBZGQgdGhlIHN5bWJvbCBORVRTTk1QX1BSSW8gdG8gaGVscCBpbiBwcmludGluZyBvaWQgdmFsdWVzLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjcuMi5yYzIgLT4gVjUuNy4yLnJjMworCitjb21taXQgOGI0NTI5MjMwMWYwMzQ5ZmZiNjlkNGZkODU5NWYyZDViMTk5ZTZiNgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIFNlcCAyNSAxOTozNTozOSAyMDEyIC0wNzAwCisKKyAgICBtYWtlIGRlcGVuZCBmb3IgNS43LjIucmMzCisKK2NvbW1pdCAwY2JmZmI1NjVlNjJhZWY5MzdmYzcwMGQ4ZDNjM2I4YzY1ZGRmYTY1CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgU2VwIDI1IDE5OjA3OjQwIDIwMTIgLTA3MDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjIucmMzCisKK2NvbW1pdCA0MDUwNTk3MWFkZDZhM2I2ZjU5NTRjZmJkZTUzMjc0OWJmYmNiMTZhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gU2VwIDE3IDEzOjM0OjM3IDIwMTIgLTA3MDAKKworICAgIGZpeCBmb3IgaGlkZGVuIENNU0dfeHh4IG1hY3JvcyBvbiBBSVgKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDYwZjBhOWU5ODNhYjgyN2M4MjRlMzk3ZDYyYWVmZjQ4YTYwZjAxMzMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBTZXAgMTcgMTM6MzE6MTIgMjAxMiAtMDcwMAorCisgICAgRml4IHBzdGF0IG1lbW9yeSBsZWFrIG9uIGhwdXggMTFpCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCAxM2JkNGQ1NmJhYTk4ODYwMThhMDA0NzdlMzIxNGViZTAyNzA1ZmZlCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gU2VwIDE3IDEzOjMxOjA0IDIwMTIgLTA3MDAKKworICAgIEZpeCBwc3RhdCBtZW1vcnkgbGVhayBvbiBocHV4IDExaQorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgMDgwNTQyMDgxM2RlMTU2YzdmYzUxNDI1MzRmYjQyMGEwZmNjMzU3MgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIFNlcCAxNyAxMzoyODo1OSAyMDEyIC0wNzAwCisKKyAgICBmaXhlcyBBVCBjb2RlIG9uIGhwdXggMTFpCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCBiZGIzYjE0NjM4MGRiMTMxNmNhYmQ1OGI3MDQ0MzZlN2VlY2RkOWY1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gU2VwIDE3IDEzOjI4OjUwIDIwMTIgLTA3MDAKKworICAgIGZpeGVzIEFUIGNvZGUgb24gaHB1eCAxMWkKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IGU5MzZjZjgxMGE0NzM3OTE1NmQ5MTNhNzE0ZTM4MTYxODFhMGQzZGIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBTZXAgMTcgMTM6MjU6MjAgMjAxMiAtMDcwMAorCisgICAgZml4ZXMgZGlzQXZhaWwgb24gRnJlZUJTRCB1ZnMKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDYwOGFiNTc4ODdlNTU2NmU2MzUwOWEzZjdlNWQwYTNlMjg5MmY0YTcKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBTZXAgMTcgMTM6MjU6MDIgMjAxMiAtMDcwMAorCisgICAgZml4ZXMgZGlzQXZhaWwgb24gRnJlZUJTRCB1ZnMKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDaGFuZ2VzOiBWNS43LjIucmMxIC0+IFY1LjcuMi5yYzIKKworY29tbWl0IDA3ZjkxNDU2NGUwOTcyMjRkNjc3NTE1YzJmNWZkMWYzYzBjOWViNDIKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBTZXAgMSAwOTo1NDo0MiAyMDEyIC0wNzAwCisKKyAgICBSZWxlYXNlIENhbmRpZGF0ZSBmb3IgVjUtNy1wYXRjaGVzCisKK2NvbW1pdCBhZWUyMTdjMDdlYTlmMzRhMzIyNjhlOTY2YzdlY2VmMDM2ZWM0YTk2CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgU2VwIDEgMDk6NTQ6MzggMjAxMiAtMDcwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcuMi5yYzIKKworY29tbWl0IDExOWIwZDNjZjEyYzk3Y2EzYzc0ZDZkMWU3MjMxOTY3MGE4Mzc4YWEKK0F1dGhvcjogQmlsbCBGZW5uZXIgPGZlbm5lckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBTZXAgMSAwOTo1MTowOCAyMDEyIC0wNzAwCisKKyAgICBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzNTYwNDczOiBmcm9tIGZlbm5lcjogSGFuZGxlIFRpbWVUaWNrcyB3aGVuIHByZXR0eS1wcmludGluZyBPSUQKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IGM5NGM2MmVhMGVkY2ViYmZiYjczZmFiNmVjZGRjNjc5Zjc2OTRkYWIKK0F1dGhvcjogQmlsbCBGZW5uZXIgPGZlbm5lckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBTZXAgMSAwOTo1MTowOCAyMDEyIC0wNzAwCisKKyAgICBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzNTYwNDczOiBmcm9tIGZlbm5lcjogSGFuZGxlIFRpbWVUaWNrcyB3aGVuIHByZXR0eS1wcmludGluZyBPSUQKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDZkN2Y5ZWIwZGVjZGI5NjgyODM2ZmZkMDNmMTk3NDIxOTdhZDg3ZGIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBBdWcgMjkgMjE6MTQ6NDYgMjAxMiArMDIwMAorCisgICAgRml4IHBvc3NpYmxlIG1lbW9yeSBvdmVycnVuIGluIGZzeXNfZ2V0ZnNzdGF0cy5jIChwYXRjaCAzNTU5NDE3KQorCitjb21taXQgZjIzNWVlOGIzMmVlZDFkZTNmMWU0MjAyZWY0NWI2Mzc3ZmJjZTE2MworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEF1ZyAyOSAyMTowNzoxNCAyMDEyICswMjAwCisKKyAgICBGaXggZm9yIGhyU3RvcmFnZVRhYmxlIG9uIEFJWCAoYnVnIDM1NTcxNTkpCisKK2NvbW1pdCA3OGNjOWQ1Y2NkODZiMTcwNjIyYWFjNTQzYzM0NWMwMjA3NTVjNzhhCitBdXRob3I6IHN0aGVuIDxzdGhlbjIzOTM0QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEF1ZyAyOCAxNzoxODowOSAyMDEyIC0wNzAwCisKKyAgICBhZGQgbWlzc2luZyBwcm9jZXNzIHN0YXR1cyB2YWx1ZXMgdW5kZXIgbmV0L29wZW4tYnNkCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCA0ZWY5ZGNkODBiMGJkYTFlMThiN2UzNDlhMDhiYzBmMjJhN2U3NTVlCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDI4IDE3OjE2OjM3IDIwMTIgLTA3MDAKKworICAgIENIQU5HRVM6IE9wZW5CU0Q6IFBBVENIIDM1NTk0MTQ6IGZyb20gbmJhOiBzdXBwb3J0IE9wZW5CU0QgZm9yIGhyX3N3aW5zdAorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgMGI1NjlmY2NlYTk0MTRjNTBjZmQ2YjBlODNlMTgzMWJhMTI5MWNlMgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEF1ZyAyOCAxNzoxNDo0NSAyMDEyIC0wNzAwCisKKyAgICBhZGQgbWlzc2luZyBwcm9jZXNzIHN0YXR1cyB2YWx1ZXMgdW5kZXIgbmV0L29wZW4tYnNkCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCAxZDNjN2JlN2ZhN2EzOGZkM2ZjMzk3MjBiYjVjYjcwZjhiZDcxMTYwCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDI4IDE3OjE0OjIyIDIwMTIgLTA3MDAKKworICAgIGFkZCBtaXNzaW5nIHByb2Nlc3Mgc3RhdHVzIHZhbHVlcyB1bmRlciBuZXQvb3Blbi1ic2QKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IGZmNDM4NDMzYWNhMDk2YmJiZWEyOWRkMzBkZmQ1YzU1MjM3NjFhNzIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBdWcgMjggMTY6NTA6NDYgMjAxMiAtMDcwMAorCisgICAgRml4IHJlYWwgbWVtb3J5IHJlcG9ydGluZyBvbiBCU0Qgc3lzdGVtcworICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgYzQyOWE0ZjM5ODRkYWU3OTFlMzA3ZGY3MDIyNTFmOTZlZjA0N2Q4OAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEF1ZyAyOCAxNjo0OToxMCAyMDEyIC0wNzAwCisKKyAgICBGaXggcmVhbCBtZW1vcnkgcmVwb3J0aW5nIG9uIEJTRCBzeXN0ZW1zCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCA0MWQ5ODBjMDE1NTY0ZGI3ZjIyZjc2MzE5MGY2MWFjMGQ1NmJhM2IyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgQXVnIDI0IDE0OjM1OjUzIDIwMTIgKzAwMDAKKworICAgIFdpbmRvd3M6IFVuYnJlYWsgRExMIGJ1aWxkCisKK2NvbW1pdCAyNzkzOTIzYmZlMmIwMjZmY2FlYWY1MzhhZTUwM2YxMDVjYjMxNWJjCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSmFuIDMgMjI6MjY6MjAgMjAxMSArMDAwMAorCisgICAgYWRkZWQgbWlzc2luZyBUTFNUQ1AgbWVudGlvbiBpbiB0aGUgaGVscCBvdXRwdXQKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDaGFuZ2VzOiBWNS43LjIucHJlMyAtPiBWNS43LjIucmMxCisKK2NvbW1pdCA5ZWM1YzU5OTc4MDI1MWRjZDMxNTVmOWFjOTgwNmVjZTdlZDZiYTIyCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgQXVnIDExIDEyOjAwOjM3IDIwMTIgLTA3MDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjcuMi5yYzEKKworY29tbWl0IDMzNThiNjViMTFlMmMwZWU3MTJmNjA5ZjAyMDcxMjYwZjc1ZjliYjMKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBBdWcgMTEgMTE6Mzk6MzggMjAxMiAtMDcwMAorCisgICAgUmVsZWFzZSBDYW5kaWRhdGUgZm9yIFY1LTctcGF0Y2hlcworCitjb21taXQgNDg0OWE0MzBkYWFmYjkxYzdhNjFiZmJiYzE3ZjkyOTllNThmY2Y2NAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IEF1ZyAxMSAxMTozOTozNSAyMDEyIC0wNzAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNy4yLnJjMQorCitjb21taXQgMWJjMjY4NDI4ZTgyOTg1MmM5ZWYwYTc5NTUyY2E0MDQ1YWRkMjhhMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA5IDIyOjQyOjUyIDIwMTIgKzAyMDAKKworICAgIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIGluaXRpYWxpemVkIGt2bSBzdHJ1Y3R1cmUgd2hlbiBxdWVyeWluZyBwcm9jIHRhYmxlIG9uIEJTRC4KKworY29tbWl0IDdlNjdjNTAzOGI2YWFiZmRhMTkzOWVhODFkOTQwYjI0MDAwY2ZiNTEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDkgMTQ6Mjc6MDggMjAxMiArMDIwMAorCisgICAgUmVtb3ZlZCBlcnJvciBtZXNzYWdlIHdoZW4gZmlsZSBjYW5ub3QgYmUgb3BlbmVkLgorICAgIAorICAgIFRoaXMgc2hvdWxkIGJlIGhhbmRsZWQgYnkgY2FsbGVyLCBub3QgaW4gdGhlIGZ1bmN0aW9uLiBUaGVyZSBpcyBvbmx5IG9uZSBjYWxsZXIgbm93LCB1ZHBfZW5kcG9pbnRfbGludXguYy4KKworY29tbWl0IDU5YjBkZTBiOGZhNzNlYjQwMzAwNmNlZTc1ZmY4NjUxZTE1ODVlMjgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDkgMTQ6MjM6MTQgMjAxMiArMDIwMAorCisgICAgRml4IGNvbXBpbGF0aW9uIGVycm9ycyBpbnRyb2R1Y2VkIGJ5IGNvbW1pdCBmOTVkZjYzNDFiMWQwNjI0OTQ0M2U1MTZiNTlhNDNjZGZhM2Q0Nzc3LgorICAgIAorICAgIFRoaXMgaXMgZW1iYXJhc3NpbmcsIEkgY29tcGlsZWQgdGhlIHNvdXJjZXMgd2l0aG91dCAtLWVuYWJsZS1pcHY2LiBTb3JyeSBmb3IgaW5jb252ZW5pZW5jZS4KKworY29tbWl0IDVkN2VkYWRkNDc2MTY4MGI2NmQxZGYzYmZkZTdjYTViMTZjYTVhMTYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDkgMTI6NDY6MzUgMjAxMiArMDIwMAorCisgICAgRml4IGNvbXBpbGF0aW9uIGVycm9yIGludHJvZHVjZWQgYnkgY29tbWl0IGY5NWRmNjM0MWIxZDA2MjQ5NDQzZTUxNmI1OWE0M2NkZmEzZDQ3NzcuCisKK2NvbW1pdCA0M2M5N2JiYWFmMjExZjRjN2Y3YzcwNGNmY2I5MDFkZmJmODM0ODc0CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA5IDEyOjMwOjA5IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBMb3dlcmVkIHNldmVyaXR5IG9mICdFcnJvciBleHBhbmRpbmcgWFhYIHRvIDY0Yml0cycgbWVzc2FnZXMuCisKK2NvbW1pdCA4ZTVjZjJhNzJhNDZjZDQ4M2QyMmU2MjkwYTZjOGM0YzI2YWY2YWQyCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA5IDEyOjI1OjQ4IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IHJlbW92ZWQgY291bnRlci02NCBlcnJvciBtZXNzYWdlcy4KKyAgICAKKyAgICBUaGVzZSBtZXNzYWdlcyBkbyBub3Qgc2F5IGVueXRoaW5nIHVzZWZ1bCwgY2FsbGVyIHNob3VsZCBjaGVjayB0aGVpciByZXR1cm4gdmFsdWUgYW5kIHJlcG9ydCBpdC4KKworY29tbWl0IGY5NWRmNjM0MWIxZDA2MjQ5NDQzZTUxNmI1OWE0M2NkZmEzZDQ3NzcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDkgMTI6MDE6MjUgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IHJlbW92ZWQgZXJyb3IgbG9nIG1lc3NhZ2VzIHdoZW4gSVB2NiBpcyBkaXNhYmxlZC4KKworY29tbWl0IDE4ZGFjZThlNGEzNmIwODNkNmVmNzE3NzM1YzYzZTdmNDAyMjRkYjgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDkgMTA6NDE6NDUgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogYWRkZWQgQ1ZGUyAoQ2VudHJhVmlzaW9uIEZpbGUgU3lzdGVtKSB0byBoclN0b3JhZ2VUYWJsZSBhbmQgaHJGU1RhYmxlLgorCitjb21taXQgOTBmNDMxYjQ1ZDIxNTA2NDI3YmMwYmQxZDRlZTY5ZTBiOGVhMzBiYworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEF1ZyA4IDIzOjEwOjUwIDIwMTIgKzAyMDAKKworICAgIFVwZGF0ZSB0byBjdXJyZW50IE1JQiB2ZXJzaW9ucworCitjb21taXQgOWU3YTBiOWU1ODBkM2IxZWE2MTk4YTc0MTRjODE2YzIzYjEyM2IxMAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEF1ZyA4IDIyOjI3OjE2IDIwMTIgKzAyMDAKKworICAgIFVzZSBhIHdya2luZyBhd2sgZm9yIFNvbGFyaXMKKworY29tbWl0IDBlMzkyMmFlMjFlNGI3ZWM1Mzg4NjdhZmQyMmNlNzRkNzQxZTBmMWMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBBdWcgOCAyMjoxNzozNCAyMDEyICswMjAwCisKKyAgICBmaXggcHJvdG90eXBlIGZvciBrbG9va3VwCisKK2NvbW1pdCBhMjIxMDk3MTFhNmQxZWMxNGI2YTNmMWNhYzIyMWQ3MDI2M2YxMDRhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgQXVnIDggMjI6MDg6MTMgMjAxMiArMDIwMAorCisgICAgZml4IHByb3RvdHlwZXMgZm9yIGtsb29rdXAKKworY29tbWl0IGFjMDYyOTcyYzU4NTE3NGY5NWQ3YmE4N2FhNWVjNTRjNDJmZGVjNTUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBBdWcgOCAyMjowMDoyNiAyMDEyICswMjAwCisKKyAgICBmaXggcHJvdG90eXBlcyBmb3Iga2xvb2t1cAorCitjb21taXQgN2NkZDhlYmVmOTUwN2ZlNzY2MTA3Y2E5ZmVlMDU0YzQ0Y2MwYmFjNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIEF1ZyA1IDA4OjEzOjU5IDIwMTIgKzAwMDAKKworICAgIE1ha2Ugc25tcF9hbGFybV9yZXNldCgpIHVzZSB0aGUgbW9ub3RvbmljIGNsb2NrLiBGaXhlcyBhIGJ1ZyBpbnRyb2R1Y2VkIGluIGNvbW1pdCAzN2JhN2UyLgorCitjb21taXQgMDIzZjYxZWE3ODNiZmNjNTNmZTkwYWE2NjU0NWM1YWVhMmRiODA2MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEF1ZyA4IDE2OjI2OjU0IDIwMTIgKzAwMDAKKworICAgIEZpeCBidWlsZCBicmVha2FnZSBjYXVzZWQgYnkgY29tbWl0IDAyODYxNGVjZjJkNjczOTg2OTlkYzNiZDc4NDAyOWYzMzYwZjJlMTMKKworY29tbWl0IGNkODIwOTQ5YTE0OTFhZjEwM2E4NTU1ZjZiZGFlMDQ4NTFmM2QyODUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBBdWcgOCAxNjoxNjo0MyAyMDEyICswMDAwCisKKyAgICBVbmRvIGJ1aWxkIGJyZWFrYWdlIGNhdXNlZCBieSBjb21taXQgMzdiYTdlMjBhNTIxZmJmMDQ1OGEwYzc3ZWVhMmU1ZTM2YmQ3ZWMwYQorCitjb21taXQgZjE0MzAwOGNjYzU3ZWExMGNiYjg4YWIzNTU0ODIyYjE3YjYyNzBhYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIEF1ZyA1IDA4OjQ1OjQyIDIwMTIgKzAwMDAKKworICAgIE1ha2UgZ2V0X2V4ZWNfb3V0cHV0KCkgd29yayBvbiBiaWcgZW5kaWFuIHN5c3RlbXMuCisgICAgCisgICAgVW5kbyBBUEkgYnJlYWthZ2UgaW50cm9kdWNlZCBieSBjb21taXQgNzM3NGI4NGZlNGMyZWY4NDk3ZmRlM2RhZTgwYTY5YWE4OWViYTE5Yy4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDaGFuZ2VzOiBWNS43LjIucHJlMiAtPiBWNS43LjIucHJlMworCitjb21taXQgODQzMjJlMGRjMmE4OTc0NjQ2NTQyZDk4ODFiYzAxYjQzZGMzYTEyZAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEp1bCAzMSAxNjoyNDowNyAyMDEyIC0wNzAwCisKKyAgICBtYWtlIGRlcGVuZCBmb3IgNS43LjIucHJlMworCitjb21taXQgOGZlYzdhODFkNjEzM2E1ZjA1ZWQzNGE1YWY5ODA2YWY1ZDEyODIyMworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEp1bCAzMSAxNTo1Nzo1NiAyMDEyIC0wNzAwCisKKyAgICBmaXggdGhlIGFzc2VydCBjaGVjayB0byBhbGxvdyBmb3Igc29tZSBrbm93biBhc3NlcnRzCisKK2NvbW1pdCBkZmRlNmQyZGRkNTE5YzhjMmFlMTc4ODc3NGZkZjkwZDhiZWEwMmIxCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSnVsIDMwIDEwOjA4OjI0IDIwMTIgLTA3MDAKKworICAgIGluY2x1ZGUgZXJybm8uaCBhbmQgZG9uJ3QgdXNlIGNvbnRpbnVlIG91dHNpZGUgYSBsb29wCisKK2NvbW1pdCA3Y2ZmZTAyMjJjZDk4YTIxZTMwZjQ0YzNkZjlmMGQ5MGJmMDk2ZmU5CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSnVsIDMxIDE0OjEzOjUwIDIwMTIgLTA3MDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjIucHJlMworCitjb21taXQgMjJhZjdmZDQ2Nzc2YThkYjIzNjJlODhhY2IxYjY5YjE2NWMwMzRiNgorQXV0aG9yOiBibGVudHogPGJsZW50ekB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKdWwgMzEgMTM6NTI6NDAgMjAxMiAtMDcwMAorCisgICAgQ0hBTkdFUzogYWl4OiBQQVRDSCAzNDAzNDMzOiBmcm9tIGJsZW50ejogSXNzdWVzIHdpdGggaHJTV1J1bk5hbWUgYW5kIFBhcmFtZXRlcnMgb24gQUlYCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCA1MTZiOWY4Mjc1YjhkYjAzY2RjNDEwNzhlNjVjMjE3MDMwOWEzZjhiCitBdXRob3I6IEp1bGllbiBQaW5vbiA8anBpbm9uQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEp1bCAzMSAxMzoyNTozMSAyMDEyIC0wNzAwCisKKyAgICBDSEFOR0VTOiBwZXJsOiBQQVRDSCAzNDEyOTM5OiBmcm9tIGpwaW5vbjogUmVwYWlyIHRrbWliCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCA4ZjIzMGY0MDFjNjRkODIyODgzYWM0NDQ2MjRhMmMyZmQ3MTI4ZDhlCitBdXRob3I6IEhhcnNoYSBTaGl2YW5uYSA8bmFhbnVoc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKdWwgMzEgMTM6MjI6MTEgMjAxMiAtMDcwMAorCisgICAgQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0ggMzU1Mjc0NTogZnJvbSBuYWFudWhzOiBmaXggdG8gc3VwcG9ydCAzMiBjaGFycyBmb3IgVkFDTSBuYW1lcyBhcyBwZXIgUkZDLTI1NzUKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDM0MDA4ZDMyYWVmNDNkOGJiZTEwMDBmYjliZjk0NjQyYzA1MTRmNmYKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKdWwgMzEgMTM6MjA6MzEgMjAxMiAtMDcwMAorCisgICAgZml4IHRoZSBhZ2VudHggcGluZyBwYXRjaCBzbyBpdCB3b3JrcyB3aXRoIHRoZSBuZXdlciBhbGFybSBzdHJ1Y3R1cmUgbmFtZXMKKworY29tbWl0IDk2MjY3NjM5NGQzZmU1NTdlYWQ5MTA1N2I0ZDc4MDIyNmRjMGQ2YjMKK0F1dGhvcjogTWlqbyBTYWZyYWRpbiA8bWlqb3NAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSnVsIDMxIDEyOjQ4OjAxIDIwMTIgLTA3MDAKKworICAgIENIQU5HRVM6IGFnZW50OiBQQVRDSCAzNDE0MDUxOiBmcm9tIG1pam9zOiBzbm1wLWJyaWRnZS1taWI6IGZpeCBmb3IgZG90MWRCYXNlVGFibGUKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDM3YmE3ZTIwYTUyMWZiZjA0NThhMGM3N2VlYTJlNWUzNmJkN2VjMGEKK0F1dGhvcjogVmluY2VudCBCZXJuYXQgPHZiZXJuYXRAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSnVsIDMxIDEyOjI3OjI4IDIwMTIgLTA3MDAKKworICAgIENIQU5HRVM6IGFnZW50OiBQQVRDSCAzNDgxNjg2OiBmcm9tIHZiZXJuYXQ6IERvbnQgcGluZyBtYXN0ZXIgYWdlbnQgdW5sZXNzIHRoZXJlIGlzIG5vIGluY29taW5nIHRyYWZmaWMKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDJiZTVmZWFkYjA1NDA4NDZlMGUzYWRhMjdlZmI5Nzg5NGE0Y2JkNTIKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKdWwgMzEgMDc6Mjk6MTcgMjAxMiAtMDcwMAorCisgICAgYWRkZWQgYSBkYXJ3aW4gMTIgdmVyc2lvbgorCitjb21taXQgMWY5YmNkMjFlN2MyZDVlZmZiNjJhYTAxYjdiODdlNDNkYzg2MjE0YworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKdWwgMzEgMTQ6NDM6MjcgMjAxMiArMDIwMAorCisgICAgRml4ZWQgU0NUUC1NSUI6OnNjdHBBc3NvY1ByaW1Qcm9jZXNzLCB0aGUgbGlzdCBvZiBwcm9jZXNzZXMgd2FzIG5vdCBpbml0aWFsaXplZC4KKworY29tbWl0IDQ4YmU1ZTg5YWEwNGFkYjBkZjdlMDk0YjJmZTQ2MzAxNTQyOWZjOTgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSnVsIDMxIDEzOjQ4OjMxIDIwMTIgKzAyMDAKKworICAgIEFkZGVkIGxvZyBtZXNzYWdlIHdoZW4gaXBUYWJsZSBtaXNzZXMgc29tZSBpbnRlcmZhY2VzLgorCitjb21taXQgNzUyM2YwZjAxYmE0ZGI2NWFjMTY0N2EyMzIyOGNmMDZjMGI3MmEwMworQXV0aG9yOiBNYXJpdXN6IENlaWVyIDxtY2VpZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSnVsIDMwIDEwOjE5OjMzIDIwMTIgLTA3MDAKKworICAgIENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDM1MzY2OTI6IGZyb20gbWNlaWVyOiBjcmVhdGUgYSB1bml0IHRlc3QgZm9yIHJlYWRfY29uZmlnIEFQSXMKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IGMwN2I4ZDliMzc3MGI2MTVjOGUxNjJkYmRmNzY0MzgwNWYzNzJkNzUKK0F1dGhvcjogTWFyaXVzeiBDZWllciA8bWNlaWVyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEp1bCAzMCAxMDoxODo0MiAyMDEyIC0wNzAwCisKKyAgICBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzNTM2NjkyOiBmcm9tIG1jZWllcjogRml4IGZvciBjYWxsYmFjayBjYWxsaW5nIHdoZW4gdW5yZWdpc3RlcmluZyBjb25maWcgaGFuZGxlcgorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgNWMyNDI0ZjA3ZDg1YzBjNGY3OWQ2YzVmYWY2NGQ3ZjNlZTg2MTcyNgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEp1bCAzMCAxMDowODo0MiAyMDEyIC0wNzAwCisKKyAgICBkb24ndCBkdXBsaWNhdGUgc2VuZF9lbnRlcnByaXNlX3RyYXBfdmFycyBkZWYKKworY29tbWl0IDczNzRiODRmZTRjMmVmODQ5N2ZkZTNkYWU4MGE2OWFhODllYmExOWMKK0F1dGhvcjogR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEp1bCAzMCAwOTo0MToxNyAyMDEyIC0wNzAwCisKKyAgICBDSEFOR0VTOiBmcmVlYnNkOiBQQVRDSCAzMzgzOTcwOiBmcm9tIHlhYmVyYXVuZXlhOiBGaXggY29tcGlsZSBlcnJvciBvbiBGcmVlQlNEIDkueC9QT1NJWGlmeSBhdXRvX25saXN0LCBldGMKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDY3MGQ5NmU3ODY1OTBmZGQzMGExNmEzMzAwYzBlZDViZDZlNTMyMTQKK0F1dGhvcjogTWFyayBSdXNrIDx1c2VyX2lkPTM0OTg5NUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBKdWwgMjkgMjM6Mzk6MjIgMjAxMiAtMDcwMAorCisgICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIIDM0MjQ5MzM6IGZyb20gdXNlcl9pZD0zNDk4OTU6IFVzZSBORVRTTk1QX0RTX0FHRU5UX0FHRU5UWF9USU1FT1VUIGZvciB0aGUgZGVmYXVsdCB0aW1lb3V0CisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCBmMWVhZWMxNWVmNjAzYjhjZTU0MjkzMmZmZGJkODc4OGMzZDFhY2M1CitBdXRob3I6IERhbmllbCBIb2JpIDxob2JpZEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBKdWwgMjkgMjM6Mjg6MDEgMjAxMiAtMDcwMAorCisgICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIIDM1MzA3OTQ6IGZyb20gaG9iaWQ6IHBhc3MvcGFzc19wZXJzaXN0OiB1bnJlZ2lzdGVyIE1JQiB3aXRoIGNvcnJlY3QgcHJpb3JpdHkKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IGQ3ODNhZDk5MGU5MTRjMGVlMWM5OGQwYTkzYTQyOWViMmIyZjQ5OTcKK0F1dGhvcjogRG91ZyBNYW5sZXkgPHRla2thbWFuZW5kbGVzc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBKdWwgMjkgMjM6MjU6NDAgMjAxMiAtMDcwMAorCisgICAgQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0ggMzUyNjU5OTogZnJvbSB0ZWtrYW1hbmVuZGxlc3M6IEEgYnVnZ3kgU05NUHYzIGFnZW50IGNhbiBjYXVzZSBhIG5ldC1zbm1wIGNsaWVudCB0byBoYW5nCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCBlOTg1MTUyMGMxOGQ3ZWQxNzI0MDRhMzdkYzBkYzdhMTM2YmZhZWRkCitBdXRob3I6IERhbmllbCBFdmVycyA8ZGFuaWVsLWV2ZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIEp1bCAyOSAyMzoxNDoxOSAyMDEyIC0wNzAwCisKKyAgICBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzNTQ4MjU3OiBmcm9tIGRhbmllbC1ldmVyczogZml4IGZvciByZWN1cnNpdmUgcHRocmVhZCBtdXRleGVzCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCBlN2EzNzY3OGMyYjczNTlhZmQ0NGEzMDdlODI0YzFmN2Q3YTBjODdkCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gSnVsIDI5IDIxOjM1OjM1IDIwMTIgLTA3MDAKKworICAgIE5FV1M6IG9zeDogcGF0Y2g6IDM1MTQwNDkgZnJvbSB0d29iaXRzLWdpdGh1YjogZml4IGNvbXBpbGF0aW9uIG9uIGRhcndpbjExCisKK2NvbW1pdCAxMjIxNDI2YWJhZDE1YjliMmZjZWU4ZjFlMzJhYjUyZWYyNjkyOTUyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgRnJpIEp1bCAyNyAxNDoxODoyNCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBwZXJsOiBQQVRDSEVTOiAzNTI5NTQxOiBEb24ndCByZWZlciB0byBpbnRlcm5hbCAnbXknIHZhcmlhYmxlcyBmcm9tIGV4dGVybmFsIHNjcmlwdHMKKyAgICAKKyAgICBGaXggcHJvdmlkZWQgYnkgTGV6eiBHaWxlcworCitjb21taXQgOWMwNmMyMjAyZGMwNTY3MDNjODA5NTlhMGVjYTlhNzE2ODRjMjhkZQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIEZyaSBKdWwgMjcgMTM6Mjk6MzAgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogTGludXg6IFBBVENIRVM6IDM1MzY0MjA6IEVuc3VyZSBzbmQvcmN2IG1lbW9yeSBidWZmZXJzIGFyZSBzdWl0YWJseSBhbGlnbmVkCisgICAgCisgICAgUGF0Y2ggcHJvdmlkZWQgYnkgVHlsZXIgT2xtc3RlYWQKKworY29tbWl0IDg5YjgyYzU1ZjllZmQyZThhYjhjNmQ2NWZhNTY3YzViMWZhYzE4NDMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBGcmkgSnVsIDI3IDEzOjE0OjA3IDIwMTIgKzAxMDAKKworICAgICJJZGxlIiBwcm9jZXNzZXMgKGkuZS4gaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgY3JlYXRlZCkgYXJlIHByb2JhYmx5CisgICAgYmVzdCByZWdhcmRlZCBhcyAid2FpdGluZyBmb3IgYW4gZXZlbnQiIHRvIGJlY29tZSBydW5uYWJsZSAtIGkuZS4gJ25vdFJ1bm5hYmxlKDMpJworICAgIFRoYXQgZXZlbnQgYmVpbmcgdGhlIGNvbXBsZXRpb24gb2YgdGhlIGNyZWF0aW9uIHByb2Nlc3MuCisgICAgICAgSXQncyBhcmd1YWJsZSB3aGV0aGVyIG9yIG5vdCB0aGV5IGFyZSBzdHJpY3RseSAibG9hZGVkIiwgYnV0CisgICAgdGhpcyBmZWVscyBsZXNzIG1pc2xlYWRpbmcgdGhhbiByZXBvcnRpbmcgdGhlbSBhcyAnaW52YWxpZCg0KScKKworY29tbWl0IDZlNzgwYTViZjBkNjRiZjQ3ZGZiZjQ3OWFlN2Y1NmMxMGZmODE2NmUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBGcmkgSnVsIDI3IDEyOjU3OjU0IDIwMTIgKzAxMDAKKworICAgIENsYXJpZnkgbWVhbmluZyBvZiBoclNXUnVuU3RhdHVzICdpbnZhbGlkKDQpJworICAgIEVuc3VyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgYWx0ZXJuYXRpdmVzIGRvbid0IGNvbmZ1c2UgY29kZSBzeW50YXgKKworY29tbWl0IDk5YjM1M2Y3MjUzYTViYjM4Yjg2ZjMxYzI3MDhlMTZiMzRhNDZjZTcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBGcmkgSnVsIDI3IDEyOjUwOjUxIDIwMTIgKzAxMDAKKworICAgIEFkZGl0aW9uYWwgcGF0Y2ggZnJvbSBQYXRjaCBJRCAjMzU0MzAwMAorCitjb21taXQgZDBlMDNmZTRhMjM2OTQ1ZGFmNDJhZjdhNDcwOTRlNjg2ZjliZGI5ZQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIEZyaSBKdWwgMjcgMTI6NDE6MDIgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDM1NDMwMDA6IFZhcmlvdXMgZml4ZXMgdG8gUm1vbiBjb2RlCisgICAgU3VwcGxpZWQgYnkgUGF0cmljayBSaXR0ZXIKKworY29tbWl0IDY2MzJhMmI5YjlmYWQxYTBiMGQ2YmFlZGYyYTJiMzkxZjVkNGU5MTQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgSnVsIDI2IDE0OjM5OjQyIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHBlcmw6IEJVRzogMzUxNzAzMDogRW5zdXJlIGxhcmdlIHRhYmxlcyBhcmUgd2Fsa2VkIHByb3Blcmx5CisKK2NvbW1pdCBiOGQxNjYwNGRiYjJmODBlYmUyODUyMzIyYWE4MzM2MWEwMzIzNzk2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IEp1bCAyNiAxNDoxOTowNyAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBhcHBzOiBCVUc6IDM1Mjk3Njg6IEJlIG1vcmUgY2FyZWZ1bCB3aGVuIHN0cmlwcGluZyBvZmYgbnVtZXJpYyBzdWZmaXhlcworCitjb21taXQgMGIzYWQ0NGVjNGMxYjlmNDFkYzNlZjcwZTZhMzhhNTNlZjI2OGFkZQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBKdWwgMjYgMTM6MzQ6MTAgMjAxMiArMDEwMAorCisgICAgRml4IGNvbW1lbnRzIGRlc2NyaWJpbmcgRnJlZUJTRCByZWxhdGlvbnNoaXBzCisKK2NvbW1pdCA4Y2Y3YTg5MTg3YTk5NmZhZmYwNDA0MTQ5ODZmZmE1ZDc4ZDU2ODNlCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IEp1bCAyNiAxMzoyMTo1NiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBidWlsZDogQlVHOiAzNTMyMjM0OiBGaXggdHlwbyBpbiBsaWJ0b29sIHNjcmlwdAorICAgIChhZGRyZXNzZWQgcHJvcGVybHkgaW4gbGlidG9vbCAyLjQuMikKKworY29tbWl0IDQyNThkODUyY2E3YjZhZWFlOTNhZDczMDY0ZDQzYWE4MDdlYjYxMDQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgSnVsIDI2IDEzOjE2OjIwIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IGRvYzogQlVHOiAzNTM1MjY5OiBEb2N1bWVudCB1c2Ugb2YgW3NubXBdIGZvciBjbGllbnQtc2lkZSB0b29scy4KKworY29tbWl0IDI2ZWQ0MGNiZDA3Y2YyNzFhOWNmYzQ1MTdkOTY0Nzc0NzEyYWQ3N2MKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgSnVsIDI2IDEyOjU3OjU2IDIwMTIgKzAxMDAKKworICAgIFN1cHBvcnQgbG9jYWwgcm9sbHVwIG9mIHBhdGNoZXMgd2l0aG91dCBmaXJzdCBzeW5jaHJvbmlzaW5nIHdpdGggZXh0ZW5hbCByZXBvLgorCitjb21taXQgOTA0YzQ0MmQ2MGM1Yjk5YWFjZDdmNjAzMDdjMjg2ODRlZmFlODU0YworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBKdWwgMjYgMTI6NTM6MzcgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogcHl0aG9uOiBCVUc6IDM1MzU5Njc6IEZpeCBtZW1vcnkgbGVhayAtIHNubXBfe3Nlc3NffWVycm9yIGFsbG9jYXRlcyB0aGUgb3V0cHV0IGJ1ZmZlcgorCitjb21taXQgNTk3ZWNkYTY4ZWUyYjU4MGI2NjYyODg5NzdiMDRhYTEzMzIwNzUxNworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBKdWwgMjYgMTI6MTc6MTQgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogQlVHOiAzNTQwNjIxOiBkaXN0OiBBZGQgbWlzc2luZyBQcm92aWRlczogdG8gbmV0LXNubXAtcGVybG1vZHMgUlBNIHNwZWMKKworY29tbWl0IDQzZDViYTIyNGMzZjI5ZmQ4ZTdmZDFkMDYwYTE3MDQ1YWFkN2VmZjAKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgSnVsIDI2IDExOjI1OjQzIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHBlcmw6IEJVRzogMzU0MTAxMjogRml4IGhhbmRsaW5nIG9mIGdldHRhYmxlIGNvbHVtbnMKKworY29tbWl0IGJjMjkzYWNhZDhkMzQ4N2NkZGVmM2M3MGNlYTc0MzY4ZjM0ZDkzNTQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgSnVsIDI2IDExOjIwOjIwIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDM1NDM4NjQ6IFJlbW92ZSBleHRyYW5lb3VzIGZ1bmN0aW9uIHR5cGUKKyAgICAoYW5kIGZpeCBhIHJlbGF0ZWQgdHlwbykKKworY29tbWl0IDAyODYxNGVjZjJkNjczOTg2OTlkYzNiZDc4NDAyOWYzMzYwZjJlMTMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSnVsIDI0IDE1OjM3OjE2IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCBzbm1wZCBleGl0aW5nIHNob3J0bHkgYWZ0ZXIgc3RhcnQgZHVlIHRvIGluY29taW5nIHNpZ25hbC4KKworY29tbWl0IDRkMzg4OTVmNDU5YTFkZjI0ZjY4YzRhNjBlNGNhZjZhNzc4ZDhjMWYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDI3IDA5OjM1OjQ0IDIwMTIgLTA0MDAKKworICAgIENIQU5HRVM6IHNubXBkOiByZW1vdmVkIGxpbWl0IG9mICdleGVjJyBhbmQgJ3NoJyBlbnRyaWVzIGluIHNubXBkLmNvbmYKKyAgICAKKyAgICBVc2UgZHluYW1pYyAocmUpYWxsb2NhdGlvbiBpbnN0ZWFkLgorCitjb21taXQgZGNlZWFjYzk5OGZlMjMyMjg4MmU3ZWVkZWMwYTcxYTc5ZGM0OTRhYgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBKdWwgMjQgMDk6MDA6MjMgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgYmUgc3VycHJpc2VkIGlmIHRoZXJlIGFyZSBubyBjaGFuZ2VzIHRvIHZhcmlvdXMgZmlsZXMKKworY29tbWl0IDU2YzNjMDc4MzM2Y2JmMWJmMDlmZDFiMDEwNzhhOTAzMDcxNzYxM2UKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFdlZCBKdWwgMTEgMDg6NDc6MTMgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEJVRyAzNTQyMzA3OiBDb3JyZWN0IHN5c09SSUQgZm9yIHNubXBNUERTdGF0cy4gVGhhbmtzIHRvIERhdmUgVnVjaWNoIGZvciByZXBvcnRpbmcgdGhpcy4KKworY29tbWl0IDYxZWNlZGMwODNmODgxZGI4YTlhNTBkNTBiZGVlZDM2NjI0ZWQzMDcKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFdlZCBKdWwgMTEgMDA6MjE6MjcgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEJVRyAzNTQyMTg4OiBDb3JyZWN0IHN5c09SRGVzY3IgZm9yIHNubXBVc21NSUIuIFRoYW5rcyB0byBEYXZlIFZ1Y2ljaCBmb3IgcmVwb3J0aW5nIHRoaXMuCisKK2NvbW1pdCAyZjllZGU0MTlmNDBlODQ4YTI0MjUzODkyODhjYWMwZTIzMzFiOTkyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IEp1bCAxOSAxNzoxMDo1MiAyMDEyICswMTAwCisKKyAgICBGaXggZXhhbXBsZSAncnN5bmMnIGNvbW1hbmQgZm9yIGZ1bGwgcmVsZWFzZXMKKworY29tbWl0IDZkZDc4ODRkOTllNzU2ZTJmMjJiNjg4ODIzY2UxYjFkNTI2YWQxNjYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBXZWQgSnVsIDE4IDE1OjU5OjU5IDIwMTIgKzAxMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjYuMgogCiBjb21taXQgOTc2Njk2YTEyOGU1N2I1MTJiZjdhZDQwMGQwMDIzNjhiNGE5YTg3MQogQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CkBAIC01MCwxMiArMzQxOCw1NCBAQAogCiAgICAgZG9uJ3QgdXNlIC0tcmViYXNlCiAKK2NvbW1pdCBkNGMxNTQ5NTkzY2UyYzJjYWViOThlNWY4YWJmZDdhNWFlNWEwMjczCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1biAyNyAwOTozNTo0NCAyMDEyIC0wNDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogcmVtb3ZlZCBsaW1pdCBvZiAnZXhlYycgYW5kICdzaCcgZW50cmllcyBpbiBzbm1wZC5jb25mCisgICAgCisgICAgVXNlIGR5bmFtaWMgKHJlKWFsbG9jYXRpb24gaW5zdGVhZC4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDaGFuZ2VzOiBWNS43LjIucHJlMSAtPiBWNS43LjIucHJlMgorCitjb21taXQgZmZjZTQ5ZmIxYWI0YTc4ZDRmMjk0N2JlMDZkNjIwZjE0MjQ1MjhmZAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1bCAxMSAxNzoxMjozMSAyMDEyIC0wNzAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNy4yLnByZTIKKworY29tbWl0IGJkN2M3Mjk3MTg3ODE4ZTVlZWY3MzI3NjY3ZTRhODFmNmM5ZmM4OWIKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdWwgMTEgMTQ6NTU6MzggMjAxMiAtMDcwMAorCisgICAgZG9uJ3QgdXNlIC0tcmViYXNlCisKK2NvbW1pdCBhNzE1MzEyZTJjZTQ5ZDRkYTkzZmMxNDBjYzM5ZmMxMDBiMGI3OTc4CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVsIDExIDE1OjQ3OjIyIDIwMTIgLTA3MDAKKworICAgIHVwZGF0ZWQgZm9yIHRoZSBwcmV2aW91cyA1LjcuMi5wcmUxIHJlbGVhc2UKKwogY29tbWl0IDE3Mjc3Njg5YjYyOWY0NTg2ZDVkNzE0ZDg3Y2U2YmMxMWY4ODc2NjgKIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIFdlZCBKdWwgMTEgMTQ6NTU6MzggMjAxMiAtMDcwMAogCiAgICAgZG9uJ3QgdXNlIC0tcmViYXNlCiAKK2NvbW1pdCA2Nzg2ZmZjNzZmYWNmNzQ2YWZiNmFmMjUxNThmNzk0MDY1NmFiMzljCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBXZWQgSnVsIDExIDA4OjQ3OjEzIDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBCVUcgMzU0MjMwNzogQ29ycmVjdCBzeXNPUklEIGZvciBzbm1wTVBEU3RhdHMuIFRoYW5rcyB0byBEYXZlIFZ1Y2ljaCBmb3IgcmVwb3J0aW5nIHRoaXMuCisKK2NvbW1pdCBmMGUzNWQ2MWY5MjU4ZGM2MDhkYTliZjcxOGFmMTQ1N2E4NTlmYTE5CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBXZWQgSnVsIDExIDAwOjIxOjI3IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBCVUcgMzU0MjE4ODogQ29ycmVjdCBzeXNPUkRlc2NyIGZvciBzbm1wVXNtTUlCLiBUaGFua3MgdG8gRGF2ZSBWdWNpY2ggZm9yIHJlcG9ydGluZyB0aGlzLgorCiBjb21taXQgNTIwNmQyNWQ0Y2I5NGQ0YjBkZDMzMWE1YTQxMTNkNGQ4Nzc4MmM0MgogQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgTW9uIEp1bCAyIDEyOjE0OjM5IDIwMTIgLTA3MDAKQEAgLTc0LDYgKzM0ODQsMTQgQEAKIAogICAgIGFmdGVyIHB1bGxpbmcgYWxsIHRoZSBicmFuY2hlcywgc3dpdGNoIGJhY2sgdG8gdGhlIGluaXRpYWwgb25lCiAKK2NvbW1pdCA4MjU5NmE2OWY1Y2U1M2Q1YTZmMGFmNDIxNWM5OGQ2MTg0ZGFiNGQ0CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgRnJpIEp1biAyMiAxNDowNDo1MCAyMDEyICswMTAwCisKKyAgICBVbnBpY2sgbWVyZ2UgY29uZmxpY3QuCisgICAgKE5vdCBzdXJlIHdoeSB0aGlzIHdhc24ndCBmbGFnZ2VkIHVwIGVhcmxpZXIgLSBvciBtYXliZSBJIGp1c3QgbWlzc2VkIGl0ISkKKyAgICAoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBiMDViZDc4ZjlmMjM0YmI1N2EwMGI1NGM1YmZiMWRlMzJhMDlmNGE0KQorCiBjb21taXQgNmEwNzVhZTQ5NGM3NmI4MmVlYTk2MzI3Y2Y1MjQyZGYwNDg3NDNkYgogQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CiBEYXRlOiAgIEZyaSBKdW4gMjIgMTQ6MjE6MDggMjAxMiArMDEwMApAQCAtODYsMjYgKzM1MDQsMzcgQEAKIAogICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjYuMi5yYzMKIAotCi1jb21taXQgNTk1M2NmZDg1NWI3YTU2NTY3MmNlZjk0Mjk0OTcxNDFjN2Q5YmUxMgorY29tbWl0IGIwNWJkNzhmOWYyMzRiYjU3YTAwYjU0YzViZmIxZGUzMmEwOWY0YTQKIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgogRGF0ZTogICBGcmkgSnVuIDIyIDE0OjA0OjUwIDIwMTIgKzAxMDAKIAogICAgIFVucGljayBtZXJnZSBjb25mbGljdC4KICAgICAoTm90IHN1cmUgd2h5IHRoaXMgd2Fzbid0IGZsYWdnZWQgdXAgZWFybGllciAtIG9yIG1heWJlIEkganVzdCBtaXNzZWQgaXQhKQogCi1jb21taXQgZTcyZTIwNWZkY2VmNzg3ZWY4NDBjOGM5MjhlZDI3MzUxYTY5NTQ0YgorY29tbWl0IDRkMTU3NDJjNzUwYTk2YTRkYmIzZGE4NzQ3NDFhZTE1MjQ4OWY4ZDUKIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgogRGF0ZTogICBGcmkgSnVuIDIyIDEzOjU4OjA3IDIwMTIgKzAxMDAKIAogICAgIFJlbGVhc2UgQ2FuZGlkYXRlIGZvciBWNS02LXBhdGNoZXMKIAotY29tbWl0IGZlYWJlZjNlNmNhMzViYzBmMTQzNDFlNGNkNmRjOWFmZDE5NTViYTcKK2NvbW1pdCBmNmI1ZTMzNzZlZDNhOGU5ZWFmNzRiN2Q2ODIyYjNhNzY1NzcyZWU4CiBBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KIERhdGU6ICAgRnJpIEp1biAyMiAxMzo1Nzo1NiAyMDEyICswMTAwCiAKICAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNi4yLnJjMwogCitjb21taXQgNWNmYjA4MTExMjdhNjUzZGZmMGY0ZTUzYWQ2MDI5ZTIyOThhNmM2MgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIEZyaSBKdW4gMjIgMTM6Mjg6MzcgMjAxMiArMDEwMAorCisgICAgUmVsZWFzZSBDYW5kaWRhdGUgZm9yIFY1LTUtcGF0Y2hlcworCitjb21taXQgZTcyZTIwNWZkY2VmNzg3ZWY4NDBjOGM5MjhlZDI3MzUxYTY5NTQ0YgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIEZyaSBKdW4gMjIgMTM6NTg6MDcgMjAxMiArMDEwMAorCisgICAgUmVsZWFzZSBDYW5kaWRhdGUgZm9yIFY1LTYtcGF0Y2hlcworCiBjb21taXQgZjc5YTU0ZjI0NzI1MDhiMTY3ZDk3N2YzNjdjMzg2NGI1NjIxZTg5ZAogQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CiBEYXRlOiAgIEZyaSBKdW4gMjIgMTM6NDI6NTMgMjAxMiArMDEwMApAQCAtMTcxLDYgKzM2MDAsMzAgQEAKIAogICAgIE1vcmUgcHJlY2lzZWx5IGRlc2NyaWJlIC1jIG9wdGlvbi4KIAorY29tbWl0IDQ4Y2MzOWYxYWEwZmE2Y2U5NTVlZjc2YjI1ZGI4ZjlkY2EwNmI4MGQKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBKdW4gMiAwOToyNzoxMCAyMDEyIC0wNzAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS43LjIucHJlMQorCitjb21taXQgODEwMTg1YWUwYjBjZDJhZDRkNDI0YTFiYTc3NWVmNWNlYWY1MGYwMworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IEp1biAyIDA5OjI0OjE5IDIwMTIgLTA3MDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjcuMi5wcmUxCisKK2NvbW1pdCA2MjcxNDcxZTAxMjgyZjM2NzU3MjRlYWYxMzU4Y2ViMGU5NWRkZDRlCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgSnVuIDIgMDg6MzI6NDAgMjAxMiAtMDcwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcuMi5wcmUxCisKK2NvbW1pdCBmY2I3ODJhYTg4OTMxMzRjNzQxNGE5MjZkOTI2ODU5NGY3MjViOTE1CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgSnVuIDIgMDg6MzI6MTggMjAxMiAtMDcwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNy4yLnByZTEKKwogY29tbWl0IGUzYmNkODdjNzJmY2VhNzcwNmU4NjhiNWFjZTc1Mjk2MDkzZjc0OTcKIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgogRGF0ZTogICBUaHUgTWF5IDMxIDE0OjA5OjQyIDIwMTIgKzAxMDAKQEAgLTE5NSwyNSArMzY0OCwzMCBAQAogCiAgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNi4yLnJjMgogCi0KLWNvbW1pdCA1MTA5YWU3N2I2YzFkNTQ5ZDkxZTMyODI3ZjRhMmNhYzA1MzgzZDU4Citjb21taXQgZDlhMTU0NDVhYTc0ZjUzMTZiZmM3MTFjMTU1ODQ2Nzg3MmMyOTU4YwogQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CiBEYXRlOiAgIFRodSBNYXkgMzEgMTM6NTA6MTIgMjAxMiArMDEwMAogCiAgICAgbWFrZSBkZXBlbmQgZm9yIDUuNi4yLnJjMgogCitjb21taXQgYmNhYmQyYzk1NDJkYmViZDFkMzE5YjQ0OTQ0MTNiZGNjYTA2NjE0ZQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTM6Mzg6MzggMjAxMiArMDEwMAorCisgICAgUmVsZWFzZSBDYW5kaWRhdGUgZm9yIFY1LTYtcGF0Y2hlcworCitjb21taXQgYjQ3Mzg5OGMwYzVhYzllYjQ3YzdjMDVhM2Y3NDVlNGZmMmE3NmFhYQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTM6Mzg6MjggMjAxMiArMDEwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjYuMi5yYzIKKwogY29tbWl0IDEzMTQyOWU3MDYyZmJhYTY1YjgyYWZmZWQxZmI5MmRmMmMwY2M4MTMKIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgogRGF0ZTogICBUaHUgTWF5IDMxIDEzOjM4OjM4IDIwMTIgKzAxMDAKIAogICAgIFJlbGVhc2UgQ2FuZGlkYXRlIGZvciBWNS02LXBhdGNoZXMKIAotY29tbWl0IDFmYmZlNWVlM2M0Mjg3MzQ1YzUxNDYyNzc1ZjM5ZTFiZDI3MzVlMmIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgotRGF0ZTogICBUaHUgTWF5IDMxIDEzOjM4OjI4IDIwMTIgKzAxMDAKLQotICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS42LjIucmMyCi0KIGNvbW1pdCAxYzgxMTBiMzNiODEwNWNhNjE5MDk0NWEzNWZlN2FlOTAzMjUyZDY4CiBBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KIERhdGU6ICAgVGh1IE1heSAzMSAxMzoyMTozOCAyMDEyICswMTAwCkBAIC0yOTIsNiArMzc1MCwxOCBAQAogCiAgICAgRml4IG1pc3NpbmcgaW5jbHVkZS4gRml4ZXMgU0lHU0VHViBvbiBGcmVlQlNEOSB4NjQKIAorY29tbWl0IDU4MDU4Nzg3NDljMDgwNjJkZWJmMGE5ZDc5OGQwOGZiOTE2Y2FhMmQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBNYXkgMjcgMDY6MjM6MTkgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEFkZCBtaXNzaW5nIGRlYnVnIHRhZworCitjb21taXQgZDFhNDJiYmNjN2IxNDczMGM5YTZkOTljNGYwNDcwOTc4NDNhNTQ5YgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgRnJpIE1heSAyNSAwOTowMjoyNyAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogUnVuIGxpYnRvb2wgLS1tb2RlPWZpbmlzaCBvbiB0aGUgcmlnaHQgZGlyZWN0b3J5CisKIGNvbW1pdCAxZmJmMzM3MTFhMTllYWM5NzM5YWQyM2Y2ZjYyNTFlYWNjNDFmMWM0CiBBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KIERhdGU6ICAgVHVlIE1heSAyMiAxNDo1NDo0NSAyMDEyICswMTAwCkBAIC00MDYsMTIgKzM4NzYsOTEgQEAKIAogICAgIENoZWNrIG5lZWQgZm9yIC1sbSB0byB1c2Ugcm91bmQvZXhwCiAKK2NvbW1pdCBhMDYwOWNmMWYzYTY5MTdkMjYzNzI1NzMyMjQ4Y2Q5MzdhNDVhZDk0CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgQXByIDcgMDg6NDA6NDQgMjAxMiArMDIwMAorCisgICAgUmVtb3ZlIGxpbWl0YXRpb24gb24gY29uZmlndXJhdGlvbiBsaW5lIGxlbmd0aC4KKworY29tbWl0IDMwNTk3MzMzOGE2M2FlNTRjNWUwMmE4NjI2ZmJlOWE4MDY0ZGNiN2UKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBBcHIgNyAwMDozMjoxOSAyMDEyICswMjAwCisKKyAgICBSZWR1Y2UgdmFyaWFibGUgc2NvcGVzLgorCitjb21taXQgY2NhYjRlOWQzZWQ0MjRjMzlkMGRjMjdiZTYzZmE3NmM3NDYxZWE4MQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IEFwciA3IDAwOjE1OjIyIDIwMTIgKzAyMDAKKworICAgIEludGVybmFsaXplIHRoZSBuYW1lIGFuZCBsaW5lIG51bWJlciBvZiB0aGUgY3VycmV0IGNvbmZpZ3VyYXRpb24gZmlsZQorCitjb21taXQgY2Y4NzRhZDdiOWRhZjRmY2MwZDQ2Y2RkMDM0NDc0YjQ3ODAwNTM0MQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgRnJpIEFwciA2IDIxOjQ3OjI4IDIwMTIgKzAyMDAKKworICAgIFJlcGxhY2UgI2lmIChBKSBCICNlbHNlIEIgI2VuZGlmIHdpdGggQi4KKworY29tbWl0IGVmOWVhNjQxYmMyOTBlZWM1MDY4NWI2MDUxOWIzMWJlZThiMTRhNjkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDkgMjE6MDQ6MDYgMjAxMiArMDEwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNi4yLnByZTIKKworY29tbWl0IDM1YWJhMTk1OWRlMTE5ZjFmYjg5MjAzYzM3MTA5YWE2ZjBlMjFjNTcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDkgMjE6MDA6NDAgMjAxMiArMDEwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNi4yLnByZTIKKwogY29tbWl0IGU0MWZiYWZmMThhYzkwOTVjZjRhNzM5YTA2ZWMzOWExYTZjY2ZkYzEKIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgogRGF0ZTogICBNb24gQXByIDkgMjA6MzU6MzUgMjAxMiArMDEwMAogCiAgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjYuMi5wcmUyCiAKK2NvbW1pdCAxMzdmZTU4MmQ2Y2M1NjExNDMwZGFiNDZlZjE0NGVmZDg0Y2ZjODAzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgRnJpIEFwciA2IDIwOjQ2OjU2IDIwMTIgKzAxMDAKKworICAgIFJldmVydCBjb21taXQgMWY0YTgyOWIxODI3NWU0OTU2Y2E5MWU1ZWMzNzBkZjAxNWYwNjEzMworICAgIChzbm1wX3N0b3JlX25lZWRlZCgpIEFQSSBpcyBub3QgYXZhaWxhYmxlIGluIDUuWzQ1XS54KQorCitjb21taXQgMmI3ZTY0Mjg4YzAxYThhMDYyMDI2YzUyMWNhMzFhNWU4ODVmMzBjYworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgMiAxNjoxMjoxMiAyMDEyICswMTAwCisKKyAgICBGcmVlQlNELTk6IEZpeCBmb3IgJ2NvbnN0J2lmeWVkIG5saXN0IGFyZ3VtZW50cworICAgIEJhY2twb3J0IG9mIGVkNjVlY2E2ZTdmOWNmYTczODBhNzhkNTZjMDFlZDMxNDc0NWIxNjkgZnJvbSBWNS02LXBhdGNoZXMKKworY29tbWl0IDdlOTVkODBiNjk4MDUxMjU5NjQ1YzA3NGE1M2ZmZDI2NGE2ZmE5MTYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMTY6MDY6NTYgMjAxMiArMDEwMAorCisgICAgRnJlZUJTRC05OiBGaXggZm9yICdjb25zdCdpZnllZCBubGlzdCBhcmd1bWVudHMKKyAgICBCYWNrcG9ydCBvZiBlZDY1ZWNhNmU3ZjljZmE3MzgwYTc4ZDU2YzAxZWQzMTQ3NDViMTY5IGZyb20gVjUtNi1wYXRjaGVzCisKK2NvbW1pdCAxYTliN2I3YzAyZTJkZWVmZTk5NGQ1OTVhN2NjMWRkMmZmYmVlZTFkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDE1OjUxOjIwIDIwMTIgKzAxMDAKKworICAgIEZpeCBjb21waWxhdGlvbiBvbiBGcmVlQlNEIDkueCB3aXRoICdyZWNlbnQnIGhlYWRlciBzaHVmZmxpbmcKKyAgICBCYWNrcG9ydCBvZiBjNTNkOGMzNTI1ZjU5MGYyMjEzZDM1YjBkYTk0MTIzODYyZjNlMzY2IGZyb20gVjUtNS1wYXRjaGVzCisgICAgKFBhdGNoICMzMzYzMzA4IC0gb21pdHRpbmcgdHdlYWtzIHRvIGNvbmZpZ3VyZSkKKworY29tbWl0IDNkOWRkYjQxZTI2M2JjMWE3OGY5Zjk0NDBiOGQ0YWQ0Zjg2YzgyZTEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMTA6MzY6MTggMjAxMiArMDEwMAorCisgICAgRml4IHR5cG8KKyAgICBCYWNrcG9ydCBvZiA1YjcwMmIwMjRiNjAxNzZkN2Y1Njk5YjkyZTU1ZGE1MGE4ZGVhZTcxIGZyb20gVjUtNi1wYXRjaGVzCisKK2NvbW1pdCAwZDM1YzYwOTU2NGI2NmExZmZlODE1NTZkMzdhZGYwNTAzYzM4OWNlCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDEwOjE1OjA4IDIwMTIgKzAxMDAKKworICAgIFByb3ZpZGUgbWlzc2luZyBkZWZpbml0aW9uIG9mIE5FVFNOTVBfUFJJbworICAgICh1c2VkIGluIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3Nfc29sYXJpczIuYykKKwogY29tbWl0IGE3OTE0MWE0MTk5NTNkMDEwYTY5ODllOGI4OGY0ZGYxMjczOTRkMzgKIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgogRGF0ZTogICBNb24gQXByIDIgMDk6MTk6MjYgMjAxMiArMDEwMApAQCAtNDE5LDYgKzM5NjgsMjYgQEAKICAgICBIZWFkZXIgZmlkZGxpbmcgZm9yIEZyZWVCU0QsT3BlbkJTRCxEcmFnb25mbHkKICAgICBCYWNrcG9ydCBvZiBmN2IwZGUxNTE4MDAyYzZlOGY5Yjk0ZWYzZGViODg4MmUxZTkzMzhlIGZyb20gVjUtNy1wYXRjaGVzCiAKK2NvbW1pdCBhZGY3NGJmNzUzZDM5NzAzNTdhZmQ2MzM4MDMyNTYyNDFkOWM3Yjg3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDA4OjIwOjQ2IDIwMTIgKzAxMDAKKworICAgIEZpeCBJUHY2IFRDUCAmIFVEUCB0YWJsZXMsICpCU0Qgc3VwcG9ydCAoaW5jbHVkaW5nIE9wZW5CU0QpCisgICAgQmFja3BvcnQgb2YgY29tbWl0cyA1Y2QxNTczNjI1NDcxYzA1ODNlOTA4N2FlYzY4MDJiNzcxNTdkNWEyCisgICAgICBhbmQgNTBkNzNmMGQ1NmZlMjJjNTkwNTMwYjNlMzA1ZDQxZGNkYWMzY2UwMCBmcm9tIFY1LTYtcGF0Y2hlcworCitjb21taXQgZDk1NTVhY2I5ZjQ3YzNhYThmZGU0YmMyMGE0NGQ3Y2E2MTgxYThhOQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIE1hciAyNSAxODo0ODoxMiAyMDEyICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBBdm9pZCBkYW5nbGluZyBwb2ludGVycyAoYmFzZWQgb24gcGF0Y2ggMzUwMzI1OSkKKworY29tbWl0IDgyYThiNDdlZTk2ZTVkMjlhMmI3YWMzY2EwMDcyMmQ3MzdkNWI0NzkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXIgMjkgMjI6MzE6NTYgMjAxMiArMDIwMAorCisgICAgUnVubmluZyBhdXRvaGVhZGVyIC8gYXV0b2NvbmYKKwogY29tbWl0IDljYThkOTM5YWIzOTMzMDZhMWQwZjE0NmM5Y2I3MGVhMGNiMTlkNDkKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIFRodSBNYXIgMjkgMjI6MzA6MzggMjAxMiArMDIwMApAQCAtNDYxLDYgKzQwMzAsNDIgQEAKIAogICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMzQ4Nzg2NzogRG9uJ3Qgc2tpcCBtaXNzaW5nIGlmWFRhYmxlIGVudHJpZXMgKGlmQ29ubmVjdG9yUHJlc2VudCBGQUxTRSkKIAorY29tbWl0IDEyOTA2NTc4YWIzMGNmNzc2ZDA4MGMwZWYzMDI1YjMwMzM0ZDc2NTUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBNYXIgMjYgMTY6MTc6NDUgMjAxMiArMDIwMAorCisgICAgRElTTUFOLVBJTkctTUlCOiBGaXggZXZlbiBtb3JlIG1lbW9yeSBsZWFrcworCitjb21taXQgY2NmZDVjYTZmZTEwMzEzZDYxODFkMjRiYmIxNzk3ODI1YTk3ZGExMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE1hciAyNiAxNTo1MToxNiAyMDEyICswMjAwCisKKyAgICBESVNNQU4tUElORy1NSUI6IEVsaW1pbmF0ZSBkdXBsaWNhdGUgY29kZQorCitjb21taXQgOWZkYTI2Njg3MjJmMDhkZGJmZGQ2N2EyMjM5ZDhiMDIxZGI2NGE4MworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE1hciAyNiAxNTo0ODo0NiAyMDEyICswMjAwCisKKyAgICBESVNNQU4tUElORy1NSUI6IFdyaXRlIGEgbG9vcCBhcyBhIGxvb3AKKworY29tbWl0IGNiYzE4ZWI3NjNiYTZkZjY5ZWY3MDY2OGE1NGQ3NWJmMzVlNzk1MDMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBNYXIgMjYgMTU6MjQ6MDggMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogRml4IG1vcmUgbWVtb3J5IGxlYWtzCisKK2NvbW1pdCBjNzcyNTE5MjQ3OGFlYzAxOGZiNGFlZmE2MDk0NmUwNGE0MDZjMDBjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDI2IDEzOjQzOjI0IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IEF2b2lkIHJlYWRpbmcgZnJlZWQgbWVtb3J5IHdoZW4gZGVsZXRpbmcgYSByb3cgZnJvbSBhIHRhYmxlCisKK2NvbW1pdCBhNmJlNzM5NTY2ZjMxMGQ3NDQxZmQ3ZjU0OTg5ZTM5NDQ2ZjdhMTQzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDI2IDEzOjQyOjI4IDIwMTIgKzAyMDAKKworICAgIEV4dGVuZCBESVNNQU4tUElORy1NSUIgdGVzdAorCiBjb21taXQgOGE5YjU3MjkxNDUzY2I4YWVjMjhlNzY2YzU5NDcwMWVkMTljNGZjNgogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgTW9uIE1hciAyNiAyMTowMzo0MSAyMDEyICswMjAwCkBAIC01MDMsNiArNDEwOCw4NCBAQAogCiAgICAgUHJvcGVybHkgZmluZCBwYXNzIGhlbHBlcnMgZm9yIHRlc3RpbmcuCiAKK2NvbW1pdCBmZTI2YTNjNGYyOWYwNDZiZjY1ZWQ1MmU5ZDk0MDU0YjY3NWZiYzRiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgTWFyIDIyIDA5OjA0OjQyIDIwMTIgKzAxMDAKKworICAgIERJU01BTi1QSU5HLU1JQjogTGltaXQgc291cmNlIGNvZGUgbGluZXMgdG8gODAgY29sdW1ucworCitjb21taXQgNzQ1YmFmY2RjYzljOGU4NDYxNmQ0ZTI3NGRiMmEzODRiZjIzNGRhMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE1hciAyMiAwODo1NTowNSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBNYWtlIHBpbmcgaW1wbGVtZW50YXRpb24gaW5kZXBlbmRlbnQgb2YgbnRwZCBjbG9jayBqdW1wcworCitjb21taXQgZGE2OTI1ZTY3NjNjYWRiZTAyZjRhOGJiZmU2OGEzNjJlNTM1YWQ1ZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciAyMCAxMDozODozNiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBBZGQgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTU0ZGlzbWFucGluZ21pYl9zaW1wbGUKKworY29tbWl0IGZhNjA2ZGQ3Y2E2YWZmOTMwOGQ0ZThiMDFiYmNkZTE0OGY0NDEyNzEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTY6NDk6MjEgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogTWFrZSBwaW5naW5nIGxvY2FsIGludGVyZmFjZSBhZGRyZXNzZXMgd29yaworCitjb21taXQgNjE3YTgzYmE3OTk1NzVjODRjNjZmNmIxYzQ4MGVmNjMzMTYxYTY0YworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciAyMCAxNjoyODo0NiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBGaXggYSBzb2NrZXQgbGVhayB0cmlnZ2VyZWQgYnkgcGluZ2luZyBhIHJlbW90ZSBob3N0CisKK2NvbW1pdCA2MjVmNTVjMjcyZWM2MjgxZTM4ZDhlMzBlYjUzZmQ1MTUxNmIwMGFlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgTWFyIDIyIDA5OjU0OjU1IDIwMTIgKzAxMDAKKworICAgIERJU01BTi1QSU5HLU1JQjogQ29udmVydCBhIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCB2YXJpYWJsZSBpbnRvIGEgc3RhY2sgdmFyaWFibGUKKworY29tbWl0IGI0OGYxOWFkNGI0YWE2OGMzZTE2ZTJhNzJkZjM3YjljMGNkMzZjNGEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTY6MjQ6MDcgMjAxMiArMDEwMAorCisgICAgRElTTUFOLVBJTkctTUlCOiBBZGQgbW9yZSBkZWJ1Z2dpbmcgc3RhdGVtZW50cworCitjb21taXQgZDc0Y2IzOTY2MTc1ODkyNTYyZjVlM2E5YjE2ODNhY2JhMmMyMmUwNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciAyMCAxMTo0NToxOCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBGaXggc2V2ZXJhbCBtZW1vcnkgbGVha3MKKworY29tbWl0IDBiMWE3NzY3NDY3OGNjOWExNWJlM2U3NzAwZDNjZWY2NTBlZDAyYzcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTI6MDA6MzAgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogRG8gbm90IHNlbmQgdGhlIGNvbnRlbnRzIG9mIHRoZSBzdGFjayBvdmVyIHRoZSBuZXR3b3JrCisKK2NvbW1pdCAxMzkwMjNjZDNhYjUxNjMxY2MxMGUyODY2ZDcxYWJjZjk5YWU0YzFiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTWFyIDIxIDA4OjU2OjA3IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IERvbid0IGNhbGwgZXhpdCgpIHVwb24gbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZQorCitjb21taXQgMTY5YjZhYWE3YjYxODI3Y2MxYWQwYjNhZWVhZTNhNzIyOWRkMjVkOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE1hciAyMSAwODo1MzoyNiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBGaXggSVB2NiBzb2NrZXQgbGVhayBpbiBlcnJvciBwYXRocworCitjb21taXQgYTBiZTMyYWQwNTNhNzFmYTk2MTM0ZDU1ZTU0MmJiMDdkNGYwMjk3ZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciAyMCAxMTo0Mzo0NiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBBdm9pZCB0aGF0IGhvc3QgbmFtZSByZXNvbHV0aW9uIGZhaWx1cmUgY2F1c2VzIGEgY3Jhc2gKKworY29tbWl0IGJmOWJmZjY0NTU2Nzg3ZDc2NmVlMmVmMmQ1NzhhZmI5MjA3MTlmM2EKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBNYXIgMjEgMDg6NTE6NTUgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogQ29udmVydCBwcmludGYoKSBzdGF0ZW1lbnRzIGludG8gc25tcF9sb2coKSBhbmQgREVCVUdNU0coKS1zdGF0ZW1lbnRzLgorCiBjb21taXQgNWQ3NGMwMTI0NTUyM2E5ZDhkYjFlZGEyN2QxZWZhZTJlYmMxMDRmYgogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgV2VkIE1hciAyMSAxODo0MDowMiAyMDEyICswMTAwCkBAIC01NTksNiArNDI0MiwxOCBAQAogCiAgICAgQWxsb3cgZGlzdHJpYnV0aW9uIGFzIHBhcnQgb2Ygbm9ybWFsIE5ldC1TTk1QIHBhY2thZ2VzLgogCitjb21taXQgNTk5OWY2MGM1NzcyM2YyM2YzYzI1NGFmNTdmZGIxMGFmMzAxYThlYgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE1hciAxOCAxOTowMzowOCAyMDEyICswMTAwCisKKyAgICBSZWdlbmVyYXRlCisKK2NvbW1pdCAyNzVkMjA0MDM2YTYwN2UzZGY1MGU4NDQ3ZDRiYzc1NWU5ZGIwMmZkCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gQXVnIDI4IDIxOjI5OjAzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBNYWtlIGl0IHBvc3NpYmxlIHRvIHVzZSAtLWRpc2FibGUtYXBwbGljYXRpb25zLy0tZGlzYWJsZS1hZ2VudCB0b2dldGhlciB3aXRoIC0tZW5hYmxlLW1pbmltYWxpc3QKKwogY29tbWl0IGJkY2NjODc1NzEwMjk1YWFjZjUwZjcxZWIxYzFkMmVlOTdmMzM2ZmUKIEF1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CiBEYXRlOiAgIEZyaSBNYXIgMTYgMjA6MTA6NTggMjAxMiArMDEwMApAQCAtNTcxLDEyICs0MjY2LDM3IEBACiAKICAgICBDaGVjayB0aGF0IHRoZSBkYXRhIGV4aXN0IGJlZm9yZSB0cnlpbmcgdG8gcmVhZCBpdAogCitjb21taXQgZWZhZTg2YmJhNTk2MjQ5MWQ0MmI3N2I5MzUxOTFhM2ViMjVkZDkzOQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgV2VkIE1hciAxNCAwMTowNTozMyAyMDEyICswMTAwCisKKyAgICBQYXJ0aWFsbHkgcmV2ZXJ0ICJNZXJnZSByZW1vdGUgYnJhbmNoICdvcmlnaW4vVjUtNy1wYXRjaGVzJyBpbnRvIFY1LTctcGF0Y2hlcyIKKyAgICAKKyAgICBDb21taXQgZDM1YTE4NjAyMTdlNzIzZTRmODY2ZGQ5OGVmNjYyMTY2NTkzNGM0YSBhY2NpZGVudGFsbHkgcmV2ZXJ0ZWQKKyAgICAKKyAgICA0YTJlNWJjZDU2Y2QyYWZiMzZlYjE1ZDc1NGUyZmVlODg4ZGQ1MGMwIChocmhfc3RvcmFnZSBpcyBhIHByb3BlciByZXBsYWNlbWVudCBmb3IgaHJfc3RvcmFnZSkKKyAgICAwZGQxZTU0NTU3ZDFiYTQ5OGI1NWQwMTdiMGE5M2U4Y2NmOWJkNTIyIChDSEFOR0VTOiBzbm1wZDogVURQLU1JQjogUmVwb3J0IHRoZSBwcm9wZXIgYWRkcmVzcyBpbiB1ZHBMb2NhbEFkZHJlc3MpCisgICAgNTExNmQ0ODM3OGVjZjAzZTcyMmYzMDEwYWQ0N2JmMjJhM2ZiY2I4YyAoUmVkdWNlIHNjb3BlIG9mIHByZWZpeF92YWwgc3VjaCB0aGF0IHRoZSBjb21waWxlciBkb2Vzbid0IHdhcm4gYWJvdXQgYW4gdW5zZWQgdmFyaWFibGUpCisgICAgMTBmNTY2ZjRkNGNiYjNlMjA1MDIzYzIzNjY5Mjg5ZTRiZmQwODljYiAocGVybC9TTk1QL1NOTVAueHM6IEZpeCBhIGNvbXBpbGVyIHdhcm5pbmcpCisgICAgCisgICAgYW5kIHBhcnQgb2YKKyAgICAKKyAgICA2ZTc0ZDY0Zjg1YTU5ZDUwZTQ2MWRiNGMzNGFjNzZmOWRlNDY4YmZiIChBdm9pZCB1c2luZyBncmVwIG9wdGlvbnMgLXEgYW5kIC13IGJlY2F1c2UgZ3JlcCBpbiBTb2xhcmlzKQorICAgIAorICAgIFRoaXMgcmV2ZXJ0cyB0aG9zZSByZXZlcnRzLgorCiBjb21taXQgYWFlZGQ1OWNjMmRhNzAxNTI3ZGMyZDI2MWQ0ZTlmODVmMTZlNzUwNAogQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KIERhdGU6ICAgU3VuIE1hciAxMSAyMDo1NzozOCAyMDEyICswMTAwCiAKICAgICBBbGxvdyBtYWtlIHRlc3Qgd2hlcmUgdGhlIHNvdXJjZSBwYXRoIGNvbnRhaW5zIHRoZSBzdHJpbmcgTmV0LVNOTVAgdG8gc3VjY2VlZC4KIAorY29tbWl0IDRiOTRkNzk2OTE4YTRlZWFlNjhhYjIxYWE1M2Q0NDRhOGI1YzI5MjEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBNYXIgOSAwODowNDo1OSAyMDEyICswMTAwCisKKyAgICBVbmJyZWFrIGNvbXBpbGF0aW9uIG9uIEZyZWVCU0QgNAorCiBjb21taXQgMTBmZTZiODMzMjRhZDM3ZDE4YjkzN2NjOGM2ZGU5NGRlNTM0ZDAzNQogQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CiBEYXRlOiAgIFRodSBNYXIgOCAxMzowNDowNyAyMDEyICswMDAwCkBAIC01OTUsNiArNDMxNSwxNCBAQAogCiAgICAgbWFrZSBkZXBlbmQgZm9yIDUuNi4yLnByZTEKIAorY29tbWl0IDBlZjM0ZTY1MTlkZmNiODJjOTdkZjg0Mjc1NDdjMDhkY2Y4MWU2OWEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWFyIDggMTA6MTE6MzAgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEZpeGVkIHNubXBkICctZCcgb3B0aW9uLgorICAgIAorICAgIE5vdyBpdCBkdW1wcyBwYWNrZXRzIGFnYWluLgorCiBjb21taXQgOGU2OTc0MmYxNDNlNGZjMTExOTZlNWIyZWQ2NmM4ZjdmNTNmZDAyZgogQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CiBEYXRlOiAgIFR1ZSBNYXIgNiAwOToyNDoyMSAyMDEyICswMDAwCkBAIC02NDcsNiArNDM3NSwxMiBAQAogICAgIAogICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5NjUzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAogCitjb21taXQgZTQxZjExNWU0MDMwNGM5NDFiYTE3ZDY3ZTI0NzEwNzIyZDkwNzQxYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE1hciA1IDEzOjM5OjE3IDIwMTIgKzAxMDAKKworICAgIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IEF2b2lkIHVzaW5nIGdyZXAgb3B0aW9ucyAtdyBhbmQgLXEgYmVjYXVzZSBncmVwIGluIFNvbGFyaXMnIGRlZmF1bHQgcGF0aCBkb2Vzbid0IHVuZGVyc3RhbmQgdGhlc2UuCisKIGNvbW1pdCA1MTE2ZDQ4Mzc4ZWNmMDNlNzIyZjMwMTBhZDQ3YmYyMmEzZmJjYjhjCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgogRGF0ZTogICBNb24gTWFyIDUgMTA6NDc6MjAgMjAxMiArMDEwMApAQCAtNjY1LDYgKzQzOTksMzAgQEAKIAogICAgIHBlcmwvU05NUC9TTk1QLnhzOiBGaXggYSBjb21waWxlciB3YXJuaW5nCiAKK2NvbW1pdCA0NGFhMjY1ODkxY2Q1NjNmN2Y0MTE0ZWYyNWRjZjdhYWYzYjE0ZTlhCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1hciA1IDA5OjA2OjUyIDIwMTIgKzAwMDAKKworICAgIE1hcmsgdGhlIGNoYW5nZXMgbWFrZSBhcyBwYXJ0IG9mIHRoZSByZWxlYXNlIHByb2Nlc3MgYXMgc3BlY2lmaWMgdG8KKyAgICB0aGUgcGFydGljdWxhciBicmFuY2ggYmVpbmcgcmVsZWFzZWQuICBWZXJzaW9uIHRhZ3MsIGNoYW5nZWxvZyBlbnRyaWVzCisgICAgYW5kIHRoZSBsaWtlIHNob3VsZG4ndCBwcm9wYWdhdGUgdG8gbGF0ZXIgYnJhbmNoZXMuCisKK2NvbW1pdCBkYWU0ZTE2YmU4NjExNzg2MWY2M2QxYTJmOTgxYWQzNjE0MThmNWM2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1hciA1IDA5OjA2OjUyIDIwMTIgKzAwMDAKKworICAgIE1hcmsgdGhlIGNoYW5nZXMgbWFrZSBhcyBwYXJ0IG9mIHRoZSByZWxlYXNlIHByb2Nlc3MgYXMgc3BlY2lmaWMgdG8KKyAgICB0aGUgcGFydGljdWxhciBicmFuY2ggYmVpbmcgcmVsZWFzZWQuICBWZXJzaW9uIHRhZ3MsIGNoYW5nZWxvZyBlbnRyaWVzCisgICAgYW5kIHRoZSBsaWtlIHNob3VsZG4ndCBwcm9wYWdhdGUgdG8gbGF0ZXIgYnJhbmNoZXMuCisKK2NvbW1pdCAyOGY2MjI2ZjJlMjI4YjhjYTI0ODQ4OTczNWY4NjUwMmIyY2NlMGExCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1hciA1IDA5OjA2OjUyIDIwMTIgKzAwMDAKKworICAgIE1hcmsgdGhlIGNoYW5nZXMgbWFrZSBhcyBwYXJ0IG9mIHRoZSByZWxlYXNlIHByb2Nlc3MgYXMgc3BlY2lmaWMgdG8KKyAgICB0aGUgcGFydGljdWxhciBicmFuY2ggYmVpbmcgcmVsZWFzZWQuICBWZXJzaW9uIHRhZ3MsIGNoYW5nZWxvZyBlbnRyaWVzCisgICAgYW5kIHRoZSBsaWtlIHNob3VsZG4ndCBwcm9wYWdhdGUgdG8gbGF0ZXIgYnJhbmNoZXMuCisKIGNvbW1pdCA0MDAyMmE2OTc5NTgyNTljY2ZiYjNmZWQ0NGViM2M0NzJmNWU4MzdlCiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBTdW4gTWFyIDQgMTA6Mzc6NDEgMjAxMiArMDEwMApAQCAtNjk1LDYgKzQ0NTMsMTIgQEAKIAogICAgIHBhc3NwZXJzaXN0IHRlc3QgbmVlZHMgL3Vzci9iaW4vcGVybAogCitjb21taXQgODcyNjk5NWM3YThhZWY2NzRjNGYxNjRiMTg3MWMzN2JiZGNkYWQ1MAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1hciAyIDIxOjM2OjU4IDIwMTIgKzAxMDAKKworICAgIGdyZXAgLXcgZmFpbHMgd2l0aCBPcGVuQlNEIGFuZCBTb2xhcmlzIDEwLTY0CisKIGNvbW1pdCAxZWI0NzQ1YjIzY2MzYTgzOTg2NGU3ZjZlYTI4MzU1YjA1NjZlYjY3CiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBGcmkgTWFyIDIgMjE6MzU6NDkgMjAxMiArMDEwMApAQCAtNzA3LDYgKzQ0NzEsMTggQEAKIAogICAgIE1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSBwcm9wZXIgc3JjZGlyIGZvciBvdXQtb2Ytc291cmNlIGJ1aWxkcwogCitjb21taXQgNzgzNjkwMDJiZTI3MTFmMGFhODc2YjY0YTRlMTBiMDkwY2MyNDFjZAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1hciAyIDIxOjMzOjMxIDIwMTIgKzAxMDAKKworICAgIE5vdCBhbGwgbWFrZSB2ZXJzaW9ucyBkZWZpbmUgJChSTSkKKworY29tbWl0IDk0MjQ1YjI5YTNjZGE4OTQ3NWM2ZWFiNWQ5NDkzYzY2NTdmZjM4ZTMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXIgMiAyMToyNDoyNCAyMDEyICswMTAwCisKKyAgICBNYWtlIGF1dG9jb25mIDIuNjggaGFwcHkKKwogY29tbWl0IDQ0YWNkNmMyODVmYjU2MTRiNGM5NjExYjFhYmRlY2E5ZGQyOGU0YmIKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIEZyaSBNYXIgMiAyMToxMjo0NyAyMDEyICswMTAwCkBAIC03NDksNiArNDUyNSwxMiBAQAogCiAgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNS4yLnByZTEKIAorY29tbWl0IDJlNzRhY2I2ZjE5ZTQ3MjljZWRlMGFiNDNlOTMxOTYxY2IyM2FhZWEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFRodSBNYXIgMSAwOToxODozOSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBCdWcgMzE1Mjg0MTogRG8gbm90IGluc3RhbGwgdGhlIHV0aWxfZnVuY3Mgc3ViaGVhZGVycyB0aGF0IHdlcmUgcmVtb3ZlZCBpbiA1LjcKKwogY29tbWl0IGI3MTA5NjQ2Yjk1YTcwNzEzZDFhZDk5MWQ0MWJjY2Q1N2MwYmIzZWIKIEF1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CiBEYXRlOiAgIFRodSBNYXIgMSAwODo0ODo0OCAyMDEyICswMTAwCkBAIC04MDMsNiArNDU4NSwxOCBAQAogCiAgICAgQ0hBTkdFUzogc25tcGQ6IEJVR1M6IDM0NjAzNjQ6IEZpeCB1c2Ugb2YgYmxvY2sgZmFjdG9yIHdoZW4gZGV0ZWN0aW5nIGVycm9yIGNvbmRpdGlvbnMKIAorY29tbWl0IDAzNGYxYzU3MmY2ODNlYTQyODU4MzA3NDQ3MWU1ZDVkMTNiNTE4MzcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRmViIDI4IDEwOjIyOjIwIDIwMTIgKzAwMDAKKworICAgIFNraXAgU0VULWJhc2VkIHRlc3RzIHdoZW4gY29uZmlndXJlZCB1c2luZyAtLWVuYWJsZS1yZWFkLW9ubHkKKworY29tbWl0IDM2NDIzZTIxMGJmYjY1ZWYxMjFjNmE2NmFlYzQzOGM3YzIzN2QzZGYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRmViIDI4IDEwOjAzOjI1IDIwMTIgKzAwMDAKKworICAgIENIQU5HRVM6IEJVRzogMzQ1NDE2ODogY29uZmlndXJlOiBGaXggYnVpbGRpbmcgd2l0aCAtLWVuYWJsZS1yZWFkLW9ubHkKKwogY29tbWl0IGVlZDBiY2JjNDNmZWExODI1OWYwZjYzYjIwODFiNmQxMDUzNWEwNTIKIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgogRGF0ZTogICBUdWUgRmViIDI4IDA5OjI3OjExIDIwMTIgKzAwMDAKQEAgLTgxMCw2ICs0NjA0LDE4IEBACiAgICAgU2tpcCBTRVQtYmFzZWQgYmFieS1zdGVwcyB3aGVuIGNvbXBpbGVkIHdpdGggLS1kaXNhYmxlLXNldC1zdXBwb3J0LgogICAgIEluc3BpcmVkIGJ5IGJ1ZyAjMzQ1NDE2OAogCitjb21taXQgZWM2YTIzMDMwZTVhMjA3MmMxOWMxOGMxZDljMTI0Mzg3ZGE1NmI3YgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiAyNyAxODo0Mjo1OCAyMDEyICswMDAwCisKKyAgICBBZGQgLWxydCB0byBORVRTTk1QTElCUyBzdWNoIHRoYXQgY2xvY2tfZ2V0dGltZSgpIGNhbiBiZSBmb3VuZAorCitjb21taXQgZjEzMzIwNTAwMjk0YmIyNDBmNjNjNmRkN2QyZTlhMjIwOGViNzQwZAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBGZWIgMjcgMTY6NTI6NTEgMjAxMiArMDAwMAorCisgICAgU2tpcCBTRVQtYmFzZWQgdGVzdHMgd2hlbiBjb21waWxlZCB1c2luZyAtLWRpc2FibGUtc2V0LXN1cHBvcnQKKwogY29tbWl0IGM0Mjc2YjYyMzJjMjkxNDVjMDM5ODg0ZTZiNWE2YjZkYTRiOTM4MzcKIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgogRGF0ZTogICBNb24gRmViIDI3IDE1OjU0OjQ1IDIwMTIgKzAwMDAKQEAgLTgyMyw2ICs0NjI5LDEyIEBACiAgICAgT21pdCBTRVQtcmVsYXRlZCBjb2RlIHdoZW4gY29tcGlsaW5nIHdpdGggLS1kaXNhYmxlLXNldC1zdXBwb3J0CiAgICAgKGluc3BpcmVkIGJ5IHBhdGNoICMzNDI0OTMwKQogCitjb21taXQgOTQ4NGQ4MzIwM2M0ZTJkODIwNDE2YmU2NjVmYTgzM2FhNzA0NDRkMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEZlYiAyNCAxNDowMDozMiAyMDEyICswMTAwCisKKyAgICBSZXdvcmsgY29tbWl0IGI0YTE5NTA1YTA1ODE2ZTk0ZTAxZGU5N2JmOTlhYzM3ZmNkYzZkMjMuCisKIGNvbW1pdCAyYjdmMTM0OTUyMjg2MzVkODE2ZTU4YjIxNzRkYzEyNGRkMGNmMzlmCiBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBGcmkgRmViIDI0IDA3OjQzOjIyIDIwMTIgLTA4MDAKQEAgLTg0MSw2ICs0NjUzLDI0IEBACiAKICAgICBSZW1vdmUgb2Jzb2xldGUgc3ltYm9sIE5FVFNOTVBfRVhJVF9PTl9CQURfS0xSRUFECiAKK2NvbW1pdCBjMzZhYjcxYTRlMDk2ZjE2Y2M1YTU1NTMzZjA4MGM5YTk0MDA5OTE0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIzIDA4OjUzOjU2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IEZyZWVCU0Q6IHNubXBkICsgYXBwczogU2VuZGluZyBVRFAgcGFja2V0cyB3b3JrcyBhZ2FpbiBmb3Igbm9uLXJvb3QgdXNlcnMKKworY29tbWl0IGVkZWJkZGJhOTMwZjhiMTQ3MmZhMGJkMjBmYzQxM2VmOGNmNDY0YTIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBGZWIgMjEgMTE6MzE6NDYgMjAxMiArMDEwMAorCisgICAgdGVzdGluZy9SVU5URVNUUzogRml4IGEgYmFzaGlzbQorCitjb21taXQgYjRhMTk1MDVhMDU4MTZlOTRlMDFkZTk3YmY5OWFjMzdmY2RjNmQyMworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiAyMCAxNjo1ODo0NyAyMDEyICswMTAwCisKKyAgICBGaXggY29tcGlsZXIgd2FybmluZ3MgYWJvdXQgJWxkIHZlcnN1cyB0aW1lX3Qgb24gc3lzdGVtcyB3aGVyZSB0aW1lX3QgaXMgYSBzeW5vbnltIGZvciBsb25nIGxvbmcgaW5zdGVhZCBvZiBsb25nLgorCiBjb21taXQgZDg5NzhlY2M4MjExYmU3YzFlNzkwNWYxZTIxNWJiMDZkZWQyNjZiNgogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KIERhdGU6ICAgVHVlIEZlYiAyMSAxMjozMjoyNSAyMDEyICswMTAwCkBAIC04NTksNiArNDY4OSwyMiBAQAogCiAgICAgRml4IGEgY29tcGlsZXIgd2FybmluZyBvbiBzeXN0ZW1zIHdoZXJlIG1vZGVfdCBpcyB1bnNpZ25lZAogCitjb21taXQgZjhhM2VmMGQzZDRlNTMwMjc5OTAwMTAxMDQ5YjhkZTk4YTQ0YTZmYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDE0OjQ4OjUyIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWIgKyBzbm1wZCArIHNubXB3YWxrOiBBdm9pZCB0aGF0IHN5c3RlbSBjbG9jayBjaGFuZ2VzIChlLmcuIGJ5IG50cGQpIGFmZmVjdCBjb2RlIHRoYXQgbmVlZHMgcmVsYXRpdmUgdGltZQorICAgIENIQU5HRVM6IHNubXBkOiBNYWtlIHN1cmUgdGhhdCB0aGUgcmFuZ2Ugb2YgdGhlIFNOTVB2MyB2YXJpYWJsZSBzbm1wRW5naW5lVGltZSBpcyAwLi4yMTQ3NDgzNjQ3IG9uIGFsbCBzdXBwb3J0ZWQgc3lzdGVtcyBpbnN0ZWFkIG9mIDAuLjQyOTQ5NjcyIG9uIHNvbWUgc3lzdGVtcyAoaS5lLiB3cmFwYXJvdW5kIGFmdGVyIDQ5NyBkYXlzKQorICAgIENIQU5HRVM6IHNubXBsaWI6IEFkZCBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soKSwgbmV0c25tcF9zZXRfbW9ub3RvbmljX21hcmtlcigpLCBuZXRzbm1wX3JlYWR5X21vbm90b25pYygpLCBuZXRzbm1wX2dldF9hZ2VudF9ydW50aW1lKCkKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBEZXByZWNhdGUgYXRpbWVfZGlmZigpLCBhdGltZV9uZXdNYXJrZXIoKSwgYXRpbWVfcmVhZHkoKSwgYXRpbWVfc2V0TWFya2VyKCksIG1hcmtlcl90dGlja3MoKSwgbmV0c25tcF9tYXJrZXJfdXB0aW1lKCksIG5ldHNubXBfdGltZXZhbF91cHRpbWUoKSwgdGltZXZhbF90dGlja3MoKSwgdWF0aW1lX2RpZmYoKSwgdWF0aW1lX2hkaWZmKCkgYW5kIHVhdGltZV9yZWFkeSgpLgorICAgIENIQU5HRVM6IHNubXBsaWI6IENoYW5nZSB0aGUgbmFtZXMgb2YgdGhlIHN0cnVjdCB0aW1ldmFsIG1lbWJlcnMgb2YgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgd2VyZSB1c2VkIHRvIHN0b3JlIGEgd2FsbCBjbG9jayB0aW1lIGJ1dCB0aGF0IGRvIG5vdyBjb250YWluIGEgbW9ub3RvbmljIGNsb2NrIHZhbHVlCisKK2NvbW1pdCBjMTk3NjBmMzMzM2M5MmZhYzVkNTBlOTc2OGNkZjkzOTIxOGJjNDg3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgRmViIDE1IDA5OjQ1OjAzIDIwMTIgKzAxMDAKKworICAgIHNubXBsaWIvc25tcHYzLmM6IEZpeCBzb3VyY2UgY29kZSBpbmRlbnRhdGlvbgorCiBjb21taXQgYTZkYjIzOTk0NWUxOTVkZTVhOTBmYTE4MzcwMGIyN2E2ZWNiMjhkMwogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgVHVlIEZlYiA3IDAwOjExOjE0IDIwMTIgKzAxMDAKQEAgLTg4OSw2ICs0NzM1LDE4IEBACiAKICAgICBDSEFOR0VTOiBhZGRlZCBPQ0ZTMiAoT3JhY2xlIENsdXN0ZXIgRlMpIHRvIGhyU3RvcmFnZVRhYmxlIGFuZCBockZTVGFibGUKIAorY29tbWl0IGZhZmM5OWNkODllNzNlYzdlMDBiZjczNjBkMGI0ZmE2MTk0NGE0ZjQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxMToxODozNCAyMDEyICswMTAwCisKKyAgICBTaW1wbGlmeSBjYWxjdWxhdGVfdGltZV9kaWZmKCkgYW5kIGNhbGN1bGF0ZV9zZWN0aW1lX2RpZmYoKQorCitjb21taXQgN2FmMjAxM2RlOGJmMWIzNzljMDc2ZGI0ZTEwNDUwOGUxNzg3NGQzZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDE0OjU1OjU4IDIwMTIgKzAxMDAKKworICAgIEZpeCBvcmRlciBvZiBmZWF0dXJlICNpZm5kZWYgYW5kIERveHlnZW4gY29tbWVudCBibG9jaworCiBjb21taXQgYmJkNjdmNjM1MzBmNWVmMGJmYzk0OGZjNThkZmU2YTkzZjhmODY3OQogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KIERhdGU6ICAgTW9uIEZlYiA2IDE1OjI1OjMwIDIwMTIgKzAxMDAKQEAgLTEwNjEsNiArNDkxOSwzMCBAQAogCiAgICAgRml4ZWQgZXJyb3IgaGFuZGxpbmcgaW4gaW5pdF9pY21wKCkuCiAKK2NvbW1pdCBjMzAzNTQ5YTU5ZmE4YzJmMjBhOWQ4YmYxZTk4NWZiYzhhYmRlNmE4CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNTo0NjoyOSAyMDEyICswMTAwCisKKyAgICBSZXdvcmtlZCBfcmVnaXN0ZXJfZXh0ZW5kKCkgZXJyb3IgaGFuZGxpbmcuCisKK2NvbW1pdCA5YzIwZTI3YTcwMjZmYzAzMGRhM2IzMjhiOWEyZTFiNGYzNjY3MGNkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNToyMToyOCAyMDEyICswMTAwCisKKyAgICBEb24ndCB0b3VjaCByZWdpbmZvIHdoZW4gcmVnaXN0cmF0aW9uIGZhaWxzIC0gaXQgaGFzIGJlZW4gYWxyZWFkeSBmcmVlZC4KKworY29tbWl0IDIyZmQwYmZjMmRmMGUxZjYwMjBkYzNjNTBhNzUzZGRmMjhhNDU5OWMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjIwOjIyIDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgNWQ2MWU1N2JhZjU4MGM3ODI1MmMwYWJiMDA5OGMwN2JiMDVhZjE3YworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6MTc6MDUgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKIGNvbW1pdCAzYzNlZWFlODBkNzk2ZjI3NTk3YzkwMWU3ZmYyMDQ2Yzc2OWVmNGI4CiBBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgRnJpIEphbiAyMCAxNTowODowOSAyMDEyICswMTAwCkBAIC0xMjgxLDYgKzUxNjMsMTIgQEAKIAogICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KIAorY29tbWl0IDU5ODg0YmI0ZDM1YWQxMzc0N2ZmYTY3MjM0MzZkY2E1ODdhOWFiNzcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE3OjA5OjEyIDIwMTIgKzAxMDAKKworICAgIEluIGFib3ZlIGNvZGUsIG9sZW5ndGggaXMgY2hlY2tlZCwgc28gbGV0J3MgY2hlY2sgaXQgYWxzbyBoZXJlLgorCiBjb21taXQgYmE1ZDUyOTJiMDQzOTNiMGM3ZDdkN2VkOTYxMjQxOTI5NDE4YzZlNAogQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIFR1ZSBKYW4gMTcgMTc6MDU6MTQgMjAxMiArMDEwMApAQCAtMTc5OCw2ICs1Njg2LDEyIEBACiAKICAgICBDSEFOR0VTOiBCVUc6IDM0NDA3NTI6IElGLU1JQjogUmVwb3J0IGludGVyZmFjZSBzcGVlZCBjb3JyZWN0bHkgZm9yIEV0aGVybmV0IGludGVyZmFjZXMgaWYgb3RoZXIgdGhhbiAxMCBNYnBzLCAxMDAgTWJwcywgMSBHYnBzLCAyLjUgR2JwcyBvciAxMCBHYnBzLiBBZGQgc3VwcG9ydCBmb3IgTklDcyBmYXN0ZXIgdGhhbiA2NSBHYnBzLgogCitjb21taXQgYzA5OTAzYTQyZTlkOTczMzFmZDllNDhlZTgzMWE4NWFmZGY5YzcwYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEphbiA5IDEzOjI2OjE3IDIwMTIgKzAxMDAKKworICAgIERveHlnZW4tc3R5bGUgZG9jdW1lbnRhdGlvbiBmaXhlcworCiBjb21taXQgZTMyNWVjYmZjZTc3ZjAwYWM1Y2Y2ZmJkOTU3Zjk1NDk1ZjYxYzU5YgogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KIERhdGU6ICAgTW9uIEphbiA5IDEzOjI1OjEwIDIwMTIgKzAxMDAKQEAgLTE4MjIsNiArNTcxNiwxMiBAQAogCiAgICAgQ0hBTkdFUzogc25tcGQ6IElGLU1JQjo6aWZUeXBlOiBSZXBvcnQgdHlwZSAiaW5maW5pYmFuZCAoMTk5KSIgZm9yIEluZmluaUJhbmQgaW50ZXJmYWNlcyBpbnN0ZWFkIG9mIHR5cGUgIm90aGVyICgxKSIuCiAKK2NvbW1pdCAyNjk5MzJmYTMyYzdjZDQ3OTU3NDg5Njk4ZTA5YmVlMzFmNjNiN2FmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTQ6MzQ6NDIgMjAxMiArMDEwMAorCisgICAgRml4IGFuIE1TVkMgY29tcGlsZXIgd2FybmluZworCiBjb21taXQgMGQxYzIxZjk5OTFkMTMwOWQwNTdlM2U0MDU2ZDU0N2RmN2Q0MGVjZgogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KIERhdGU6ICAgRnJpIEphbiA2IDE2OjA2OjMxIDIwMTIgKzAxMDAKQEAgLTIwMjcsNiArNTkyNywxMiBAQAogCiAgICAgRml4ZWQgYSB0eXBvCiAKK2NvbW1pdCBiZWU0ZDc5Y2Y0ZWI3ZTBhNDUzOTdmNTliNTI5OGRhNjMzYThlMWJhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDEzOjE0OjU3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIHJlYWRpbmcgcGFzdCBlbmQgb2YgYnVmZmVyLgorCiBjb21taXQgM2RjMGUwMGEyZmQ4ZTM0ZmUxYWUzM2VjYWJmMzZlMTQ2NDYwYTMxZgogQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIFdlZCBKYW4gNCAxMjo0MDowNyAyMDEyICswMTAwCkBAIC0yMDc3LDYgKzU5ODMsMTIgQEAKICAgICAKICAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxNzU3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKIAorY29tbWl0IGIxZWFhZjMwMjM2OWZkNDU1MmU4ZmVlN2I2YTgwNTA5MWVjMGE5YjQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDQgMTE6Mzg6NTEgMjAxMiArMDEwMAorCisgICAgQWRkZWQgY2hlY2sgb2YgZmluZF9zZWNfbW9kKCkgcmV0dXJuIHZhbHVlLgorCiBjb21taXQgYWVlNGU4OTVmZTNiZDVmNGE2MWUzNDI3NWJmY2EwMzY4YjU2MDU1NQogQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIFdlZCBKYW4gNCAxMTozMToyMiAyMDEyICswMTAwCkBAIC0yMTUwLDYgKzYwNjIsMTIgQEAKIAogICAgIENoZWNrIG9wZW4oKSByZXN1bHQuCiAKK2NvbW1pdCA2NjY1ZDVmZTJmYzU2OWQ2ZmE4NTRkMWQ3OGUzNDdiYmFjNjllMDcwCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE0OjIyOjIyIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIG1pc3NpbmcgYnJlYWsuCisKIGNvbW1pdCBhNjY0OGM1NDUzZTFlZjhkYWM1N2EzOGVmY2MwMGNjZTUzYmY5ZTRmCiBBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgVHVlIEphbiAzIDE0OjIwOjI3IDIwMTIgKzAxMDAKQEAgLTIzNDksNiArNjI2NywxMiBAQAogICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAzNDQ3NjcxOiBGaXggb3ZlcnJpZGUgaGFuZGxpbmcgb2YgT0lEIHZhbHVlcwogICAgIFBhdGNoIHN1cHBsaWVkIGJ5IFBoaWxsaXAgTydEb25uZWxsCiAKK2NvbW1pdCBiYTRhOWNlNTFjOTYwMGY5ZmRhMTY4ZjFlNmVmZjMyYTFkYjYzY2I5CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAxMzoyNDoyNiAyMDExICswMDAwCisKKyAgICBUd2VhayAtLWRpc2FibGUtc25tcC1zZXQgY2hhbmdlcworCiBjb21taXQgODI3YzhiMjg4MzAxNzFmYWE5YzYxZDUzZWZjYTllYjY2MDA1NjFjMgogQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CiBEYXRlOiAgIFR1ZSBEZWMgMjcgMTE6MjU6NDMgMjAxMSArMDAwMApAQCAtMjM2MSw2ICs2Mjg1LDEyIEBACiAKICAgICBTa2lwIFNFVC1iYXNlZCB0ZXN0cyB3aGVuIGNvbmZpZ3VyZWQgd2l0aCAtLWRpc2FibGUtc2V0LXN1cHBvcnQKIAorY29tbWl0IDIzMGRmMTRmOTRjMzczNmZmMzQzNzlhNGUyODFlZWEzNTNiNDdmODAKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIE1vbiBEZWMgMjYgMjM6MzQ6MjMgMjAxMSArMDEwMAorCisgICAgRG8gbm90IGFzc2lnbiB0bVN0YXRlUmVmIHR3aWNlCisKIGNvbW1pdCBjOTZiM2I0ZDg1MzBhZDVlMGVmYjAzZjI0ZGFiNWU1ZjFhNDYwMDMxCiBBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgogRGF0ZTogICBTdW4gRGVjIDI1IDExOjE4OjIxIDIwMTEgKzAxMDAKQEAgLTI0OTEsNiArNjQyMSwxMiBAQAogCiAgICAgRml4ZWQgcmV0dXJuaW5nIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgJ3N0YXR1cycgd2hlbiBzcyA9PSBOVUxMCiAKK2NvbW1pdCA3MzA0YzUzY2Y4YWRlZThlY2NlZjFhOGYyNjc1NmZjMDdmMDk4NzIxCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDE4IDIzOjMxOjUzIDIwMTEgKzAxMDAKKworICAgIE9uIHNvbGFyaXMgMTAgdGVzdCBpbiAvYmluL3NoIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgLWUgdGVzdC4gUmVwbGFjZSBpdCB3aXRoIC1mCisKIGNvbW1pdCA4Y2QzYmU2MGQ2OTNjOWMzNmZmYjk3ZDNkOWJjYjQ5YzFiNGFiZTM1CiBBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgogRGF0ZTogICBTYXQgRGVjIDE3IDA4OjUyOjI0IDIwMTEgKzAxMDAKQEAgLTI1ODgsNiArNjUyNCwxMiBAQAogCiAgICAgRml4IHJlY2VudGx5IGludHJvZHVjZWQgY29tcGlsZXIgd2FybmluZ3MKIAorY29tbWl0IGI3ZTUwZDVmOWE2NzU1OTgyZDJhZjMxOTE0NzNjYjM0NjQzYmMwM2YKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgOCAwODozNzoyMiAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBSZWR1Y2Ugb3ZlcmhlYWQgb2YgY29uZmlnIGZpbGUgcGFyc2luZworCiBjb21taXQgNzNjOWVlNDJkMjhhZmUyZTEwN2E3ZDY2MTZiNmQwMTE4OTBjMzZlYQogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KIERhdGU6ICAgVGh1IERlYyA4IDA5OjA5OjU5IDIwMTEgKzAxMDAKQEAgLTI2MTMsNiArNjU1NSwyNCBAQAogICAgIHRpbWUgdGhlIDUuNiBicmFuY2ggd2FzIGNyZWF0ZWQgKHNlZSBhbHNvIGNvbW1pdAogICAgIDBlYzA4OGFmYTI3Y2ZkYTRlNmVhNzhhYWU3Y2ZjNTUwNzU2NGVkZGUpLgogCitjb21taXQgZDQ5NGRiNjRjMjA4YjRkYzYyODEzMTMyZjg4NjNiZDVjMWEzOWQ3NworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyAxIDEwOjM4OjE3IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXB0cmFwZDogRWxpbWluYXRlIGFuIHVudXNlZCB2YXJpYWJsZSAoTm93KQorCitjb21taXQgMjhmMjU2MWJjMjkzNWQ4ZTFjYmY0NmQyODIwMTU4MTczZTdhNGNmNAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyAxIDEwOjM3OjExIDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXB0cmFwZDogTW92ZSB0aGUgbWFpbiBsb29wIGNvZGUgaW50byBhIG5ldyBmdW5jdGlvbgorCitjb21taXQgMzk2ZTEyMmRkYzQyYTkxNmYwNmEwMjg4NGMwZThhMjU4ZWRiZTIzOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyAxIDA5OjMyOjE2IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBNYXRjaCBlYWNoIGdldHB3bmFtKCkvZ2V0cHd1aWQoKSBjYWxsIHdpdGggYW4gZW5kcHdlbnQoKSBjYWxsIGFuZCBlYWNoIGdldGdyZW50KCkgY2FsbCB3aXRoIGFuIGVuZGdyZW50KCkgY2FsbC4KKwogY29tbWl0IDNlZmVmYmMwMDI0Mzk5Nzg2ZjhiNjhiMWU5M2IwYThmZGRkZGM3ZGEKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CiBEYXRlOiAgIFRodSBEZWMgMSAxMDo0MTowMSAyMDExICswMTAwCkBAIC0yNzIwLDYgKzY2ODAsMjQgQEAKIAogICAgIENIQU5HRVM6IEZyZWVCU0Q6IFJlc3RvcmUgSVBfUkVDVkRTVEFERFIgZnVuY3Rpb25hbGl0eS4KIAorY29tbWl0IDdmNDdmNTJlNDgxYmFhOWFhZmI1Nzg0MjQ0YjBkZDI2NTNlN2RjZmYKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIE1vbiBOb3YgMjggMDg6NTE6MzkgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogVXNlIFNOTVBfQUxMT0NfVFlQRURFRiB0byBhbGxvY2F0ZSB0cmFuc3BvcnRzIGluIG9yZGVyIHRvIGF2b2lkIHRoZSBzZXBhcmF0ZSBjYWxsIHRvIG1lbXNldC4KKworY29tbWl0IGNmODYwMzllMzA4NjIyNWMzMDg1YmI5YWRmMDg4YjhiYTViYTY5NzkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBOb3YgMjIgMTU6MDI6NTggMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogTWluR1c6IHRlc3Rpbmc6IE1ha2UgdW5pdC10ZXN0cy9UMTAycGR1X2J1aWxkX2NsaWIgcGFzcy4KKworY29tbWl0IDFhODdlNzZlMDBlZTNkNWNkMzdhMDdiZmMzZDg0NDkwZDNjMmE0ZWMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBOb3YgMjIgMTQ6NTU6NDIgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogTWluR1c6IHRlc3Rpbmc6IE1ha2UgdW5pdC10ZXN0cy9UMDE0Z2V0aG9zdGJ5YWRkcl9jbGliIHBhc3MKKwogY29tbWl0IDg4NjdmZDFkY2ZlNzJiNTlkMDczMjJmZjM4YTY5OWI2NmVjNGYzMjYKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CiBEYXRlOiAgIFR1ZSBOb3YgMjIgMDk6NDQ6MzggMjAxMSArMDEwMApAQCAtMjczMSw2ICs2NzA5LDEyIEBACiAgICAgQ0hBTkdFUzogc25tcGxpYjogTWFrZSBuZXRzbm1wX2xhcmdlX2ZkX2lzX3NldCgpIHJldHVybiBmYWxzZSBvbiBVbml4IHN5c3RlbXMgaWYgdGhlIGZpcnN0IGFyZ3VtZW50IGVxdWFscyAtMSAoYSB2YWx1ZSB0aGF0IHNob3VsZG4ndCBiZSBwYXNzZWQgYnkgdGhlIGNhbGxlcikuCiAgICAgQ0hBTkdFUzogV2luZG93czogTWFrZSBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKSBzaHJpbmsgYmVoYXZpb3IgY29ycmVjdC4KIAorY29tbWl0IDIzZGIwY2YwOWI4YjBlYWIzN2I3NDllZjBjM2MzZjMwNjkwMDI0NWMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBOb3YgMjEgMjM6MDI6NTcgMjAxMSArMDEwMAorCisgICAgRml4IGNhc3RpbmcgdHZfdXNlYyB0byBpbnQgd2hpY2ggbWF5IGJlIHRvbyBzaG9ydAorCiBjb21taXQgODBlZTQwMjJlNTM0ZTY0YWFkNWE1ZjI3MTkyODQzYjQyYWNiODVlMAogQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KIERhdGU6ICAgU2F0IE5vdiAxOSAwOToxNDowMiAyMDExICswMTAwCkBAIC0yNzgyLDYgKzY3NjYsMTIgQEAKIAogICAgIFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzCiAKK2NvbW1pdCBjZDMyYzJkZmYwNmI5YjQ1MmNjMThkNTUyZDJmMjIzNDA5MmM4MjljCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDIzOjE3OjA5IDIwMTEgKzAxMDAKKworICAgIEZpeCBmb3JtYXQgd2FybmluZworCiBjb21taXQgODgzMTM2YzJiMmZhMDczOWY0MzdhOGNmYjY2MTRhY2NjNzZlMjY4ZQogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgV2VkIE5vdiAxNiAyMzoxNTo1OCAyMDExICswMTAwCkBAIC0yNzk0LDYgKzY3ODQsMTIgQEAKIAogICAgIEZpeCB1c2luZyBjaGFyIGFzIGFycmF5IGluZGV4IChjdHlwZS5oKQogCitjb21taXQgODQ1MjllNjMyMGE4OWQ5N2YxMzE0YWViYWQ4MDYyNTVkMmExYjE4YworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAyMzowMDo1NyAyMDExICswMTAwCisKKyAgICBGaXggbWlzc2luZyBmb3JtYXQgZm9yIEZyZWVCU0QgNAorCiBjb21taXQgNGJkMDM1Mjk1NWEyNTUxYmZlMDIzMDhkZDEzNGI5MTI4Yzk4YjllOQogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgV2VkIE5vdiAxNiAyMjo1OTozNiAyMDExICswMTAwCkBAIC0yODA2LDYgKzY4MDIsMTIgQEAKIAogICAgIEZpeCBzaXplX3QvaW50IG1pc21hdGNoZXMKIAorY29tbWl0IGE0ZGI5ZjlmYzEzZDIxZWNmZjQ4OGViNDEwMzc2ZWRkYTZjMjgyMzIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMTYgMTM6NDM6MzQgMjAxMSArMDEwMAorCisgICAgUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMKKwogY29tbWl0IDM5MGMwMTE0YzhlYzBiZGIyN2IwOGI2Zjc0ZTNmNmVmM2E2Mjk4MWIKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIFdlZCBOb3YgMTYgMTM6Mzc6NDkgMjAxMSArMDEwMApAQCAtMjg0OCw2ICs2ODUwLDE4IEBACiAKICAgICBEb24ndCB0cnkgdG8gaW5zdGFsbCBhbiBlbXB0eSBsaXN0IG9mIG1hbiBwYWdlcyAoTUFOMykKIAorY29tbWl0IGJhNjE5ODA0ZTU5NzhhOGRmNzU0ODQ0ZWZjY2E1MmI2OWI1MDE1ZmEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBOb3YgMTQgMTM6MzQ6MjAgMjAxMSArMDEwMAorCisgICAgTWluR1c6IE1ha2Ugc3VyZSB0aGF0IHRoZSBiYWNrc2xhc2hlcyBpbiB0aGUgcHNraWxsIG1lc3NhZ2UgYXJlIGRpc3BsYXllZC4KKworY29tbWl0IDkyM2VlY2M1MDdmNzUwNDNiNjBjNWU2ODA1M2E0ZjM5NmFiMGIwZDIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBOb3YgMTQgMTI6MzY6MzggMjAxMSArMDEwMAorCisgICAgQ29tcGlsZXIgd2FybmluZyBmaXggZm9yIHN5c3RlbXMgd2hlcmUgdWludDY0X3QgPSB1bnNpZ25lZCBsb25nIChlLmcuIFJIRUwgNi4xL3g4Nl82NCkKKwogY29tbWl0IDQzNGJmYzFmNzQ1NzU1MGI2Zjg3ZDViY2Q1MTEyNzZiMjcwYjU5NjQKIEF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBNb24gTm92IDE0IDExOjIyOjUzIDIwMTEgKzAxMDAKQEAgLTI4NjgsNiArNjg4MiwxMiBAQAogCiAgICAgTmV0QlNELTY6IE9uZSBtb3JlIGluc3RhbmNlIG9mIHRpbWVzcGVjIHJlcGxhY2luZyB0aW1ldmFsCiAKK2NvbW1pdCA4YWQ2YzUzZmRlYzVhZGVhZTRlNTJmMTc1MWVjZWM0YTM0NWJhYjA1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTm92IDExIDE4OjU5OjAxIDIwMTEgKzAxMDAKKworICAgIEZpeCBidWlnICMzNDM2NTI3OiBhcnBfbmV0bGluazogZml4IGR5aW5nIHJlbG9hZCBvZiBjYWNoZQorCiBjb21taXQgMzc4ZmZlZDAzYmE3OWE4MzQ2ZDZjNjI3ODFlMmRkZjVjZTkyYTQ3OAogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgRnJpIE5vdiAxMSAxODo1NTo0MyAyMDExICswMTAwCkBAIC0yOTA2LDYgKzY5MjYsMTQgQEAKIAogICAgIENIQU5HRVM6IHRlc3Rpbmc6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKIAorY29tbWl0IGUyMjFlNjVmZGMxYzY4ZjE5Njg2NTE3MTdkY2M5Y2NmYjY0MTQ3ODMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBOb3YgMyAxNTowNTowMCAyMDExICswMTAwCisKKyAgICBGaXggd2FybmluZ3MgYWJvdXQgY29udmVydGluZyBzb2NrYWRkcl9pbiAqIGludG8gc29ja2FkZHIgKi4KKyAgICAKKyAgICBUaGlzIGlzIGEgZm9sbG93LXVwIGZvciBjb21taXQgYTBhZjM4NS4KKwogY29tbWl0IDJlN2U5ZWRhMGIwZDYyYTc2NDVhOWE4ZjcwZWYzZmI2ZjNkZDY5NDEKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CiBEYXRlOiAgIFRodSBOb3YgMyAxMToxNzo0OCAyMDExICswMTAwCkBAIC0yOTMyLDYgKzY5NjAsMTIgQEAKIAogICAgIGRza0luZGV4IHdhcyBvZmYgYnkgb25lCiAKK2NvbW1pdCBhNWIyODgyOWU2NGQ1ZjNiODdlNGI5YjFlZjhjYzIwNGYzM2E2MWI3CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDIgMjE6MjU6MDcgMjAxMSArMDEwMAorCisgICAgU29sYXJpcyBuZWVkcyAkQVdLIHRvIGdldCBhIHVzYWJsZSBuYXdrCisKIGNvbW1pdCAyODAxYTIxMzlmMjcwMjFlMWFiMTVlMzYyZTJkM2Q2MjRmZmFhNDk0CiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBNb24gT2N0IDMxIDIyOjU1OjUzIDIwMTEgKzAxMDAKQEAgLTI5NzEsNiArNzAwNSwyMCBAQAogICAgIAogICAgIFRoaXMgaXMgYSBiYWNrcG9ydCBvZiBjb21taXQgOWY2NTNmNy4KIAorY29tbWl0IDJjYzk1MDRiOWJiODYyNWI5NGJlNmNkYTdlNjA5OTNkMDU5Y2Q5MjgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBPY3QgMjYgMDk6MDE6MjMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzNDI4NTA2OiBGaXggbmV0c25tcF9nZXRob3N0YnlhZGRyKCkKKyAgICAKKyAgICBUaGlzIHBhdGNoIHNob3VsZCBmaXggdGhlIHJlZ3Jlc3Npb25zIGludHJvZHVjZWQgYnkgY29tbWl0IDg1ZDk2YzQgKE1heSAxMywgMjAxMSkuCisKK2NvbW1pdCA5YjQyN2IzNTNmMWNlYjhmZTg3ZTZmYzhlZDNiNmNmYWIzY2U3ZjIwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgT2N0IDI3IDA4OjIwOjAwIDIwMTEgKzAyMDAKKworICAgIE1pbkdXOiBBdm9pZCBjb25mdXNpb24gYmV0d2VlbiBNaW5HVydzIGtpbGwuZXhlIGFuZCB0aGUgU3lzSW50ZXJuYWxzIHBza2lsbC5leGUKKwogY29tbWl0IDJjNDVmOTJjZmNiNWIwNWUwNDkyMjZhNWE3ODgzYTBiMTA2MDExYWUKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CiBEYXRlOiAgIFdlZCBPY3QgMjYgMTA6NDI6MjkgMjAxMSArMDIwMApAQCAtMzAyMyw2ICs3MDcxLDM5IEBACiAgICAgCiAgICAgVGhlIG1lc3NhZ2UgaXMgc2hvd3MgdXAgd2hlbiBzbm1wZCBpcyBzdGFydGVkIGFuZCB0aGVyZSBpcyBkaWZmZXJlbnQgc2V0IG9mIG5ldHdvcmsgaW50ZXJmYWNlcyB0aGFuIGl0IHdhcyB3aGVuIHNubXBkIHdhc3QgbGFzdCBzdG9wcGVkLiBUaGlzIGlzIGNvbW1vbiBvbiBwcHAtc2VydmVycyBvciB2aXJ0dWFsIGhvc3RzLgogCitjb21taXQgMjUwZjY5OGU1OWVhYjlmMWZmZDMzMmZmNTlmZGI3MmVhMGRmMDZmZgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE9jdCAyMyAwODo1MToyMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogTWFrZSB0aGUgdHJhbnNwb3J0IGNvbmZpZ3VyYXRpb24gY29kZSB3b3JrIGFnYWluCisgICAgCisgICAgUHJldmlvdXNseSB0aGUgdHJhbnNwb3J0IGluaGVyaXRhbmNlIHByb2Nlc3NpbmcgY29kZSByYW4gd2l0aAorICAgIE5FVFNOTVBfRkVBVFVSRV9DSEVDS0lORyBzZXQuIEluIHRoaXMgbW9kZSB0aGUgZmlsZSBuZXQtc25tcC9mZWF0dXJlLWRldGFpbHMuaAorICAgIGlzIHJlcXVpZXJlZC4gVGhhdCBmaWxlIGlzIGNyZWF0ZWQgZHVyaW5nIHRoZSBmaXJzdCBtYWtlIHJ1biwgYW5kIHRoYXQgaGFwcGVucworICAgIGFmdGVyIGNvbmZpZ3VyZSBpcyBydW4uCisgICAgQ2hhbmdlIHRoaXMgdG8gdW5kZWZpbmUgTkVUU05NUF9NSU5JTUFMX0NPREUsIGVmZmVjdGl2ZWx5IHR1cm5pbmcgb2ZmIGZlYXR1cmUKKyAgICBzdXBwb3J0IGR1cmluZyB0cmFuc3BvcnQgY29uZmlndXJhdGlvbiBpbiBvcmRlciB0byBtYWtlIGl0IHdvcmsgYXQgYWxsLgorCitjb21taXQgNmVmNjkwNzY0MjI0N2M2NjNiOWI4OTY0YjlmZDQ0YTIxMWRiY2FhNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE9jdCAyMCAyMDozMDo1NCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzNDA4Mzk4OiBGaXggYSBtZW1vcnkgbGVhayBpbiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzLgorICAgIAorICAgIFRoaXMgbWVtb3J5IGxlYWsgd2FzIGludHJvZHVjZWQgdmlhIGNvbW1pdAorICAgIDliZjNkOTZkOTZhOGVjZDRhNWZjMzVjMzI2ZGM5Mzc0NjcwMDJiNmM6IEluaXRpYWwgSEFMCisgICAgaW1wbGVtZW50YXRpb24gb2YgRmlsZVN5c3RlbSBpbmZvcm1hdGlvbiAoTWFyY2ggNywgMjAwOCkuCisKK2NvbW1pdCBjZjgyYjg5NGIyMjE3YzI2ZWRjNmYxMzU2MzUxYzkzMjQxNTYwNGUyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgT2N0IDE1IDE0OjQ1OjA4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMzQyMzkxNTogQ2hhbmdlIGRlZmF1bHQgbnVtYmVyIG9mIHJldHJpZXMgYmFjayBmcm9tIDAgdG8gNQorICAgIAorICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBidWcgaW50cm9kdWNlZCB2aWEgY29tbWl0IDZjYWMwNTAgKE1heSA1LCAyMDExLAorICAgIGFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgdGhlIGRlZmF1bHQgbnVtYmVyIG9mIHJldHJpZXMgaW4KKyAgICBzbm1wZC5jb25mKS4KKwogY29tbWl0IGMxMWFkYWExMjkxNWFiZmVlNjI5YmI2YzAyNmMyMWYyMTg1YjIxNmUKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CiBEYXRlOiAgIE1vbiBPY3QgMTcgMTA6MjQ6NDYgMjAxMSArMDIwMApAQCAtMzAzNSwxMiArNzExNiwyNiBAQAogCiAgICAgQ0hBTkdFUzogV2luMzI6IEF2b2lkIHRoYXQgdGhlIFBBQ0tBR0VfKiBtYWNyb3MgZGVmaW5lZCBpbiA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhdXNlIHRyb3VibGUgd2hlbiBpbmNsdWRpbmcgdGhpcyBoZWFkZXIgaW4gYSBwYWNrYWdlIHRoYXQgdXNlcyB0aGUgR05VIGF1dG90b29scy4KIAorY29tbWl0IDY2NGQzYWUxMDdkNzU0MDUxYjhjNDIyNzlkNDU5YWE1N2ExYmUxYzMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBPY3QgMTAgMTY6NDc6MTYgMjAxMSArMDIwMAorCisgICAgTWluR1csIGh3X2ZzeXM6IFVzZSBwcm9wZXIgZm9ybWF0IHNwZWNpZmllcnMgaW4gYSBkZWJ1ZyBzdGF0ZW1lbnQuCisgICAgCisgICAgVGhpcyBwYXRjaCBmaXhlcyBhbiBpc3N1ZSBpbnRyb2R1Y2VkIGluIGNvbW1pdCA3NmZmMjVkLgorCiBjb21taXQgMjExZGNiNDkzMDY1NjFlMzViYTNjMjEzYmU3Y2ZhMjU3YjQwYThlNQogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KIERhdGU6ICAgTW9uIE9jdCAxMCAxNTo1Mjo0MyAyMDExICswMjAwCiAKICAgICBBdm9pZCB0aGF0IGdjYyA0LjYgY29tcGxhaW5zIGFib3V0IHNldCBidXQgbm90IHVzZWQgdmFyaWFibGVzCiAKK2NvbW1pdCA5ZjY1M2Y3M2U1YWE3MGYwYmVmMTE3NDYzMmU5NTU5NGY4N2Y2NjlmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gT2N0IDEwIDEzOjAyOjI1IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXB0cmFwZF9zcWw6IEF2b2lkIHRoYXQgYSBsaW5rZXIgZXJyb3IgaXMgdHJpZ2dlcmVkIG9uIHN5c3RlbXMgd2hlcmUgbXlfcHJvZ25hbWUgaXMgbWlzc2luZyBpbiBsaWJteXNxbGNsaWVudCAoZS5nLiBGZWRvcmEgMTUgYW5kIDE2KS4KKwogY29tbWl0IDRjODNiOTIyOWE3NDU0ZjM0ZjZmZjc1ZjY5ZTY3ZTQwMzBjNDE5YjUKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CiBEYXRlOiAgIEZyaSBPY3QgNyAxNTo1ODo0NSAyMDExICswMjAwCkBAIC0zMDU2LDEyICs3MTUxLDQ3IEBACiAgICAgZHluYW1pYyBsaWJyYXJpZXMgYW5kIHJwYXRocywgc2VlIGFsc28gdGhlIGRvY3VtZW50IHdpdGggdGhlIHRpdGxlCiAgICAgIlJwYXRoSXNzdWUiIG9uIHRoZSBEZWJpYW4gd2lraSAoaHR0cDovL3dpa2kuZGViaWFuLm9yZy9ScGF0aElzc3VlKS4KIAorY29tbWl0IDg5MjVjOTEyZDI2Mzk3NTJhODRiY2ZmZWVmMWI3MGE4MTAyNjQ0OWIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBPY3QgNyAxNDoyMToyOCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBhZ2VudDogSE9TVC1SRVNPVVJDRVMtTUlCOiBBZGQgbWlzc2luZyBicmFjZSBpbiBhIGRlYnVnIHN0YXRlbWVudAorCitjb21taXQgNzZmZjI1ZDliZjk3NTc5ZTcyMTMxMDIwNjVmZDUwOTZmMDQ5YTRjNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIE9jdCA3IDE0OjEzOjE4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBIT1NULVJFU09VUkNFUy1NSUI6OmhyU3RvcmFnZVRhYmxlOiBmaXggYnVnIGluIGhhbmRsaW5nIGxhcmdlIGZpbGVzeXN0ZW1zLCB3aGVyZSBsYXJnZSBtZWFucyBhYm92ZSA4IFRCICg9IDIqKjMxICogNDA5NiBieXRlcykuCisgICAgCisgICAgVGhpcyBwYXRjaCBmaXhlcyBhIGJ1ZyBpbnRyb2R1Y2VkIGluIGNvbW1pdAorICAgIDcxZDgyOTNmMzg3YTZjZDY2YmIwZGJiMTNjMGY1MDE3NGQyZTY3OGIuCisgICAgRm9yIHRoZSBvcmlnaW5hbCBidWcgcmVwb3J0LCBzZWUgYWxzbworICAgIGh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2Z1bmM9ZGV0YWlsJmF0aWQ9MTEyNjk0JmFpZD0zNDE5ODI1Jmdyb3VwX2lkPTEyNjk0LgorCiBjb21taXQgODY2MDMzZGI5OTA0ZmZiMTIwM2YyODNmODM4MDkyZTRjZjY4ZGU2YgogQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KIERhdGU6ICAgVGh1IE9jdCA2IDA3OjMzOjI3IDIwMTEgKzAyMDAKIAogICAgIENIQU5HRVM6IHNubXBkOiBSZW1vdmUgc3B1cmlvdXMgI2VuZGlmIHRoYXQgc2VlbXMgdG8gYmUgdGhlIHJlc3VsdCBvZiBhIG1pc21lcmdlLgogCitjb21taXQgMjBmNGYzMjY3ZWUyMGQ1NTcwNWI3YTQzNzg5ODc5YzEwM2Y5NjYyMAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVGh1IE9jdCA2IDAwOjA4OjU5IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBBZGQgbWlzc2luZyBlbmQgY29tbWVudHMgdG8gZmVhdHVyZSBpZm5kZWZzLgorCitjb21taXQgZTVkZTJjYzU3YmYzMDRmMzMyMGNhZDAwMzRkMmVhMmQ4YWVkYzQzNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE9jdCA1IDA5OjE1OjEwIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGFnZW50OiBMb2cgYSBtb3JlIGRldGFpbGVkIGVycm9yIG1lc3NhZ2UgaWYgZW1iZWRkZWQgcGVybCBpbml0aWFsaXphdGlvbiBmYWlscworCitjb21taXQgNWVlZjk5OTBkZTI4ZjYzMTExZTZjMDkzYmUwZjNjN2FlMmQ1MTNhMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE9jdCA1IDA4OjQ1OjQ5IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHBlcmw6IEFkZCBhZ2VudDo6dXB0aW1lKCkKKwogY29tbWl0IDY4MTBlZDQyZjliYzU2MDc1MGQ2ZGJmYjdlNTBiNmUyYWMxMTg5OWMKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CiBEYXRlOiAgIEZyaSBTZXAgMzAgMTE6MDE6MjMgMjAxMSArMDIwMApAQCAtMzA3NCw2ICs3MjA0LDEyIEBACiAKICAgICBDSEFOR0VTOiBQQVRDSDogMzQxODY0OTogSE9TVC1SRVNPVVJDRVMtTUlCOiBVc2UgcGNsb3NlKCkgaW5zdGVhZCBvZiBmY2xvc2UoKSB0byBjbG9zZSBhIHBpcGUuCiAKK2NvbW1pdCA2NTkxOTM3YWRiODUwMDBjMjcwNjljNGJlODRjZjQ2ODg4MzhlYmNkCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gT2N0IDIgMTY6MTg6MDMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IEFkZCBkZXBlbmRlbmNpZXMgb24gQEZFQVRVUkVUQVJHU0AgdG8gbWFrZSB0aGUgc3VidGFyZ2V0IHdvcmsgYXMgd2VsbC4KKwogY29tbWl0IGI5YzgwMTJlYzAzNWJjMDg0ZjE3NTg3NmZlY2MzNzUxOTVmOWJlODEKIEF1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CiBEYXRlOiAgIFN1biBPY3QgMiAxNDowMjo1OCAyMDExICswMjAwCkBAIC0zMTI2LDI0ICs3MjYyLDIyNiBAQAogICAgIGVycm9yIGFuZCB0aGVuIGZpZ3VyZXMgb3V0IHRoYXQgdGhlcmUgaXMgbm8gdXNhYmxlIG5saXN0LmggYW5kIGlnbm9yZXMgaXQKICAgICBmb3IgdGhlIGZ1dHVyZS4KIAorY29tbWl0IGFjMzhjYjUzMWJlZTUwZWRjOGQ0YzgzNGYzMDA1ZjU5OTJjNzcxZDgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBTZXAgMjkgMTk6MDM6MDIgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogcGVybDogRW5hYmxlIHNlbmRpbmcgU05NUHYyIHRyYXBzIHdpdGggYW4gZW1wdHkgdmFyYmluZCBsaXN0CisKK2NvbW1pdCBhNzVkZTI5NzE1MjdhYzJkMmU4MTIwMjQyOTg2MDJiYjI0MTJmMzM3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgU2VwIDMwIDEwOjQxOjQ0IDIwMTEgKzAyMDAKKworICAgIHBlcmwvU05NUC9TTk1QLnhzOiBVcGRhdGUgZW1hY3MgbW9kZWxpbmUKKwogY29tbWl0IDg0OGY2MzAwZWZlMzg0OTJmYjQ1NDQ1MWEwMzBmMGI3ZTZmZjhjOWQKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CiBEYXRlOiAgIEZyaSBTZXAgMzAgMTA6NDE6NDQgMjAxMSArMDIwMAogCiAgICAgcGVybC9TTk1QL1NOTVAueHM6IFVwZGF0ZSBlbWFjcyBtb2RlbGluZQogCitjb21taXQgYzEzNzQ0NzNlY2Q4ZWM5ZTAzMTAwMTM4NjFlZTE4YzgzZTVkNmM1YgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgRnJpIFNlcCAzMCAwMzoyOTozNiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBQcm90ZWN0IHRoZSB1c2Ugb2YgJE9TVFlQRSB0byBlbnN1cmUgdGhhdCAndGVzdCcgZ2V0IGVub3VnaCBwYXJhbWV0ZXJzLgorCitjb21taXQgN2U5N2EyMDYzM2E1N2VhZTM5ZDAxNWIyMzMzOTQ2M2MzMmY1Zjg0OAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IFNlcCAyOSAxMDoyMjowOCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBDb252ZXJ0IHNubXBsaWIvdGVzdF9iaW5hcnlfYXJyYXkuYyBpbnRvIHR3byB1bml0IHRlc3RzCisKK2NvbW1pdCA5YzBkZDk4MTc2NDU3MzQyZmZmYWE1ZTc0ZDgwMmUzMTQ1ZWQ3MGU3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgU2VwIDI5IDA4OjU2OjE3IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IEFkZCB1bml0IHRlc3QgZm9yIG5ldHNubXBfcmVnaXN0ZXJfb2xkX2FwaSgpCisKK2NvbW1pdCA1ZmQyNmU0ZmEzZTAwMGVhOWM4MWMzOGFiOTc1Yjc5NDZlZmUyMTU3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgU2VwIDI4IDE3OjQ5OjU1IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGFnZW50OiBBdm9pZCB0aGF0IG5ldHNubXBfcmVnaXN0ZXJfb2xkX2FwaSgpIGZhaWx1cmUgdHJpZ2dlcnMgYSBkb3VibGUgZnJlZS4KKyAgICAKKyAgICBGaXhlcyBhIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCB2aWEgY29tbWl0CisgICAgYWE0ZDQ3YzI2MDllNTI4MThjOWNkZjFhOGUyMjA1ZGU5YTMzNWEwYSAoc3ZuIHIxOTUxNSkuCisKK2NvbW1pdCBkMjI1MmQwMTY2OTM4MDczMjZmNzJiNjYxMjM2NDlkZWEwMGFmOTE2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgU2VwIDI5IDEwOjIwOjA4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IFJlcXVpcmUgYSBzZW1pY29sb24gYWZ0ZXIgT0soKSwgT0tGKCkgYW5kIFBMQU4oKQorICAgIAorICAgIEFsc28sIGxldCBPS0YoKSBlbWl0IGEgc2luZ2xlIGxpbmUgb2Ygb3V0cHV0IHN1Y2ggdGhhdCBhbGwgb3V0cHV0IGl0CisgICAgcHJvZHVjZXMgaXMgdmlzaWJsZSBpbiB0aGUgb3V0cHV0IG9mICJtYWtlIHRlc3QiLgorCitjb21taXQgMTQyMTkyNGI0ODUyMTQyMTkyYzViYjllOTNkZGJmZWQ2OWU5MDhmYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIFNlcCAyMSAyMjoyMDowOCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBBdm9pZCB3YWl0aW5nIGluZGVmaW5pdGVseSBpZiBhIHNlc3Npb24gaGFzIHRpbWVvdXQgemVybworCitjb21taXQgNWYyN2Y0Zjc0YWUyYmQ1YmFmNTAzY2YzMDZiNGY5YTI4NDFhNTdjZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCA2IDEwOjMyOjAzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiB0ZXN0aW5nOiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgdGVzdCBydW5uZXIKKworY29tbWl0IDA5NzAzOTU4Y2M1ZWE4NDU5MjlhZTE5ZWY5ZTA4MDRhZWNhYTUxMmUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgMjcgMTI6NDI6NDEgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogQXZvaWQgZmFsc2UgbmVnYXRpdmUgZm9yIFQxMTRhZ2VudHhhZ2VudHh0cmFwX3NpbXBsZSBjYXVzZWQgYnkgdGhlIHRlc3QgcmVzdWx0IGJlaW5nIHByZXNlbnQgaW4gdGhlIGhleCBkdW1wICgibW9zdGx5X2hhcm1sZXNzIikKKworY29tbWl0IDQzOTMwMDI3OWY2ZjMxNDM4NjM4ZDJmMjIyYzI0YzNjODQxZmE2YWIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgMjcgMTE6MTY6MzIgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IE1pY3JvLW9wdGltaXplIGFnZW50IG1vZHVsZSBkZXBlbmRlbmN5IGFuYWx5c2lzCisgICAgCisgICAgVGhpcyBtYWtlcyB0aGUgYWdlbnQgbW9kdWxlIGRlcGVuZGVuY3kgYW5hbHlzaXMgY2FycmllZCBvdXQgYnkgdGhlCisgICAgY29uZmlndXJlIHNjcmlwdCBzbGlnaHRseSBmYXN0ZXIsIGVzcGVjaWFsbHkgb24gdGhvc2Ugc3lzdGVtcyB3aGVyZQorICAgIGZvcmsoKSBpcyBleHBlbnNpdmUgKEN5Z3dpbikuCisKK2NvbW1pdCBiYmM2ODAwMDRhMTM3NjAzOGRmZGM0MTcyZGJlN2I5ZTMxMWZiYTY4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gU2VwIDI2IDEwOjE0OjQ1IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiB0ZXN0aW5nOiBNYWtlIHRlc3QgVDEzMHNubXB2MXZhY21nZXRfc2ltcGxlIHBhc3MKKworY29tbWl0IDcwYjA2Y2Y3ODkyMDhlYWE4OTBiZmJjZDYzOGJkYjc3NWY4MTcwNTQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgMjAgMDk6NTA6NTcgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogV2luZG93czogdGVzdGluZzogcGVybDogRml4IGFuIGluY29ycmVjdCBtZXNzYWdlIHByaW50ZWQgd2hpbGUgcnVubmluZyB0aGUgUGVybCBtb2R1bGUgcmVncmVzc2lvbiB0ZXN0cworCitjb21taXQgNzBiY2M4ZGUyZDBmYzkyYmJiODQ4MTgyMzYzMGZhYjliYzg3YWY3NQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIFNlcCAxNiAxNjoxNDoyNCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBNaW5HVzogdGVzdGluZzogT2J0YWluIHRoZSBNU1lTIHBhdGggZnJvbSB0aGUgZW52aXJvbm1lbnQKKworY29tbWl0IDYyNjI3NWUyZDFhY2FmYWU3MTQ0YTMzZWQzMDFhNDBmNTk2YjM3YjAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBTZXAgMTQgMTM6MTQ6MTcgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogV2luZG93czogUmVtb3ZlIHN1cGVyZmx1b3VzIGxpbmsgbGlicmFyaWVzIGZyb20gcHJvamVjdCBmaWxlcyAoKi5kc3ApCisKK2NvbW1pdCAzOGZjM2NhYTllZWIzODAwMjU0YjRmNmFkNmY4ZjQ3NjRjMGY4M2RiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDIwIDA5OjM0OjA4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IE1ha2UgbmV0c25tcF9jYWxsYmFja19hY2NlcHQoKSByZXR1cm4gLTEgKGZhaWx1cmUpIGluc3RlYWQgb2YgMCAoU1RESU5fRklMRU5PKQorCitjb21taXQgNmM4YzdlOGFjYThmYzJlZWI1MjAxMGFlM2U5ZmVlNmRkODNlZjc4MAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCAxMyAwOTo1ODoyNiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBSZW1vdmUgb2Jzb2xldGUgc25tcF9nZXRfZmRfZm9yX3Nlc3Npb24oKSBkZWNsYXJhdGlvbgorCitjb21taXQgMDg2MGQxMWZkOGZjNWRiZGFhYWUyMjYxZmFlMmMwN2ZiOWMyYzgyZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IFNlcCA4IDEzOjU0OjU1IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IFdpbmRvd3M6IE1TVkM6IEF2b2lkIHRoYXQgdGhlIHR5cGVkZWZzIGluIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4gY29uZmxpY3Qgd2l0aCB0aG9zZSBpbiA8c3RkaW50Lmg+IGZyb20gdGhlIG1zaW50dHlwZXMgcHJvamVjdAorCitjb21taXQgZjhhMDM2ZjYzZmY2OGYwODM0MzYxMjBlMGFiZDQ3OGI2OTJhMmY2MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IFNlcCA4IDEzOjIxOjA2IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IFdpbmRvd3M6IE1TVkM6IFdoZW4gbGlua2luZyB3aXRoIE9wZW5TU0wsIGxpbmsgd2l0aCB1c2VyMzIubGliIHRvbworCitjb21taXQgODM2YTIzZTEwY2E4MTBjMzg5OTkwMmQzMjU4NzYxNmE5ZDEyMDNkZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEp1bCAxNCAxODozODoxMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBNU1ZDOiBMaW5rIHdpdGggcHJvcGVyIGxpYmVheTMyIGxpYnJhcnkKKworY29tbWl0IDdiMDdmZDZjZGVmNDllYzdiYjA0YjE2NmUyYTRmYmIzN2I1ODI4NDAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgNiAxMToxMDozOCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBSZW1vdmUgYW4gaW5jb3JyZWN0IGNvbW1lbnQgZnJvbSBzaW1wbGVfZXZhbF90b29scy5zaAorCitjb21taXQgOThmNmQyOWQ5ODFmZjhlNjA3NjAwYzYzZGFkYjI0MDUzNTYyOTgwNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCA2IDEwOjQ5OjAzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IE1ha2UgSVNERUZJTkVEKCkgY2hlY2sgZm9yIGFuIGV4YWN0IG1hdGNoIGluc3RlYWQgb2YgYSBwcmVmaXggbWF0Y2gKKworY29tbWl0IDUyY2QwMDMxYTMxZjY5MmYxMzI2M2E5NGMzMzVkMDZiZTE0NTQ4MDMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgNiAxMDoxMjo1OSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBNaW5HVzogdGVzdGluZzogTWFrZSB0aG9zZSByZWdyZXNzaW9uIHRlc3RzIHBhc3MgZm9yIHdoaWNoIFNOTVBDT05GUEFUSCBhbmQvb3IgU05NUF9QRVJTSVNURU5UX0RJUiBtYXR0ZXIKKworY29tbWl0IGY1Y2Q4OWJkMzM1NmRkNzRlMTU1NmMwYjUwOTY2YTY0M2YxOTIwODUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgNiAxMDoxMjo1OSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBNaW5HVzogdGVzdGluZzogRml4IGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRlc3QgZnJhbWV3b3JrCisKK2NvbW1pdCBkZWVkZDUyYzgzNGE2NDQ4ODUyYTA2Nzg1NTM2ZTEzODY1OTY5Njk0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDYgMTA6MTI6NTggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogTWluR1c6IFN1cHBvcnQgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgb2YgcmVjZW50IFNoaW5pbmcgTGlnaHQgT3BlblNTTCBiaW5hcnkgZGlzdHJpYnV0aW9ucworCiBjb21taXQgZDU1YmQ0ZTA1NDlmMDNiNmZkMzI1NjJjMmFhN2ZlMzkyNzJhOWVmNwogQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgV2VkIFNlcCAyOCAwNjo1NToxOSAyMDExIC0wNzAwCiAKICAgICByZW1vdmUgdGhlIHY1LjcgZnJvbSB0aGUgZnJvemVuIGxpc3QKIAorY29tbWl0IGFjMmFlZDNjOTRiYjJlYmI0NzNhZjBhMWUyMGYwNTYxYWQ2Mjk5NTYKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBTZXAgMjggMDY6NTU6MTEgMjAxMSAtMDcwMAorCisgICAgcmVtb3ZlIHRoZSB2NS43IGZyb20gdGhlIGZyb3plbiBsaXN0CisKK2NvbW1pdCA0MDA3OTIwNTk2N2I4ZTVhZWVkYjE5ZmEzY2IyZTdiMmY3OTg4NTc3CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgU2VwIDI3IDIxOjUzOjQ3IDIwMTEgLTA3MDAKKworICAgIG1ha2UgZGVwZW5kCisKK2NvbW1pdCBjZjE0YTIyODU4M2FmZjNjNWFiMmYwZDQ0YzJmNGMwZmE1YmQ2NmFmCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgU2VwIDI3IDIxOjUzOjE4IDIwMTEgLTA3MDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjcuMQorCitjb21taXQgMTAxNGRkOGRmYjQ4YTViZDA1M2YwNDU0MWViOTcyOGYwYmUwN2Y0NworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIFNlcCAyNyAyMTo0NTowNCAyMDExIC0wNzAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS43LjEKKworY29tbWl0IDE4ZDExNmJhMzg4YzFkYzk0OTUyODg4NGJiMDA2OThmMWJhY2FhOTQKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBTZXAgMjcgMjE6MTE6NTIgMjAxMSAtMDcwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcuMQorCiBjb21taXQgNDZlYWMwMmU5YTI3YmY0ZjMwNjhlNzk1Y2FiODkxZjA1YTg0ODg3MAogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KIERhdGU6ICAgTW9uIFNlcCAyNiAyMTo0OToyNyAyMDExICswMjAwCiAKICAgICBDSEFOR0VTOiBzbm1wZDogQXZvaWQgdGhhdCBzbm1wZCBjcmFzaGVzIGlmIHN0YXJ0ZWQgb24gYSBzeXN0ZW0gd2l0aCBhbm90aGVyIE9wZW5TU0wgbGlicmFyeSB2ZXJzaW9uIHRoYW4gdGhlIG9uZSBpdCBoYXMgYmVlbiBidWlsdCB3aXRoLgogCitjb21taXQgYTVmMDY0ZGQ4Mjk5NmUyYmUzZjFlOTYxNjcwM2FkMDM5NWZiNWFiYQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IFNlcCAyMiAwNzozMzowMSAyMDExIC0wNzAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS43LjEucmMzCisKK2NvbW1pdCA1Njk3OTRmY2ViOTllZWQ3YmU4MTdjNjRmODVjZDk0NWNhZjk5NTkyCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgU2VwIDIyIDA3OjIwOjA3IDIwMTEgLTA3MDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjEucmMzCisKIGNvbW1pdCBjNTVmNjA4ZjE2ZjE2MGY1ZTc5ZGMwNTdmODg3OGRlZjQ2Mjk3M2UxCiBBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KIERhdGU6ICAgVGh1IFNlcCAyMiAxMDozNToyNCAyMDExICswMTAwCkBAIC0zMTUxLDYgKzc0ODksMTQgQEAKICAgICBGaXggdGhlIGNvZGUgZm9yIHBvcHVsYXRpbmcgdGhlIHRhYmxlX3RkYXRhIGNhY2hlLAogICAgIGFuZCBjbGFyaWZ5IGFyZWFzIG5lZWRpbmcgTUlCLXNwZWNpZmljIGFkZGl0aW9ucy4KIAorY29tbWl0IDEzNzYzY2YyYzcxYmY5M2ZlYzA5NmVlZTAwNDg1N2MxNWIyY2ZmZmYKK0F1dGhvcjogU3RldmUgRnJpZWRsIDxzdGV2ZUB1bml4d2l6Lm5ldD4KK0RhdGU6ICAgVGh1IFNlcCAyMiAxMDowNjo0NSAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogMzQwOTY5MjogQ2FsY3VsYXRlIGRpc2sgcGVyY2VudGFnZSB1c2FnZSB2aWEgZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYworICAgIHRvIGF2b2lkIGludGVnZXIgYXJpdGhtZXRpYyBlcnJvcnMuCisgICAgKENvZGUgYmFzZWQgb24gcGF0Y2gsIHJhdGhlciB0aGFuIGFwcGxpZWQgdmVyYmF0aW0pCisKIGNvbW1pdCBlZTBkM2FkYjA3ODI5MWI3NDNjOWVjYjc2ZDIwYjU5MWI3YjE1OTcyCiBBdXRob3I6IFN0ZXZlIEZyaWVkbCA8c3RldmVAdW5peHdpei5uZXQ+CiBEYXRlOiAgIFRodSBTZXAgMjIgMDk6NTg6MzkgMjAxMSArMDEwMApAQCAtMzE1OSw2ICs3NTA1LDI0IEBACiAgICAgdG8gYXZvaWQgaW50ZWdlciBvdmVyZmxvdyBlcnJvcnMuCiAgICAgKENvZGUgYmFzZWQgb24gdGhlIHN1Ym1pdHRlZCBwYXRjaCwgcmF0aGVyIHRoYW4gYXBwbGllZCB2ZXJiYXRpbSkKIAorY29tbWl0IDM2N2RhMTRmY2RiMTQ2NTkyZGU2N2MxZDY5OTdhMDk3NzQyNTk2NzMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBTZXAgMjIgMDg6MDk6MTcgMjAxMSArMDIwMAorCisgICAgVGhlIG9ubHkgY2hhbmdlIGJldHdlZW4gVjUuNy5yYzEgYW5kIFY1LjcuMS5yYzIgaXMgdGhlIHZlcnNpb24gbnVtYmVyLiBNYWtlIHRoaXMgY2xlYXIgaW4gdGhlIENoYW5nZUxvZyBmaWxlLgorCitjb21taXQgYzI3NmVlYjhmMDQ1NWEwODcwYzRiNDc4ZGRlNjQ4ZTg2NTI5YWRkMworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIFNlcCAyMSAxMzo1MTo1OCAyMDExIC0wNzAwCisKKyAgICBjaGFuZ2Vsb2cgdXBkYXRlCisKK2NvbW1pdCA2MzA1MDgzODY2NmY2NDVmYzMwNmRjMmVlNGY3M2Y1ZWZjZTYzZmVkCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgU2VwIDIxIDEzOjM4OjE4IDIwMTEgLTA3MDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjEucmMyCisKIGNvbW1pdCBiYmUyYzE5YTAxZWNlYzAyNGY3NDFlMmU1NDcwMWFlNjIxMmY0YzNlCiBBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgogRGF0ZTogICBTdW4gU2VwIDQgMTQ6NDQ6MzggMjAxMSArMDIwMApAQCAtMzE3NSw2ICs3NTM5LDMwIEBACiAKICAgICBDSEFOR0VTOiBidWlsZGluZzogQ29ycmVjdCBkZXBlbmRlbmNpZXMgLSBzaW5jZSBiZjc0ZmVhNjlmMjRkYzZlODVmOTA4ZjNmNDFkMTQyNmIyZTA5Njg4IHNubXBjb25mIGlzIGxvY2F0ZWQgaW4gYnVpbGRkaXIsIG5vdCBzcmNkaXIKIAorY29tbWl0IDc4MzU5NjRkMzU5M2U1YzZhMWFlN2RlMGI0MTE0YjdkZjFhZTBmZTEKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBdWcgMzAgMTk6MjE6NTEgMjAxMSAtMDcwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNy4xLnJjMQorCitjb21taXQgY2I2YTBjMGJkNmY4YzJjN2NkNWZkODYwODBkYzYzMjRlN2Y3Mzg1OAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEF1ZyAzMCAxOToyMDozNSAyMDExIC0wNzAwCisKKyAgICBtYWtlIGRlcGVuZCBmb3IgNS43LjEucmMxCisKK2NvbW1pdCBlNWZmMmViODNiYmJlZDkyZGFjNzUxYzVhNjY0M2Q3OGY4MzdjZjljCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDMwIDE5OjE5OjQ2IDIwMTEgLTA3MDAKKworICAgIGZpeCBDKysgY29tbWVudAorCitjb21taXQgY2IxZjVjZmZjNmZiNTJjMmE2YzBmN2I0MDhhZmViNDdmY2ZlNTVlNAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEF1ZyAzMCAxOTowOTo1NiAyMDExIC0wNzAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNy4xLnJjMQorCiBjb21taXQgNDIyYjA4MmE5NTkzY2E5YzY1YWFjNDQ5ZTZkMTI4YTllOTdlOTRmYgogQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgVHVlIEF1ZyAzMCAxOTowNjo1NiAyMDExIC0wNzAwCkBAIC0zMjI1LDEyICs3NjEzLDcyIEBACiAKICAgICBBcHBhcmVudGx5IElSSVggaGFzIGEgZGlmZmVyZW50IEFQSSBmb3Igc3RhdGZzCiAKK2NvbW1pdCBmN2UyMWYyNjMzMzkwYjdhMjdjNTAyMjdiZWU2ZDg2OTZhZTNmYmNmCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXVnIDI5IDE2OjAxOjMxIDIwMTEgLTA3MDAKKworICAgIGRvbid0IHByb3ZpZGUgYSBmZWF0dXJlIHdoZW4geW91ciBhIGNoaWxkIG9mIGFub3RoZXIgZmVhdHVyZQorCitjb21taXQgY2FjMjNjMGIyNTc0ZTcyODBiZDEyOGM2MjI2ODc1YWQwZjZiNGJmYworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIEF1ZyAyOCAwOTozODoxNCAyMDExICswMjAwCisKKyAgICBNYWtlIHN1cmUgdGhhdCBmZWF0dXJlLWRldGFpbHMuaCBleGlzdHMgYmVmb3JlIHRyeWluZyB0byBpbmNsdWRlIGl0CisKK2NvbW1pdCA3ODFmNGNlMmFjYjM3MTU2MDc5N2Q4YjI5YTg5ZWQwNjc0ZTkzNWY4CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gQXVnIDI4IDA5OjM2OjM2IDIwMTEgKzAyMDAKKworICAgIFVzZSB0aGUgZmVhdHVyZSB0YXJnZXQgaW5zdGVhZCBvZiB0aGUgdGFyZ2V0IHdoZW4gYnVpbGRpbmcgdGhlIGZlYXR1cmUgc2V0CisKK2NvbW1pdCAxMWJmZjQ3MmNhN2IxZmNmZjBjMTYxODdhMWI4YTEzMDkzYmM5MWM0CitBdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXVnIDI5IDAwOjMzOjU1IDIwMTEgKzAyMDAKKworICAgIHRoZSBpcml4NiBidWlsZCBvbmx5IGRlZmluZXMgaXJpeDYsIG5vdCBpcml4CisKK2NvbW1pdCAzYzczYTE0MDdhMDgxZDQyZWJkZDkxZGZiY2IxZTRmMTUyYjdkZjRhCitBdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXVnIDI5IDAwOjA1OjEzIDIwMTEgKzAyMDAKKworICAgIHJlLWFkZCBzb2NrYWRkcl91bi5zdW5fcGF0aCBjb25maWd1cmUgY2hlY2sgKGxvc3QgaW4gcHJldmlvdXMgY29tbWl0KQorCitjb21taXQgMmUzZjAyZTAzYWVkMTI1Mzg0YmE0ZmUzZDgzNDk0ZDQzZjNhMjllOQorQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIEF1ZyAyOCAyMzo1MzozMCAyMDExICswMjAwCisKKyAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50ZW50LmMgZG9lc24ndCBidWlsZCBvbiBJUklYIHlldAorCiBjb21taXQgZjk1YWEzMTM3N2Q1NzJiMDQ5YjBiMzE2ZGJiMTYzYmY3YWNhOTNkNQogQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgU3VuIEF1ZyAyOCAyMzoyNTo0MCAyMDExICswMjAwCiAKICAgICBDSEFOR0VTOiBidWlsZGluZzogYnVpbGQgZml4IGZvciBzeXN0ZW1zIGxhY2tpbmcgZmllbGRzIG1zZ19jb250cm9sL21zZ19mbGFncyBpbiBzdHJ1Y3QgbXNnaGRyIChiYWNrcG9ydCkKIAorY29tbWl0IDdmNDdkOTM3NjVhYTM1YTU4Njg3ZWI5YjRmOWY3MDBlNDM0M2UxM2MKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBBdWcgMjYgMTE6MTE6MzUgMjAxMSAtMDcwMAorCisgICAgYWRkZWQgcmVxdWlyZWQgZmVhdHVyZXMgZm9yIG1mZCBoYW5kbGluZworCitjb21taXQgOWIyZTQyYTZlMDU1MGZiNzg5YzYwN2MzNTIwODgwZDRkYmMwY2YyNAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEF1ZyAyNiAxMTowODowOSAyMDExIC0wNzAwCisKKyAgICBhZGRlZCAuZnQgYW5kIC5mdC4xIGZvciBmZWF0dXJlIGZpbGVzCisKK2NvbW1pdCAzM2RjYmY1NmZjMDYyNmEzZTRmMTM1OTA5NWJkMjE3ZDFhNTY3Nzk0CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgQXVnIDI2IDExOjA3OjU4IDIwMTEgLTA3MDAKKworICAgIG5vX3dyaXRlX3N1cHBvcnQgc3VwcG9ydGVkCisKK2NvbW1pdCA5N2Q0MmVmZDc2OTM3Y2U3ZTRiYzQ4YTcyZWQ1YTExMGU0MjMxMDJkCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgQXVnIDI2IDEwOjA4OjUxIDIwMTEgLTA3MDAKKworICAgIGhhbmRsZSBuby13cml0ZS1zdXBwb3J0IHdpdGggaWZkZWZzCisKIGNvbW1pdCBlYThiZWQ3OWU4MWM0MmUzM2NiZjM3Y2E2ZjNjMDNjNTQ5OTg3YjIyCiBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBUaHUgQXVnIDI1IDA2OjU2OjIyIDIwMTEgLTA3MDAKQEAgLTMyNDMsNiArNzY5MSwyMSBAQAogCiAgICAgdXNlID4+IHRvIHByaW50IHRvIHN0ZGVycgogCitjb21taXQgY2VlMDM1OWM2ZmFlMmI4NWQ3YjkzMTg1OWU1MTdkODljZTA3MjJiYgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBdWcgMjMgMjM6NDM6MTkgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGQ6IERvIG5vdCBnZW5lcmF0ZSBhbiBvdXRwdXQgZmlsZSBvbiBmYWlsdXJlCisgICAgCisgICAgbWFrZSBzdXBwb3NlcyB0aGF0IG5vIG91dHB1dCBpcyBnZW5lcmF0ZWQgaWYgdGhlIGNvbW1hbmQgZmFpbGVkLiBDaGFuZ2UKKyAgICBmZWF0dXJlLXJlbW92ZSB0byBmb2xsb3cgdGhhdCBwcmVzdW1wdGlvbi4KKworY29tbWl0IGZlMzllNzI4OGNhOTMwZDJjOWFhYTgzMDFjYzlkOTVmMGMzOGYzNmIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gQXVnIDIxIDIxOjQ4OjE3IDIwMTEgKzAyMDAKKworICAgIENvcnJlY3QgdHlwbworCiBjb21taXQgMWYwODJhMzFjZDEzOGYxZjVlMjdiZTZkOTBhMWQ1NzkwZGMwZmZlNAogQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgVHVlIEF1ZyAyMyAyMzozNTo0MiAyMDExICswMjAwCkBAIC0zMjY3LDYgKzc3MzAsMTIgQEAKIAogICAgIGF1dG9yZWNvbmYKIAorY29tbWl0IDFhMjY0OGVhZjcxY2IwMTg5NTE1OTY2ODljNTE1ODhkY2E4MDYzYzUKK0F1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBBdWcgMjEgMDE6NDg6NTcgMjAxMSArMDIwMAorCisgICAgYXV0b3JlY29uZgorCiBjb21taXQgM2YyZjYxYjBlNjEzZDYxMDVlY2YyY2ViMzk1ZGUwYmRlMzdmM2NlMwogQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgU3VuIEF1ZyAyMSAwMTo0NzoxMyAyMDExICswMjAwCkBAIC0zMjg1LDYgKzc3NTQsMjQgQEAKIAogICAgIGZpeCBicm9rZW4gbGluZSB3cmFwCiAKK2NvbW1pdCA1YjU5MDBhNGY3ZGZlZTZlMWVjODY5ZTMyMzEwYjgwY2E2ZmIyM2ZlCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDE4IDEyOjI4OjA3IDIwMTEgLTA3MDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjcuMS5wcmUyCisKK2NvbW1pdCAzYjdlMmUzOTk0OWY4OGQ5YzU2ZWQ1Zjk5NDAyOGI5NDgxNmFiNzVjCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDE4IDEyOjIzOjI4IDIwMTEgLTA3MDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjcuMS5wcmUyCisKK2NvbW1pdCBlY2U2M2JmZTQ5OWM2MzBiZGFhZTYyMDA2NDhkMjkxODBjZTNhMTc5CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDE4IDEyOjAzOjE3IDIwMTEgLTA3MDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjEucHJlMgorCiBjb21taXQgMjhiNTQwNzA1MTQ3NTNlOGQ4YWJiNzE4YjIyNGQ2NTdhYjdhOGFiOAogQXV0aG9yOiBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBUaHUgQXVnIDE4IDExOjQ5OjU2IDIwMTEgLTA3MDAKQEAgLTMzMTMsNiArNzgwMCwxOCBAQAogCiAgICAgY2hhbmdlZCBjbGllbnRhZGRyIHNvIGl0IHJlZ2lzdGVycyBhcyBwcmUtbWliIHRvIGJlIHBpY2tlZCB1cCBiZWZvcmUgdGhlIHRyYW5zcG9ydHMgZ2V0IGNyZWF0ZWQKIAorY29tbWl0IGMwMjEzMWU1YjM1ZDI5Njc1NWJhZWM5OWJkMzYzMjA1YTg2MzA3ZGQKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBBdWcgMTcgMDk6MzQ6MDAgMjAxMSAtMDcwMAorCisgICAgZGV0ZWN0IHJlYWxseSBvbGQgdmVyc2lvbnMgb2YgTG9uZy5wbQorCitjb21taXQgNTAwZDZkZTA2YWE0ZmYzMzBhZWU0ZDc0OWE0Y2MzNzdiZWM4OWUwOQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEF1ZyAxNyAxODoxMTo0NyAyMDExICswMjAwCisKKyAgICBGaXggdGhlIGxvZyBtZXNzYWdlIHRoYXQgcmVwb3J0cyB0aGF0IGdldGhvc3RieWFkZHIoKSBpcyBtaXNzaW5nCisKIGNvbW1pdCA2NTgwNTU2Y2M3YmQ4MzNhZjczMWI2MmNlMWVkMjAxNzU2NGZlN2ViCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgogRGF0ZTogICBXZWQgQXVnIDE3IDE4OjA4OjAxIDIwMTEgKzAyMDAKQEAgLTMzMjcsNiArNzgyNiwxMiBAQAogICAgIAogICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgYzFiNWEwMzBkOGYwNDg3NmNkNWI5YWYwMDhjODc5Y2M0NjhiMjEyZi4KIAorY29tbWl0IGRhZmY0OWQ5YjMzNjllZmNjODdmMDVkYzg1OTEzNjJlODFhNDVmZGYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBBdWcgMTMgMTg6NDM6NDggMjAxMSArMDIwMAorCisgICAgV2luZG93czogTWFrZSB0aGUgUGVybCBhZ2VudCBtb2R1bGUgd29yayBhZ2FpbiB3aXRoIHRoZSBvcmlnaW5hbCBTTk1QX0ZSRUUoKSBkZWZpbml0aW9uLgorCiBjb21taXQgM2M3M2I0ODM4ZTYwNWIxNTBiYzMxNzMxM2YxNGViMzM0NDQ3MjlmOAogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KIERhdGU6ICAgU2F0IEF1ZyAxMyAxNzozODoyNyAyMDExICswMjAwCkBAIC0zNDg2LDEzICs3OTkxLDYgQEAKIAogICAgIGZpeCBDKysgY29tbWVudHMKIAotY29tbWl0IGQ1MzhiY2JjY2U2M2UxODkzNTcyZDhmMTU4M2ZkYzAyZjM1MWY4NGYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgotRGF0ZTogICBNb24gQXVnIDggMjI6MDc6NDMgMjAxMSArMDEwMAotCi0gICAgRGVmaW5lIF9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04gdG9rZW4KLSAgICAoYXMgcGVyIEFsZXgnIGJ1aWxkIGluc3RydWN0aW9ucykKLQogY29tbWl0IDQ0N2RkYzY2ZDkwZGQ5ZTVjMzEwNWIyNjhiNmE2M2JmYzU4MGI5MjQKIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgogRGF0ZTogICBNb24gQXVnIDggMjI6MDM6NTggMjAxMSArMDEwMApAQCAtMzUwNyw1ODgzICs4MDA1LDI1ODYyIEBACiAgICAgRGVmaW5lIF9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04gdG9rZW4KICAgICAoYXMgcGVyIEFsZXgnIGJ1aWxkIGluc3RydWN0aW9ucykKIAotY29tbWl0IGZmYTA1YjA1MWFjM2UyYjE5NzE5NWE5OTg5Y2M3YTkxZmU4ZDkyODIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ2hhbmdlczogVjUuNy4xIC0+IFY1LjcuMi5wcmUxCisKK2NvbW1pdCA4MTAxODVhZTBiMGNkMmFkNGQ0MjRhMWJhNzc1ZWY1Y2VhZjUwZjAzCiBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gQXVnIDggMTM6NTU6MzggMjAxMSAtMDcwMAorRGF0ZTogICBTYXQgSnVuIDIgMDk6MjQ6MTkgMjAxMiAtMDcwMAogCi0gICAgYSBuZXcgbWFjcm8gbnNhdXRvY29uZiB0byBydW4gdGhlIHJpZ2h0IHZlcnNpb24KKyAgICBtYWtlIGRlcGVuZCBmb3IgNS43LjIucHJlMQogCi1jb21taXQgYjQ1MTYwN2RjYTAxNWMxMTFlOTZmZGZlYjJkZGIwNjYxZmI0ZjcyNAorY29tbWl0IDYyNzE0NzFlMDEyODJmMzY3NTcyNGVhZjEzNThjZWIwZTk1ZGRkNGUKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBKdW4gMiAwODozMjo0MCAyMDEyIC0wNzAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNy4yLnByZTEKKworY29tbWl0IGZjYjc4MmFhODg5MzEzNGM3NDE0YTkyNmQ5MjY4NTk0ZjcyNWI5MTUKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBKdW4gMiAwODozMjoxOCAyMDEyIC0wNzAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS43LjIucHJlMQorCitjb21taXQgZTNiY2Q4N2M3MmZjZWE3NzA2ZTg2OGI1YWNlNzUyOTYwOTNmNzQ5NwogQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+Ci1EYXRlOiAgIE1vbiBBdWcgOCAyMToyMDozMiAyMDExICswMTAwCitEYXRlOiAgIFRodSBNYXkgMzEgMTQ6MDk6NDIgMjAxMiArMDEwMAogCi0gICAgRml4IGNhcGl0YWxpc2F0aW9uIG9mIE5ldC1TTk1QCisgICAgRml4IGRpc3QvcmVsZWFzZSBmb3JtYXQKIAotY29tbWl0IGM5NDgxMzA0NGE0YzRhNjA4ZTk4ZTgwMjIzMDc1YzZmYWYwNGVlMTEKK2NvbW1pdCBkODEzY2UyZWVlZmM2ODIyOWNmY2FmMjA2MDMyNDRjZGQ2ZDA5ZDNjCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxNDowNzo1MiAyMDEyICswMTAwCisKKyAgICBGaXggZGlzdC9yZWxlYXNlIGZvcm1hdAorCitjb21taXQgZmE3YmQ1ODFlMzc4MzY4NWRiMzljOWI0ZWFmODQ3YmU1YWM4NmZkMworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTM6NTM6MTAgMjAxMiArMDEwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNi4yLnJjMgorCitjb21taXQgMDczOWUyMzgyZDMxMTQ2YWNhMzIwNTI0NGNmNzA3ODhiNDBhNDI4ZAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTM6NTE6NDUgMjAxMiArMDEwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNi4yLnJjMgorCitjb21taXQgZDlhMTU0NDVhYTc0ZjUzMTZiZmM3MTFjMTU1ODQ2Nzg3MmMyOTU4YworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTM6NTA6MTIgMjAxMiArMDEwMAorCisgICAgbWFrZSBkZXBlbmQgZm9yIDUuNi4yLnJjMgorCitjb21taXQgYmNhYmQyYzk1NDJkYmViZDFkMzE5YjQ0OTQ0MTNiZGNjYTA2NjE0ZQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTM6Mzg6MzggMjAxMiArMDEwMAorCisgICAgUmVsZWFzZSBDYW5kaWRhdGUgZm9yIFY1LTYtcGF0Y2hlcworCitjb21taXQgYjQ3Mzg5OGMwYzVhYzllYjQ3YzdjMDVhM2Y3NDVlNGZmMmE3NmFhYQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTM6Mzg6MjggMjAxMiArMDEwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjYuMi5yYzIKKworY29tbWl0IDEzMTQyOWU3MDYyZmJhYTY1YjgyYWZmZWQxZmI5MmRmMmMwY2M4MTMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEzOjM4OjM4IDIwMTIgKzAxMDAKKworICAgIFJlbGVhc2UgQ2FuZGlkYXRlIGZvciBWNS02LXBhdGNoZXMKKworY29tbWl0IDFjODExMGIzM2I4MTA1Y2E2MTkwOTQ1YTM1ZmU3YWU5MDMyNTJkNjgKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEzOjIxOjM4IDIwMTIgKzAxMDAKKworICAgIEF2b2lkIHBlcmwgdmVyc2lvbmluZyBwcm9ibGVtcyB3aGVuIHNldHRpbmcgdXAgdGhlIGJ1aWxkIGVudmlyb25tZW50CisKK2NvbW1pdCA1MDhlY2UxNmU2ZjZmNDk1NjJkYTIwNDc5MmFlMDY0NDI2OTk5NGQxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMzoyMDo1OCAyMDEyICswMTAwCisKKyAgICBGaXggaGFuZGxpbmcgb2YgZGlzdC9yZWxlYXNlIG1lcmdlCisKK2NvbW1pdCA1YjhhODU0N2IxYTQ3ZDJmNWIyMDdmNDhmMjQ5NmU0MjQxZDkwMmM2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMToxMDo0OCAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS41LjIucmMyCisKK2NvbW1pdCA2YzMyOTE0YmYyOGQ2OTVkZjM0OWRjYTI2OWU0ODhiNTAxNzAwMzE2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMTowNzoyMiAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS41LjIucmMyCisKK2NvbW1pdCA5ZjVhODJhNWFmZGJiM2RhZWIyZmQ0MzdhMzA5ZjBiOGQzNTdjZjRiCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMTowNTozOSAyMDEyICswMTAwCisKKyAgICBtYWtlIGRlcGVuZCBmb3IgNS41LjIucmMyCisKK2NvbW1pdCAzOTIwM2YyOTQ3N2EzYmVkZjAxMmQ0MTEzNWQ4YWJkNmJjYWQwOGIxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMDo1NDoyNyAyMDEyICswMTAwCisKKyAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZSBmb3IgNS41LjIucmMyCisKK2NvbW1pdCAxN2U3OWVmMGZhZDc5NjA5YzViYTJmZWI0ZThiOWViNWQ3ZGI2ODg2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMDo0NjoxMSAyMDEyICswMTAwCisKKyAgICBSZWxlYXNlIENhbmRpZGF0ZSBmb3IgVjUtNS1wYXRjaGVzCisKK2NvbW1pdCA1ODIxYmU1YmJiNDAxOGRlZDI4MmZiYmJkNDgzMGNmMmVlYWRkOWUxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMDo0NTo1OSAyMDEyICswMTAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNS4yLnJjMgorCitjb21taXQgM2YyMTExZGU2NzMzYTA0ZTEyZDkxMGQzMDZhMzRkNjcxZTAwODc2MgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTA6NDY6MTEgMjAxMiArMDEwMAorCisgICAgUmVsZWFzZSBDYW5kaWRhdGUgZm9yIFY1LTUtcGF0Y2hlcworCitjb21taXQgY2NmOGZmMmM0ZGI2MDEyMmQ0MTMwMmU0YWViNzAwZTBiODY4MTA1ZgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgMjggMTA6MTg6NDMgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzUyNjU5OTogRG9uJ3QgaGFuZyBvbiByZXRyaWVkIGZhaWxpbmcgU05NUHYzIHJlc3BvbnNlcworCitjb21taXQgYzgxYzg0ODM5OTA5MTFmNDc0MzVkMzAwNTI1NWQ5MWMzN2FiOTJiMgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE1heSAyNyAxNDowOToyNiAyMDEyICswMjAwCisKKyAgICBGaXggQlNEIHRoYXQgZG93bm5vdCBhbHdheXMgbGlrZSBJUF9TRU5EU1JDQUREUiAtIHNvIHJldHJ5IHdpdGhvdXQKKworY29tbWl0IGZmY2UxZjJkYzJmOGIzMWFiZDAxZjkzYjI2ZGE3OGY0NzI2YTFlNjQKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBNYXkgMjcgMTQ6MDM6NTggMjAxMiArMDIwMAorCisgICAgRml4IE9TIG1pc3NpbmcgTVNHX0RPTlRXQUlUIChBSVgpLiBCYWNrcG9ydCBmcm9tIDUuNworCitjb21taXQgYzU3NTIxNjg1MDE4NWI1NjQ1NGRhZDAyNTNlMzE2NDk3OWUxMzUxMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE1heSAyNyAxMzo1NjowMSAyMDEyICswMjAwCisKKyAgICBGaXggbWlzc2luZyBpbmNsdWRlLiBGaXhlcyBTSUdTRUdWIG9uIEZyZWVCU0Q5IHg2NAorCitjb21taXQgNTgwNTg3ODc0OWMwODA2MmRlYmYwYTlkNzk4ZDA4ZmI5MTZjYWEyZAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE1heSAyNyAwNjoyMzoxOSAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogQWRkIG1pc3NpbmcgZGVidWcgdGFnCisKK2NvbW1pdCBkMWE0MmJiY2M3YjE0NzMwYzlhNmQ5OWM0ZjA0NzA5Nzg0M2E1NDliCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgTWF5IDI1IDA5OjAyOjI3IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBSdW4gbGlidG9vbCAtLW1vZGU9ZmluaXNoIG9uIHRoZSByaWdodCBkaXJlY3RvcnkKKworY29tbWl0IDFmYmYzMzcxMWExOWVhYzk3MzlhZDIzZjZmNjI1MWVhY2M0MWYxYzQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTWF5IDIyIDE0OjU0OjQ1IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IExpbnV4OiBQQVRDSDogMzUyNTk5ODogRG9uJ3QgdXNlIGFuIHVuaW5pdGlhbGlzZWQgdmFsdWUgaW4gZXJyb3IgbWVzc2FnZQorCitjb21taXQgMzJjMTY4NmI2N2RjODVjNGExODk1NzYzNjMwNjU2MDlkZmVkNWU2MQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBNYXkgMjIgMTQ6NTI6NTYgMjAxMiArMDEwMAorCisgICAgQXR0ZW1wdCB0byBtYXJrIHJlbGVhc2UtY2FuZGlkYXRlIGJyYW5jaGVzIGFzIHN1Y2guCisgICAgT21pdCBmaW5hbC1yZWxlYXNlLW9ubHkgc3RlcHMgd2hlbiBwcmVwYXJpbmcgcHJlTi9yY04gcmVsZWFzZXMKKyAgICAoUmVsaWVzIG9uIGEgdHdlYWsgdG8gdGhlIE1ha2VyZWxlYXNlIHBlcmwgbW9kdWxlcykKKworY29tbWl0IDRjNTYzM2YxNjAzZTRiZDAzZWQwNWMzN2Q3ODJlYzg5MTE3NTljNDcKK0F1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAZnJlZXNubXAuY29tPgorRGF0ZTogICBNb24gTWF5IDE0IDExOjQwOjA2IDIwMTIgLTA0MDAKKworICAgIE5FV1M6IHNubXA6IEJVRzogMzUyNjU0OTogQ1ZFLTIwMTItMjE0MSBBcnJheSBpbmRleCBlcnJvciBsZWFkaW5nIHRvIGNyYXNoCisKK2NvbW1pdCA2NWRkODNjMjI1NWVlNThlZGJmMGUyNTg2M2U1NWI1OGE0MTEzNjc5CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDIwOjMwOjQyIDIwMTIgKzAxMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjYuMi5yYzEKKworY29tbWl0IGFjNGJjNjVlMjkwOWYzYmQ4NWYzMmYwNGI1MDRmYTY1ZDJmNjQ1NTMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMjA6Mjg6MDYgMjAxMiArMDEwMAorCisgICAgbWFrZSBkZXBlbmQgZm9yIDUuNi4yLnJjMQorCitjb21taXQgYjc0OTk0ODY0MTk1MTE5ZWRiNmUxOWM4NTE0N2ZhYzAwYmNiOTNlMworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAyMDoxMzo0NiAyMDEyICswMTAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNi4yLnJjMQorCitjb21taXQgOTEzNTAwOTJjNDZlNjZkMDZkNzQxNDNmNDgxNjQ3M2RiNGQyNTE2MAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAxOTo1NjozMyAyMDEyICswMTAwCisKKyAgICBNYXJrIHZlcnNpb24tc3BlY2lmaWMgY2hhbmdlcyBfYmVmb3JlXyBwdXNoaW5nIHRvIGNlbnRyYWwgcmVwb3NpdG9yeQorCitjb21taXQgNzI0MWFjY2Q3MGI4MmQwZmNkNDRkNWE1MjM4YjJlZTk0NDU5MDBkYgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAxNzo1MzoxNyAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS41LjIucmMxCisKK2NvbW1pdCA3Yzc5NmExNWExZDFiYjg1ZmVlYTk0MGJkNGUzNTE2ODc3OTIwOTE5CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDE3OjUwOjQ5IDIwMTIgKzAxMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjUuMi5yYzEKKworY29tbWl0IDA3ZTI2OGJmYjY0YjBlYzY0NWIzZjdlODcyNjY5ODRmOTIxN2NmMTIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMTc6NDQ6MzcgMjAxMiArMDEwMAorCisgICAgbWFrZSBkZXBlbmQgZm9yIDUuNS4yLnJjMQorCitjb21taXQgMTZlYWFmNmMzYmExNDU5NmNhOWVmYWY0YjExNGYxYjcwOWY0MmI2OAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAxNzoyOTowMyAyMDEyICswMTAwCisKKyAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZSBmb3IgNS41LjIucmMxCisKK2NvbW1pdCBjNzI5NDY5ZWYxMjE1NDkzMGNmOWQxNTk2N2UxNjE4NmZiNDQ1ZjMwCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDE3OjI3OjIwIDIwMTIgKzAxMDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS41LjIucmMxCisKK2NvbW1pdCAxNDI1NzFkM2NlYTA4ZjBjMDcyZDI0YzFkMzlhNDNjNzQ0NmY4Y2U3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDE3OjAxOjAzIDIwMTIgKzAxMDAKKworICAgIFdoZW4gYnVpbGRpbmcgYSBuZXcgcmVsZWFzZSwgdGhlIGluc3RhbGxlZCB2ZXJzaW9uIG9mIHRoZSBwZXJsCisgICAgbW9kdWxlcyBtYXkgd2VsbCBiZSBkaWZmZXJlbnQgdG8gdGhlIHZlcnNpb24gYmVpbmcgYnVpbHQuCisgICAgVGhhdCBzaG91bGQgbm90IGJyZWFrIHRoZSBidWlsZC4KKworY29tbWl0IGViYTg2YjZmN2FmZjI2MWVlMGU2MTMzNGRmNzBkZTcxNTZlNWMzY2IKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMTc6MDE6MDMgMjAxMiArMDEwMAorCisgICAgV2hlbiBidWlsZGluZyBhIG5ldyByZWxlYXNlLCB0aGUgaW5zdGFsbGVkIHZlcnNpb24gb2YgdGhlIHBlcmwKKyAgICBtb2R1bGVzIG1heSB3ZWxsIGJlIGRpZmZlcmVudCB0byB0aGUgdmVyc2lvbiBiZWluZyBidWlsdC4KKyAgICBUaGF0IHNob3VsZCBub3QgYnJlYWsgdGhlIGJ1aWxkLgorCitjb21taXQgNWMwZjY0ZDZkYjJiNTkzZjdjYzBlZDJkNGY1NWI3YzU5MmI3NzRhOAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEFwciAyMyAyMjoyNToxNSAyMDEyICswMjAwCisKKyAgICBPbmx5IG91dHB1dCBjcHUgd2FybmluZ3Mgb25jZS4KKworY29tbWl0IGVlNThlNDgyN2I5ZmExNmU2NjM1Y2EwMDNlOGE0ZjExZGNiNWZiN2EKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBcHIgMjMgMjI6MTc6NDIgMjAxMiArMDIwMAorCisgICAgRml4IHNwZWxpbmcgaW4gZXJyb3JtZXNzYWdlLgorCitjb21taXQgMDNmNDg1ZGYyMmYyMGUxNDljZmFlOTRjNTdjYjgyZmVlY2I1ZDc0YgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEFwciAyMyAyMjoxMjoxMSAyMDEyICswMjAwCisKKyAgICBOb3QgYWxsIExpbnV4ZXMgdXNlIHJwbSAoZGViaWFuL3VidW50dSBjb21lcyB0byBtaW5kKQorCitjb21taXQgOTMwODM4MjI0Zjc4MTY5NmJkMzUyMjVmMjI1NjkzNDc0MTZmMWIxNgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEFwciAyMyAyMjoxMDoxNSAyMDEyICswMjAwCisKKyAgICBDaGVjayBuZWVkIGZvciAtbG0gdG8gdXNlIHJvdW5kL2V4cAorCitjb21taXQgYTA2MDljZjFmM2E2OTE3ZDI2MzcyNTczMjI0OGNkOTM3YTQ1YWQ5NAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IEFwciA3IDA4OjQwOjQ0IDIwMTIgKzAyMDAKKworICAgIFJlbW92ZSBsaW1pdGF0aW9uIG9uIGNvbmZpZ3VyYXRpb24gbGluZSBsZW5ndGguCisKK2NvbW1pdCAzMDU5NzMzMzhhNjNhZTU0YzVlMDJhODYyNmZiZTlhODA2NGRjYjdlCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgQXByIDcgMDA6MzI6MTkgMjAxMiArMDIwMAorCisgICAgUmVkdWNlIHZhcmlhYmxlIHNjb3Blcy4KKworY29tbWl0IGNjYWI0ZTlkM2VkNDI0YzM5ZDBkYzI3YmU2M2ZhNzZjNzQ2MWVhODEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBBcHIgNyAwMDoxNToyMiAyMDEyICswMjAwCisKKyAgICBJbnRlcm5hbGl6ZSB0aGUgbmFtZSBhbmQgbGluZSBudW1iZXIgb2YgdGhlIGN1cnJldCBjb25maWd1cmF0aW9uIGZpbGUKKworY29tbWl0IGNmODc0YWQ3YjlkYWY0ZmNjMGQ0NmNkZDAzNDQ3NGI0NzgwMDUzNDEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIEZyaSBBcHIgNiAyMTo0NzoyOCAyMDEyICswMjAwCisKKyAgICBSZXBsYWNlICNpZiAoQSkgQiAjZWxzZSBCICNlbmRpZiB3aXRoIEIuCisKK2NvbW1pdCBlZjllYTY0MWJjMjkwZWVjNTA2ODViNjA1MTliMzFiZWU4YjE0YTY5CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciA5IDIxOjA0OjA2IDIwMTIgKzAxMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjYuMi5wcmUyCisKK2NvbW1pdCAzNWFiYTE5NTlkZTExOWYxZmI4OTIwM2MzNzEwOWFhNmYwZTIxYzU3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciA5IDIxOjAwOjQwIDIwMTIgKzAxMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjYuMi5wcmUyCisKK2NvbW1pdCBlNDFmYmFmZjE4YWM5MDk1Y2Y0YTczOWEwNmVjMzlhMWE2Y2NmZGMxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciA5IDIwOjM1OjM1IDIwMTIgKzAxMDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS42LjIucHJlMgorCitjb21taXQgMTM3ZmU1ODJkNmNjNTYxMTQzMGRhYjQ2ZWYxNDRlZmQ4NGNmYzgwMworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIEZyaSBBcHIgNiAyMDo0Njo1NiAyMDEyICswMTAwCisKKyAgICBSZXZlcnQgY29tbWl0IDFmNGE4MjliMTgyNzVlNDk1NmNhOTFlNWVjMzcwZGYwMTVmMDYxMzMKKyAgICAoc25tcF9zdG9yZV9uZWVkZWQoKSBBUEkgaXMgbm90IGF2YWlsYWJsZSBpbiA1Lls0NV0ueCkKKworY29tbWl0IDJiN2U2NDI4OGMwMWE4YTA2MjAyNmM1MjFjYTMxYTVlODg1ZjMwY2MKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMTY6MTI6MTIgMjAxMiArMDEwMAorCisgICAgRnJlZUJTRC05OiBGaXggZm9yICdjb25zdCdpZnllZCBubGlzdCBhcmd1bWVudHMKKyAgICBCYWNrcG9ydCBvZiBlZDY1ZWNhNmU3ZjljZmE3MzgwYTc4ZDU2YzAxZWQzMTQ3NDViMTY5IGZyb20gVjUtNi1wYXRjaGVzCisKK2NvbW1pdCA3ZTk1ZDgwYjY5ODA1MTI1OTY0NWMwNzRhNTNmZmQyNjRhNmZhOTE2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDE2OjA2OjU2IDIwMTIgKzAxMDAKKworICAgIEZyZWVCU0QtOTogRml4IGZvciAnY29uc3QnaWZ5ZWQgbmxpc3QgYXJndW1lbnRzCisgICAgQmFja3BvcnQgb2YgZWQ2NWVjYTZlN2Y5Y2ZhNzM4MGE3OGQ1NmMwMWVkMzE0NzQ1YjE2OSBmcm9tIFY1LTYtcGF0Y2hlcworCitjb21taXQgMWE5YjdiN2MwMmUyZGVlZmU5OTRkNTk1YTdjYzFkZDJmZmJlZWUxZAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgMiAxNTo1MToyMCAyMDEyICswMTAwCisKKyAgICBGaXggY29tcGlsYXRpb24gb24gRnJlZUJTRCA5Lnggd2l0aCAncmVjZW50JyBoZWFkZXIgc2h1ZmZsaW5nCisgICAgQmFja3BvcnQgb2YgYzUzZDhjMzUyNWY1OTBmMjIxM2QzNWIwZGE5NDEyMzg2MmYzZTM2NiBmcm9tIFY1LTUtcGF0Y2hlcworICAgIChQYXRjaCAjMzM2MzMwOCAtIG9taXR0aW5nIHR3ZWFrcyB0byBjb25maWd1cmUpCisKK2NvbW1pdCAzZDlkZGI0MWUyNjNiYzFhNzhmOWY5NDQwYjhkNGFkNGY4NmM4MmUxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDEwOjM2OjE4IDIwMTIgKzAxMDAKKworICAgIEZpeCB0eXBvCisgICAgQmFja3BvcnQgb2YgNWI3MDJiMDI0YjYwMTc2ZDdmNTY5OWI5MmU1NWRhNTBhOGRlYWU3MSBmcm9tIFY1LTYtcGF0Y2hlcworCitjb21taXQgMGQzNWM2MDk1NjRiNjZhMWZmZTgxNTU2ZDM3YWRmMDUwM2MzODljZQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgMiAxMDoxNTowOCAyMDEyICswMTAwCisKKyAgICBQcm92aWRlIG1pc3NpbmcgZGVmaW5pdGlvbiBvZiBORVRTTk1QX1BSSW8KKyAgICAodXNlZCBpbiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX3NvbGFyaXMyLmMpCisKK2NvbW1pdCBhNzkxNDFhNDE5OTUzZDAxMGE2OTg5ZThiODhmNGRmMTI3Mzk0ZDM4CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDA5OjE5OjI2IDIwMTIgKzAxMDAKKworICAgIEhlYWRlciBmaWRkbGluZyBmb3IgRnJlZUJTRCxPcGVuQlNELERyYWdvbmZseQorICAgIEJhY2twb3J0IG9mIGY3YjBkZTE1MTgwMDJjNmU4ZjliOTRlZjNkZWI4ODgyZTFlOTMzOGUgZnJvbSBWNS03LXBhdGNoZXMKKworY29tbWl0IGFkZjc0YmY3NTNkMzk3MDM1N2FmZDYzMzgwMzI1NjI0MWQ5YzdiODcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMDg6MjA6NDYgMjAxMiArMDEwMAorCisgICAgRml4IElQdjYgVENQICYgVURQIHRhYmxlcywgKkJTRCBzdXBwb3J0IChpbmNsdWRpbmcgT3BlbkJTRCkKKyAgICBCYWNrcG9ydCBvZiBjb21taXRzIDVjZDE1NzM2MjU0NzFjMDU4M2U5MDg3YWVjNjgwMmI3NzE1N2Q1YTIKKyAgICAgIGFuZCA1MGQ3M2YwZDU2ZmUyMmM1OTA1MzBiM2UzMDVkNDFkY2RhYzNjZTAwIGZyb20gVjUtNi1wYXRjaGVzCisKK2NvbW1pdCBkOTU1NWFjYjlmNDdjM2FhOGZkZTRiYzIwYTQ0ZDdjYTYxODFhOGE5CiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBNb24gQXVnIDggMjE6NTY6MTUgMjAxMSArMDIwMAorRGF0ZTogICBTdW4gTWFyIDI1IDE4OjQ4OjEyIDIwMTIgKzAwMDAKIAotICAgIFJldmVydCAiQ0hBTkdFUzogV2luZG93czogQXZvaWQgdGhhdCBpZiB0aGUgTmV0LVNOTVAgUGVybCBtb2R1bGVzIGhhdmUgYmVlbiBidWlsdCB3aXRoIGFub3RoZXIgdmVyc2lvbiBvZiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyB0aGFuIEFjdGl2ZVBlcmwgdGhhdCB1c2luZyBvbmUgb2YgdGhlc2UgUGVybCBtb2R1bGVzIHRyaWdnZXJzIGEgIkZyZWUgdG8gd3JvbmcgcG9vbCIgY3Jhc2guIFRoaXMgcmVncmVzc2lvbiB3YXMgY2F1c2VkIGJ5IGNvbW1pdCAzYjE0YzU5Y2Y4Mjc4ZDQxMDIwN2ZmNDJkZWJkYTI2MzY0MjZhNDY4ICh0aGUgbmV0c25tcF9mcmVlKCkgaW50byBTTk1QX0ZSRUUoKSBjaGFuZ2VzIGluIHRoZSAqLnhzIGZpbGVzKS4iCi0gICAgCi0gICAgVGhpcyByZXZlcnRzIGNvbW1pdCA3ZjQyZDBkOTMzMjA0ODQxNTIyNzE0MjdjYzk4MDhjYmRhNDliYmQwIGJlY2F1c2UgdGhhdCBjb21taXQgaXMgbm90IHN1aXRhYmxlIGZvciB0aGUgNS40IGJyYW5jaC4KKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBBdm9pZCBkYW5nbGluZyBwb2ludGVycyAoYmFzZWQgb24gcGF0Y2ggMzUwMzI1OSkKIAotY29tbWl0IDU4Y2E3M2QwMzU4OWIwOTc0ZDkyNmJkZmRjMzkyNzA5OWZiYTIxMTUKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBBdWcgOCAxMToyNDowOSAyMDExIC0wNzAwCitjb21taXQgODJhOGI0N2VlOTZlNWQyOWEyYjdhYzNjYTAwNzIyZDczN2Q1YjQ3OQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1hciAyOSAyMjozMTo1NiAyMDEyICswMjAwCiAKLSAgICBkaXNwbGF5IHRoZSBicmFuY2ggd2UnbGwgY29tbWl0IHRvCisgICAgUnVubmluZyBhdXRvaGVhZGVyIC8gYXV0b2NvbmYKIAotY29tbWl0IGQ0MzcyOWJlZmUxMmJkZWZjODcwODg5YmRmZTE4MmU3NjkzZjFmM2IKLUF1dGhvcjogVmxhZGltaXIgS29uZHJhdGlldiA8d3VsZjIwMDFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gQXVnIDggMTE6MjA6MzAgMjAxMSAtMDcwMAorY29tbWl0IDljYThkOTM5YWIzOTMzMDZhMWQwZjE0NmM5Y2I3MGVhMGNiMTlkNDkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXIgMjkgMjI6MzA6MzggMjAxMiArMDIwMAogCi0gICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIIDMzODY2MzM6IGZyb20gd3VsZjIwMDE6IGZpeCBpbnRlZ2VyIG92ZXJmbG93IGluIGRpc2sgcGVyY2VudCBjYWxjdWxhdGlvbnMKLSAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKyAgICBSdW5uaW5nIGF1dG9oZWFkZXIgLyBhdXRvY29uZgogCi1jb21taXQgM2JjNTY4MzMzNGU1NjYzYzU4OTI0MTk2ZWRkNjY0OTZmZjgxNzBjMgotQXV0aG9yOiBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gQXVnIDggMTE6MTI6MjcgMjAxMSAtMDcwMAorY29tbWl0IGNlY2Q0ODY5ZGViNjhmM2Q0YzcxZTc2OGQ1YjQwZGQ1NzY0NDY5MjUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXIgMjkgMjI6Mjk6MzEgMjAxMiArMDIwMAogCi0gICAgQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0ggMzM4NzEzOTogZnJvbSB5YWJlcmF1bmV5YTogQXZvaWQgc2VnZmF1bHQgaWYgdHJhcHNlc3MgdHJhbnNwb3J0IGVsZW1lbnQgY2FudCBiZSBwYXJzZWQKLSAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKyAgICBSdW5uaW5nIGF1dG9oZWFkZXIgLyBhdXRvY29uZgogCi1jb21taXQgMWQxYmZkNWY0NTFjMmJjNDIwYjcxMGM5OGM3OWQwNGJkZWY0MzkxYgotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEF1ZyA4IDExOjEwOjUyIDIwMTEgLTA3MDAKK2NvbW1pdCBhMWE0NTEzYmQzZTRlNjE0MjAwZjZkYjVhMDJmNjFkNmM4ZWVmYjMyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgV2VkIE1hciAyOCAwOTo0Nzo0NSAyMDEyICswMTAwCiAKLSAgICBuc3NmcGF0Y2hhcHBseTogc3BsaXQgdGhlIGRpc3BsYXllZCBnaXQgY29tbWl0IGNvbW1hbmQgaW50byBtdWx0aXBsZSBzZWdtZW50cworICAgIERveHlnZW4tc3R5bGUgZG9jdW1lbnRhdGlvbiBmaXhlcyAoYmFja3BvcnQgb2YgZ2l0IGNvbW1pdCBjMDk5MDNhNDJlOWQ5NzMzMWZkOWU0OGVlODMxYTg1YWZkZjljNzBhKQogCi1jb21taXQgZDM3M2M0ZmQ4YzM5MWFmZTBiOWUwMmE2MGI1Y2Q2NjFiYzkwMzlkYworY29tbWl0IDliZGJjY2ExMjJjMzdkYTMwNGZjNmFhNjkzOTcyOTQ3NWY5MGY1ZmQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBXZWQgTWFyIDI4IDA5OjMwOjQ5IDIwMTIgKzAxMDAKKworICAgIERveHlnZW4tc3R5bGUgZG9jdW1lbnRhdGlvbiBmaXhlcyAoYmFjay1wb3J0IG9mIEdJVCBjb21taXQgYzA5OTAzYTQyZTlkOTczMzFmZDllNDhlZTgzMWE4NWFmZGY5YzcwYSkKKworY29tbWl0IDFmNGE4MjliMTgyNzVlNDk1NmNhOTFlNWVjMzcwZGYwMTVmMDYxMzMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTWFyIDI3IDIxOjQxOjI0IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAzNDk1Njk3OiBTdG9yZSBwZXJzaXN0ZW50IHNubXBUYXJnZXQgdGFibGUgY2hhbmdlcworCitjb21taXQgMWY3NWYzNzdkMGRiMDE3NTRjMGMxNjFkYzQ0MzczMDgxYmVlZjUyMAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBNYXIgMjcgMjE6MTQ6MDYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogRnJlZUJTRDogUEFUQ0hFUzogMzQ4OTM4NzogSW5zdGFsbCBGcmVlQlNEIDEwIGhlYWRlciBmaWxlIChwbHVzIG90aGVyIG1pc3NpbmcgdmVyc2lvbnMpCisKK2NvbW1pdCAzZDcyYzllNzhmMmFkODE3YzlkMWQ4Mjk3NzMyN2JiYjIwZDYzYWI5CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE1hciAyNyAyMTowNjozMSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDM0ODc4Njc6IERvbid0IHNraXAgbWlzc2luZyBpZlhUYWJsZSBlbnRyaWVzIChpZkNvbm5lY3RvclByZXNlbnQgRkFMU0UpCisKK2NvbW1pdCAxMjkwNjU3OGFiMzBjZjc3NmQwODBjMGVmMzAyNWIzMDMzNGQ3NjU1CiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBNb24gQXVnIDggMTc6MjM6NDMgMjAxMSArMDIwMAorRGF0ZTogICBNb24gTWFyIDI2IDE2OjE3OjQ1IDIwMTIgKzAyMDAKIAotICAgIENIQU5HRVM6IHNubXBsaWI6IEZpeCBhIGNyYXNoIHRoYXQgY291bGQgYmUgdHJpZ2dlcmVkIGJ5IGNhbGxpbmcgX21pYmluZGV4X2FkZCgpIHdpdGggdGhlIHNlY29uZCBhcmd1bWVudCBub3QgZXF1YWwgdG8gLTEuCisgICAgRElTTUFOLVBJTkctTUlCOiBGaXggZXZlbiBtb3JlIG1lbW9yeSBsZWFrcwogCi1jb21taXQgOGNhN2ZmMWU2OTJjYWVjNDE4NmI3ODhjOWFlMmQyN2JlMjEzMjkwZgotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEF1ZyA4IDEwOjMzOjU2IDIwMTEgLTA3MDAKLQotICAgIGZpeCBhbm90aGVyIGZ1bmN0aW9uIHR5cG8KLQotY29tbWl0IDU1NmU5MzhlODJhN2VlMmMxMGZhOGMwYjdjN2EzNGU5ZTY1YTZkNWEKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBBdWcgOCAxMDowNToyMCAyMDExIC0wNzAwCi0KLSAgICBmaXggZnVuY3Rpb24gbmFtZSB0eXBvCi0KLWNvbW1pdCA5NjllODY2YWY5ODNkOTg2YTI2YmViY2E4NWZlZjBmNmM2MjNjZTI2Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gQXVnIDggMDk6NTY6NDMgMjAxMSAtMDcwMAotCi0gICAgbWFrZSBuc3B1bGwvbnNwdXNoIGNoZWNrIGZvciBhIGNsZWFuIHJlcG8KLQotY29tbWl0IDdlNmZkYzhiMmEzZDg2YTc5NTQzNjczNDM1MzcxNjIxYTI4NTg3MzcKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBBdWcgOCAwOTo1NjoxMyAyMDExIC0wNzAwCi0KLSAgICBuZXcgZnVuY3Rpb24gIm5zbWFrZWFsbCIgdG8gdGVzdCBidWlsZGluZyBvbiBldmVyeSBicmFuY2gKLQotY29tbWl0IGUyNWJlN2M4MmQ1NTQ1ZDg4YWJlYTEwZTRlMjU1YzkyYmVkM2RlNmUKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBBdWcgOCAwOTo1MzowMyAyMDExIC0wNzAwCi0KLSAgICBkZWZhdWx0IHRvIG1lcmdlCi0KLWNvbW1pdCBiY2I4MWI3OTZkZDZhOTIxOTVkNmRiMTMxNzdhZDMwZjA1ZmM2M2Y3Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gQXVnIDggMDk6NTE6MjYgMjAxMSAtMDcwMAotCi0gICAgc2VwYXJhdGUgbnNzeW5jIGludG8gbnNwdWxsIGFuZCBuc3B1c2gKLQotY29tbWl0IGU0NmIxNzAxMTdmZTc4YTJmYWFiZWYxYWRjYzNkNmQ0ZDU2OTYwMzYKK2NvbW1pdCBjY2ZkNWNhNmZlMTAzMTNkNjE4MWQyNGJiYjE3OTc4MjVhOTdkYTEwCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBNb24gQXVnIDggMTc6MjM6NDMgMjAxMSArMDIwMAorRGF0ZTogICBNb24gTWFyIDI2IDE1OjUxOjE2IDIwMTIgKzAyMDAKIAotICAgIENIQU5HRVM6IHNubXBsaWI6IEZpeCBhIGNyYXNoIHRoYXQgY291bGQgYmUgdHJpZ2dlcmVkIGJ5IGNhbGxpbmcgX21pYmluZGV4X2FkZCgpIHdpdGggdGhlIHNlY29uZCBhcmd1bWVudCBub3QgZXF1YWwgdG8gLTEuCisgICAgRElTTUFOLVBJTkctTUlCOiBFbGltaW5hdGUgZHVwbGljYXRlIGNvZGUKIAotY29tbWl0IDdmNDJkMGQ5MzMyMDQ4NDE1MjI3MTQyN2NjOTgwOGNiZGE0OWJiZDAKK2NvbW1pdCA5ZmRhMjY2ODcyMmYwOGRkYmZkZDY3YTIyMzlkOGIwMjFkYjY0YTgzCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBNb24gQXVnIDggMDk6NTA6NTEgMjAxMSArMDIwMAorRGF0ZTogICBNb24gTWFyIDI2IDE1OjQ4OjQ2IDIwMTIgKzAyMDAKIAotICAgIENIQU5HRVM6IFdpbmRvd3M6IEF2b2lkIHRoYXQgaWYgdGhlIE5ldC1TTk1QIFBlcmwgbW9kdWxlcyBoYXZlIGJlZW4gYnVpbHQgd2l0aCBhbm90aGVyIHZlcnNpb24gb2YgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gdGhhbiBBY3RpdmVQZXJsIHRoYXQgdXNpbmcgb25lIG9mIHRoZXNlIFBlcmwgbW9kdWxlcyB0cmlnZ2VycyBhICJGcmVlIHRvIHdyb25nIHBvb2wiIGNyYXNoLiBUaGlzIHJlZ3Jlc3Npb24gd2FzIGNhdXNlZCBieSBjb21taXQgM2IxNGM1OWNmODI3OGQ0MTAyMDdmZjQyZGViZGEyNjM2NDI2YTQ2OCAodGhlIG5ldHNubXBfZnJlZSgpIGludG8gU05NUF9GUkVFKCkgY2hhbmdlcyBpbiB0aGUgKi54cyBmaWxlcykuCisgICAgRElTTUFOLVBJTkctTUlCOiBXcml0ZSBhIGxvb3AgYXMgYSBsb29wCiAKLWNvbW1pdCBhM2I4NjU0YTIzMmM1NjNiYzk3Y2M5OTI1Y2Q5ODU5MGEzMGM1YmM1Citjb21taXQgY2JjMThlYjc2M2JhNmRmNjllZjcwNjY4YTU0ZDc1YmYzNWU3OTUwMwogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgTW9uIEF1ZyA4IDE3OjI0OjE4IDIwMTEgKzAyMDAKK0RhdGU6ICAgTW9uIE1hciAyNiAxNToyNDowOCAyMDEyICswMjAwCiAKLSAgICBGaXggYSByZWNlbnRseSBpbnRyb2R1Y2VkIE1pbkdXIGNvbXBpbGVyIHdhcm5pbmcKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBGaXggbW9yZSBtZW1vcnkgbGVha3MKIAotY29tbWl0IGEwZGQzY2FmMjU5MjZlNDM0NjU3MThiZjQxN2E0NjRjMmZiMzYzNjYKK2NvbW1pdCBjNzcyNTE5MjQ3OGFlYzAxOGZiNGFlZmE2MDk0NmUwNGE0MDZjMDBjCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBTdW4gQXVnIDcgMTA6MTc6MDEgMjAxMSArMDIwMAorRGF0ZTogICBNb24gTWFyIDI2IDEzOjQzOjI0IDIwMTIgKzAyMDAKIAotICAgIGZpbmQgXCggLW5hbWUgJyouW2NoXScgLW8gLW5hbWUgJyouaW4nIC1vIC1uYW1lICcqLmRzcCcgXCkgLXBlcm0gLXUreCB8IHhhcmdzIC1yIGNobW9kIGEteAorICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IEF2b2lkIHJlYWRpbmcgZnJlZWQgbWVtb3J5IHdoZW4gZGVsZXRpbmcgYSByb3cgZnJvbSBhIHRhYmxlCiAKLWNvbW1pdCBhOWEyNTI1MjJmYmU3ZGMxZWQ3MGZmMjcyMWE0ZjgxNTgzYzBkOTJhCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgQXVnIDUgMTA6MjA6NTEgMjAxMSAtMDcwMAotCi0gICAgbWFrZSByb2xsdXAgYW5kIHN5bmMgc3VwcG9ydCAtLXJlYmFzZSBhbmQgY2hhbmdlIHRoZSBkZWZhdWx0IGJhY2sgdG8gbWVyZ2UKLQotY29tbWl0IDk2ZjVmNDdhZDQyNzk3MmQ4ZDlhNmNlMDZjNWUxNjE0NzM2MjA4M2IKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBBdWcgNSAwOToyNToyNSAyMDExIC0wNzAwCi0KLSAgICB0cnkgYSBtdWx0aXBsZSBicmFuY2ggcHVzaAotCi1jb21taXQgMGRiYzg2OWZlYzA3ZDhlOTBkYmQxYzk1NDkzZWU3Y2JjNjIzYzk1YworY29tbWl0IGE2YmU3Mzk1NjZmMzEwZDc0NDFmZDdmNTQ5ODllMzk0NDZmN2ExNDMKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIEZyaSBBdWcgNSAxMjo0MDozMSAyMDExICswMjAwCitEYXRlOiAgIE1vbiBNYXIgMjYgMTM6NDI6MjggMjAxMiArMDIwMAogCi0gICAgQ0hBTkdFUzogV2luZG93czogYnVpbGQuYmF0OiBHZW5lcmF0ZSBQREIgZmlsZXMgaW4gcmVsZWFzZSBtb2RlLgorICAgIEV4dGVuZCBESVNNQU4tUElORy1NSUIgdGVzdAorCitjb21taXQgOGE5YjU3MjkxNDUzY2I4YWVjMjhlNzY2YzU5NDcwMWVkMTljNGZjNgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE1hciAyNiAyMTowMzo0MSAyMDEyICswMjAwCisKKyAgICBGaXggZm9yIERyYWdvbkZseSAzCisKK2NvbW1pdCBlNWM5YTMyZjc5ZWFjMmU4NTUyN2M5Y2YwNTA4N2NkYWU5YjM1YTZjCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTWFyIDI2IDIwOjU5OjUzIDIwMTIgKzAyMDAKKworICAgIERyYWdvbkZseSBuZWVkcyBfS0VSTkVMX1NUUlVDVFVSRVMgdG8gY29tcGlsZSBpcHY2IGNvZGUKKworY29tbWl0IGNkNDNiYzA5YTM5YmQ5N2ZmNWU3MTlhMmNlMjMyY2U0MjQ2MDBhNjUKK0F1dGhvcjogRGF2aWQgSW1ob2ZmIDxkaW1ob2ZmQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciAyNCAxNTo0NzoxNyAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSCAzNTEwNDU0OiBBbGxvdyB0aGUgdXNlIG9mIDAuMC4wLjAvMCBhcyBhbGlhcyBmb3IgZGVmYXVsdAorCitjb21taXQgZTJmYzE1ZjllNWE2ZTNlMzZiZTVmNDg5NjAxY2JmNmJmNzMxOTE3ZgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciAyNCAxNToyMTozOCAyMDEyICswMTAwCisKKyAgICBGaXggVENQIHN0YXRlIHZhbHVlcyBmb3IgRHJhZ29uRmx5CisKK2NvbW1pdCA0MzJmZTNkZGY1NGYyYzk4ZjkzNjk1OTQ2OWNiOWIwMTRkNTk5ZjA2CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgTWFyIDI0IDE1OjEwOjUyIDIwMTIgKzAxMDAKKworICAgIFJlcXVpcmUgcGVybCB0byBkbyBwYXNzX3BlcnNpc3QgdGVzdAorCitjb21taXQgMzdkMjc3MGNmNTBjOTgwMjNlZWJhOTBlMjVkMzcyYmZmNzMxNmFkYQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXIuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgTWFyIDI0IDE1OjA2OjQwIDIwMTIgKzAxMDAKKworICAgIEZpeCBUQ1Agc3RhdGUgdmFsdWVzIGZvciBEcmFnb25GbHkKKworY29tbWl0IDg2YTk0OGQ4NjkxZTg4MWQ1NTU5MWRjYWJkZGMyNzM5Y2U3MmIzMGUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUBuYmEtbGludXguc2Iuc3RhdHNiaWJsaW90ZWtldC5kaz4KK0RhdGU6ICAgU2F0IE1hciAyNCAxNTowMTozNyAyMDEyICswMTAwCisKKyAgICBQcm9wZXJseSBmaW5kIHBhc3MgaGVscGVycyBmb3IgdGVzdGluZy4KKworY29tbWl0IGZlMjZhM2M0ZjI5ZjA0NmJmNjVlZDUyZTlkOTQwNTRiNjc1ZmJjNGIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBNYXIgMjIgMDk6MDQ6NDIgMjAxMiArMDEwMAorCisgICAgRElTTUFOLVBJTkctTUlCOiBMaW1pdCBzb3VyY2UgY29kZSBsaW5lcyB0byA4MCBjb2x1bW5zCisKK2NvbW1pdCA3NDViYWZjZGNjOWM4ZTg0NjE2ZDRlMjc0ZGIyYTM4NGJmMjM0ZGEyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgTWFyIDIyIDA4OjU1OjA1IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IE1ha2UgcGluZyBpbXBsZW1lbnRhdGlvbiBpbmRlcGVuZGVudCBvZiBudHBkIGNsb2NrIGp1bXBzCisKK2NvbW1pdCBkYTY5MjVlNjc2M2NhZGJlMDJmNGE4YmJmZTY4YTM2MmU1MzVhZDVlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTWFyIDIwIDEwOjM4OjM2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IEFkZCB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxNTRkaXNtYW5waW5nbWliX3NpbXBsZQorCitjb21taXQgZmE2MDZkZDdjYTZhZmY5MzA4ZDRlOGIwMWJiY2RlMTQ4ZjQ0MTI3MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciAyMCAxNjo0OToyMSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBNYWtlIHBpbmdpbmcgbG9jYWwgaW50ZXJmYWNlIGFkZHJlc3NlcyB3b3JrCisKK2NvbW1pdCA2MTdhODNiYTc5OTU3NWM4NGM2NmY2YjFjNDgwZWY2MzMxNjFhNjRjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTWFyIDIwIDE2OjI4OjQ2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IEZpeCBhIHNvY2tldCBsZWFrIHRyaWdnZXJlZCBieSBwaW5naW5nIGEgcmVtb3RlIGhvc3QKKworY29tbWl0IDYyNWY1NWMyNzJlYzYyODFlMzhkOGUzMGViNTNmZDUxNTE2YjAwYWUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBNYXIgMjIgMDk6NTQ6NTUgMjAxMiArMDEwMAorCisgICAgRElTTUFOLVBJTkctTUlCOiBDb252ZXJ0IGEgZHluYW1pY2FsbHkgYWxsb2NhdGVkIHZhcmlhYmxlIGludG8gYSBzdGFjayB2YXJpYWJsZQorCitjb21taXQgYjQ4ZjE5YWQ0YjRhYTY4YzNlMTZlMmE3MmRmMzdiOWMwY2QzNmM0YQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciAyMCAxNjoyNDowNyAyMDEyICswMTAwCisKKyAgICBESVNNQU4tUElORy1NSUI6IEFkZCBtb3JlIGRlYnVnZ2luZyBzdGF0ZW1lbnRzCisKK2NvbW1pdCBkNzRjYjM5NjYxNzU4OTI1NjJmNWUzYTliMTY4M2FjYmEyYzIyZTA3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTWFyIDIwIDExOjQ1OjE4IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IEZpeCBzZXZlcmFsIG1lbW9yeSBsZWFrcworCitjb21taXQgMGIxYTc3Njc0Njc4Y2M5YTE1YmUzZTc3MDBkM2NlZjY1MGVkMDJjNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciAyMCAxMjowMDozMCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBEbyBub3Qgc2VuZCB0aGUgY29udGVudHMgb2YgdGhlIHN0YWNrIG92ZXIgdGhlIG5ldHdvcmsKKworY29tbWl0IDEzOTAyM2NkM2FiNTE2MzFjYzEwZTI4NjZkNzFhYmNmOTlhZTRjMWIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBNYXIgMjEgMDg6NTY6MDcgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogRG9uJ3QgY2FsbCBleGl0KCkgdXBvbiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlCisKK2NvbW1pdCAxNjliNmFhYTdiNjE4MjdjYzFhZDBiM2FlZWFlM2E3MjI5ZGQyNWQ4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTWFyIDIxIDA4OjUzOjI2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IEZpeCBJUHY2IHNvY2tldCBsZWFrIGluIGVycm9yIHBhdGhzCisKK2NvbW1pdCBhMGJlMzJhZDA1M2E3MWZhOTYxMzRkNTVlNTQyYmIwN2Q0ZjAyOTdkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTWFyIDIwIDExOjQzOjQ2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IEF2b2lkIHRoYXQgaG9zdCBuYW1lIHJlc29sdXRpb24gZmFpbHVyZSBjYXVzZXMgYSBjcmFzaAorCitjb21taXQgYmY5YmZmNjQ1NTY3ODdkNzY2ZWUyZWYyZDU3OGFmYjkyMDcxOWYzYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE1hciAyMSAwODo1MTo1NSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBDb252ZXJ0IHByaW50ZigpIHN0YXRlbWVudHMgaW50byBzbm1wX2xvZygpIGFuZCBERUJVR01TRygpLXN0YXRlbWVudHMuCisKK2NvbW1pdCA1ZDc0YzAxMjQ1NTIzYTlkOGRiMWVkYTI3ZDFlZmFlMmViYzEwNGZiCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWFyIDIxIDE4OjQwOjAyIDIwMTIgKzAxMDAKKworICAgIE5ldyBNSUI6IFZSUlBWMy1NSUIKKworY29tbWl0IDViMzhmMDYyYjk5YjZlZjM2NzA4ZTJjN2RlNDk2NWEzMTkyNjEyZTkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXIgMjEgMTg6MzQ6NDggMjAxMiArMDEwMAorCisgICAgRm9yIHNhZmV0eSwgc2l6ZW9mIHRoZSByaWdodCB2YXJpYWJsZSBpbiBtZW1jcHkKKworY29tbWl0IGU1ZjgyNzgyZGEwNWVmYTdjMGU2ZGMyYmY1YTQxZWUxMTg2OGY0NjkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXIgMjEgMTg6MzM6MjEgMjAxMiArMDEwMAorCisgICAgRml4IGZvciBoclNXUnVuIGRhdGEgZm9yIEZyZWVCU0QKKworY29tbWl0IDgzMjc1NjVlODIzMjcwZDEwYTQ1MDQ1NjhlZGJlNWI1YWUzMjNhNTUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXIgMjEgMTg6MzE6NTQgMjAxMiArMDEwMAorCisgICAgQ2xlYW4gdXAgdmFyaWFibGVzIGZvciBPcGVuQlNEL05ldEJTRAorCitjb21taXQgMTcwZjZmMDI3YmY0ZjkxNzRiNzA3MzUzMGRhNGQwN2Y0MDBiYmE1OAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1hciAyMSAxODoyODo1OCAyMDEyICswMTAwCisKKyAgICBNb3ZlIGRlY2xhcmF0aW9ucyBpbiBmcm9udCBvZiBzdGF0ZW1lbnRzCisKK2NvbW1pdCBkYmI0NTczYjY5ZmFlODVjZGM5MzFiMjg5MmI1Y2U0ZTViMTZiMzIxCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWFyIDIxIDE4OjIzOjM2IDIwMTIgKzAxMDAKKworICAgIFJlcXVpcmUga2VybmVsX25ldGJzZCBmb3IgTmV0QlNENgorCitjb21taXQgZjExNjgxZjE1YWFkN2Q5YTUyZmEyOTgxMmVjYmI1MDdmMWI3ZmUyNAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFdlZCBNYXIgMjEgMTI6MzY6MzggMjAxMiArMDAwMAorCisgICAgQ2hlY2sgZm9yIG9sZCB0YXJiYWxscyAoYW5kIHVucGFja2VkIGRpc3RyaWJ1dGlvbnMpIGJlZm9yZSBzdGFydGluZy4KKyAgICBUaGVzZSBjYW4gY29uZnVzZSBzdGVwcyBzdWNoIGFzICJtYWtlIGRlcGVuZGNoZWNrIiwgdGhhdCBkbyBhICdmaW5kJworICAgIG9uIHRoZSBjdXJyZW50IHRyZWUsIGFuZCB3b3VsZCBkZXNjZW5kIGludG8gc3VjaCB1bnBhY2tlZCBzb3VyY2UgdHJlZXMuCisKK2NvbW1pdCA0NzBkY2Q0YjZjM2ZmMTFmZjBhMzUzMmE3MzQwYTU2Y2ZmZDY5MDk4CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgV2VkIE1hciAyMSAxMjozMjoxMyAyMDEyICswMDAwCisKKyAgICBEb24ndCBydW4gIm1ha2UgZG9jczsgbWFrZSBtYW5jcCIgaWYgdGhlcmUncyBubyBNYWtlZmlsZSBwcmVzZW50CisKK2NvbW1pdCBjOWFjNDIwMzQzZTE2ZGYyYjcwNjVmNWJmMjc5MGRmNDRlMjQ3ZmJhCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE1hciAyMCAxMDoyNjoxMCAyMDEyICswMDAwCisKKyAgICBBbGxvdyBkaXN0cmlidXRpb24gYXMgcGFydCBvZiBub3JtYWwgTmV0LVNOTVAgcGFja2FnZXMuCisKK2NvbW1pdCA1OTk5ZjYwYzU3NzIzZjIzZjNjMjU0YWY1N2ZkYjEwYWYzMDFhOGViCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gTWFyIDE4IDE5OjAzOjA4IDIwMTIgKzAxMDAKKworICAgIFJlZ2VuZXJhdGUKKworY29tbWl0IDI3NWQyMDQwMzZhNjA3ZTNkZjUwZTg0NDdkNGJjNzU1ZTlkYjAyZmQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBBdWcgMjggMjE6Mjk6MDMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IE1ha2UgaXQgcG9zc2libGUgdG8gdXNlIC0tZGlzYWJsZS1hcHBsaWNhdGlvbnMvLS1kaXNhYmxlLWFnZW50IHRvZ2V0aGVyIHdpdGggLS1lbmFibGUtbWluaW1hbGlzdAorCitjb21taXQgYmRjY2M4NzU3MTAyOTVhYWNmNTBmNzFlYjFjMWQyZWU5N2YzMzZmZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgRnJpIE1hciAxNiAyMDoxMDo1OCAyMDEyICswMTAwCisKKyAgICBEbyBub3QgZGVjbGFyZSB0aGUgbG9jYWwgdmFyaWFibGVzIGZvciBvcGFxdWVfc3BlY2lhbF90eXBlcyB1bmxlc3MgdGhhdCBvcHRpb24gaXMgc2V0LgorCitjb21taXQgYjgwYTY3ZGEwNTJhZGNhMWI1YTY0NGRiODNhNzgyZTE1YzIyMzdjMworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgRnJpIE1hciAxNiAxOTo1MDowMyAyMDEyICswMTAwCisKKyAgICBDaGVjayB0aGF0IHRoZSBkYXRhIGV4aXN0IGJlZm9yZSB0cnlpbmcgdG8gcmVhZCBpdAorCitjb21taXQgZWZhZTg2YmJhNTk2MjQ5MWQ0MmI3N2I5MzUxOTFhM2ViMjVkZDkzOQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgV2VkIE1hciAxNCAwMTowNTozMyAyMDEyICswMTAwCisKKyAgICBQYXJ0aWFsbHkgcmV2ZXJ0ICJNZXJnZSByZW1vdGUgYnJhbmNoICdvcmlnaW4vVjUtNy1wYXRjaGVzJyBpbnRvIFY1LTctcGF0Y2hlcyIKICAgICAKLSAgICBDSEFOR0VTOiBXaW5kb3dzOiBidWlsZC5iYXQ6IFdyaXRlIFBEQiBmaWxlcyB0byB0aGUgb3V0cHV0IGRpcmVjdG9yeSBpbnN0ZWFkIG9mIHRoZSBpbnRlcm1lZGlhdGUgZGlyZWN0b3J5LgorICAgIENvbW1pdCBkMzVhMTg2MDIxN2U3MjNlNGY4NjZkZDk4ZWY2NjIxNjY1OTM0YzRhIGFjY2lkZW50YWxseSByZXZlcnRlZAorICAgIAorICAgIDRhMmU1YmNkNTZjZDJhZmIzNmViMTVkNzU0ZTJmZWU4ODhkZDUwYzAgKGhyaF9zdG9yYWdlIGlzIGEgcHJvcGVyIHJlcGxhY2VtZW50IGZvciBocl9zdG9yYWdlKQorICAgIDBkZDFlNTQ1NTdkMWJhNDk4YjU1ZDAxN2IwYTkzZThjY2Y5YmQ1MjIgKENIQU5HRVM6IHNubXBkOiBVRFAtTUlCOiBSZXBvcnQgdGhlIHByb3BlciBhZGRyZXNzIGluIHVkcExvY2FsQWRkcmVzcykKKyAgICA1MTE2ZDQ4Mzc4ZWNmMDNlNzIyZjMwMTBhZDQ3YmYyMmEzZmJjYjhjIChSZWR1Y2Ugc2NvcGUgb2YgcHJlZml4X3ZhbCBzdWNoIHRoYXQgdGhlIGNvbXBpbGVyIGRvZXNuJ3Qgd2FybiBhYm91dCBhbiB1bnNlZCB2YXJpYWJsZSkKKyAgICAxMGY1NjZmNGQ0Y2JiM2UyMDUwMjNjMjM2NjkyODllNGJmZDA4OWNiIChwZXJsL1NOTVAvU05NUC54czogRml4IGEgY29tcGlsZXIgd2FybmluZykKKyAgICAKKyAgICBhbmQgcGFydCBvZgorICAgIAorICAgIDZlNzRkNjRmODVhNTlkNTBlNDYxZGI0YzM0YWM3NmY5ZGU0NjhiZmIgKEF2b2lkIHVzaW5nIGdyZXAgb3B0aW9ucyAtcSBhbmQgLXcgYmVjYXVzZSBncmVwIGluIFNvbGFyaXMpCisgICAgCisgICAgVGhpcyByZXZlcnRzIHRob3NlIHJldmVydHMuCiAKLWNvbW1pdCA1YjAyOTFmOTFlZDk0ODM1ZjhhZTdkOTQzNmIxNWY0MGFmYjE5NDczCitjb21taXQgYWFlZGQ1OWNjMmRhNzAxNTI3ZGMyZDI2MWQ0ZTlmODVmMTZlNzUwNAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE1hciAxMSAyMDo1NzozOCAyMDEyICswMTAwCisKKyAgICBBbGxvdyBtYWtlIHRlc3Qgd2hlcmUgdGhlIHNvdXJjZSBwYXRoIGNvbnRhaW5zIHRoZSBzdHJpbmcgTmV0LVNOTVAgdG8gc3VjY2VlZC4KKworY29tbWl0IDRiOTRkNzk2OTE4YTRlZWFlNjhhYjIxYWE1M2Q0NDRhOGI1YzI5MjEKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIEZyaSBBdWcgNSAxMzoxNzoxOSAyMDExICswMjAwCitEYXRlOiAgIEZyaSBNYXIgOSAwODowNDo1OSAyMDEyICswMTAwCiAKLSAgICAuZ2l0aWdub3JlOiBBZGQgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUuZGVmIGFuZCBwZXJsL1NOTVAvdAorICAgIFVuYnJlYWsgY29tcGlsYXRpb24gb24gRnJlZUJTRCA0CiAKLWNvbW1pdCAyZjhkNGY1Nzk2Y2JjMWM3ZTk2N2FjZGFhODAxOWIyNGYxNTIwYTM2Citjb21taXQgMTBmZTZiODMzMjRhZDM3ZDE4YjkzN2NjOGM2ZGU5NGRlNTM0ZDAzNQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXIgOCAxMzowNDowNyAyMDEyICswMDAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS42LjIucHJlMQorCitjb21taXQgZTExMjJlZGMxYTVmZTc5NzZiMDY1MDQ0MTM0ZDM5ZTdkYjU5ODVlYQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXIgOCAxMjo0MzoxOSAyMDEyICswMDAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS42LjIucHJlMQorCitjb21taXQgYTYxM2QzYTgzNDkxMjIwNmQxYmE1OTcxZTQ0MWEzZWE2YjM2YWYyMworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXIgOCAxMjozMzowMyAyMDEyICswMDAwCisKKyAgICBtYWtlIGRlcGVuZCBmb3IgNS42LjIucHJlMQorCitjb21taXQgMGVmMzRlNjUxOWRmY2I4MmM5N2RmODQyNzU0N2MwOGRjZjgxZTY5YQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXIgOCAxMDoxMTozMCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRml4ZWQgc25tcGQgJy1kJyBvcHRpb24uCisgICAgCisgICAgTm93IGl0IGR1bXBzIHBhY2tldHMgYWdhaW4uCisKK2NvbW1pdCA4ZTY5NzQyZjE0M2U0ZmMxMTE5NmU1YjJlZDY2YzhmN2Y1M2ZkMDJmCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE1hciA2IDA5OjI0OjIxIDIwMTIgKzAwMDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS42LjIucHJlMQorCitjb21taXQgYzRlMDBiOGMzZTEwMTBjZGNhYjVlNmMwMmQ2MGQ3NWRmOWM2ZGNmMgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBNYXIgNiAwOToyNDowNSAyMDEyICswMDAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS42LjIucHJlMQorCitjb21taXQgMzk0OTAxMDRhM2FiNTgyMzVhYWNlMmY5ZDg3MWMyNjZkYzQ0ODVlZQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXIgNSAwOTowNjo1MiAyMDEyICswMDAwCisKKyAgICBNYXJrIHRoZSBjaGFuZ2VzIG1ha2UgYXMgcGFydCBvZiB0aGUgcmVsZWFzZSBwcm9jZXNzIGFzIHNwZWNpZmljIHRvCisgICAgdGhlIHBhcnRpY3VsYXIgYnJhbmNoIGJlaW5nIHJlbGVhc2VkLiAgVmVyc2lvbiB0YWdzLCBjaGFuZ2Vsb2cgZW50cmllcworICAgIGFuZCB0aGUgbGlrZSBzaG91bGRuJ3QgcHJvcGFnYXRlIHRvIGxhdGVyIGJyYW5jaGVzLgorCitjb21taXQgNGEyZTViY2Q1NmNkMmFmYjM2ZWIxNWQ3NTRlMmZlZTg4OGRkNTBjMAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE1hciA1IDIwOjU5OjM4IDIwMTIgKzAxMDAKKworICAgIGhyaF9zdG9yYWdlIGlzIGEgcHJvcGVyIHJlcGxhY2VtZW50IGZvciBocl9zdG9yYWdlCisKK2NvbW1pdCBjZTg1ODMyOTMyY2NkOTE2YzQyMzE5MTE0YzQwODg1YTQ2NmE5ZDBlCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTWFyIDUgMjA6NTY6NDAgMjAxMiArMDEwMAorCisgICAgTW9yZSBmaXhlcyBmb3IgU29sYXJpcyBzaAorCitjb21taXQgMGRkMWU1NDU1N2QxYmE0OThiNTVkMDE3YjBhOTNlOGNjZjliZDUyMgogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgRnJpIEF1ZyA1IDEyOjAyOjUxIDIwMTEgKzAyMDAKK0RhdGU6ICAgTW9uIE1hciA1IDE1OjA4OjI2IDIwMTIgKzAxMDAKIAotICAgIENIQU5HRVM6IFdpbmRvd3M6IEF2b2lkIHRoYXQgcnVubmluZyB0aGUgUGVybCByZWdyZXNzaW9uIHRlc3RzIG1ha2VzIHNubXBkIGNyYXNoCisgICAgQ0hBTkdFUzogc25tcGQ6IFVEUC1NSUI6IFJlcG9ydCB0aGUgcHJvcGVyIGFkZHJlc3MgaW4gdWRwTG9jYWxBZGRyZXNzIGluc3RlYWQgb2YgMC4wLjAuMC4gTWFrZXMgdGVzdCBUMTYwc25tcG5ldHN0YXQgcGFzcyBhZ2Fpbi4gRml4ZXMgYSBidWcgaW50cm9kdWNlZCBpbiBjb21taXQgYzc2ZmI5NmY2NWUzM2JhMmZkMjEyYTkyMWU4YzM4NjE1NWVlNWM3YS4KIAotY29tbWl0IDBjNzUwN2ExZTAxMDFmNGIxMzVhM2VkOGE5NjE2MzViODcwOTNmMWEKK2NvbW1pdCA1MTg5MTdlOWYzOWY3YTlkM2MzYmYzYTg2NWU4YWMwZTMwMjZkNjAwCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBGcmkgQXVnIDUgMTA6NTc6MzMgMjAxMSArMDIwMAorRGF0ZTogICBNb24gTWFyIDUgMTQ6MDQ6NTQgMjAxMiArMDEwMAogCi0gICAgVW5icmVhayB0aGUgVjUtNC1wYXRjaGVzIC0gcmV2ZXJ0IGNvbW1pdCBkMmM0NzY4YmQyZWZiNDg2NjQ0MzRhODMxNDI1YzJkZGE4NWQ3MTMzIChDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzMzYyMjMzOiBmcm9tIHlhYmVyYXVuZXlhOiBNdXRlIHVubmVjZXNzYXJ5IGNhbm5vdCBmaW5kIG1vZHVsZSBub2lzZSkuCisgICAgc25tcGxpYi9zbm1wVURQRG9tYWluLmM6IEZpeCBzb3VyY2UgY29kZSBpbmRlbnRhdGlvbgogCi1jb21taXQgOWI3ZmY0YWJmYzk1MjliYjllMThhM2I4NzQyMDE1MjBiYzBlNzE0MQorY29tbWl0IDI2NTE5MDljY2NlYWJmY2ZhZGFmOTQyYzAyNDUwZTI4ZmU4MzdkYzkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBOb3YgOSAxMjowNDowNCAyMDEwICswMDAwCisKKyAgICBQYXNzZXMgbm93IG9uIE1pbkdXIHRvby4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTY1MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGU0MWYxMTVlNDAzMDRjOTQxYmExN2Q2N2UyNDcxMDcyMmQ5MDc0MWIKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIEZyaSBBdWcgNSAxMTowNzo1NSAyMDExICswMjAwCitEYXRlOiAgIE1vbiBNYXIgNSAxMzozOToxNyAyMDEyICswMTAwCiAKLSAgICBVbmJyZWFrIHRoZSBWNS00LXBhdGNoZXMgYnJhbmNoIC0gd2FzIGJyb2tlbiBieSBjb21taXQgYmY3MTc4YjBiMjI1ODdkNDNkMWE4MGMyNjljZDIxNmJkNTkzMDIxNCAoYWdlbnQ6IGNoYW5nZSB0eXBlIG9mIHNubXBfZW5hYmxlYXV0aGVudHJhcHMgdG8gbG9uZykKKyAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBBdm9pZCB1c2luZyBncmVwIG9wdGlvbnMgLXcgYW5kIC1xIGJlY2F1c2UgZ3JlcCBpbiBTb2xhcmlzJyBkZWZhdWx0IHBhdGggZG9lc24ndCB1bmRlcnN0YW5kIHRoZXNlLgogCi1jb21taXQgMDMwNDllMTAzNmMyYzA2Y2JkNmU1ZWQ1ZmUwODQ5OTlkNTQ2OGE1ZgorY29tbWl0IDUxMTZkNDgzNzhlY2YwM2U3MjJmMzAxMGFkNDdiZjIyYTNmYmNiOGMKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIEZyaSBBdWcgNSAxMDo1Njo0OCAyMDExICswMjAwCitEYXRlOiAgIE1vbiBNYXIgNSAxMDo0NzoyMCAyMDEyICswMTAwCiAKLSAgICBVbmJyZWFrIHRoZSBWNS00LXBhdGNoZXMgYnJhbmNoIC0gd2FzIGJyb2tlbiBieSBjb21taXQgMGU2ODQyZmUwODBjZWM4NTNiMDhjZDIzMjMwMTVhYmFiYzM4MWNlMSAoQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSCAzMzgzNDQxOiBmcm9tIHNhY2hpbnN1cmVuZHJhbjogRml4IGNyYXNoIG9uIDUuNC40IGR1ZSB0byBhY2Nlc3Mgb2YgZnJlZWQgbWVtb3J5KS4KKyAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmM6IFJlZHVjZSBzY29wZSBvZiBwcmVmaXhfdmFsIHN1Y2ggdGhhdCB0aGUgY29tcGlsZXIgZG9lc24ndCB3YXJuIGFib3V0IGFuIHVuc2VkIHZhcmlhYmxlIGlmIGl0IGlzbid0IG5lZWRlZC4KIAotY29tbWl0IDNhYTk0OWZiZGZjMWE5NGE4MzQwYWQ4YmFmOGIzMTQ3NTZhMGJiOWQKK2NvbW1pdCA2ZTc0ZDY0Zjg1YTU5ZDUwZTQ2MWRiNGMzNGFjNzZmOWRlNDY4YmZiCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBGcmkgQXVnIDUgMTA6MjY6MTUgMjAxMSArMDIwMAorRGF0ZTogICBNb24gTWFyIDUgMDk6MjI6MzEgMjAxMiArMDEwMAogCi0gICAgV2luMzIgbWFrZWZpbGUgd2hpdGVzcGFjZSBjbGVhbnVwCisgICAgdGVzdGluZy9ldmFsX3Rvb2xzLnNoOiBBdm9pZCB1c2luZyBncmVwIG9wdGlvbnMgLXEgYW5kIC13IGJlY2F1c2UgZ3JlcCBpbiBTb2xhcmlzJyBkZWZhdWx0IHBhdGggZG9lc24ndCB1bmRlcnN0YW5kIHRoZXNlIG9wdGlvbnMuCiAKLWNvbW1pdCA5NDM5MzBlMWUxMjQzODVmZDk0NzM4YjZkY2RhMzdkMjlkYzdhYzdmCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMTA6NDE6NDEgMjAxMSAtMDcwMAotCi0gICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIIDMzMjQ3Njk6IGZyb20gaGFyZGFrZXI6IEZpeCAtV3VudXNlZCB3YXJuaW5nCi0gICAgCi0gICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0KLWNvbW1pdCA5MGMwZTc1ZjNlMGRlNzNkNmFhYWIzZTNkNzE0NmYxOGE4ZjllMTg3Citjb21taXQgMTBmNTY2ZjRkNGNiYjNlMjA1MDIzYzIzNjY5Mjg5ZTRiZmQwODljYgogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgVGh1IEF1ZyA0IDE5OjEyOjI0IDIwMTEgKzAyMDAKK0RhdGU6ICAgTW9uIE1hciA1IDEwOjQ3OjM5IDIwMTIgKzAxMDAKIAotICAgIHNubXB1c206IEZpeCByZWNlbnRseSBpbnRyb2R1Y2VkIGNvbXBpbGVyIHdhcm5pbmdzCisgICAgcGVybC9TTk1QL1NOTVAueHM6IEZpeCBhIGNvbXBpbGVyIHdhcm5pbmcKIAotY29tbWl0IDJkZDllZDA4NThkYWE5ODJiNDE2MGI0ZDJhN2Q1YTJiODA5NDQxNzEKLUF1dGhvcjogU3R1YXJ0IEhlbmRlcnNvbiA8dDBqdzJmdTBrbWdAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMTA6MDY6NTcgMjAxMSAtMDcwMAorY29tbWl0IDQ0YWEyNjU4OTFjZDU2M2Y3ZjQxMTRlZjI1ZGNmN2FhZjNiMTRlOWEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWFyIDUgMDk6MDY6NTIgMjAxMiArMDAwMAogCi0gICAgQ0hBTkdFUzogb3BlbmJzZDogUEFUQ0ggMzM1NzkzMjogZnJvbSB0MGp3MmZ1MGttZzogQ2xlYW5pbmcgaW4gbWVtb3J5X25ldGJzZC5jCi0gICAgCi0gICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisgICAgTWFyayB0aGUgY2hhbmdlcyBtYWtlIGFzIHBhcnQgb2YgdGhlIHJlbGVhc2UgcHJvY2VzcyBhcyBzcGVjaWZpYyB0bworICAgIHRoZSBwYXJ0aWN1bGFyIGJyYW5jaCBiZWluZyByZWxlYXNlZC4gIFZlcnNpb24gdGFncywgY2hhbmdlbG9nIGVudHJpZXMKKyAgICBhbmQgdGhlIGxpa2Ugc2hvdWxkbid0IHByb3BhZ2F0ZSB0byBsYXRlciBicmFuY2hlcy4KIAotY29tbWl0IGY4ZjZmNzA3MTY0NGI3ZTc3MWRmOGU2MmE5MzIyN2NmOTYwYTA0ZTcKLUF1dGhvcjogVmxhZGltaXIgS29uZHJhdGlldiA8d3VsZjIwMDFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDk6NTY6MjkgMjAxMSAtMDcwMAorY29tbWl0IGRhZTRlMTZiZTg2MTE3ODYxZjYzZDFhMmY5ODFhZDM2MTQxOGY1YzYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWFyIDUgMDk6MDY6NTIgMjAxMiArMDAwMAogCi0gICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIIDMzODYxNDc6IGZyb20gd3VsZjIwMDE6IGZpeCBVQ0QtU05NUC1NSUI6OmRza1VzZWQKLSAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKyAgICBNYXJrIHRoZSBjaGFuZ2VzIG1ha2UgYXMgcGFydCBvZiB0aGUgcmVsZWFzZSBwcm9jZXNzIGFzIHNwZWNpZmljIHRvCisgICAgdGhlIHBhcnRpY3VsYXIgYnJhbmNoIGJlaW5nIHJlbGVhc2VkLiAgVmVyc2lvbiB0YWdzLCBjaGFuZ2Vsb2cgZW50cmllcworICAgIGFuZCB0aGUgbGlrZSBzaG91bGRuJ3QgcHJvcGFnYXRlIHRvIGxhdGVyIGJyYW5jaGVzLgogCi1jb21taXQgMjEwMWJiMmQ3YWQ2ZGIwMzhjNzU1YWE5MTkzYzhhY2UwZGJkNGY1OAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA5OjI4OjA2IDIwMTEgLTA3MDAKK2NvbW1pdCAyOGY2MjI2ZjJlMjI4YjhjYTI0ODQ4OTczNWY4NjUwMmIyY2NlMGExCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1hciA1IDA5OjA2OjUyIDIwMTIgKzAwMDAKIAotICAgIGFkZGVkIHRoZSBtaXNzaW5nIGZyZWVic2Q5LmggZmlsZSBmcm9tIHRoZSBmcmVlYnNkOSBwYXRjaAorICAgIE1hcmsgdGhlIGNoYW5nZXMgbWFrZSBhcyBwYXJ0IG9mIHRoZSByZWxlYXNlIHByb2Nlc3MgYXMgc3BlY2lmaWMgdG8KKyAgICB0aGUgcGFydGljdWxhciBicmFuY2ggYmVpbmcgcmVsZWFzZWQuICBWZXJzaW9uIHRhZ3MsIGNoYW5nZWxvZyBlbnRyaWVzCisgICAgYW5kIHRoZSBsaWtlIHNob3VsZG4ndCBwcm9wYWdhdGUgdG8gbGF0ZXIgYnJhbmNoZXMuCiAKLWNvbW1pdCBiNmE0ODFmYTMwNjI4OTNlNTg5YmY2MTYzYzlkMDZkMGYyMDUzMjQwCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDk6Mjc6MDUgMjAxMSAtMDcwMAorY29tbWl0IDQwMDIyYTY5Nzk1ODI1OWNjZmJiM2ZlZDQ0ZWIzYzQ3MmY1ZTgzN2UKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBNYXIgNCAxMDozNzo0MSAyMDEyICswMTAwCiAKLSAgICBpZ25vcmUgKi5vcmlnIGFuZCAqLnJlagorICAgIFNvbGFyaXMgc2ggZG9lcyBub3QgdW5kZXJzdGFuZCAidGVzdCAtZSIKIAotY29tbWl0IGNjNTEzNGU1M2QxYzIzM2RjNDFlMzFmYmI3OGZhYWIwOThmMDkzNjEKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwOToyNjo0NCAyMDExIC0wNzAwCitjb21taXQgNzczYWYwYzQyZTA3N2JlYmRhZWNmMWMwY2FmMzkzMjg1YTc2ODhmMQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciAzIDE3OjE5OjMwIDIwMTIgKzAxMDAKIAotICAgIGhlbHAgb3V0cHV0IGRlc2NyaWJlcyByZWJhc2UgdnMgbWVyZ2UgYmV0dGVyCisgICAgQ2xlYW4gdXAgbnNyb2xsdXAgY29tcGxpY2F0aW9ucwogCi1jb21taXQgYjM3MmU1YWIzMGFhMTU1NzQxZTk0ZGYyMmUwNzUyNTM1YzU5ZTRiYgotQXV0aG9yOiBTdHVhcnQgSGVuZGVyc29uIDx0MGp3MmZ1MGttZ0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwOToyMjoyOCAyMDExIC0wNzAwCitjb21taXQgZWU3MTA0OWMzZTIxYzFkMGUzNDI0Mjk3MTM2NjUyYmJlMGUzOWQ4NQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciAzIDE2OjQ5OjQxIDIwMTIgKzAxMDAKIAotICAgIENIQU5HRVM6IG9wZW5ic2Q6IFBBVENIIDMzNTc5Mjc6IGZyb20gdDBqdzJmdTBrbWc6IFJlY29nbmlzZSBvcGVuYnNkNQotICAgIAotICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorICAgIG1pYmdyb3VwL2ljbXAuYzogYWRqdXN0IGlmZGVmcyB0byBtYWtlIGl0IGNvbXBpbGUgb24gQlNEJ3MKIAotY29tbWl0IDA1NDhhNGU5N2IyYTFmMDM5OWU1OGM0ZWZjMDA0Yzk0OTczOThjZDYKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwOToyMjoxNSAyMDExIC0wNzAwCitjb21taXQgY2U5NjAwMzYxZTY2NWRkZTE3YWY5ZDhhYjE2ZDdjZTg1ZGMwNTY0MworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1hciAyIDIxOjM5OjU1IDIwMTIgKzAxMDAKIAotICAgIGZpeCB3aGVyZSBhcmd1bWVudHMgYXJlIHNldAorICAgIGRvdDNTdGF0c1RhYmxlIGhhcyBidWdzIDotKAogCi1jb21taXQgM2IzNzgwYmNhOWFkZWViZjRlZjc1MDhhZWU2YjhlYmNiOTRmNjU2YwotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA5OjIwOjQwIDIwMTEgLTA3MDAKK2NvbW1pdCBkZmZhY2Y2ZmEwNzU1ZTE3MDBjYmFjMjViODQ0MTg1YWJkODA3YTBhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWFyIDIgMjE6Mzg6MTAgMjAxMiArMDEwMAogCi0gICAgc3BsaXQgbnNzZnBhdGNoYXBwbHkgaW50byB0d28gcGFydHM6IGFwcGx5IGFuZCBjb21taXRpbmcKKyAgICBwYXNzcGVyc2lzdCB0ZXN0IG5lZWRzIC91c3IvYmluL3BlcmwKIAotY29tbWl0IDA0MjI1MTRhNjJiY2FhZTYwMDUwMTdkN2U5ZWQ0ODUwNzVmZTcwMWMKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwOToxNToyNSAyMDExIC0wNzAwCitjb21taXQgODcyNjk5NWM3YThhZWY2NzRjNGYxNjRiMTg3MWMzN2JiZGNkYWQ1MAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1hciAyIDIxOjM2OjU4IDIwMTIgKzAxMDAKIAotICAgIHBhdGNoIHVzaW5nIC1OCisgICAgZ3JlcCAtdyBmYWlscyB3aXRoIE9wZW5CU0QgYW5kIFNvbGFyaXMgMTAtNjQKIAotY29tbWl0IGRjNzU1YTZhZWI5YjljODg5NzI3ZDlmYzg0MmZjODlmNzI5ZTZlYzAKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwODozMzoyNSAyMDExIC0wNzAwCitjb21taXQgMWViNDc0NWIyM2NjM2E4Mzk4NjRlN2Y2ZWEyODM1NWIwNTY2ZWI2NworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1hciAyIDIxOjM1OjQ5IDIwMTIgKzAxMDAKIAotICAgIGFkZGVkIHNwYWNpbmcgdG8gbWF0Y2ggdGhlIGxhdGVyIGJyYW5jaGVzCisgICAgU29sYXJpcyBuZWVkcyAvdXNyL3hwZzQvYmluL2dyZXAgdG8gdW5kZXJzdGFuZCAtcQogCi1jb21taXQgN2I3MjZlMTAzYzE5NjBmNGM4NjAzODU5YzlhOGQ4YWE4YzQwNDUyMAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA4OjMyOjIzIDIwMTEgLTA3MDAKK2NvbW1pdCA5OTU0YjRiNzQxZmQ4YzYzZDYxMjhiZDA1MjcyOThjOGU0ZTk4OWZjCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWFyIDIgMjE6MzQ6NDUgMjAxMiArMDEwMAogCi0gICAgcmVtb3ZlZCBhY2NpZGVudGlhbGx5IGR1cGxpY2F0ZWQgY29kZQorICAgIE1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSBwcm9wZXIgc3JjZGlyIGZvciBvdXQtb2Ytc291cmNlIGJ1aWxkcwogCi1jb21taXQgZWNiYWIwYTk4YTAyZmRlNmJiY2E3ZGQzNzBiY2Q5YzNjYTc2YWZmZQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA4OjI3OjQxIDIwMTEgLTA3MDAKK2NvbW1pdCA3ODM2OTAwMmJlMjcxMWYwYWE4NzZiNjRhNGUxMGIwOTBjYzI0MWNkCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWFyIDIgMjE6MzM6MzEgMjAxMiArMDEwMAogCi0gICAgbnNzeW5jIHN1cHBvcnRzIC0tbWVyZ2Ugbm93CisgICAgTm90IGFsbCBtYWtlIHZlcnNpb25zIGRlZmluZSAkKFJNKQogCi1jb21taXQgMDA3OGUyMjQ3MGViMGZkZDZkYzAyZTIwODEzMzUxYWNkYzE1ODk2NAotQXV0aG9yOiBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDg6MjM6MjIgMjAxMSAtMDcwMAorY29tbWl0IDk0MjQ1YjI5YTNjZGE4OTQ3NWM2ZWFiNWQ5NDkzYzY2NTdmZjM4ZTMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXIgMiAyMToyNDoyNCAyMDEyICswMTAwCiAKLSAgICBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzMzYyMjMzOiBmcm9tIHlhYmVyYXVuZXlhOiBNdXRlIHVubmVjZXNzYXJ5IGNhbm5vdCBmaW5kIG1vZHVsZSBub2lzZQotICAgIAotICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorICAgIE1ha2UgYXV0b2NvbmYgMi42OCBoYXBweQogCi1jb21taXQgZWI3OGRiMmI2ZTI3NzRhNDQ5N2Q4NzY4YzEzOGI0ZjE0YzVmNWE3ZgotQXV0aG9yOiBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDg6MTk6MTYgMjAxMSAtMDcwMAorY29tbWl0IDQ0YWNkNmMyODVmYjU2MTRiNGM5NjExYjFhYmRlY2E5ZGQyOGU0YmIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXIgMiAyMToxMjo0NyAyMDEyICswMTAwCiAKLSAgICBDSEFOR0VTOiBmcmVlYnNkOiBQQVRDSCAzMzYzMzA4OiBmcm9tIHlhYmVyYXVuZXlhOiBGaXggY29tcGlsYXRpb24gb24gRnJlZUJTRCA5Lnggd2l0aCByZWNlbnQgaGVhZGVyIHNodWZmbGluZwotICAgIAotICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorICAgIEZpeCBzcGVsbGluZyBvZiBtaWIgbW9kdWxlIGZzeXNfZ2V0ZnNzdGF0cwogCi1jb21taXQgODIwNGE2NGYwZmYyZjY5NDVjMzI0ZWU5ZmMxYmUzYWY2ZTFiODUwZgotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA4OjE1OjE3IDIwMTEgLTA3MDAKK2NvbW1pdCAxZmExZmVlMzY5M2Y2N2I4MjAyMjM4MDZiM2Q3M2FmZDRjNTBlYzE4CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgTWFyIDIgMDE6Mzc6MjAgMjAxMiArMDEwMAogCi0gICAgYWxsb3cgbnNyb2xsdXAgdG8gdGFrZSBhIC0tbWVyZ2UgZmxhZyBmb3IgbWVyZ2luZyBpbnN0ZWFkIG9mIHJlYmFzaW5nCisgICAgU2lsZW5jZSBhIGNsYW5nIHdhcm5pbmcuCiAKLWNvbW1pdCA5OWY2MzYwMjk2ZDQ0NTlhZjk5YWZmZmZhYzg5NzA4YTU4MWMzY2UwCi1BdXRob3I6IFNhY2hpbiBTdXJlbmRyYW4gPHNhY2hpbnN1cmVuZHJhbkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwODoxMjowOSAyMDExIC0wNzAwCitjb21taXQgOTMyNjNiOThhNWRiMzQ0Y2YyYzRkNDg5YzQzOTcxZTdiMjljZGIwMworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXIgMSAxMzozNzoyMCAyMDEyICswMDAwCiAKLSAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IFBBVENIIDMzODM0NDE6IGZyb20gc2FjaGluc3VyZW5kcmFuOiBGaXggY3Jhc2ggb24gNS40LjQgZHVlIHRvIGFjY2VzcyBvZiBmcmVlZCBtZW1vcnkKLSAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS41LjIucHJlMQogCi1jb21taXQgZjdhODhiYzZmNzM4Zjc3Y2I5YzQzMDgxZTFmNjJmMjdlM2I2ZWY5OAotQXV0aG9yOiBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDg6MDk6MTggMjAxMSAtMDcwMAorY29tbWl0IDVhMTc1NDI4Yjk3M2QyZWE4NTUzZTI5ZmVjZjk0Y2YxNTY2YWE4NTgKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWFyIDEgMTE6NDg6MTggMjAxMiArMDAwMAogCi0gICAgQ0hBTkdFUzogZnJlZWJzZDogUEFUQ0ggMzM2MzMyODogZnJvbSB5YWJlcmF1bmV5YTogQWRkIEZyZWVCU0QgOS54IHRvIHN1cHBvcnRlZCBPU2VzIGxpc3QKLSAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS41LjIucHJlMQogCi1jb21taXQgZTdkZDFjNDM3YWZlNmUyNmE1NWFhNzcyZDQ2ODAxMjY1NTc0MWQzMQotQXV0aG9yOiBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDg6MjM6MjIgMjAxMSAtMDcwMAorY29tbWl0IDM2NDI3NmExYzVhYTY2Y2FhMjNlYjViN2YxMTFmZGViNWFmNzFmYTcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWFyIDEgMTE6NDU6MTAgMjAxMiArMDAwMAogCi0gICAgQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0ggMzM2MjIzMzogZnJvbSB5YWJlcmF1bmV5YTogTXV0ZSB1bm5lY2Vzc2FyeSBjYW5ub3QgZmluZCBtb2R1bGUgbm9pc2UKLSAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKyAgICBtYWtlIGRlcGVuZCBmb3IgNS41LjIucHJlMQogCi1jb21taXQgYzUzZDhjMzUyNWY1OTBmMjIxM2QzNWIwZGE5NDEyMzg2MmYzZTM2NgotQXV0aG9yOiBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDg6MTk6MTYgMjAxMSAtMDcwMAorY29tbWl0IDczNTk4MzQwMTcyZWZmNzU3MjlhNmQ1NzE5MmI4MTcxZDViYmYwMGUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWFyIDEgMTA6NDI6NTYgMjAxMiArMDAwMAogCi0gICAgQ0hBTkdFUzogZnJlZWJzZDogUEFUQ0ggMzM2MzMwODogZnJvbSB5YWJlcmF1bmV5YTogRml4IGNvbXBpbGF0aW9uIG9uIEZyZWVCU0QgOS54IHdpdGggcmVjZW50IGhlYWRlciBzaHVmZmxpbmcKLSAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNS4yLnByZTEKIAotY29tbWl0IDNiOGM4Yjg1MDg1YWFlMmQxYTFjN2NhMzVlN2QwNjZkM2Q3NGZhOWYKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwODoxNToxNyAyMDExIC0wNzAwCitjb21taXQgZjMyMTQ0MDI2NzJjYTE5OWZkNTMxZTY2MTIyYmY5NmM0ZDlhNGViNworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXIgMSAxMDo0MjozOSAyMDEyICswMDAwCiAKLSAgICBhbGxvdyBuc3JvbGx1cCB0byB0YWtlIGEgLS1tZXJnZSBmbGFnIGZvciBtZXJnaW5nIGluc3RlYWQgb2YgcmViYXNpbmcKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS41LjIucHJlMQogCi1jb21taXQgNzEwMGFlZGZmZDk4Y2RhNGIwNTE2NGJjY2YxNzg3NjAyMDE5NmU3OQotQXV0aG9yOiBTYWNoaW4gU3VyZW5kcmFuIDxzYWNoaW5zdXJlbmRyYW5AdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDg6MTI6MDkgMjAxMSAtMDcwMAorY29tbWl0IDJlNzRhY2I2ZjE5ZTQ3MjljZWRlMGFiNDNlOTMxOTYxY2IyM2FhZWEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFRodSBNYXIgMSAwOToxODozOSAyMDEyICswMTAwCiAKLSAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IFBBVENIIDMzODM0NDE6IGZyb20gc2FjaGluc3VyZW5kcmFuOiBGaXggY3Jhc2ggb24gNS40LjQgZHVlIHRvIGFjY2VzcyBvZiBmcmVlZCBtZW1vcnkKLSAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKyAgICBDSEFOR0VTOiBCdWcgMzE1Mjg0MTogRG8gbm90IGluc3RhbGwgdGhlIHV0aWxfZnVuY3Mgc3ViaGVhZGVycyB0aGF0IHdlcmUgcmVtb3ZlZCBpbiA1LjcKIAotY29tbWl0IGQyYzQ3NjhiZDJlZmI0ODY2NDQzNGE4MzE0MjVjMmRkYTg1ZDcxMzMKLUF1dGhvcjogR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA4OjIzOjIyIDIwMTEgLTA3MDAKK2NvbW1pdCBiNzEwOTY0NmI5NWE3MDcxM2QxYWQ5OTFkNDFiY2NkNTdjMGJiM2ViCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgTWFyIDEgMDg6NDg6NDggMjAxMiArMDEwMAogCi0gICAgQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0ggMzM2MjIzMzogZnJvbSB5YWJlcmF1bmV5YTogTXV0ZSB1bm5lY2Vzc2FyeSBjYW5ub3QgZmluZCBtb2R1bGUgbm9pc2UKLSAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKyAgICBDSEFOR0VTOiBCdWcgMzE1Mjg0MTogSW5zdGFsbCB1dGlsX2Z1bmNzIHN1YmhlYWRlcnMgaW50cm9kdWNlZCBpbiA1LjYKIAotY29tbWl0IGQxOWI4ZmNhMjM4NDA3N2Y3MzJhMzBmMjk0NmFiMGMwM2JjMGU3MzgKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwODoxNToxNyAyMDExIC0wNzAwCitjb21taXQgNDMyY2JiN2E1NTAxYWI5MGQ2NmQwYTgzZTczMWU3MzQzYmMwNGIzNworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IEZlYiAyNSAxMDoxMzoxNSAyMDEyICswMTAwCiAKLSAgICBhbGxvdyBuc3JvbGx1cCB0byB0YWtlIGEgLS1tZXJnZSBmbGFnIGZvciBtZXJnaW5nIGluc3RlYWQgb2YgcmViYXNpbmcKKyAgICBDb3JyZWN0IHR5cG9zCiAKLWNvbW1pdCAwZTY4NDJmZTA4MGNlYzg1M2IwOGNkMjMyMzAxNWFiYWJjMzgxY2UxCi1BdXRob3I6IFNhY2hpbiBTdXJlbmRyYW4gPHNhY2hpbnN1cmVuZHJhbkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwODoxMjowOSAyMDExIC0wNzAwCitjb21taXQgNmE2YzliYmM3NTg0ZjE5NmExMTg1Y2MxOTM1MjA0ZjEyMDY4MTFlZAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgV2VkIEZlYiAyOSAwODo1NTozNSAyMDEyICswMTAwCiAKLSAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IFBBVENIIDMzODM0NDE6IGZyb20gc2FjaGluc3VyZW5kcmFuOiBGaXggY3Jhc2ggb24gNS40LjQgZHVlIHRvIGFjY2VzcyBvZiBmcmVlZCBtZW1vcnkKLSAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKyAgICBDSEFOR0VTOiBCdWcgMzE1Mjg0MTogSW5zdGFsbCB1dGlsX2Z1bmNzIHN1YmhlYWRlcnMKIAotY29tbWl0IGVmYTMxMzVhMjUwYWUxZmZmMzA4NDk2ZDIyZTc3ODJhYmMwYzM5MWUKLUF1dGhvcjogR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA4OjA0OjI3IDIwMTEgLTA3MDAKK2NvbW1pdCBkNTE1ZTJhNmU0YzJhMWM0ZDg0NzM0Y2M3YjJkMGIyZmM1YTg5NGFkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAxNTo1NjoyMSAyMDEyICswMDAwCiAKLSAgICBDSEFOR0VTOiBidWlsZGluZzogUEFUQ0ggMzM4Mzk1MTogZnJvbSB5YWJlcmF1bmV5YTogRml4IC1XdW51c2VkIGNvbXBpbGUgd2FybmluZ3Mgd2l0aCBGcmVlQlNEL05ldEJTRAotICAgIAotICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAzNDg3OTE5OiBGaXggY29tcGlsYXRpb24gd2hlbiBjYWNoaW5nIGlzIGRpc2FibGVkCiAKLWNvbW1pdCAyNTk4OGJlODM2OTI0YTMzMDIwMTEzYzk0YWEwMjYxNGQxZGJmMWJlCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDc6MzY6MzYgMjAxMSAtMDcwMAorY29tbWl0IGFmODM2OGVkODg5OGE3OGQwODY4YjQ3YWY0NmJjOWRiMDdkMWM3NjQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRmViIDI4IDE1OjUwOjU2IDIwMTIgKzAwMDAKIAotICAgIGF1dG9jb25mCisgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzQxNDc3MzogRW5jb2RlIGludGVnZXIgdmFsdWUgdXNpbmcgQVNOX0lOVEVHRVIKIAotY29tbWl0IDRkYjZiNjQ1MDlkYzM1MDgzOWQ1OTZlMzI1MDRiMmQ4MGNhMGM3YjAKLUF1dGhvcjogR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA3OjM2OjEwIDIwMTEgLTA3MDAKK2NvbW1pdCAxOWUyNzE1ODA3ZmUwNmZkMGJhZWRmODgxNjUwMTFhZWU5MzNlNzU1CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAxNDowNTozNCAyMDEyICswMDAwCiAKLSAgICBDSEFOR0VTOiBidWlsZGluZzogUEFUQ0ggMzM4Mzk0OTogZnJvbSB5YWJlcmF1bmV5YTogRml4IGF1dG9jb25mIHRlc3RzIGZvciBzeXMvbWJ1Zi5oCi0gICAgCi0gICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisgICAgQ0hBTkdFUzogbWFuOiBCVUdTOiAzNDkwNzA4OiBDbGFyaWZ5IHVzZSBvZiBjb21tb24gY29tbWFuZC1saW5lIG9wdGlvbnMKIAotY29tbWl0IGYzYmM1NTE4NGQ5NmM1OGRjZmQ1ODk1Mzc5NmMxMGY3MzU0ZGQ0YTcKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwNjo1NDoyMiAyMDExIC0wNzAwCitjb21taXQgNjVmNzk2MmY5MzJjOWI3NWM1YmJiYjA0N2QxZTI2YWU2MDk3OGU1MworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBGZWIgMjggMTI6MjM6MzQgMjAxMiArMDAwMAogCi0gICAgcHJvbXB0IGZvciBwYXRjaCBhbmQgYW4gYXJlYSwgYW5kIHVzZSB0aGUgcHJvcGVyIENIQU5HRVMgbGluZSBmb3JtYXQKKyAgICBDSEFOR0VTOiBzbm1wZDogQlVHUzogMzQ4OTYzMTogRml4IGluY29ycmVjdCBoYW5kbGluZyBvZiBVQ0QgbW9uaXRvcmluZyBmbGFnCiAKLWNvbW1pdCBhZDY5NmJhMTI0OWQzYzRiYzEyYzBlYjM4NDgxZmYwZmM0MzNmOGExCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDY6NDI6NDIgMjAxMSAtMDcwMAorY29tbWl0IGFjMTY2MDUxYjZhMDkyZGQ0YTU5NDMyNmVjODVlMmY2OTliNjI1NDcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRmViIDI4IDExOjU3OjQxIDIwMTIgKzAwMDAKIAotICAgIFVzZSBmZXRjaCAtLWFsbCBhbmQgcmViYXNlIGFzIHN1Z2dlc3RlZCBieSBCYXJ0IGZvciBzcGVlZCBpbXByb3ZlbWVudHMKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBCVUdTOiAzNDc0NTkwOiBEb24ndCBtYXRjaCB1bmRlcnNjb3JlcyB3aXRoaW4gdGhlIHNvdXJjZSByb290IGZpbGVuYW1lCiAKLWNvbW1pdCA0NDk2OWI0ZTU3YzI3MTk0ZTViZDM1N2JjNDUyNzVmZWI4Njk1ZDIyCitjb21taXQgODc5YmY3MDc5ZDM0ZmE0NmY2ZmNmNTRhMDFjODUwMGJlYWVjZTU5YQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBGZWIgMjggMTA6NDQ6NDEgMjAxMiArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEJVR1M6IDM0NjAzNjQ6IEZpeCB1c2Ugb2YgYmxvY2sgZmFjdG9yIHdoZW4gZGV0ZWN0aW5nIGVycm9yIGNvbmRpdGlvbnMKKworY29tbWl0IDAzNGYxYzU3MmY2ODNlYTQyODU4MzA3NDQ3MWU1ZDVkMTNiNTE4MzcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRmViIDI4IDEwOjIyOjIwIDIwMTIgKzAwMDAKKworICAgIFNraXAgU0VULWJhc2VkIHRlc3RzIHdoZW4gY29uZmlndXJlZCB1c2luZyAtLWVuYWJsZS1yZWFkLW9ubHkKKworY29tbWl0IDM2NDIzZTIxMGJmYjY1ZWYxMjFjNmE2NmFlYzQzOGM3YzIzN2QzZGYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRmViIDI4IDEwOjAzOjI1IDIwMTIgKzAwMDAKKworICAgIENIQU5HRVM6IEJVRzogMzQ1NDE2ODogY29uZmlndXJlOiBGaXggYnVpbGRpbmcgd2l0aCAtLWVuYWJsZS1yZWFkLW9ubHkKKworY29tbWl0IGVlZDBiY2JjNDNmZWExODI1OWYwZjYzYjIwODFiNmQxMDUzNWEwNTIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRmViIDI4IDA5OjI3OjExIDIwMTIgKzAwMDAKKworICAgIFNraXAgU0VULWJhc2VkIGJhYnktc3RlcHMgd2hlbiBjb21waWxlZCB3aXRoIC0tZGlzYWJsZS1zZXQtc3VwcG9ydC4KKyAgICBJbnNwaXJlZCBieSBidWcgIzM0NTQxNjgKKworY29tbWl0IGVjNmEyMzAzMGU1YTIwNzJjMTljMThjMWQ5YzEyNDM4N2RhNTZiN2IKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIEZyaSBKdWwgOCAyMDo1MjoyNSAyMDExICswMjAwCitEYXRlOiAgIE1vbiBGZWIgMjcgMTg6NDI6NTggMjAxMiArMDAwMAogCi0gICAgQ0hBTkdFUzogV2luMzI6IEZpeCB0aGUgY29tcGlsZXIgd2FybmluZ3MgdHJpZ2dlcmVkIGJ5IHRoZSB3aW5FeHRETEwgc291cmNlIGNvZGUgYW5kIHRoYXQgYXJlIHRyaWdnZXJlZCBieSB0aGUgY2hhbmdlIG9mIHRoZSAib2lkIiB0eXBlZGVmIGZyb20gdWludDMyX3QgdG8gdV9sb25nLgorICAgIEFkZCAtbHJ0IHRvIE5FVFNOTVBMSUJTIHN1Y2ggdGhhdCBjbG9ja19nZXR0aW1lKCkgY2FuIGJlIGZvdW5kCiAKLWNvbW1pdCBlYTU4YjY3YjRmMzE4YWNmMWY5ZTg1MjU4MmJjY2FkNDdiNGQ4ZTY3Citjb21taXQgZjEzMzIwNTAwMjk0YmIyNDBmNjNjNmRkN2QyZTlhMjIwOGViNzQwZAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBGZWIgMjcgMTY6NTI6NTEgMjAxMiArMDAwMAorCisgICAgU2tpcCBTRVQtYmFzZWQgdGVzdHMgd2hlbiBjb21waWxlZCB1c2luZyAtLWRpc2FibGUtc2V0LXN1cHBvcnQKKworY29tbWl0IGM0Mjc2YjYyMzJjMjkxNDVjMDM5ODg0ZTZiNWE2YjZkYTRiOTM4MzcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gRmViIDI3IDE1OjU0OjQ1IDIwMTIgKzAwMDAKKworICAgIE9taXQgU0VULXJlbGF0ZWQgY29kZSB3aGVuIGNvbXBpbGluZyB3aXRoIC0tZGlzYWJsZS1zZXQtc3VwcG9ydCAoaW5zcGlyZWQgYnkgcGF0Y2ggIzM0MjQ5MzApCisKK2NvbW1pdCAwMWM5MzBlZGNjMjU3MDBkNmI1ZmIwMzc2ZjU1YTI2NDI1ZTEzZmIwCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEZlYiAyNyAxNToxNzoyMiAyMDEyICswMDAwCisKKyAgICBPbWl0IFNFVC1yZWxhdGVkIGNvZGUgd2hlbiBjb21waWxpbmcgd2l0aCAtLWRpc2FibGUtc2V0LXN1cHBvcnQKKyAgICAoaW5zcGlyZWQgYnkgcGF0Y2ggIzM0MjQ5MzApCisKK2NvbW1pdCA5NDg0ZDgzMjAzYzRlMmQ4MjA0MTZiZTY2NWZhODMzYWE3MDQ0NGQyCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBGcmkgSnVsIDggMjA6NTI6MjUgMjAxMSArMDIwMAorRGF0ZTogICBGcmkgRmViIDI0IDE0OjAwOjMyIDIwMTIgKzAxMDAKIAotICAgIENIQU5HRVM6IFdpbjMyOiB3aW5FeHRETEw6IEludm9rZSBTbm1wVXRpbE9pZEZyZWUoKSBiZWZvcmUgU25tcFV0aWxPaWRDcHkoKS4gSXQncyBub3QgY2xlYXIgeWV0IHdoeSB0aGUgb3JpZ2luYWwgY29kZSBkaWQgbm90IG1ha2Ugc25tcHdhbGsgdHJpZ2dlciBhIG1lbW9yeSBsZWFrLgorICAgIFJld29yayBjb21taXQgYjRhMTk1MDVhMDU4MTZlOTRlMDFkZTk3YmY5OWFjMzdmY2RjNmQyMy4KIAotY29tbWl0IDhhMDFlYzY0MjNkNDAwYzRhMTNjY2FjNjhhMzc5MWQwMjE4YTA4ODUKK2NvbW1pdCAyYjdmMTM0OTUyMjg2MzVkODE2ZTU4YjIxNzRkYzEyNGRkMGNmMzlmCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgRmViIDI0IDA3OjQzOjIyIDIwMTIgLTA4MDAKKworICAgIHNldCBNRVJHRV9BVVRPRURJVCBiZWZvcmUgbWVyZ2luZyB0byBhdm9pZCB0aGUgZnV0dXJlIGdpdCAxLjcuMTAgZm9yY2VkIG1zZworCitjb21taXQgZTFiOTEwYjBiZTkzNDM1ODZhZTllZGJhNmY0NjA0MGFmMzE1ZmNkZAogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgVGh1IEF1ZyA0IDExOjE5OjE3IDIwMTEgKzAyMDAKK0RhdGU6ICAgVGh1IEZlYiAyMyAxMDoyNzo1NCAyMDEyICswMTAwCiAKLSAgICBDSEFOR0VTOiBXaW5kb3dzOiBNYWtlIGxpbmtpbmcgd2l0aCByZWNlbnQgT3BlblNTTCBiaW5hcmllcyBzdWNjZWVkLgorICAgIENIQU5HRVM6IHNubXBkOiBpbml0X2FnZW50KCkgKyBpbml0X2ttZW0oKTogUmV0dXJuIGFuIGVycm9yIHZhbHVlIGluc3RlYWQgb2YgaW52b2tpbmcgZXhpdCgpIGlmIGFjY2VzcyB0byBrZXJuZWwgdmlydHVhbCBtZW1vcnkgaXMgZGVuaWVkCiAKLWNvbW1pdCBlMjFlZWYyZmM1Y2ZkYzEyMDA0NzkxMThhMmM1YjI5YTcwYjBkZjYwCitjb21taXQgNDYzZWVkMjEyMGY5ZDE5MWJjMjI2NzM0OTZhNDllODE3NDY2NGU0YgogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgVGh1IEF1ZyA0IDA4OjUyOjQzIDIwMTEgKzAyMDAKK0RhdGU6ICAgVGh1IEZlYiAyMyAxMDowMzozMSAyMDEyICswMTAwCiAKLSAgICBDSEFOR0VTOiBhZ2VudDogQXZvaWQgdGhhdCBhIE1JQiB3YWxrIG9uIHRoZSBob3N0IHJlc291cmNlcyBNSUIgdHJpZ2dlcnMgYSBjcmFzaCBvbiBGZWRvcmEgMTUKKyAgICBSZW1vdmUgb2Jzb2xldGUgc3ltYm9sIE5FVFNOTVBfRVhJVF9PTl9CQURfS0xSRUFECiAKLWNvbW1pdCBiMDU2ZWU2ZWI1MzkwOWFkMDRmMTZlYzI2ZDI2OTBkN2EwODMxOTJhCitjb21taXQgYzM2YWI3MWE0ZTA5NmYxNmNjNWE1NTUzM2YwODBjOWE5NDAwOTkxNAogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgVGh1IEF1ZyA0IDA3OjU5OjA0IDIwMTEgKzAyMDAKK0RhdGU6ICAgVGh1IEZlYiAyMyAwODo1Mzo1NiAyMDEyICswMTAwCiAKLSAgICBGaXggYSBjb21waWxlciB3YXJuaW5nIGluIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYworICAgIENIQU5HRVM6IEZyZWVCU0Q6IHNubXBkICsgYXBwczogU2VuZGluZyBVRFAgcGFja2V0cyB3b3JrcyBhZ2FpbiBmb3Igbm9uLXJvb3QgdXNlcnMKIAotY29tbWl0IDE3MWY5NTgwZmZmYTYwNDFhZmM4NjJlZjk0NDBkOTQ5ZjBhYTc5YmYKK2NvbW1pdCBlZGViZGRiYTkzMGY4YjE0NzJmYTBiZDIwZmM0MTNlZjhjZjQ2NGEyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgRmViIDIxIDExOjMxOjQ2IDIwMTIgKzAxMDAKKworICAgIHRlc3RpbmcvUlVOVEVTVFM6IEZpeCBhIGJhc2hpc20KKworY29tbWl0IGI0YTE5NTA1YTA1ODE2ZTk0ZTAxZGU5N2JmOTlhYzM3ZmNkYzZkMjMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgMjAgMTY6NTg6NDcgMjAxMiArMDEwMAorCisgICAgRml4IGNvbXBpbGVyIHdhcm5pbmdzIGFib3V0ICVsZCB2ZXJzdXMgdGltZV90IG9uIHN5c3RlbXMgd2hlcmUgdGltZV90IGlzIGEgc3lub255bSBmb3IgbG9uZyBsb25nIGluc3RlYWQgb2YgbG9uZy4KKworY29tbWl0IGQ4OTc4ZWNjODIxMWJlN2MxZTc5MDVmMWUyMTViYjA2ZGVkMjY2YjYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBGZWIgMjEgMTI6MzI6MjUgMjAxMiArMDEwMAorCisgICAgRml4IHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wU29ja2V0QmFzZURvbWFpbi5jIGZpbGUgaGVhZGVyCisKK2NvbW1pdCBhYTc2NmQxOTZlNTI4N2Y2Y2E3OWI1OGEzNDViMDI0MjYwYWJhMzU0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDIwIDE3OjA3OjEzIDIwMTIgKzAxMDAKKworICAgIElGLU1JQjogZG8gbm90IHRyaWdnZXIgdW5kZWZpbmVkIGJlaGF2aW9yICg+PiAzMiBvZiBhIDMyLWJpdCB2YXJpYWJsZSkgd2hlbiB1cGRhdGluZyBhIGNvdW50ZXIgYW5kIGlmaV9pcGFja2V0cyBpcyBhIDMyLWJpdCB2YXJpYWJsZQorCitjb21taXQgYzNmYjZkZDllNmI5OWU5NTQyNDkzMTg4OTg3ODcxZmM1MDE3Y2IzYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyMyAwOTo0NTo0NSAyMDEyICswMTAwCisKKyAgICBGaXggYSBjb21waWxlciB3YXJuaW5nIG9uIHN5c3RlbXMgd2hlcmUgbW9kZV90IGlzIHVuc2lnbmVkCisKK2NvbW1pdCBmOGEzZWYwZDNkNGU1MzAyNzk5MDAxMDEwNDliOGRlOThhNDRhNmZiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTQ6NDg6NTIgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYiArIHNubXBkICsgc25tcHdhbGs6IEF2b2lkIHRoYXQgc3lzdGVtIGNsb2NrIGNoYW5nZXMgKGUuZy4gYnkgbnRwZCkgYWZmZWN0IGNvZGUgdGhhdCBuZWVkcyByZWxhdGl2ZSB0aW1lCisgICAgQ0hBTkdFUzogc25tcGQ6IE1ha2Ugc3VyZSB0aGF0IHRoZSByYW5nZSBvZiB0aGUgU05NUHYzIHZhcmlhYmxlIHNubXBFbmdpbmVUaW1lIGlzIDAuLjIxNDc0ODM2NDcgb24gYWxsIHN1cHBvcnRlZCBzeXN0ZW1zIGluc3RlYWQgb2YgMC4uNDI5NDk2NzIgb24gc29tZSBzeXN0ZW1zIChpLmUuIHdyYXBhcm91bmQgYWZ0ZXIgNDk3IGRheXMpCisgICAgQ0hBTkdFUzogc25tcGxpYjogQWRkIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygpLCBuZXRzbm1wX3NldF9tb25vdG9uaWNfbWFya2VyKCksIG5ldHNubXBfcmVhZHlfbW9ub3RvbmljKCksIG5ldHNubXBfZ2V0X2FnZW50X3J1bnRpbWUoKQorICAgIENIQU5HRVM6IHNubXBsaWI6IERlcHJlY2F0ZSBhdGltZV9kaWZmKCksIGF0aW1lX25ld01hcmtlcigpLCBhdGltZV9yZWFkeSgpLCBhdGltZV9zZXRNYXJrZXIoKSwgbWFya2VyX3R0aWNrcygpLCBuZXRzbm1wX21hcmtlcl91cHRpbWUoKSwgbmV0c25tcF90aW1ldmFsX3VwdGltZSgpLCB0aW1ldmFsX3R0aWNrcygpLCB1YXRpbWVfZGlmZigpLCB1YXRpbWVfaGRpZmYoKSBhbmQgdWF0aW1lX3JlYWR5KCkuCisgICAgQ0hBTkdFUzogc25tcGxpYjogQ2hhbmdlIHRoZSBuYW1lcyBvZiB0aGUgc3RydWN0IHRpbWV2YWwgbWVtYmVycyBvZiBkYXRhIHN0cnVjdHVyZXMgdGhhdCB3ZXJlIHVzZWQgdG8gc3RvcmUgYSB3YWxsIGNsb2NrIHRpbWUgYnV0IHRoYXQgZG8gbm93IGNvbnRhaW4gYSBtb25vdG9uaWMgY2xvY2sgdmFsdWUKKworY29tbWl0IGMxOTc2MGYzMzMzYzkyZmFjNWQ1MGU5NzY4Y2RmOTM5MjE4YmM0ODcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBGZWIgMTUgMDk6NDU6MDMgMjAxMiArMDEwMAorCisgICAgc25tcGxpYi9zbm1wdjMuYzogRml4IHNvdXJjZSBjb2RlIGluZGVudGF0aW9uCisKK2NvbW1pdCBhNmRiMjM5OTQ1ZTE5NWRlNWE5MGZhMTgzNzAwYjI3YTZlY2IyOGQzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgRmViIDcgMDA6MTE6MTQgMjAxMiArMDEwMAorCisgICAgRml4IHBvc3NpYmxlIG1lbW9yeSBsZWFrIGZyb20gcmVjZW50IGRlY2xhcmF0aW9ucyBwYXRjaAorCitjb21taXQgMGZiYmI5YTllMjkwNmE3YWY5NTY5NTcwNjFkNDg1ODc0NDYyYWVhOQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEZlYiA2IDIwOjQzOjA0IDIwMTIgKzAxMDAKKworICAgIERvIG5vdCBtaXggZGVjbGFyYXRpb25zIGFuZCBzdGF0ZW1lbnRzCisKK2NvbW1pdCBmMzA4ZDViYWZiMDVkNzhlZDQwMzBjNGVjZmYzMjRiNmNiZGE2ODBmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTU6MjU6MzAgMjAxMiArMDEwMAorCisgICAgRml4IHR3byBjb21waWxlciB3YXJuaW5ncyBpbiBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYworCitjb21taXQgNDZmMGZjMWI3ZmMyNmEyMjU3NjNiYzY1Y2NhNTIwYTFjNTlmMDI1MQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEZlYiA2IDIwOjU0OjMyIDIwMTIgKzAxMDAKKworICAgIHNlbmRtc2cgZG9lcyBub3QgbGlrZSBJUF9TRU5EU1JDQUREUiBpZiBhZGRyIGlzIElOQUREUl9BTlkKKworY29tbWl0IGRlYmFjNDk4ZmU4NDEwMTEwMTA3YTJmZTY0ZjhhZmI3NDhlZGFhMDcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gRmViIDYgMTY6NDg6MDkgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogYWRkZWQgT0NGUzIgKE9yYWNsZSBDbHVzdGVyIEZTKSB0byBoclN0b3JhZ2VUYWJsZSBhbmQgaHJGU1RhYmxlCisKK2NvbW1pdCBmYWZjOTljZDg5ZTczZWM3ZTAwYmY3MzYwZDBiNGZhNjE5NDRhNGY0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTE6MTg6MzQgMjAxMiArMDEwMAorCisgICAgU2ltcGxpZnkgY2FsY3VsYXRlX3RpbWVfZGlmZigpIGFuZCBjYWxjdWxhdGVfc2VjdGltZV9kaWZmKCkKKworY29tbWl0IDdhZjIwMTNkZThiZjFiMzc5YzA3NmRiNGUxMDQ1MDhlMTc4NzRkM2UKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxNDo1NTo1OCAyMDEyICswMTAwCisKKyAgICBGaXggb3JkZXIgb2YgZmVhdHVyZSAjaWZuZGVmIGFuZCBEb3h5Z2VuIGNvbW1lbnQgYmxvY2sKKworY29tbWl0IGJiZDY3ZjYzNTMwZjVlZjBiZmM5NDhmYzU4ZGZlNmE5M2Y4Zjg2NzkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxNToyNTozMCAyMDEyICswMTAwCisKKyAgICBGaXggdHdvIGNvbXBpbGVyIHdhcm5pbmdzIGluIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jCisKK2NvbW1pdCA0MmE2NmFlZmYyNWI5ZTllZjYzNWE0MDRhZDJmNTIxMmY5ZThjZjBkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTQ6NDc6NTQgMjAxMiArMDEwMAorCisgICAgUmVuYW1lIHR3byBmdW5jdGlvbiBhcmd1bWVudHMKKworY29tbWl0IDNmZTcyYjNiOTliN2U0YjJiOTgyMzYzZGZjNGYyZDhkMTNmNDA1OTIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxMzo0OToyMiAyMDEyICswMTAwCisKKyAgICBDb252ZXJ0IHNubXBfc2VsZWN0X2luZm8oKSBkb2N1bWVudGF0aW9uIHRvIERveHlnZW4gZm9ybWF0CisKK2NvbW1pdCBlOWRiMjY2YWU0OGQwNWE3YTZjYjVkNzFiNGJkZWE3YWQ4MDhlZjVlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTE6MTc6NTcgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEFkZCBuZXRzbm1wX2dldF9uZXh0X2FsYXJtX3RpbWUoKQorCitjb21taXQgZDA4MDQ0Y2I5ZTU3MDJmYmY1NDllMTQ0MjVmNDI3OTQyNTlkOGEyMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDA5OjM4OjA3IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBBZGQgbmV0c25tcF9nZXRfYWdlbnRfcnVudGltZSgpCisKK2NvbW1pdCBhMDVjMjdjMjcxMWNiNDE1ODJhM2I0YzMxZTM4YjBlOTM1MzBiNjJkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTQ6NTE6MzMgMjAxMiArMDEwMAorCisgICAgRml4IHNwZWxsaW5nIGluIGEgc291cmNlIGNvZGUgY29tbWVudAorCitjb21taXQgOTEwZDdiMGQ5OTE4MzYwOWI5NTI5YjA0YzNmMjkzMzBlYjY2MTAyMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDE0OjM4OjEyIDIwMTIgKzAxMDAKKworICAgIFJlcGxhY2UgbmV0c25tcF90aW1ldmFsX3VwdGltZSgpIGJ5IG5ldHNubXBfZ2V0X2FnZW50X3VwdGltZSgpCisKK2NvbW1pdCA0M2E4M2Y2YzZhOTZjYzIzMTZiNzBlZWNhY2YxMjdlYjY5MTNjN2E3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTE6MTk6MTUgMjAxMiArMDEwMAorCisgICAgVXNlIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yIGluc3RlYWQgb2YgbWVtY3B5KCkgZm9yIGNvcHlpbmcgc3RydWN0IHRpbWV2YWwKKworY29tbWl0IDJmZTU3OWVmYjFjYjNhNzRmODI4MDNjYTMyMzkyOGY2YjhlNGI1YzAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBGZWIgMyAxNDowNDowMiAyMDEyICswMTAwCisKKyAgICBNYWtlIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYyBidWlsZCBhZ2FpbiBvbiBub24tTGludXggc3lzdGVtcy4KKyAgICAKKyAgICBTZWUgYWxzbyBjb21taXQgMzQ1YTFlNDI1NDgxMmNiOWVkYzFkMjc0NDkxYjc2NjgxYTlkYmExZS4KKworY29tbWl0IDg4MWRlNmFiNzM1NTI3N2E1YzExNmEwMDhmYmU1MTMyOTNiMDUwMzkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBGZWIgMyAxMDowODoyMSAyMDEyICswMTAwCisKKyAgICBGaXggY29tcGlsZXIgd2FybmluZ3MgdHJpZ2dlcmVkIGJ5IHRoZSBSbW9uIE1JQiBpbXBsZW1lbnRhdGlvbgorCitjb21taXQgNDYyOTkzM2MwZDNiM2Y5ZjRiYTU4MzUzNGY3OWEzN2ZiOTYzMzgxNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDIwOjA1OjMxIDIwMTIgKzAwMDAKKworICAgIE1vcmUgY29tcGlsZXIgd2FybmluZyBmaXhlcworCitjb21taXQgZTliNWEzZGVlNmY5YWZhYjhiOTBhMjkzOTIwNDA2MzJiMDc1YWQ3YQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDE2OjU2OjU1IDIwMTIgKzAxMDAKKworICAgIFVzZSBTTk1QX01JTigpIGluc3RlYWQgb2YgbWluKCkKKworY29tbWl0IGFlNDUyYzc3YjQxMTEzOWQ2YjU4MDBmZmNmODhkNDhlOWI0NzkyYTgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxNToyMzozOCAyMDEyICswMTAwCisKKyAgICBSZXN0b3JlIGNvbW1pdCBkYmI4Nzk1YTdkZjU5NWYwNjAzZjJlYzYxNzA0Nzk5ZjRjNDgyNjY3LgorCitjb21taXQgYzdkMTFmYTAwZjk5OTVkZGI5ZmUzZDQ5OTRhM2U5NzkwZGEyZTE4OQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDE1OjE4OjQwIDIwMTIgKzAxMDAKKworICAgIFJlc3RvcmUgY29tbWl0IGRiYjg3OTVhN2RmNTk1ZjA2MDNmMmVjNjE3MDQ3OTlmNGM0ODI2NjcgcGFydGlhbGx5LgorCitjb21taXQgMDBmZDYyNzIwZWM0NTRmNWE2OTBkZTRmZWJhMDgyMjNjZmIyYzNmOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDE0OjQ4OjQ0IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXB0cmFwZDogQXZvaWQgY3Jhc2ggZHVyaW5nIHNodXRkb3duIGR1ZSB0byBpbnZva2luZyBwZXJsX2Rlc3RydWN0KE5VTEwpCisKK2NvbW1pdCBkOWUyMjlkODFhYmVhZjE5MWVmMmNjYjA3Nzg0Mjg4NWMyMzBkNjIyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMTQ6NDc6NDEgMjAxMiArMDEwMAorCisgICAgUmVtb3ZlIGEgc3VwZXJmbHVvdXMgZGVjbGFyYXRpb24KKworY29tbWl0IDFlMmUyYWY2Y2FlODMwZjM4MWU4N2EyNDRkMDI5ZWI4NmJmM2ZjY2UKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxMzoyMDozNyAyMDEyICswMTAwCisKKyAgICBwZXJsL1NOTVAvZXhhbXBsZXMvcGluZ21pYi5wbDogQWRkIGVycm9yIGNoZWNraW5nCisKK2NvbW1pdCAyNDFhMTQxZTMxZjE2ODRmYzZjZjcwY2M0YTAwY2NlNjM2ZmQzNTI2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMTE6Mjg6MzcgMjAxMiArMDEwMAorCisgICAgTWFrZSBjb25maWd1cmUtdGltZSBFVlBfTURfQ1RYX2NyZWF0ZSgpIGRldGVjdGlvbiB3b3JrIG9uIHRoZSA1LjQgYnJhbmNoLgorICAgIAorICAgIFNlZSBhbHNvIGNvbW1pdCA0NmVhYzAyZTlhMjdiZjRmMzA2OGU3OTVjYWI4OTFmMDVhODQ4ODcwLgorCitjb21taXQgNmQ5ZDE0ZmVhYWEyZDBmZWM2OGI0ZDE1ODk0NGQzMmNiMDRmZjFiYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDExOjEyOjAwIDIwMTIgKzAxMDAKKworICAgIFJldmVydCB0aGUgY2hhbmdlcyB0aGF0IGJyZWFrIHRoZSBidWlsZCBvbiB0aGUgNS40IGJyYW5jaCBmcm9tIGNvbW1pdCBkYmI4Nzk1YTdkZjU5NWYwNjAzZjJlYzYxNzA0Nzk5ZjRjNDgyNjY3LgorCitjb21taXQgOGFiZTQ5ZTMwYzk3Yzg5ODNlODNiNDVhMzVjNzE2ZmU5MWY2NmJlYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEZlYiAxIDExOjU2OjU4IDIwMTIgKzAxMDAKKworICAgIEZpeCBzZXZlcmFsIGNvbXBpbGVyIHdhcm5pbmdzIGluIHRoZSBESVNNQU4gTUlCIGltcGxlbWVudGF0aW9ucy4KKworY29tbWl0IGY5ZmIwYTUzMzM3NWUxNGRjMzcwMDI1YTBiMmZiYzc2MWJmMjdiZTYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAwOTo1NjowMiAyMDEyICswMTAwCisKKyAgICBSZXZlcnQgIkhPU1QtUkVTT1VSQ0VTX01JQjogZml4IGEgY29tcGlsZXIgd2FybmluZyIgYmVjYXVzZSBpdCdzIHdyb25nLgorICAgIAorICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgYWE2Yjc5YmMxMjRhN2I3YTg4NWQ3ZTUwMzVhYjA2YWEzZWNlZjYxMy4KKworY29tbWl0IGNhNGE0ZmUyNWVmZDI3MTRmOGYxOTYxYjk3ODU2NjE2NTYzZjQyYzkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxMDoyMTo0OSAyMDEyICswMTAwCisKKyAgICAuZ2l0aWdub3JlOiBBZGQgcHl0aG9uL2J1aWxkCisKK2NvbW1pdCAxM2FkYTU2NTU4YjQ0ZTI4ZDEzNTVjMGRjZTFkOTIxZjM3NDZkNTQ4CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNTo1Mzo0OSAyMDEyICswMTAwCisKKyAgICBSZXZlcnQgIlJldmVydCAiRml4IGZvcm1hdCBzcGVjaWZpZXJzIHRvIGF2b2lkIHdhcm5pbmdzIiIgLSB0aGVyZSAqaXMqIE5FVFNOTVBfUFJJbyBpbiBWNS02KyBicmFuY2hlcworICAgIAorICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgYWE1MjhiZDIyYzc0OTNjYThkNjdlNjc4ZmJmNjE1Y2EwZjYzZWE2ZC4KKworY29tbWl0IGFhNTI4YmQyMmM3NDkzY2E4ZDY3ZTY3OGZiZjYxNWNhMGY2M2VhNmQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE0OjEzOjE4IDIwMTIgKzAxMDAKKworICAgIFJldmVydCAiRml4IGZvcm1hdCBzcGVjaWZpZXJzIHRvIGF2b2lkIHdhcm5pbmdzIiAtIHRoZXJlIGlzIG5vIE5FVFNOTVBfUFJJbyBpbiBWNS00IG9yIFY1LTUgYnJhbmNoZXMKKyAgICAKKyAgICBUaGlzIHJldmVydHMgY29tbWl0IDM5MGMwMTE0YzhlYzBiZGIyN2IwOGI2Zjc0ZTNmNmVmM2E2Mjk4MWIuCisKK2NvbW1pdCAyZmI5OWJlOWFhODZhNmNhMzQ5Yjg2ZDRlZjhiYzcyNmVkOWYyYTgyCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNDo1ODozNSAyMDEyICswMTAwCisKKyAgICBEb24ndCB0b3VjaCByZWdpbmZvIHdoZW4gcmVnaXN0cmF0aW9uIGZhaWxzIC0gaXQgaGFzIGJlZW4gYWxyZWFkeSBmcmVlZC4KKworY29tbWl0IGU1YzM1NTg5ZTBiZjQxNmJmZDAzNmJkNDY4ZjQyYWFlYWIyNWU3ODgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE0OjU1OjU2IDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgMzQ1YTFlNDI1NDgxMmNiOWVkYzFkMjc0NDkxYjc2NjgxYTlkYmExZQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTQ6NTE6MjYgMjAxMiArMDEwMAorCisgICAgRml4ZWQgZXJyb3IgaGFuZGxpbmcgaW4gaW5pdF9pY21wKCkuCisKK2NvbW1pdCBjMzAzNTQ5YTU5ZmE4YzJmMjBhOWQ4YmYxZTk4NWZiYzhhYmRlNmE4CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNTo0NjoyOSAyMDEyICswMTAwCisKKyAgICBSZXdvcmtlZCBfcmVnaXN0ZXJfZXh0ZW5kKCkgZXJyb3IgaGFuZGxpbmcuCisKK2NvbW1pdCA5YzIwZTI3YTcwMjZmYzAzMGRhM2IzMjhiOWEyZTFiNGYzNjY3MGNkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNToyMToyOCAyMDEyICswMTAwCisKKyAgICBEb24ndCB0b3VjaCByZWdpbmZvIHdoZW4gcmVnaXN0cmF0aW9uIGZhaWxzIC0gaXQgaGFzIGJlZW4gYWxyZWFkeSBmcmVlZC4KKworY29tbWl0IDIyZmQwYmZjMmRmMGUxZjYwMjBkYzNjNTBhNzUzZGRmMjhhNDU5OWMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjIwOjIyIDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgNWQ2MWU1N2JhZjU4MGM3ODI1MmMwYWJiMDA5OGMwN2JiMDVhZjE3YworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6MTc6MDUgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCAzYzNlZWFlODBkNzk2ZjI3NTk3YzkwMWU3ZmYyMDQ2Yzc2OWVmNGI4CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNTowODowOSAyMDEyICswMTAwCisKKyAgICBNYXJrIHJvd3JlcV9jdHggYXMgZnJlZWQgc28gbmV4dCBpdGVyYXRpb24gYWxsb2NhdGVzIG5ldyBvbmUgaW5zdGVhZCBvZiByZXVzaW5nIHRoZSBmcmVlZCBvbmUuCisKK2NvbW1pdCBhZjlhYmQ1M2MyMzM3YzkwYTY5MWE3YjA0NGZmM2Y5N2MxMDAzMTYxCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNTowNToxMCAyMDEyICswMTAwCisKKyAgICBEb24ndCB0b3VjaCByZWdpbmZvIHdoZW4gcmVnaXN0cmF0aW9uIGZhaWxzIC0gaXQgaGFzIGJlZW4gYWxyZWFkeSBmcmVlZC4KKworY29tbWl0IGNmOTQ2NWY1NDE4MWU2MmUyMWE5YjEwMjE5MTMxMTA3YTNkMmViZjYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjA0OjA2IDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgNzg3MWYyYjA5YjhiNTJmMzRhOWU1Nzc4NDI2NjQ1OTA1MzE2NWJjYgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6MDI6NTAgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCA3YTM3ZjMzZDMxMGM5NTk4NjA3YmMzMjNkOWJkYmY5MWFhZjcyYzk1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNTowMDo1MSAyMDEyICswMTAwCisKKyAgICBEb24ndCB0b3VjaCByZWdpbmZvIHdoZW4gcmVnaXN0cmF0aW9uIGZhaWxzIC0gaXQgaGFzIGJlZW4gYWxyZWFkeSBmcmVlZC4KKworY29tbWl0IDNlNDVmNzAyNjI0OWU0NTM1MGVkYWFjODUzMzc0MjNhYTBlOTVkOGIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE0OjEzOjE4IDIwMTIgKzAxMDAKKworICAgIFJldmVydCAiRml4IGZvcm1hdCBzcGVjaWZpZXJzIHRvIGF2b2lkIHdhcm5pbmdzIiAtIHRoZXJlIGlzIG5vIE5FVFNOTVBfUFJJbyBpbiBWNS00IG9yIFY1LTUgYnJhbmNoZXMKKyAgICAKKyAgICBUaGlzIHJldmVydHMgY29tbWl0IDM5MGMwMTE0YzhlYzBiZGIyN2IwOGI2Zjc0ZTNmNmVmM2E2Mjk4MWIuCisKK2NvbW1pdCA2MTkzNjc2MmU2NDFjMThkYjc1YWE1MTI1YTMzZTc3NmM2NzdhZGM1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxMToxMzozOSAyMDEyICswMTAwCisKKyAgICBGaXhlZCBmcmVlaW5nIHJlZ2luZm8gdHdpY2Ugb24gZXJyb3IgaW4gYSB0ZW1wbGF0ZSBhbmQgYWxsIGl0cyBpbnN0YW5jZXMuCisKK2NvbW1pdCA0OTY0Mzc0MzA0MTVmYmFmZWIxY2NkNDc3NGYxY2EwMGQ2MjdlYTFmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDIwIDExOjA0OjEzIDIwMTIgKzAxMDAKKworICAgIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6IEZpeCBjb21waWxlciB3YXJuaW5ncyBpbnRyb2R1Y2VkIG9uIFY1LjYgYnJhbmNoCisKK2NvbW1pdCA1YjRhMjRjZGNlZTFiYzNkODI2MzNjY2FmZWI5NmZjZTk1MzQ5YzU5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDIwIDA5OjIyOjI3IDIwMTIgKzAxMDAKKworICAgIHVuaXQgdGVzdHM6IGZpeCBhIDY0LWJpdCBjb21waWxlciB3YXJuaW5nCisKK2NvbW1pdCBjYmYxYzkxYmFmNzE5MWJlNWZhMjdkODFiY2Y4NzE0MzMxYTJjMTJmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDIwIDA5OjIwOjQyIDIwMTIgKzAxMDAKKworICAgIFVzZSBzbm1wVGFyZ2V0UGFyYW1UYWJsZV9kaXNwb3NlKCkgdG8gZnJlZSBhIHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdC4KKyAgICAKKyAgICBGaXhlcyBhIGJ1ZyBpbnRyb2R1Y2VkIGluIGNvbW1pdCBkYmYyNmEwNWEwNGVmMjRjNDczNDZlNWFkZGE0OGUzMzg0OThlNzFmLgorCitjb21taXQgYWE2Yjc5YmMxMjRhN2I3YTg4NWQ3ZTUwMzVhYjA2YWEzZWNlZjYxMworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiAyMCAwOToyMDozMSAyMDEyICswMTAwCisKKyAgICBIT1NULVJFU09VUkNFU19NSUI6IGZpeCBhIGNvbXBpbGVyIHdhcm5pbmcKKworY29tbWl0IDNhNzZiNDNlMTFmZmZhZGE2MzJmY2NiODQ4YWI1MDBlODc2YWQ0OGIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTggMTY6MjE6MDUgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogcHl0aG9uOiBBdm9pZCB0aGF0IGFuIFNOTVAgc2V0IHdpdGggVXNlRW51bXMgZW5hYmxlZCBjYXVzZXMgYSBzZWdtZW50YXRpb24gZmF1bHQKKworY29tbWl0IDg0ZGVjOWZhOTJiMGFhMmQ1OGViNzAyMDMzMGY0Zjk4ZTUxNTQzMjEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTggMTQ6Mzg6MjEgMjAxMiArMDEwMAorCisgICAgcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzogRml4IG1vc3QgY29tcGlsZXIgd2FybmluZ3MKKworY29tbWl0IDM4Y2YyMThjM2YxYTcyNzc4NmUyMjdhNWQzZmIxODZmZDBmMWExNWYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDE0OjUwOjEzIDIwMTIgKzAxMDAKKworICAgIEZpeCBhIHR5cG8KKworY29tbWl0IDQ1NDEyMjI0NDEyMmJmZGI2ZjY3Y2FiMzEyNTZkN2I0NjM3MmU5ZTEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDE0OjMwOjE4IDIwMTIgKzAxMDAKKworICAgIEZyZWUgdG1TdGF0ZVJlZiBvbiBlcnJvcnMuCisKK2NvbW1pdCAwMTE5MDIyZGFhNTljNzNiZmVjMGRhMjM4NmQwNjI4ZjE0ZTZkYWI3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxNDowOToxMiAyMDEyICswMTAwCisKKyAgICBGcmVlIGZpbmdlcnByaW50IHdoZW4gaXQncyBub3QgbmVlZGVkLgorCitjb21taXQgMGU4NGNkMzAzYTA4MjY3ZGVjNzhmNmQ4MWM5YmIwN2UzZDgzYTExZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTM6NDg6MjYgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgNjNkYzg0NmE3OTQ5Y2U2OTdiM2UyOGM1NDNkYzExMDVlNjNhMjI1MAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTM6MDg6MjggMjAxMiArMDEwMAorCisgICAgRnJlZSBjZXJ0aWZpY2F0ZSBmaW5nZXJwcmludC4KKworY29tbWl0IGNlMWYyODRhNjNlYjgxNjQ0YjNlMzI2MDZjYmUzOWI2N2UxZGZmMmEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDE0OjM3OjA5IDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IDdlMjE0MTNjYTZmMmVmZDdhM2FmYjYyYzYyYjY0NDg4MWI4YmQxZTcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDEzOjQ2OjMwIDIwMTIgKzAxMDAKKworICAgIFByb3Blcmx5IGFsbG9jYXRlIGFuZCBmcmVlIGVuZ2luZUlELgorCitjb21taXQgMzRjOTYyODgyNjA3YzM2MzhhMmZhMjVhMmFjNTMxNDkyZDcxYzc4NworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTM6Mzc6MjUgMjAxMiArMDEwMAorCisgICAgRnJlZSBsb2NhbGx5IGFsbG9jYXRlZCB0bVN0YXRlUmVmLgorCitjb21taXQgZjU3YWU1MzFkYzU2NThhYmNkNjViMTYyNzYxNTUyNTIzOGQxNmQyZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTM6MjA6MjQgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgNTM2YmM1NzU1NmMzMTQxNTYxZWE0YTE5NDgxMGIxNjI5MGE2OTFlZQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTM6MTU6NDcgMjAxMiArMDEwMAorCisgICAgQWRkZWQgY2hlY2sgaWYgdGhlIGZ1bmN0aW9uIGFjdHVhbGx5IGRvZXMgc29tZXRoaW5nLgorCitjb21taXQgYTA3NzdkMzA3ZGJjYWYyMTllZTAxODRhMGZiYWI5ZDRlNWQ2YWEwYgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTM6MDE6NDUgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgOGI5N2E3MWM4ZTc5NTk0MjhlYjRkNGU4ZDkwZTkwOTZkNDNmZjA5ZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTI6NTc6MjYgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgMmMxNTA3YzIyMDMwNTQ5YWU2NjBjMGUyMTFmYmRjNWM3NWVjNWM1NworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTI6NTM6NDcgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgNjVmMmI3YmNkNGZlMDM5MDZhYTFhMTE1YWI2MGE4OWI4YWU5MzNkNQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTI6NTE6MzYgMjAxMiArMDEwMAorCisgICAgQ2xvc2Ugb3BlbiBmaWxlcyBvbiBlcnJvci4KKworY29tbWl0IDBlNTJlNGY2NmQ0NDc2NmJlYTM3NDczNTU2Yzc4ZTUyMTliOTU0NjEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDE4IDE1OjQ1OjMzIDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IGRiZjI2YTA1YTA0ZWYyNGM0NzM0NmU1YWRkYTQ4ZTMzODQ5OGU3MWYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDE4IDE1OjQyOjE3IDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IDc0OGRhODRiMWZkNjU0ZTMzOGJjNzAxZThmOWU1ZGEyMjkxODdmMWMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDE4IDE1OjMyOjA0IDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IGViMjE3MTQ2ZmQ1NDAzNmVhNDIwMmJmZWY3OGJiZjc3NGQ3ZTM4MmQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDE4IDE1OjIzOjEwIDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IDliYTM4ZWVjNjYxMzhlYzFmNjEzZWE4ZDA0ZTE1ODEzMGM3MTIxYmMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDE4IDE1OjE4OjU1IDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IGQ5ZDkzOGQzMDE4YzI3ZjUzMjc3YmM1ZTU5NTc4NTAwNDkwYzFkMDkKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDE4IDE1OjE2OjM4IDIwMTIgKzAxMDAKKworICAgIENsb3NlIG9wZW4gZmlsZSBvbiBlcnJvci4KKworY29tbWl0IGQ1ZTgxN2Q1YmQ1MThkOWFjNmEwZDYwZTBlMTQxZGQ2NGYyN2FkMTkKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDE4IDE1OjE0OjEyIDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IDJhZTY4ZjA1OWRmOWQ3NGIwNzRkMTJmNTljMTg0NzQ2NmVkNTc2Y2QKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDE4IDE1OjAzOjE3IDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IGEwMGYzZDQ2MTEyMWI1NDVhZWQ3MmFjMTJiMjQzODc5MWRjZmM0YmEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDE4IDE0OjU4OjM5IDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IDU5ODg0YmI0ZDM1YWQxMzc0N2ZmYTY3MjM0MzZkY2E1ODdhOWFiNzcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE3OjA5OjEyIDIwMTIgKzAxMDAKKworICAgIEluIGFib3ZlIGNvZGUsIG9sZW5ndGggaXMgY2hlY2tlZCwgc28gbGV0J3MgY2hlY2sgaXQgYWxzbyBoZXJlLgorCitjb21taXQgYmE1ZDUyOTJiMDQzOTNiMGM3ZDdkN2VkOTYxMjQxOTI5NDE4YzZlNAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTc6MDU6MTQgMjAxMiArMDEwMAorCisgICAgRml4ZWQgZGVyZWZlcmVuY2luZyBOVUxMLgorCitjb21taXQgZGEyZDZhNzAyOGExM2I5ZWRmM2E1Yzg0MzE0ZDBmMWZlZWY3NjcxNAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTY6NDQ6NTYgMjAxMiArMDEwMAorCisgICAgUHJldmVudCBkZXJlZmVyZW5jaW5nIE5VTEwuCisKK2NvbW1pdCBmODgwNTRhOWI2OWI2ZGUyNzRmN2ExNGE1OWI0NzMyM2U1ZTRlNGM2CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNjozNzozNSAyMDEyICswMTAwCisKKyAgICBEb24ndCBkZXJlZmVyZW5jZSBjb250ZXh0IGlmIGl0J3MgTlVMTC4KKworY29tbWl0IDdjNGQ0NTllOGYxZjY1MmNjMjA5OGMzZDRjODFkZTkwYTg0ZWQ3MTAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE2OjMwOjA5IDIwMTIgKzAxMDAKKworICAgIERvbid0IGRlZmVyZW5jZSBOVUxMLgorCitjb21taXQgZmMxOWI3ZjMzYjU4NzkyN2QyYTAxZTcyZDIzZDIxYjliMTY5NmFiMworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTY6MjU6MjYgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgY2xvc2UgTlVMTCBmaWxlLgorCitjb21taXQgNWU5NWNhNjc5MDA3NmI3ODgwNzJhODAxZWU3YzgyOTY5ZDk5NWJjYgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTY6MTc6MDkgMjAxMiArMDEwMAorCisgICAgUHJldmVudCBkZXJlZmVyZW5jaW5nIE5VTEwgd2hlbiBhIHRyYW5zcG9ydCBkb2VzIG5vdCBoYXZlIGZfZm10YWRkci4KKworY29tbWl0IGVlZDZmNWY5YjlhZTU0ZDJjZWFiNjdhZDg1YWRkZTFmNmE4YTIxZDUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE2OjEzOjEzIDIwMTIgKzAxMDAKKworICAgIFByZXZlbnQgZGVyZWZlcmVuY2luZyBOVUxMLgorCitjb21taXQgNDFjZGU2OGI1ZmE0YjM4ZDgxNDUwY2Y5MWUwODJjZGZhODI1ZTdjZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTY6MTA6MTAgMjAxMiArMDEwMAorCisgICAgQ2hlY2sgaWYgYSByZWdpc3RyYXRpb24gd2FzIHJlYWxseSBmb3VuZC4KKworY29tbWl0IDViNzJhNDA4NTM4NzZhMTg2ZWZjYzAwOTBhNGUzMmMyMzViOWMwNWYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE2OjAzOjU4IDIwMTIgKzAxMDAKKworICAgIERvbid0IGRlcmVmZXJlbmNlIE5VTEwgd2hlbiBkaWZmbGVuIGlzIFNNVVhfTUFYX1BSSU9SSVRZICh3aGljaCBpcyBoaWdobHkgdW5saWtlbHksIGJ1dC4uLikKKworY29tbWl0IGZhNmE5MTJlNDFjNWQwZmQyYTYzNjg5NGU4NmI2NDI2YzA3Mzc1YWIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE1OjM3OjQ0IDIwMTIgKzAxMDAKKworICAgIENoZWNrIGZvciBtaXNzaW5nIHZhbHVlIGluIHNldEV2ZW50LgorCitjb21taXQgNDEwYjcxZGE0MjUzODlmZWNjMjVkMTRmNDlmMjM3NTM1ODE1NzZhZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTU6Mjg6NDEgMjAxMiArMDEwMAorCisgICAgRGVyZWZlcmVuY2UgZXJlZyBvbmx5IGlmIGl0IGlzIG5vdCBOVUxMLgorCitjb21taXQgMTg1MjcyZDFhMGI5MTM3NzQxODZmMWI5MTM1YWVhZjYzN2ViZWQ1MgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTU6MTc6MjEgMjAxMiArMDEwMAorCisgICAgQXMgcGVyIGFib3ZlIGNvZGUsIHRlbXBsYXRlX3YycGR1IGNhbiBiZSBOVUxMLCBzbyBjaGVjayBpdCBiZWZvcmUgZGVyZWZlcmVuY2luZy4KKworY29tbWl0IDQ4ZTVlYWQzZmQyYzJiMzg1ZGY2OTcyYzY3NTI2ZmY2YmRjMzA3NjgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE0OjQyOjIyIDIwMTIgKzAxMDAKKworICAgIFVwZGF0ZWQgbGFzdCBmaXggdG8gbmV3IGVycm9yIHJlcG9ydGluZyBzdHlsZS4KKworY29tbWl0IGYzM2QzMzYxNWQ2ZDg1ZDAwNzM3MjY0NzNjNDE0NmNiY2RmMTFjZWQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE0OjMwOjA3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIHNpZ3NlZ3Ygd2hlbiBlbXB0eSBjb25maWcgbGluZSBpcyBwYXJzZWQuCisKK2NvbW1pdCBiNWRmMWVlYjQ3ZWQzNTU5YjZmNGQ5ZWNjY2RiMjQyMTI2ZTZjOTkyCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNDoxMTo1OCAyMDEyICswMTAwCisKKyAgICBGaXhlZCAoaGlnaGx5IHRoZW9yZXRpY2FsKSBzaWdzZWd2IHdoZW4gc3AtPnNlY3VyaXR5RW5naW5lSUQgaXMgTlVMTC4KKworY29tbWl0IDZmZWVkNjI5YTcxODk5YzExMzA5Njk1OWQ4NTQ5ZGMxMjAxZThmOWEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDEzOjQzOjM3IDIwMTIgKzAxMDAKKworICAgIEFkZGVkIE5VTEwgYW5kIGxlbiBjaGVjayBqdXN0IGluIGNhc2Ugc29tZW9uZSBwcm92aWRlcyB2YWx1ZSA9IE5VTEwgYW5kIG5vemVybyBsZW4gKC0+IE5VTEwgaXMgdGhlbiBkZXJlZmVyZW5jZWQpLgorCitjb21taXQgMzU1YzVhYjI2NGFmMmE2MDIwYTFkOGE5MjNmODBmMTFiOTQyMjk1ZQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTM6MzY6NDEgMjAxMiArMDEwMAorCisgICAgRXh0ZW5kIHRoZSBOVUxMIGNoZWNrLCBpLmUuIHJldHVybiBpZiB0aGVyZSBpcyBub3RoaW5nIHRvIHJlbW92ZS4KKworY29tbWl0IGRkZDc5NDhhY2FkOTM4Y2Q0Mjk3NDUwNWRkY2E0ZjAzNzIxMTY3MDkKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBKYW4gMTYgMTE6MTE6MjkgMjAxMiAtMDgwMAorCisgICAgdXBkYXRlIHNwYXJ0YSdzIGNvcHlyaWdodAorCitjb21taXQgNDEyNTYwODZhN2E1MDQxNDUzNDE5Y2ZkNmU1NjJjN2I1NWM1NmIwYQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEphbiAxNiAxMDozMjowNCAyMDEyIC0wODAwCisKKyAgICBwdWxsZWQgZnVsbCBjb3B5IG9mIGV4dHJhY3RuZXdzIGZyb20gbWFzdGVyCisKK2NvbW1pdCA2MjVhNzBkYmRmZDk5MDJkYTc5ZWZhMjkzZmU2ZDJhYzhjY2YyYjJlCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSmFuIDE2IDEwOjI0OjE5IDIwMTIgLTA4MDAKKworICAgIHVwZGF0ZSB0byBjaGFuZ2UgdG8gdGhlIG5ld2VyIGxvZyBnZW5lcmF0aW5nL3BhcnNpbmcKKworY29tbWl0IDYyZTMyYjEzMDg5YjI5ZWRjZjI3NmY2MTVkYTY3ZTQ1MDhmZTdiYjUKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBKYW4gMTYgMDk6Mjk6NDIgMjAxMiAtMDgwMAorCisgICAgY29uZmxpY3RpbmcgbWVyZ2UgZnJvbSBtYXN0ZXIgZm9yIGV4dHJhY3RuZXdzCisKK2NvbW1pdCA3MDA4NGRhNjFkMmJjYmQyY2YxZWQ4MWJkYzNiZjY3OTRjMmFmZmI2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDEzIDExOjQ5OjE2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tU0NIRURVTEVSLU1JQjogSGFuZGxlIDMyLWNoYXJhY3RlciBzY2hlZENvbnRleHROYW1lIHZhbHVlcyBjb3JyZWN0bHkuCisgICAgCisgICAgU2VlIGFsc28gY29tbWl0IGIzYzQ5ODI1NDJlMGFiMTUxZmIzODg0NzU0Y2RmYmNiNDcyZGE1MmQuCisKK2NvbW1pdCAwNGJmM2UyODgxNThlZTg4MGVkZjIzN2U0MDA3ZmVlMzdkMjA0NGRkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxNTozOTozNyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBlbmRsZXNzIGxvb3Agd2hlbiBTU0xfcmVhZCByZXR1cm5zIGVycm9yLgorCitjb21taXQgYzE1MjZmY2NjMDQ3NGMxZGIxOGNhYTlkYmI4MzM4NTNjZGRkZTNjYworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTU6MTM6MjEgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYSB0eXBvLgorCitjb21taXQgYTI3YWExOWRmMjgzMTU2YzAzMmM4MWVhZWU1ZTExNTg1OWQzOGMxNworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTU6MTE6MzIgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgcmVwbGFjZSAncmMnIHZhcmlhYmxlLCBpdCdzIHZhbHVlIGlzIG5lZWRlZCBvdXRzaWRlIHRoZSBsb29wLgorCitjb21taXQgOTg1ZGZmMmIwODc2ZDk0ODNjNDE0ZmNjZWEzZWY2YmM2M2UxNDU2MQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTU6MDE6MzIgMjAxMiArMDEwMAorCisgICAgUmVtb3ZlZCBkdXBsaWNhdGUgY29kZS4KKworY29tbWl0IDJmZDc4MTgzMThlN2E1ZGZlOThmNTJjY2Y3NTBjMmE2M2U4MjVkZWQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDE1OjAwOjIyIDIwMTIgKzAxMDAKKworICAgIFJlbW92ZWQgZHVwbGljYXRlIGNvZGUuCisKK2NvbW1pdCAxNWYyMTEzMGJhMzNkYzlhZmQxNjRlNTJkZmQ3NGM5Y2VjMGU5MjMyCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxNDo1ODoxNCAyMDEyICswMTAwCisKKyAgICBSZW1vdmVkIGR1cGxpY2F0ZSBjb2RlLgorCitjb21taXQgMmE4YThmMmFiN2NkNzU4MjZjNWQ0MWVjM2NmZDVjZTNlOTYzNGNmMworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTQ6Mzk6MjggMjAxMiArMDEwMAorCisgICAgcmVtb3ZlIGRlYWQgY29kZSwgJ2NwJyBpcyBhbHdheXMgIT0gTlVMTCBoZXJlLgorCitjb21taXQgMzhmZDYzNzhjYzMyNzUxODBmNjNiOGQ5YjlhNDA3MmIzZGFiZjhlNAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTQ6MjU6MDYgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYSB0eXBvLgorCitjb21taXQgZWJkOTJlMTliMTBjMGEzOGUxN2NkZTQwNzg2NGI0NWMyNmUxNzMyNworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTQ6MDc6NDMgMjAxMiArMDEwMAorCisgICAgUmVtb3ZlZCB1bm5lY2Vzc2FyeSBpZiAodmFsdWUpIGNoZWNrIC0gdmFsdWUgaXMgY2hlY2tlZCBmZXcgbGluZXMgYmVmb3JlLgorCitjb21taXQgYzVjYWNmNWNhZjk3OWQwMThlYTZjYWUxYzAzYjhmZGYwYjExOGRmZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTM6NDQ6NDMgMjAxMiArMDEwMAorCisgICAgUHJldmVudCBkb3VibGUgZnJlZSgpLCAnZGlybmFtZScgaXMgYWxyZWFkeSBmcmVlZCBpbnNpZGUgc2VfYWRkX3BhaXJfdG9fbGlzdCgpIGlmIGl0IGZhaWxzLgorCitjb21taXQgYWNkY2ViNTBlYTY2ZDZiMzIzYzc0ZWUwMjFmYjc3ZTgxMGU0ZTdhZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTM6NDM6MTkgMjAxMiArMDEwMAorCisgICAgUHJldmVudCBtZW1vcnkgbGVhayB3aGVuIG1hbGxvYyBmYWlscy4KKworY29tbWl0IDE3MDUzZTM0Y2ZlOWE4YWIzOTVmYjUwZjVjM2YxZGFmYzcyNDdhZWIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDEzOjMyOjU3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGRvdWJsZSBmY2xvc2UoKS4KKyAgICBMaW51eCBtYW4gcGFnZSBmb3IgZmNsb3NlKDMpIHNheXM6IEluIGVpdGhlciBjYXNlIGFueSBmdXJ0aGVyIGFjY2VzcyAoaW5jbHVkaW5nIGFub3RoZXIgY2FsbCB0byBmY2xvc2UoKSkgdG8gdGhlIHN0cmVhbSByZXN1bHRzIGluIHVuZGVmaW5lZCBiZWhhdmlvci4KKworY29tbWl0IGE2NjQxZWRiOWNiNzRmYzIyMzZiNDJjZTU1NTRmYzMzMjk5NTY1NTIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTU6MjI6MzQgMjAxMiArMDEwMAorCisgICAgTWluR1c6IFNraXAgdGVzdCBUMDY1IGlmIG5vdCBzdGFydGVkIGZyb20gaW5zaWRlIGFuIE1TWVMgc2hlbGwKKworY29tbWl0IGE4ODNlZjE5ODJmMzAxYjE0ODVkMjI3MzAxNjc0OTI3MzMwZjViNjcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDExIDE1OjE0OjUzIDIwMTIgKzAxMDAKKworICAgIE1vdmVkIGRlYnVnIG9wdXRwdXQgYmVmb3JlIHJldHVybi4KKworY29tbWl0IDQ1NzUxOTY3Mjg3ZDk3NjQwZWZkY2RmOGU3N2U4ZDQ5MDkzOWQ4ZWIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTQ6MTc6MTggMjAxMiArMDEwMAorCisgICAgQ29udmVydCBzdHJ0b3VsbCgpIHVuaXQgdGVzdCBpbnRvIGEgTmV0LVNOTVAgdW5pdCB0ZXN0CisKK2NvbW1pdCAyYzJmYTQ4MzM2YTRmMWYxNzdjMjk5MWQ2NTE1ZDI5ZjM5NTMzYzQ0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDEzOjUwOjQ0IDIwMTIgKzAxMDAKKworICAgIENvbnZlcnQgcmVhZF9jb25maWdfcmVhZF9vY3RldF9zdHJpbmdfY29uc3QoKSB1bml0IHRlc3QgaW50byBhIE5ldC1TTk1QIHVuaXQgdGVzdAorCitjb21taXQgMDdjNjY2ZjZjZWEyN2YyYjJhYjliYzA4YWVkMGNiNjEzM2ZlMzc1OAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTM6MTc6NDUgMjAxMiArMDEwMAorCisgICAgRml4ZWQgY29tbWl0IDczYTUyM2U0NjgyNzdmNmRmMmU5ODQ4OTEzMTNiOGJlOGJjZTE5MjE6CisgICAgRmlkZXggZGVyZWZlcmVuY2luZyBrZXktPmluZm8gd2hlbiBrZXkgaXMga25vd24gdG8gYmUgTlVMTC4KKworY29tbWl0IDNiNjg2NTY2Mjk2ZGQ4N2JjNDJiN2YxMTY5ZGFhY2RiM2M0NWNjNTgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBPY3QgMTggMDY6MjU6NTYgMjAxMCArMDAwMAorCisgICAgV2luMzI6IGJ1aWxkcyBhZ2FpbiB3aXRob3V0IHdhcm5pbmdzIHdpdGggTVNWQyA2LgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTQ4OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGYzYTdkMWIwOTYwOWRhZDY0OWY1OGJiZGI1YjdlMTBkMzliMzk4YzEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBPY3QgMTcgMTE6MDQ6MDYgMjAxMCArMDAwMAorCisgICAgRm9sbG93LXVwIGZvciByMTk0NzY6IGZpeGVkIGEgdHlwby4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk0NzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAyZGU3M2JkMzY1YTM4MWI5YzM1M2NhNTIzMDc2OWVlZmIxYWM3MWVkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDExOjQyOjQyIDIwMTIgKzAxMDAKKworICAgIGxvY2FsL3Bhc3N0ZXN0OiBSZW1vdmUgYW4gaW5jb3JyZWN0IFBBVEg9IHN0YXRlbWVudAorCitjb21taXQgNjk5NTEzZjEyMzhlMGFkY2UxZjFjZWM5OGUwZDE0NzI5M2ZjNTA0NworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE9jdCAxNyAwOToyNTo1MSAyMDEwICswMDAwCisKKyAgICBORVRTTk1QX1JFTU9WRV9DT05TVCgpLXJlbGF0ZWQgY2xlYW51cC4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk0NzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA2MzU4ZGVlNzJmYjM0N2UyNjAwYTBhN2JkMjFmMjMyNzBkM2EwMGY2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDEwOjU4OjE1IDIwMTIgKzAxMDAKKworICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmM6IEFkZCBhIGNvbW1lbnQKKworY29tbWl0IDUzOTZiZmUwMzJjOGNiYzczYzhmZjVkNGIwODVlYmFkYTlmNTk4NDYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTA6MzA6MTYgMjAxMiArMDEwMAorCisgICAgUmVwbGFjZSBzdHJuY3B5KCkvc3RybmNhdCgpIGJ5IHN0cmxjcHkoKS9zdHJsY2F0KCkKKworY29tbWl0IGZlYjNhZjI4ZGNhZTIyMDE1YWU4NjVhMmU1ZGQ4YzQxNmU5OTkxZDgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTA6MDI6MDggMjAxMiArMDEwMAorCisgICAgUmVwbGFjZSBzdHJuY3B5KCkvc3RybmNhdCgpIGJ5IHN0cmxjcHkoKS9zdHJsY2F0KCkKKworY29tbWl0IGI3ZTFhYTI1NWJhZTRhMzQ1M2Y5ZWNhNjQ0YTg3NjYzNDM1MWYxMWQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBNYXIgMjAgMTk6MzY6MjggMjAxMCArMDAwMAorCisgICAgQ0hBTkdFUzogbGlic25tcDogY2hhbmdlZCB0aGUgdHlwZSBvZiB0aGUgZm91cnRoIGFyZ3VtZW50IG9mIG5ldHNubXBfc2V0X3Jvd19jb2x1bW4oKSBmcm9tIGNvbnN0IGNoYXIqIHRvIGNvbnN0IHZvaWQqIHN1Y2ggdGhhdCBubyBjYXN0IGlzIG5lY2Vzc2FyeSB3aGVuIHBhc3NpbmcgYW5vdGhlciBkYXRhdHlwZSB0aGVuIGNoYXIqIG9yIGNvbnN0IGNoYXIqLgorICAgIENIQU5HRVM6IFdpbjMyOiBjaGFuZ2VkIGluX2FkZHJfdCBmcm9tIHVfaW50IHRvIHVfbG9uZyBzdWNoIHRoYXQgaXQgbWF0Y2hlcyB0aGUgZGF0YXR5cGUgb2Ygc29ja2FkZHJfaW46OnNpbl9hZGRyLgorICAgIEFsc28sIGZpeGVkIHNldmVyYWwgY29tcGlsZXIgd2FybmluZ3MgKG1vc3RseSBjaGFyICogPD4gdV9jaGFyICogbWlzbWF0Y2hlcykgYW5kIHJlbW92ZWQgc29tZSBjYXN0cy4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxODM0NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICAKKyAgICBDb25mbGljdHM6CisgICAgCWFnZW50L2FnZW50X3JlZ2lzdHJ5LmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jCisgICAgCWFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYworICAgIAlhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmMKKyAgICAJYXBwcy9zbm1wdHJhcGQuYworICAgIAlzbm1wbGliL3NubXBJUHY2QmFzZURvbWFpbi5jCisgICAgCXNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYworICAgIAlzbm1wbGliL3N5c3RlbS5jCisKK2NvbW1pdCBmNDdhMzc1Mjg0OWRiMDc1ZTZmMjA1M2I4NTk1YjdiNzkyZmI2NDYyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgT2N0IDE1IDEwOjU2OjA5IDIwMTAgKzAwMDAKKworICAgIENIQU5HRVM6IFdpbjMyOiBidWlsZGluZzogQnVpbGRzIG5vdyBjb3JyZWN0bHkgd2l0aCBhIDY0LWJpdCBjb21waWxlci4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTQ1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDAyYjYwNTZkZjk1ZGE4YjY3MzAzNGUzOWMyYzdjMzg2ZWQwZjM2OWMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTE6NDQ6NTMgMjAxMiArMDEwMAorCisgICAgRml4IGEgY29tcGlsZXIgd2FybmluZyBhYm91dCBjYXN0aW5nIGF3YXkgY29uc3QKKworY29tbWl0IGExOTg2NTgzMmZjNzdmNGMwNDgxNDRkOTFhNDMxYjFlOTRkMzI5ZjIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgT2N0IDE0IDIzOjEyOjA1IDIwMDkgKzAwMDAKKworICAgIENIQU5HRVM6IGFwcHMsIHNubXBsaWI6IFBBVENIOiAyODM1NTc3OiBpZGVudGlmaWVkIGJ5ICJCYXJ0IFZhbiBBc3NjaGUiOiBSZXBsYWNlIFNOTVBfWkVSTyBvZiBhcnJheXMgd2l0aCBhIG1lbXNldC4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxNzc5NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDY3YTNlMmVjY2I5NWY5YzlkMDgwOWVmY2JkZGNkODY2ZWUzMDYyZDUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNiAxNDoyNzoxNSAyMDEwICswMDAwCisKKyAgICBGaXhlZCBhIGNvbXBpbGVyIHdhcm5pbmcgYWJvdXQgZGlzY2FyZGluZyB0aGUgY29uc3QgcXVhbGlmaWVyLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE3OTcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgM2RjZGUyZThhNTk1YTUyN2YwNjE0MmMzYjg1MmRlODQzM2ExY2YyOAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBKYW4gMjQgMTQ6Mjc6NTUgMjAxMCArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUHJldmVudCBnY2MgcGVkLXdhcm5pbmcgZm9yIE5FVFNOTVBfUkVNT1ZFX0NPTlNUCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTgwNTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBjMmUxNTI1YTg1YmRhNTI5OWEzYjlmMjQxNjE0ZjdlNjUwOWFlZWJhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDYgMTM6MzU6MTEgMjAxMCArMDAwMAorCisgICAgQmFja3BvcnQgY29tbWl0IDI5NWY0NzNjODM1NDYyMjFiMmE3MWQ4MTVjNjFlMzNhNjdmOThhZTM6IHJlZmluZSBORVRTTk1QX1JFTU9WRV9DT05TVCgpIGltcGxlbWVudGF0aW9uLgorCitjb21taXQgY2I0MjNiMGFlOWVkMDA1OWFhMTAwZGM0ZTJmZDkzYWQxYjk3ZmFmOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA2IDExOjU3OjUxIDIwMTAgKzAwMDAKKworICAgIEJhY2twb3J0IGNvbW1pdCBlMmZiMDllMDA5M2UyZjY0OGZlMjYzOGRhMmYzYWYxOGZkYjMyYmYwIC0gaW50cm9kdWNlIE5FVFNOTVBfUkVNT1ZFX0NPTlNUKCkuCisgICAgCisgICAgQ29uZmxpY3RzOgorICAgIAlhZ2VudC9zbm1wX3BlcmwuYworICAgIAlzbm1wbGliL3NubXBfc2VydmljZS5jCisKK2NvbW1pdCBhZmMzOTZhYjE2MThhODU5NWEyNTE5ZmJjMjVmN2E0OThlMTc0NDExCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDA4OjQ5OjM0IDIwMTIgKzAxMDAKKworICAgIFVuYnJlYWsgbmV0c25tcF9ta3RlbXAoKSBhbmQgbWFrZV90ZW1wKCkuCisgICAgCisgICAgVGhlc2Ugd2VyZSBicm9rZW4gYnkgY29tbWl0IGJiOGZjYmI4NzQ5OTgwMDBmOTQ1ZjA1OGQxYWE2ZmUxNGU5MjU4OTkuCisgICAgQWxzbyByZXBsYWNlIGEgc3RybmNweSgpIGNhbGwgYnkgYSBjYWxsIHRvIHN0cmxjcHkoKSBhbmQgcmVwbGFjZSB0aGUKKyAgICBtYWtlX3RlbXBmaWxlKCkgaW1wbGVtZW50YXRpb24gYnkgYSBjYWxsIHRvIG5ldHNubXBfbWt0ZW1wKCkuCisKK2NvbW1pdCAyMTAxODVjMTVkMGQ2NWYwZWE5OGI1ZTNjMmUwNzc2ZjYyMjJkMTcwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDA4OjI3OjQzIDIwMTIgKzAxMDAKKworICAgIEZpeCBhIGNyYXNoIGR1cmluZyBzdGFydHVwIG9mIHNubXBkIGludHJvZHVjZWQgYnkgY29tbWl0IDg4NTA2MTY4N2Q5Y2FhMzg0NzA5Nzk2NjdkN2Q4YWQ2NTYzY2VkYWQuCisgICAgCisgICAgQWxzbywgbWFrZSBzdXJlIHRoZXJlIGlzIG9ubHkgYSBzaW5nbGUgY29weSBvZiB0aGUgY2xlYW51cCBjb2RlIGluIGZ1bmN0aW9uCisgICAgbWtkaXJoaWVyKCkuCisKK2NvbW1pdCA4YmI0ZTg2YWJjZjk4ZmYyODc0OGFmMGFmODljOThlNjRkNWNkOTYxCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBXZWQgSmFuIDExIDA3OjQ3OjEyIDIwMTIgKzAxMDAKKworICAgIFJlZHVjZSB0aGUgc2NvcGUgb2YgdGhlIG9sZG1hc2sgdmFyaWFibGUuCisKK2NvbW1pdCA2NjgwMTQ3YjEzOGVjMTE0ZjgxYzVkMTI4YWM5MzUwYzg0NTBkMDgxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgSmFuIDEwIDE4OjQ0OjMxIDIwMTIgKzAwMDAKKworICAgIE1ha2UgdGVzdCBUMDE1aW50NjRfY2xpYiBwYXNzIG9uIDY0LWJpdCBzeXN0ZW1zCisKK2NvbW1pdCAzYWFkMTVhZTU2MGFjODU3ZTczYzkwNzY0ZTkwM2U3Y2EwMmIzMjk1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNTo0MDo1OSAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgZm9yIGxhcmdlIE9JRCBuYW1lcworCitjb21taXQgZmJhMTg4ZWU4MjAxMGIyZjJkOGNhMmU0MjZiYTY1NDQ5OWFiM2QwYQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTU6MzE6MzMgMjAxMiArMDEwMAorCisgICAgZml4ZWQgYnVmZmVyIG92ZXJmbG93IGluIF9fY29uY2F0X29pZF9zdHIKKworY29tbWl0IDIxZDI1ZDg2YjhlNDkwNGQ3OThkYzhjOTZkYWRlOWU1MDQ4NDU3YTgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE1OjI2OjA3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHBhcnNpbmcgcG9ydCBudW1iZXJzLgorCitjb21taXQgZDM2OTMxODQxYjJmYzJjZWJjNjM2NGIyOTQ5MTI5YTBhZDQyYWQxZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTU6MDU6NTEgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYSBidWZmZXIgb3ZlcmZsb3cgd2hlbiBsYXJnZSBTdW1GaWxlIGlzIHVzZWQuCisKK2NvbW1pdCAwZWZkZDAyMmRhMDlhZjFiNWUxNjE3MWZhN2EyYjUyM2M1ZDZlYzU5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNTowMTo1MyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgd2hlbiB0b28gYmlnIHRlbXAgZmlsZSBwYXR0ZXJuIGlzIHVzZWQuCisKK2NvbW1pdCA1NjBiYzZjMDliNzUxNTU2ZWZkNmI0YzQ0OTU3NTFiMTA5YTkzZjkyCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDo1OToyNCAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3csIGp1c3QgdG8gYmUgc3VyZS4KKworY29tbWl0IDgyOTFkN2M1YjkyYTMxZGQ0ZjU4MmI0OTdkNGIyYTA4NTMzNjdhNTYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjU1OjE2IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdy4KKworY29tbWl0IDg4ZTFmMzRkZTczMDA1NzVmYTZkYWI4NTdlY2RkYjI0MmE4N2RlODAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjQ4OjU1IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHRvbyBsb25nIGludGVyZmFjZSBuYW1lcyBhcmUgdXNlZC4KKworY29tbWl0IGJlMTM3NWE5OTI2ZWJlMGNkNWI3OGE0MDQ1YzNiZDExYzgzNjY0YjEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjQ2OjQ5IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIGEgc2Vuc29yIG5hbWUgaXMgdG9vIGxvbmcuCisKK2NvbW1pdCAxY2IyNDYyNTM3MjA2MmIxNGM3MWQ3ZGQ1MWUyMGZlZjc3M2UyNzQzCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDo0MTowMCAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgd2hlbiBhIENQVSBoYXMgdG9vIGxvbmcgbmFtZS4KKworY29tbWl0IDg0YzgwN2VlMDMyNTFlNTQ4NTZlODNkNjJkMDZlYTA4YjhkZjUyN2EKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjM2OjUwIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHRvbyBsb25nIGludGVyZmFjZSBuYW1lcyBhcmUgdXNlZC4KKworY29tbWl0IGMzMTBlMzkwYjVkZDA1ZjI0YmU3ZWIxOTA0Yzc0ZTQxMjU5YzkzZGIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjI0OjU0IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHRvbyBiaWcgdGVtcCBmaWxlIHBhdHRlcm4gaXMgdXNlZC4KKworY29tbWl0IDQ2MDBkMTE0MzRlODNiODY1M2NmOWY4MTNhM2Q4YjYzMDQ1NWI0MmQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjE3OjA4IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIHBsYXVzaWJsZSBzdHJpbmcgb3ZlcmZsb3cgYmVmb3JlIHBhcnNpbmcgY29tbWFuZCBsaW5lIG9wdGlvbnMuCisKK2NvbW1pdCA4ODUwNjE2ODdkOWNhYTM4NDcwOTc5NjY3ZDdkOGFkNjU2M2NlZGFkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDoxMTowMiAyMDEyICswMTAwCisKKyAgICBHZXQgcmlkIG9mIChpbnNlY3VyZSkgU05NUF9NQVhQQVRIIGluIG1rZGlyaGllcigpCisKK2NvbW1pdCA4MDE2ODkwYTQ0NWY2YTdlMmE4NzNhMDQ4NzNkNGUyN2I2ZWU2NGUzCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxMzo0ODozNCAyMDEyICswMTAwCisKKyAgICBGaXhlZCB3cm9uZyBpbnRlZ2VyIHNpemUgb24gNjQgYml0IHBsYXRmb3JtLgorCitjb21taXQgYmI4ZmNiYjg3NDk5ODAwMGY5NDVmMDU4ZDFhYTZmZTE0ZTkyNTg5OQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTM6MzE6MzYgMjAxMiArMDEwMAorCisgICAgU2VjdXJlIG1rc3RlbXAoKSB3aXRoIHVtYXNrKCkgLSBvbiBzb21lIGltcGxlbWVudGF0aW9ucyBpdCBkb2VzIG5vdCBzZXQgMDYwMCBwZXJtaXNzaW9ucyBhdXRvbWF0aWNhbGx5LgorCitjb21taXQgMjAyNTIzY2E3MDRiZDcyMmRjMWFjMGUxZTZiMGU0YjRlNTQyNDQ5NQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTM6MTE6NTcgMjAxMiArMDEwMAorCisgICAgRml4ZWQgZGVyZWZlcmVuY2luZyAnYycgYmVmb3JlIE5VTEwgY2hlY2suCisKK2NvbW1pdCA3M2E1MjNlNDY4Mjc3ZjZkZjJlOTg0ODkxMzEzYjhiZThiY2UxOTIxCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxMzowODoyNCAyMDEyICswMTAwCisKKyAgICBGaXhlZCBkZXJlZmVyZW5jaW5nIGtleS0+aW5mbyB3aGVuIGtleSBpcyBrbm93biB0byBiZSBOVUxMLgorCitjb21taXQgMmY0ZTZhY2Q3MTQxODNmMDE1Yjc2MzY1N2Y4ZjA4NDU5MzM1N2UyNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEphbiAxMCAxMDozODoxNiAyMDEyICswMTAwCisKKyAgICAuZ2l0aWdub3JlOiBJZ25vcmUgcGVybC8qLnltbCBmaWxlcworCitjb21taXQgYzM2NWQ4MGMxNmMyZDE3YjE2MDAxMWU4YzFmOWNiOTU4OTU0ZTlkYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEphbiAxMCAwODozNDoxNiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IERvIG5vdCBpbnZva2Ugc2h1dGRvd25fcGVybCgpIGZyb20gaW5zaWRlIHRoZSBTSUdURVJNIGhhbmRsZXIgc2luY2UgdGhhdCBmYWlscyBpZiBTSUdURVJNIGlzIHJlY2VpdmVkIHdoaWxlIGEgUGVybCBoYW5kbGVyIGlzIGFjdGl2ZS4gQmFzZWQgb24gYSBwYXRjaCBwb3N0ZWQgYnkgSm9lbCBBdm5pIDxqYXZuaUBhcnViYW5ldHdvcmtzLmNvbT4KKworY29tbWl0IGQwNTlmYjg3OGIxNDM2NTk5OTUzY2VhNWEwNzc0OTlkZGNkY2JjYjUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxNzowMzo1NSAyMDEyICswMDAwCisKKyAgICBDSEFOR0VTOiBCVUc6IDM0NDA3NTI6IElGLU1JQjogUmVwb3J0IGludGVyZmFjZSBzcGVlZCBjb3JyZWN0bHkgZm9yIEV0aGVybmV0IGludGVyZmFjZXMgaWYgb3RoZXIgdGhhbiAxMCBNYnBzLCAxMDAgTWJwcywgMSBHYnBzLCAyLjUgR2JwcyBvciAxMCBHYnBzLiBBZGQgc3VwcG9ydCBmb3IgTklDcyBmYXN0ZXIgdGhhbiA2NSBHYnBzLgorCitjb21taXQgYzA5OTAzYTQyZTlkOTczMzFmZDllNDhlZTgzMWE4NWFmZGY5YzcwYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEphbiA5IDEzOjI2OjE3IDIwMTIgKzAxMDAKKworICAgIERveHlnZW4tc3R5bGUgZG9jdW1lbnRhdGlvbiBmaXhlcworCitjb21taXQgZTMyNWVjYmZjZTc3ZjAwYWM1Y2Y2ZmJkOTU3Zjk1NDk1ZjYxYzU5YgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEphbiA5IDEzOjI1OjEwIDIwMTIgKzAxMDAKKworICAgIFN1cHByZXNzIHVuaW50ZXJlc3RpbmcgRG94eWdlbiB3YXJuaW5ncworCitjb21taXQgYmU5MTYxZDNhNTg5OGU4NjM3NjdmOTI2NjEzNDg2MTI2YzJjYmY2NworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDEyOjM1OjM5IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFNpbXBsaWZ5IGltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBtYW5pcHVsYXRpbmcgNjQtYml0IG51bWJlcnMuCisKK2NvbW1pdCA4NmU0YzJiZTA4NTJhMGExM2IwNjAzMDc1NzIwYjMyNjRlYzcwZGRlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTI6Mjk6MTEgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogTWFrZSBpdCBleHBsaWNpdCB0aGF0IE1BWF9TVUJJRCBpcyBhbiB1bnNpZ25lZCBjb25zdGFudAorCitjb21taXQgMzdlMjcyZDhmN2I3MTgwYmExNDBmYTM4NmE1ZmYwNTg5NjhhMDhhMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE4OjIxOjQ4IDIwMTIgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBJRi1NSUI6OmlmVHlwZTogUmVwb3J0IHR5cGUgImluZmluaWJhbmQgKDE5OSkiIGZvciBJbmZpbmlCYW5kIGludGVyZmFjZXMgaW5zdGVhZCBvZiB0eXBlICJvdGhlciAoMSkiLgorCitjb21taXQgMjY5OTMyZmEzMmM3Y2Q0Nzk1NzQ4OTY5OGUwOWJlZTMxZjYzYjdhZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE0OjM0OjQyIDIwMTIgKzAxMDAKKworICAgIEZpeCBhbiBNU1ZDIGNvbXBpbGVyIHdhcm5pbmcKKworY29tbWl0IDBkMWMyMWY5OTkxZDEzMDlkMDU3ZTNlNDA1NmQ1NDdkZjdkNDBlY2YKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxNjowNjozMSAyMDEyICswMTAwCisKKyAgICBNYWtlIGRlY2xhcmF0aW9uIGFuZCBkZWZpbml0aW9uIG9mIHN0cmxjYXQoKSBjb25zaXN0ZW50LgorCitjb21taXQgMGMzZDRkYmIwYTljZjViMzU5ZjcwYjJmMTk5MTU0OTU1NTRmODQwZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE1OjIzOjE2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IFdpbjMyOiBzbm1wZDogUmVtb3ZlIGRsbW9kCisKK2NvbW1pdCA4OTNlY2M5N2I1ODc2NjEwNDViZWNiZTA5YTMyMGMxYmNiYzcxYzdjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTQ6MzY6NTkgMjAxMiArMDEwMAorCisgICAgQWRkIHN0cmxjYXQoKSB0byB0aGUgTVNWQyBidWlsZCBpbmZyYXN0cnVjdHVyZS4KKworY29tbWl0IDNkMTI2NDIyZTYyNTcwMmI5ZDNmYTA2NzZhOTdlYzVjYjIwZDlkMTAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxNTowMTowNiAyMDEyICswMTAwCisKKyAgICBNYWtlIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIGNvbnNpc3RlbnQgd2l0aCBpdHMgLmluIGZpbGUKKworY29tbWl0IGFmNTNiNzZjMmZmYTc1MWUzOTU4ZDBmYzVkODI3OWY3OGMyYzFjMjYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxNDo0Mzo1NSAyMDEyICswMTAwCisKKyAgICBTa2lwIFQwNjZwYXNzX3NpbXBsZSBhbmQgVDA2N3Bhc3NwZXJzaXN0X3NpbXBsZSBvbiBNaW5HVworCitjb21taXQgMzVhOTJlNjkzZDEzM2E1YjExZTllOWI1OTlkYmY0N2VkZWY0OTMzYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDA4OjE2OjM2IDIwMTIgKzAxMDAKKworICAgIFJlbW92ZSBzbm1wbGliL3NubXBEVExTVURQRG9tYWluLmMgYWdhaW4sIHdoaWNoIHdhcyBhZGRlZCBhY2NpZGVudGFsbHkgd2hpbGUgcmVzb2x2aW5nIG1lcmdlIGNvbmZsaWN0cyAoY29tbWl0IDFkNzhmN2Q1YjU4YWVkMmI1MmM0ZDM4NmE3YmE4MGE0NDcxMWJhY2EpCisKK2NvbW1pdCBhOWIwNzNlYTNiNmNlZGY3MTNlMzA1ZTdiMTVmMjhhZTU3YmZkZjFiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDUgMTc6NDc6MTEgMjAxMiArMDAwMAorCisgICAgRml4IDY0LWJpdCBjb21waWxlciB3YXJuaW5ncworCitjb21taXQgN2U4OTBkYWQ5NWY1NjYwNjllZTI4MDIxNWE0ZmVhM2YwZTJlMzk4MAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDE2OjM4OjUwIDIwMTIgKzAxMDAKKworICAgIEF2b2lkIGEgU0lHU0VHViBpZiBjcCA9PSBOVUxMLiBUaGlzIGlzIGEgZm9sbG93LXVwIGZvciBjb21taXQgMDg5YmNiMzYwYWEyNjc5MGFkMmE4Y2VkZGY1ODNiN2JhNWRkZmQ0OC4KKworY29tbWl0IDFmNjIwMGNmZTFiMGIyN2ViYjA5M2ExNjA2YjU5MmY5ZTk2ODRiZTgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKYW4gNSAxNTo1MzozNCAyMDEyICswMTAwCisKKyAgICBDb252ZXJ0IHN0cm5jcHkoKSBjYWxscyBpbnRyb2R1Y2VkIGluIHY1LjYKKworY29tbWl0IGMzMTI2YjE0MzkyMWZhYmVhYzQ0MjE2NmVjYTViNWI3NDJmZDQyYzAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKYW4gNSAxNTowMjozOSAyMDEyICswMTAwCisKKyAgICBSZXBsYWNlIG1vc3Qgc3RybmNweSgpIGNhbGxzIGludHJvZHVjZWQgaW4gdjUuNQorCitjb21taXQgYjI0ZWU3YzkwOTY1N2RiNDNiZDhjNWQ4YzAxMDU1Y2EwODgzYzljZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDA4OjQwOjM5IDIwMTIgKzAxMDAKKworICAgIEVsaW1pbmF0ZSBtb3N0IHN0cm5jcHkoKSBhbmQgc3RybmNhdCgpIGNhbGxzCisgICAgCisgICAgVXNpbmcgc3RybmNweSgpIGFuZCBzdHJuY2F0KCkgaXMgZXJyb3IgcHJvbmUgLS0gc2VlIGFsc28KKyAgICBodHRwOi8vd3d3LmdyYXRpc29mdC51cy90b2RkL3BhcGVycy9zdHJsY3B5Lmh0bWwuIEhlbmNlIHJlcGxhY2UKKyAgICBhbGwgaW52b2NhdGlvbnMgb2Ygc3RybmNweSgpIGFuZCBzdHJuY2F0KCkuIFJlcGxhY2UKKyAgICBzdHJuY3B5KGRzdCwgc3JjLCBuKSBjYWxscyBieToKKyAgICAqIHN0cmxjcHkoZHN0LCBzcmMsIG4pIGlmIHRoZSBnb2FsIHdhcyB0byBhdm9pZCBvdXRwdXQgYnVmZmVyIG92ZXJmbG93LgorICAgICogc3ByaW50Zihkc3QsICIlLipzIiwgbiwgc3JjKSB0byBjb3B5IGEgcHJlZml4IG9mIHNyYyB0byBkc3Qgb3IgaWYgc3JjIGlzCisgICAgICAgIG5vdCAnXDAnLXRlcm1pbmF0ZWQuCisgICAgKiBtZW1jcHkoZHN0LCBzcmMsIG4pIGlmIHN0cmxlbihzcmMpID49IG4gYW5kIG4gPCBzaXplIG9mIGRzdC4KKyAgICAqIHN0cmNweShkc3QsIHNyYykgaWYgbiA+IHN0cmxlbihzcmMpIGFuZCBuIDwgc2l6ZSBvZiBkc3QuCisKK2NvbW1pdCA2ZDk1YmM0MTQ5NDcyOTMxMDA1NDc1YzMwYTU0MWZlZDU1MzRkYTM5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDUgMTE6MTk6MTYgMjAxMiArMDEwMAorCisgICAgRml4IHdhcm5pbmdzIHRyaWdnZXJlZCBkdXJpbmcgY29tcGlsYXRpb24gb2YgdGhlIFBlcmwgeHMgc291cmNlIGZpbGVzCisKK2NvbW1pdCBiYWQwNjAwZjZlYzk0NGVmODQ1NWUzMjdjZTc4NGI5YjA3ZDI0N2M5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDUgMTA6MDA6MTMgMjAxMiArMDEwMAorCisgICAgQWRkIGNvbmZpZ3VyZSB0ZXN0IGZvciBzb2NrYWRkcl91bi5zdW5fcGF0aCBzdWNoIHRoYXQgdGhlIGNvbTJzZWMgdGVzdCBpcyBydW4KKworY29tbWl0IDkyYTMyYWM0ODY2YTVlZGM3ZjM0N2QzNzk0MmJmMDI4ZGUwMjc2MmYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKYW4gNSAxMDowMDoyOSAyMDEyICswMTAwCisKKyAgICBHZXQgcmlkIG9mIGEgY29tcGlsZXIgd2FybmluZworCitjb21taXQgODNlNGMwZTMwNGY2MTdjY2FjNjYxMGVkZDc0ZDE3MDY3OTdiYmY1MgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDA5OjE1OjM3IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IEFkZCBhIHRlc3QgZm9yIHNlX3N0b3JlX2xpc3QoKQorCitjb21taXQgNGZhZTU4NTIxMDNlYzM4OTNhZDQ4OGJjMGQ5MDVjYTY5MTQ1OTVlZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDA5OjE3OjE1IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFNpbXBsaWZ5IHRoZSBzZV9zdG9yZV9lbnVtX2xpc3QoKSBpbXBsZW1lbnRhdGlvbgorCitjb21taXQgYjMyMjJiYjI3NWYyZjIzNDZlMGZkMDQ3OGFmYTJlZmI2MDA3NzNlNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDA5OjE2OjQ1IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IERlY2xhcmUgInR5cGUiIGFyZ3VtZW50IG9mIHNlX3N0b3JlX2xpc3QoKSAvIHNlX3N0b3JlX3NsaXN0KCkgLyBzZV9zdG9yZV9lbnVtX2xpc3QoKSBjb25zdAorCitjb21taXQgMDIyZjg0MGZiZmNiMGUyNmIwOGYwZTU1NzI4MjMxZjYxMTQ5NTgwMworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDE5OjU1OjU2IDIwMTIgKzAwMDAKKworICAgIEF2b2lkIHRoYXQgVmFsZ3JpbmQgY29tcGxhaW5zIGFib3V0IHNlbmRpbmcgVURQIGRhdGEKKworY29tbWl0IDY3MmE4MDljMjI4ZTk1NTBiOTliODkxMGJlNzVkMGIxNjE5ODU0MDIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAxNzozMzowOSAyMDEyICswMDAwCisKKyAgICBGaXggYSA2NC1iaXQgY29tcGlsZXIgd2FybmluZworCitjb21taXQgMjRmZjI2MGFkODljZTJhYTM2MWE1NWM3YzcyZTkxNjAzMWRlZmUzNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDE3OjExOjI0IDIwMTIgKzAxMDAKKworICAgIENoYW5nZSB0aGUgdHlwZSBvZiB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIHNubXBfc2V0X3Zhcl92YWx1ZSgpIGFuZCBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUoKSBmcm9tIHVfY2hhciogdG8gdm9pZCosIGxpa2Ugb24gbW9yZSByZWNlbnQgYnJhbmNoZXMKKworY29tbWl0IGM2Y2E3MzdmYjQ2ZjkwYTRiZGE1ZDQzNzM0YWFjMzRlODM3YTA1ZjQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBNYXIgMTMgMTk6MDc6MzcgMjAxMCArMDAwMAorCisgICAgQmFja3BvcnQgY29tbWl0IGY1MDRjZTJkNzRhNGJjODhmNjhjYzk1MTVmYTcwNTMzNzNjYjE1YjUuCisgICAgKEZpeGVkIG1vc3QgY29tcGlsZXIgd2FybmluZ3MgdHJpZ2dlcmVkIGJ5IHRoZSBzb3VyY2UgY29kZSBpbiB0aGUgcGVybCBzdWJkaXJlY3RvcnkuIE5vdGU6IHRoZXNlIGNoYW5nZXMgbWF5IGNvbnRhaW4gc29tZSByZWFsIGJ1ZyBmaXhlcy4pCisgICAgCisgICAgQ29uZmxpY3RzOgorICAgIAorICAgIAlwZXJsL0FTTi9BU04ueHMKKyAgICAJcGVybC9PSUQvT0lELnhzCisgICAgCXBlcmwvU05NUC9TTk1QLnhzCisgICAgCXBlcmwvYWdlbnQvYWdlbnQueHMKKworY29tbWl0IGQyMTJkYzk4NGVjMzRlNGQyMzA2MjVlNDZlNThiMGM2MjhhNTBkZjUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAxNjo0Njo0OSAyMDEyICswMTAwCisKKyAgICBTTk1QLnhzIGNvbXBpbGVyIHdhcm5pbmcgZml4ZXMKKworY29tbWl0IGJhY2VlYmIxMGQ4Y2FmNWRiNjNjYzM2OTM1ZmVkNjVlZTkzMTAyOWQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAxNjoyMjo0NCAyMDEyICswMTAwCisKKyAgICBBZGQgZGVjbGFyYXRpb24gZm9yIHNodXRkb3duX3NubXBOb3RpZnlUYWJsZSgpCisKK2NvbW1pdCBmN2Y5NjZhYmQ2ZDI4NDliMTMzMTI1MmFmZTVjNDczZTVjNDBiMzJkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMTQ6MjQ6MzMgMjAxMiArMDEwMAorCisgICAgRml4IGZvcm1hdCBzcGVjaWZpY2F0aW9uIG1pc21hdGNoZXMuCisKK2NvbW1pdCAzMDNjMDE1YmNmZTlhZjBiMTU0ZTk4ODFjN2I0ZjQ0OWUwOGYzMGJiCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWF5IDYgMjI6MDY6MjMgMjAwOSArMDAwMAorCisgICAgQmFja3BvcnQgY29tbWl0IGQzZWIyYjVjZWQyMmE4NDgwMDUzY2U0M2FjZjk3Mzk3MjkwNTU0MDQKKyAgICAoU3ByaW5rbGUgc29tZSBjb25zdC1uZXNzIHdoZXJlIHJlbGV2YW50IC8gZml4IGZvcm1hdCBzdHJpbmcgbWlzbWF0Y2hlcywKKyAgICBOaWVscyBCYWdnZXNlbiwgTWF5IDIwMDkpCisgICAgCisgICAgQ29uZmxpY3RzOgorICAgIAorICAgIAlhZ2VudC9hZ2VudF9zeXNPUlRhYmxlLmMKKyAgICAJYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jCisgICAgCWFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQ29uZi5jCisgICAgCWluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorICAgIAlpbmNsdWRlL25ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaAorCitjb21taXQgZDk1YjQwNDA2OTE2YmRhNWI0OGI1YTYxMzFiZWMyN2I4NjZiMGE3OQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1heSA2IDIxOjU5OjIwIDIwMDkgKzAwMDAKKworICAgIEJhY2twb3J0IGEyYTczMTZjMzEwZjBmY2MzNzI4NjczZmEwNDcwNTFjMjNiNzE5NjAKKyAgICAoVHJpdmlhbCB3YXJuaW5nIGZpeGVzLCBOaWVscyBCYWdnZXNlbiwgTWF5IDIwMDkpLgorICAgIAorICAgIENvbmZsaWN0czoKKyAgICAKKyAgICAJYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5jCisgICAgCWFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYworICAgIAlhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jCisgICAgCWFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19saW51eC5jCisgICAgCWFnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYworICAgIAlhZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9nbWF0Y2guYworICAgIAlhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5jCisgICAgCWFnZW50L3NubXBkLmMKKyAgICAJc25tcGxpYi9jb250YWluZXJfbGlzdF9zc2xsLmMKKworY29tbWl0IGQ4NmM0N2YwMDNmZGMxOTJiY2U3YjQ2YWM0ZjA2YjA5ZTM4N2MxMmIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDQgMTM6Mjk6MDggMjAxMiArMDEwMAorCisgICAgRml4ZWQgYSB0eXBvCisKK2NvbW1pdCBiZWU0ZDc5Y2Y0ZWI3ZTBhNDUzOTdmNTliNTI5OGRhNjMzYThlMWJhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDEzOjE0OjU3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIHJlYWRpbmcgcGFzdCBlbmQgb2YgYnVmZmVyLgorCitjb21taXQgM2RjMGUwMGEyZmQ4ZTM0ZmUxYWUzM2VjYWJmMzZlMTQ2NDYwYTMxZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNCAxMjo0MDowNyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgd2hlbiBsYXJnZSAndG9rZW4nIGlzIHVzZWQuCisKK2NvbW1pdCBiM2M0OTgyNTQyZTBhYjE1MWZiMzg4NDc1NGNkZmJjYjQ3MmRhNTJkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDEyOjI4OjUyIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIG9mZi1ieS1vbmUgbWVtc2V0LgorCitjb21taXQgMGY1MzY5NTA0NGRkM2YwYzM1MDc3NTNlM2Y4YzI5ZDk3ZTk2ODcyZAogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KIERhdGU6ICAgV2VkIEF1ZyAzIDIxOjM4OjI2IDIwMTEgKzAyMDAKIAogICAgIENIQU5HRVM6IHNubXBsaWIsIHNubXBkLCBwZXJsOiBFbGltaW5hdGUgZGVhZCB2YXJpYWJsZXMKLQotY29tbWl0IDc5NGY5YTY5ZDdlYjY0MjI2ODIwMGIwYTRiMTk5MTUxZGVmNjZlZDAKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBBdWcgMyAxNDozNjoyNSAyMDExIC0wNzAwCi0KLSAgICBtYW51YWwgcHJlLW1lcmdlCi0KLWNvbW1pdCA3MzE4N2NlODM0MWVlMzBiOTUyMDRkMjJiNjliY2U1MTUwMTJjMGM1Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgQXVnIDMgMTE6MDY6MjMgMjAxMSAtMDcwMAotCi0gICAgYWRkZWQgYSBjb21tZW50Ci0KLWNvbW1pdCA0MzhjMjEwODc2ZGJmN2QxZjc3Y2IxNGQyMmY4ZWM4ZWE0ZjBlNzhkCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgQXVnIDMgMTE6MDA6MzEgMjAxMSAtMDcwMAotCi0gICAgYXQgZW5kIG9mIG5zcm9sbHVwIG1lbnRpb24gdGhhdCBub3cgd291bGQgYmUgYSBnb29kIHRpbWUgdG8gcnVuIG5zc3luYwotCi1jb21taXQgMzljMmUyNTNhMmFhMWRlMTI4Yzc4NTA1YzkwOWNjOGFlNTRkMGUxNgotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEF1ZyAzIDEwOjU2OjE0IDIwMTEgLTA3MDAKLQotICAgIGEgbmV3IG5zc3luYygpIGZ1bmN0aW9uIGZvciBwdXNoL3B1bGxpbmcgYWN0aXZlIGJyYW5jaGVzCi0KLWNvbW1pdCBkOGIyMDUyYTAzNTlhZDlkMWE2OGQ4ZDU4N2JjNmJlMTU2MTU4ZDIwCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgQXVnIDMgMTE6MDA6MzEgMjAxMSAtMDcwMAotCi0gICAgYXQgZW5kIG9mIG5zcm9sbHVwIG1lbnRpb24gdGhhdCBub3cgd291bGQgYmUgYSBnb29kIHRpbWUgdG8gcnVuIG5zc3luYwotCi1jb21taXQgNGVlYTllZTM4ZjA2ZTAwMGE5NWRjMjA5ZDBhNzFjZTYwZGE0OTRiOQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEF1ZyAzIDEwOjU2OjE0IDIwMTEgLTA3MDAKLQotICAgIGEgbmV3IG5zc3luYygpIGZ1bmN0aW9uIGZvciBwdXNoL3B1bGxpbmcgYWN0aXZlIGJyYW5jaGVzCi0KLWNvbW1pdCAyODRmNWZiNzllMDU2YTI3MmY3M2I5MDkzN2Q3YmYwNTdjMmFmMDIxCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgQXVnIDMgMTE6MDY6MjMgMjAxMSAtMDcwMAotCi0gICAgYWRkZWQgYSBjb21tZW50Ci0KLWNvbW1pdCA4YzA0MzJhNzRmZWRmOGExMzg1YzhhZDBmZjFmYjQyOWEyOGVhYjk5Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgQXVnIDMgMTE6MDA6MzEgMjAxMSAtMDcwMAotCi0gICAgYXQgZW5kIG9mIG5zcm9sbHVwIG1lbnRpb24gdGhhdCBub3cgd291bGQgYmUgYSBnb29kIHRpbWUgdG8gcnVuIG5zc3luYwotCi1jb21taXQgY2EzYWQzYTI4ZjgxZjU5ZGZmYTNkYmI4MDlhNzcwMTQ3MjQxZTNlNQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEF1ZyAzIDEwOjU2OjE0IDIwMTEgLTA3MDAKLQotICAgIGEgbmV3IG5zc3luYygpIGZ1bmN0aW9uIGZvciBwdXNoL3B1bGxpbmcgYWN0aXZlIGJyYW5jaGVzCi0KLWNvbW1pdCA0OWY1ZjdhZjY2NTdlMTYxZDk3MTJmYzFmNjJiZTE4N2FiZDZhMTk0Ci1BdXRob3I6IEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBBdWcgMyAxMDoyODoxNSAyMDExIC0wNzAwCi0KLSAgICBSZWVuYWJsZSBJUC1NSUI6OmlwRGVmYXVsdFJvdXRlclRhYmxlCiAgICAgCi0gICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0KLWNvbW1pdCBiNjFhYTA5MDZhZDZkMGNlZDVlZjM4NjhjMjZkYjUzNmEyNzY5ODc5Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgQXVnIDMgMTA6MjM6MDAgMjAxMSAtMDcwMAotCi0gICAgQSBuZXcgZnVuY3Rpb246IG5zc2ZwYXRjaGFwcGx5IHRoYXQgYXV0by1wdWxscyBnaXQgY29tbWFuZCBsaW5lIGluZm8gZnJvbSBTRgotCi1jb21taXQgODY4Y2RmY2I2ZWM0MjIwYmNkZDlhMGRlZDRiODRlYjRmY2VlYjUzYQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEF1ZyAyIDE0OjQzOjUyIDIwMTEgLTA3MDAKLQotICAgIGFkZGVkIHZhcmlhYmxlcyBuYW1lcyB0byB0aGUgZ2VuZXJhdGVkIGVycm9yIG1lc3NhZ2VzLgotCi1jb21taXQgYWZhOTczMjUyMWYxYWU2ZDRlMGM5YTkxNzQ1ZGFkYjYzYWNlNTQwZgotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEF1ZyAyIDEzOjIyOjM4IDIwMTEgLTA3MDAKLQotICAgIFdvcmRpbmcgY2hhbmdlcyB0byBoZWxwIGRlc2NyaWJlIGNvbnRleHRzIGJldHRlcgotCi1jb21taXQgOGU3MmZiZTg0MGI4OTMyNTc4ZGM5MmY5MTEzNTk4ZjYwMGNiMDU5MAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEF1ZyAyIDEzOjIyOjIxIDIwMTEgLTA3MDAKLQotICAgIEFkZGVkIHRoZSBtaXNzaW5nIFU2NCBtMmkgZmlsZQotCi1jb21taXQgMmZhN2Q4N2QzOTc5ZWMwZmJiODM1YmNmZmY4OThlNmJlYzJhYmJkOQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEF1ZyAzIDEwOjIzOjAwIDIwMTEgLTA3MDAKLQotICAgIEEgbmV3IGZ1bmN0aW9uOiBuc3NmcGF0Y2hhcHBseSB0aGF0IGF1dG8tcHVsbHMgZ2l0IGNvbW1hbmQgbGluZSBpbmZvIGZyb20gU0YKLQotY29tbWl0IDczZTc2NTc0YWU3MjhhNGE0YTMwNjIzNTk3ZWMwYjk1ZmEyNzk3YzUKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBBdWcgMiAxNDo0Mzo1MiAyMDExIC0wNzAwCi0KLSAgICBhZGRlZCB2YXJpYWJsZXMgbmFtZXMgdG8gdGhlIGdlbmVyYXRlZCBlcnJvciBtZXNzYWdlcy4KLQotY29tbWl0IGIyNGE0ZjBjOTU2NTMzNTIyMGVlMjE3ZDBjMGI1MTMyMWNjMWE0NGYKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBBdWcgMiAxMzoyMjozOCAyMDExIC0wNzAwCi0KLSAgICBXb3JkaW5nIGNoYW5nZXMgdG8gaGVscCBkZXNjcmliZSBjb250ZXh0cyBiZXR0ZXIKLQotY29tbWl0IGU4MzdjN2NiNjJjNjc2YTAwNTlkMjg0NmUwMmUzMmY1YmI2M2MxYjEKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBBdWcgMiAxMzoyMjoyMSAyMDExIC0wNzAwCi0KLSAgICBBZGRlZCB0aGUgbWlzc2luZyBVNjQgbTJpIGZpbGUKLQotY29tbWl0IDk3MzYyMzRiMzc5OGJhNTQ2MmEwYTc0OTQzZWRlODBlOTBhNjQ4NWIKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBBdWcgMyAxMDoyMzowMCAyMDExIC0wNzAwCi0KLSAgICBBIG5ldyBmdW5jdGlvbjogbnNzZnBhdGNoYXBwbHkgdGhhdCBhdXRvLXB1bGxzIGdpdCBjb21tYW5kIGxpbmUgaW5mbyBmcm9tIFNGCi0KLWNvbW1pdCBiZjcxNzhiMGIyMjU4N2Q0M2QxYTgwYzI2OWNkMjE2YmQ1OTMwMjE0Ci1BdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgotRGF0ZTogICBNb24gSnVsIDE4IDA0OjMxOjA4IDIwMTEgKzA0MDAKLQotICAgIGFnZW50OiBjaGFuZ2UgdHlwZSBvZiBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzIHRvIGxvbmcKKyAgICBDb25mbGljdHM6CiAgICAgCi0gICAgVHlwZSBvZiBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzIHZhcmlhYmxlIGlzIGNoYW5nZWQgZnJvbSBpbnQgdG8gbG9uZy4KLSAgICBUaGlzIGZpeGVzIHRoZSBidWcgd2l0aCB3cml0aW5nIHRvIHNubXBFbmFibGVBdXRoZW5UcmFwcyBpZiBzZXJ2ZXIgaXMKLSAgICBjb21waWxlZCBmb3IgNjRiaXQgKHNubXBzZXQgcmVwb3J0cyB3cm9uZyBsZW5ndGgpLiBUaGlzIGJ1ZyB3YXMKLSAgICBpbnRyb2R1Y2VkIGEgbG9uZyB0aW1lIGFnbyAoYnkgZmFlZWNkMCBjb21taXQpLgorICAgIAlhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kYXRhX2FjY2Vzcy9kb3Qzc3RhdHNfbGludXguYworICAgIAlhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcGtnaW5mby5jCisgICAgCWFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2ZzX3N0YXR1cy5jCisgICAgCWFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19saW51eC5jCisgICAgCWFnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5jCisgICAgCWFnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHNfbGludXguYworICAgIAlhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMKKyAgICAJYXBwcy9zbm1wdGxzLmMKKyAgICAJYXBwcy9zbm1wdHJhcGRfbG9nLmMKKyAgICAJc25tcGxpYi9kaXJfdXRpbHMuYworICAgIAlzbm1wbGliL3NubXBfY2xpZW50LmMKKyAgICAJc25tcGxpYi9zbm1wX29wZW5zc2wuYworICAgIAlzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU1RDUERvbWFpbi5jCisKK2NvbW1pdCAwMTUzODA1Yzk5YjkxOTczNjU5MzVjNWQxMWFlOWMzZDRiZmFhMGYzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMDk6NDg6NDEgMjAxMiArMDEwMAorCisgICAgRml4IGEgc2V0LWJ1dC1ub3QtdXNlZCB3YXJuaW5nCisKK2NvbW1pdCAzZjg4ODVmYmVlOTQwNzc0OGZjMmYwNTczNzI4YTExYmEyYmMwMjNhCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEFwciAyOCAwNTo1MToxMyAyMDA5ICswMDAwCisKKyAgICBSZXR1cm4gYSB2YWx1ZSBmcm9tIHNwcmludF9yZWFsbG9jX3ZhbHVlIGV2ZW4gaWYgbm8gc3VidHJlZSBpcyBsb2NhdGVkLgogICAgIAotICAgIEFjdHVhbGx5IHRoaXMgaXMgYSAnbGVzcyBlZmZvcnQnIHR5cGUgb2YgZml4IGJ1dCBJIHdvbmRlciB3aHkgd2UgbmVlZCBhCi0gICAgbG9uZyB0byBzdG9yZSBhbiBJTlRFR0VSIGluIHRoZSBmaXJzdCBwbGFjZT8KLSAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxNzU3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKIAotY29tbWl0IDE2YzAyZDY5Y2M5Y2U0ZmQ0ZTc3MTBhMGJmOTQzMGY1MjE3NWVkNTAKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBBdWcgMiAxNDo0Mzo1MiAyMDExIC0wNzAwCi0KLSAgICBhZGRlZCB2YXJpYWJsZXMgbmFtZXMgdG8gdGhlIGdlbmVyYXRlZCBlcnJvciBtZXNzYWdlcy4KLQotY29tbWl0IDdmZWQ2MWJmMGFmMTQ3N2ViNzQwYTA1ODhmNmExMWExMmI3MjM1OTUKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBBdWcgMiAxMzoyMjozOCAyMDExIC0wNzAwCi0KLSAgICBXb3JkaW5nIGNoYW5nZXMgdG8gaGVscCBkZXNjcmliZSBjb250ZXh0cyBiZXR0ZXIKLQotY29tbWl0IDkzODA2MTJmZGNiNGY5YmIwODFjNGE0Njc0NjY5MjEyNGFiZWRlNTAKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBBdWcgMiAxMzoyMjoyMSAyMDExIC0wNzAwCi0KLSAgICBBZGRlZCB0aGUgbWlzc2luZyBVNjQgbTJpIGZpbGUKLQotY29tbWl0IDYxYjE3OGYxZWU4OTUyYWEwM2FhM2IxYmE1MWY0YTY2NTVlNDdmMDEKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFdlZCBBdWcgMyAxODowOTo0NyAyMDExICswMjAwCi0KLSAgICBDSEFOR0VTOiBXaW5kb3dzOiBQZXJsIG1vZHVsZXMgYnVpbGQgbm93IHdpdGggSVB2NiBlbmFibGVkLgotCi1jb21taXQgZjI4MzJlMzQwNzg3N2U3MWE3ZWE2ZGVhNjU5ZTNlMjBhMGM1ZmE3OAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgV2VkIEF1ZyAzIDE3OjQzOjAxIDIwMTEgKzAyMDAKLQotICAgIFdoaXRlc3BhY2Utb25seSBjaGFuZ2U6IGZpeCBpbmRlbnRhdGlvbiBvZiBhbiAjaW5jbHVkZSBkaXJlY3RpdmUKLQotY29tbWl0IDdmY2MwYjgwMzJmOGRhNWI3YmMzMDA1OWFmMGJhNjU2ZWFlNzEwOTEKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIE1vbiBBdWcgMSAxNDoxMToyOCAyMDExICswMjAwCi0KLSAgICBzbXV4OiBGaXggcmVjZW50bHkgcmVpbnRyb2R1Y2VkIGNvbXBpbGVyIHdhcm5pbmdzIGFib3V0IHNpemVfdCA8PiBzc2l6ZV90IG1pc21hdGNoZXMKLQotY29tbWl0IGI0ODRiODhkNmU1N2I0MjVhODQ2N2Y1YTM5MzMzMzEyZmVkMmFjZjIKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFR1ZSBBdWcgMiAwOTozMTo1MCAyMDExICswMjAwCi0KLSAgICBGaXggYSBjb21waWxlciB3YXJuaW5nIGluIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jCi0KLWNvbW1pdCA5NDQ2MTJlZjU2YWQyNTY0YWFmZTE0ZGY2ZDA4ZTA0OGI3MjI4Yjg2Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBNb24gQXVnIDEgMTQ6NDk6NDEgMjAxMSArMDIwMAotCi0gICAgLmdpdGlnbm9yZTogQWRkIGZpbGUgbmFtZXMgYW5kIHBhdHRlcm5zIGZvciBvdXRwdXQgZmlsZXMgZ2VuZXJhdGVkIGR1cmluZyB0aGUgV2luZG93cyBidWlsZAotCi1jb21taXQgMjYwMDkwMTI3ODVmODI4YmJmYzg3NTlhZmJiYmZjNTg3MDBmZjFmNgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgRnJpIEp1bCAyOSAwOTo1OTozMSAyMDExICswMjAwCi0KLSAgICAuZ2l0aWdub3JlOiBTb3J0IGFscGhhYmV0aWNhbGx5Ci0KLWNvbW1pdCA1ZTNmZjU1OTY2NDhlMDkwN2Q1NzFkN2E0ZDNhM2E4YzI0MDJkOGVlCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBGcmkgSnVsIDI5IDA4OjQzOjE5IDIwMTEgKzAyMDAKLQotICAgIC5naXRpZ25vcmU6IEFkZCBhcHBzL3NzaHRvc25tcAotCi1jb21taXQgMzFhM2EyYTA2MjQwNDY1MTFjYTA3ZWMxZjUyMWEyMmQ3OTY2ZGI4MAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgTW9uIEF1ZyAxIDEzOjM4OjAxIDIwMTEgKzAyMDAKLQotICAgIFJlbW92ZSB0d28gZ2VuZXJhdGVkIFBlcmwgZmlsZXMuCi0KLWNvbW1pdCBhZGFkY2I5OWU1N2I5M2JlNjcwYTdjNTE3ZmM5ODlkZmZlNzM5NmU5Ci1BdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgQXVnIDIgMDA6NTY6NDkgMjAxMSArMDIwMAotCi0gICAgc3VwcHJlc3MgIm9rIiB0ZXN0IG91dHB1dCBpbiBuc2IKLQotY29tbWl0IDQwMTI1ZDg1MzljZDg5Zjk1MmZiYzI0NTg4YzVlODFlOWNkODIxZmUKK2NvbW1pdCBiMWVhYWYzMDIzNjlmZDQ1NTJlOGZlZTdiNmE4MDUwOTFlYzBhOWI0CiBBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEF1ZyAxIDEzOjU4OjMzIDIwMTEgKzAyMDAKK0RhdGU6ICAgV2VkIEphbiA0IDExOjM4OjUxIDIwMTIgKzAxMDAKIAotICAgIERldGVjdCBTTVVYIHJlY3Zmcm9tKCkgZXJyb3JzIHByb3Blcmx5LgorICAgIEFkZGVkIGNoZWNrIG9mIGZpbmRfc2VjX21vZCgpIHJldHVybiB2YWx1ZS4KIAotY29tbWl0IDVhY2YwZDJjZWIzOTc3OTY0ZWQzOWYwMDMwNzNiYTY0MTM4YzJlYmQKLUF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBKdWwgMzEgMjM6NTc6NDEgMjAxMSArMDIwMAotCi0gICAgRm9sbG93LXVwIGZvcjogYnVpbGQgZml4IGZvciBzeXN0ZW1zIGxhY2tpbmcgZmllbGQgbXNnX2NvbnRyb2wgaW4gc3RydWN0IG1zZ2hkcgotCi1jb21taXQgYWU5YWM2Yzk4MTI4MjRiZjViODQ4ZGMxZjNjY2Y3MjI3YzQzNmQwZAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgU3VuIEp1bCAzMSAwOToxMToyOCAyMDExICswMjAwCi0KLSAgICBGaXggYW4gaW5jb3JyZWN0IHNvdXJjZSBjb2RlIGNvbW1lbnQ6IHRoZXJlIGlzIG5vIHJlcXVpcmVtZW50IGluIHRoZSBBTlNJIEMgc3RhbmRhcmQgdGhhdCBzdGFjayB2YXJpYWJsZXMgc2hvdWxkIGJlIGluaXRpYWxpemVkIHRvIHplcm8uCi0KLWNvbW1pdCAyNDJlMTc5N2IyNjk0YTA2ODk4NTZhZTM2ZDA1ZDM0MTNhYWY4ZDc3Ci1BdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gSnVsIDMxIDAxOjQ0OjA5IDIwMTEgKzAyMDAKLQotICAgIEZvbGxvdy11cCBmb3I6IGJ1aWxkIGZpeCBmb3Igc3lzdGVtcyBsYWNraW5nIGZpZWxkIG1zZ19jb250cm9sIGluIHN0cnVjdCBtc2doZHIKLQotY29tbWl0IDgyZDczZmIxMWJlM2FlMzFmMzljOWQ2MThkNTM4OGRjOWIxMDA2ZDcKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIEZyaSBKdWwgMjkgMjA6NTE6MjcgMjAxMSArMDIwMAotCi0gICAgVW5icmVhayB0aGUgV2luZG93cyBidWlsZAotCi1jb21taXQgNTRhNDRjYjdkZDcxZGU2NjE2YTVjY2JmZWQzNGE4Yjc5NjM0NmQ1MQotQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IEp1bCAzMCAxNDoyODoyOSAyMDExICswMjAwCi0KLSAgICBhdXRvcmVjb25mCi0KLWNvbW1pdCAxMDlmNjY5NGQ3ODhmNDhlYmQ5ZmMwYTFlOTBjNDVhYmMzN2JlYTIwCi1BdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgSnVsIDMwIDE0OjIyOjE5IDIwMTEgKzAyMDAKLQotICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBidWlsZCBmaXggZm9yIHN5c3RlbXMgbGFja2luZyBmaWVsZCBtc2dfY29udHJvbCBpbiBzdHJ1Y3QgbXNnaGRyCi0KLWNvbW1pdCA5ZTQ3YWM0MzkzMzNkMmJiN2M4MDY4NjI0MWRiNzMzMWE4ODc3MGZiCi1BdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgSnVsIDMwIDAwOjE4OjE0IDIwMTEgKzAyMDAKLQotICAgIG1pbm9yIG5zYiBmaXhlcy9lbmhhbmNlbWVudHMgZnJvbSBteSBvbGQgc3ZuIHRyZWUKLQotY29tbWl0IGM0ODE3M2MwNmE5ZWFhZGJmODFlNmI0OTYyZDU1ZWYwYTU0ZGIyNTEKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIEZyaSBKdWwgMjkgMTA6Mjc6MzkgMjAxMSArMDIwMAotCi0gICAgRml4IGEgYnVnIGluIGEgZGVidWcgc3RhdGVtZW50Ci0KLWNvbW1pdCBlY2ExYjlhMjU0NTBjZDg3NWIyMDEyYzUxYzA5MGJhMmI5N2UwNjI4Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBGcmkgSnVsIDI5IDEwOjA0OjAyIDIwMTEgKzAyMDAKLQotICAgIFJlcnVuIGF1dG9yZWNvbmYKLQotY29tbWl0IDY5YWE5ZTAzMmNhZjVlYjcxM2JiMDA3NDUxMzQ2NDBmZTlmZDAyMzUKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIEZyaSBKdWwgMjkgMDk6NTk6MzEgMjAxMSArMDIwMAotCi0gICAgLmdpdGlnbm9yZTogU29ydCBhbHBoYWJldGljYWxseQotCi1jb21taXQgYzM4NTk3ZGZhMGIxZDM2N2Q1MmJiZGMwYWVhYWRmZjAxNTU4NTBhZAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgRnJpIEp1bCAyOSAwODo0MzoxOSAyMDExICswMjAwCi0KLSAgICAuZ2l0aWdub3JlOiBBZGQgYXBwcy9zc2h0b3NubXAKLQotY29tbWl0IDc3NGQwYjY2ZWUwYWNhZmVhZmEyMWZjOGQ5OTM4NjQ3NzllNTBlNjMKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIEZyaSBKdWwgMjkgMDc6NDM6NTQgMjAxMSArMDIwMAotCi0gICAgRml4IHR3byBmaWxlbmFtZXMgaW4gaG9zdCBtaWIgc291cmNlIGNvZGUgY29tbWVudHMuCi0KLWNvbW1pdCAzNDU4MTI4YjRhM2M1OTcxOTk4ODk0ZjlkOWQ4Y2NjNmM3NmQzYzliCitjb21taXQgYWVlNGU4OTVmZTNiZDVmNGE2MWUzNDI3NWJmY2EwMzY4YjU2MDU1NQogQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKdWwgMjggMTY6MTY6MTUgMjAxMSArMDIwMAorRGF0ZTogICBXZWQgSmFuIDQgMTE6MzE6MjIgMjAxMiArMDEwMAogCi0gICAgRml4IHBvdGVudGlhbCBzaWdzZWd2IHdoZW4gYW4gaWZUYWJsZSBlbnRyeSBpcyByZW1vdmVkIGFzIHJlc3VsdCBvZiBib3RoIGludGVyZmFjZV9yZXBsYWNlX29sZCBhbmQgaW50ZXJmYWNlX2ZhZGVvdXQgYXQgdGhlIHNhbWUgdGltZS4KKyAgICBBZGRlZCBjaGVjayBvZiBzbm1wX3Nlc3NfdHJhbnNwb3J0KCkgcmV0dXJuIHZhbHVlLgogCi1jb21taXQgYTJmOWVjZTA2Y2YwMGVlNDdjZTdlODU2NzIyMTBjMWI1Nzg2ZjMxMQorY29tbWl0IDVkMWQwYTc0NGFiMzBjOGU2NDVjM2I4NTA2Y2JiZDJjY2ViM2QyNzUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDQgMTE6MDQ6NDggMjAxMiArMDEwMAorCisgICAgQWRkZWQgY2hlY2sgb2YgbmV0c25tcF9leHRyYWN0X2l0ZXJhdG9yX2NvbnRleHQoKSByZXR1cm4gdmFsdWUuCisKK2NvbW1pdCAyOTllYTlhODljM2YxNzU4YTc3NDhiYjliMzQxMWY2MmYyYzcwZjg4CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDEwOjU0OjU1IDIwMTIgKzAxMDAKKworICAgIEFkZGVkIGNoZWNrIG9mIGZvcGVuKCkgcmV0dXJuIHZhbHVlLCBqdXN0IGluIGNhc2Ugb2Ygc29tZSByYWNlLgorCitjb21taXQgOTBmMWFlNjc1NzkxNzQ4MTYzNmVlZjc3MTAwY2FlZWI1M2VkZmUwMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEphbiAzIDEwOjA2OjU2IDIwMTIgKzAxMDAKKworICAgIEFkZCBzdHJsY2F0LmMuIFNvdXJjZTogaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jZ2kvY3Zzd2ViLmNnaS9zcmMvbGliL2xpYmMvc3RyaW5nL3N0cmxjYXQuYy4KKworY29tbWl0IDA4OWJjYjM2MGFhMjY3OTBhZDJhOGNlZGRmNTgzYjdiYTVkZGZkNDgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDQgMTA6NTA6NTYgMjAxMiArMDEwMAorCisgICAgQWRkZWQgc3RycmNociByZXR1cm4gdmFsdWUgY2hlY2ssIGp1c3QgdG8gYmUgc3VyZS4KKworY29tbWl0IDE5OWEwNTExZjZlYjBlZjNmZjFkOWY5MjJiNzkwYWI2N2RmZGUwMWUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAxMDozMToyNiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogc211eDogc2ltcGxpZnkgc211eF9saXN0X2RldGFjaCgpCisKK2NvbW1pdCBkODgzNTczYWE3M2UwZjVmYzE4OGFjZWRlZTY0NTFmOTVkYWU5MDBjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMTA6MjM6MDYgMjAxMiArMDEwMAorCisgICAgRml4IGEgY29tcGlsZXIgd2FybmluZyBpbnRyb2R1Y2VkIGJ5IGNvbW1pdCBhODA5ZmU1MDc1YzlmMzc0NzE1ZjdkMWE2ODI5NDlhMDczMDE3MmMxLgorCitjb21taXQgN2I3YTNlYjI1MDA1MjdlYWExNjk5Mjg3YTZjYTZmY2M0Y2MyZTA4YQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDA5OjQwOjAyIDIwMTIgKzAxMDAKKworICAgIEZpeCBhIGJ1aWxkIGVycm9yIGNhdXNlZCBieSBjb21taXQgYTgwOWZlNTA3NWM5ZjM3NDcxNWY3ZDFhNjgyOTQ5YTA3MzAxNzJjMS4KKworY29tbWl0IDJiNmMxMTlmZWQ0ODQ4ZGE2NjYzYzExZjBjMmNiZGMyOTkyMWI1YzYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTU6NTE6MTAgMjAxMiArMDEwMAorCisgICAgQ2hlY2sgZm9yIG5ldHNubXBfZHNfZ2V0X2ludCgpIGVycm9ycy4KKworY29tbWl0IDZjZTUzNjBjYWE0YzlkZTUxYWRlNTc4NzllODNmOTZiZDA0YjRjNWEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTU6NDI6MjMgMjAxMiArMDEwMAorCisgICAgQ2hlY2sgZm9yIG1pc3Npbmcgdmlldy4KKworY29tbWl0IGIzYmM1NGJlZDMxNjkwYTg1ZGYyYWNmYmYzMjk2ZGE5M2E5ZTg5YjQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTU6MjM6MTcgMjAxMiArMDEwMAorCisgICAgQ2hlY2sgc29ja2V0KCkgcmVzdWx0LgorICAgIEFsc28gY2xvc2UgdGhlIHNvY2tldCBvbiBlcnJvci4KKworY29tbWl0IDkyMDc1ZjUxY2Q0NWEzOGNhMzg3NjBiM2ZmZTgyZTE2NTU5ZTljMmUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTU6MTg6MjYgMjAxMiArMDEwMAorCisgICAgQ2hlY2sgb3BlbigpIHJlc3VsdC4KKworY29tbWl0IDY2NjVkNWZlMmZjNTY5ZDZmYTg1NGQxZDc4ZTM0N2JiYWM2OWUwNzAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTQ6MjI6MjIgMjAxMiArMDEwMAorCisgICAgRml4ZWQgbWlzc2luZyBicmVhay4KKworY29tbWl0IGE2NjQ4YzU0NTNlMWVmOGRhYzU3YTM4ZWZjYzAwY2NlNTNiZjllNGYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTQ6MjA6MjcgMjAxMiArMDEwMAorCisgICAgRml4ZWQgbWlzc2luZyBicmVhay4KKworY29tbWl0IGQ2OGRjYWUwZjE4ZDU1NDU3MWFlZjMyMTk0NGE1MjkwNTQ4ZGRlODYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTQ6MTY6MTEgMjAxMiArMDEwMAorCisgICAgQWRkZWQgJ2ZhbGx0aHJvdWdoJyBjb21tZW50IGZvciBDb3Zlcml0eS4KKworY29tbWl0IGZiNmY4MGMwZmUzYmEzNmU1NmY1YjkxMWE0N2UzZjZmMzJiYTI2NmUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTQ6MTQ6MDcgMjAxMiArMDEwMAorCisgICAgRml4ZWQgZXhpdCBjb2RlIG9mIGVuY29kZV9rZXljaGFuZ2Ugd2l0aCB3cm9uZyBhcmd1bWVudHMuCisgICAgQWxzbyBhZGRlZCBhIGNvbW1lbnQgZm9yIENvdmVyaXR5LgorCitjb21taXQgMzEzMGUyNGZkYzIzMjQ2NGRkN2JiMjE2ZjQ2Y2FmYTJlMGU3NzVhNgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNDowOTo1NCAyMDEyICswMTAwCisKKyAgICBBZGRlZCBtaXNzaW5nIGJyZWFrCisKK2NvbW1pdCAxOGMxMjZhOTU2NWNiNGQ2OWQ3NTEzYjk0NGEyMTA1NTg4MDQ1ZDM1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE0OjA3OjI5IDIwMTIgKzAxMDAKKworICAgIEFkZGVkICdmYWxsdGhyb3VnaCcgY29tbWVudCBmb3IgQ292ZXJpdHkuCisKK2NvbW1pdCA2ZDMxYzgyMDcwYTJjNjhmZTNjNTE5ZTlkNTZmYTI3Nzk1NTRkMDFmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE0OjAxOjUzIDIwMTIgKzAxMDAKKworICAgIEFkZGVkICdmYWxsdGhyb3VnaCcgY29tbWVudCBmb3IgQ292ZXJpdHkuCisKK2NvbW1pdCBkYzZmMGUyZTU0OWI0Y2QwNjFlYmMxOTAwODRiMWZjNzdhNTVmNDBmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDEzOjMyOjU5IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIHdyb25nIG9wZXJhdG9yCisKK2NvbW1pdCBkYWIzMjg2N2VkMGI5OTMwMWVmZDdiOGQ4NTJhZDEyODhhMTg0YmUwCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDEzOjMwOjMzIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIFFVSVRGVU4gdXNhZ2UuCisKK2NvbW1pdCBiMWEyYmNmNjQ2MTVlYjY2YmMyNGQ1YmU0OTUwZTQ1MDEyOTYyMDQ1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDEzOjE4OjAzIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIHdyb25nIG9wZXJhdG9yCisKK2NvbW1pdCBiMmIxYzg1MWI5NGZlZDM3YzM4NmVhYTFiZmVhZDVjNzc2OTZlM2VmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDEzOjE0OjUyIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIHdyb25nIG9wZXJhdG9yCisKK2NvbW1pdCBhODA5ZmU1MDc1YzlmMzc0NzE1ZjdkMWE2ODI5NDlhMDczMDE3MmMxCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDEwOjU4OjQ2IDIwMTIgKzAxMDAKKworICAgIEFkZGVkIGNoZWNrIGZvciBmYWlsZWQgcmVnaXN0ZXJfbWliLgorCitjb21taXQgNTk0OWYwNTVjMTZhZTY1MDYxNWFhZTdhMWZlZTNmMmQ3YjE2ZDk0MAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMDoyOTo1OSAyMDEyICswMTAwCisKKyAgICBNYWtlIE1JQiBmaWxlIHBhcnNpbmcgYW5kIGRldGVjdGlvbiBtb3JlIHN0cmljdCAtIExBQkVMIGlzIHJlcXVpcmVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgTUlCIGZpbGVzLgorCitjb21taXQgZTRiNjczNjgzYzY4YmE4YjNhYmMwNDBiOTEyNWVjMzA0NjQzY2M3YworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIEphbiAxIDIzOjAwOjI0IDIwMTIgKzAxMDAKKworICAgIEFzc3VtZSB0aGF0IGxpYmRsIG1pZ2h0IGJlIGluIEFHRU5UTElCUyBvciBTTk1QTElCUyBzbyBwcmVhZGQgdGhlbS4KKworY29tbWl0IGIxM2MxZTU3YmVkYmE3OWI4MDYxMDNjNzRmMTkyMWQ1M2E3MDZiMzgKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBKYW4gMSAyMjo1NTowNiAyMDEyICswMTAwCisKKyAgICBEbyBub3QgcmVxdWlyZSB1Y2Qtc25tcC9kbG1vZCB1bmxlc3MgaXQgd2lsbCB3b3JrLgorCitjb21taXQgMjdkY2VhMGQ1ZjgwMWRmNDk0YWIyY2I1YzVjMGViZTU0ZWIwZGNkMworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IERlYyAzMSAxNDo0ODoyOSAyMDExICswMTAwCisKKyAgICBBZGp1c3QgcGF0aHMgZm9yIHRlc3QgcmVzdHJ1Y3R1cmUKKworY29tbWl0IDE0YjYwZTg1YTFiNTcwMGU5M2QxMjZlMmYyOTFkNWM0ODVmMzRlMzYKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBEZWMgMzEgMTQ6MTQ6MjkgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IE1ha2UgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGRsbW9kIG1vZHVsZSBmYWlsIHJhdGhlciB0aGFuIGdlbmVyYXRlIGEgZHVtbXkgbW9kdWxlIGlmIHRoZSBkbG9wZW4gZnVuY3Rpb24gaXNuJ3QgYXZhaWxhYmxlLgorCitjb21taXQgOThhOTc1MzhmYzFlOWZmNDZiNjBkNWQ5NjkzNDc0NDQ1NzgzNzhjMAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IERlYyAzMSAxMzozNToxMyAyMDExICswMTAwCisKKyAgICBBZGp1c3QgdGhlIHBhdGhzIHRvIHN1cHBvcnQgdGVzdGluZyBldmVuIGlmIGJ1aWxkZGlyICE9IHNyY2RpcgorCitjb21taXQgODhmMGFmM2NmYjkxNmFlNTg2M2NjMjk4NjA3MWQ0MzVmMjBjMzA2NAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IERlYyAzMSAxMTozNzo1MiAyMDExICswMTAwCisKKyAgICBSZWR1Y2UgdGhlIHNjb3BlIG9mIHRoZSB2YXJpYWJsZXMgJ3AnIGFuZCAnbGVuJy4KKworY29tbWl0IDA4MTVhNzUzNmM3NmY3ZTQ4NDI2Mzg2ODNmNjc0ODk0YTFhOGNlMTQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgRGVjIDI5IDE0OjQyOjU0IDIwMTEgKzAwMDAKKworICAgIFJlcG9ydCBwcm9ibGVtcyB3aXRoIFNldFVuZG8gcHJvY2Vzc2luZworICAgIE1pc3NlZCB3aGVuIGFwcGx5aW5nIHBhdGNoICMzNDQ1NDQwCisKK2NvbW1pdCBlYjJhYjIzNzQyY2E4NmMwYjg5Y2NmZTkxZWI2ZWEzNzRiZjNhY2MxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IERlYyAyOSAxNDozNzozMSAyMDExICswMDAwCisKKyAgICBDaGVjayBmb3IgdGhlIGV4cGVjdGVkIGVycm9yIChFUElQRSkgb24gY2xvc3VyZS4KKyAgICBNaXNzZWQgd2hlbiBhcHBseWluZyBwYXRjaCAjMzQ0NzQ0NAorCitjb21taXQgYWFjMTBiYzRmMDUzYzAxNGYzODJkNjU5M2ZjMzJhYjk1ZTBiMWE1NworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBEZWMgMjkgMTI6NTk6NTIgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzQ2Mzc2NzogSGFuZGxlIHBhcnNpbmcgc3ViaWRlbnRpZmllcnMgPiAyXjMxCisKK2NvbW1pdCBiYmMwMmUzNmU5MGMxYWFiNzg5ODU2MmY5NjNmNWNhZGIyNmUxMGJkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgV2VkIERlYyAyOCAxNzoxNToxNiAyMDExICswMDAwCisKKyAgICBNb3ZlIHBhc3MvcGFzc19wZXJzaXN0IHRlc3RzIHRvIHRoZSBuZXcgbG9jYXRpb24KKworY29tbWl0IDM4OThjMDRmZDZmODk4NjcwNjJmZGZlYmYzNjg1N2FiNjE5YzA0NTAKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBXZWQgRGVjIDI4IDE2OjUzOjI0IDIwMTEgKzAwMDAKKworICAgIEFkZCB0ZXN0cyBmb3IgcGFzcy9wYXNzX3BlcnNpc3QsIHN1cHBsaWVkIGJ5IEJpbGwgRmVubmVyCisKK2NvbW1pdCBkNWVlM2YwYTFhNjNiYjE3NTJjNzRjYmNhNTVhYTNkNDBiZjliZjEzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAyMTo1ODo1MSAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzQ0NzQ0NDogRml4IFNJR19QSVBFIGhhbmRsaW5nCisgICAgUGF0Y2ggcHJvdmlkZWQgYnkgQmlsbCBGZW5uZXIKKworY29tbWl0IDJhMTdiMzc0MzBjMTg1Mjk5OGMzNTg4ZTU0N2Q3ZWI2MWMwNmRhNzEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDIxOjQ1OjM4IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IGFnZW50eDogUEFUQ0hFUzogMzQ0NTQ0MDogTW9yZSByb2J1c3QgaGFuZGxpbmcgb2YgQWdlbnRYIGVycm9ycworICAgIFBhdGNoIHByb3ZpZGVkIGJ5IEJpbGwgRmVubmVyCisKK2NvbW1pdCBmZTU4YTBlNWY0ZDRlMmUyZWNiY2I0NzM4MmIwOGNiMWU0ZGYzNTJjCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAxODoxNjoyMyAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSEVTOiAzNDU2NzcwOiBIYW5kbGUgKG9ic29sZXRlKSBVSW50ZWdlciB0eXBlIHByb3Blcmx5CisgICAgUGF0Y2ggcHJvdmlkZWQgYnkgQmlsbCBGZW5uZXIKKworY29tbWl0IDFiZThjZjA4YTY3YTkxODU1ZmVlMWVjNGEyZDhlMDg3Yzc4MTI0NTYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDE4OjA0OjEwIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IGFnZW50eDogUEFUQ0hFUzogMzQ0NTQzNzogTG9nIEFnZW50WCBkaXNjb25uZWN0aW9ucworICAgIChpbiBsaW5lIHdpdGggY29ubmVjdGlvbnMpIFBhdGNoIHByb3ZpZGVkIGJ5IEJpbGwgRmVubmVyCisKK2NvbW1pdCAwNjgwMzcyODkxMDdmYWEyYmEzZjVjZDJmYjAwYzE5NDk0YmI5YTA0CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAxNzoyNzo0NiAyMDExICswMDAwCisKKyAgICBIYW5kbGUgYW55IEdFVE5FWFQgcmVxdWVzdCBPSUQsIG5vdCBqdXN0IGEgc2ltcGxlIHdhbGsuCisKK2NvbW1pdCBhNzRmYTUyODk4MzEyM2QzNTVhOGNkY2FhNzdkZDRlYjRiOGM2OTU5CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAxNzowMDoxOCAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBwYXNzOiBQQVRDSEVTOiAzNDkzOTQ6IEJyaW5nIHBhc3NfcGVyc2lzdHRlc3Qgc2NyaXB0IGludG8gbGluZSB3aXRoIHBhc3N0ZXN0KgorICAgIChpLmUuIHVzaW5nIHRoZSBsZWdpdGltYXRlIHN0cnVjdHVyZSBvZiBORVQtU05NUC1QQVNTLU1JQikKKyAgICBQYXRjaCBwcm92aWRlZCBieSBCaWxsIEZlbm5lcgorCitjb21taXQgYmJlNjQ5ZWJmYTYxZWEyMjM5OTE3MGIzNmI5OWRiMzBhMWRlODAxMgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTY6NTQ6MzggMjAxMSArMDAwMAorCisgICAgUmV3b3JrICJwYXNzdGVzdCIgZXhhbXBsZSB0byBmdWxseSB2YWxpZGF0ZSBHRVRORVhUIHJlcXVlc3RzCisgICAgYW5kIHVzZSBhIGxlZ2l0aW1hdGUgc3RydWN0dXJlIGZvciBvdXRwdXQuICBCYWNrcG9ydCBvZiBTVk4KKyAgICByZXZpc2lvbiAxNzYzMiAod2hpY2ggdXBkYXRlZCAncGFzc3Rlc3QucGwnIGJ1dCBtaXNzZWQgJ3Bhc3N0ZXN0JykKKyAgICBDb3JyZWN0IGluIGJyYW5jaGVzIDUuNSBhbmQgYWJvdmUKKworY29tbWl0IDgyZDA2YzcyNDdiMjJjOGIwMWQ0NWJmNTUwNDFkMmYxZTY0MjdkNDkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDEzOjQ1OjE4IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAzNDQ3NjcxOiBGaXggb3ZlcnJpZGUgaGFuZGxpbmcgb2YgT0lEIHZhbHVlcworICAgIFBhdGNoIHN1cHBsaWVkIGJ5IFBoaWxsaXAgTydEb25uZWxsCisKK2NvbW1pdCBiYTRhOWNlNTFjOTYwMGY5ZmRhMTY4ZjFlNmVmZjMyYTFkYjYzY2I5CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAxMzoyNDoyNiAyMDExICswMDAwCisKKyAgICBUd2VhayAtLWRpc2FibGUtc25tcC1zZXQgY2hhbmdlcworCitjb21taXQgODI3YzhiMjg4MzAxNzFmYWE5YzYxZDUzZWZjYTllYjY2MDA1NjFjMgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTE6MjU6NDMgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogcHl0aG9uOiBQQVRDSEVTOiAzNDMzODQ2OiBGaXggZm9yIHVzZSB3aXRoIHB5dGhvbiAyLjQKKworY29tbWl0IGY5OGE1NGE5OWNhZjdiNDZiMTAwYTkyMGRiOTQyY2JjYTljNDM5MjYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDEwOjEwOjM2IDIwMTEgKzAwMDAKKworICAgIFNraXAgU0VULWJhc2VkIHRlc3RzIHdoZW4gY29uZmlndXJlZCB3aXRoIC0tZGlzYWJsZS1zZXQtc3VwcG9ydAorCitjb21taXQgMjMwZGYxNGY5NGMzNzM2ZmYzNDM3OWE0ZTI4MWVlYTM1M2I0N2Y4MAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgTW9uIERlYyAyNiAyMzozNDoyMyAyMDExICswMTAwCisKKyAgICBEbyBub3QgYXNzaWduIHRtU3RhdGVSZWYgdHdpY2UKKworY29tbWl0IGM5NmIzYjRkODUzMGFkNWUwZWZiMDNmMjRkYWI1ZTVmMWE0NjAwMzEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMjUgMTE6MTg6MjEgMjAxMSArMDEwMAorCisgICAgQ29ycmVjdCB1c2UtYWZ0ZXItZnJlZS4KKworY29tbWl0IGM1OTc4Yzg5Y2RlMjQ0MGY0ZDIwZGFkYmM5ZDFkZDhkYjU2MmQ1NmUKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMjUgMTE6MTU6NDQgMjAxMSArMDEwMAorCisgICAgQ29ycmVjdCBkb3VibGUtZnJlZS4KKyAgICAKKyAgICBuZXRzbm1wX3Rsc3RtQWRkcl9hZGQgdGFrZXMgb3duZXJzaGlwIG9mIGl0J3MgYXJndW1lbnQgc28gY2FsbGluZyBmcmVlIG9uIHRoZQorICAgIGFyZ3VtZW50IG9uIGZhaWx1cmUgaXMgaW5jb3JyZWN0LgorCitjb21taXQgYzEzOWNhMTIzYjQ0YmIzYjliNmJmOTIxZTE2MDljYzQ1ZjYzYTY2MAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFNhdCBEZWMgMjQgMTY6NTU6MzAgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVMgMzQxMDA1OTogRml4IHNwYXJzZWx5IGF1Z21lbnRpbmcgdHJpZ2dlciB0YWJsZXMKKyAgICBQYXRjaCBwcm92aWRlZCBieSBTdGVwaGVuIFR1cm5lcgorCitjb21taXQgYzRhZTAyMWIyZTYzODQ0MzcwODFjNTYyM2YzNjBjODg5NjM5MDE4OAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFNhdCBEZWMgMjQgMTY6Mjk6NTQgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVMgMzQxMDA1MDogU2tpcCBhbHJlYWR5LSdwcm9jZXNzZWQnIHZhcmJpbmRzCisgICAgQmFzZWQgb24gbWliMmMgcGF0Y2ggcHJvdmlkZWQgYnkgU3RlcGhlbiBUdXJuZXIKKworY29tbWl0IGM2YWNjZjhjNjYyNTRmYThjNDg3NjdlZDdkZWM3OTVkZGFmYzUyMmUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBTYXQgRGVjIDI0IDE2OjI3OjExIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTIDM0MTAwNTA6IFNraXAgYWxyZWFkeS0ncHJvY2Vzc2VkJyB2YXJiaW5kcworICAgIFBhdGNoIHByb3ZpZGVkIGJ5IFN0ZXBoZW4gVHVybmVyCisKK2NvbW1pdCBhNjE4MjZhZDhjYTU0NjYxZDFkOTA5NzEyNTAzYmQzYThiMzJlZWQwCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgRGVjIDIyIDE4OjM1OjQ2IDIwMTEgKzAxMDAKKworICAgIFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCisgICAgCisgICAgbXlNYXRjaCBpcyB1bnVzZWQgYXMgbm1hdGNoIGlzIHplcm8gYW5kIGFsc28gc2luY2UgcmVnZXhCdWZmZXIgaXMgY3JlYXRlZAorICAgIHdpdGggUkVHX05PU1VCIHNldC4KKworY29tbWl0IGJhNGZjODBmZTJjZmQ1YTVkODkyMzBkOGYzNzAzZTRmZTAxZTYwMTkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgRGVjIDIyIDE5OjI0OjQwIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IGFnZW50OiBQQVRDSCAzNDAyMzc2OiBmcm9tIExlb25hcmRvIENoaXF1aXR0bzogUmVjb2duaXNlIFJlaXNlckZTCisgICAgQWxzbyBtb3ZlIHZhcmlvdXMgRlNUeXBlIGRlZmluaXRpb25zIHRvIHRoZSBhcHByb3ByaWF0ZSBibG9ja3MKKworY29tbWl0IGI1YWM0YTA0ZGNkNTQ3MGQwOGQwMzMyMWFiY2QxZTk4MjYyMWU2ZTAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDIyIDE0OjM5OjQ2IDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHVudGVybWluYXRlZCBzdHJpbmdzIGFmdGVyIHN0cm5jcHkKKworY29tbWl0IDJiMzdlNGU4ZjI1MGEwZDg4MjExOTlhNzRhYzNmNGU1YjdiN2JhYmEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDIyIDE0OjMxOjUxIDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHVudGVybWluYXRlZCBzdHJpbmdzIGFmdGVyIHN0cm5jcHkKKworY29tbWl0IDNkMDgzNDUxNTZjNDE5MzMzZGU5NjlmMTNkMjFmY2VjN2UxOGU5NGQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDIyIDE0OjMyOjI5IDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHVudGVybWluYXRlZCBzdHJpbmdzIGFmdGVyIHN0cm5jcHkKKworY29tbWl0IGNkODU5YWQ1MWM0ZjE4ZDViMGZjNjlkZDY2OWZjYjA1MWM3OTg5NjkKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDIyIDE0OjM5OjMzIDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHdyb25nIG1lbW1vdmUgc2l6ZQorCitjb21taXQgMzBmZjU4ZDA5ZDRjOWQ1NDM4YmI2MjEwNTRmZDdhZDdhMmE1OTdlNAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBEZWMgMjIgMTQ6MDc6MTkgMjAxMSArMDEwMAorCisgICAgRml4ZWQgd3JvbmcgbGVuZ3RoIG9mIGJ1ZmZlciB3aGVuIHByaW50aW5nIEFTTl9CSVRfU1RSCisKK2NvbW1pdCA2YzE0ODdlMWQzNjBkM2QyNjBhMzljYjFmNWIxNWRhOTc4Mzk1MDUzCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxNTo0NzozNCAyMDExICswMTAwCisKKyAgICBGaXhlZCBwb3RlbnRpYWwgZnJlZSBvZiB1bmluaXRpYWxpemVkIHBvaW50ZXIgaW4gZXJyb3IgY2FzZXMKKworY29tbWl0IGM3NmZiOTZmNjVlMzNiYTJmZDIxMmE5MjFlOGMzODYxNTVlZTVjN2EKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgRGVjIDIxIDE1OjQ0OjQ2IDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHVuaXRpYWxpemVkIHZhbHVlcyBpbiB1ZHBUYWJsZQorCitjb21taXQgYzQ0NjA4Njc5Yjg5NzUxMTc2ZjI4YTJlNTRkNTI4MmI0NmUyYTA1YworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBEZWMgMjEgMTQ6NTY6MTMgMjAxMSArMDEwMAorCisgICAgVXNlIGNhbGxvYyBpbnN0ZWFkIG9mIG1hbGxvYyBhbmQgbWFudWFsIGNsZWFyaW5nCisKK2NvbW1pdCBhMDVjNWY5NTEzNDYxODI0ZTc5MDNhZTlhZTlhNmMzMzg2ZTMzODc5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxNDo0MDo1MCAyMDExICswMTAwCisKKyAgICBGaXhlZCBwcmludGluZyBvZiB1bml0aWFsaXplZCB2YXJpYWJsZSB3aGVuIHNlbnNvcnNfZ2V0X2xhYmVsKCkgZmFpbHMKKworY29tbWl0IGU0YTVlZGM3MjM5M2JkM2RlOWJmMTJiY2ViYTlkODNiYmY3ZGU3MGIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgRGVjIDIxIDE0OjMxOjI1IDIwMTEgKzAxMDAKKworICAgIFJlbW92ZWQgdW51c2VkIHZhcmlhYmxlCisKK2NvbW1pdCBmYWUyZTViODM1YjhkZjFlYWU0N2U0Y2ViYjRlYjQwNGQ3MjgyMzc3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxMzozMToyMSAyMDExICswMTAwCisKKyAgICBGaXhlZCBkZXJlZmVyZW5jaW5nIHVuaXRpYWxpemVkIGlpZCBpbiBlcnJvciBjYXNlcyBhbmQgd2l0aCBkZWJ1ZyBpbmZvIGVuYWJsZWQuCisKK2NvbW1pdCA5ZDU4ZjgxYTkyMzljZmJjZmM4ZWJjZTM2N2QyMWU5YjNkY2IwMjhiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxMzozMzozMyAyMDExICswMTAwCisKKyAgICBGaXhlZCBkZXJlZmVyZW5jaW5nIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGluIGVycm9yIGNhc2VzCisKK2NvbW1pdCAwYmM4YzA4ZWRlYWU3YWUwOTVmMTE2MjU4YzIwYWU1NzY3ZDYwNjUyCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxMzoyMDo1MiAyMDExICswMTAwCisKKyAgICBGaXhlZCByZXR1cm5pbmcgdW5pbml0aWFsaXplZCB2YXJpYWJsZSAnc3RhdHVzJyB3aGVuIHNzID09IE5VTEwKKworY29tbWl0IDczMDRjNTNjZjhhZGVlOGVjY2VmMWE4ZjI2NzU2ZmMwN2YwOTg3MjEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMTggMjM6MzE6NTMgMjAxMSArMDEwMAorCisgICAgT24gc29sYXJpcyAxMCB0ZXN0IGluIC9iaW4vc2ggZG9lc24ndCBzdXBwb3J0IHRoZSAtZSB0ZXN0LiBSZXBsYWNlIGl0IHdpdGggLWYKKworY29tbWl0IDhjZDNiZTYwZDY5M2M5YzM2ZmZiOTdkM2Q5YmNiNDljMWI0YWJlMzUKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBEZWMgMTcgMDg6NTI6MjQgMjAxMSArMDEwMAorCisgICAgQXZvaWQgcmVwZXRpdGlvbiBvZiB0aGUgY29tcGxleCBleHByZXNzaW9uIGRldGVybWluaW5nIGlmIGl0IGlzIHBvc3NpYmxlIHRvIGdldCB0aGUgZGVzdGluYXRpb24gYWRkcmVzcy4KKyAgICAKKyAgICBUaGlzIGFsc28gbWFrZXMgaXQgcG9zc2libGUgdG8gYnVpbGQgb24gcGxhdGZvcm1zIGxpa2UgU29sYXJpcyAxMCB0aGF0IGRlZmluZQorICAgIElQX1JFQ1ZEU1RBRERSIGJ1dCBsYWNrIGVpdGhlciBvZiBtc2doZHIubXNnX2NvbnRyb2wgYW5kIG1zZ2hkci5tc2dfZmxhZ3MuCisKK2NvbW1pdCA5NTNmMmUzZDQyNWVkZTNiODYzYTJlN2NjYjBiNGJjODYyOTI4YjU3CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgTm92IDUgMjI6MTM6MDcgMjAxMSArMDEwMAorCisgICAgTW92ZSB0aGUgdXNlIG9mIF9zZW5kdG8gYW5kIF9yZWN2ZnJvbSBiZWxvdyB0aGVpciBkZWZpbml0aW9ucy4KKworY29tbWl0IDY4YTExNzNjNDZjZjc3NjAxNDI2Y2YzOTFkOWE4NTI3OTRmMjA1N2UKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBOb3YgMjAgMjA6MDU6MTggMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogU2VwYXJhdGUgb3V0IHRoZSBjbWVzZyBidWZmZXIgc2l6ZQorCitjb21taXQgNDYxZGQxNmYzYjI2NDczMjJjZGNlNjM2MzA4MWNjNDRiYTVhNDliNQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IE5vdiAyNiAyMTo1MTowMSAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBNZXJnZSB0b2dldGhlciB0aGUgTGludXggYW5kICpCU0QgdmVyc2lvbiBvZiBzcmMgcG9ydCBzZW5kaW5nLgorCitjb21taXQgN2FjY2I2OWJhYTFmYzBiNmEzNDM5ZDJlNTQ5Yzg2ZGEzNDUzYmFkMgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIERlYyAxMSAxOTozMDozMSAyMDExICswMTAwCisKKyAgICBVc2UgYSBiYXJlIHN0cnVjdCBpb3ZlYyBpbiBpbnN0ZWFkIG9mIGEgb25lIGVsZW1lbnQgYXJyYXkuCisgICAgCisgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyBjaGFuZ2UgaXMgdG8gbWFrZSBfcmVjdmZyb20gbW9yZSBzaW1pbGFyIHRvIF9zZW5kdG8uCisKK2NvbW1pdCAzOTg1MmNkNGM4NWVmMmJmYzc1Y2RlYTI4MjUyNjFlZTkzZTc2OGMyCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDExIDE5OjI5OjIwIDIwMTEgKzAxMDAKKworICAgIEFkZCBjb21tZW50IGRlc2NyaWJpbmcgdGhlIHB1cnBvc2Ugb2YgdGhlIGNhbGwgdG8gZ2V0c29ja25hbWUgYWZ0ZXIgYWxtb3N0IHJlbW92aW5nIGl0LgorCitjb21taXQgMWIyOTJjYTI3ZWFiNWNhYTczZmVhYWE4M2RjOWMxMmFiYzBmMmU3MAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIERlYyAxMSAxOToyNzo1OSAyMDExICswMTAwCisKKyAgICBSZWR1Y2UgdmFyaWFibGUgc2NvcGUuCisKK2NvbW1pdCBiYzg3OTU3MWVjYTk1MjBiYzEzMmY4NDBjM2U2NTlkMzc5MzE0NGQ3CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDExIDE5OjI1OjM2IDIwMTEgKzAxMDAKKworICAgIEludHJvZHVjZSB0ZW1wb3JhcnkgdmFyaWFibGVzIHRvIGVhc2UgdGhlIGV4dHJhY3Rpb24gb2YgdGhlIHNlcnZlciBhZGRyZXNzLgorCitjb21taXQgYjdlZWE2Y2ZmYmQ4NzI5MzJjZTJjMDRmZWZiNmY0M2RlMzM5ZjM3NAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIERlYyAxMSAxOToxODozMyAyMDExICswMTAwCisKKyAgICBSZW5hbWUgdGhlIGNtZXNncHRyIHZhcmlhYmxlIHRvIGNtLgorICAgIAorICAgIFRoZSBwdXJwb3NlIG9mIHRoaXMgaXMgdG8gaW5jcmVhc2UgdGhlIHJlYWRhYmlsaXR5IG9mIHRoZSBjb2RlLgorCitjb21taXQgMGE3NDYxZTcyODgwNWM2MmExY2FiOWQ4N2JmYzc0Yzc5MjdhOWZjYworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIERlYyAxMSAxOToxNToyMiAyMDExICswMTAwCisKKyAgICBGYWN0b3Igb3V0IGEgY29tbW9uIGxvb3AgaW4gcmVjdm1zZyBvcHRpb24gcHJvY2Vzc2luZy4KKworY29tbWl0IGIzYzYyNDhkMDIwMWFiMTYxMDg0MGQ2ZDBlNzQ5YjNiNmM0YWQ3OTIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMTEgMTk6MTM6NDMgMjAxMSArMDEwMAorCisgICAgVW5pZnkgdGhlIHN0cnVjdHVyZSBvZiBMaW51eCBhbmQgQlNEIHJlY3Ztc2cgb3B0aW9uIHBhcnNpbmcgc29tZXdoYXQuCisKK2NvbW1pdCAzNTY0MDBkNjI5MGE0MjNiNTJlYmVlYTVhNWU5NzZmYjE1YmI3M2I0CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDExIDE5OjA0OjU2IDIwMTEgKzAxMDAKKworICAgIFVzZSBDTVNHX0RBVEEgb24gdGhlIHJlc3VsdCBvZiBDTVNHX0ZJUlNUL05FWFRIRFIsIG5vdCBvbiB0aGUgYnVmZmVyLgorCitjb21taXQgM2IzNTE3MDhjNjJkZTQ2YWExYjkwZWQyMzJjZmQ4YzdjNWIwMjIzMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyA4IDEyOjAwOjMyIDIwMTEgKzAxMDAKKworICAgIFJlbW92ZSBhIGNhc3QKKworY29tbWl0IGRlOTI1MGQ5ZGFlOTcyN2E2Y2M3ZjY0NzY4OGRkZGYxYjg1OTcxMjgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgOCAxMTo1ODowNCAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogTWFrZSBzcHJpbnRfbWliX29pZCgpIHRyZWF0IE9JRCBjb21wb25lbnRzIGFzIHVuc2lnbmVkIGluc3RlYWQgb2Ygc2lnbmVkIGludGVnZXJzCisKK2NvbW1pdCAwZTMzYjNiNmQ1ODU0YTRiYWMxNWQ0ZWE1ZTAxNmM1M2QxNjFkMGNkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDggMTA6MDI6MjggMjAxMSArMDEwMAorCisgICAgRml4IHJlY2VudGx5IGludHJvZHVjZWQgY29tcGlsZXIgd2FybmluZ3MKKworY29tbWl0IGI3ZTUwZDVmOWE2NzU1OTgyZDJhZjMxOTE0NzNjYjM0NjQzYmMwM2YKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgOCAwODozNzoyMiAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBSZWR1Y2Ugb3ZlcmhlYWQgb2YgY29uZmlnIGZpbGUgcGFyc2luZworCitjb21taXQgNzNjOWVlNDJkMjhhZmUyZTEwN2E3ZDY2MTZiNmQwMTE4OTBjMzZlYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyA4IDA5OjA5OjU5IDIwMTEgKzAxMDAKKworICAgIFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzCisKK2NvbW1pdCAzZGI5Nzk2MmIzN2ViMTJkMjU0ZDYxZTZiZTIzNGIwNmEzOTFjOGJiCitBdXRob3I6IEJpbGwgRmVubmVyIDxmZW5uZXJAZ21haWwuY29tPgorRGF0ZTogICBUaHUgRGVjIDggMDc6NDM6NDUgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIIDM0NTM4Njg6IGZyb20gIkJpbGwgRmVubmVyIDxmZW5uZXJAZ21haWwuY29tPiI6IEZhY3RvciBjb21tb24gY29kZSBpbnRvIHBhc3NfY29tbW9uCisgICAgCisgICAgTW92ZSB0aGUgY29kZSBmb3IgcG9ybWF0dGluZyBhbmQgcHJpbnRpbmcgdmFsdWVzIGZyb20gcGFzcyBhbmQgcGFzc19wZXJzaXN0CisgICAgaW50byBwYXNzX2NvbW1vbi4KKworY29tbWl0IGI2NTY4YzgzZjE3NTZlOWE2NTQzNGVkZWVlYjQwZDIzZGRiYmI2NTIKK0F1dGhvcjogY2NjaGl1IDxjY2NoaXVAc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgRGVjIDcgMTY6MjU6MjcgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogQlVHOiAzNDUyMDY5OiBGaXggc25tcHRyYXBfb2lkIGRlY2xhcmF0aW9uIGluIG1pYjJjIGdlbmVyYXRlZCBjb2RlCisgICAgCisgICAgVGhpcyBidWcgd2FzIGludHJvZHVjZWQgY29uc2lkZXJhYmxlIHRpbWUgYWdvLiBJdCBkaWQgYWxyZWFkeSBleGlzdCBhdCB0aGUKKyAgICB0aW1lIHRoZSA1LjYgYnJhbmNoIHdhcyBjcmVhdGVkIChzZWUgYWxzbyBjb21taXQKKyAgICAwZWMwODhhZmEyN2NmZGE0ZTZlYTc4YWFlN2NmYzU1MDc1NjRlZGRlKS4KKworY29tbWl0IGQ0OTRkYjY0YzIwOGI0ZGM2MjgxMzEzMmY4ODYzYmQ1YzFhMzlkNzcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgMSAxMDozODoxNyAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IEVsaW1pbmF0ZSBhbiB1bnVzZWQgdmFyaWFibGUgKE5vdykKKworY29tbWl0IDI4ZjI1NjFiYzI5MzVkOGUxY2JmNDZkMjgyMDE1ODE3M2U3YTRjZjQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgMSAxMDozNzoxMSAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IE1vdmUgdGhlIG1haW4gbG9vcCBjb2RlIGludG8gYSBuZXcgZnVuY3Rpb24KKworY29tbWl0IDM5NmUxMjJkZGM0MmE5MTZmMDZhMDI4ODRjMGU4YTI1OGVkYmUyMzgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgMSAwOTozMjoxNiAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogTWF0Y2ggZWFjaCBnZXRwd25hbSgpL2dldHB3dWlkKCkgY2FsbCB3aXRoIGFuIGVuZHB3ZW50KCkgY2FsbCBhbmQgZWFjaCBnZXRncmVudCgpIGNhbGwgd2l0aCBhbiBlbmRncmVudCgpIGNhbGwuCisKK2NvbW1pdCAzZWZlZmJjMDAyNDM5OTc4NmY4YjY4YjFlOTNiMGE4ZmRkZGRjN2RhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDEgMTA6NDE6MDEgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcHRyYXBkOiBSZW1vdmUgc3VwZXJmbHVvdXMgY2FzdHMKKworY29tbWl0IDdmMDVkYWE4ZTBlMGY1MzNiMGYxMmEzZTFjZjA3NjQxNTE5OTA5ZDYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgMSAxMTo1ODozMiAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBCVUc6IDM0NDQ5Mzk6IEJVRzogMTc5Njg4Njogc25tcGxpYjogQXZvaWQgdGhhdCBzcHJpbnRfcmVhbGxvY19vY3RldF9zdHJpbmcoKSBlbWJlZHMgdW5wcmludGFibGUgY29udHJvbCBjaGFyYWN0ZXJzIG9yIGJpbmFyeSB6ZXJvZXMgaW4gaXRzIG91dHB1dC4gVGhpcyBiZWhhdmlvciBjb3VsZCBjYXVzZSB0cnVuY2F0ZWQgb3V0cHV0IGluIHNubXB0cmFwZC4KKworY29tbWl0IGRiOGY1NThmZDJmM2I3YzEwOWVhM2ExYzIxMzNiNzViNmY4Y2IyYWQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgMSAxMDowNDo0MSAyMDExICswMTAwCisKKyAgICBDb21waWxlciB3YXJuaW5nIGZpeDogcGFzcyB1bnNpZ25lZCBjaGFycyB0byBpc3ByaW50KCkgaW5zdGVhZCBvZiBzaWduZWQgY2hhcnMuCisKK2NvbW1pdCA4MDBkYzEwMjhlN2UwY2Q4Y2MxNGQ4NGRkMzE3MjNkNDdhYzA3M2RiCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgRGVjIDEgMTA6MTg6NTggMjAxMSArMDEwMAorCisgICAgUmVkdWNlIHRoZSBzY29wZSBvZiB0aGUgaGludCB2YXJpYWJsZQorCitjb21taXQgODNlYTRhMDgwYzkwYTc0Yjk3NDNkM2YyNGNmMGQ0YjhhMWU4Yzg0OQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE5vdiAyNyAyMToxNjo1MiAyMDExICswMTAwCisKKyAgICBSZWR1Y2UgdGhlIHNjb3BlIG9mIHRoZSB2YXJpYWJsZSBxb3MKKworY29tbWl0IDdiOWUwMzQ0MWMzZGMzYTA3NjcwZWQwMWY1ZDA0NzkxYTgyYzc1MGMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBOb3YgMzAgMTQ6MDQ6MDEgMjAxMSArMDEwMAorCisgICAgUmVtb3ZlICNkZWZpbmUgdmFsKHgpIF9fU1RSSU5HKHgpIGFuZCBjaGFuZ2UgdmFsKHgpIGludG8gX19TVFJJTkcoeCkuCisKK2NvbW1pdCAyZjM3OWIwZTRlY2FkZmE0ZTU0MWUzMDA1YzhmYzgyODE4ODJiNzQxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTm92IDMwIDE1OjU4OjQ3IDIwMTEgKzAxMDAKKworICAgIEZvbGxvdy11cCBmb3IgY29tbWl0IDFhYTcwNGU6IHVuYnJlYWsgdGhlIE1TVkMgYnVpbGQKKworY29tbWl0IDY0ZWYwZjcxMTI3NjE3ODM3MDI3ZmIyY2ZhZjE3NGI5NWJhNzllMGQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBOb3YgMzAgMTQ6MTk6NTAgMjAxMSArMDEwMAorCisgICAgQWRkIFNOTVA6OnJlZ2lzdGVyX2RlYnVnX3Rva2VucygpCisKK2NvbW1pdCA3YmVhZDljYTkxN2M2NzU2NmQ1ZWQ5OGFiNTA3YmJjMDI4MTYyMTdkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTm92IDMwIDE0OjA4OjA4IDIwMTEgKzAxMDAKKworICAgIEFnZW50WCBzdWJhZ2VudDogUmVkdWNlIGNvZGUgZHVwbGljYXRpb24KKworY29tbWl0IDBlZDcxNTQxZjg3ZTdkNzhiYzk5OGVlYmRhMzIxN2M1OWUxZGY4MzAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBOb3YgMzAgMTQ6MDM6MTkgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogQWRkIERveHlnZW4tc3R5bGUgZnVuY3Rpb24gaGVhZGVyIGZvciBuZXRzbm1wX3JlZ2lzdGVyX2RlZmF1bHRfdGFyZ2V0KCkgYW5kIG5ldHNubXBfY2xlYXJfZGVmYXVsdF90YXJnZXQoKS4KKworY29tbWl0IDhjMjk3MmI2MWU0MDE2OWI0N2M1MDk4OGI2YWU5ZThjMjg1Zjg0ZjgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBOb3YgMzAgMTQ6MDI6NTQgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogcGVybDogRml4IHNwZWxsaW5nIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBTTk1QIG1vZHVsZQorCitjb21taXQgNWRmMmJhYzZiZDcxNzc5OTMxMWYwMDFhYzdiNzNkYjg4ZjExYmRkYQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVHVlIE5vdiAyOSAwODo1OTo1OCAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBPbmx5IHRyYW5zZm9ybSB0aGUgYWRkcmVzcyB0byBwcmludGFibGUgZm9ybSB3aGVuIG5lZWRlZC4KKworY29tbWl0IDE3MWU4ZDQ4ZDRhZjA0MDEzY2ZmOGZkMjhmNTM0MWEyYWVmMjFkODgKK0F1dGhvcjogTWlqbyBTYWZyYWRpbiA8c2FmcmFkaW5AbGludXgudm5ldC5pYm0uY29tPgorRGF0ZTogICBUdWUgTm92IDI5IDE2OjQ5OjQ2IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXAtYnJpZGdlLW1pYjogRml4IGluZGV4IGludGVycHJldGF0aW9uLgorICAgIAorICAgIFRoaXMgcGF0Y2ggY29ycmVjdHMgYSB3cm9uZyBkYXRhIGludGVycHJldGF0aW9uLgorICAgIHNubXAtYnJpZGdlLW1pYiBvYnRhaW5zIHRoZSBpZmluZGV4IHZhbHVlIGZyb20gdGhlIHN5c2ZzCisgICAgYXR0cmlidXRlICdpZmluZGV4JyBUaGUgdmFsdWUgZ2l2ZW4gYnkgdGhlIHN5c2ZzIGF0dHJpYnV0ZQorICAgIGlzIGFuIGludGVnZXIsIHdoaWNoIGlzIGhhbmRsZWQgYXMgaGV4IGFuZCBsZWFkcyB0bworICAgIGluY29ycmVjdCBkYXRhIGRpc3BsYXllZCB0byB0aGUgdXNlci4KKyAgICAKKyAgICBlLmcuCisgICAgICAgICQgPiBzbm1wd2FsayBsb2NhbGhvc3QgQlJJREdFLU1JQjo6ZG90MWRCYXNlUG9ydElmSW5kZXguMgorICAgICAgICBCUklER0UtTUlCOjpkb3QxZEJhc2VQb3J0SWZJbmRleC4yID0gSU5URUdFUjogNTQKKyAgICAKKyAgICBhY2NvcmRpbmcgdG8gdGhlIHN5c2ZzIGF0dHJpYnV0ZSB0aGUgdmFsdWUgaXMgMzYKKyAgICAKKyAgICAgICAgJCA+IGNhdCAvc3lzL2NsYXNzL25ldC88ZGV2aWNlPi9pZmluZGV4CisgICAgICAgIDM2CisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogTWlqbyBTYWZyYWRpbiA8c2FmcmFkaW5AbGludXgudm5ldC5pYm0uY29tPgorCitjb21taXQgODJlMzlmYjY3MDZkZjkwZWNmMmZjOWUxMGFkYTJiOTYyZWUxOTZmMworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBOb3YgMjkgMTI6Mjc6NDYgMjAxMSArMDAwMAorCisgICAgRml4IG11bHRpLWxpbmUgY2FzZSB0ZXN0aW5nIG9mIGluY29taW5nIE9JRAorCitjb21taXQgYjE1ZGExYTQ1MTYwNjExMDVhMWVhYzc0NTBjZjY1MGVjNDQyNjZiMgorQXV0aG9yOiBOaWtvbGF5IERlbmV2IDxuZGVuZXZAZ21haWwuY29tPgorRGF0ZTogICBUdWUgTm92IDI5IDA4OjI5OjQ5IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IEZyZWVCU0Q6IFJlc3RvcmUgSVBfUkVDVkRTVEFERFIgZnVuY3Rpb25hbGl0eS4KKworY29tbWl0IDdmNDdmNTJlNDgxYmFhOWFhZmI1Nzg0MjQ0YjBkZDI2NTNlN2RjZmYKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIE1vbiBOb3YgMjggMDg6NTE6MzkgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogVXNlIFNOTVBfQUxMT0NfVFlQRURFRiB0byBhbGxvY2F0ZSB0cmFuc3BvcnRzIGluIG9yZGVyIHRvIGF2b2lkIHRoZSBzZXBhcmF0ZSBjYWxsIHRvIG1lbXNldC4KKworY29tbWl0IGNmODYwMzllMzA4NjIyNWMzMDg1YmI5YWRmMDg4YjhiYTViYTY5NzkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBOb3YgMjIgMTU6MDI6NTggMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogTWluR1c6IHRlc3Rpbmc6IE1ha2UgdW5pdC10ZXN0cy9UMTAycGR1X2J1aWxkX2NsaWIgcGFzcy4KKworY29tbWl0IDFhODdlNzZlMDBlZTNkNWNkMzdhMDdiZmMzZDg0NDkwZDNjMmE0ZWMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBOb3YgMjIgMTQ6NTU6NDIgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogTWluR1c6IHRlc3Rpbmc6IE1ha2UgdW5pdC10ZXN0cy9UMDE0Z2V0aG9zdGJ5YWRkcl9jbGliIHBhc3MKKworY29tbWl0IDg4NjdmZDFkY2ZlNzJiNTlkMDczMjJmZjM4YTY5OWI2NmVjNGYzMjYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBOb3YgMjIgMDk6NDQ6MzggMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogTWFrZSBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKSByb2J1c3QgYWdhaW5zdCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcy4KKyAgICAKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBNYWtlIE5FVFNOTVBfTEFSR0VfRkRfWkVSTygpIHVzZSBtZW1zZXQoKSBvbiBVbml4IHN5c3RlbXMgaW5zdGVhZCBvZiBhbiBleHBsaWNpdCBsb29wLgorICAgIENIQU5HRVM6IHNubXBsaWI6IE1ha2Ugc3VyZSB0aGF0IG9uIFVuaXggc3lzdGVtcyBuZXRzbm1wX2xhcmdlX2ZkX2NscigpIGRvZXNuJ3QgdHJ5IHRvIHJlYWQgbWVtb3J5IGl0IGlzbid0IGFsbG93ZWQgdG8gcmVhZCBpZiB0aGUgZmlyc3QgYXJndW1lbnQgZXF1YWxzIC0xIChhIHZhbHVlIHRoYXQgc2hvdWxkbid0IGJlIHBhc3NlZCBieSB0aGUgY2FsbGVyKS4KKyAgICBDSEFOR0VTOiBzbm1wbGliOiBNYWtlIG5ldHNubXBfbGFyZ2VfZmRfaXNfc2V0KCkgcmV0dXJuIGZhbHNlIG9uIFVuaXggc3lzdGVtcyBpZiB0aGUgZmlyc3QgYXJndW1lbnQgZXF1YWxzIC0xIChhIHZhbHVlIHRoYXQgc2hvdWxkbid0IGJlIHBhc3NlZCBieSB0aGUgY2FsbGVyKS4KKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBNYWtlIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSgpIHNocmluayBiZWhhdmlvciBjb3JyZWN0LgorCitjb21taXQgMjNkYjBjZjA5YjhiMGVhYjM3Yjc0OWVmMGMzYzNmMzA2OTAwMjQ1YwogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEp1bCAyOCAxNToxOToyMiAyMDExICswMjAwCitEYXRlOiAgIE1vbiBOb3YgMjEgMjM6MDI6NTcgMjAxMSArMDEwMAogCi0gICAgQ0hBTkdFUzogc25tcGQ6IFJlc3RvcmUgc3RvcmFnZSB0YWJsZXMgb24gTGludXgKKyAgICBGaXggY2FzdGluZyB0dl91c2VjIHRvIGludCB3aGljaCBtYXkgYmUgdG9vIHNob3J0CiAKLWNvbW1pdCBkNjJhMGViOTA3MGI0ZDhkOWZlMmJjZmRiNGQ1M2QzN2VmODE0ZjliCi1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEp1bCAyOCAxNDo0OTowOCAyMDExICswMjAwCitjb21taXQgODBlZTQwMjJlNTM0ZTY0YWFkNWE1ZjI3MTkyODQzYjQyYWNiODVlMAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IE5vdiAxOSAwOToxNDowMiAyMDExICswMTAwCiAKLSAgICBEb2N1bWVudCBpbnRlcmZhY2VfcmVwbGFjZV9vbGQgb3B0aW9uLgorICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDM0MzkyMzQ6IE1vdmUgbmV0c25tcF9wYXNzX3N0cl90b19lcnJubyB0byBwYXNzX2NvbW1vbiBhbmQgcmVuYW1lIGl0IHRvIG5ldHNubXBfaW50ZXJuYWxfcGFzc19zdHJfdG9fZXJybm8KIAotY29tbWl0IGY2NjBiOGMwZDhjMjcwN2JkNzMxNDJmMDc2MDc5YzkxNjlmMzU5NTYKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSnVsIDI4IDE0OjQwOjI3IDIwMTEgKzAyMDAKK2NvbW1pdCAwYmFhOTI5NmMwNzJiYjM3MzU3NjBiMGRkOTkyZjJkMWQzY2EyN2ZhCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgTm92IDE5IDA5OjA1OjI0IDIwMTEgKzAxMDAKIAotICAgIENIQU5HRVM6IHNubXBkOiBhZGRlZCAnaW50ZXJmYWNlX3JlcGxhY2Vfb2xkJyBvcHRpb24gdG8gcmVtb3ZlIG9sZCBlbnRyaWVzCi0gICAgaW4gaWZUYWJsZSB3aGVuIGFuIGludGVyZmFjZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgYWxyZWFkeSBleGlzaW5nIG9uZQotICAgIGFwcGVhcnMuCi0gICAgCi0gICAgRS5nLiByZW1vdmUgb2xkIHBwcDAgaW50ZXJmYWNlIHdoZW4gbmV3IHBwcDAgc2hvd3MgdXAuCisgICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzQzOTIzNDogQ29ycmVjdCB0aGUgZGVwZW5kZW5jaWVzIG9mIHVjZC1zbm1wL3Bhc3MgYW5kIHVjZC1zbm1wL3Bhc3NfcGVyc2lzdAogCi1jb21taXQgNDA2Y2FiODE4OTI2NDk5YzMxMjFkZWNlNDM3N2Q2NzYzODg5NDA0MgotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKdWwgMjggMTQ6MzI6NTcgMjAxMSArMDIwMAorY29tbWl0IDFhYTcwNGU0YTI5NDQzMGIyOGUzOWI2ZjllNDY4M2I4YTQ4YmNlMDQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBOb3YgMTkgMDg6MzU6MjEgMjAxMSArMDEwMAogCi0gICAgRG9jdW1lbnQgdGhlIGludGVyZmFjZV9mYWRlb3V0IG9wdGlvbi4KKyAgICBDSEFOR0VTOiBzbm1wZDogRmFjdG9yIG91dCBhc2MyYmluIGFuZCBiaW4yYXNjLiBBZGQgYSBuZXRzbm1wX2ludGVybmFsXyBwcmVmaXggdG8gdGhlbQogCi1jb21taXQgNDJiODgzY2UxOGU1OGNhODlmZGZkNTE0ZWM2OThlMmY3ZmZkMWY2MwotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKdWwgMjggMTQ6MzI6MzggMjAxMSArMDIwMAorY29tbWl0IGNkYThmZTkxMDEzZjEyY2JmNjRhMDc3NWFiYjU1NzIwMDM1YWY5MzEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBOb3YgMTkgMDA6NTU6MjQgMjAxMSArMDEwMAogCi0gICAgQWxsb3cgaWZUYWJsZSBlbnRyaWVzIHRvIGJlIGRlbGV0ZWQgaW1tZWRpYXRlbHkgd2hlbiBhcHByb3ByaWF0ZSBpbnRlcmZhY2UKLSAgICBkaXNhcHBlYXJzIChpLmUuIGludGVyZmFjZV9mYWRlb3V0ID0gMCB3b3JrcyBhcyBleHBlY3RlZCkuCisgICAgQ0hBTkdFUzogc25tcGQ6IENhbGwgc25tcF9vaWR0cmVlX2NvbXBhcmUgaW5zdGVhZCBvZiBzbm1wX29pZF9taW5fY29tcGFyZQorICAgIENIQU5HRVM6IHNubXBkOiBSZW1vdmUgc25tcF9vaWRfbWluX2NvbXBhcmUgc2luY2UgaXQgaXMgaW50ZXJuYWwgYW5kIHVudXNlZAogCi1jb21taXQgNDUwNjJlYTQ3YmUxY2Q4ZGY0OTMzYTBkZTdmNzJmOGNmOTE4M2FhZQotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKdWwgMjggMTI6MjQ6MTAgMjAxMSArMDIwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IGFkZGVkICdpbnRlcmZhY2VfZmFkZW91dCcgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gc2V0IGxpZmV0aW1lIG9mIGlmVGFibGUgZW50cmllcyBvZiByZW1vdmVkIGludGVyZmFjZXMuCi0gICAgCi0gICAgUHJldmlvdXMgbGlmZXRpbWUgd2FzIGhhcmRjb2RlZCA1IG1pbnV0ZXMsIG5vdyBpdCdzIGNvbmZpZ3VyYWJsZS4KLQotY29tbWl0IDMxZmEwN2NkOWZmZGU0NmQ0MWQyYjU4MzhjM2ZjNGQwMTU0OGJmYjUKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVsIDI3IDE0OjQ1OjQ3IDIwMTEgKzAyMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBwdXJnZSB6b21iaWVzIG9mIHBhc3NfcGVyc2lzdCBjaGlsZCBwcm9jZXNzZXMuCi0gICAgCi0gICAgSWYgcGFzc19wZXJzaXN0IHByb2Nlc3MgZW5kcywgd2Ugc2hvdWxkIHByb2Nlc3MgaXRzIHNpZ2NoaWxkIHNpZ25hbC4KLQotY29tbWl0IDExYmQ2ZTAzMmQxNWZmYjExZDcyZTM1MmNhNmJjOTUwMjNjMzM3MWEKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVsIDI3IDE0OjQ1OjA5IDIwMTEgKzAyMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBydW4gc2lnbmFsIGhhbmRsZXJzIHdoZW4gc2VsZWN0KCkgaXMgaW50ZXJydXB0ZWQuCi0gICAgCi0gICAgVGhpcyBiZWhhdmlvciBpcyBpbmRpY2F0ZWQgaW4gY29tbWVudCBvbiBsaW5lIDEyNDQsIGJ1dCBpdCB3YXMgbm90IGFjdHVhbGx5IGRvbmUuCi0KLWNvbW1pdCBjZDZlMzgyYmVkYThkNDBlZGQwNjY0ZThmYWVjOGRiMjI0ZTVkNWQ2Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBUdWUgSnVsIDI2IDE2OjE2OjQ2IDIwMTEgKzAyMDAKLQotICAgIENsYXJpZnkgYW4gSVB2NiBzb3VyY2UgY29kZSBjb21tZW50Ci0KLWNvbW1pdCAyY2VjNjI0NzkyYWY4NTQ2NTA1ZmJhMDJjYTBhMmUyMTE2YTU1OWU3Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBUdWUgSnVsIDI2IDE0OjU5OjMzIDIwMTEgKzAyMDAKLQotICAgIFNwZWxsaW5nIGZpeDogZGVmaW5lZHkgLT4gZGVmaW5lZAotCi1jb21taXQgZjk1YTFmMzgwZWExOGZmNjMzZjI3M2E5YWE1ZTllYjI3NjI3MDEwZQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgVHVlIEp1bCAyNiAxNDoxOToxNCAyMDExICswMjAwCi0KLSAgICBTcGVsbGluZyBmaXg6IGFsZXZpYXRlIC0+IGFsbGV2aWF0ZQotCi1jb21taXQgYzVhODQ2NGM0MmE5NGMyNTBlZTJkZmEyYTQ3MzEwOWE3MzQyMDNkOAotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKdWwgMjYgMTQ6MjQ6NTUgMjAxMSArMDIwMAotCi0gICAgQ0hBTkdFUzogcHl0aG9uOiBQQVRDSDogMzMxMDM3NTogZnJvbSBFcmlubiBMb29uZXktVHJpZ2dzOiBmaXhlZCBwYXJzaW5nIG9mIHZhcmJpbmRzIHdpdGggTUlCIG5hbWVzCi0KLWNvbW1pdCBmOWNjYmM3NzI2NjYxMzRkMWQxNzhiNTA1YWY5ZGRjZGQ5ZWQ0MjQ0Ci1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEp1bCAyNSAxNTowMjoxNSAyMDExICswMjAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogYXZvaWQgZGl2aXNpb24gYnkgemVybyBpbiBVQ0QtU05NUDo6ZHNrVGFibGUKLQotY29tbWl0IGMxNGZjMzg2MTRiYWYxMGQ1MTcxMzZmMDQ4MDkwN2I3ZjAzZDhkNzQKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdWwgMjAgMTM6NDQ6NTkgMjAxMSAtMDcwMAotCi0gICAgVXBkYXRlZCB0aGUgd29yZGluZyBjaG9pY2VzIGEgYml0IGFuZCBsaXN0ZWQgdGhlIGhhbmRsZXIgdHlwZXMgaXRzIHByb2R1Y2luZwotCi1jb21taXQgNDVmZjc3OGY1NzE2NGYxZTJlNTUwMjM3MDc0M2RlYmQ3ZWFiZjJiZQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEp1bCAxOSAxODozNjoxMSAyMDExIC0wNzAwCi0KLSAgICByZW1vdmUgYnJva2VuIHdoaXRlc3BhY2UgbGluZXMgdGhhdCBsZWFkcyB0byByZWFkaW5nIGNvbmZ1c2lvbgotCi1jb21taXQgZWJkZDIxNmMwNzRiZjQxY2QzYTA4NGJkMTQ2ODljZjAxYzg4N2IzMQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEp1bCAxOSAxODozNjoxMSAyMDExIC0wNzAwCi0KLSAgICByZW1vdmUgYnJva2VuIHdoaXRlc3BhY2UgbGluZXMgdGhhdCBsZWFkcyB0byByZWFkaW5nIGNvbmZ1c2lvbgotCi1jb21taXQgZDY1YzdiMTRhMGY5MTU2MGJiZjY1Mjc0ZjYyZTQ4ZGI5N2EzNGIzZQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEp1bCAxOSAxODo0NjoxMCAyMDExIC0wNzAwCi0KLSAgICB1cGRhdGVkIGdpdGlnbm9yZSB0byBpZ25vcmUgYSBudW1iZXIgb2YgYXV0by1nZW5lcmF0ZWQgZmlsZXMKLQotY29tbWl0IGFiMWQ4ODdiYTM4M2MzM2Q4NTNhYTRkMzQ4YmJjZWFiOTgxYWEyNDUKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKdWwgMTkgMTg6MzY6MTEgMjAxMSAtMDcwMAotCi0gICAgcmVtb3ZlIGJyb2tlbiB3aGl0ZXNwYWNlIGxpbmVzIHRoYXQgbGVhZHMgdG8gcmVhZGluZyBjb25mdXNpb24KLQotY29tbWl0IGRmNWY3MDA1NWNmOWJlMzNmMDVmYjUwYWJlMmY1YTgxZWFjMDkyYWQKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFR1ZSBKdWwgMTkgMTE6MDc6MTkgMjAxMSArMDIwMAotCi0gICAgUmVyYW4gYXV0b3JlY29uZgotCi1jb21taXQgNzBkZWU0YjhkZDM3ZThiMWQ1OWRiMDNjZDdmNjMxZmUzNTZmMTllNAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgVHVlIEp1bCAxOSAwOTozODoxNiAyMDExICswMjAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDMzNjk2ODA6IGZyb20gSWx5YSBZYW5vazogY2hhbmdlIHNubXBfZW5hYmxlYXV0aGVudHJhcHMgZnJvbSBpbnQgdG8gbG9uZyBzdWNoIHRoYXQgbW9kaWZ5aW5nIHRoZSBjb3JyZXNwb25kaW5nIE1JQiBvYmplY3QgZG9lcyBub3Qgb3ZlcndyaXRlIG1lbW9yeSBpbiA2NC1iaXQgYnVpbGRzLgotCi1jb21taXQgMGYzMDliNDkzYzIxZDNjNjkxNDQ4NzUxNGI0MTU2MDc1NGZmY2RmOQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgVHVlIEp1bCAxOSAwODozNzo1MCAyMDExICswMjAwCi0KLSAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IEZpeCBhIHJhcmUgY3Jhc2ggdHJpZ2dlcmVkIGJ5IFNJR1RFUk0gYnkgbW92aW5nIHNodXRkb3duX3BlcmwoKSBmcm9tIHRoZSBTSUdURVJNIHNpZ25hbCBoYW5kbGVyIHRvIHRoZSBjbGVhbnVwIGNvZGUgc2VjdGlvbiBpbiBtYWluKCkuCi0KLWNvbW1pdCA2OTBlYTdkYzQ1YzZmZTFhN2JiZmExNTg0ZWQ5YmY5MjFmMTliMjhmCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBUdWUgSnVsIDE5IDA4OjI4OjU5IDIwMTEgKzAyMDAKLQotICAgIENIQU5HRVM6IHNubXB0cmFwZDogQWRkIG1pc3NpbmcgbmV3bGluZSBjaGFyYWN0ZXIgaW4gYSBsb2cgbWVzc2FnZQotCi1jb21taXQgZGQyZmMyZWQ4OGQwZjliYjgxZGUzNWRiZTFmOWJkM2JiYmJiM2Q5MAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgVHVlIEp1bCAxOSAwODoyODoxMyAyMDExICswMjAwCi0KLSAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IEludm9rZSBzaHV0ZG93bl9wZXJsKCkgd2hlbiBzaHV0dGluZyBkb3duCi0KLWNvbW1pdCA2ZGVlYzFhODkwNDhjOGRiMjY1MjM1MTdhZjk4ZGRkMzk3ZmM3N2MzCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBUdWUgSnVsIDE5IDA4OjIzOjA1IDIwMTEgKzAyMDAKLQotICAgIFNwZWxsaW5nIGZpeDogYnJhbmtldCAtPiBicmFja2V0Ci0KLWNvbW1pdCA4ZDlkY2M4MDZlYWIzN2ZlMmRkZjljYzM0Y2Y4NjQ2NzI2NWI2MmNmCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBTdW4gSnVsIDE3IDExOjM4OjU4IDIwMTEgKzAyMDAKLQotICAgIFJ1biBhdXRvcmVjb25mLiBGaXhlcyBidWlsZCBicmVha2FnZSBjYXVzZWQgYnkgcGF0Y2ggZDU4OGVjODUzYmQwNTMxZjIxMmZjYmY1MWI5NjJiOTZjNjgyOGI1OSAoUlBNIDQuOSBzdXBwb3J0KQotCi1jb21taXQgZDYxN2Q4NGY4M2ZhNjllZDlmYTlmOThlZmM0YWZhZjg4MGQxMjFmMgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgVGh1IEp1bCAxNCAxNjo0Mzo0NyAyMDExICswMjAwCi0KLSAgICBTcGVsbGluZyBmaXg6IGJyYW5rZXQgLT4gYnJhY2tldAotCi1jb21taXQgYzQ4Y2VlZjk0MWNlMDM2ZDI2NzVhZTk0MmRlYWQ4NTRjZjVhMWUwZAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgVGh1IEp1bCAxNCAxNjo0MjowMCAyMDExICswMjAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBNYWtlIG5ldHNubXBfaXB2Nl9mbXRhZGRyKCkgc2hvdyB0aGUgSVB2NiBzY29wZSBJRAotCi1jb21taXQgN2JhZDc4ZTUxOTQxNTc2OTA0YWZkNjJjYzkxMzY2NjcwOGY4ZjQ2YwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgU3VuIEp1bCAxNyAxMTowNDozNCAyMDExICswMjAwCi0KLSAgICBDSEFOR0VTOiBXaW4zMjogQWRkIHN1cHBvcnQgZm9yIElQdjYgYWRkcmVzcyBzY29wZSBJRAotCi1jb21taXQgNGZiMWYwZWRhNzkwOWFhZGE2YWJjNWJkOGRiZjAxNGQxMTVmZGI0ZQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgU3VuIEp1bCAxNyAxMTowNzoxMCAyMDExICswMjAwCi0KLSAgICBSdW4gYXV0b3JlY29uZgotCi1jb21taXQgYTU2NzIxYTNlNzc1NGUzODlkYWE3ZThhM2Q1NzkyODk5ZWRjOWRlMwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgVGh1IEp1bCAxNCAxNjoxODozMiAyMDExICswMjAwCi0KLSAgICBBZGQgYXV0b200dGUuY2FjaGUgYW5kIHN0YW1wLWggdG8gLmdpdGlnbm9yZQotCi1jb21taXQgODUxYmNmNTNmY2QxM2NkZjBiYTlmMTJlNWQ2MDNlNzNmOGJiOTYxMQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEp1bCAxNSAxNTozMjo0OSAyMDExIC0wNzAwCi0KLSAgICBtZW50aW9uZSB0aGUgJ2JlZm9yZScgcGFydCBvZiB0aGUgaW5qZWN0SGFuZGxlciBsaW5lCi0KLWNvbW1pdCA5Zjc5MzYzMDE2MmNiNzcxM2FjNGI2OGM5YWFiZTUwZTY3NTE0MDcxCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSnVsIDE0IDA3OjMxOjMwIDIwMTEgLTA3MDAKLQotICAgIGZpeCBhIHR5cG8KLQotY29tbWl0IGVkYzJjODgzNzVmZWNjYjE3NmJjYWRlYjU4ODEwZGQ1N2JkOTdmYjcKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKdWwgMTEgMTk6MzM6MDMgMjAxMSAtMDcwMAotCi0gICAgYWRkZWQgYSBjb3B5IG9mIHRoZSBzaGVsbC1mdW5jdGlvbnMgdG8gdGhlIG9sZGVyIGJyYW5jaAotCi1jb21taXQgOTY0ZDYzNTE0OTgyZDZkZDlmYTk1MDIwZDI0YTNlODhiMjJmMmQwYwotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEp1bCAxMSAxOTozMDoyOSAyMDExIC0wNzAwCi0KLSAgICBhIGNvcHkgb2YgdGhlIHJlbGVhc2UgZmlsZSBhcHBsaWVkIHRvIHRoZSBvbGRlciBicmFuY2hlcwotCi1jb21taXQgMTk2ZTExMGIzMTRlMzdlNzNhNzRlZGIwM2M0M2RhMDI5OWVhOGI0NAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEp1bCAxMSAxOTozNDowNiAyMDExIC0wNzAwCi0KLSAgICBhZGRlZCA1LjcgcGF0Y2hlcwotCi1jb21taXQgYTJhYzI0ZGQ0YjViNzA5NzczZmU4Mjc2ODdjODU5ODI3NzVkOTk5OAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEp1bCAxMSAxOTozMzowMyAyMDExIC0wNzAwCi0KLSAgICBhZGRlZCBhIGNvcHkgb2YgdGhlIHNoZWxsLWZ1bmN0aW9ucyB0byB0aGUgb2xkZXIgYnJhbmNoCi0KLWNvbW1pdCA4YWQzMmNlZmIzN2M2MjA4MGM0ZjNkNzQ0NDM4ODRiZWMxYzQ5YWRkCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSnVsIDExIDE5OjMwOjI5IDIwMTEgLTA3MDAKLQotICAgIGEgY29weSBvZiB0aGUgcmVsZWFzZSBmaWxlIGFwcGxpZWQgdG8gdGhlIG9sZGVyIGJyYW5jaGVzCi0KLWNvbW1pdCA5ZmY0NzE0MzllMzI2MjU1MDY2Mzc3Yzc2ZDk5NWUxYWFmMjk2YmQyCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDI5IDIzOjE1OjQyIDIwMTEgLTA3MDAKLQotICAgIGZpeCB0YWcgcHVzaGluZwotCi1jb21taXQgZjlhNjUzODViMjNkMDZkYmJlOTQzMGEyM2M4ZWJjZjY4ZDEyMTI3ZQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAyOSAyMjozMjoxMCAyMDExIC0wNzAwCi0KLSAgICBtaXNjIHB1YmxpY2F0aW9uIGZpeGVzIGZvdW5kIHdoaWxlIHB1Ymxpc2hpbmcKLQotY29tbWl0IGRmOWNmOWExZTI5M2QwNWEyNDc4NjY5NGY2OGMwNWEyYmUxM2E5YjMKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMjkgMTY6MzQ6MTEgMjAxMSAtMDcwMAotCi0gICAgeG1sIGZpeGVzCi0KLWNvbW1pdCBlZThkMTYwNDE2YzJmN2QxOTQxODYzZTdkMzc1MTI2NThlM2YyZjM2Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDI5IDE2OjMzOjUwIDIwMTEgLTA3MDAKLQotICAgIHVzZSBnaXQyY2wgdG8gZ2VuZXJhdGUgdGhlIENoYW5nZUxvZyBmaWxlOyBuZWVkcyBtdWNoIG1vcmUgd29yay4KLQotY29tbWl0IDVkNGJiODAxMTNkZGNjZTVjZWUyOTNhNGU1MzdiMjAxZmFmY2FiODMKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMjkgMTQ6NDg6MzkgMjAxMSAtMDcwMAotCi0gICAgdXNlIHRoZSBuZXcgcnVuLWF1dG9jb25mIHNjcmlwdAotCi1jb21taXQgNjFmZmVmNjI2ODY3NWE5MWUyMzBkNDRiMzQwN2EzZDBjM2ZmYzg5ZAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAyOSAxNDo0Nzo1NiAyMDExIC0wNzAwCi0KLSAgICBBIHNjcmlwdCB0byBpbnZva2UgdGhlIGNvcnJlY3QgdmVyc2lvbiBvZiB0aGUgYXV0b2NvbmYgdG9vbAotCi1jb21taXQgZDBmNmY4ZGUzNzI5MmI3ZmJjOWUwNTc5MzY5MGI1Nzg0YTA0MWQ0NgotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAyOSAwODo0MTo0NSAyMDExIC0wNzAwCi0KLSAgICByZW1haW5pbmcgY29tbWFuZCBsaW5lIGNoYW5nZXMgZm9yIHN2biAtPiBnaXQKLQotY29tbWl0IDE2NTYwODQwMDIwZGM1ZTBjNGIyOGNjMmUzMGJiMmNkMDM0Y2UwZDAKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMjkgMDc6MjY6NTUgMjAxMSAtMDcwMAotCi0gICAgbWFrZSB0aGUgYnJhbmNoIGVjaG8gb3V0cHV0IGFuZCBzdm4gdXBkYXRlIGNvbnZlcnRlZCB0byBnaXQgZXF1aXZhbGVudHMKLQotY29tbWl0IGY3NzViY2Q2YTdhNTBmMzM3ODI1MjZlY2RiMWJlZWE1NWUzZmU4MjMKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMjkgMDc6MTE6MjkgMjAxMSAtMDcwMAotCi0gICAgcHVsbCB0aGUgYnJhbmNoIGluZm8gZnJvbSBnaXQKLQotY29tbWl0IGQ1ODhlYzg1M2JkMDUzMWYyMTJmY2JmNTFiOTYyYjk2YzY4MjhiNTkKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDI5IDE2OjA3OjAwIDIwMTEgKzAyMDAKLQotICAgIFR3ZWFrIFJQTSBoYW5kbGluZyB0byB3b3JrIHdpdGggbGlicmFyeSB2ZXJzaW9uIDQuOQotCi1jb21taXQgYWY4YjIzNTIzNGY3Mjk0NGE2NDlhNzZmMGQzMGNmZjk1YWMyZTg5NQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPG9wZW5zb3VyY2VAaGFyZGFrZXJzLm5ldD4KLURhdGU6ICAgVHVlIEp1biAyOCAxMzoxMToxOSAyMDExIC0wNzAwCi0KLSAgICBNZW50aW9uIHRoZSBHaXQgd2lraSBwYWdlCi0KLWNvbW1pdCA5YmM4MmU0Y2E0ODM3ZjAwMDcyZGJhODZiOTQ5N2EyNzE4NjkwOWY5Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBUdWUgSnVuIDI4IDE5OjEzOjM1IDIwMTEgKzAyMDAKLQotICAgIEFkZCAuZ2l0aWdub3JlCi0KLWNvbW1pdCBmMmRmOGEyYjAxNjVlMDEzN2ZkMDE3YjQxYzdkMDRlM2E1ZTE2OGU2Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8b3BlbnNvdXJjZUBoYXJkYWtlcnMubmV0PgotRGF0ZTogICBUdWUgSnVuIDI4IDA4OjI5OjA4IDIwMTEgLTA3MDAKLQotICAgIFdlJ3JlIG5vdyB1c2luZyBnaXQhCi0KLWNvbW1pdCA3ZDkxN2NmYzhmNzQ1NzQwMzI1NjQ4MTVhYjBmYjQ4M2I2OTE4NjRlCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKdW4gMjQgMTM6MDA6NTAgMjAxMSArMDAwMAotCi0gICAgdmVyc2lvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MjQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhMTYyZTkzMWYyOTkzMWNlMDNkNDBkNzNkZDk2OWY2MDg2MDgzYjgwCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKdW4gMjQgMTI6Mzg6MTQgMjAxMSArMDAwMAotCi0gICAgTWlzc2luZyBjaGVjayBmb3IgcnBtdHMuaAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUyMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDA3ODdmZjFmNjMyZTA4NDQwZThiYjI0MGRhYmNhNWM1ZTYzZmQ4MmQKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEp1biAyNCAxMjoyMDoyMCAyMDExICswMDAwCi0KLSAgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA0NTMwZDg3NzUzMTA4M2JmZmZkM2JiY2E0YTgyYzMwMDA5YmVmOGZkCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKdW4gMjQgMTI6MDg6MjMgMjAxMSArMDAwMAotCi0gICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA0OTU3NWYxMzZiNDBkMDhkMjFhMTY4YTBkNTQ1ZDg1ZjU5YzU4NzAxCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKdW4gMjQgMTI6MDI6MTUgMjAxMSArMDAwMAotCi0gICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTIwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNTk5ZTNjZGZmOWU3ODYyMjUzNTY4M2E2OWY0Mjk3N2RmNDA4OWJhOQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSnVuIDIzIDE1OjQxOjM4IDIwMTEgKzAwMDAKLQotICAgIFR3ZWFrIFJQTSBoYW5kbGluZyB0byB3b3JrIHdpdGggbGlicmFyeSB2ZXJzaW9uIDQuOQotICAgIEJhc2VkIG9uIGEgcGF0Y2ggYnkgSmFuIFNhZnJhbmVrCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTE5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNWMyYTY5MWJkMjllYTM0MzA0NmQyMTg2MjE1MDJhNjZiYzk2YTFiYgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDIyIDE0OjI3OjM5IDIwMTEgKzAwMDAKLQotICAgIFByb3ZpZGUgYSBmcmFtZXdvcmsgZm9yIHJlYWRpbmcgUlBNIHBhY2thZ2UgaW5mb3JtYXRpb24gZnJvbQotICAgIGEgY2FjaGUgZGlyZWN0b3J5IChyYXRoZXIgdGhhbiBxdWVyeWluZyB0aGUgUlBNZGIgZGlyZWN0bHkpLgotICAgIAotICAgIE15IGFwb2xvZ2llcyB0byBKZWZmIEpvaG5zb24gZm9yIHRoZSBkZWxheSBpbiBhZGRpbmcgdGhpcyBmdW5jdGlvbmFsaXR5LgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUxOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDI3MDc0MzVlZjVlMDExYzM2MzdmMzc5ODFjYmU0ZDUwZjJlNzI5ZGMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAyMiAxMzoyNjo0NSAyMDExICswMDAwCi0KLSAgICB2ZXJzaW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDUxNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDI3MmY5NmFlYzkzN2VkNzRjYzRkYjk4MDc0NWQyZGJlMDBjYTUzYTAKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAyMiAxMzowNjo0NSAyMDExICswMDAwCi0KLSAgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA1MTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5ZTQ3MWFkYzJhNDAyMTJiNGMwMTdjYmNlZDZlMjU4ODJlMzA2YTRkCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMjIgMTM6MDQ6MTIgMjAxMSArMDAwMAotCi0gICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNTE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzRhZDI3ODI0ZjljNmU5MWE5ZmMxMWQ2NjE5NjU2YzM2ZDVkNjYxMgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSnVuIDIxIDE0OjI4OjQ4IDIwMTEgKzAwMDAKLQotICAgIFByb3ZpZGUgYSBmcmFtZXdvcmsgZm9yIHJlYWRpbmcgUlBNIHBhY2thZ2UgaW5mb3JtYXRpb24gZnJvbQotICAgIGEgY2FjaGUgZGlyZWN0b3J5IChyYXRoZXIgdGhhbiBxdWVyeWluZyB0aGUgUlBNZGIgZGlyZWN0bHkpLgotICAgIAotICAgIE15IGFwb2xvZ2llcyB0byBKZWZmIEpvaG5zb24gZm9yIHRoZSBkZWxheSBpbiBhZGRpbmcgdGhpcyBmdW5jdGlvbmFsaXR5LgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDUxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDhhNWFjNzc1ZGU1NzU0MTYwNzA2NjVjMzBiYzNkNzczMzZlMTJiY2IKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEp1biAyMSAxNDoyODo0OCAyMDExICswMDAwCi0KLSAgICBQcm92aWRlIGEgZnJhbWV3b3JrIGZvciByZWFkaW5nIFJQTSBwYWNrYWdlIGluZm9ybWF0aW9uIGZyb20KLSAgICBhIGNhY2hlIGRpcmVjdG9yeSAocmF0aGVyIHRoYW4gcXVlcnlpbmcgdGhlIFJQTWRiIGRpcmVjdGx5KS4KLSAgICAKLSAgICBNeSBhcG9sb2dpZXMgdG8gSmVmZiBKb2huc29uIGZvciB0aGUgZGVsYXkgaW4gYWRkaW5nIHRoaXMgZnVuY3Rpb25hbGl0eS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA1MTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1OTQ5MzdkYjc1NWViMzgwZmNmNmNkMjIwY2U2MmY2ZTRhMzEwM2MzCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gSnVuIDE5IDA3OjUyOjI2IDIwMTEgKzAwMDAKLQotICAgIEZvbGxvdy11cCBmb3IgcjIwNTExOiByZWFsbHkgdXNlIHRoZSBwcm9wZXIgZm9ybWF0IHNwZWNpZmljYXRpb24uCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNTEyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNDUyNDI1NWJhNjA4M2QyNWMwM2Y2NDM2ZWNiZTM5ODgzNmY0YTBmOAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIEp1biAxOSAwNzo1MjoyNiAyMDExICswMDAwCi0KLSAgICBGb2xsb3ctdXAgZm9yIHIyMDUxMTogcmVhbGx5IHVzZSB0aGUgcHJvcGVyIGZvcm1hdCBzcGVjaWZpY2F0aW9uLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDUxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDEwNWRlMDIxOWNhMmFhNzllZDY1ODVmZjhkMGNlNDU1YTE4NmQxMGEKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKdW4gMTcgMTk6MDk6NTIgMjAxMSArMDAwMAotCi0gICAgRml4IGEgYnVnIGluIGEgZGVidWcgc3RhdGVtZW50IGludHJvZHVjZWQgYnkgcGF0Y2ggMzMxMDI1MCAvIHIyMDQ5NDogdXNlICVsZCB0byBwcmludCBhIHZhbHVlIG9mIHR5cGUgb2lkIGluc3RlYWQgb2YgJWQuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNTExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNjIxYzllZGExMjgyYjdmNTYyYjM3NzdiNWZiNTdmZDM1NWMxYTIwNgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEp1biAxNyAxOTowOTo1MiAyMDExICswMDAwCi0KLSAgICBGaXggYSBidWcgaW4gYSBkZWJ1ZyBzdGF0ZW1lbnQgaW50cm9kdWNlZCBieSBwYXRjaCAzMzEwMjUwIC8gcjIwNDk0OiB1c2UgJWxkIHRvIHByaW50IGEgdmFsdWUgb2YgdHlwZSBvaWQgaW5zdGVhZCBvZiAlZC4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA1MTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzYjNlOTdiMzA5YTUzNWRmMWE5OWIwMzY5Mzg2OTA1MDY0OWQ1M2EwCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSnVuIDE3IDE5OjA2OjQyIDIwMTEgKzAwMDAKLQotICAgIFVzZSAlcCB0byBwcmludCBhIHBvaW50ZXIgaW5zdGVhZCBvZiAlbGQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4NzhiY2Q4NzY0YmU1ZDE1OGQ2NWY0YjIwYTY4Y2IzYTk0OGRiZGRmCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSnVuIDE3IDE5OjA2OjQyIDIwMTEgKzAwMDAKLQotICAgIFVzZSAlcCB0byBwcmludCBhIHBvaW50ZXIgaW5zdGVhZCBvZiAlbGQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA1MTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3OTA5ZjYwZTJkZjA2ZDY1NTI2ZTk0MGVhMzI4NmMyNGJjMzZjN2ZmCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSnVuIDEwIDA2OjA1OjQzIDIwMTEgKzAwMDAKLQotICAgIEluY2x1ZGUgc3RkbGliLmggdG8gbWFrZSBkbWFsbG9jIGhhcHB5Ci0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNTAyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMTJmMjZjNWVlMDY4OTE0NGQ0NmJkMzRmMzZhMjgwNTIyMmQzNzYxZAotQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKdW4gOSAxNDozNTowOCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBCVUc6IDMxNTE4NDU6IGZpeCBtdWx0aXBsZSByZWdpc3RyYXRpb25zIG9mIHNubXAgdHJhbnNwb3J0IGhhbmRsZXIKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0OTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzNzRhZjA3NTg2NDRlOWFiY2M0OTk4ZmIyOTFjYTM3Mzg2OTA0OGY4Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSnVuIDMgMDY6MzA6MzMgMjAxMSArMDAwMAotCi0gICAgUmV2ZXJ0ZWQgcjIwMzYyOiB0aGF0IHBhdGNoIG1ha2VzIHNlbnNlIG9uIHRoZSB0cnVuayBhbmQgdGhlIDUuNiBicmFuY2ggYnV0IG5vdCBvbiB0aGUgNS41IG5vciBvbiB0aGUgNS40IGJyYW5jaC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0OTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA0ODUwODEyZjVhZmFhYTcyODZjY2I3YjgxYmMwNTIzZjJiN2RlMzdjCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDEgMjI6MjQ6MjMgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IHBhdGNoIDMzMTAyNTA6IGZyb20gZmVubmVyOiBtaXNjIGZpeGVzIGZvciBkZWJ1Z2dpbmcgb3V0cHV0IG9mIGFnZW50eAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ5NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDcxODkzNTZkODhiNGNiZDkyMGZkOTM0MTExZTRiNmQ2OTA1MTNmNTAKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMSAyMjoyNDoyMyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogcGF0Y2ggMzMxMDI1MDogZnJvbSBmZW5uZXI6IG1pc2MgZml4ZXMgZm9yIGRlYnVnZ2luZyBvdXRwdXQgb2YgYWdlbnR4Ci0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDk0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzljM2RiMTU3NTJkNmU0YjhiOTYwMGNkN2QxYThkNzlkNmQ4M2MzZQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDEgMTU6NTc6MTggMjAxMSArMDAwMAotCi0gICAgdmVyc2lvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwZWVmZWNjZjc2ZDYzMDc5NmI3YzhjNjRhMGUzM2QwMTc1MjYyZmNiCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMSAxNTo0ODo0OSAyMDExICswMDAwCi0KLSAgICB2ZXJzaW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ4NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDM1ZjBhMzgyMmFmOGYwMDg1NTI0MjkwNmIxMzJlNzAyZGU4OTkyMTMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAxIDE1OjQ3OjA0IDIwMTEgKzAwMDAKLQotICAgIG1ha2UgZGVwZW5kCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDg1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYjFlNWFjYmI2MDViZWQzMjEwYzdmNWRkYWVlZWYyYTA1MGNmNmJlYQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDEgMTU6NDI6MDAgMjAxMSArMDAwMAotCi0gICAgUmVpbnN0YXRlIGFuICJ1bnVzZWQiIGxhYmVsIHRoYXQgaXMgYWN0dWFsbHkgc3RpbGwgcmVxdWlyZWQuCi0gICAgKHJlZmVyZW5jZWQgaW4gbGluZSAyNzEwKQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ4NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDI0ODc1NzlkMWU5NzcxMzdkYzY0M2FjZWU3NjJhZWFhZmE2MGY0YmQKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAxIDE1OjMyOjIzIDIwMTEgKzAwMDAKLQotICAgIEZpeCB0eXBvCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDgzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgY2FjMTFhOTJjMDRhNWNjNTFlMjMxYmUwYWIxMTZkYjg1NTIyMWRlMQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDEgMTU6MDg6NTEgMjAxMSArMDAwMAotCi0gICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmYThlZTRmOTdjMmZhOGZiNmU1OWNmMDU1ZTBkODFhM2JkZWNmYjk3Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMSAxNDo1MToxNCAyMDExICswMDAwCi0KLSAgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4NjVjY2ZmMzIyMGQwMTdmM2VmM2I2MTlmMGY4ZjQ0N2QzMzUxNGViCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMSAxMDoxOTozMyAyMDExICswMDAwCi0KLSAgICB2ZXJzaW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ3OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDdiNjE5YjEwZTkxMmJkZDFjNzYzM2NlM2IxZTcyNTc0YzIzNDFjZTkKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAxIDEwOjAxOjAxIDIwMTEgKzAwMDAKLQotICAgIHZlcnNpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDc4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNTVmNmU4YzNhMGY3NzQxYmY4YTY4OWEwZmNmMDZjYzQ4MGFkMWVmZgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDEgMDk6NTQ6MDQgMjAxMSArMDAwMAotCi0gICAgbWFrZSBkZXBlbmQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBkN2EyNzNjY2JlZTU2OTAxZTg2NzlhMGRlMzJiYzZhYTE2ZDQ0YmY1Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMSAwOTowNjozMiAyMDExICswMDAwCi0KLSAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDEyNjM1MzU1MWY0OTM3ZjdjMGJjMWFhOGM4MGMyZDQ4ZDEzNDljOTMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAxIDA5OjAwOjI0IDIwMTEgKzAwMDAKLQotICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGViMDE1YzVkZmZkNDdhMzhjOTc3OTIzNjc2ZDFjNGVjOGI1N2JiZWMKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXkgMzEgMjI6NDk6MzIgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIIDMwNjY4NjI6IGZyb20gZmhldzogZml4IHRoZSBhZ2VudCBmb3IgY29tcGFyaW5nIHVuc2lnbmVkIGxhcmdlIGluZGV4ZXMgb2YgdGhlIGRpc2sgYW5kIGV4dGVuZCB0YWJsZXMuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDcxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgN2ZhMzBmY2UwOGFjNDk0YzM1OGU2YTMxYjk3MDJlMTJmZmViZDQ2MQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1heSAzMSAyMjo0OTozMiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0ggMzA2Njg2MjogZnJvbSBmaGV3OiBmaXggdGhlIGFnZW50IGZvciBjb21wYXJpbmcgdW5zaWduZWQgbGFyZ2UgaW5kZXhlcyBvZiB0aGUgZGlzayBhbmQgZXh0ZW5kIHRhYmxlcy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiNDFkNGFhZjdhMDZiNDVhOWVjMDdhNTUxMWJhYzViYWQ2ZmRkYTJhCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWF5IDMxIDIyOjQ5OjMyIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSCAzMDY2ODYyOiBmcm9tIGZoZXc6IGZpeCB0aGUgYWdlbnQgZm9yIGNvbXBhcmluZyB1bnNpZ25lZCBsYXJnZSBpbmRleGVzIG9mIHRoZSBkaXNrIGFuZCBleHRlbmQgdGFibGVzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ3MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDFhODQzODY1MDQwNWFlMzg0OTFmM2E1YzlhMmIxMGZjOTliMWI5YzIKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXkgMzEgMjI6NDk6MzIgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIIDMwNjY4NjI6IGZyb20gZmhldzogZml4IHRoZSBhZ2VudCBmb3IgY29tcGFyaW5nIHVuc2lnbmVkIGxhcmdlIGluZGV4ZXMgb2YgdGhlIGRpc2sgYW5kIGV4dGVuZCB0YWJsZXMuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDcxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYWIxNjgyOGFkNjljNTRlMDY4YzAzOGE5YTk0NDkxZmRiYzZlNzk5ZgotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXkgMzEgMTI6MzA6MzAgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkIGhyU1dSdW5QYXRoIG9mIHN3YXBwZWQtb3V0IHByb2Nlc3NlcyBvbiBMaW51eC4KLSAgICAKLSAgICBmZ2V0cygpIHJldHVybnMgTlVMTCBib3RoIHdoZW4gL3Byb2MvUElEL2NtZGxpbmUgaXMgZW1wdHkgKD0gc3dhcHBlZCBvdXQpIGFuZCB3aGVuIHRoZSBwcm9jZXNzIGV4aXRlZCBhZnRlciBmb3BlbigpLCBzbyBjaGVjayAvcHJvYy9QSUQvc3RhdHVzIGluIGJvdGggY2FzZXMuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzA3ZDU5YmQ5MmNjMzRiYzk2OTY0YjVlNzQzY2ZkZWU3OTg3NWI3YQotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXkgMzEgMTI6MzA6MzAgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkIGhyU1dSdW5QYXRoIG9mIHN3YXBwZWQtb3V0IHByb2Nlc3NlcyBvbiBMaW51eC4KLSAgICAKLSAgICBmZ2V0cygpIHJldHVybnMgTlVMTCBib3RoIHdoZW4gL3Byb2MvUElEL2NtZGxpbmUgaXMgZW1wdHkgKD0gc3dhcHBlZCBvdXQpIGFuZCB3aGVuIHRoZSBwcm9jZXNzIGV4aXRlZCBhZnRlciBmb3BlbigpLCBzbyBjaGVjayAvcHJvYy9QSUQvc3RhdHVzIGluIGJvdGggY2FzZXMuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYmE2ODgwNmRkMDY0ZjY1NTUzNmQ2ZjY5MzcxYzY5OWU2MTYyMDU2ZQotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXkgMzEgMTI6MzA6MzAgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkIGhyU1dSdW5QYXRoIG9mIHN3YXBwZWQtb3V0IHByb2Nlc3NlcyBvbiBMaW51eC4KLSAgICAKLSAgICBmZ2V0cygpIHJldHVybnMgTlVMTCBib3RoIHdoZW4gL3Byb2MvUElEL2NtZGxpbmUgaXMgZW1wdHkgKD0gc3dhcHBlZCBvdXQpIGFuZCB3aGVuIHRoZSBwcm9jZXNzIGV4aXRlZCBhZnRlciBmb3BlbigpLCBzbyBjaGVjayAvcHJvYy9QSUQvc3RhdHVzIGluIGJvdGggY2FzZXMuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOTFjZGI4MTViYjM2NTc1N2Y4NGMyMjM0ZDllNWY1NzYzYWM0YjA0ZgotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAyNiAxNjoxMjo0OCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogcGF0Y2ggMzI5OTM4NDogZml4IElORk9STXMgc28gdGhleSByZXRyeSBwcm9iaW5nIGZvciBhbiBlbmdpbmVJRC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxZDIwZDczM2YxNzQwNjI0N2M4MGMzMGM0N2I4ODI4MzllMGVhYzA0Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDI2IDE2OjEyOjQ4IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBwYXRjaCAzMjk5Mzg0OiBmaXggSU5GT1JNcyBzbyB0aGV5IHJldHJ5IHByb2JpbmcgZm9yIGFuIGVuZ2luZUlELgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGE1YTlkMWU4YTI0ZjAyZGZlNGU5N2FmMDRkNmY1ZTBiNTkwYTUyYWUKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMjYgMTY6MTI6NDggMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IHBhdGNoIDMyOTkzODQ6IGZpeCBJTkZPUk1zIHNvIHRoZXkgcmV0cnkgcHJvYmluZyBmb3IgYW4gZW5naW5lSUQuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDU4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNGI5NTZjNDcwYWM3ZTQ5Mzk5ZTdlMTIzOTc5OGUyYTA2MGZlNThiYQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAyNiAxNjoxMjo0OCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogcGF0Y2ggMzI5OTM4NDogZml4IElORk9STXMgc28gdGhleSByZXRyeSBwcm9iaW5nIGZvciBhbiBlbmdpbmVJRC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhOWJjMzRmNmY0NTBiNDc1MWRlZjhiODU3MmIyNWMwZjc5MThhZDVlCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDI2IDE2OjA2OjExIDIwMTEgKzAwMDAKLQotICAgIEFwcGxpZWQgKHJvdWdobHkpIHBhdGNoIDMyOTkzNzAgdG8gYXZvaWQgcmV3cml0aW5nIGV4aXN0aW5nIGF1dGhrZXkvcHJpdmtleS9ldGNzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDU3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMzc0YjgxZmZmZGE0NDZmNjQ5OWRlY2I2ZjA0OGIxOTIzOGE5ZjZiNAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAyNiAxNjowNjoxMSAyMDExICswMDAwCi0KLSAgICBBcHBsaWVkIChyb3VnaGx5KSBwYXRjaCAzMjk5MzcwIHRvIGF2b2lkIHJld3JpdGluZyBleGlzdGluZyBhdXRoa2V5L3ByaXZrZXkvZXRjcwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ1NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDFkMzMxMzc1ZDg2MjgyZTIzYjRhZTYwMjA1Mjc1M2FhNGE0Zjg3YWMKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMjYgMTY6MDY6MTEgMjAxMSArMDAwMAotCi0gICAgQXBwbGllZCAocm91Z2hseSkgcGF0Y2ggMzI5OTM3MCB0byBhdm9pZCByZXdyaXRpbmcgZXhpc3RpbmcgYXV0aGtleS9wcml2a2V5L2V0Y3MKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhYTVlYzhkMTlkZTI5NTE1MTAzMjYzOWUxMzhlOGI3NjU4Nzg2NmJjCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDI2IDE2OjA2OjExIDIwMTEgKzAwMDAKLQotICAgIEFwcGxpZWQgKHJvdWdobHkpIHBhdGNoIDMyOTkzNzAgdG8gYXZvaWQgcmV3cml0aW5nIGV4aXN0aW5nIGF1dGhrZXkvcHJpdmtleS9ldGNzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDU3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOTYyYzllYjM5NjU1NjNjNWEzMTNkNDFkODk5Mjk5OGQ3ZTYwMzM1MQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIE1heSAyNSAxOTo0NDoxNSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogcGF0Y2ggMzMwNjQ3NjogZnJvbSB0aW55cHlyYW1pZHM6IGZpeCBtZW1vcnkgbGVhayBpbiB0aGUgc3dydW4gY29udGFpbmVyIGxvYWRpbmcKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlYzJiYjQ0NTE5MDgwNTQ2NjlmZDJmYjFkNDQxMjZhNTc5MDU5ZTU1Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgTWF5IDI1IDE2OjE3OjA0IDIwMTEgKzAwMDAKLQotICAgIEZvbGxvdy11cCBmb3IgcjIwNDQ5OiB1c2UgTkVUU05NUF9QUklvICJ1IiBmb3IgcHJpbnRpbmcgc3ViaWRzIGluc3RlYWQgb2Ygb25seSBORVRTTk1QX1BSSW8uCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDUzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgODgwMTMyZGFmMmY1M2RhZGZlNDFiMjJhZDMyMmQ3MDY1MGE4MmNjMQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIE1heSAyNSAxMzowNzoyMyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBXaW4zMjogTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW86IExpbmsgd2l0aCBnZGkzMi5saWIgaWYgT3BlblNTTCBoYXMgYmVlbiBlbmFibGVkIGJlY2F1c2UgZ2RpMzIubGliIGlzIGEgZGVwZW5kZW5jeSBvZiBPcGVuU1NMLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ1MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDIzZWYyZjEwODQzYzlhODc3ODlhNjE0YWJkZjUyNjM1MGM0ZDg0NDMKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBNYXkgMjUgMTM6MDc6MjMgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogV2luMzI6IE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvOiBMaW5rIHdpdGggZ2RpMzIubGliIGlmIE9wZW5TU0wgaGFzIGJlZW4gZW5hYmxlZCBiZWNhdXNlIGdkaTMyLmxpYiBpcyBhIGRlcGVuZGVuY3kgb2YgT3BlblNTTC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5Yjg3MDM3MmI3NGE3YWY1Yjc3MjZhNjA1MWI0ZjNkYjUwNDNhNzdlCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgTWF5IDI1IDA5OjI0OjA4IDIwMTEgKzAwMDAKLQotICAgIEZvbGxvdy11cCBmb3IgcjIwNDQ4OiBzaW5jZSB0aGUgIm9pZCIgdHlwZWRlZiBoYXMgYmVlbiBjaGFuZ2VkIGJhY2sgZnJvbSB1aW50MzJfdCB0byB1X2xvbmcsIGNoYW5nZSBORVRTTk1QX1BSSW8gZnJvbSBORVRTTk1QX1BSSTMyIGludG8gImwiLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ1MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDg4NWQxZjU1Y2VmYTgyZDk1MzU2ZTNlMzVlY2FlODExNThhZjNiNTkKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBNYXkgMjUgMDk6MjE6MDUgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IFVzZSBwcm9wZXIgZm9ybWF0IHNwZWNpZmllciBpbiBkZWJ1ZyBzdGF0ZW1lbnRzIGZvciBwcmludGluZyB2YWx1ZXMgb2YgdHlwZSAnb2lkJy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NDkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3MjNiYzM4NzU3MTc1NzQyNmI4NjFiNmE4ODU0YTRiOGQ4OWRjZDE1Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgTWF5IDI1IDA5OjIxOjA1IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBVc2UgcHJvcGVyIGZvcm1hdCBzcGVjaWZpZXIgaW4gZGVidWcgc3RhdGVtZW50cyBmb3IgcHJpbnRpbmcgdmFsdWVzIG9mIHR5cGUgJ29pZCcuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDQ5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZGU4OTA4NzBkZTA4ZWFjZmIyNWFiODE4YzRkMTM1MmY1ZGNjMDljOQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIE1heSAyNSAwOToyMTowNSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogVXNlIHByb3BlciBmb3JtYXQgc3BlY2lmaWVyIGluIGRlYnVnIHN0YXRlbWVudHMgZm9yIHByaW50aW5nIHZhbHVlcyBvZiB0eXBlICdvaWQnLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ0OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDMwYjRjMzY0OTg4NzliNDkwYzE1ZDUwMDMwZDBiMmMxODgyMDI4MmQKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXkgMjQgMjM6NDk6NTcgMjAxMSArMDAwMAotCi0gICAgcmV2ZXJ0IE9JRCB0eXBlZGVmIHRvIHVfbG9uZyBhcyBhZ3JlZWQgdG8gb24gLWNvZGVycyBhbmQgaW4gdGhlIGFkbWluIG1lZXRpbmcKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NDggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwZjJlY2Q2ZjA1ZGVlMzdmOTNlYTlhOWFjOWU3Mjc2ZDZiNDc4ZGQwCi1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1heSAyNCAxMjo1MTozOSAyMDExICswMDAwCi0KLSAgICBBZGRlZCBOVUxMLWNoZWNrcyBhZnRlciBtYWxsb2MKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjODljOTViY2NkMTM4YmRhZWUzZTAxZjJkMGY2NjMzMjhlOGU3ZTg4Ci1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1heSAyNCAxMjo1MTozOSAyMDExICswMDAwCi0KLSAgICBBZGRlZCBOVUxMLWNoZWNrcyBhZnRlciBtYWxsb2MKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwNTg4NjIwNzA0MmFjMmM5MGFhMzE5MTY1NzgwZDE3Njc2ZWQ2OGY0Ci1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1heSAyNCAxMjo1MTozOSAyMDExICswMDAwCi0KLSAgICBBZGRlZCBOVUxMLWNoZWNrcyBhZnRlciBtYWxsb2MKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlM2IyMGNhYWJjMzEzZDg4OGNhNGNjOTU0NGU3ZWNmMmUxYWIwOWQ0Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBNYXkgMjIgMTk6MzQ6MTAgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogYWdlbnQ6IEJVRzogMzMwNTE1NzogRml4IGlwQWRkcmVzc1ByZWZpeCBoYW5kbGluZyBvZiBJUHY2IGFkZHJlc3NlcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ0NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDliMTI1YzcxM2JlMWVjY2E2M2YyYjE2OWQyYzEwZDFkMjRhMmQ0NzYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIE1heSAyMiAxOTozNDoxMCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBhZ2VudDogQlVHOiAzMzA1MTU3OiBGaXggaXBBZGRyZXNzUHJlZml4IGhhbmRsaW5nIG9mIElQdjYgYWRkcmVzc2VzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDQ1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMDQzMzE4ODJhMGM5ZGY3OWQ5MTM1NDU3MzgyYTI3MjVjMzAzMGY4MQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gTWF5IDIyIDE5OjA3OjU2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHB5dGhvbjogQlVHOiAzMjk1NDA3OiBGaXggaGFuZGxpbmcgb2Ygdm9pZCBwb2ludGVyCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDQ0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMjNhMmI5NDBlMjY1NjI2OGJlZjMwMDE1Zjc4MmVlNmQwMzhmOTI2NQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gTWF5IDIyIDE5OjA3OjU2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHB5dGhvbjogQlVHOiAzMjk1NDA3OiBGaXggaGFuZGxpbmcgb2Ygdm9pZCBwb2ludGVyCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDQ0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNmUyYmY5MWFiYTU2MmNjYWViMTMwNDE5ODkzYTcxNzBiYjIzMTJmOQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gTWF5IDIyIDE5OjA3OjU2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHB5dGhvbjogQlVHOiAzMjk1NDA3OiBGaXggaGFuZGxpbmcgb2Ygdm9pZCBwb2ludGVyCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDQ0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgY2FiYTY1MWY4NGY3MTAyY2JhMTgxZDE5NWI1OWM3OTc2OGQ5NDU2MQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gTWF5IDIyIDE4OjU3OjUzIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMzI2NDg1MjogUmVjb2duaXNlIG1pc3NpbmcgcmVwb3J0IHR5cGVzIChzbm1we1VuYXZhaWxhYmxlLFVua25vd259Q29udGV4dHMsc25tcFVua25vd25QRFVIYW5kbGVycykKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjNWE0NTgwYjkyNGVkNWM0OWNmZmQxYjdmZDhlOTMyZWQxNjhlY2RiCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBNYXkgMjIgMTg6NTc6NTMgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzMjY0ODUyOiBSZWNvZ25pc2UgbWlzc2luZyByZXBvcnQgdHlwZXMgKHNubXB7VW5hdmFpbGFibGUsVW5rbm93bn1Db250ZXh0cyxzbm1wVW5rbm93blBEVUhhbmRsZXJzKQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ0MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGE2Y2FkZDAwOThiMTZhMWU5ZmZhODEzODE4YjBlOWY4ZmJiYzBlYjgKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIE1heSAyMiAxODo1Nzo1MyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDMyNjQ4NTI6IFJlY29nbmlzZSBtaXNzaW5nIHJlcG9ydCB0eXBlcyAoc25tcHtVbmF2YWlsYWJsZSxVbmtub3dufUNvbnRleHRzLHNubXBVbmtub3duUERVSGFuZGxlcnMpCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDQzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOTg4MTUwMDNmMzQ1ZWNlOTNmY2Y4MzZmYjBjM2VhNTk5N2M4ZjkwMAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gTWF5IDIyIDE4OjU3OjUzIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMzI2NDg1MjogUmVjb2duaXNlIG1pc3NpbmcgcmVwb3J0IHR5cGVzIChzbm1we1VuYXZhaWxhYmxlLFVua25vd259Q29udGV4dHMsc25tcFVua25vd25QRFVIYW5kbGVycykKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzMDI0NWQwMGQzMGNmYzUyNjkzOWJiMmZmNzIxYjIwNzY1NDZlOGM3Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgMjAgMTU6NDE6MDYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzMjM0NzU0OiBFbnN1cmUgb2xkIGZfY3JlYXRlX2Zyb21fdHN0cmluZyBob29rIGlzIGluaXRpYWxpemVkIHRvIE5VTEwKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3ZDJmZTlkY2FlZGNhODY2Y2RjZTYxNzhiNjA2YjhmMDYxODliZjNhCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgMjAgMTU6NDE6MDYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzMjM0NzU0OiBFbnN1cmUgb2xkIGZfY3JlYXRlX2Zyb21fdHN0cmluZyBob29rIGlzIGluaXRpYWxpemVkIHRvIE5VTEwKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1NmM3NGM1YTQ5Mzg2MzMwYTU4MTU2NGE2ZWUxNTc5YmNmNmM1MDllCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgMjAgMTU6NDE6MDYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzMjM0NzU0OiBFbnN1cmUgb2xkIGZfY3JlYXRlX2Zyb21fdHN0cmluZyBob29rIGlzIGluaXRpYWxpemVkIHRvIE5VTEwKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA0NWI0YmQ1MzdiNjI3NTM0YjFjNjIxODIxOWZkNzcwZWI1YTRhMTU1Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDE5IDE5OjQ2OjIwIDIwMTEgKzAwMDAKLQotICAgIHVzZSAjaWZkZWYgcmF0aGVyIHRoYW4gI2lmIGZvciBkZWZpbmUgY2hlY2tzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDVjYzVhNGNkMGQ2NDg5MzVlYzc2ZTA5NjE2MjI5ZDBjZWViYzQxYTAKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTkgMTk6NDY6MjAgMjAxMSArMDAwMAotCi0gICAgdXNlICNpZmRlZiByYXRoZXIgdGhhbiAjaWYgZm9yIGRlZmluZSBjaGVja3MuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNTgzODJlNDg4NWYzODdlM2ZmY2I4ZmViYTkzNmE1NzhjNjk0NTllZQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxOSAxOTo0NjoyMCAyMDExICswMDAwCi0KLSAgICB1c2UgI2lmZGVmIHJhdGhlciB0aGFuICNpZiBmb3IgZGVmaW5lIGNoZWNrcy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiNTg4ZDFhMWRhNjgxYjI2ZjM1ZjJiYmYwNDkyMjQyY2Y0ZDgzYzk2Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDE5IDE5OjQ2OjIwIDIwMTEgKzAwMDAKLQotICAgIHVzZSAjaWZkZWYgcmF0aGVyIHRoYW4gI2lmIGZvciBkZWZpbmUgY2hlY2tzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDk4ZDYyMjNlMTBhZjBiMjA3Mzk1YzlhNzExOTBkZmY2ZmE4Nzk1OWMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxOSAxNzoxOTozMSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBtYW46IEJVRzogMzE5MDcyNTogRG9jdW1lbnQgc25tcHssX3Nlc3N9c3luY2hfcmVzcG9uc2UgYW5kIHNubXBfYXN5bmNfc2VuZAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ0MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGMyNmU3YTkzODUxZWQ2Nzg0NDdkYzMyYWI3MmZiYzFhMDA4YTEzNWQKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxOSAxNzoxOTozMSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBtYW46IEJVRzogMzE5MDcyNTogRG9jdW1lbnQgc25tcHssX3Nlc3N9c3luY2hfcmVzcG9uc2UgYW5kIHNubXBfYXN5bmNfc2VuZAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ0MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGFmM2RlYTExMGQwNzliZTE0NjhhYmM3ZTAxY2VjNmJlNmMxMWU5Y2YKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxOSAxNzoxOTozMSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBtYW46IEJVRzogMzE5MDcyNTogRG9jdW1lbnQgc25tcHssX3Nlc3N9c3luY2hfcmVzcG9uc2UgYW5kIHNubXBfYXN5bmNfc2VuZAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ0MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGMwMGY4OGYzMzg4OGVkZDQ4MGFjYzllYzkzMTJkNmI2MWUxNzBhNzYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxOSAxNzoxOTozMSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBtYW46IEJVRzogMzE5MDcyNTogRG9jdW1lbnQgc25tcHssX3Nlc3N9c3luY2hfcmVzcG9uc2UgYW5kIHNubXBfYXN5bmNfc2VuZAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDMyOTQ1YTdhMTY3YjRkNTZlMjk0MDYyNmI3MDlhYjExMTkwNWQyMWEKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDE5IDA4OjU1OjI2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCByYWNlIGNvbmRpdGlvbiBpbiBoclNXUnVuVGFibGUKLSAgICBUcmVhdCB0aGUgcmVhZHMgZnJvbSAvcHJvYy88cGlkPi8qIGNhcmVmdWx5LCBwcm9jZXNzZXMgY2FuIGV4aXQgaW4gdGhlIG1pZGRsZSBvZiBwcm9jZXNzaW5nLgotICAgIChhbHJlYWR5IGZpeGVkIGluIFY1LTUtcGF0Y2hlcyBhbmQgVjUtNC1wYXRjaGVzIGluIFNWTiByZXYuIDIwMTE1LCBkdW5ubyB3aHkgSSBkaWQgbm90IHBhdGNoIHRydW5rKQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQzOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDI3YTU1OTUzZjBiYjU3YWExYWVjY2Y3MThmMzRhN2Q0YWU2M2M0M2UKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxOSAwODoyNjo1NyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDMxODQ2OTc6IERvbid0IHJlZmVyZW5jZSBpbnRlcm5hbCBNRDUgd2hlbiBpdCdzIGV4cGxpY2l0bHkgZGlzYWJsZWQKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5MGVlNzgyY2E0ZWE4NTM0YjhiNDNmZjFkZDY3ZmJhN2Q1ZjU2OWUxCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gTWF5IDE1IDE2OjIxOjMxIDIwMTEgKzAwMDAKLQotICAgIEZvbGxvdy11cCBmb3IgcjIwNDMyOiB0ZXN0aW5nL1JVTlRFU1RTIHdpdGhvdXQgYXJndW1lbnRzIHdvcmtzIGFnYWluIGFzIGl0IHNob3VsZC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBkNWZhNzAxMzQyNjFhZjc4NDUzZjBlMDMxMjNjZmI1ZmEyOGNkNjYzCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgTWF5IDE0IDE5OjM4OjMwIDIwMTEgKzAwMDAKLQotICAgIEZpeGVkIGEgdHlwbyBpbiBhIGNvbW1lbnQuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDMzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMTkxY2RiN2IyYTZlOTg0MmFmMWI5M2I3NzJhOWZkY2JmNGMzNWEzMQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IE1heSAxNCAxOTozNjo1NiAyMDExICswMDAwCi0KLSAgICBSVU5URVNUUyB3b3JrcyBhZ2FpbiBmb3IgdGVzdHMgd2l0aCBhIGZvdXItZGlnaXQgbnVtYmVyLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQzMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDA0MWU2N2JmYmMwN2QyZjQ4ODRlNjMyZWVhYzcxYTk1Y2EzNTdlNTQKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBNYXkgMTQgMTg6NDc6NTYgMjAxMSArMDAwMAotCi0gICAgRG9jdW1lbnQgdGhhdCB0aGUgdWNkLXNubXAgZGlza2lvIGNvZGUgc3RpbGwgaGFzIHRvIGJlIG1vZGlmaWVkIHN1Y2ggdGhhdCBkaXNraW9fZnJlZV9jb25maWcoKSBnZXRzIGludm9rZWQgdXBvbiBTSUdIVVAuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDMwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgY2EwNTM5OTYwMjJlM2MxZGUzZTJkNWI1NThmYWRmNmQ3OWU5ZmRkMwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSAxMyAxMjowNToxOSAyMDExICswMDAwCi0KLSAgICBGb2xsb3ctdXAgZm9yIHIyMDQxNzogcmVwbGFjZWQgYSBtYWxsb2MoKS9mcmVlKCkgcGFpciBieSBhIGNhbGwgdG8gcmVhbGxvYygpLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQyNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDdmMTE1ZGY4MzM2ZTNiOWVhOTUyMzAwYjNkNGQxMDRlYjIxNDBjZGIKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgMTMgMTI6MDU6MTkgMjAxMSArMDAwMAotCi0gICAgRm9sbG93LXVwIGZvciByMjA0MTc6IHJlcGxhY2VkIGEgbWFsbG9jKCkvZnJlZSgpIHBhaXIgYnkgYSBjYWxsIHRvIHJlYWxsb2MoKS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MjQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwNjg2OTUyMDg1Njk3NmZmNDU5MGEwYmI2MWM0ZTk2ZjE2YzM1ZDZlCi1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxMiAxMTo0NzozNiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogRml4ZWQgbWVtb3J5IGxlYWsgaW4gVENQLU1JQiB0YWJsZXMgaW50cm9kdWNlZCBieSBwYXRjaCAjMzA1MzQzNi4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0MjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwNWQzZDNhODIzMTFiZjliNTUzODYyMTZmMTg4MTk4Y2Q4NDlmZmYxCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDEyIDA5OjAzOjAyIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gc25tcF9mcmVlX3Nlc3Npb24oKS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0MTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA0ZTk0YWI3ZjBjNjUwOWI2MjgyZWVmYzg4OGFiMGRjZjc4ZTU3NWE2Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDEyIDA5OjAzOjAyIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gc25tcF9mcmVlX3Nlc3Npb24oKS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0MTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmZjAzYmZhZDZkMGNjNTRlNThjZWU0ZDRmOGY2N2ZlMTI5MTA1MThjCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDEyIDA5OjAzOjAyIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gc25tcF9mcmVlX3Nlc3Npb24oKS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjYzc4ZDA2MjM5NzU1YzZlYmI4MzE5MDNiNmNlZGQzZTFkYmFiNTgzCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDEyIDA4OjI1OjMzIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IF9taWJpbmRleF9hZGQoKSBubyBsb25nZXIgcmVhZHMgcGFzdCB0aGUgZW5kIG9mIHRoZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYXJyYXkgX21pYmluZGV4ZXMuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDE3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOTI0Y2JlM2Q2OTNhNzkzYzIwNTM2ZTgwZTkxNTEwYzk1OWFjYzlhNwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxMiAwODoyNTozMyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBfbWliaW5kZXhfYWRkKCkgbm8gbG9uZ2VyIHJlYWRzIHBhc3QgdGhlIGVuZCBvZiB0aGUgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGFycmF5IF9taWJpbmRleGVzLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQxNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGFkY2VkNGE4NDg3NmEyZTNjYjg2ODdiNWZmYTU4MzBhM2I1MDAzYWEKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTIgMDg6MTI6NDcgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogV2luMzI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJIGlwTmV0VG9NZWRpYVRhYmxlLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQxNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGYwMDEyZGVjMmM5OGJhZjFjMGUyNWZhMTdkNWJmODliYWNkMGE0YTQKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTIgMDg6MTI6NDcgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogV2luMzI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJIGlwTmV0VG9NZWRpYVRhYmxlLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQxNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDhkODNmOTUzODFjODE5MGU2NGM4OWQyMGI3NmM0NmFkMzg4YzQyMWMKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTIgMDg6MTI6NDcgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogV2luMzI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJIGlwTmV0VG9NZWRpYVRhYmxlLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQxNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDhlY2QyOThkYmNjZWUxZTMyN2NlNjU4NTJmOTg5MjhkN2JjMDQxZDcKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTIgMDg6MDg6NDEgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogV2luMzI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJIGlmVGFibGUuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZDk2MmZkYTY3NzgxNGI2MzQyYWQxYjljM2ZhODQyMjViNTU1Y2RhMgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxMiAwODowODo0MSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkgaWZUYWJsZS4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0MTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjYTM4OTQyOTA4YWM3NGZkZjFmMWYxZGU3NzljYTVjZGQ0ZGVmYTJkCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDEyIDA4OjA4OjQxIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IFdpbjMyOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHRoZSBOZXQtU05NUCAobm9uLXdpbkV4dERMTCkgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1JQi1JSSBpZlRhYmxlLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGFhMDMyNzY5YmMzZGE4MzAyYzM4ZGQ5ZDYyZDUzZjdmMDU0ZWIyYzcKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTIgMDc6MzM6MDIgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogV2luMzI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJIGlwQWRkclRhYmxlLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDRmZmE5MDhkMDJjZmFkOWZmMzFhMjAxODE5MmQ0YWQ1Zjk1OTQ2N2MKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTIgMDc6MzM6MDIgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogV2luMzI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJIGlwQWRkclRhYmxlLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGEyMWJkZjcxNjQ0OTBmMjFmN2VlMWQzZGZlYzZhOWQzOGUyNGRkNzgKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTIgMDc6MzM6MDIgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogV2luMzI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJIGlwQWRkclRhYmxlLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDI3MTkxNDUxMmRjODI2OGQ4YmM0OWJhN2VjMzhjYzJhY2VjNjU2YzMKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTIgMDY6NTQ6MzMgMjAxMSArMDAwMAotCi0gICAgRG9jdW1lbnRhdGlvbiAvIHNvdXJjZSBjb2RlIGNvbW1lbnQgc3BlbGxpbmcgZml4OiBleGl0ZW50IC0+IGV4aXN0ZW50LgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGMwMDljMTJkNzJiYmMyZTI3OTVkM2E2YjIyY2FiNmJhMDZlNDg1MzUKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTIgMDY6NTQ6MzMgMjAxMSArMDAwMAotCi0gICAgRG9jdW1lbnRhdGlvbiAvIHNvdXJjZSBjb2RlIGNvbW1lbnQgc3BlbGxpbmcgZml4OiBleGl0ZW50IC0+IGV4aXN0ZW50LgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDZjOGFlZTdmOGEzNGQ3ZGEyMjlmNDU5MDhjOGYzMzFlNzI1NDQyMmUKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTIgMDY6NTQ6MzMgMjAxMSArMDAwMAotCi0gICAgRG9jdW1lbnRhdGlvbiAvIHNvdXJjZSBjb2RlIGNvbW1lbnQgc3BlbGxpbmcgZml4OiBleGl0ZW50IC0+IGV4aXN0ZW50LgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGMyZDM1YmQ1YzMyMmQ3YTg1MzZhMWZmMzFkNzNlNDFmNzdjODViOTcKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXkgMTAgMTU6MDI6NTEgMjAxMSArMDAwMAotCi0gICAgTWluR1c6IGF2b2lkIHRoYXQgZ2NjIGNvbXBsYWlucyBhYm91dCBwYXNpbmcgYSAoY2hhciAqKSBhcmd1bWVudCB3aGlsZSAodW5zaWduZWQgY2hhciAqKSBpcyBleHBlY3RlZC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0MDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzZGJlMjc3OTlhM2YwNjViYmYyMTI1OTk0NjY5NjliZWI3MjY5MGQyCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWF5IDEwIDE1OjAyOjUxIDIwMTEgKzAwMDAKLQotICAgIE1pbkdXOiBhdm9pZCB0aGF0IGdjYyBjb21wbGFpbnMgYWJvdXQgcGFzaW5nIGEgKGNoYXIgKikgYXJndW1lbnQgd2hpbGUgKHVuc2lnbmVkIGNoYXIgKikgaXMgZXhwZWN0ZWQuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDAyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMTkzZTM5ODQ5MjRiZGVhOWJiYjcwMzA4MDYyYmFlZTM3MzJhYmJhNAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1heSAxMCAxNTowMjo1MSAyMDExICswMDAwCi0KLSAgICBNaW5HVzogYXZvaWQgdGhhdCBnY2MgY29tcGxhaW5zIGFib3V0IHBhc2luZyBhIChjaGFyICopIGFyZ3VtZW50IHdoaWxlICh1bnNpZ25lZCBjaGFyICopIGlzIGV4cGVjdGVkLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQwMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDk0YjUyMzhkODhhMDI3MzA2YWE5MTE1NzU4MTExYzc4NWE0YWJhZDgKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBNYXkgOSAyMDo1MjowMSAyMDExICswMDAwCi0KLSAgICBVc2Ugc3ltYm9saWMgbmFtZWQgZm9yIGlmVHlwZSB2YWx1ZXMKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwNGI4ZTI3OWE3YTc4NWE3NmViZjRiNjU3NWY0MWNlNjI5OTQ1MmM2Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gTWF5IDkgMjA6NTI6MDEgMjAxMSArMDAwMAotCi0gICAgVXNlIHN5bWJvbGljIG5hbWVkIGZvciBpZlR5cGUgdmFsdWVzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgM2RjYmZkZDRmMWZmZWFkNTUyNDE0OWI0ZWZiMDAxMjg2ODhlMTUwNQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIE1heSA5IDIwOjUyOjAxIDIwMTEgKzAwMDAKLQotICAgIFVzZSBzeW1ib2xpYyBuYW1lZCBmb3IgaWZUeXBlIHZhbHVlcwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDM3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGY2NTg2YWVjZmEyZDJiYzQ5ZGVmZDNkMjFmNDcxYWE5YTNjNTQzNmQKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBNYXkgOSAyMDo1MjowMSAyMDExICswMDAwCi0KLSAgICBVc2Ugc3ltYm9saWMgbmFtZWQgZm9yIGlmVHlwZSB2YWx1ZXMKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1ZDMzOGY3Yjk0NTkzNDZjYzBjMjU1YWJiNzFlMDkzZmYzZWFhODM4Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gTWF5IDkgMjA6NDM6NTEgMjAxMSArMDAwMAotCi0gICAgSUFOQSBoYXMgZml4ZWQgdGhlIElBTkEtSVBQTS1NRVRSSUNTLVJFR0lTVFJZLU1JQgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDM3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDViYjFjOWE4ZmRjNDdiM2VmMzU1Y2I0MmU5ZTE4YWQ4OGNlNDk2ZmIKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBNYXkgOCAyMDowMToyNiAyMDExICswMDAwCi0KLSAgICBGaXggd2FybmluZ3MgYW5kIGRhdGEgZm9ybWF0IGZvciBEYXRlQW5kVGltZSBvYmplY3RzLgotICAgIFRoZXNlIG1vZHVsZXMgd29yaywgYnV0OgotICAgIC0gVGhleSBhcmUgTGludXggb25seQotICAgIC0gUm93cyBtdXN0IGJlIGNyZWF0ZWQgd2l0aCByb3dTdGF0dXMgY3JlYXRlQW5kV2FpdCBiZWZvcmUgdGhleSBhcmUgcG9wdWxhdGVkCi0gICAgLSBBZ2VudCBtdXN0IHJ1biBhcyByb290Ci0gICAgLSBBZ2VudCBpcyBibG9ja2VkIHdoaWxlIHRlc3RzIHJ1bgotICAgIC0gRGF0YSBmb3JtYXQgZm9yIEluZXRBZGRyZXNzIG9iamVjdHMgaXMgd3JvbmcuIEl0IGlzIEFTQ0lJLCBub3QgYmluYXJ5Ci0gICAgICAobWFraW5nIGl0IGVhc2llciB0byB1c2UgZnJvbSB0aGUgY29tbWFuZCBsaW5lLCBidXQgLi4uKQotICAgIAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDM2MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGRiYjg3OTVhN2RmNTk1ZjA2MDNmMmVjNjE3MDQ3OTlmNGM0ODI2NjcKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBNYXkgOCAyMDowMToyNiAyMDExICswMDAwCi0KLSAgICBGaXggd2FybmluZ3MgYW5kIGRhdGEgZm9ybWF0IGZvciBEYXRlQW5kVGltZSBvYmplY3RzLgotICAgIFRoZXNlIG1vZHVsZXMgd29yaywgYnV0OgotICAgIC0gVGhleSBhcmUgTGludXggb25seQotICAgIC0gUm93cyBtdXN0IGJlIGNyZWF0ZWQgd2l0aCByb3dTdGF0dXMgY3JlYXRlQW5kV2FpdCBiZWZvcmUgdGhleSBhcmUgcG9wdWxhdGVkCi0gICAgLSBBZ2VudCBtdXN0IHJ1biBhcyByb290Ci0gICAgLSBBZ2VudCBpcyBibG9ja2VkIHdoaWxlIHRlc3RzIHJ1bgotICAgIC0gRGF0YSBmb3JtYXQgZm9yIEluZXRBZGRyZXNzIG9iamVjdHMgaXMgd3JvbmcuIEl0IGlzIEFTQ0lJLCBub3QgYmluYXJ5Ci0gICAgICAobWFraW5nIGl0IGVhc2llciB0byB1c2UgZnJvbSB0aGUgY29tbWFuZCBsaW5lLCBidXQgLi4uKQotICAgIAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDM2MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGU5YWM4NjI3OGMzNTg4MDIyOTE0NzU4YTM0NWZiOTgyYmI1ZDRlYzQKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBNYXkgOCAyMDowMToyNiAyMDExICswMDAwCi0KLSAgICBGaXggd2FybmluZ3MgYW5kIGRhdGEgZm9ybWF0IGZvciBEYXRlQW5kVGltZSBvYmplY3RzLgotICAgIFRoZXNlIG1vZHVsZXMgd29yaywgYnV0OgotICAgIC0gVGhleSBhcmUgTGludXggb25seQotICAgIC0gUm93cyBtdXN0IGJlIGNyZWF0ZWQgd2l0aCByb3dTdGF0dXMgY3JlYXRlQW5kV2FpdCBiZWZvcmUgdGhleSBhcmUgcG9wdWxhdGVkCi0gICAgLSBBZ2VudCBtdXN0IHJ1biBhcyByb290Ci0gICAgLSBBZ2VudCBpcyBibG9ja2VkIHdoaWxlIHRlc3RzIHJ1bgotICAgIC0gRGF0YSBmb3JtYXQgZm9yIEluZXRBZGRyZXNzIG9iamVjdHMgaXMgd3JvbmcuIEl0IGlzIEFTQ0lJLCBub3QgYmluYXJ5Ci0gICAgICAobWFraW5nIGl0IGVhc2llciB0byB1c2UgZnJvbSB0aGUgY29tbWFuZCBsaW5lLCBidXQgLi4uKQotICAgIAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDM2MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGM0ZjVkOWI5NGI0ODk1YmI5YzlhMDUwYjFhODhiMjAxZjkwMWY5NzMKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBNYXkgOCAyMDowMToyNiAyMDExICswMDAwCi0KLSAgICBGaXggd2FybmluZ3MgYW5kIGRhdGEgZm9ybWF0IGZvciBEYXRlQW5kVGltZSBvYmplY3RzLgotICAgIFRoZXNlIG1vZHVsZXMgd29yaywgYnV0OgotICAgIC0gVGhleSBhcmUgTGludXggb25seQotICAgIC0gUm93cyBtdXN0IGJlIGNyZWF0ZWQgd2l0aCByb3dTdGF0dXMgY3JlYXRlQW5kV2FpdCBiZWZvcmUgdGhleSBhcmUgcG9wdWxhdGVkCi0gICAgLSBBZ2VudCBtdXN0IHJ1biBhcyByb290Ci0gICAgLSBBZ2VudCBpcyBibG9ja2VkIHdoaWxlIHRlc3RzIHJ1bgotICAgIC0gRGF0YSBmb3JtYXQgZm9yIEluZXRBZGRyZXNzIG9iamVjdHMgaXMgd3JvbmcuIEl0IGlzIEFTQ0lJLCBub3QgYmluYXJ5Ci0gICAgICAobWFraW5nIGl0IGVhc2llciB0byB1c2UgZnJvbSB0aGUgY29tbWFuZCBsaW5lLCBidXQgLi4uKQotICAgIAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDM2MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGUzZGI5NWUxNjE5ZGQ1N2RmYjU1YWM3NDk0ZjQ4ZDJhZGQ1NmQ5NzMKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBNYXkgNyAxNToyMjoyNyAyMDExICswMDAwCi0KLSAgICBSZW1vdmVkIGFuIHVudXNlZCBsYWJlbCBmcm9tIHBlcmwvU05NUC9TTk1QLnhzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDM2MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGVhOGNlMDA3NDRlODMyMzNkODU0Mzg1MmY4ODRhYTAzN2MxMTgzYTIKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBNYXkgNyAxNToyMjoyNyAyMDExICswMDAwCi0KLSAgICBSZW1vdmVkIGFuIHVudXNlZCBsYWJlbCBmcm9tIHBlcmwvU05NUC9TTk1QLnhzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDM2MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDA5OTk0NWJiMmY4MmVhNmNiNTAzYzc0ODZjNjRiZTA4NzE2NDEyM2QKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBNYXkgNyAxNToyMjoyNyAyMDExICswMDAwCi0KLSAgICBSZW1vdmVkIGFuIHVudXNlZCBsYWJlbCBmcm9tIHBlcmwvU05NUC9TTk1QLnhzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDM2MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGU2YTFiZGFlNGY3YmY2MjVhYjYwN2I0ZjI4MDc0NzBjZDI3Nzc3NzEKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBNYXkgNyAxMzoxNTo0NCAyMDExICswMDAwCi0KLSAgICBXaW4zMjogaW1wcm92ZWQgc291cmNlIGNvZGUgY29uc2lzdGVuY3kgYnkgdXNpbmcgTFBDVFNUUiBpbnN0ZWFkIG9mIExQQ1NUUi4gTm90ZTogdGhpcyBkb2VzIG5vdCBtZWFuIHRoYXQgVW5pY29kZSBidWlsZHMgYXJlIHN1cHBvcnRlZC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzNTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA0ZWJmY2VhNDE5NjRhODc0MmEwMmM2ODc4NTEyNGJjMjRkYTUwNmJlCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgTWF5IDcgMTM6MTE6NDQgMjAxMSArMDAwMAotCi0gICAgUmV2ZXJ0ZWQgYSBjaGFuZ2UgdGhhdCB3YXMgY29tbWl0dGVkIGFjY2lkZW50YWxseSBpbiByMjAyNzYuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzU2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgODE4NmNmM2MzZmNjZDAyMjZhMDc2MTQ2NTlmM2U4ZmM3ZDNhZWI3YQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IE1heSA3IDEyOjU0OjExIDIwMTEgKzAwMDAKLQotICAgIEZpeGVkIHR3byBjb21waWxlciB3YXJuaW5ncy4KLSAgICAoQmFja3BvcnRlZCByMjAyMzYgZnJvbSB0aGUgdHJ1bmsuKQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDM1NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGM3NmUyYzc2OTg1YWI3YTQwZDZkYmVmZDJlNDczMjM4NTc2NDk3MzUKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBNYXkgNyAxMjo1MTowNCAyMDExICswMDAwCi0KLSAgICBDb21tZW50ZWQgb3V0IGFuIHVudXNlZCBmdW5jdGlvbiBiZWNhdXNlIHRoZSBjb21waWxlciBjb21wbGFpbmVkIGFib3V0IGl0LgotICAgIChCYWNrcG9ydGVkIHIyMDIzNyBmcm9tIHRoZSB0cnVuay4pCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzU0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYTU4OTY5ZWRkYjNiNjY5ODc3ZDcyMjlmNzE5MDg3YmJkNzI3ZDAzMwotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSA2IDIxOjMyOjAxIDIwMTEgKzAwMDAKLQotICAgIE5FV1M6IFBBVENIIDMxOTg3ODE6IGZyb20gZmVubmVyOiBHZXQgZGlzbWFuL3BpbmcgYW5kIGRpc21hbi90cmFjZXJvdXRlIHRvIGF0IGxlYXN0IGNvbXBpbGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzNTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyY2NhNjEyNWQ1MzhmYWE5YjUxYjc3MjE0MWYxOTJkN2I2M2NjMGNiCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDYgMjE6MzI6MDEgMjAxMSArMDAwMAotCi0gICAgTkVXUzogUEFUQ0ggMzE5ODc4MTogZnJvbSBmZW5uZXI6IEdldCBkaXNtYW4vcGluZyBhbmQgZGlzbWFuL3RyYWNlcm91dGUgdG8gYXQgbGVhc3QgY29tcGlsZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDM1MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGIxZTc2YmVmODFiZmNlMTZjOGQwYmMwMWU4NTZjYjRjNzU5MzBiNWMKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgNiAyMTozMjowMSAyMDExICswMDAwCi0KLSAgICBORVdTOiBQQVRDSCAzMTk4NzgxOiBmcm9tIGZlbm5lcjogR2V0IGRpc21hbi9waW5nIGFuZCBkaXNtYW4vdHJhY2Vyb3V0ZSB0byBhdCBsZWFzdCBjb21waWxlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZDBmMjJkZDEwYjdhMGQzZGJmNzk1YzJkNDhlM2ZhOTYzNjZhZWYxYgotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSA2IDIxOjMyOjAxIDIwMTEgKzAwMDAKLQotICAgIE5FV1M6IFBBVENIIDMxOTg3ODE6IGZyb20gZmVubmVyOiBHZXQgZGlzbWFuL3BpbmcgYW5kIGRpc21hbi90cmFjZXJvdXRlIHRvIGF0IGxlYXN0IGNvbXBpbGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzNTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmY2I4YThkMjdjMmNjMzc5ZGNlMjYzZGJlZTY3MjBkN2I0ZTAyZDc0Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgNiAxNzo0NjoyOSAyMDExICswMDAwCi0KLSAgICB2ZXJzaW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDM0NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDUxNWFmOTljYjllNmEzYjA5MjNlNjUwNDY2Zjc0NDY0ZTNiOWI1ZjYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSA2IDE3OjM3OjU5IDIwMTEgKzAwMDAKLQotICAgIHZlcnNpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzQ2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNmY5MjdmZDczYWYyYTRjZWI2N2ZjNDA5MDgyNmEyODRhN2U2ZmMxOQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDYgMTc6MzU6NTAgMjAxMSArMDAwMAotCi0gICAgbWFrZSBkZXBlbmQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4MDgwYTgxODllZDdlZTczY2EzMjE4YzgyODBjNjg3MTdkNDUzNWRlCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgNiAxNzoyMjoxNCAyMDExICswMDAwCi0KLSAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDM0NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDYyZmI5M2UyODcyOGIwZTkzYzEzNGM4OGI2NWIxZDQ1M2I2ZTg5YzIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSA2IDE3OjE3OjQ2IDIwMTEgKzAwMDAKLQotICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDM0MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDc0ZTEzY2M5NWJlZTQ2NTVkZjIzYmE1MTRiZDI2NTc4ODZjOWU0YjYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSA2IDE0OjIzOjI0IDIwMTEgKzAwMDAKLQotICAgIHZlcnNpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMzQwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNzkzMTg3YWFhMDRjODgxZjZiNTdmY2YzNjEyOTZiNTJhOTQwZTFmOAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDYgMTQ6MjE6NDUgMjAxMSArMDAwMAotCi0gICAgdmVyc2lvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzMzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxNDY2ZTE1ZTUyMzgwOTY1Zjg0NGM2ZDk4YjNlYjI1Nzg5OWE0Y2UyCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgNiAxNDoxOTo1NyAyMDExICswMDAwCi0KLSAgICBtYWtlIGRlcGVuZAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDMzOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGRlYzdkNDdjYTM3NjdjMzdkMTc5ODFmMWNmOWU1ODBhZTJmZTAyMTQKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSA2IDE0OjAyOjA0IDIwMTEgKzAwMDAKLQotICAgIGRvY3VtZW50YXRpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMzM3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMGVjMWM5MjkxNjdhZGIzZDk2YjQxZWFjMjQzNTM0OTZjMzM3MWIwOAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDYgMTM6NTk6MjAgMjAxMSArMDAwMAotCi0gICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMzM2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMWEwMTQ1MjljNWM0YTA3Yzg0MDdlOTU1YTdmMWZlNjg2Y2I3ZWU3YwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDYgMTM6NTA6MDYgMjAxMSArMDAwMAotCi0gICAgRml4IGluY29tcGxldGUgdW5pbnN0YWxsIGNvbmZpZ3VyYXRpb246Ci0gICAgLSBicm9rZW4gcmVtb3ZhbCBvZiBNaWNyb3NvZnQgRExMCi0gICAgLSByZW1vdmUgYXNzb3J0ZWQgbmV3IE1JQnMgYW5kIGhlYWRlciBmaWxlcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDMzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDFkMDkxYzU3OTI4MjZlMzllYzcyYjZiYmZiNWM3MDc3YTRhN2Q4ZWIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSA2IDEzOjUwOjA2IDIwMTEgKzAwMDAKLQotICAgIEZpeCBpbmNvbXBsZXRlIHVuaW5zdGFsbCBjb25maWd1cmF0aW9uOgotICAgIC0gYnJva2VuIHJlbW92YWwgb2YgTWljcm9zb2Z0IERMTAotICAgIC0gcmVtb3ZlIGFzc29ydGVkIG5ldyBNSUJzIGFuZCBoZWFkZXIgZmlsZXMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzMzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBkYWMxMDJiZDViNjNhMjExODFhODAzMGFkYWY1ZmY5NmI5ZjgyNmMzCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgNiAxMzo1MDowNiAyMDExICswMDAwCi0KLSAgICBGaXggaW5jb21wbGV0ZSB1bmluc3RhbGwgY29uZmlndXJhdGlvbjoKLSAgICAtIGJyb2tlbiByZW1vdmFsIG9mIE1pY3Jvc29mdCBETEwKLSAgICAtIHJlbW92ZSBhc3NvcnRlZCBuZXcgTUlCcyBhbmQgaGVhZGVyIGZpbGVzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzM1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZmMzYjQxNjc5NGNmNzI5MjJmOGIyZDYzNmJiZWQzNzdjYTFhMzZlZAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDYgMTM6NTA6MDYgMjAxMSArMDAwMAotCi0gICAgRml4IGluY29tcGxldGUgdW5pbnN0YWxsIGNvbmZpZ3VyYXRpb246Ci0gICAgLSBicm9rZW4gcmVtb3ZhbCBvZiBNaWNyb3NvZnQgRExMCi0gICAgLSByZW1vdmUgYXNzb3J0ZWQgbmV3IE1JQnMgYW5kIGhlYWRlciBmaWxlcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDMzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGYzYjEzNzI1YjdiZDY0YWM5NDhkOTcwZDlmZTk2NTI5ODhlYTQxMTgKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSA2IDEyOjU4OjI4IDIwMTEgKzAwMDAKLQotICAgIFN1cHBvcnQgVGFyL0daaXAgY29tbWFuZCBwYXRocyBjb250YWluaW5nIHNwYWNlcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDMzNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDI0ZWJmYTQ4MjA0ZjgzODQ2YTcxNjYyZGI5MjFkODNjOTczMGJkNmEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSA2IDEyOjU4OjI4IDIwMTEgKzAwMDAKLQotICAgIFN1cHBvcnQgVGFyL0daaXAgY29tbWFuZCBwYXRocyBjb250YWluaW5nIHNwYWNlcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDMzNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGVlYzE3ODc2YTY1M2ZkMDUyZmY2MjQyNGE4Nzk1OGZhOGQwMjk0NDIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSA2IDEyOjU3OjA3IDIwMTEgKzAwMDAKLQotICAgIFJlcG9ydCBHWmlwIGNvbW1hbmQgY29ycmVjdGx5Ci0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzMzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMmE0YzJhYTE3YzFhYWIxOWY3YmQyYzBjZmMxMjExYTcxNGNjMmE1NQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDYgMTI6NTc6MDcgMjAxMSArMDAwMAotCi0gICAgUmVwb3J0IEdaaXAgY29tbWFuZCBjb3JyZWN0bHkKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzMzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3MTA0MzRjNGU3NTExZTI2NmI3ZWVkNWFmNTMyZTIzZGM0OTVjOTdhCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDUgMjE6NDg6MjQgMjAxMSArMDAwMAotCi0gICAgRml4IGZvciBEcmFnb25GbHkgQlNEIChkb2VzIG5vdCBkZWZpbmUgSVBfU0VORFNSQ0FERFIpCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzMyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgN2Y3Y2Q3OTZlMDhkOTQyMWYwYzkwN2E5N2VjODk2MzZhOTc1NmE4OAotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSA1IDIwOjI5OjM4IDIwMTEgKzAwMDAKLQotICAgIEZpeCBzcGVsbGluZyBvZiBTT19SRUNWRFNUQUREUgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDMzMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGMxZmIzNzIyOTE0NzQxZmE5OThlNmI3Y2VlOWNlOGUwN2NkNDcwMGUKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgNSAwNjowNzo1MSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBNaW5HVzogTWFkZSByZWdyZXNzaW9uIHRlc3Qgb3V0cHV0IGluZGVwZW5kZW50IG9mIHRoZSBOZXQtU05NUCB2YXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeS4gU29tZSB0ZXN0cyB0aGF0IGZhaWxlZCBwcmV2aW91c2x5IGFmdGVyIHRoZSBOZXQtU05NUCBiaW5hcmllcyAoTVNWQyBidWlsZCkgaGFkIGJlZW4gaW5zdGFsbGVkIGRvIG5vdyBwYXNzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDMyOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGJjNTI1OGRlMjAzMDIyOGIzNjllMTNkMmE0NzQ4Yzg1N2EwYTRiNWUKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgNSAwNjowNzo1MSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBNaW5HVzogTWFkZSByZWdyZXNzaW9uIHRlc3Qgb3V0cHV0IGluZGVwZW5kZW50IG9mIHRoZSBOZXQtU05NUCB2YXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeS4gU29tZSB0ZXN0cyB0aGF0IGZhaWxlZCBwcmV2aW91c2x5IGFmdGVyIHRoZSBOZXQtU05NUCBiaW5hcmllcyAoTVNWQyBidWlsZCkgaGFkIGJlZW4gaW5zdGFsbGVkIGRvIG5vdyBwYXNzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDMyOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDM3OWNkZjNhOTZjZjI3ZjQ3ZjQxMTIyM2I1M2Y4MDA1ZjA0MzJhMTEKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgNSAwNjowNzo1MSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBNaW5HVzogTWFkZSByZWdyZXNzaW9uIHRlc3Qgb3V0cHV0IGluZGVwZW5kZW50IG9mIHRoZSBOZXQtU05NUCB2YXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeS4gU29tZSB0ZXN0cyB0aGF0IGZhaWxlZCBwcmV2aW91c2x5IGFmdGVyIHRoZSBOZXQtU05NUCBiaW5hcmllcyAoTVNWQyBidWlsZCkgaGFkIGJlZW4gaW5zdGFsbGVkIGRvIG5vdyBwYXNzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDMyOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGY2N2MxNTBmYjA1ZWQzOGRmNDRmOGI1MjYwOTFkNmU5Yjg4ZDlmMzAKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXkgMyAxOToxNToyNyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBHdWFyZCBuZXRzbm1wX3VkcF9yZWN2ZnJvbSgpIGV0Yy4gZGVjbGFyYXRpb25zIGNvbnNpc3RlbnRseS4KLSAgICBDSEFOR0VTOiBXaW4zMjogQnVpbGRzIHdpdGggVmlzdWFsIFN0dWRpbyAyMDEwLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDI3OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGVlYmVhNjgzYTgwMjYxMzdhNzA4ZTVjYzQ5OTZkYmFhNDE1NTgwOTAKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXkgMyAxODo1NTowMiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBHdWFyZCBuZXRzbm1wX3VkcF9yZWN2ZnJvbSgpIGV0Yy4gZGVjbGFyYXRpb25zIGNvbnNpc3RlbnRseS4KLSAgICBDSEFOR0VTOiBXaW4zMjogQnVpbGRzIHdpdGggVmlzdWFsIFN0dWRpbyAyMDEwLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDI3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDA5ODFlNjAwYTYyZDUyNGJiYTBmYzg3ODQ0MzVkNzZkMjc1ZDdmMzMKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXkgMyAxNToyOTo0NiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBXaW4zMjogUEFUQ0g6IDMyOTM4NDI6IEVsaW1pbmF0ZSByZWdpc3RyeSBhcmd1bWVudCBsaW1pdCBvZiAxMjcgY2hhcmFjdGVycyAodGhpcyBsaW1pdGF0aW9uIHdhcyByZXBvcnRlZCBieSBTeWx2YWluIERlcnkpLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDI3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGYzZWEzNDFmYjE5NDRkYzZhNjM5NmFkZDcyYWMzOWY1Nzk0YTJkNjkKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXkgMyAxNToyOTo0NiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBXaW4zMjogUEFUQ0g6IDMyOTM4NDI6IEVsaW1pbmF0ZSByZWdpc3RyeSBhcmd1bWVudCBsaW1pdCBvZiAxMjcgY2hhcmFjdGVycyAodGhpcyBsaW1pdGF0aW9uIHdhcyByZXBvcnRlZCBieSBTeWx2YWluIERlcnkpLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDI3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGQxNzYxNTM3YjExYjcwYmE5ZjVjNTVkNjhkMDNiMTRiZmUzMjk5MjUKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXkgMyAxNToyOTo0NiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBXaW4zMjogUEFUQ0g6IDMyOTM4NDI6IEVsaW1pbmF0ZSByZWdpc3RyeSBhcmd1bWVudCBsaW1pdCBvZiAxMjcgY2hhcmFjdGVycyAodGhpcyBsaW1pdGF0aW9uIHdhcyByZXBvcnRlZCBieSBTeWx2YWluIERlcnkpLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDI3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGEyOTAwYzQ1ZDFkOTI3ZTFkODkxODAwYTE0MjJhOTIyYjM3NmQ4NWMKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBNYXkgMiAxMToyMjozNCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBXaW4zMjogaGVhZGVyIGZpbGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPiBjYW4gbm93IGJlIHVzZWQgaW4gdGhlIE1pbkdXIGVudmlyb25tZW50LgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDI3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDQyMDVmNTM4MjlhNzI1YjViNWVlODM1ZDc5MThhNzgzNWIyNmFkYzYKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBNYXkgMiAxMToyMjozNCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBXaW4zMjogaGVhZGVyIGZpbGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPiBjYW4gbm93IGJlIHVzZWQgaW4gdGhlIE1pbkdXIGVudmlyb25tZW50LgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDI3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDBmZDdiMDYwNjk5YjkwNDdmY2FjOWExNWQ2YzRkZTFjMDk0NGM1YzAKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBNYXkgMiAxMToyMjozNCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBXaW4zMjogaGVhZGVyIGZpbGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPiBjYW4gbm93IGJlIHVzZWQgaW4gdGhlIE1pbkdXIGVudmlyb25tZW50LgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDI3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDJlMDA5MTRkNDA4YjBlZjlhNDVkMmIzMTdiMDMzMjllODE0NTY1ODYKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBNYXkgMiAxMToxMzoyMyAyMDExICswMDAwCi0KLSAgICBXaW4zMiBETEwgYnVpbGQgZml4ZXMuCi0gICAgKEJhY2twb3J0ZWQgcjIwMTg0IGZyb20gdHJ1bmsuKQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDI3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDI1OWMyMjQ4NDNlNmRkNzEzYWU2Nzc2ODhkNDE3YjAwNzhiMGEzNzAKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBNYXkgMiAxMToxMzoyMyAyMDExICswMDAwCi0KLSAgICBXaW4zMiBETEwgYnVpbGQgZml4ZXMuCi0gICAgKEJhY2twb3J0ZWQgcjIwMTg0IGZyb20gdHJ1bmsuKQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDI3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGU3ODY0MjA3Zjg4ODIzMGRlNjc5YWNmZGExZmQ5YjY1N2Q3OTI2MTAKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBBcHIgMjkgMTE6MTc6MTEgMjAxMSArMDAwMAotCi0gICAgU3BlbGxpbmcgYW5kIGdyYW1tYXIgZml4ZXMgZm9yIHRoZSBzb3VyY2UgY29kZSBjb21tZW50cyBpbiBzbm1wbGliL3dpbnNlcnZpY2UuYy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAyNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlN2IzM2Y0M2QwYzMxMjUxNjJhYmJkMjY0ZDdlMWZhM2ZhNDA2MzAyCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgQXByIDI5IDExOjE3OjExIDIwMTEgKzAwMDAKLQotICAgIFNwZWxsaW5nIGFuZCBncmFtbWFyIGZpeGVzIGZvciB0aGUgc291cmNlIGNvZGUgY29tbWVudHMgaW4gc25tcGxpYi93aW5zZXJ2aWNlLmMuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMjc0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzE3NjIyZWU3ZWU4MDZmMDJlNGVhOTlkNjRjYzdlYWJjZDQ2MDhkNAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEFwciAyOSAxMToxNzoxMSAyMDExICswMDAwCi0KLSAgICBTcGVsbGluZyBhbmQgZ3JhbW1hciBmaXhlcyBmb3IgdGhlIHNvdXJjZSBjb2RlIGNvbW1lbnRzIGluIHNubXBsaWIvd2luc2VydmljZS5jLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDI3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDMxMWFkZTIzZGU0YTAwMTRmZTBmYzIzY2Y4M2QwNzdjZDY2M2FkMDUKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBBcHIgMjcgMjE6MTY6MjMgMjAxMSArMDAwMAotCi0gICAgRG9uJ3QgZnJlZSB0aGUgaWZYVGFibGUgcm93IGZvdW5kIG9uIGxvYWQgZmFpbHVyZSBhcyB3ZSBkb24ndCBvd24gaXQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAyNDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlZGUyNDY4OTQ2MWI3NWM0NDFhMzZhMzg0YTZjNTU5NzIzZGRlMmQzCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgQXByIDI3IDIxOjE2OjIzIDIwMTEgKzAwMDAKLQotICAgIERvbid0IGZyZWUgdGhlIGlmWFRhYmxlIHJvdyBmb3VuZCBvbiBsb2FkIGZhaWx1cmUgYXMgd2UgZG9uJ3Qgb3duIGl0Ci0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMjQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMWFmMDhlMWQ2MDhiN2JkMTMzNjFlYWQ1YzQyZjRjNDdhMjgzYjU5OQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEFwciAyNyAyMToxNjoyMyAyMDExICswMDAwCi0KLSAgICBEb24ndCBmcmVlIHRoZSBpZlhUYWJsZSByb3cgZm91bmQgb24gbG9hZCBmYWlsdXJlIGFzIHdlIGRvbid0IG93biBpdAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDI0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDYzNzNlZjA5YWRkNWIyYTJjZDFkOGUxMzZjNjc0ZTg2OTEwYjkwYTUKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBBcHIgMjcgMjE6MTY6MjMgMjAxMSArMDAwMAotCi0gICAgRG9uJ3QgZnJlZSB0aGUgaWZYVGFibGUgcm93IGZvdW5kIG9uIGxvYWQgZmFpbHVyZSBhcyB3ZSBkb24ndCBvd24gaXQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAyNDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA0MGFiZDhlNWFiMTFhMDdjNDk2YWIyNWYxYWQ1NGNjM2U1ODMyN2E0Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBBcHIgMTcgMjA6NTY6NDggMjAxMSArMDAwMAorY29tbWl0IDg1Zjg5M2UyYjYwNWU2N2Y5YmQwNDQzYzc0ZTJlZDI2OWFhNjg1NjQKK0F1dGhvcjogTmlraSBEZW5ldiA8bmlraV9kQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE5vdiAxNyAyMjo0MjozMiAyMDExICswMTAwCiAKICAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzE3NTY0MDogVXNlIElQX1JFQ1ZEU1RBRERSIHNvY2tvcHQgd2hlcmUgYXZhaWxhYmxlICgqQlNEKQogICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE4MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBUaGlzIGh1bmsgZmVsbCBvZiB3aGVuIHRoZSByZXN0IG9mIHRoZSBwYXRjaCB3YXMgbWVyZ2VkLgogCi1jb21taXQgZDJmNmY1NTEzNmIzOTgzZmFiMTY0MGMwMzFkNWU3YmYzMmE0ODUzNQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gQXByIDE3IDIwOjU2OjQ4IDIwMTEgKzAwMDAKK2NvbW1pdCA1YzkxM2U1NDY1NmFlMDA5NmIxZmViNmRhOThiNWZjOWNhODFmMjc2CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDIzOjMzOjA3IDIwMTEgKzAxMDAKKworICAgIERlZmluZSB0aGUgZnVsbCBOZXRCU0QgaGllcmFyY2h5IGRvd253YXJkcworCitjb21taXQgYjg4MTg0MWJkMDQ5M2RkNzFkNjMyNTliZGRlZDQ0OWIwNmYwMmMzMgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAyMzozMDozMyAyMDExICswMTAwCisKKyAgICBGaXggc2l6ZV90L2ludCBtaXNtYXRjaGVzCisKK2NvbW1pdCBjYTI5NGNmNzViYmM4ZTkwZGJmNDRlZTQwNDc4OTM1ZTkxZGIxNDg3CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDIzOjE4OjAzIDIwMTEgKzAxMDAKKworICAgIFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzCisKK2NvbW1pdCBjZDMyYzJkZmYwNmI5YjQ1MmNjMThkNTUyZDJmMjIzNDA5MmM4MjljCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDIzOjE3OjA5IDIwMTEgKzAxMDAKKworICAgIEZpeCBmb3JtYXQgd2FybmluZworCitjb21taXQgODgzMTM2YzJiMmZhMDczOWY0MzdhOGNmYjY2MTRhY2NjNzZlMjY4ZQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAyMzoxNTo1OCAyMDExICswMTAwCisKKyAgICBNb3JlIG5lZWRzIGZvciBORVRTTk1QX1BSSW8gZm9ybWF0IHNwZWNpZmllcgorCitjb21taXQgYjgwODRhN2NjYzkwOWI2ZDZkYjdjMGU4ZTU5NmQ3ODY3MWY1Njc4YgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAyMzoxNDoyNiAyMDExICswMTAwCisKKyAgICBGaXggdXNpbmcgY2hhciBhcyBhcnJheSBpbmRleCAoY3R5cGUuaCkKKworY29tbWl0IDg0NTI5ZTYzMjBhODlkOTdmMTMxNGFlYmFkODA2MjU1ZDJhMWIxOGMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMTYgMjM6MDA6NTcgMjAxMSArMDEwMAorCisgICAgRml4IG1pc3NpbmcgZm9ybWF0IGZvciBGcmVlQlNEIDQKKworY29tbWl0IDRiZDAzNTI5NTVhMjU1MWJmZTAyMzA4ZGQxMzRiOTEyOGM5OGI5ZTkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMTYgMjI6NTk6MzYgMjAxMSArMDEwMAorCisgICAgRml4IHBhcmFudGhlc2lzIHByb2JsZW0KKworY29tbWl0IGZlNjI2OWIxOTAwY2Y0NGRjMjdhMTk5YTc2MWQxNWEwMWMzZjMwOTIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMTYgMjI6NTg6MzQgMjAxMSArMDEwMAorCisgICAgRml4IHNpemVfdC9pbnQgbWlzbWF0Y2hlcworCitjb21taXQgYTRkYjlmOWZjMTNkMjFlY2ZmNDg4ZWI0MTAzNzZlZGRhNmMyODIzMgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAxMzo0MzozNCAyMDExICswMTAwCisKKyAgICBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcworCitjb21taXQgMzkwYzAxMTRjOGVjMGJkYjI3YjA4YjZmNzRlM2Y2ZWYzYTYyOTgxYgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAxMzozNzo0OSAyMDExICswMTAwCisKKyAgICBGaXggZm9ybWF0IHNwZWNpZmllcnMgdG8gYXZvaWQgd2FybmluZ3MKKworY29tbWl0IDI1Y2ZjMTk2MmFlNTc2Y2NiMTU1OGRhMWUzZWY4YjZjMTdmNjNjMTYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMTYgMTE6Mjc6NTMgMjAxMSArMDEwMAorCisgICAgUmVhbGx5IHVwLXRvLWRhdGUgbWlicworCitjb21taXQgMGU4NmM3ODFmMzk4OWJmMDIyYzg5OTNhMTE4NjE3Yjc0YTc1NDIwYworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAwOToxNzoxOSAyMDExICswMTAwCisKKyAgICBtZW1vcnlfbGludXg6IGdldCBTaG1lbSBmcm9tIC9wcm9jL21lbWluZm8gZm9yIDIuNiAob3IgbmV3ZXIpIGtlcm5lbHMKKworY29tbWl0IGJmMjY0ZDE1ZGVkN2FjYmJmMmUzODcxYjk4ZmQxZmNlZjQzZDllYzMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMTYgMDk6MTY6MTYgMjAxMSArMDEwMAorCisgICAgbWVtb3J5X2xpbnV4OiBjbG9zZSBzb2NrZXRzIGluIGVycm9yIHNpdHVhdGlvbnMKKworY29tbWl0IDU3ZmY4YTQwYmFlNWQ5YmNhZDE2MDg5MTQyYTljZjMyOGM5ZmExZjUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMTYgMDk6MTQ6NTcgMjAxMSArMDEwMAorCisgICAgZGlzbWFuL3BpbmcsIGRpc21hbi90cmFjZXJvdXRlOiBDbG9zZSBzb2NrZXRzIGluIGVycm9yIHNpdHVhdGlvbnMKKworY29tbWl0IDhhMjUwMmExNWMzMjE3Yjk1OTM5YTNjODM2MTY3ZDIzMGFjMzVmMDIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMTYgMDk6MTM6NTMgMjAxMSArMDEwMAorCisgICAgVXAtdG8tZGF0ZSBsaXN0IG9mIFJGQ3Mgd2l0IG1pYnMKKworY29tbWl0IGRjZGQ3MDIxMTFkOGRhNWY1MzgwNGNmY2YwZGZkYWQ3MzE0NjhiZGUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTm92IDE1IDEwOjU3OjM0IDIwMTEgKzAwMDAKKworICAgIERvbid0IHRyeSB0byBpbnN0YWxsIGFuIGVtcHR5IGxpc3Qgb2YgbWFuIHBhZ2VzIChNQU4zKQorCitjb21taXQgYmE2MTk4MDRlNTk3OGE4ZGY3NTQ4NDRlZmNjYTUyYjY5YjUwMTVmYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE5vdiAxNCAxMzozNDoyMCAyMDExICswMTAwCisKKyAgICBNaW5HVzogTWFrZSBzdXJlIHRoYXQgdGhlIGJhY2tzbGFzaGVzIGluIHRoZSBwc2tpbGwgbWVzc2FnZSBhcmUgZGlzcGxheWVkLgorCitjb21taXQgOTIzZWVjYzUwN2Y3NTA0M2I2MGM1ZTY4MDUzYTRmMzk2YWIwYjBkMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE5vdiAxNCAxMjozNjozOCAyMDExICswMTAwCisKKyAgICBDb21waWxlciB3YXJuaW5nIGZpeCBmb3Igc3lzdGVtcyB3aGVyZSB1aW50NjRfdCA9IHVuc2lnbmVkIGxvbmcgKGUuZy4gUkhFTCA2LjEveDg2XzY0KQorCitjb21taXQgNDM0YmZjMWY3NDU3NTUwYjZmODdkNWJjZDUxMTI3NmIyNzBiNTk2NAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBOb3YgMTQgMTE6MjI6NTMgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IGZyb20gTWFydGluIFdpbGNrOiBmaXhlZCBzbm1wZCBjcmFzaGluZyB3aXRoICdzZWxlY3Q6IGJhZCBmaWxlIGRlc2NyaXB0b3InLgorICAgIAorICAgIE9uIDMyLWJpdCBzeXN0ZW1zLCBzbm1wZCBkaWVzIHdpdGggYWZvcmVtZW50aW9uZWQgbWVzc2FnZSB3aGVuIHVzaW5nIGZpbGUgZGVzY3JpcHRpb25zID4gMzIsIGUuZy4gd2hlbiBoYXZpbmcgPjMyIEFnZW50WCBzdWJhZ2VudHMuCisKK2NvbW1pdCBlZDY1ZWNhNmU3ZjljZmE3MzgwYTc4ZDU2YzAxZWQzMTQ3NDViMTY5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTm92IDExIDE5OjAxOjIxIDIwMTEgKzAxMDAKKworICAgIEZyZWVCU0QtOTogRml4IGZvciBjb25zdCdpZnllZCBubGlzdCBhcmd1bWVudHMKKworY29tbWl0IGVhY2E3OTgzZTM2NTVhYjY5NmZjYzQ0NjFjYTBjZWRiYWM2Y2U2OWEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBOb3YgMTEgMTk6MDA6MTIgMjAxMSArMDEwMAorCisgICAgTmV0QlNELTY6IE9uZSBtb3JlIGluc3RhbmNlIG9mIHRpbWVzcGVjIHJlcGxhY2luZyB0aW1ldmFsCisKK2NvbW1pdCA4YWQ2YzUzZmRlYzVhZGVhZTRlNTJmMTc1MWVjZWM0YTM0NWJhYjA1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTm92IDExIDE4OjU5OjAxIDIwMTEgKzAxMDAKKworICAgIEZpeCBidWlnICMzNDM2NTI3OiBhcnBfbmV0bGluazogZml4IGR5aW5nIHJlbG9hZCBvZiBjYWNoZQorCitjb21taXQgMzc4ZmZlZDAzYmE3OWE4MzQ2ZDZjNjI3ODFlMmRkZjVjZTkyYTQ3OAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE5vdiAxMSAxODo1NTo0MyAyMDExICswMTAwCisKKyAgICBGaXggYnVnICMzNDM2NTI4OiBzd2luc3RfcGtnaW5mbzogcmVjb3ZlciBmcm9tIE5VTEwgcmV0dXJuIGZyb20gb3BlbmRpcgorCitjb21taXQgZDdhZDhmNWY5ZjNmNjdmMTZmNjVjMjUxNWQxMWUxOTRkMmNkZDEyYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE5vdiAxMCAxNDowNDo0MSAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBDeWd3aW46IE1ha2UgZGF0ZV9uX3RpbWUoKSBwcm9kdWNlIHRpbWUgem9uZSBpbmZvcm1hdGlvbgorCitjb21taXQgYmEzNWM1MGIyZjQ1OWJkOWMxMWVkNTljYzdkMWIxNjIxNTY0NGZhMworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE5vdiAxMCAxNDoxNzowNCAyMDExICswMTAwCisKKyAgICBSZXBsYWNlIEFDX1RSWV9MSU5LKCkgYnkgQUNfTElOS19JRkVMU0UoKQorICAgIAorICAgIE5vdGU6IHRoZXNlIGNoYW5nZXMgZG8gbm90IGFmZmVjdCB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyZSBzY3JpcHQuCisKK2NvbW1pdCBmNjE1YmYyNGY1ZDBmMjNjZTkzMDFkYTU1NjE4NGQ2NDYwNzQwNDU2CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDkgMjA6MzI6NDkgMjAxMSArMDEwMAorCisgICAgRmlzIEJ1ZyAjMzQzNDgyNDogU0lHU0VHViB3aGVuIHJlYWRpbmcgZGlzayBkaXJlY3RpdmUgYWZ0ZXIgU0lHSFVQCisKK2NvbW1pdCBhOTRhMTc5ZDkzNDBmNTFmYTdjMjM0MzE2MzBiYzBmZmQ2ZDc1OWU4CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDkgMjA6MzA6NTEgMjAxMSArMDEwMAorCisgICAgRml4IGJ1ZyAjMzQzMzYxNjogZG9udCB0cmVhdCBEYXRlQW5kVGltZSBhcyBhIHN0cmluZworCitjb21taXQgYjI5ZTQxNjQ1MzFkMjU4ZmUzNGE2ZmUyYjllMWVjNjBjNTZmOTU0NAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgTW9uIE5vdiA3IDAxOjI1OjU3IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKKworY29tbWl0IGUyMjFlNjVmZGMxYzY4ZjE5Njg2NTE3MTdkY2M5Y2NmYjY0MTQ3ODMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBOb3YgMyAxNTowNTowMCAyMDExICswMTAwCisKKyAgICBGaXggd2FybmluZ3MgYWJvdXQgY29udmVydGluZyBzb2NrYWRkcl9pbiAqIGludG8gc29ja2FkZHIgKi4KKyAgICAKKyAgICBUaGlzIGlzIGEgZm9sbG93LXVwIGZvciBjb21taXQgYTBhZjM4NS4KKworY29tbWl0IDJlN2U5ZWRhMGIwZDYyYTc2NDVhOWE4ZjcwZWYzZmI2ZjNkZDY5NDEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBOb3YgMyAxMToxNzo0OCAyMDExICswMTAwCisKKyAgICBGaXggdW5pbml0aWFsaXplZCB2YXJpYWJsZSB3YXJuaW5ncy4KKworY29tbWl0IDM0NjJlYmNkZDBiN2MyOThjYjE1YzMwOTk3MzZmNGY5NTIyNTc4NDYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBPY3QgMjggMTY6MDc6MTUgMjAxMSArMDIwMAorCisgICAgUmVtb3ZlIHRob3NlIHN1cGVyZmx1b3VzIHBhcmVudGhlc2VzIHRoYXQgdHJpZ2dlciBhIGNsYW5nIHdhcm5pbmcuCisKK2NvbW1pdCAzZTVmZWRkM2U3ZDFlZjMxNjgzNjA0YmY3M2RjNTZlOTQ0Y2FkMzQ5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE5vdiAzIDA5OjQ1OjI3IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCBVQ0QtU05NUC1NSUI6OnN5c3RlbVN0YXRzIGFmdGVyIDMwIGRheXMgb2YgdXB0aW1lLgorICAgIAorICAgIEFmdGVyIDMwIGRheXMsIHZhbHVlcyBmcm9tIC9wcm9jL3N0YXQgKG9uIExpbnV4KSBjYW4gZ2V0IGJpZ2dlciB0aGFuIDMyYml0cyBhbmQgc25tcGQgY2FsY3VsYXRpb25zIG1pZ2h0IHJlbmRlciBjb3VudGVycyBsaWtlIHNzQ3B1VXNlciBuZWdhdGl2ZSBvciB6ZXJvLCB3aGlsZSB0aGUgcmVhbCB2YWx1ZSBpcyBoaWdoZXIuIFRoZXJlZm9yZSB0aGUgY291bnRlcnMgc2hvdWxkIGJlIHRyYWNrZWQgYXMgdGhlIGxhcmdlc3QgaW50ZWdlciBhdmFpbGFibGUuCisKK2NvbW1pdCAwZmM4MjIxYjI0OTg4YzRhZTYxODBlZDQyYjg2Yjk4NTJmZDU4NmFkCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDIgMjI6NTk6MDggMjAxMSArMDEwMAorCisgICAgZHNrSW5kZXggd2FzIG9mZiBieSBvbmUKKworY29tbWl0IGE1YjI4ODI5ZTY0ZDVmM2I4N2U0YjliMWVmOGNjMjA0ZjMzYTYxYjcKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMiAyMToyNTowNyAyMDExICswMTAwCisKKyAgICBTb2xhcmlzIG5lZWRzICRBV0sgdG8gZ2V0IGEgdXNhYmxlIG5hd2sKKworY29tbWl0IDI4MDFhMjEzOWYyNzAyMWUxYWIxNWUzNjJlMmQzZDYyNGZmYWE0OTQKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBPY3QgMzEgMjI6NTU6NTMgMjAxMSArMDEwMAorCisgICAgUGF0Y2ggIzM0MDYzNjQ6IEZpeCB1bnN0YWJsZSBkYXRhIGZvciBOZXRCU0QuCisKK2NvbW1pdCA4MjFhNThkMTEyZDdhYzQ5NTE0OWUyNjJkNzA0NDEyYmEyODAwNDM4CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gT2N0IDMxIDIyOjQzOjUyIDIwMTEgKzAxMDAKKworICAgIEZpeCBpcHY2IHN0YXRpc3RpY3MgbG9vcGluZyB0b28gZmFyIHdoZW4gc2Nhbm5pbmcgaW50ZXJmYWNlcy4KKyAgICBGaXggVENQIHNlc3Npb24gdGFibGUgcmVwZWF0aW5nIGRhdGEgZnJvbSBmaXJzdCBlbnRyeSBmb3IgYWxsLgorCitjb21taXQgMzQ5NTkxZDAzZTE3YTU1YjQzZWFjYzZhNjg3YjAyZmQ4ZDRlOTUyOAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgTW9uIE9jdCAzMSAwODo1OTozNyAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBwZXJsOiBNYWtlIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIHBlcmwgc3VwcG9ydCB3aXRob3V0IHN1cHBvcnQgZm9yIG9wYXF1ZSB0eXBlcy4KKworY29tbWl0IDFlYzcxMTBlNzJiY2UxNTYxZjc0NjUxNzQ1OWQ2ZjA0MzAxNmI2MGUKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBPY3QgMzAgMTk6MDU6MzAgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogTWFrZSB0aGUgYXNuMSB0ZXN0IHBhc3MgZXZlbiBpZiBzdXBwb3J0IGZvciBvcGFxdWUgdHlwZXMgYXJlIHJlbW92ZWQuCisKK2NvbW1pdCA2ZDI2OTE4YWY1NWFhMzY2MmE3MjA1NDJkZTc3YmJmMzliMGEzZTkxCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgT2N0IDI5IDA4OjM0OjMzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBEaXNhYmxlIHRoZSBzdXBwb3J0IGZvciBpbnRlZ2VyNjQgaW4gcGFzcyBzY3JpcHRzIGlmIGNvbXBpbGluZyB3aXRob3V0IG9wYXF1ZS1zcGVjaWFsLXR5cGVzLgorCitjb21taXQgMjliZjY5ZDcwNDI0ZjM1OWQ5Yzg3ZjA3YTk2NGEwOTk0MTU2NDlhNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE9jdCAxMCAxMzowMjoyNSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGRfc3FsOiBBdm9pZCB0aGF0IGEgbGlua2VyIGVycm9yIGlzIHRyaWdnZXJlZCBvbiBzeXN0ZW1zIHdoZXJlIG15X3Byb2duYW1lIGlzIG1pc3NpbmcgaW4gbGlibXlzcWxjbGllbnQgKGUuZy4gRmVkb3JhIDE1IGFuZCAxNikuCisgICAgCisgICAgVGhpcyBpcyBhIGJhY2twb3J0IG9mIGNvbW1pdCA5ZjY1M2Y3LgorCitjb21taXQgMmNjOTUwNGI5YmI4NjI1Yjk0YmU2Y2RhN2U2MDk5M2QwNTljZDkyOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE9jdCAyNiAwOTowMToyMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDM0Mjg1MDY6IEZpeCBuZXRzbm1wX2dldGhvc3RieWFkZHIoKQorICAgIAorICAgIFRoaXMgcGF0Y2ggc2hvdWxkIGZpeCB0aGUgcmVncmVzc2lvbnMgaW50cm9kdWNlZCBieSBjb21taXQgODVkOTZjNCAoTWF5IDEzLCAyMDExKS4KKworY29tbWl0IDliNDI3YjM1M2YxY2ViOGZlODdlNmZjOGVkM2I2Y2ZhYjNjZTdmMjAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBPY3QgMjcgMDg6MjA6MDAgMjAxMSArMDIwMAorCisgICAgTWluR1c6IEF2b2lkIGNvbmZ1c2lvbiBiZXR3ZWVuIE1pbkdXJ3Mga2lsbC5leGUgYW5kIHRoZSBTeXNJbnRlcm5hbHMgcHNraWxsLmV4ZQorCitjb21taXQgMmM0NWY5MmNmY2I1YjA1ZTA0OTIyNmE1YTc4ODNhMGIxMDYwMTFhZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE9jdCAyNiAxMDo0MjoyOSAyMDExICswMjAwCisKKyAgICBGaXggY29tcGlsZXIgd2FybmluZ3MgYWJvdXQgcGFzc2luZyBhIGNvbnN0IHBvaW50ZXIgdG8gYSBmdW5jdGlvbiBhY2NlcHRpbmcgYSBub24tY29uc3QgcG9pbnRlci4KKworY29tbWl0IDI3NWQyM2VkZmRlYmUwNTc3YjA4NDIxZTRjNmM5MzZhZTM5YjdmZGMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBPY3QgMjYgMDk6MzM6MDkgMjAxMSArMDIwMAorCisgICAgRml4IGNvbXBpbGVyIHdhcm5pbmdzIGFib3V0IHNldC1idXQtbm90LXVzZWQgdmFyaWFibGVzCisKK2NvbW1pdCA0NDk1ZTE3YzA3OGFjNjk5N2E5YzdmYTFhODhkYjA2NDRlOTE5NDkxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgT2N0IDI2IDA5OjMyOjQ2IDIwMTEgKzAyMDAKKworICAgIEZpeCBjb21waWxlciB3YXJuaW5ncyBhYm91dCBjYXN0aW5nIGF3YXkgY29uc3QKKworY29tbWl0IDEzOTUyZjZiZWU5ZjQwODg2N2FiNmQyZmRmZGRlNGYyODQwNzQ5NTcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgT2N0IDI2IDE0OjA1OjE2IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IGZyb20gU2lkZGhlc2ggUG95YXJla2FyOiBwcm9wZXJseSBjbGVhbiB1cCBvbGQgcmVxdWVzdHMgaW4gYSBzdWJhZ2VudCB3aGVuIHdlIHJlY29ubmVjdCB0byBtYXN0ZXIuCisgICAgCisgICAgQW4gc25tcCBzdWJhZ2VudCBsaW5rZWQgYWdhaW5zdCBuZXQtc25tcC1saWJzIG1heSBjcmFzaCBpZiBpdCBoYW5kbGVzIGEKKyAgICByZXNwb25zZSB3aGljaCBoYXMgbWFnaWMgcmVmZXJyaW5nIHRvIGFuIG9sZGVyIGRpc2Nvbm5lY3RlZCBtYWluIHNlc3Npb24uIFRoaXMKKyAgICBtYXkgaGFwcGVuIHdoZW4gdGhlIHN1YmFnZW50CisgICAgYXR0ZW1wdHMgdG8gY2xlYW4gdXAgb2xkIHJlcXVlc3RzIG9uIHJlY29ubmVjdGlvbiBvZiB0aGUgZGlzY29ubmVjdGVkIG1hc3RlcgorICAgIHNlc3Npb24uCisKK2NvbW1pdCBhZTA1MjQ3MmIyMjcyMGQwODM2OWU4NTEyN2RiMjE0MjQ1ZGYyZTNmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE9jdCAyNSAxNjoxNToxNyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBwZXJsOiBmaXhlZCBzZWdtZW50YXRpb24gZmF1bHQgd2hlbiBoYW5kbGVyIHJlZ2lzdHJhdGlvbiBmYWlscy4KKyAgICAKKyAgICBXaGVuIG5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlciBmYWlscywgaXQgZnJlZXMgaXRzIHJlZ2luZm8gLT4gbnNhaHJfREVTVFJPWSAoYW5kIGFueSBvdGhlciBmdW5jdGlvbikgbXVzdCBub3QgZGVyZWZlcmVuY2UgaXQuCisKK2NvbW1pdCBjMTk5YmY5MWI2MjM5ZjI2YjJhYWIzNGU4NTc1ZTBmMGRmOWNkZTliCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE9jdCAyNCAxNDoyNToyOCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogeGZzLCBqZnMgYW5kIHZ4ZnMgZmlsZXN5c3RlbXMgYXJlIG5vdyByZWNvZ25pemVkIGluIGhyU3RvcmFnZVRhYmxlCisKK2NvbW1pdCA3NDdmZGM3MWU2NGQwOWUwODA5MjhlYmJiNGQwNGNiZGUzOTA2Nzk5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE9jdCA1IDE1OjU3OjU5IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBMb3dlcmVkIHNldmVyaXR5IG9mICdlcnJvciBmaW5kaW5nIHJvdyBpbmRleCBpbiBfaWZYVGFibGVfY29udGFpbmVyX3Jvd19yZXN0b3JlJyBtZXNzYWdlLgorICAgIAorICAgIFRoZSBtZXNzYWdlIGlzIHNob3dzIHVwIHdoZW4gc25tcGQgaXMgc3RhcnRlZCBhbmQgdGhlcmUgaXMgZGlmZmVyZW50IHNldCBvZiBuZXR3b3JrIGludGVyZmFjZXMgdGhhbiBpdCB3YXMgd2hlbiBzbm1wZCB3YXN0IGxhc3Qgc3RvcHBlZC4gVGhpcyBpcyBjb21tb24gb24gcHBwLXNlcnZlcnMgb3IgdmlydHVhbCBob3N0cy4KKworY29tbWl0IDI1MGY2OThlNTllYWI5ZjFmZmQzMzJmZjU5ZmRiNzJlYTBkZjA2ZmYKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBPY3QgMjMgMDg6NTE6MjMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IE1ha2UgdGhlIHRyYW5zcG9ydCBjb25maWd1cmF0aW9uIGNvZGUgd29yayBhZ2FpbgorICAgIAorICAgIFByZXZpb3VzbHkgdGhlIHRyYW5zcG9ydCBpbmhlcml0YW5jZSBwcm9jZXNzaW5nIGNvZGUgcmFuIHdpdGgKKyAgICBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcgc2V0LiBJbiB0aGlzIG1vZGUgdGhlIGZpbGUgbmV0LXNubXAvZmVhdHVyZS1kZXRhaWxzLmgKKyAgICBpcyByZXF1aWVyZWQuIFRoYXQgZmlsZSBpcyBjcmVhdGVkIGR1cmluZyB0aGUgZmlyc3QgbWFrZSBydW4sIGFuZCB0aGF0IGhhcHBlbnMKKyAgICBhZnRlciBjb25maWd1cmUgaXMgcnVuLgorICAgIENoYW5nZSB0aGlzIHRvIHVuZGVmaW5lIE5FVFNOTVBfTUlOSU1BTF9DT0RFLCBlZmZlY3RpdmVseSB0dXJuaW5nIG9mZiBmZWF0dXJlCisgICAgc3VwcG9ydCBkdXJpbmcgdHJhbnNwb3J0IGNvbmZpZ3VyYXRpb24gaW4gb3JkZXIgdG8gbWFrZSBpdCB3b3JrIGF0IGFsbC4KKworY29tbWl0IDZlZjY5MDc2NDIyNDdjNjYzYjliODk2NGI5ZmQ0NGEyMTFkYmNhYTcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBPY3QgMjAgMjA6MzA6NTQgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzQwODM5ODogRml4IGEgbWVtb3J5IGxlYWsgaW4gYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy4KKyAgICAKKyAgICBUaGlzIG1lbW9yeSBsZWFrIHdhcyBpbnRyb2R1Y2VkIHZpYSBjb21taXQKKyAgICA5YmYzZDk2ZDk2YThlY2Q0YTVmYzM1YzMyNmRjOTM3NDY3MDAyYjZjOiBJbml0aWFsIEhBTAorICAgIGltcGxlbWVudGF0aW9uIG9mIEZpbGVTeXN0ZW0gaW5mb3JtYXRpb24gKE1hcmNoIDcsIDIwMDgpLgorCitjb21taXQgY2Y4MmI4OTRiMjIxN2MyNmVkYzZmMTM1NjM1MWM5MzI0MTU2MDRlMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IE9jdCAxNSAxNDo0NTowOCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDM0MjM5MTU6IENoYW5nZSBkZWZhdWx0IG51bWJlciBvZiByZXRyaWVzIGJhY2sgZnJvbSAwIHRvIDUKKyAgICAKKyAgICBUaGlzIHBhdGNoIGZpeGVzIGEgYnVnIGludHJvZHVjZWQgdmlhIGNvbW1pdCA2Y2FjMDUwIChNYXkgNSwgMjAxMSwKKyAgICBhZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIHRoZSBkZWZhdWx0IG51bWJlciBvZiByZXRyaWVzIGluCisgICAgc25tcGQuY29uZikuCisKK2NvbW1pdCBjMTFhZGFhMTI5MTVhYmZlZTYyOWJiNmMwMjZjMjFmMjE4NWIyMTZlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gT2N0IDE3IDEwOjI0OjQ2IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IFdpbjMyOiBBdm9pZCB0aGF0IGNvbXBpbGluZyB0aGUgaGVhZGVyIGZpbGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPiB3aXRoIHRoZSBNaW5HVyBnY2MgY29tcGlsZXIgdHJpZ2dlcnMgd2FybmluZ3MgYWJvdXQgInByYWdtYSBjb21tZW50Ii4KKworY29tbWl0IGIxN2E3MmE3OTM0ODNhZWU0YTViYjJmMmUyYzdmNGZkODY5ODE3ZTYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBPY3QgMTcgMTA6MjI6MjAgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogV2luMzI6IEF2b2lkIHRoYXQgdGhlIFBBQ0tBR0VfKiBtYWNyb3MgZGVmaW5lZCBpbiA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhdXNlIHRyb3VibGUgd2hlbiBpbmNsdWRpbmcgdGhpcyBoZWFkZXIgaW4gYSBwYWNrYWdlIHRoYXQgdXNlcyB0aGUgR05VIGF1dG90b29scy4KKworY29tbWl0IDY2NGQzYWUxMDdkNzU0MDUxYjhjNDIyNzlkNDU5YWE1N2ExYmUxYzMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBPY3QgMTAgMTY6NDc6MTYgMjAxMSArMDIwMAorCisgICAgTWluR1csIGh3X2ZzeXM6IFVzZSBwcm9wZXIgZm9ybWF0IHNwZWNpZmllcnMgaW4gYSBkZWJ1ZyBzdGF0ZW1lbnQuCisgICAgCisgICAgVGhpcyBwYXRjaCBmaXhlcyBhbiBpc3N1ZSBpbnRyb2R1Y2VkIGluIGNvbW1pdCA3NmZmMjVkLgorCitjb21taXQgMjExZGNiNDkzMDY1NjFlMzViYTNjMjEzYmU3Y2ZhMjU3YjQwYThlNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE9jdCAxMCAxNTo1Mjo0MyAyMDExICswMjAwCisKKyAgICBBdm9pZCB0aGF0IGdjYyA0LjYgY29tcGxhaW5zIGFib3V0IHNldCBidXQgbm90IHVzZWQgdmFyaWFibGVzCisKK2NvbW1pdCA5ZjY1M2Y3M2U1YWE3MGYwYmVmMTE3NDYzMmU5NTU5NGY4N2Y2NjlmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gT2N0IDEwIDEzOjAyOjI1IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXB0cmFwZF9zcWw6IEF2b2lkIHRoYXQgYSBsaW5rZXIgZXJyb3IgaXMgdHJpZ2dlcmVkIG9uIHN5c3RlbXMgd2hlcmUgbXlfcHJvZ25hbWUgaXMgbWlzc2luZyBpbiBsaWJteXNxbGNsaWVudCAoZS5nLiBGZWRvcmEgMTUgYW5kIDE2KS4KKworY29tbWl0IDRjODNiOTIyOWE3NDU0ZjM0ZjZmZjc1ZjY5ZTY3ZTQwMzBjNDE5YjUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBPY3QgNyAxNTo1ODo0NSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBTZXQgdGhlIHJwYXRoIGZvciBsaWJwZXJsLnNvIGluIGxpYm5ldHNubXBtaWJzLnNvIHN1Y2ggdGhhdCB0aGUgZHluYW1pYyBsaW5rZXIgY2FuIGZpbmQgbGlicGVybC5zbyB3aXRob3V0IHJlcXVpcmluZyB0aGUgdXNlciB0byBtb2RpZnkgdGhlIGR5bmFtaWMgbGlua2VyIHNldHRpbmdzLgorICAgIAorICAgIFRoaXMgY2hhbmdlIGluIGFnZW50L01ha2VmaWxlLmluIGlzIG5lY2Vzc2FyeSBvbiB0aGUgNS41IGJyYW5jaCBhbmQKKyAgICBsYXRlciBidXQgbm90IG9uIHRoZSA1LjQgYnJhbmNoLiBUaGF0IGlzIGJlY2F1c2UgdGhlIDUuNCBicmFuY2ggdXNlcworICAgIGFuIG9sZGVyIHZlcnNpb24gb2YgbGlidG9vbCB0aGF0IHByb3BhZ2F0ZXMgdGhlIHJwYXRoIG9mIGRlcGVuZGVudAorICAgIGxpYnJhcmllcy4gVGhpcyBpcyBjYWxsZWQgaW50ZXItbGlicmFyeSBkZXBlbmRlbmN5IHRyYWNraW5nIGluIHRoZQorICAgIGxpYnRvb2wgbWFudWFsLiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgcHJlc2VudCBpbiBsaWJ0b29sIHZlcnNpb24gMQorICAgIGJ1dCBub3QgaW4gbGlidG9vbCB2ZXJzaW9uIDIuIEZvciBtb3JlIGJhY2tncm91bmQgaW5mb3JtYXRpb24gYWJvdXQKKyAgICBkeW5hbWljIGxpYnJhcmllcyBhbmQgcnBhdGhzLCBzZWUgYWxzbyB0aGUgZG9jdW1lbnQgd2l0aCB0aGUgdGl0bGUKKyAgICAiUnBhdGhJc3N1ZSIgb24gdGhlIERlYmlhbiB3aWtpIChodHRwOi8vd2lraS5kZWJpYW4ub3JnL1JwYXRoSXNzdWUpLgorCitjb21taXQgODkyNWM5MTJkMjYzOTc1MmE4NGJjZmZlZWYxYjcwYTgxMDI2NDQ5YgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIE9jdCA3IDE0OjIxOjI4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGFnZW50OiBIT1NULVJFU09VUkNFUy1NSUI6IEFkZCBtaXNzaW5nIGJyYWNlIGluIGEgZGVidWcgc3RhdGVtZW50CisKK2NvbW1pdCA3NmZmMjVkOWJmOTc1NzllNzIxMzEwMjA2NWZkNTA5NmYwNDlhNGM1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgT2N0IDcgMTQ6MTM6MTggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEhPU1QtUkVTT1VSQ0VTLU1JQjo6aHJTdG9yYWdlVGFibGU6IGZpeCBidWcgaW4gaGFuZGxpbmcgbGFyZ2UgZmlsZXN5c3RlbXMsIHdoZXJlIGxhcmdlIG1lYW5zIGFib3ZlIDggVEIgKD0gMioqMzEgKiA0MDk2IGJ5dGVzKS4KKyAgICAKKyAgICBUaGlzIHBhdGNoIGZpeGVzIGEgYnVnIGludHJvZHVjZWQgaW4gY29tbWl0CisgICAgNzFkODI5M2YzODdhNmNkNjZiYjBkYmIxM2MwZjUwMTc0ZDJlNjc4Yi4KKyAgICBGb3IgdGhlIG9yaWdpbmFsIGJ1ZyByZXBvcnQsIHNlZSBhbHNvCisgICAgaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/ZnVuYz1kZXRhaWwmYXRpZD0xMTI2OTQmYWlkPTM0MTk4MjUmZ3JvdXBfaWQ9MTI2OTQuCisKK2NvbW1pdCA4NjYwMzNkYjk5MDRmZmIxMjAzZjI4M2Y4MzgwOTJlNGNmNjhkZTZiCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgT2N0IDYgMDc6MzM6MjcgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFJlbW92ZSBzcHVyaW91cyAjZW5kaWYgdGhhdCBzZWVtcyB0byBiZSB0aGUgcmVzdWx0IG9mIGEgbWlzbWVyZ2UuCisKK2NvbW1pdCAyMGY0ZjMyNjdlZTIwZDU1NzA1YjdhNDM3ODk4NzljMTAzZjk2NjIwCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgT2N0IDYgMDA6MDg6NTkgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IEFkZCBtaXNzaW5nIGVuZCBjb21tZW50cyB0byBmZWF0dXJlIGlmbmRlZnMuCisKK2NvbW1pdCBlNWRlMmNjNTdiZjMwNGYzMzIwY2FkMDAzNGQyZWEyZDhhZWRjNDM2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgT2N0IDUgMDk6MTU6MTAgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYWdlbnQ6IExvZyBhIG1vcmUgZGV0YWlsZWQgZXJyb3IgbWVzc2FnZSBpZiBlbWJlZGRlZCBwZXJsIGluaXRpYWxpemF0aW9uIGZhaWxzCisKK2NvbW1pdCA1ZWVmOTk5MGRlMjhmNjMxMTFlNmMwOTNiZTBmM2M3YWUyZDUxM2ExCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgT2N0IDUgMDg6NDU6NDkgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogcGVybDogQWRkIGFnZW50Ojp1cHRpbWUoKQorCitjb21taXQgNjgxMGVkNDJmOWJjNTYwNzUwZDZkYmZiN2U1MGI2ZTJhYzExODk5YworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIFNlcCAzMCAxMTowMToyMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBDeXdpbjogYWdlbnQ6IEltcGxlbWVudCBnZXRfdXB0aW1lKCkgc3VjaCB0aGF0IHF1ZXJ5aW5nIEhPU1QtUkVTT1VSQ0VTLU1JQjo6aHJTeXN0ZW1VcHRpbWUgcmV0dXJucyBhIG5vbi16ZXJvIHZhbHVlLgorCitjb21taXQgOTcxNzJiMzExZDIwZjQ0NDFjN2E3ZTkwMDkyYjU5YzFlMGRhOTlmNworQXV0aG9yOiBUaG9tYXMgSmFyb3NjaCA8dGphcm9zY2hAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgT2N0IDUgMDg6NDY6MzkgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogUEFUQ0g6IDM0MTg2NDk6IEhPU1QtUkVTT1VSQ0VTLU1JQjogVXNlIHBjbG9zZSgpIGluc3RlYWQgb2YgZmNsb3NlKCkgdG8gY2xvc2UgYSBwaXBlLgorCitjb21taXQgNjU5MTkzN2FkYjg1MDAwYzI3MDY5YzRiZTg0Y2Y0Njg4ODM4ZWJjZAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE9jdCAyIDE2OjE4OjAzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBBZGQgZGVwZW5kZW5jaWVzIG9uIEBGRUFUVVJFVEFSR1NAIHRvIG1ha2UgdGhlIHN1YnRhcmdldCB3b3JrIGFzIHdlbGwuCisKK2NvbW1pdCBiOWM4MDEyZWMwMzViYzA4NGYxNzU4NzZmZWNjMzc1MTk1ZjliZTgxCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gT2N0IDIgMTQ6MDI6NTggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IEFkZCB0YXJnZXQgdG8gYnVpbGQgYWdlbnR4dHJhcCBmcm9tIHRoZSB0b3BsZXZlbAorCitjb21taXQgOTk1NjQ3YzBjZmUwMDQxMjI2MmNjNTc5N2JkZmFlOWQwMGI3MGM3NgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE9jdCAyIDE1OjQ0OjM2IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBSZW1vdmUgdGhlIHVzZSBvZiAtTCBmbGFncyBmb3IgaW50ZXJuYWwgbGlicmFyaWVzIGFzIGl0IGNvbmZ1c2VzIGxpYnRvb2wuCisKK2NvbW1pdCA5M2RjMTIzNWEwZGI1OGZmZDI5NjE3Y2ZmMDBkYzExMjYzNzgwMjAyCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gT2N0IDIgMTE6MzE6NDYgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IE1ha2UgbWFrZSBhcHBzIHdvcmsgYWdhaW4KKyAgICAKKyAgICBhcHBzIGluY2x1ZGUgc25tcHRyYXBkIGFuZCB0aGF0IHJlcXVpcmUgdGhlIGFnZW50IGxpYnJhcmllcyBhcyB3ZWxsLgorCitjb21taXQgYmE0MTQ4OGVkNDRjZDIzYzI1OTYzZDRmYzU2YzQ3Njg1M2IyYWI1OQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE9jdCAyIDExOjI5OjMzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBXaGVuIHlvdSBzYXkgbWFrZSBsaWJzIHlvdSBleHBlY3QgYWxsIHRoZSBsaWJzIHRvIGJlIGJ1aWx0LgorICAgIAorICAgIFRoaXMgaXMgZGVtb25zdHJhdGVkIGJ5IHRoZSBzbm1wdHJhcGQgdGFyZ2V0IGF0IHRoZSB0b3AgbGV2ZWwgd2hpY2ggb2J2aW91c2x5CisgICAgZXhwZWN0ZWQgYm90aCBsaWJzIHRvIGJlIGJ1aWx0IGFuZCBzbyBmYWlsZWQgdG8gY29tcGlsZSBiZWZvcmUgdGhpcyBwYXRjaC4KKworY29tbWl0IDMwNTdjNzNlMDkzNDczYmU0NjI1NGJjZGZiNGNhNzg4ZTQzMmQxYjgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgU2VwIDMwIDA3OjMyOjUyIDIwMDggKzAwMDAKKworICAgIE5FV1M6IGJ1aWxkaW5nOiBQQVRDSDogMjA5MTE1NjogY29ycmVjdGx5IGRlY2xhcmUgZGVwZW5kZW5jaWVzIGluIE1ha2VmaWxlLgorICAgICdtYWtlIC1qIDxOPicgc2hvdWxkIHdvcmsgbm93LgorICAgIAorICAgIEJhY2twb3J0IHRoaXMgdG8gVjUtNCBhcyBpdCBpcyBuZWVkZWQgZm9yIGNvcnJlY3Qgb3BlcmF0aW9uIGluIHRoZSBzaW5nbGUKKyAgICB0aHJlYWRlZCBjYXNlIG9mIG1ha2UgbWlibGliIGFzIHdlbGwuCisKK2NvbW1pdCA2ZWFlMzQwZmEyYTY0MDg2NTkyOTgyY2M1MjczNWJjMDE0ODdkOTc4CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgT2N0IDEgMTk6MzM6NTAgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IFNpbGVuY2UgbGliYnNkIDAuMy4wIG5hZ2dpbmcKKyAgICAKKyAgICBJZiB5b3UgaGF2ZSBsaWJic2QgMC4zLjAgaW5zdGFsbGVkIHRoZW4gdGhlaXIgdmVyc2lvbiBvZiBubGlzdC5oIHdhcm5zIGFuZAorICAgIHRyaWVzIHRvIG1ha2UgeW91IGluY2x1ZGUgYnNkL25saXN0LmggaW5zdGVhZC4gVGhlIHByb2JsZW0gaXMgdGhhdCB3ZSBkb24ndAorICAgIG5lZWQgdGhhdCBjb21wYXRpYmlsaXR5IGxpYnJhcnkgYXMgd2Uga25vdyBob3cgdG8gZG8gaXQgb3Vyc2VsZiBzbyBpdCBiZWNvbWVzCisgICAgcHVyZSBuYWdnaW5nLiBUaGlzIHBhdGNoIGFkZHMgYSBkZWZpbmUgdGhhdCBjaGFuZ2VzIHRoZSB3YXJuaW5nIGludG8gYW4KKyAgICBlcnJvciBhbmQgdGhlbiBmaWd1cmVzIG91dCB0aGF0IHRoZXJlIGlzIG5vIHVzYWJsZSBubGlzdC5oIGFuZCBpZ25vcmVzIGl0CisgICAgZm9yIHRoZSBmdXR1cmUuCisKK2NvbW1pdCBhYzM4Y2I1MzFiZWU1MGVkYzhkNGM4MzRmMzAwNWY1OTkyYzc3MWQ4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgU2VwIDI5IDE5OjAzOjAyIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHBlcmw6IEVuYWJsZSBzZW5kaW5nIFNOTVB2MiB0cmFwcyB3aXRoIGFuIGVtcHR5IHZhcmJpbmQgbGlzdAorCitjb21taXQgYTc1ZGUyOTcxNTI3YWMyZDJlODEyMDI0Mjk4NjAyYmIyNDEyZjMzNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIFNlcCAzMCAxMDo0MTo0NCAyMDExICswMjAwCisKKyAgICBwZXJsL1NOTVAvU05NUC54czogVXBkYXRlIGVtYWNzIG1vZGVsaW5lCisKK2NvbW1pdCA4NDhmNjMwMGVmZTM4NDkyZmI0NTQ0NTFhMDMwZjBiN2U2ZmY4YzlkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgU2VwIDMwIDEwOjQxOjQ0IDIwMTEgKzAyMDAKKworICAgIHBlcmwvU05NUC9TTk1QLnhzOiBVcGRhdGUgZW1hY3MgbW9kZWxpbmUKKworY29tbWl0IGMxMzc0NDczZWNkOGVjOWUwMzEwMDEzODYxZWUxOGM4M2U1ZDZjNWIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIEZyaSBTZXAgMzAgMDM6Mjk6MzYgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogUHJvdGVjdCB0aGUgdXNlIG9mICRPU1RZUEUgdG8gZW5zdXJlIHRoYXQgJ3Rlc3QnIGdldCBlbm91Z2ggcGFyYW1ldGVycy4KKworY29tbWl0IDdlOTdhMjA2MzNhNTdlYWUzOWQwMTViMjMzMzk0NjNjMzJmNWY4NDgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBTZXAgMjkgMTA6MjI6MDggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogQ29udmVydCBzbm1wbGliL3Rlc3RfYmluYXJ5X2FycmF5LmMgaW50byB0d28gdW5pdCB0ZXN0cworCitjb21taXQgOWMwZGQ5ODE3NjQ1NzM0MmZmZmFhNWU3NGQ4MDJlMzE0NWVkNzBlNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IFNlcCAyOSAwODo1NjoxNyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBBZGQgdW5pdCB0ZXN0IGZvciBuZXRzbm1wX3JlZ2lzdGVyX29sZF9hcGkoKQorCitjb21taXQgNWZkMjZlNGZhM2UwMDBlYTljODFjMzhhYjk3NWI3OTQ2ZWZlMjE1NworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIFNlcCAyOCAxNzo0OTo1NSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBhZ2VudDogQXZvaWQgdGhhdCBuZXRzbm1wX3JlZ2lzdGVyX29sZF9hcGkoKSBmYWlsdXJlIHRyaWdnZXJzIGEgZG91YmxlIGZyZWUuCisgICAgCisgICAgRml4ZXMgYSByZWdyZXNzaW9uIGludHJvZHVjZWQgdmlhIGNvbW1pdAorICAgIGFhNGQ0N2MyNjA5ZTUyODE4YzljZGYxYThlMjIwNWRlOWEzMzVhMGEgKHN2biByMTk1MTUpLgorCitjb21taXQgZDIyNTJkMDE2NjkzODA3MzI2ZjcyYjY2MTIzNjQ5ZGVhMDBhZjkxNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IFNlcCAyOSAxMDoyMDowOCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBSZXF1aXJlIGEgc2VtaWNvbG9uIGFmdGVyIE9LKCksIE9LRigpIGFuZCBQTEFOKCkKKyAgICAKKyAgICBBbHNvLCBsZXQgT0tGKCkgZW1pdCBhIHNpbmdsZSBsaW5lIG9mIG91dHB1dCBzdWNoIHRoYXQgYWxsIG91dHB1dCBpdAorICAgIHByb2R1Y2VzIGlzIHZpc2libGUgaW4gdGhlIG91dHB1dCBvZiAibWFrZSB0ZXN0Ii4KKworY29tbWl0IDE0MjE5MjRiNDg1MjE0MjE5MmM1YmI5ZTkzZGRiZmVkNjllOTA4ZmEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBTZXAgMjEgMjI6MjA6MDggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogQXZvaWQgd2FpdGluZyBpbmRlZmluaXRlbHkgaWYgYSBzZXNzaW9uIGhhcyB0aW1lb3V0IHplcm8KKworY29tbWl0IDVmMjdmNGY3NGFlMmJkNWJhZjUwM2NmMzA2YjRmOWEyODQxYTU3Y2YKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgNiAxMDozMjowMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBNaW5HVzogdGVzdGluZzogRml4IGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRlc3QgcnVubmVyCisKK2NvbW1pdCAwOTcwMzk1OGNjNWVhODQ1OTI5YWUxOWVmOWUwODA0YWVjYWE1MTJlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDI3IDEyOjQyOjQxIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IEF2b2lkIGZhbHNlIG5lZ2F0aXZlIGZvciBUMTE0YWdlbnR4YWdlbnR4dHJhcF9zaW1wbGUgY2F1c2VkIGJ5IHRoZSB0ZXN0IHJlc3VsdCBiZWluZyBwcmVzZW50IGluIHRoZSBoZXggZHVtcCAoIm1vc3RseV9oYXJtbGVzcyIpCisKK2NvbW1pdCA0MzkzMDAyNzlmNmYzMTQzODYzOGQyZjIyMmMyNGMzYzg0MWZhNmFiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDI3IDExOjE2OjMyIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBNaWNyby1vcHRpbWl6ZSBhZ2VudCBtb2R1bGUgZGVwZW5kZW5jeSBhbmFseXNpcworICAgIAorICAgIFRoaXMgbWFrZXMgdGhlIGFnZW50IG1vZHVsZSBkZXBlbmRlbmN5IGFuYWx5c2lzIGNhcnJpZWQgb3V0IGJ5IHRoZQorICAgIGNvbmZpZ3VyZSBzY3JpcHQgc2xpZ2h0bHkgZmFzdGVyLCBlc3BlY2lhbGx5IG9uIHRob3NlIHN5c3RlbXMgd2hlcmUKKyAgICBmb3JrKCkgaXMgZXhwZW5zaXZlIChDeWd3aW4pLgorCitjb21taXQgYmJjNjgwMDA0YTEzNzYwMzhkZmRjNDE3MmRiZTdiOWUzMTFmYmE2OAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIFNlcCAyNiAxMDoxNDo0NSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBNaW5HVzogdGVzdGluZzogTWFrZSB0ZXN0IFQxMzBzbm1wdjF2YWNtZ2V0X3NpbXBsZSBwYXNzCisKK2NvbW1pdCA3MGIwNmNmNzg5MjA4ZWFhODkwYmZiY2Q2MzhiZGI3NzVmODE3MDU0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDIwIDA5OjUwOjU3IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IFdpbmRvd3M6IHRlc3Rpbmc6IHBlcmw6IEZpeCBhbiBpbmNvcnJlY3QgbWVzc2FnZSBwcmludGVkIHdoaWxlIHJ1bm5pbmcgdGhlIFBlcmwgbW9kdWxlIHJlZ3Jlc3Npb24gdGVzdHMKKworY29tbWl0IDcwYmNjOGRlMmQwZmM5MmJiYjg0ODE4MjM2MzBmYWI5YmM4N2FmNzUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBTZXAgMTYgMTY6MTQ6MjQgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogTWluR1c6IHRlc3Rpbmc6IE9idGFpbiB0aGUgTVNZUyBwYXRoIGZyb20gdGhlIGVudmlyb25tZW50CisKK2NvbW1pdCA2MjYyNzVlMmQxYWNhZmFlNzE0NGEzM2VkMzAxYTQwZjU5NmIzN2IwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgU2VwIDE0IDEzOjE0OjE3IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IFdpbmRvd3M6IFJlbW92ZSBzdXBlcmZsdW91cyBsaW5rIGxpYnJhcmllcyBmcm9tIHByb2plY3QgZmlsZXMgKCouZHNwKQorCitjb21taXQgMzhmYzNjYWE5ZWViMzgwMDI1NGI0ZjZhZDZmOGY0NzY0YzBmODNkYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCAyMCAwOTozNDowOCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBNYWtlIG5ldHNubXBfY2FsbGJhY2tfYWNjZXB0KCkgcmV0dXJuIC0xIChmYWlsdXJlKSBpbnN0ZWFkIG9mIDAgKFNURElOX0ZJTEVOTykKKworY29tbWl0IDZjOGM3ZThhY2E4ZmMyZWViNTIwMTBhZTNlOWZlZTZkZDgzZWY3ODAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgMTMgMDk6NTg6MjYgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUmVtb3ZlIG9ic29sZXRlIHNubXBfZ2V0X2ZkX2Zvcl9zZXNzaW9uKCkgZGVjbGFyYXRpb24KKworY29tbWl0IDA4NjBkMTFmZDhmYzVkYmRhYWFlMjI2MWZhZTJjMDdmYjljMmM4MmQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBTZXAgOCAxMzo1NDo1NSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBNU1ZDOiBBdm9pZCB0aGF0IHRoZSB0eXBlZGVmcyBpbiA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNvbmZsaWN0IHdpdGggdGhvc2UgaW4gPHN0ZGludC5oPiBmcm9tIHRoZSBtc2ludHR5cGVzIHByb2plY3QKKworY29tbWl0IGY4YTAzNmY2M2ZmNjhmMDgzNDM2MTIwZTBhYmQ0NzhiNjkyYTJmNjEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBTZXAgOCAxMzoyMTowNiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBNU1ZDOiBXaGVuIGxpbmtpbmcgd2l0aCBPcGVuU1NMLCBsaW5rIHdpdGggdXNlcjMyLmxpYiB0b28KKworY29tbWl0IDgzNmEyM2UxMGNhODEwYzM4OTk5MDJkMzI1ODc2MTZhOWQxMjAzZGYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKdWwgMTQgMTg6Mzg6MTMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogV2luZG93czogTVNWQzogTGluayB3aXRoIHByb3BlciBsaWJlYXkzMiBsaWJyYXJ5CisKK2NvbW1pdCA3YjA3ZmQ2Y2RlZjQ5ZWM3YmIwNGIxNjZlMmE0ZmJiMzdiNTgyODQwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDYgMTE6MTA6MzggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogUmVtb3ZlIGFuIGluY29ycmVjdCBjb21tZW50IGZyb20gc2ltcGxlX2V2YWxfdG9vbHMuc2gKKworY29tbWl0IDk4ZjZkMjlkOTgxZmY4ZTYwNzYwMGM2M2RhZGIyNDA1MzU2Mjk4MDcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgNiAxMDo0OTowMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBNYWtlIElTREVGSU5FRCgpIGNoZWNrIGZvciBhbiBleGFjdCBtYXRjaCBpbnN0ZWFkIG9mIGEgcHJlZml4IG1hdGNoCisKK2NvbW1pdCA1MmNkMDAzMWEzMWY2OTJmMTMyNjNhOTRjMzM1ZDA2YmUxNDU0ODAzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDYgMTA6MTI6NTkgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogTWluR1c6IHRlc3Rpbmc6IE1ha2UgdGhvc2UgcmVncmVzc2lvbiB0ZXN0cyBwYXNzIGZvciB3aGljaCBTTk1QQ09ORlBBVEggYW5kL29yIFNOTVBfUEVSU0lTVEVOVF9ESVIgbWF0dGVyCisKK2NvbW1pdCBmNWNkODliZDMzNTZkZDc0ZTE1NTZjMGI1MDk2NmE2NDNmMTkyMDg1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDYgMTA6MTI6NTkgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogTWluR1c6IHRlc3Rpbmc6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSB0ZXN0IGZyYW1ld29yaworCitjb21taXQgZGVlZGQ1MmM4MzRhNjQ0ODg1MmEwNjc4NTUzNmUxMzg2NTk2OTY5NAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCA2IDEwOjEyOjU4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiBTdXBwb3J0IHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIG9mIHJlY2VudCBTaGluaW5nIExpZ2h0IE9wZW5TU0wgYmluYXJ5IGRpc3RyaWJ1dGlvbnMKKworY29tbWl0IGQ1NWJkNGUwNTQ5ZjAzYjZmZDMyNTYyYzJhYTdmZTM5MjcyYTllZjcKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBTZXAgMjggMDY6NTU6MTkgMjAxMSAtMDcwMAorCisgICAgcmVtb3ZlIHRoZSB2NS43IGZyb20gdGhlIGZyb3plbiBsaXN0CisKK2NvbW1pdCBhYzJhZWQzYzk0YmIyZWJiNDczYWYwYTFlMjBmMDU2MWFkNjI5OTU2CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgU2VwIDI4IDA2OjU1OjExIDIwMTEgLTA3MDAKKworICAgIHJlbW92ZSB0aGUgdjUuNyBmcm9tIHRoZSBmcm96ZW4gbGlzdAorCitjb21taXQgNDZlYWMwMmU5YTI3YmY0ZjMwNjhlNzk1Y2FiODkxZjA1YTg0ODg3MAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIFNlcCAyNiAyMTo0OToyNyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogQXZvaWQgdGhhdCBzbm1wZCBjcmFzaGVzIGlmIHN0YXJ0ZWQgb24gYSBzeXN0ZW0gd2l0aCBhbm90aGVyIE9wZW5TU0wgbGlicmFyeSB2ZXJzaW9uIHRoYW4gdGhlIG9uZSBpdCBoYXMgYmVlbiBidWlsdCB3aXRoLgorCQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDaGFuZ2VzOiBWNS43LjEgLT4gVjUuNy4yLnByZTIKKworY29tbWl0IDgxMDE4NWFlMGIwY2QyYWQ0ZDQyNGExYmE3NzVlZjVjZWFmNTBmMDMKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBKdW4gMiAwOToyNDoxOSAyMDEyIC0wNzAwCisKKyAgICBtYWtlIGRlcGVuZCBmb3IgNS43LjIucHJlMQorCitjb21taXQgNjI3MTQ3MWUwMTI4MmYzNjc1NzI0ZWFmMTM1OGNlYjBlOTVkZGQ0ZQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IEp1biAyIDA4OjMyOjQwIDIwMTIgLTA3MDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjIucHJlMQorCitjb21taXQgZmNiNzgyYWE4ODkzMTM0Yzc0MTRhOTI2ZDkyNjg1OTRmNzI1YjkxNQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IEp1biAyIDA4OjMyOjE4IDIwMTIgLTA3MDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjcuMi5wcmUxCisKK2NvbW1pdCBlM2JjZDg3YzcyZmNlYTc3MDZlODY4YjVhY2U3NTI5NjA5M2Y3NDk3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxNDowOTo0MiAyMDEyICswMTAwCisKKyAgICBGaXggZGlzdC9yZWxlYXNlIGZvcm1hdAorCitjb21taXQgZDgxM2NlMmVlZWZjNjgyMjljZmNhZjIwNjAzMjQ0Y2RkNmQwOWQzYworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTQ6MDc6NTIgMjAxMiArMDEwMAorCisgICAgRml4IGRpc3QvcmVsZWFzZSBmb3JtYXQKKworY29tbWl0IGZhN2JkNTgxZTM3ODM2ODVkYjM5YzliNGVhZjg0N2JlNWFjODZmZDMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEzOjUzOjEwIDIwMTIgKzAxMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjYuMi5yYzIKKworY29tbWl0IDA3MzllMjM4MmQzMTE0NmFjYTMyMDUyNDRjZjcwNzg4YjQwYTQyOGQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEzOjUxOjQ1IDIwMTIgKzAxMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjYuMi5yYzIKKworY29tbWl0IGQ5YTE1NDQ1YWE3NGY1MzE2YmZjNzExYzE1NTg0Njc4NzJjMjk1OGMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEzOjUwOjEyIDIwMTIgKzAxMDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjYuMi5yYzIKKworY29tbWl0IGJjYWJkMmM5NTQyZGJlYmQxZDMxOWI0NDk0NDEzYmRjY2EwNjYxNGUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEzOjM4OjM4IDIwMTIgKzAxMDAKKworICAgIFJlbGVhc2UgQ2FuZGlkYXRlIGZvciBWNS02LXBhdGNoZXMKKworY29tbWl0IGI0NzM4OThjMGM1YWM5ZWI0N2M3YzA1YTNmNzQ1ZTRmZjJhNzZhYWEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEzOjM4OjI4IDIwMTIgKzAxMDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS42LjIucmMyCisKK2NvbW1pdCAxMzE0MjllNzA2MmZiYWE2NWI4MmFmZmVkMWZiOTJkZjJjMGNjODEzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMzozODozOCAyMDEyICswMTAwCisKKyAgICBSZWxlYXNlIENhbmRpZGF0ZSBmb3IgVjUtNi1wYXRjaGVzCisKK2NvbW1pdCAxYzgxMTBiMzNiODEwNWNhNjE5MDk0NWEzNWZlN2FlOTAzMjUyZDY4CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMzoyMTozOCAyMDEyICswMTAwCisKKyAgICBBdm9pZCBwZXJsIHZlcnNpb25pbmcgcHJvYmxlbXMgd2hlbiBzZXR0aW5nIHVwIHRoZSBidWlsZCBlbnZpcm9ubWVudAorCitjb21taXQgNTA4ZWNlMTZlNmY2ZjQ5NTYyZGEyMDQ3OTJhZTA2NDQyNjk5OTRkMQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTM6MjA6NTggMjAxMiArMDEwMAorCisgICAgRml4IGhhbmRsaW5nIG9mIGRpc3QvcmVsZWFzZSBtZXJnZQorCitjb21taXQgNWI4YTg1NDdiMWE0N2QyZjViMjA3ZjQ4ZjI0OTZlNDI0MWQ5MDJjNgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTE6MTA6NDggMjAxMiArMDEwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNS4yLnJjMgorCitjb21taXQgNmMzMjkxNGJmMjhkNjk1ZGYzNDlkY2EyNjllNDg4YjUwMTcwMDMxNgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTE6MDc6MjIgMjAxMiArMDEwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNS4yLnJjMgorCitjb21taXQgOWY1YTgyYTVhZmRiYjNkYWViMmZkNDM3YTMwOWYwYjhkMzU3Y2Y0YgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTE6MDU6MzkgMjAxMiArMDEwMAorCisgICAgbWFrZSBkZXBlbmQgZm9yIDUuNS4yLnJjMgorCitjb21taXQgMzkyMDNmMjk0NzdhM2JlZGYwMTJkNDExMzVkOGFiZDZiY2FkMDhiMQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTA6NTQ6MjcgMjAxMiArMDEwMAorCisgICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUgZm9yIDUuNS4yLnJjMgorCitjb21taXQgMTdlNzllZjBmYWQ3OTYwOWM1YmEyZmViNGU4YjllYjVkN2RiNjg4NgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTA6NDY6MTEgMjAxMiArMDEwMAorCisgICAgUmVsZWFzZSBDYW5kaWRhdGUgZm9yIFY1LTUtcGF0Y2hlcworCitjb21taXQgNTgyMWJlNWJiYjQwMThkZWQyODJmYmJiZDQ4MzBjZjJlZWFkZDllMQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTA6NDU6NTkgMjAxMiArMDEwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjUuMi5yYzIKKworY29tbWl0IDNmMjExMWRlNjczM2EwNGUxMmQ5MTBkMzA2YTM0ZDY3MWUwMDg3NjIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEwOjQ2OjExIDIwMTIgKzAxMDAKKworICAgIFJlbGVhc2UgQ2FuZGlkYXRlIGZvciBWNS01LXBhdGNoZXMKKworY29tbWl0IGNjZjhmZjJjNGRiNjAxMjJkNDEzMDJlNGFlYjcwMGUwYjg2ODEwNWYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDI4IDEwOjE4OjQzIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIRVM6IDM1MjY1OTk6IERvbid0IGhhbmcgb24gcmV0cmllZCBmYWlsaW5nIFNOTVB2MyByZXNwb25zZXMKKworY29tbWl0IGM4MWM4NDgzOTkwOTExZjQ3NDM1ZDMwMDUyNTVkOTFjMzdhYjkyYjIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBNYXkgMjcgMTQ6MDk6MjYgMjAxMiArMDIwMAorCisgICAgRml4IEJTRCB0aGF0IGRvd25ub3QgYWx3YXlzIGxpa2UgSVBfU0VORFNSQ0FERFIgLSBzbyByZXRyeSB3aXRob3V0CisKK2NvbW1pdCBmZmNlMWYyZGMyZjhiMzFhYmQwMWY5M2IyNmRhNzhmNDcyNmExZTY0CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gTWF5IDI3IDE0OjAzOjU4IDIwMTIgKzAyMDAKKworICAgIEZpeCBPUyBtaXNzaW5nIE1TR19ET05UV0FJVCAoQUlYKS4gQmFja3BvcnQgZnJvbSA1LjcKKworY29tbWl0IGM1NzUyMTY4NTAxODViNTY0NTRkYWQwMjUzZTMxNjQ5NzllMTM1MTMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBNYXkgMjcgMTM6NTY6MDEgMjAxMiArMDIwMAorCisgICAgRml4IG1pc3NpbmcgaW5jbHVkZS4gRml4ZXMgU0lHU0VHViBvbiBGcmVlQlNEOSB4NjQKKworY29tbWl0IDU4MDU4Nzg3NDljMDgwNjJkZWJmMGE5ZDc5OGQwOGZiOTE2Y2FhMmQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBNYXkgMjcgMDY6MjM6MTkgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEFkZCBtaXNzaW5nIGRlYnVnIHRhZworCitjb21taXQgZDFhNDJiYmNjN2IxNDczMGM5YTZkOTljNGYwNDcwOTc4NDNhNTQ5YgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgRnJpIE1heSAyNSAwOTowMjoyNyAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogUnVuIGxpYnRvb2wgLS1tb2RlPWZpbmlzaCBvbiB0aGUgcmlnaHQgZGlyZWN0b3J5CisKK2NvbW1pdCAxZmJmMzM3MTFhMTllYWM5NzM5YWQyM2Y2ZjYyNTFlYWNjNDFmMWM0CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE1heSAyMiAxNDo1NDo0NSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBMaW51eDogUEFUQ0g6IDM1MjU5OTg6IERvbid0IHVzZSBhbiB1bmluaXRpYWxpc2VkIHZhbHVlIGluIGVycm9yIG1lc3NhZ2UKKworY29tbWl0IDMyYzE2ODZiNjdkYzg1YzRhMTg5NTc2MzYzMDY1NjA5ZGZlZDVlNjEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTWF5IDIyIDE0OjUyOjU2IDIwMTIgKzAxMDAKKworICAgIEF0dGVtcHQgdG8gbWFyayByZWxlYXNlLWNhbmRpZGF0ZSBicmFuY2hlcyBhcyBzdWNoLgorICAgIE9taXQgZmluYWwtcmVsZWFzZS1vbmx5IHN0ZXBzIHdoZW4gcHJlcGFyaW5nIHByZU4vcmNOIHJlbGVhc2VzCisgICAgKFJlbGllcyBvbiBhIHR3ZWFrIHRvIHRoZSBNYWtlcmVsZWFzZSBwZXJsIG1vZHVsZXMpCisKK2NvbW1pdCA0YzU2MzNmMTYwM2U0YmQwM2VkMDVjMzdkNzgyZWM4OTExNzU5YzQ3CitBdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QGZyZWVzbm1wLmNvbT4KK0RhdGU6ICAgTW9uIE1heSAxNCAxMTo0MDowNiAyMDEyIC0wNDAwCisKKyAgICBORVdTOiBzbm1wOiBCVUc6IDM1MjY1NDk6IENWRS0yMDEyLTIxNDEgQXJyYXkgaW5kZXggZXJyb3IgbGVhZGluZyB0byBjcmFzaAorCitjb21taXQgNjVkZDgzYzIyNTVlZTU4ZWRiZjBlMjU4NjNlNTViNThhNDExMzY3OQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAyMDozMDo0MiAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS42LjIucmMxCisKK2NvbW1pdCBhYzRiYzY1ZTI5MDlmM2JkODVmMzJmMDRiNTA0ZmE2NWQyZjY0NTUzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDIwOjI4OjA2IDIwMTIgKzAxMDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjYuMi5yYzEKKworY29tbWl0IGI3NDk5NDg2NDE5NTExOWVkYjZlMTljODUxNDdmYWMwMGJjYjkzZTMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMjA6MTM6NDYgMjAxMiArMDEwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjYuMi5yYzEKKworY29tbWl0IDkxMzUwMDkyYzQ2ZTY2ZDA2ZDc0MTQzZjQ4MTY0NzNkYjRkMjUxNjAKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMTk6NTY6MzMgMjAxMiArMDEwMAorCisgICAgTWFyayB2ZXJzaW9uLXNwZWNpZmljIGNoYW5nZXMgX2JlZm9yZV8gcHVzaGluZyB0byBjZW50cmFsIHJlcG9zaXRvcnkKKworY29tbWl0IDcyNDFhY2NkNzBiODJkMGZjZDQ0ZDVhNTIzOGIyZWU5NDQ1OTAwZGIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMTc6NTM6MTcgMjAxMiArMDEwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNS4yLnJjMQorCitjb21taXQgN2M3OTZhMTVhMWQxYmI4NWZlZWE5NDBiZDRlMzUxNjg3NzkyMDkxOQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAxNzo1MDo0OSAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS41LjIucmMxCisKK2NvbW1pdCAwN2UyNjhiZmI2NGIwZWM2NDViM2Y3ZTg3MjY2OTg0ZjkyMTdjZjEyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDE3OjQ0OjM3IDIwMTIgKzAxMDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjUuMi5yYzEKKworY29tbWl0IDE2ZWFhZjZjM2JhMTQ1OTZjYTllZmFmNGIxMTRmMWI3MDlmNDJiNjgKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMTc6Mjk6MDMgMjAxMiArMDEwMAorCisgICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUgZm9yIDUuNS4yLnJjMQorCitjb21taXQgYzcyOTQ2OWVmMTIxNTQ5MzBjZjlkMTU5NjdlMTYxODZmYjQ0NWYzMAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAxNzoyNzoyMCAyMDEyICswMTAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNS4yLnJjMQorCitjb21taXQgMTQyNTcxZDNjZWEwOGYwYzA3MmQyNGMxZDM5YTQzYzc0NDZmOGNlNworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAxNzowMTowMyAyMDEyICswMTAwCisKKyAgICBXaGVuIGJ1aWxkaW5nIGEgbmV3IHJlbGVhc2UsIHRoZSBpbnN0YWxsZWQgdmVyc2lvbiBvZiB0aGUgcGVybAorICAgIG1vZHVsZXMgbWF5IHdlbGwgYmUgZGlmZmVyZW50IHRvIHRoZSB2ZXJzaW9uIGJlaW5nIGJ1aWx0LgorICAgIFRoYXQgc2hvdWxkIG5vdCBicmVhayB0aGUgYnVpbGQuCisKK2NvbW1pdCBlYmE4NmI2ZjdhZmYyNjFlZTBlNjEzMzRkZjcwZGU3MTU2ZTVjM2NiCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDE3OjAxOjAzIDIwMTIgKzAxMDAKKworICAgIFdoZW4gYnVpbGRpbmcgYSBuZXcgcmVsZWFzZSwgdGhlIGluc3RhbGxlZCB2ZXJzaW9uIG9mIHRoZSBwZXJsCisgICAgbW9kdWxlcyBtYXkgd2VsbCBiZSBkaWZmZXJlbnQgdG8gdGhlIHZlcnNpb24gYmVpbmcgYnVpbHQuCisgICAgVGhhdCBzaG91bGQgbm90IGJyZWFrIHRoZSBidWlsZC4KKworY29tbWl0IDVjMGY2NGQ2ZGIyYjU5M2Y3Y2MwZWQyZDRmNTViN2M1OTJiNzc0YTgKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBcHIgMjMgMjI6MjU6MTUgMjAxMiArMDIwMAorCisgICAgT25seSBvdXRwdXQgY3B1IHdhcm5pbmdzIG9uY2UuCisKK2NvbW1pdCBlZTU4ZTQ4MjdiOWZhMTZlNjYzNWNhMDAzZThhNGYxMWRjYjVmYjdhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDIzIDIyOjE3OjQyIDIwMTIgKzAyMDAKKworICAgIEZpeCBzcGVsaW5nIGluIGVycm9ybWVzc2FnZS4KKworY29tbWl0IDAzZjQ4NWRmMjJmMjBlMTQ5Y2ZhZTk0YzU3Y2I4MmZlZWNiNWQ3NGIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBcHIgMjMgMjI6MTI6MTEgMjAxMiArMDIwMAorCisgICAgTm90IGFsbCBMaW51eGVzIHVzZSBycG0gKGRlYmlhbi91YnVudHUgY29tZXMgdG8gbWluZCkKKworY29tbWl0IDkzMDgzODIyNGY3ODE2OTZiZDM1MjI1ZjIyNTY5MzQ3NDE2ZjFiMTYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBcHIgMjMgMjI6MTA6MTUgMjAxMiArMDIwMAorCisgICAgQ2hlY2sgbmVlZCBmb3IgLWxtIHRvIHVzZSByb3VuZC9leHAKKworY29tbWl0IGEwNjA5Y2YxZjNhNjkxN2QyNjM3MjU3MzIyNDhjZDkzN2E0NWFkOTQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBBcHIgNyAwODo0MDo0NCAyMDEyICswMjAwCisKKyAgICBSZW1vdmUgbGltaXRhdGlvbiBvbiBjb25maWd1cmF0aW9uIGxpbmUgbGVuZ3RoLgorCitjb21taXQgMzA1OTczMzM4YTYzYWU1NGM1ZTAyYTg2MjZmYmU5YTgwNjRkY2I3ZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IEFwciA3IDAwOjMyOjE5IDIwMTIgKzAyMDAKKworICAgIFJlZHVjZSB2YXJpYWJsZSBzY29wZXMuCisKK2NvbW1pdCBjY2FiNGU5ZDNlZDQyNGMzOWQwZGMyN2JlNjNmYTc2Yzc0NjFlYTgxCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgQXByIDcgMDA6MTU6MjIgMjAxMiArMDIwMAorCisgICAgSW50ZXJuYWxpemUgdGhlIG5hbWUgYW5kIGxpbmUgbnVtYmVyIG9mIHRoZSBjdXJyZXQgY29uZmlndXJhdGlvbiBmaWxlCisKK2NvbW1pdCBjZjg3NGFkN2I5ZGFmNGZjYzBkNDZjZGQwMzQ0NzRiNDc4MDA1MzQxCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgQXByIDYgMjE6NDc6MjggMjAxMiArMDIwMAorCisgICAgUmVwbGFjZSAjaWYgKEEpIEIgI2Vsc2UgQiAjZW5kaWYgd2l0aCBCLgorCitjb21taXQgZWY5ZWE2NDFiYzI5MGVlYzUwNjg1YjYwNTE5YjMxYmVlOGIxNGE2OQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgOSAyMTowNDowNiAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS42LjIucHJlMgorCitjb21taXQgMzVhYmExOTU5ZGUxMTlmMWZiODkyMDNjMzcxMDlhYTZmMGUyMWM1NworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgOSAyMTowMDo0MCAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS42LjIucHJlMgorCitjb21taXQgZTQxZmJhZmYxOGFjOTA5NWNmNGE3MzlhMDZlYzM5YTFhNmNjZmRjMQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgOSAyMDozNTozNSAyMDEyICswMTAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNi4yLnByZTIKKworY29tbWl0IDEzN2ZlNTgyZDZjYzU2MTE0MzBkYWI0NmVmMTQ0ZWZkODRjZmM4MDMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBGcmkgQXByIDYgMjA6NDY6NTYgMjAxMiArMDEwMAorCisgICAgUmV2ZXJ0IGNvbW1pdCAxZjRhODI5YjE4Mjc1ZTQ5NTZjYTkxZTVlYzM3MGRmMDE1ZjA2MTMzCisgICAgKHNubXBfc3RvcmVfbmVlZGVkKCkgQVBJIGlzIG5vdCBhdmFpbGFibGUgaW4gNS5bNDVdLngpCisKK2NvbW1pdCAyYjdlNjQyODhjMDFhOGEwNjIwMjZjNTIxY2EzMWE1ZTg4NWYzMGNjCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDE2OjEyOjEyIDIwMTIgKzAxMDAKKworICAgIEZyZWVCU0QtOTogRml4IGZvciAnY29uc3QnaWZ5ZWQgbmxpc3QgYXJndW1lbnRzCisgICAgQmFja3BvcnQgb2YgZWQ2NWVjYTZlN2Y5Y2ZhNzM4MGE3OGQ1NmMwMWVkMzE0NzQ1YjE2OSBmcm9tIFY1LTYtcGF0Y2hlcworCitjb21taXQgN2U5NWQ4MGI2OTgwNTEyNTk2NDVjMDc0YTUzZmZkMjY0YTZmYTkxNgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgMiAxNjowNjo1NiAyMDEyICswMTAwCisKKyAgICBGcmVlQlNELTk6IEZpeCBmb3IgJ2NvbnN0J2lmeWVkIG5saXN0IGFyZ3VtZW50cworICAgIEJhY2twb3J0IG9mIGVkNjVlY2E2ZTdmOWNmYTczODBhNzhkNTZjMDFlZDMxNDc0NWIxNjkgZnJvbSBWNS02LXBhdGNoZXMKKworY29tbWl0IDFhOWI3YjdjMDJlMmRlZWZlOTk0ZDU5NWE3Y2MxZGQyZmZiZWVlMWQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMTU6NTE6MjAgMjAxMiArMDEwMAorCisgICAgRml4IGNvbXBpbGF0aW9uIG9uIEZyZWVCU0QgOS54IHdpdGggJ3JlY2VudCcgaGVhZGVyIHNodWZmbGluZworICAgIEJhY2twb3J0IG9mIGM1M2Q4YzM1MjVmNTkwZjIyMTNkMzViMGRhOTQxMjM4NjJmM2UzNjYgZnJvbSBWNS01LXBhdGNoZXMKKyAgICAoUGF0Y2ggIzMzNjMzMDggLSBvbWl0dGluZyB0d2Vha3MgdG8gY29uZmlndXJlKQorCitjb21taXQgM2Q5ZGRiNDFlMjYzYmMxYTc4ZjlmOTQ0MGI4ZDRhZDRmODZjODJlMQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgMiAxMDozNjoxOCAyMDEyICswMTAwCisKKyAgICBGaXggdHlwbworICAgIEJhY2twb3J0IG9mIDViNzAyYjAyNGI2MDE3NmQ3ZjU2OTliOTJlNTVkYTUwYThkZWFlNzEgZnJvbSBWNS02LXBhdGNoZXMKKworY29tbWl0IDBkMzVjNjA5NTY0YjY2YTFmZmU4MTU1NmQzN2FkZjA1MDNjMzg5Y2UKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMTA6MTU6MDggMjAxMiArMDEwMAorCisgICAgUHJvdmlkZSBtaXNzaW5nIGRlZmluaXRpb24gb2YgTkVUU05NUF9QUklvCisgICAgKHVzZWQgaW4gYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zb2xhcmlzMi5jKQorCitjb21taXQgYTc5MTQxYTQxOTk1M2QwMTBhNjk4OWU4Yjg4ZjRkZjEyNzM5NGQzOAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgMiAwOToxOToyNiAyMDEyICswMTAwCisKKyAgICBIZWFkZXIgZmlkZGxpbmcgZm9yIEZyZWVCU0QsT3BlbkJTRCxEcmFnb25mbHkKKyAgICBCYWNrcG9ydCBvZiBmN2IwZGUxNTE4MDAyYzZlOGY5Yjk0ZWYzZGViODg4MmUxZTkzMzhlIGZyb20gVjUtNy1wYXRjaGVzCisKK2NvbW1pdCBhZGY3NGJmNzUzZDM5NzAzNTdhZmQ2MzM4MDMyNTYyNDFkOWM3Yjg3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDA4OjIwOjQ2IDIwMTIgKzAxMDAKKworICAgIEZpeCBJUHY2IFRDUCAmIFVEUCB0YWJsZXMsICpCU0Qgc3VwcG9ydCAoaW5jbHVkaW5nIE9wZW5CU0QpCisgICAgQmFja3BvcnQgb2YgY29tbWl0cyA1Y2QxNTczNjI1NDcxYzA1ODNlOTA4N2FlYzY4MDJiNzcxNTdkNWEyCisgICAgICBhbmQgNTBkNzNmMGQ1NmZlMjJjNTkwNTMwYjNlMzA1ZDQxZGNkYWMzY2UwMCBmcm9tIFY1LTYtcGF0Y2hlcworCitjb21taXQgZDk1NTVhY2I5ZjQ3YzNhYThmZGU0YmMyMGE0NGQ3Y2E2MTgxYThhOQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIE1hciAyNSAxODo0ODoxMiAyMDEyICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBBdm9pZCBkYW5nbGluZyBwb2ludGVycyAoYmFzZWQgb24gcGF0Y2ggMzUwMzI1OSkKKworY29tbWl0IDgyYThiNDdlZTk2ZTVkMjlhMmI3YWMzY2EwMDcyMmQ3MzdkNWI0NzkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXIgMjkgMjI6MzE6NTYgMjAxMiArMDIwMAorCisgICAgUnVubmluZyBhdXRvaGVhZGVyIC8gYXV0b2NvbmYKKworY29tbWl0IDljYThkOTM5YWIzOTMzMDZhMWQwZjE0NmM5Y2I3MGVhMGNiMTlkNDkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXIgMjkgMjI6MzA6MzggMjAxMiArMDIwMAorCisgICAgUnVubmluZyBhdXRvaGVhZGVyIC8gYXV0b2NvbmYKKworY29tbWl0IGNlY2Q0ODY5ZGViNjhmM2Q0YzcxZTc2OGQ1YjQwZGQ1NzY0NDY5MjUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXIgMjkgMjI6Mjk6MzEgMjAxMiArMDIwMAorCisgICAgUnVubmluZyBhdXRvaGVhZGVyIC8gYXV0b2NvbmYKKworY29tbWl0IGExYTQ1MTNiZDNlNGU2MTQyMDBmNmRiNWEwMmY2MWQ2YzhlZWZiMzIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBXZWQgTWFyIDI4IDA5OjQ3OjQ1IDIwMTIgKzAxMDAKKworICAgIERveHlnZW4tc3R5bGUgZG9jdW1lbnRhdGlvbiBmaXhlcyAoYmFja3BvcnQgb2YgZ2l0IGNvbW1pdCBjMDk5MDNhNDJlOWQ5NzMzMWZkOWU0OGVlODMxYTg1YWZkZjljNzBhKQorCitjb21taXQgOWJkYmNjYTEyMmMzN2RhMzA0ZmM2YWE2OTM5NzI5NDc1ZjkwZjVmZAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFdlZCBNYXIgMjggMDk6MzA6NDkgMjAxMiArMDEwMAorCisgICAgRG94eWdlbi1zdHlsZSBkb2N1bWVudGF0aW9uIGZpeGVzIChiYWNrLXBvcnQgb2YgR0lUIGNvbW1pdCBjMDk5MDNhNDJlOWQ5NzMzMWZkOWU0OGVlODMxYTg1YWZkZjljNzBhKQorCitjb21taXQgMWY0YTgyOWIxODI3NWU0OTU2Y2E5MWU1ZWMzNzBkZjAxNWYwNjEzMworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBNYXIgMjcgMjE6NDE6MjQgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDM0OTU2OTc6IFN0b3JlIHBlcnNpc3RlbnQgc25tcFRhcmdldCB0YWJsZSBjaGFuZ2VzCisKK2NvbW1pdCAxZjc1ZjM3N2QwZGIwMTc1NGMwYzE2MWRjNDQzNzMwODFiZWVmNTIwCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE1hciAyNyAyMToxNDowNiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBGcmVlQlNEOiBQQVRDSEVTOiAzNDg5Mzg3OiBJbnN0YWxsIEZyZWVCU0QgMTAgaGVhZGVyIGZpbGUgKHBsdXMgb3RoZXIgbWlzc2luZyB2ZXJzaW9ucykKKworY29tbWl0IDNkNzJjOWU3OGYyYWQ4MTdjOWQxZDgyOTc3MzI3YmJiMjBkNjNhYjkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTWFyIDI3IDIxOjA2OjMxIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMzQ4Nzg2NzogRG9uJ3Qgc2tpcCBtaXNzaW5nIGlmWFRhYmxlIGVudHJpZXMgKGlmQ29ubmVjdG9yUHJlc2VudCBGQUxTRSkKKworY29tbWl0IDEyOTA2NTc4YWIzMGNmNzc2ZDA4MGMwZWYzMDI1YjMwMzM0ZDc2NTUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBNYXIgMjYgMTY6MTc6NDUgMjAxMiArMDIwMAorCisgICAgRElTTUFOLVBJTkctTUlCOiBGaXggZXZlbiBtb3JlIG1lbW9yeSBsZWFrcworCitjb21taXQgY2NmZDVjYTZmZTEwMzEzZDYxODFkMjRiYmIxNzk3ODI1YTk3ZGExMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE1hciAyNiAxNTo1MToxNiAyMDEyICswMjAwCisKKyAgICBESVNNQU4tUElORy1NSUI6IEVsaW1pbmF0ZSBkdXBsaWNhdGUgY29kZQorCitjb21taXQgOWZkYTI2Njg3MjJmMDhkZGJmZGQ2N2EyMjM5ZDhiMDIxZGI2NGE4MworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE1hciAyNiAxNTo0ODo0NiAyMDEyICswMjAwCisKKyAgICBESVNNQU4tUElORy1NSUI6IFdyaXRlIGEgbG9vcCBhcyBhIGxvb3AKKworY29tbWl0IGNiYzE4ZWI3NjNiYTZkZjY5ZWY3MDY2OGE1NGQ3NWJmMzVlNzk1MDMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBNYXIgMjYgMTU6MjQ6MDggMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogRml4IG1vcmUgbWVtb3J5IGxlYWtzCisKK2NvbW1pdCBjNzcyNTE5MjQ3OGFlYzAxOGZiNGFlZmE2MDk0NmUwNGE0MDZjMDBjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDI2IDEzOjQzOjI0IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IEF2b2lkIHJlYWRpbmcgZnJlZWQgbWVtb3J5IHdoZW4gZGVsZXRpbmcgYSByb3cgZnJvbSBhIHRhYmxlCisKK2NvbW1pdCBhNmJlNzM5NTY2ZjMxMGQ3NDQxZmQ3ZjU0OTg5ZTM5NDQ2ZjdhMTQzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDI2IDEzOjQyOjI4IDIwMTIgKzAyMDAKKworICAgIEV4dGVuZCBESVNNQU4tUElORy1NSUIgdGVzdAorCitjb21taXQgOGE5YjU3MjkxNDUzY2I4YWVjMjhlNzY2YzU5NDcwMWVkMTljNGZjNgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE1hciAyNiAyMTowMzo0MSAyMDEyICswMjAwCisKKyAgICBGaXggZm9yIERyYWdvbkZseSAzCisKK2NvbW1pdCBlNWM5YTMyZjc5ZWFjMmU4NTUyN2M5Y2YwNTA4N2NkYWU5YjM1YTZjCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTWFyIDI2IDIwOjU5OjUzIDIwMTIgKzAyMDAKKworICAgIERyYWdvbkZseSBuZWVkcyBfS0VSTkVMX1NUUlVDVFVSRVMgdG8gY29tcGlsZSBpcHY2IGNvZGUKKworY29tbWl0IGNkNDNiYzA5YTM5YmQ5N2ZmNWU3MTlhMmNlMjMyY2U0MjQ2MDBhNjUKK0F1dGhvcjogRGF2aWQgSW1ob2ZmIDxkaW1ob2ZmQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciAyNCAxNTo0NzoxNyAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSCAzNTEwNDU0OiBBbGxvdyB0aGUgdXNlIG9mIDAuMC4wLjAvMCBhcyBhbGlhcyBmb3IgZGVmYXVsdAorCitjb21taXQgZTJmYzE1ZjllNWE2ZTNlMzZiZTVmNDg5NjAxY2JmNmJmNzMxOTE3ZgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciAyNCAxNToyMTozOCAyMDEyICswMTAwCisKKyAgICBGaXggVENQIHN0YXRlIHZhbHVlcyBmb3IgRHJhZ29uRmx5CisKK2NvbW1pdCA0MzJmZTNkZGY1NGYyYzk4ZjkzNjk1OTQ2OWNiOWIwMTRkNTk5ZjA2CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgTWFyIDI0IDE1OjEwOjUyIDIwMTIgKzAxMDAKKworICAgIFJlcXVpcmUgcGVybCB0byBkbyBwYXNzX3BlcnNpc3QgdGVzdAorCitjb21taXQgMzdkMjc3MGNmNTBjOTgwMjNlZWJhOTBlMjVkMzcyYmZmNzMxNmFkYQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXIuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgTWFyIDI0IDE1OjA2OjQwIDIwMTIgKzAxMDAKKworICAgIEZpeCBUQ1Agc3RhdGUgdmFsdWVzIGZvciBEcmFnb25GbHkKKworY29tbWl0IDg2YTk0OGQ4NjkxZTg4MWQ1NTU5MWRjYWJkZGMyNzM5Y2U3MmIzMGUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUBuYmEtbGludXguc2Iuc3RhdHNiaWJsaW90ZWtldC5kaz4KK0RhdGU6ICAgU2F0IE1hciAyNCAxNTowMTozNyAyMDEyICswMTAwCisKKyAgICBQcm9wZXJseSBmaW5kIHBhc3MgaGVscGVycyBmb3IgdGVzdGluZy4KKworY29tbWl0IGZlMjZhM2M0ZjI5ZjA0NmJmNjVlZDUyZTlkOTQwNTRiNjc1ZmJjNGIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBNYXIgMjIgMDk6MDQ6NDIgMjAxMiArMDEwMAorCisgICAgRElTTUFOLVBJTkctTUlCOiBMaW1pdCBzb3VyY2UgY29kZSBsaW5lcyB0byA4MCBjb2x1bW5zCisKK2NvbW1pdCA3NDViYWZjZGNjOWM4ZTg0NjE2ZDRlMjc0ZGIyYTM4NGJmMjM0ZGEyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgTWFyIDIyIDA4OjU1OjA1IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IE1ha2UgcGluZyBpbXBsZW1lbnRhdGlvbiBpbmRlcGVuZGVudCBvZiBudHBkIGNsb2NrIGp1bXBzCisKK2NvbW1pdCBkYTY5MjVlNjc2M2NhZGJlMDJmNGE4YmJmZTY4YTM2MmU1MzVhZDVlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTWFyIDIwIDEwOjM4OjM2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IEFkZCB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxNTRkaXNtYW5waW5nbWliX3NpbXBsZQorCitjb21taXQgZmE2MDZkZDdjYTZhZmY5MzA4ZDRlOGIwMWJiY2RlMTQ4ZjQ0MTI3MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciAyMCAxNjo0OToyMSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBNYWtlIHBpbmdpbmcgbG9jYWwgaW50ZXJmYWNlIGFkZHJlc3NlcyB3b3JrCisKK2NvbW1pdCA2MTdhODNiYTc5OTU3NWM4NGM2NmY2YjFjNDgwZWY2MzMxNjFhNjRjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTWFyIDIwIDE2OjI4OjQ2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IEZpeCBhIHNvY2tldCBsZWFrIHRyaWdnZXJlZCBieSBwaW5naW5nIGEgcmVtb3RlIGhvc3QKKworY29tbWl0IDYyNWY1NWMyNzJlYzYyODFlMzhkOGUzMGViNTNmZDUxNTE2YjAwYWUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBNYXIgMjIgMDk6NTQ6NTUgMjAxMiArMDEwMAorCisgICAgRElTTUFOLVBJTkctTUlCOiBDb252ZXJ0IGEgZHluYW1pY2FsbHkgYWxsb2NhdGVkIHZhcmlhYmxlIGludG8gYSBzdGFjayB2YXJpYWJsZQorCitjb21taXQgYjQ4ZjE5YWQ0YjRhYTY4YzNlMTZlMmE3MmRmMzdiOWMwY2QzNmM0YQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciAyMCAxNjoyNDowNyAyMDEyICswMTAwCisKKyAgICBESVNNQU4tUElORy1NSUI6IEFkZCBtb3JlIGRlYnVnZ2luZyBzdGF0ZW1lbnRzCisKK2NvbW1pdCBkNzRjYjM5NjYxNzU4OTI1NjJmNWUzYTliMTY4M2FjYmEyYzIyZTA3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTWFyIDIwIDExOjQ1OjE4IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IEZpeCBzZXZlcmFsIG1lbW9yeSBsZWFrcworCitjb21taXQgMGIxYTc3Njc0Njc4Y2M5YTE1YmUzZTc3MDBkM2NlZjY1MGVkMDJjNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciAyMCAxMjowMDozMCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBEbyBub3Qgc2VuZCB0aGUgY29udGVudHMgb2YgdGhlIHN0YWNrIG92ZXIgdGhlIG5ldHdvcmsKKworY29tbWl0IDEzOTAyM2NkM2FiNTE2MzFjYzEwZTI4NjZkNzFhYmNmOTlhZTRjMWIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBNYXIgMjEgMDg6NTY6MDcgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogRG9uJ3QgY2FsbCBleGl0KCkgdXBvbiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlCisKK2NvbW1pdCAxNjliNmFhYTdiNjE4MjdjYzFhZDBiM2FlZWFlM2E3MjI5ZGQyNWQ4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTWFyIDIxIDA4OjUzOjI2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IEZpeCBJUHY2IHNvY2tldCBsZWFrIGluIGVycm9yIHBhdGhzCisKK2NvbW1pdCBhMGJlMzJhZDA1M2E3MWZhOTYxMzRkNTVlNTQyYmIwN2Q0ZjAyOTdkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTWFyIDIwIDExOjQzOjQ2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IEF2b2lkIHRoYXQgaG9zdCBuYW1lIHJlc29sdXRpb24gZmFpbHVyZSBjYXVzZXMgYSBjcmFzaAorCitjb21taXQgYmY5YmZmNjQ1NTY3ODdkNzY2ZWUyZWYyZDU3OGFmYjkyMDcxOWYzYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE1hciAyMSAwODo1MTo1NSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBDb252ZXJ0IHByaW50ZigpIHN0YXRlbWVudHMgaW50byBzbm1wX2xvZygpIGFuZCBERUJVR01TRygpLXN0YXRlbWVudHMuCisKK2NvbW1pdCA1ZDc0YzAxMjQ1NTIzYTlkOGRiMWVkYTI3ZDFlZmFlMmViYzEwNGZiCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWFyIDIxIDE4OjQwOjAyIDIwMTIgKzAxMDAKKworICAgIE5ldyBNSUI6IFZSUlBWMy1NSUIKKworY29tbWl0IDViMzhmMDYyYjk5YjZlZjM2NzA4ZTJjN2RlNDk2NWEzMTkyNjEyZTkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXIgMjEgMTg6MzQ6NDggMjAxMiArMDEwMAorCisgICAgRm9yIHNhZmV0eSwgc2l6ZW9mIHRoZSByaWdodCB2YXJpYWJsZSBpbiBtZW1jcHkKKworY29tbWl0IGU1ZjgyNzgyZGEwNWVmYTdjMGU2ZGMyYmY1YTQxZWUxMTg2OGY0NjkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXIgMjEgMTg6MzM6MjEgMjAxMiArMDEwMAorCisgICAgRml4IGZvciBoclNXUnVuIGRhdGEgZm9yIEZyZWVCU0QKKworY29tbWl0IDgzMjc1NjVlODIzMjcwZDEwYTQ1MDQ1NjhlZGJlNWI1YWUzMjNhNTUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXIgMjEgMTg6MzE6NTQgMjAxMiArMDEwMAorCisgICAgQ2xlYW4gdXAgdmFyaWFibGVzIGZvciBPcGVuQlNEL05ldEJTRAorCitjb21taXQgMTcwZjZmMDI3YmY0ZjkxNzRiNzA3MzUzMGRhNGQwN2Y0MDBiYmE1OAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1hciAyMSAxODoyODo1OCAyMDEyICswMTAwCisKKyAgICBNb3ZlIGRlY2xhcmF0aW9ucyBpbiBmcm9udCBvZiBzdGF0ZW1lbnRzCisKK2NvbW1pdCBkYmI0NTczYjY5ZmFlODVjZGM5MzFiMjg5MmI1Y2U0ZTViMTZiMzIxCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWFyIDIxIDE4OjIzOjM2IDIwMTIgKzAxMDAKKworICAgIFJlcXVpcmUga2VybmVsX25ldGJzZCBmb3IgTmV0QlNENgorCitjb21taXQgZjExNjgxZjE1YWFkN2Q5YTUyZmEyOTgxMmVjYmI1MDdmMWI3ZmUyNAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFdlZCBNYXIgMjEgMTI6MzY6MzggMjAxMiArMDAwMAorCisgICAgQ2hlY2sgZm9yIG9sZCB0YXJiYWxscyAoYW5kIHVucGFja2VkIGRpc3RyaWJ1dGlvbnMpIGJlZm9yZSBzdGFydGluZy4KKyAgICBUaGVzZSBjYW4gY29uZnVzZSBzdGVwcyBzdWNoIGFzICJtYWtlIGRlcGVuZGNoZWNrIiwgdGhhdCBkbyBhICdmaW5kJworICAgIG9uIHRoZSBjdXJyZW50IHRyZWUsIGFuZCB3b3VsZCBkZXNjZW5kIGludG8gc3VjaCB1bnBhY2tlZCBzb3VyY2UgdHJlZXMuCisKK2NvbW1pdCA0NzBkY2Q0YjZjM2ZmMTFmZjBhMzUzMmE3MzQwYTU2Y2ZmZDY5MDk4CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgV2VkIE1hciAyMSAxMjozMjoxMyAyMDEyICswMDAwCisKKyAgICBEb24ndCBydW4gIm1ha2UgZG9jczsgbWFrZSBtYW5jcCIgaWYgdGhlcmUncyBubyBNYWtlZmlsZSBwcmVzZW50CisKK2NvbW1pdCBjOWFjNDIwMzQzZTE2ZGYyYjcwNjVmNWJmMjc5MGRmNDRlMjQ3ZmJhCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE1hciAyMCAxMDoyNjoxMCAyMDEyICswMDAwCisKKyAgICBBbGxvdyBkaXN0cmlidXRpb24gYXMgcGFydCBvZiBub3JtYWwgTmV0LVNOTVAgcGFja2FnZXMuCisKK2NvbW1pdCA1OTk5ZjYwYzU3NzIzZjIzZjNjMjU0YWY1N2ZkYjEwYWYzMDFhOGViCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gTWFyIDE4IDE5OjAzOjA4IDIwMTIgKzAxMDAKKworICAgIFJlZ2VuZXJhdGUKKworY29tbWl0IDI3NWQyMDQwMzZhNjA3ZTNkZjUwZTg0NDdkNGJjNzU1ZTlkYjAyZmQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBBdWcgMjggMjE6Mjk6MDMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IE1ha2UgaXQgcG9zc2libGUgdG8gdXNlIC0tZGlzYWJsZS1hcHBsaWNhdGlvbnMvLS1kaXNhYmxlLWFnZW50IHRvZ2V0aGVyIHdpdGggLS1lbmFibGUtbWluaW1hbGlzdAorCitjb21taXQgYmRjY2M4NzU3MTAyOTVhYWNmNTBmNzFlYjFjMWQyZWU5N2YzMzZmZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgRnJpIE1hciAxNiAyMDoxMDo1OCAyMDEyICswMTAwCisKKyAgICBEbyBub3QgZGVjbGFyZSB0aGUgbG9jYWwgdmFyaWFibGVzIGZvciBvcGFxdWVfc3BlY2lhbF90eXBlcyB1bmxlc3MgdGhhdCBvcHRpb24gaXMgc2V0LgorCitjb21taXQgYjgwYTY3ZGEwNTJhZGNhMWI1YTY0NGRiODNhNzgyZTE1YzIyMzdjMworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgRnJpIE1hciAxNiAxOTo1MDowMyAyMDEyICswMTAwCisKKyAgICBDaGVjayB0aGF0IHRoZSBkYXRhIGV4aXN0IGJlZm9yZSB0cnlpbmcgdG8gcmVhZCBpdAorCitjb21taXQgZWZhZTg2YmJhNTk2MjQ5MWQ0MmI3N2I5MzUxOTFhM2ViMjVkZDkzOQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgV2VkIE1hciAxNCAwMTowNTozMyAyMDEyICswMTAwCisKKyAgICBQYXJ0aWFsbHkgcmV2ZXJ0ICJNZXJnZSByZW1vdGUgYnJhbmNoICdvcmlnaW4vVjUtNy1wYXRjaGVzJyBpbnRvIFY1LTctcGF0Y2hlcyIKKyAgICAKKyAgICBDb21taXQgZDM1YTE4NjAyMTdlNzIzZTRmODY2ZGQ5OGVmNjYyMTY2NTkzNGM0YSBhY2NpZGVudGFsbHkgcmV2ZXJ0ZWQKKyAgICAKKyAgICA0YTJlNWJjZDU2Y2QyYWZiMzZlYjE1ZDc1NGUyZmVlODg4ZGQ1MGMwIChocmhfc3RvcmFnZSBpcyBhIHByb3BlciByZXBsYWNlbWVudCBmb3IgaHJfc3RvcmFnZSkKKyAgICAwZGQxZTU0NTU3ZDFiYTQ5OGI1NWQwMTdiMGE5M2U4Y2NmOWJkNTIyIChDSEFOR0VTOiBzbm1wZDogVURQLU1JQjogUmVwb3J0IHRoZSBwcm9wZXIgYWRkcmVzcyBpbiB1ZHBMb2NhbEFkZHJlc3MpCisgICAgNTExNmQ0ODM3OGVjZjAzZTcyMmYzMDEwYWQ0N2JmMjJhM2ZiY2I4YyAoUmVkdWNlIHNjb3BlIG9mIHByZWZpeF92YWwgc3VjaCB0aGF0IHRoZSBjb21waWxlciBkb2Vzbid0IHdhcm4gYWJvdXQgYW4gdW5zZWQgdmFyaWFibGUpCisgICAgMTBmNTY2ZjRkNGNiYjNlMjA1MDIzYzIzNjY5Mjg5ZTRiZmQwODljYiAocGVybC9TTk1QL1NOTVAueHM6IEZpeCBhIGNvbXBpbGVyIHdhcm5pbmcpCisgICAgCisgICAgYW5kIHBhcnQgb2YKKyAgICAKKyAgICA2ZTc0ZDY0Zjg1YTU5ZDUwZTQ2MWRiNGMzNGFjNzZmOWRlNDY4YmZiIChBdm9pZCB1c2luZyBncmVwIG9wdGlvbnMgLXEgYW5kIC13IGJlY2F1c2UgZ3JlcCBpbiBTb2xhcmlzKQorICAgIAorICAgIFRoaXMgcmV2ZXJ0cyB0aG9zZSByZXZlcnRzLgorCitjb21taXQgYWFlZGQ1OWNjMmRhNzAxNTI3ZGMyZDI2MWQ0ZTlmODVmMTZlNzUwNAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE1hciAxMSAyMDo1NzozOCAyMDEyICswMTAwCisKKyAgICBBbGxvdyBtYWtlIHRlc3Qgd2hlcmUgdGhlIHNvdXJjZSBwYXRoIGNvbnRhaW5zIHRoZSBzdHJpbmcgTmV0LVNOTVAgdG8gc3VjY2VlZC4KKworY29tbWl0IDRiOTRkNzk2OTE4YTRlZWFlNjhhYjIxYWE1M2Q0NDRhOGI1YzI5MjEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBNYXIgOSAwODowNDo1OSAyMDEyICswMTAwCisKKyAgICBVbmJyZWFrIGNvbXBpbGF0aW9uIG9uIEZyZWVCU0QgNAorCitjb21taXQgMTBmZTZiODMzMjRhZDM3ZDE4YjkzN2NjOGM2ZGU5NGRlNTM0ZDAzNQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXIgOCAxMzowNDowNyAyMDEyICswMDAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS42LjIucHJlMQorCitjb21taXQgZTExMjJlZGMxYTVmZTc5NzZiMDY1MDQ0MTM0ZDM5ZTdkYjU5ODVlYQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXIgOCAxMjo0MzoxOSAyMDEyICswMDAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS42LjIucHJlMQorCitjb21taXQgYTYxM2QzYTgzNDkxMjIwNmQxYmE1OTcxZTQ0MWEzZWE2YjM2YWYyMworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXIgOCAxMjozMzowMyAyMDEyICswMDAwCisKKyAgICBtYWtlIGRlcGVuZCBmb3IgNS42LjIucHJlMQorCitjb21taXQgMGVmMzRlNjUxOWRmY2I4MmM5N2RmODQyNzU0N2MwOGRjZjgxZTY5YQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXIgOCAxMDoxMTozMCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRml4ZWQgc25tcGQgJy1kJyBvcHRpb24uCisgICAgCisgICAgTm93IGl0IGR1bXBzIHBhY2tldHMgYWdhaW4uCisKK2NvbW1pdCA4ZTY5NzQyZjE0M2U0ZmMxMTE5NmU1YjJlZDY2YzhmN2Y1M2ZkMDJmCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE1hciA2IDA5OjI0OjIxIDIwMTIgKzAwMDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS42LjIucHJlMQorCitjb21taXQgYzRlMDBiOGMzZTEwMTBjZGNhYjVlNmMwMmQ2MGQ3NWRmOWM2ZGNmMgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBNYXIgNiAwOToyNDowNSAyMDEyICswMDAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS42LjIucHJlMQorCitjb21taXQgMzk0OTAxMDRhM2FiNTgyMzVhYWNlMmY5ZDg3MWMyNjZkYzQ0ODVlZQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXIgNSAwOTowNjo1MiAyMDEyICswMDAwCisKKyAgICBNYXJrIHRoZSBjaGFuZ2VzIG1ha2UgYXMgcGFydCBvZiB0aGUgcmVsZWFzZSBwcm9jZXNzIGFzIHNwZWNpZmljIHRvCisgICAgdGhlIHBhcnRpY3VsYXIgYnJhbmNoIGJlaW5nIHJlbGVhc2VkLiAgVmVyc2lvbiB0YWdzLCBjaGFuZ2Vsb2cgZW50cmllcworICAgIGFuZCB0aGUgbGlrZSBzaG91bGRuJ3QgcHJvcGFnYXRlIHRvIGxhdGVyIGJyYW5jaGVzLgorCitjb21taXQgNGEyZTViY2Q1NmNkMmFmYjM2ZWIxNWQ3NTRlMmZlZTg4OGRkNTBjMAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE1hciA1IDIwOjU5OjM4IDIwMTIgKzAxMDAKKworICAgIGhyaF9zdG9yYWdlIGlzIGEgcHJvcGVyIHJlcGxhY2VtZW50IGZvciBocl9zdG9yYWdlCisKK2NvbW1pdCBjZTg1ODMyOTMyY2NkOTE2YzQyMzE5MTE0YzQwODg1YTQ2NmE5ZDBlCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTWFyIDUgMjA6NTY6NDAgMjAxMiArMDEwMAorCisgICAgTW9yZSBmaXhlcyBmb3IgU29sYXJpcyBzaAorCitjb21taXQgMGRkMWU1NDU1N2QxYmE0OThiNTVkMDE3YjBhOTNlOGNjZjliZDUyMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE1hciA1IDE1OjA4OjI2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBVRFAtTUlCOiBSZXBvcnQgdGhlIHByb3BlciBhZGRyZXNzIGluIHVkcExvY2FsQWRkcmVzcyBpbnN0ZWFkIG9mIDAuMC4wLjAuIE1ha2VzIHRlc3QgVDE2MHNubXBuZXRzdGF0IHBhc3MgYWdhaW4uIEZpeGVzIGEgYnVnIGludHJvZHVjZWQgaW4gY29tbWl0IGM3NmZiOTZmNjVlMzNiYTJmZDIxMmE5MjFlOGMzODYxNTVlZTVjN2EuCisKK2NvbW1pdCA1MTg5MTdlOWYzOWY3YTlkM2MzYmYzYTg2NWU4YWMwZTMwMjZkNjAwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDUgMTQ6MDQ6NTQgMjAxMiArMDEwMAorCisgICAgc25tcGxpYi9zbm1wVURQRG9tYWluLmM6IEZpeCBzb3VyY2UgY29kZSBpbmRlbnRhdGlvbgorCitjb21taXQgMjY1MTkwOWNjY2VhYmZjZmFkYWY5NDJjMDI0NTBlMjhmZTgzN2RjOQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE5vdiA5IDEyOjA0OjA0IDIwMTAgKzAwMDAKKworICAgIFBhc3NlcyBub3cgb24gTWluR1cgdG9vLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5NjUzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZTQxZjExNWU0MDMwNGM5NDFiYTE3ZDY3ZTI0NzEwNzIyZDkwNzQxYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE1hciA1IDEzOjM5OjE3IDIwMTIgKzAxMDAKKworICAgIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IEF2b2lkIHVzaW5nIGdyZXAgb3B0aW9ucyAtdyBhbmQgLXEgYmVjYXVzZSBncmVwIGluIFNvbGFyaXMnIGRlZmF1bHQgcGF0aCBkb2Vzbid0IHVuZGVyc3RhbmQgdGhlc2UuCisKK2NvbW1pdCA1MTE2ZDQ4Mzc4ZWNmMDNlNzIyZjMwMTBhZDQ3YmYyMmEzZmJjYjhjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDUgMTA6NDc6MjAgMjAxMiArMDEwMAorCisgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jOiBSZWR1Y2Ugc2NvcGUgb2YgcHJlZml4X3ZhbCBzdWNoIHRoYXQgdGhlIGNvbXBpbGVyIGRvZXNuJ3Qgd2FybiBhYm91dCBhbiB1bnNlZCB2YXJpYWJsZSBpZiBpdCBpc24ndCBuZWVkZWQuCisKK2NvbW1pdCA2ZTc0ZDY0Zjg1YTU5ZDUwZTQ2MWRiNGMzNGFjNzZmOWRlNDY4YmZiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDUgMDk6MjI6MzEgMjAxMiArMDEwMAorCisgICAgdGVzdGluZy9ldmFsX3Rvb2xzLnNoOiBBdm9pZCB1c2luZyBncmVwIG9wdGlvbnMgLXEgYW5kIC13IGJlY2F1c2UgZ3JlcCBpbiBTb2xhcmlzJyBkZWZhdWx0IHBhdGggZG9lc24ndCB1bmRlcnN0YW5kIHRoZXNlIG9wdGlvbnMuCisKK2NvbW1pdCAxMGY1NjZmNGQ0Y2JiM2UyMDUwMjNjMjM2NjkyODllNGJmZDA4OWNiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDUgMTA6NDc6MzkgMjAxMiArMDEwMAorCisgICAgcGVybC9TTk1QL1NOTVAueHM6IEZpeCBhIGNvbXBpbGVyIHdhcm5pbmcKKworY29tbWl0IDQ0YWEyNjU4OTFjZDU2M2Y3ZjQxMTRlZjI1ZGNmN2FhZjNiMTRlOWEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWFyIDUgMDk6MDY6NTIgMjAxMiArMDAwMAorCisgICAgTWFyayB0aGUgY2hhbmdlcyBtYWtlIGFzIHBhcnQgb2YgdGhlIHJlbGVhc2UgcHJvY2VzcyBhcyBzcGVjaWZpYyB0bworICAgIHRoZSBwYXJ0aWN1bGFyIGJyYW5jaCBiZWluZyByZWxlYXNlZC4gIFZlcnNpb24gdGFncywgY2hhbmdlbG9nIGVudHJpZXMKKyAgICBhbmQgdGhlIGxpa2Ugc2hvdWxkbid0IHByb3BhZ2F0ZSB0byBsYXRlciBicmFuY2hlcy4KKworY29tbWl0IGRhZTRlMTZiZTg2MTE3ODYxZjYzZDFhMmY5ODFhZDM2MTQxOGY1YzYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWFyIDUgMDk6MDY6NTIgMjAxMiArMDAwMAorCisgICAgTWFyayB0aGUgY2hhbmdlcyBtYWtlIGFzIHBhcnQgb2YgdGhlIHJlbGVhc2UgcHJvY2VzcyBhcyBzcGVjaWZpYyB0bworICAgIHRoZSBwYXJ0aWN1bGFyIGJyYW5jaCBiZWluZyByZWxlYXNlZC4gIFZlcnNpb24gdGFncywgY2hhbmdlbG9nIGVudHJpZXMKKyAgICBhbmQgdGhlIGxpa2Ugc2hvdWxkbid0IHByb3BhZ2F0ZSB0byBsYXRlciBicmFuY2hlcy4KKworY29tbWl0IDI4ZjYyMjZmMmUyMjhiOGNhMjQ4NDg5NzM1Zjg2NTAyYjJjY2UwYTEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWFyIDUgMDk6MDY6NTIgMjAxMiArMDAwMAorCisgICAgTWFyayB0aGUgY2hhbmdlcyBtYWtlIGFzIHBhcnQgb2YgdGhlIHJlbGVhc2UgcHJvY2VzcyBhcyBzcGVjaWZpYyB0bworICAgIHRoZSBwYXJ0aWN1bGFyIGJyYW5jaCBiZWluZyByZWxlYXNlZC4gIFZlcnNpb24gdGFncywgY2hhbmdlbG9nIGVudHJpZXMKKyAgICBhbmQgdGhlIGxpa2Ugc2hvdWxkbid0IHByb3BhZ2F0ZSB0byBsYXRlciBicmFuY2hlcy4KKworY29tbWl0IDQwMDIyYTY5Nzk1ODI1OWNjZmJiM2ZlZDQ0ZWIzYzQ3MmY1ZTgzN2UKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBNYXIgNCAxMDozNzo0MSAyMDEyICswMTAwCisKKyAgICBTb2xhcmlzIHNoIGRvZXMgbm90IHVuZGVyc3RhbmQgInRlc3QgLWUiCisKK2NvbW1pdCA3NzNhZjBjNDJlMDc3YmViZGFlY2YxYzBjYWYzOTMyODVhNzY4OGYxCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgTWFyIDMgMTc6MTk6MzAgMjAxMiArMDEwMAorCisgICAgQ2xlYW4gdXAgbnNyb2xsdXAgY29tcGxpY2F0aW9ucworCitjb21taXQgZWU3MTA0OWMzZTIxYzFkMGUzNDI0Mjk3MTM2NjUyYmJlMGUzOWQ4NQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciAzIDE2OjQ5OjQxIDIwMTIgKzAxMDAKKworICAgIG1pYmdyb3VwL2ljbXAuYzogYWRqdXN0IGlmZGVmcyB0byBtYWtlIGl0IGNvbXBpbGUgb24gQlNEJ3MKKworY29tbWl0IGNlOTYwMDM2MWU2NjVkZGUxN2FmOWQ4YWIxNmQ3Y2U4NWRjMDU2NDMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXIgMiAyMTozOTo1NSAyMDEyICswMTAwCisKKyAgICBkb3QzU3RhdHNUYWJsZSBoYXMgYnVncyA6LSgKKworY29tbWl0IGRmZmFjZjZmYTA3NTVlMTcwMGNiYWMyNWI4NDQxODVhYmQ4MDdhMGEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXIgMiAyMTozODoxMCAyMDEyICswMTAwCisKKyAgICBwYXNzcGVyc2lzdCB0ZXN0IG5lZWRzIC91c3IvYmluL3BlcmwKKworY29tbWl0IDg3MjY5OTVjN2E4YWVmNjc0YzRmMTY0YjE4NzFjMzdiYmRjZGFkNTAKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXIgMiAyMTozNjo1OCAyMDEyICswMTAwCisKKyAgICBncmVwIC13IGZhaWxzIHdpdGggT3BlbkJTRCBhbmQgU29sYXJpcyAxMC02NAorCitjb21taXQgMWViNDc0NWIyM2NjM2E4Mzk4NjRlN2Y2ZWEyODM1NWIwNTY2ZWI2NworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1hciAyIDIxOjM1OjQ5IDIwMTIgKzAxMDAKKworICAgIFNvbGFyaXMgbmVlZHMgL3Vzci94cGc0L2Jpbi9ncmVwIHRvIHVuZGVyc3RhbmQgLXEKKworY29tbWl0IDk5NTRiNGI3NDFmZDhjNjNkNjEyOGJkMDUyNzI5OGM4ZTRlOTg5ZmMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXIgMiAyMTozNDo0NSAyMDEyICswMTAwCisKKyAgICBNYWtlIHN1cmUgd2UgaGF2ZSB0aGUgcHJvcGVyIHNyY2RpciBmb3Igb3V0LW9mLXNvdXJjZSBidWlsZHMKKworY29tbWl0IDc4MzY5MDAyYmUyNzExZjBhYTg3NmI2NGE0ZTEwYjA5MGNjMjQxY2QKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXIgMiAyMTozMzozMSAyMDEyICswMTAwCisKKyAgICBOb3QgYWxsIG1ha2UgdmVyc2lvbnMgZGVmaW5lICQoUk0pCisKK2NvbW1pdCA5NDI0NWIyOWEzY2RhODk0NzVjNmVhYjVkOTQ5M2M2NjU3ZmYzOGUzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWFyIDIgMjE6MjQ6MjQgMjAxMiArMDEwMAorCisgICAgTWFrZSBhdXRvY29uZiAyLjY4IGhhcHB5CisKK2NvbW1pdCA0NGFjZDZjMjg1ZmI1NjE0YjRjOTYxMWIxYWJkZWNhOWRkMjhlNGJiCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWFyIDIgMjE6MTI6NDcgMjAxMiArMDEwMAorCisgICAgRml4IHNwZWxsaW5nIG9mIG1pYiBtb2R1bGUgZnN5c19nZXRmc3N0YXRzCisKK2NvbW1pdCAxZmExZmVlMzY5M2Y2N2I4MjAyMjM4MDZiM2Q3M2FmZDRjNTBlYzE4CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgTWFyIDIgMDE6Mzc6MjAgMjAxMiArMDEwMAorCisgICAgU2lsZW5jZSBhIGNsYW5nIHdhcm5pbmcuCisKK2NvbW1pdCA5MzI2M2I5OGE1ZGIzNDRjZjJjNGQ0ODljNDM5NzFlN2IyOWNkYjAzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1hciAxIDEzOjM3OjIwIDIwMTIgKzAwMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjUuMi5wcmUxCisKK2NvbW1pdCA1YTE3NTQyOGI5NzNkMmVhODU1M2UyOWZlY2Y5NGNmMTU2NmFhODU4CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1hciAxIDExOjQ4OjE4IDIwMTIgKzAwMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjUuMi5wcmUxCisKK2NvbW1pdCAzNjQyNzZhMWM1YWE2NmNhYTIzZWI1YjdmMTExZmRlYjVhZjcxZmE3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1hciAxIDExOjQ1OjEwIDIwMTIgKzAwMDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjUuMi5wcmUxCisKK2NvbW1pdCA3MzU5ODM0MDE3MmVmZjc1NzI5YTZkNTcxOTJiODE3MWQ1YmJmMDBlCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1hciAxIDEwOjQyOjU2IDIwMTIgKzAwMDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS41LjIucHJlMQorCitjb21taXQgZjMyMTQ0MDI2NzJjYTE5OWZkNTMxZTY2MTIyYmY5NmM0ZDlhNGViNworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXIgMSAxMDo0MjozOSAyMDEyICswMDAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS41LjIucHJlMQorCitjb21taXQgMmU3NGFjYjZmMTllNDcyOWNlZGUwYWI0M2U5MzE5NjFjYjIzYWFlYQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVGh1IE1hciAxIDA5OjE4OjM5IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IEJ1ZyAzMTUyODQxOiBEbyBub3QgaW5zdGFsbCB0aGUgdXRpbF9mdW5jcyBzdWJoZWFkZXJzIHRoYXQgd2VyZSByZW1vdmVkIGluIDUuNworCitjb21taXQgYjcxMDk2NDZiOTVhNzA3MTNkMWFkOTkxZDQxYmNjZDU3YzBiYjNlYgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVGh1IE1hciAxIDA4OjQ4OjQ4IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IEJ1ZyAzMTUyODQxOiBJbnN0YWxsIHV0aWxfZnVuY3Mgc3ViaGVhZGVycyBpbnRyb2R1Y2VkIGluIDUuNgorCitjb21taXQgNDMyY2JiN2E1NTAxYWI5MGQ2NmQwYTgzZTczMWU3MzQzYmMwNGIzNworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IEZlYiAyNSAxMDoxMzoxNSAyMDEyICswMTAwCisKKyAgICBDb3JyZWN0IHR5cG9zCisKK2NvbW1pdCA2YTZjOWJiYzc1ODRmMTk2YTExODVjYzE5MzUyMDRmMTIwNjgxMWVkCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBXZWQgRmViIDI5IDA4OjU1OjM1IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IEJ1ZyAzMTUyODQxOiBJbnN0YWxsIHV0aWxfZnVuY3Mgc3ViaGVhZGVycworCitjb21taXQgZDUxNWUyYTZlNGMyYTFjNGQ4NDczNGNjN2IyZDBiMmZjNWE4OTRhZAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBGZWIgMjggMTU6NTY6MjEgMjAxMiArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDM0ODc5MTk6IEZpeCBjb21waWxhdGlvbiB3aGVuIGNhY2hpbmcgaXMgZGlzYWJsZWQKKworY29tbWl0IGFmODM2OGVkODg5OGE3OGQwODY4YjQ3YWY0NmJjOWRiMDdkMWM3NjQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRmViIDI4IDE1OjUwOjU2IDIwMTIgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIRVM6IDM0MTQ3NzM6IEVuY29kZSBpbnRlZ2VyIHZhbHVlIHVzaW5nIEFTTl9JTlRFR0VSCisKK2NvbW1pdCAxOWUyNzE1ODA3ZmUwNmZkMGJhZWRmODgxNjUwMTFhZWU5MzNlNzU1CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAxNDowNTozNCAyMDEyICswMDAwCisKKyAgICBDSEFOR0VTOiBtYW46IEJVR1M6IDM0OTA3MDg6IENsYXJpZnkgdXNlIG9mIGNvbW1vbiBjb21tYW5kLWxpbmUgb3B0aW9ucworCitjb21taXQgNjVmNzk2MmY5MzJjOWI3NWM1YmJiYjA0N2QxZTI2YWU2MDk3OGU1MworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBGZWIgMjggMTI6MjM6MzQgMjAxMiArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEJVR1M6IDM0ODk2MzE6IEZpeCBpbmNvcnJlY3QgaGFuZGxpbmcgb2YgVUNEIG1vbml0b3JpbmcgZmxhZworCitjb21taXQgYWMxNjYwNTFiNmEwOTJkZDRhNTk0MzI2ZWM4NWUyZjY5OWI2MjU0NworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBGZWIgMjggMTE6NTc6NDEgMjAxMiArMDAwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogQlVHUzogMzQ3NDU5MDogRG9uJ3QgbWF0Y2ggdW5kZXJzY29yZXMgd2l0aGluIHRoZSBzb3VyY2Ugcm9vdCBmaWxlbmFtZQorCitjb21taXQgODc5YmY3MDc5ZDM0ZmE0NmY2ZmNmNTRhMDFjODUwMGJlYWVjZTU5YQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBGZWIgMjggMTA6NDQ6NDEgMjAxMiArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEJVR1M6IDM0NjAzNjQ6IEZpeCB1c2Ugb2YgYmxvY2sgZmFjdG9yIHdoZW4gZGV0ZWN0aW5nIGVycm9yIGNvbmRpdGlvbnMKKworY29tbWl0IDAzNGYxYzU3MmY2ODNlYTQyODU4MzA3NDQ3MWU1ZDVkMTNiNTE4MzcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRmViIDI4IDEwOjIyOjIwIDIwMTIgKzAwMDAKKworICAgIFNraXAgU0VULWJhc2VkIHRlc3RzIHdoZW4gY29uZmlndXJlZCB1c2luZyAtLWVuYWJsZS1yZWFkLW9ubHkKKworY29tbWl0IDM2NDIzZTIxMGJmYjY1ZWYxMjFjNmE2NmFlYzQzOGM3YzIzN2QzZGYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRmViIDI4IDEwOjAzOjI1IDIwMTIgKzAwMDAKKworICAgIENIQU5HRVM6IEJVRzogMzQ1NDE2ODogY29uZmlndXJlOiBGaXggYnVpbGRpbmcgd2l0aCAtLWVuYWJsZS1yZWFkLW9ubHkKKworY29tbWl0IGVlZDBiY2JjNDNmZWExODI1OWYwZjYzYjIwODFiNmQxMDUzNWEwNTIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRmViIDI4IDA5OjI3OjExIDIwMTIgKzAwMDAKKworICAgIFNraXAgU0VULWJhc2VkIGJhYnktc3RlcHMgd2hlbiBjb21waWxlZCB3aXRoIC0tZGlzYWJsZS1zZXQtc3VwcG9ydC4KKyAgICBJbnNwaXJlZCBieSBidWcgIzM0NTQxNjgKKworY29tbWl0IGVjNmEyMzAzMGU1YTIwNzJjMTljMThjMWQ5YzEyNDM4N2RhNTZiN2IKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgMjcgMTg6NDI6NTggMjAxMiArMDAwMAorCisgICAgQWRkIC1scnQgdG8gTkVUU05NUExJQlMgc3VjaCB0aGF0IGNsb2NrX2dldHRpbWUoKSBjYW4gYmUgZm91bmQKKworY29tbWl0IGYxMzMyMDUwMDI5NGJiMjQwZjYzYzZkZDdkMmU5YTIyMDhlYjc0MGQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gRmViIDI3IDE2OjUyOjUxIDIwMTIgKzAwMDAKKworICAgIFNraXAgU0VULWJhc2VkIHRlc3RzIHdoZW4gY29tcGlsZWQgdXNpbmcgLS1kaXNhYmxlLXNldC1zdXBwb3J0CisKK2NvbW1pdCBjNDI3NmI2MjMyYzI5MTQ1YzAzOTg4NGU2YjVhNmI2ZGE0YjkzODM3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEZlYiAyNyAxNTo1NDo0NSAyMDEyICswMDAwCisKKyAgICBPbWl0IFNFVC1yZWxhdGVkIGNvZGUgd2hlbiBjb21waWxpbmcgd2l0aCAtLWRpc2FibGUtc2V0LXN1cHBvcnQgKGluc3BpcmVkIGJ5IHBhdGNoICMzNDI0OTMwKQorCitjb21taXQgMDFjOTMwZWRjYzI1NzAwZDZiNWZiMDM3NmY1NWEyNjQyNWUxM2ZiMAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBGZWIgMjcgMTU6MTc6MjIgMjAxMiArMDAwMAorCisgICAgT21pdCBTRVQtcmVsYXRlZCBjb2RlIHdoZW4gY29tcGlsaW5nIHdpdGggLS1kaXNhYmxlLXNldC1zdXBwb3J0CisgICAgKGluc3BpcmVkIGJ5IHBhdGNoICMzNDI0OTMwKQorCitjb21taXQgOTQ4NGQ4MzIwM2M0ZTJkODIwNDE2YmU2NjVmYTgzM2FhNzA0NDRkMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEZlYiAyNCAxNDowMDozMiAyMDEyICswMTAwCisKKyAgICBSZXdvcmsgY29tbWl0IGI0YTE5NTA1YTA1ODE2ZTk0ZTAxZGU5N2JmOTlhYzM3ZmNkYzZkMjMuCisKK2NvbW1pdCAyYjdmMTM0OTUyMjg2MzVkODE2ZTU4YjIxNzRkYzEyNGRkMGNmMzlmCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgRmViIDI0IDA3OjQzOjIyIDIwMTIgLTA4MDAKKworICAgIHNldCBNRVJHRV9BVVRPRURJVCBiZWZvcmUgbWVyZ2luZyB0byBhdm9pZCB0aGUgZnV0dXJlIGdpdCAxLjcuMTAgZm9yY2VkIG1zZworCitjb21taXQgZTFiOTEwYjBiZTkzNDM1ODZhZTllZGJhNmY0NjA0MGFmMzE1ZmNkZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyMyAxMDoyNzo1NCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogaW5pdF9hZ2VudCgpICsgaW5pdF9rbWVtKCk6IFJldHVybiBhbiBlcnJvciB2YWx1ZSBpbnN0ZWFkIG9mIGludm9raW5nIGV4aXQoKSBpZiBhY2Nlc3MgdG8ga2VybmVsIHZpcnR1YWwgbWVtb3J5IGlzIGRlbmllZAorCitjb21taXQgNDYzZWVkMjEyMGY5ZDE5MWJjMjI2NzM0OTZhNDllODE3NDY2NGU0YgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyMyAxMDowMzozMSAyMDEyICswMTAwCisKKyAgICBSZW1vdmUgb2Jzb2xldGUgc3ltYm9sIE5FVFNOTVBfRVhJVF9PTl9CQURfS0xSRUFECisKK2NvbW1pdCBjMzZhYjcxYTRlMDk2ZjE2Y2M1YTU1NTMzZjA4MGM5YTk0MDA5OTE0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIzIDA4OjUzOjU2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IEZyZWVCU0Q6IHNubXBkICsgYXBwczogU2VuZGluZyBVRFAgcGFja2V0cyB3b3JrcyBhZ2FpbiBmb3Igbm9uLXJvb3QgdXNlcnMKKworY29tbWl0IGVkZWJkZGJhOTMwZjhiMTQ3MmZhMGJkMjBmYzQxM2VmOGNmNDY0YTIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBGZWIgMjEgMTE6MzE6NDYgMjAxMiArMDEwMAorCisgICAgdGVzdGluZy9SVU5URVNUUzogRml4IGEgYmFzaGlzbQorCitjb21taXQgYjRhMTk1MDVhMDU4MTZlOTRlMDFkZTk3YmY5OWFjMzdmY2RjNmQyMworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiAyMCAxNjo1ODo0NyAyMDEyICswMTAwCisKKyAgICBGaXggY29tcGlsZXIgd2FybmluZ3MgYWJvdXQgJWxkIHZlcnN1cyB0aW1lX3Qgb24gc3lzdGVtcyB3aGVyZSB0aW1lX3QgaXMgYSBzeW5vbnltIGZvciBsb25nIGxvbmcgaW5zdGVhZCBvZiBsb25nLgorCitjb21taXQgZDg5NzhlY2M4MjExYmU3YzFlNzkwNWYxZTIxNWJiMDZkZWQyNjZiNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEZlYiAyMSAxMjozMjoyNSAyMDEyICswMTAwCisKKyAgICBGaXggc25tcGxpYi90cmFuc3BvcnRzL3NubXBTb2NrZXRCYXNlRG9tYWluLmMgZmlsZSBoZWFkZXIKKworY29tbWl0IGFhNzY2ZDE5NmU1Mjg3ZjZjYTc5YjU4YTM0NWIwMjQyNjBhYmEzNTQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgMjAgMTc6MDc6MTMgMjAxMiArMDEwMAorCisgICAgSUYtTUlCOiBkbyBub3QgdHJpZ2dlciB1bmRlZmluZWQgYmVoYXZpb3IgKD4+IDMyIG9mIGEgMzItYml0IHZhcmlhYmxlKSB3aGVuIHVwZGF0aW5nIGEgY291bnRlciBhbmQgaWZpX2lwYWNrZXRzIGlzIGEgMzItYml0IHZhcmlhYmxlCisKK2NvbW1pdCBjM2ZiNmRkOWU2Yjk5ZTk1NDI0OTMxODg5ODc4NzFmYzUwMTdjYjNjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIzIDA5OjQ1OjQ1IDIwMTIgKzAxMDAKKworICAgIEZpeCBhIGNvbXBpbGVyIHdhcm5pbmcgb24gc3lzdGVtcyB3aGVyZSBtb2RlX3QgaXMgdW5zaWduZWQKKworY29tbWl0IGY4YTNlZjBkM2Q0ZTUzMDI3OTkwMDEwMTA0OWI4ZGU5OGE0NGE2ZmIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxNDo0ODo1MiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliICsgc25tcGQgKyBzbm1wd2FsazogQXZvaWQgdGhhdCBzeXN0ZW0gY2xvY2sgY2hhbmdlcyAoZS5nLiBieSBudHBkKSBhZmZlY3QgY29kZSB0aGF0IG5lZWRzIHJlbGF0aXZlIHRpbWUKKyAgICBDSEFOR0VTOiBzbm1wZDogTWFrZSBzdXJlIHRoYXQgdGhlIHJhbmdlIG9mIHRoZSBTTk1QdjMgdmFyaWFibGUgc25tcEVuZ2luZVRpbWUgaXMgMC4uMjE0NzQ4MzY0NyBvbiBhbGwgc3VwcG9ydGVkIHN5c3RlbXMgaW5zdGVhZCBvZiAwLi40Mjk0OTY3MiBvbiBzb21lIHN5c3RlbXMgKGkuZS4gd3JhcGFyb3VuZCBhZnRlciA0OTcgZGF5cykKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBBZGQgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCksIG5ldHNubXBfc2V0X21vbm90b25pY19tYXJrZXIoKSwgbmV0c25tcF9yZWFkeV9tb25vdG9uaWMoKSwgbmV0c25tcF9nZXRfYWdlbnRfcnVudGltZSgpCisgICAgQ0hBTkdFUzogc25tcGxpYjogRGVwcmVjYXRlIGF0aW1lX2RpZmYoKSwgYXRpbWVfbmV3TWFya2VyKCksIGF0aW1lX3JlYWR5KCksIGF0aW1lX3NldE1hcmtlcigpLCBtYXJrZXJfdHRpY2tzKCksIG5ldHNubXBfbWFya2VyX3VwdGltZSgpLCBuZXRzbm1wX3RpbWV2YWxfdXB0aW1lKCksIHRpbWV2YWxfdHRpY2tzKCksIHVhdGltZV9kaWZmKCksIHVhdGltZV9oZGlmZigpIGFuZCB1YXRpbWVfcmVhZHkoKS4KKyAgICBDSEFOR0VTOiBzbm1wbGliOiBDaGFuZ2UgdGhlIG5hbWVzIG9mIHRoZSBzdHJ1Y3QgdGltZXZhbCBtZW1iZXJzIG9mIGRhdGEgc3RydWN0dXJlcyB0aGF0IHdlcmUgdXNlZCB0byBzdG9yZSBhIHdhbGwgY2xvY2sgdGltZSBidXQgdGhhdCBkbyBub3cgY29udGFpbiBhIG1vbm90b25pYyBjbG9jayB2YWx1ZQorCitjb21taXQgYzE5NzYwZjMzMzNjOTJmYWM1ZDUwZTk3NjhjZGY5MzkyMThiYzQ4NworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEZlYiAxNSAwOTo0NTowMyAyMDEyICswMTAwCisKKyAgICBzbm1wbGliL3NubXB2My5jOiBGaXggc291cmNlIGNvZGUgaW5kZW50YXRpb24KKworY29tbWl0IGE2ZGIyMzk5NDVlMTk1ZGU1YTkwZmExODM3MDBiMjdhNmVjYjI4ZDMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBGZWIgNyAwMDoxMToxNCAyMDEyICswMTAwCisKKyAgICBGaXggcG9zc2libGUgbWVtb3J5IGxlYWsgZnJvbSByZWNlbnQgZGVjbGFyYXRpb25zIHBhdGNoCisKK2NvbW1pdCAwZmJiYjlhOWUyOTA2YTdhZjk1Njk1NzA2MWQ0ODU4NzQ0NjJhZWE5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gRmViIDYgMjA6NDM6MDQgMjAxMiArMDEwMAorCisgICAgRG8gbm90IG1peCBkZWNsYXJhdGlvbnMgYW5kIHN0YXRlbWVudHMKKworY29tbWl0IGYzMDhkNWJhZmIwNWQ3OGVkNDAzMGM0ZWNmZjMyNGI2Y2JkYTY4MGYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxNToyNTozMCAyMDEyICswMTAwCisKKyAgICBGaXggdHdvIGNvbXBpbGVyIHdhcm5pbmdzIGluIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jCisKK2NvbW1pdCA0NmYwZmMxYjdmYzI2YTIyNTc2M2JjNjVjY2E1MjBhMWM1OWYwMjUxCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gRmViIDYgMjA6NTQ6MzIgMjAxMiArMDEwMAorCisgICAgc2VuZG1zZyBkb2VzIG5vdCBsaWtlIElQX1NFTkRTUkNBRERSIGlmIGFkZHIgaXMgSU5BRERSX0FOWQorCitjb21taXQgZGViYWM0OThmZTg0MTAxMTAxMDdhMmZlNjRmOGFmYjc0OGVkYWEwNworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBGZWIgNiAxNjo0ODowOSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBhZGRlZCBPQ0ZTMiAoT3JhY2xlIENsdXN0ZXIgRlMpIHRvIGhyU3RvcmFnZVRhYmxlIGFuZCBockZTVGFibGUKKworY29tbWl0IGZhZmM5OWNkODllNzNlYzdlMDBiZjczNjBkMGI0ZmE2MTk0NGE0ZjQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxMToxODozNCAyMDEyICswMTAwCisKKyAgICBTaW1wbGlmeSBjYWxjdWxhdGVfdGltZV9kaWZmKCkgYW5kIGNhbGN1bGF0ZV9zZWN0aW1lX2RpZmYoKQorCitjb21taXQgN2FmMjAxM2RlOGJmMWIzNzljMDc2ZGI0ZTEwNDUwOGUxNzg3NGQzZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDE0OjU1OjU4IDIwMTIgKzAxMDAKKworICAgIEZpeCBvcmRlciBvZiBmZWF0dXJlICNpZm5kZWYgYW5kIERveHlnZW4gY29tbWVudCBibG9jaworCitjb21taXQgYmJkNjdmNjM1MzBmNWVmMGJmYzk0OGZjNThkZmU2YTkzZjhmODY3OQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDE1OjI1OjMwIDIwMTIgKzAxMDAKKworICAgIEZpeCB0d28gY29tcGlsZXIgd2FybmluZ3MgaW4gYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMKKworY29tbWl0IDQyYTY2YWVmZjI1YjllOWVmNjM1YTQwNGFkMmY1MjEyZjllOGNmMGQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxNDo0Nzo1NCAyMDEyICswMTAwCisKKyAgICBSZW5hbWUgdHdvIGZ1bmN0aW9uIGFyZ3VtZW50cworCitjb21taXQgM2ZlNzJiM2I5OWI3ZTRiMmI5ODIzNjNkZmM0ZjJkOGQxM2Y0MDU5MgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDEzOjQ5OjIyIDIwMTIgKzAxMDAKKworICAgIENvbnZlcnQgc25tcF9zZWxlY3RfaW5mbygpIGRvY3VtZW50YXRpb24gdG8gRG94eWdlbiBmb3JtYXQKKworY29tbWl0IGU5ZGIyNjZhZTQ4ZDA1YTdhNmNiNWQ3MWI0YmRlYTdhZDgwOGVmNWUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxMToxNzo1NyAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogQWRkIG5ldHNubXBfZ2V0X25leHRfYWxhcm1fdGltZSgpCisKK2NvbW1pdCBkMDgwNDRjYjllNTcwMmZiZjU0OWUxNDQyNWY0Mjc5NDI1OWQ4YTIxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMDk6Mzg6MDcgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEFkZCBuZXRzbm1wX2dldF9hZ2VudF9ydW50aW1lKCkKKworY29tbWl0IGEwNWMyN2MyNzExY2I0MTU4MmEzYjRjMzFlMzhiMGU5MzUzMGI2MmQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxNDo1MTozMyAyMDEyICswMTAwCisKKyAgICBGaXggc3BlbGxpbmcgaW4gYSBzb3VyY2UgY29kZSBjb21tZW50CisKK2NvbW1pdCA5MTBkN2IwZDk5MTgzNjA5Yjk1MjliMDRjM2YyOTMzMGViNjYxMDIxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTQ6Mzg6MTIgMjAxMiArMDEwMAorCisgICAgUmVwbGFjZSBuZXRzbm1wX3RpbWV2YWxfdXB0aW1lKCkgYnkgbmV0c25tcF9nZXRfYWdlbnRfdXB0aW1lKCkKKworY29tbWl0IDQzYTgzZjZjNmE5NmNjMjMxNmI3MGVlY2FjZjEyN2ViNjkxM2M3YTcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxMToxOToxNSAyMDEyICswMTAwCisKKyAgICBVc2UgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IgaW5zdGVhZCBvZiBtZW1jcHkoKSBmb3IgY29weWluZyBzdHJ1Y3QgdGltZXZhbAorCitjb21taXQgMmZlNTc5ZWZiMWNiM2E3NGY4MjgwM2NhMzIzOTI4ZjZiOGU0YjVjMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEZlYiAzIDE0OjA0OjAyIDIwMTIgKzAxMDAKKworICAgIE1ha2UgYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jIGJ1aWxkIGFnYWluIG9uIG5vbi1MaW51eCBzeXN0ZW1zLgorICAgIAorICAgIFNlZSBhbHNvIGNvbW1pdCAzNDVhMWU0MjU0ODEyY2I5ZWRjMWQyNzQ0OTFiNzY2ODFhOWRiYTFlLgorCitjb21taXQgODgxZGU2YWI3MzU1Mjc3YTVjMTE2YTAwOGZiZTUxMzI5M2IwNTAzOQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEZlYiAzIDEwOjA4OjIxIDIwMTIgKzAxMDAKKworICAgIEZpeCBjb21waWxlciB3YXJuaW5ncyB0cmlnZ2VyZWQgYnkgdGhlIFJtb24gTUlCIGltcGxlbWVudGF0aW9uCisKK2NvbW1pdCA0NjI5OTMzYzBkM2IzZjlmNGJhNTgzNTM0Zjc5YTM3ZmI5NjMzODE3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMjA6MDU6MzEgMjAxMiArMDAwMAorCisgICAgTW9yZSBjb21waWxlciB3YXJuaW5nIGZpeGVzCisKK2NvbW1pdCBlOWI1YTNkZWU2ZjlhZmFiOGI5MGEyOTM5MjA0MDYzMmIwNzVhZDdhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMTY6NTY6NTUgMjAxMiArMDEwMAorCisgICAgVXNlIFNOTVBfTUlOKCkgaW5zdGVhZCBvZiBtaW4oKQorCitjb21taXQgYWU0NTJjNzdiNDExMTM5ZDZiNTgwMGZmY2Y4OGQ0OGU5YjQ3OTJhOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDE1OjIzOjM4IDIwMTIgKzAxMDAKKworICAgIFJlc3RvcmUgY29tbWl0IGRiYjg3OTVhN2RmNTk1ZjA2MDNmMmVjNjE3MDQ3OTlmNGM0ODI2NjcuCisKK2NvbW1pdCBjN2QxMWZhMDBmOTk5NWRkYjlmZTNkNDk5NGEzZTk3OTBkYTJlMTg5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMTU6MTg6NDAgMjAxMiArMDEwMAorCisgICAgUmVzdG9yZSBjb21taXQgZGJiODc5NWE3ZGY1OTVmMDYwM2YyZWM2MTcwNDc5OWY0YzQ4MjY2NyBwYXJ0aWFsbHkuCisKK2NvbW1pdCAwMGZkNjI3MjBlYzQ1NGY1YTY5MGRlNGZlYmEwODIyM2NmYjJjM2Y4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMTQ6NDg6NDQgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcHRyYXBkOiBBdm9pZCBjcmFzaCBkdXJpbmcgc2h1dGRvd24gZHVlIHRvIGludm9raW5nIHBlcmxfZGVzdHJ1Y3QoTlVMTCkKKworY29tbWl0IGQ5ZTIyOWQ4MWFiZWFmMTkxZWYyY2NiMDc3ODQyODg1YzIzMGQ2MjIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxNDo0Nzo0MSAyMDEyICswMTAwCisKKyAgICBSZW1vdmUgYSBzdXBlcmZsdW91cyBkZWNsYXJhdGlvbgorCitjb21taXQgMWUyZTJhZjZjYWU4MzBmMzgxZTg3YTI0NGQwMjllYjg2YmYzZmNjZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDEzOjIwOjM3IDIwMTIgKzAxMDAKKworICAgIHBlcmwvU05NUC9leGFtcGxlcy9waW5nbWliLnBsOiBBZGQgZXJyb3IgY2hlY2tpbmcKKworY29tbWl0IDI0MWExNDFlMzFmMTY4NGZjNmNmNzBjYzRhMDBjY2U2MzZmZDM1MjYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxMToyODozNyAyMDEyICswMTAwCisKKyAgICBNYWtlIGNvbmZpZ3VyZS10aW1lIEVWUF9NRF9DVFhfY3JlYXRlKCkgZGV0ZWN0aW9uIHdvcmsgb24gdGhlIDUuNCBicmFuY2guCisgICAgCisgICAgU2VlIGFsc28gY29tbWl0IDQ2ZWFjMDJlOWEyN2JmNGYzMDY4ZTc5NWNhYjg5MWYwNWE4NDg4NzAuCisKK2NvbW1pdCA2ZDlkMTRmZWFhYTJkMGZlYzY4YjRkMTU4OTQ0ZDMyY2IwNGZmMWJjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMTE6MTI6MDAgMjAxMiArMDEwMAorCisgICAgUmV2ZXJ0IHRoZSBjaGFuZ2VzIHRoYXQgYnJlYWsgdGhlIGJ1aWxkIG9uIHRoZSA1LjQgYnJhbmNoIGZyb20gY29tbWl0IGRiYjg3OTVhN2RmNTk1ZjA2MDNmMmVjNjE3MDQ3OTlmNGM0ODI2NjcuCisKK2NvbW1pdCA4YWJlNDllMzBjOTdjODk4M2U4M2I0NWEzNWM3MTZmZTkxZjY2YmVhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgRmViIDEgMTE6NTY6NTggMjAxMiArMDEwMAorCisgICAgRml4IHNldmVyYWwgY29tcGlsZXIgd2FybmluZ3MgaW4gdGhlIERJU01BTiBNSUIgaW1wbGVtZW50YXRpb25zLgorCitjb21taXQgZjlmYjBhNTMzMzc1ZTE0ZGMzNzAwMjVhMGIyZmJjNzYxYmYyN2JlNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDA5OjU2OjAyIDIwMTIgKzAxMDAKKworICAgIFJldmVydCAiSE9TVC1SRVNPVVJDRVNfTUlCOiBmaXggYSBjb21waWxlciB3YXJuaW5nIiBiZWNhdXNlIGl0J3Mgd3JvbmcuCisgICAgCisgICAgVGhpcyByZXZlcnRzIGNvbW1pdCBhYTZiNzliYzEyNGE3YjdhODg1ZDdlNTAzNWFiMDZhYTNlY2VmNjEzLgorCitjb21taXQgY2E0YTRmZTI1ZWZkMjcxNGY4ZjE5NjFiOTc4NTY2MTY1NjNmNDJjOQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDEwOjIxOjQ5IDIwMTIgKzAxMDAKKworICAgIC5naXRpZ25vcmU6IEFkZCBweXRob24vYnVpbGQKKworY29tbWl0IDEzYWRhNTY1NThiNDRlMjhkMTM1NWMwZGNlMWQ5MjFmMzc0NmQ1NDgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjUzOjQ5IDIwMTIgKzAxMDAKKworICAgIFJldmVydCAiUmV2ZXJ0ICJGaXggZm9ybWF0IHNwZWNpZmllcnMgdG8gYXZvaWQgd2FybmluZ3MiIiAtIHRoZXJlICppcyogTkVUU05NUF9QUklvIGluIFY1LTYrIGJyYW5jaGVzCisgICAgCisgICAgVGhpcyByZXZlcnRzIGNvbW1pdCBhYTUyOGJkMjJjNzQ5M2NhOGQ2N2U2NzhmYmY2MTVjYTBmNjNlYTZkLgorCitjb21taXQgYWE1MjhiZDIyYzc0OTNjYThkNjdlNjc4ZmJmNjE1Y2EwZjYzZWE2ZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTQ6MTM6MTggMjAxMiArMDEwMAorCisgICAgUmV2ZXJ0ICJGaXggZm9ybWF0IHNwZWNpZmllcnMgdG8gYXZvaWQgd2FybmluZ3MiIC0gdGhlcmUgaXMgbm8gTkVUU05NUF9QUklvIGluIFY1LTQgb3IgVjUtNSBicmFuY2hlcworICAgIAorICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgMzkwYzAxMTRjOGVjMGJkYjI3YjA4YjZmNzRlM2Y2ZWYzYTYyOTgxYi4KKworY29tbWl0IDJmYjk5YmU5YWE4NmE2Y2EzNDliODZkNGVmOGJjNzI2ZWQ5ZjJhODIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE0OjU4OjM1IDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgZTVjMzU1ODllMGJmNDE2YmZkMDM2YmQ0NjhmNDJhYWVhYjI1ZTc4OAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTQ6NTU6NTYgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCAzNDVhMWU0MjU0ODEyY2I5ZWRjMWQyNzQ0OTFiNzY2ODFhOWRiYTFlCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNDo1MToyNiAyMDEyICswMTAwCisKKyAgICBGaXhlZCBlcnJvciBoYW5kbGluZyBpbiBpbml0X2ljbXAoKS4KKworY29tbWl0IGMzMDM1NDlhNTlmYThjMmYyMGE5ZDhiZjFlOTg1ZmJjOGFiZGU2YTgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjQ2OjI5IDIwMTIgKzAxMDAKKworICAgIFJld29ya2VkIF9yZWdpc3Rlcl9leHRlbmQoKSBlcnJvciBoYW5kbGluZy4KKworY29tbWl0IDljMjBlMjdhNzAyNmZjMDMwZGEzYjMyOGI5YTJlMWI0ZjM2NjcwY2QKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjIxOjI4IDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgMjJmZDBiZmMyZGYwZTFmNjAyMGRjM2M1MGE3NTNkZGYyOGE0NTk5YworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6MjA6MjIgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCA1ZDYxZTU3YmFmNTgwYzc4MjUyYzBhYmIwMDk4YzA3YmIwNWFmMTdjCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNToxNzowNSAyMDEyICswMTAwCisKKyAgICBEb24ndCB0b3VjaCByZWdpbmZvIHdoZW4gcmVnaXN0cmF0aW9uIGZhaWxzIC0gaXQgaGFzIGJlZW4gYWxyZWFkeSBmcmVlZC4KKworY29tbWl0IDNjM2VlYWU4MGQ3OTZmMjc1OTdjOTAxZTdmZjIwNDZjNzY5ZWY0YjgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjA4OjA5IDIwMTIgKzAxMDAKKworICAgIE1hcmsgcm93cmVxX2N0eCBhcyBmcmVlZCBzbyBuZXh0IGl0ZXJhdGlvbiBhbGxvY2F0ZXMgbmV3IG9uZSBpbnN0ZWFkIG9mIHJldXNpbmcgdGhlIGZyZWVkIG9uZS4KKworY29tbWl0IGFmOWFiZDUzYzIzMzdjOTBhNjkxYTdiMDQ0ZmYzZjk3YzEwMDMxNjEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjA1OjEwIDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgY2Y5NDY1ZjU0MTgxZTYyZTIxYTliMTAyMTkxMzExMDdhM2QyZWJmNgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6MDQ6MDYgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCA3ODcxZjJiMDliOGI1MmYzNGE5ZTU3Nzg0MjY2NDU5MDUzMTY1YmNiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNTowMjo1MCAyMDEyICswMTAwCisKKyAgICBEb24ndCB0b3VjaCByZWdpbmZvIHdoZW4gcmVnaXN0cmF0aW9uIGZhaWxzIC0gaXQgaGFzIGJlZW4gYWxyZWFkeSBmcmVlZC4KKworY29tbWl0IDdhMzdmMzNkMzEwYzk1OTg2MDdiYzMyM2Q5YmRiZjkxYWFmNzJjOTUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjAwOjUxIDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgM2U0NWY3MDI2MjQ5ZTQ1MzUwZWRhYWM4NTMzNzQyM2FhMGU5NWQ4YgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTQ6MTM6MTggMjAxMiArMDEwMAorCisgICAgUmV2ZXJ0ICJGaXggZm9ybWF0IHNwZWNpZmllcnMgdG8gYXZvaWQgd2FybmluZ3MiIC0gdGhlcmUgaXMgbm8gTkVUU05NUF9QUklvIGluIFY1LTQgb3IgVjUtNSBicmFuY2hlcworICAgIAorICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgMzkwYzAxMTRjOGVjMGJkYjI3YjA4YjZmNzRlM2Y2ZWYzYTYyOTgxYi4KKworY29tbWl0IDYxOTM2NzYyZTY0MWMxOGRiNzVhYTUxMjVhMzNlNzc2YzY3N2FkYzUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDExOjEzOjM5IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGZyZWVpbmcgcmVnaW5mbyB0d2ljZSBvbiBlcnJvciBpbiBhIHRlbXBsYXRlIGFuZCBhbGwgaXRzIGluc3RhbmNlcy4KKworY29tbWl0IDQ5NjQzNzQzMDQxNWZiYWZlYjFjY2Q0Nzc0ZjFjYTAwZDYyN2VhMWYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTE6MDQ6MTMgMjAxMiArMDEwMAorCisgICAgcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzogRml4IGNvbXBpbGVyIHdhcm5pbmdzIGludHJvZHVjZWQgb24gVjUuNiBicmFuY2gKKworY29tbWl0IDViNGEyNGNkY2VlMWJjM2Q4MjYzM2NjYWZlYjk2ZmNlOTUzNDljNTkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gMjAgMDk6MjI6MjcgMjAxMiArMDEwMAorCisgICAgdW5pdCB0ZXN0czogZml4IGEgNjQtYml0IGNvbXBpbGVyIHdhcm5pbmcKKworY29tbWl0IGNiZjFjOTFiYWY3MTkxYmU1ZmEyN2Q4MWJjZjg3MTQzMzFhMmMxMmYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gMjAgMDk6MjA6NDIgMjAxMiArMDEwMAorCisgICAgVXNlIHNubXBUYXJnZXRQYXJhbVRhYmxlX2Rpc3Bvc2UoKSB0byBmcmVlIGEgc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0LgorICAgIAorICAgIEZpeGVzIGEgYnVnIGludHJvZHVjZWQgaW4gY29tbWl0IGRiZjI2YTA1YTA0ZWYyNGM0NzM0NmU1YWRkYTQ4ZTMzODQ5OGU3MWYuCisKK2NvbW1pdCBhYTZiNzliYzEyNGE3YjdhODg1ZDdlNTAzNWFiMDZhYTNlY2VmNjEzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDIwIDA5OjIwOjMxIDIwMTIgKzAxMDAKKworICAgIEhPU1QtUkVTT1VSQ0VTX01JQjogZml4IGEgY29tcGlsZXIgd2FybmluZworCitjb21taXQgM2E3NmI0M2UxMWZmZmFkYTYzMmZjY2I4NDhhYjUwMGU4NzZhZDQ4YgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNjoyMTowNSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBweXRob246IEF2b2lkIHRoYXQgYW4gU05NUCBzZXQgd2l0aCBVc2VFbnVtcyBlbmFibGVkIGNhdXNlcyBhIHNlZ21lbnRhdGlvbiBmYXVsdAorCitjb21taXQgODRkZWM5ZmE5MmIwYWEyZDU4ZWI3MDIwMzMwZjRmOThlNTE1NDMyMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNDozODoyMSAyMDEyICswMTAwCisKKyAgICBweXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jOiBGaXggbW9zdCBjb21waWxlciB3YXJuaW5ncworCitjb21taXQgMzhjZjIxOGMzZjFhNzI3Nzg2ZTIyN2E1ZDNmYjE4NmZkMGYxYTE1ZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTQ6NTA6MTMgMjAxMiArMDEwMAorCisgICAgRml4IGEgdHlwbworCitjb21taXQgNDU0MTIyMjQ0MTIyYmZkYjZmNjdjYWIzMTI1NmQ3YjQ2MzcyZTllMQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTQ6MzA6MTggMjAxMiArMDEwMAorCisgICAgRnJlZSB0bVN0YXRlUmVmIG9uIGVycm9ycy4KKworY29tbWl0IDAxMTkwMjJkYWE1OWM3M2JmZWMwZGEyMzg2ZDA2MjhmMTRlNmRhYjcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDE0OjA5OjEyIDIwMTIgKzAxMDAKKworICAgIEZyZWUgZmluZ2VycHJpbnQgd2hlbiBpdCdzIG5vdCBuZWVkZWQuCisKK2NvbW1pdCAwZTg0Y2QzMDNhMDgyNjdkZWM3OGY2ZDgxYzliYjA3ZTNkODNhMTFmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMzo0ODoyNiAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCA2M2RjODQ2YTc5NDljZTY5N2IzZTI4YzU0M2RjMTEwNWU2M2EyMjUwCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMzowODoyOCAyMDEyICswMTAwCisKKyAgICBGcmVlIGNlcnRpZmljYXRlIGZpbmdlcnByaW50LgorCitjb21taXQgY2UxZjI4NGE2M2ViODE2NDRiM2UzMjYwNmNiZTM5YjY3ZTFkZmYyYQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTQ6Mzc6MDkgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgN2UyMTQxM2NhNmYyZWZkN2EzYWZiNjJjNjJiNjQ0ODgxYjhiZDFlNworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTM6NDY6MzAgMjAxMiArMDEwMAorCisgICAgUHJvcGVybHkgYWxsb2NhdGUgYW5kIGZyZWUgZW5naW5lSUQuCisKK2NvbW1pdCAzNGM5NjI4ODI2MDdjMzYzOGEyZmEyNWEyYWM1MzE0OTJkNzFjNzg3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMzozNzoyNSAyMDEyICswMTAwCisKKyAgICBGcmVlIGxvY2FsbHkgYWxsb2NhdGVkIHRtU3RhdGVSZWYuCisKK2NvbW1pdCBmNTdhZTUzMWRjNTY1OGFiY2Q2NWIxNjI3NjE1NTI1MjM4ZDE2ZDJkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMzoyMDoyNCAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCA1MzZiYzU3NTU2YzMxNDE1NjFlYTRhMTk0ODEwYjE2MjkwYTY5MWVlCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMzoxNTo0NyAyMDEyICswMTAwCisKKyAgICBBZGRlZCBjaGVjayBpZiB0aGUgZnVuY3Rpb24gYWN0dWFsbHkgZG9lcyBzb21ldGhpbmcuCisKK2NvbW1pdCBhMDc3N2QzMDdkYmNhZjIxOWVlMDE4NGEwZmJhYjlkNGU1ZDZhYTBiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMzowMTo0NSAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCA4Yjk3YTcxYzhlNzk1OTQyOGViNGQ0ZThkOTBlOTA5NmQ0M2ZmMDlmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMjo1NzoyNiAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCAyYzE1MDdjMjIwMzA1NDlhZTY2MGMwZTIxMWZiZGM1Yzc1ZWM1YzU3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMjo1Mzo0NyAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCA2NWYyYjdiY2Q0ZmUwMzkwNmFhMWExMTVhYjYwYTg5YjhhZTkzM2Q1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMjo1MTozNiAyMDEyICswMTAwCisKKyAgICBDbG9zZSBvcGVuIGZpbGVzIG9uIGVycm9yLgorCitjb21taXQgMGU1MmU0ZjY2ZDQ0NzY2YmVhMzc0NzM1NTZjNzhlNTIxOWI5NTQ2MQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6NDU6MzMgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgZGJmMjZhMDVhMDRlZjI0YzQ3MzQ2ZTVhZGRhNDhlMzM4NDk4ZTcxZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6NDI6MTcgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgNzQ4ZGE4NGIxZmQ2NTRlMzM4YmM3MDFlOGY5ZTVkYTIyOTE4N2YxYworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MzI6MDQgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgZWIyMTcxNDZmZDU0MDM2ZWE0MjAyYmZlZjc4YmJmNzc0ZDdlMzgyZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MjM6MTAgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgOWJhMzhlZWM2NjEzOGVjMWY2MTNlYThkMDRlMTU4MTMwYzcxMjFiYworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MTg6NTUgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgZDlkOTM4ZDMwMThjMjdmNTMyNzdiYzVlNTk1Nzg1MDA0OTBjMWQwOQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MTY6MzggMjAxMiArMDEwMAorCisgICAgQ2xvc2Ugb3BlbiBmaWxlIG9uIGVycm9yLgorCitjb21taXQgZDVlODE3ZDViZDUxOGQ5YWM2YTBkNjBlMGUxNDFkZDY0ZjI3YWQxOQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MTQ6MTIgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgMmFlNjhmMDU5ZGY5ZDc0YjA3NGQxMmY1OWMxODQ3NDY2ZWQ1NzZjZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MDM6MTcgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgYTAwZjNkNDYxMTIxYjU0NWFlZDcyYWMxMmIyNDM4NzkxZGNmYzRiYQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTQ6NTg6MzkgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgNTk4ODRiYjRkMzVhZDEzNzQ3ZmZhNjcyMzQzNmRjYTU4N2E5YWI3NworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTc6MDk6MTIgMjAxMiArMDEwMAorCisgICAgSW4gYWJvdmUgY29kZSwgb2xlbmd0aCBpcyBjaGVja2VkLCBzbyBsZXQncyBjaGVjayBpdCBhbHNvIGhlcmUuCisKK2NvbW1pdCBiYTVkNTI5MmIwNDM5M2IwYzdkN2Q3ZWQ5NjEyNDE5Mjk0MThjNmU0CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNzowNToxNCAyMDEyICswMTAwCisKKyAgICBGaXhlZCBkZXJlZmVyZW5jaW5nIE5VTEwuCisKK2NvbW1pdCBkYTJkNmE3MDI4YTEzYjllZGYzYTVjODQzMTRkMGYxZmVlZjc2NzE0CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNjo0NDo1NiAyMDEyICswMTAwCisKKyAgICBQcmV2ZW50IGRlcmVmZXJlbmNpbmcgTlVMTC4KKworY29tbWl0IGY4ODA1NGE5YjY5YjZkZTI3NGY3YTE0YTU5YjQ3MzIzZTVlNGU0YzYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE2OjM3OjM1IDIwMTIgKzAxMDAKKworICAgIERvbid0IGRlcmVmZXJlbmNlIGNvbnRleHQgaWYgaXQncyBOVUxMLgorCitjb21taXQgN2M0ZDQ1OWU4ZjFmNjUyY2MyMDk4YzNkNGM4MWRlOTBhODRlZDcxMAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTY6MzA6MDkgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgZGVmZXJlbmNlIE5VTEwuCisKK2NvbW1pdCBmYzE5YjdmMzNiNTg3OTI3ZDJhMDFlNzJkMjNkMjFiOWIxNjk2YWIzCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNjoyNToyNiAyMDEyICswMTAwCisKKyAgICBEb24ndCBjbG9zZSBOVUxMIGZpbGUuCisKK2NvbW1pdCA1ZTk1Y2E2NzkwMDc2Yjc4ODA3MmE4MDFlZTdjODI5NjlkOTk1YmNiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNjoxNzowOSAyMDEyICswMTAwCisKKyAgICBQcmV2ZW50IGRlcmVmZXJlbmNpbmcgTlVMTCB3aGVuIGEgdHJhbnNwb3J0IGRvZXMgbm90IGhhdmUgZl9mbXRhZGRyLgorCitjb21taXQgZWVkNmY1ZjliOWFlNTRkMmNlYWI2N2FkODVhZGRlMWY2YThhMjFkNQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTY6MTM6MTMgMjAxMiArMDEwMAorCisgICAgUHJldmVudCBkZXJlZmVyZW5jaW5nIE5VTEwuCisKK2NvbW1pdCA0MWNkZTY4YjVmYTRiMzhkODE0NTBjZjkxZTA4MmNkZmE4MjVlN2NmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNjoxMDoxMCAyMDEyICswMTAwCisKKyAgICBDaGVjayBpZiBhIHJlZ2lzdHJhdGlvbiB3YXMgcmVhbGx5IGZvdW5kLgorCitjb21taXQgNWI3MmE0MDg1Mzg3NmExODZlZmNjMDA5MGE0ZTMyYzIzNWI5YzA1ZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTY6MDM6NTggMjAxMiArMDEwMAorCisgICAgRG9uJ3QgZGVyZWZlcmVuY2UgTlVMTCB3aGVuIGRpZmZsZW4gaXMgU01VWF9NQVhfUFJJT1JJVFkgKHdoaWNoIGlzIGhpZ2hseSB1bmxpa2VseSwgYnV0Li4uKQorCitjb21taXQgZmE2YTkxMmU0MWM1ZDBmZDJhNjM2ODk0ZTg2YjY0MjZjMDczNzVhYgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTU6Mzc6NDQgMjAxMiArMDEwMAorCisgICAgQ2hlY2sgZm9yIG1pc3NpbmcgdmFsdWUgaW4gc2V0RXZlbnQuCisKK2NvbW1pdCA0MTBiNzFkYTQyNTM4OWZlY2MyNWQxNGY0OWYyMzc1MzU4MTU3NmFkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNToyODo0MSAyMDEyICswMTAwCisKKyAgICBEZXJlZmVyZW5jZSBlcmVnIG9ubHkgaWYgaXQgaXMgbm90IE5VTEwuCisKK2NvbW1pdCAxODUyNzJkMWEwYjkxMzc3NDE4NmYxYjkxMzVhZWFmNjM3ZWJlZDUyCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNToxNzoyMSAyMDEyICswMTAwCisKKyAgICBBcyBwZXIgYWJvdmUgY29kZSwgdGVtcGxhdGVfdjJwZHUgY2FuIGJlIE5VTEwsIHNvIGNoZWNrIGl0IGJlZm9yZSBkZXJlZmVyZW5jaW5nLgorCitjb21taXQgNDhlNWVhZDNmZDJjMmIzODVkZjY5NzJjNjc1MjZmZjZiZGMzMDc2OAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTQ6NDI6MjIgMjAxMiArMDEwMAorCisgICAgVXBkYXRlZCBsYXN0IGZpeCB0byBuZXcgZXJyb3IgcmVwb3J0aW5nIHN0eWxlLgorCitjb21taXQgZjMzZDMzNjE1ZDZkODVkMDA3MzcyNjQ3M2M0MTQ2Y2JjZGYxMWNlZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTQ6MzA6MDcgMjAxMiArMDEwMAorCisgICAgRml4ZWQgc2lnc2VndiB3aGVuIGVtcHR5IGNvbmZpZyBsaW5lIGlzIHBhcnNlZC4KKworY29tbWl0IGI1ZGYxZWViNDdlZDM1NTliNmY0ZDllY2NjZGIyNDIxMjZlNmM5OTIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE0OjExOjU4IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIChoaWdobHkgdGhlb3JldGljYWwpIHNpZ3NlZ3Ygd2hlbiBzcC0+c2VjdXJpdHlFbmdpbmVJRCBpcyBOVUxMLgorCitjb21taXQgNmZlZWQ2MjlhNzE4OTljMTEzMDk2OTU5ZDg1NDlkYzEyMDFlOGY5YQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTM6NDM6MzcgMjAxMiArMDEwMAorCisgICAgQWRkZWQgTlVMTCBhbmQgbGVuIGNoZWNrIGp1c3QgaW4gY2FzZSBzb21lb25lIHByb3ZpZGVzIHZhbHVlID0gTlVMTCBhbmQgbm96ZXJvIGxlbiAoLT4gTlVMTCBpcyB0aGVuIGRlcmVmZXJlbmNlZCkuCisKK2NvbW1pdCAzNTVjNWFiMjY0YWYyYTYwMjBhMWQ4YTkyM2Y4MGYxMWI5NDIyOTVlCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxMzozNjo0MSAyMDEyICswMTAwCisKKyAgICBFeHRlbmQgdGhlIE5VTEwgY2hlY2ssIGkuZS4gcmV0dXJuIGlmIHRoZXJlIGlzIG5vdGhpbmcgdG8gcmVtb3ZlLgorCitjb21taXQgZGRkNzk0OGFjYWQ5MzhjZDQyOTc0NTA1ZGRjYTRmMDM3MjExNjcwOQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEphbiAxNiAxMToxMToyOSAyMDEyIC0wODAwCisKKyAgICB1cGRhdGUgc3BhcnRhJ3MgY29weXJpZ2h0CisKK2NvbW1pdCA0MTI1NjA4NmE3YTUwNDE0NTM0MTljZmQ2ZTU2MmM3YjU1YzU2YjBhCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSmFuIDE2IDEwOjMyOjA0IDIwMTIgLTA4MDAKKworICAgIHB1bGxlZCBmdWxsIGNvcHkgb2YgZXh0cmFjdG5ld3MgZnJvbSBtYXN0ZXIKKworY29tbWl0IDYyNWE3MGRiZGZkOTkwMmRhNzllZmEyOTNmZTZkMmFjOGNjZjJiMmUKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBKYW4gMTYgMTA6MjQ6MTkgMjAxMiAtMDgwMAorCisgICAgdXBkYXRlIHRvIGNoYW5nZSB0byB0aGUgbmV3ZXIgbG9nIGdlbmVyYXRpbmcvcGFyc2luZworCitjb21taXQgNjJlMzJiMTMwODliMjllZGNmMjc2ZjYxNWRhNjdlNDUwOGZlN2JiNQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEphbiAxNiAwOToyOTo0MiAyMDEyIC0wODAwCisKKyAgICBjb25mbGljdGluZyBtZXJnZSBmcm9tIG1hc3RlciBmb3IgZXh0cmFjdG5ld3MKKworY29tbWl0IDcwMDg0ZGE2MWQyYmNiZDJjZjFlZDgxYmRjM2JmNjc5NGMyYWZmYjYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gMTMgMTE6NDk6MTYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1TQ0hFRFVMRVItTUlCOiBIYW5kbGUgMzItY2hhcmFjdGVyIHNjaGVkQ29udGV4dE5hbWUgdmFsdWVzIGNvcnJlY3RseS4KKyAgICAKKyAgICBTZWUgYWxzbyBjb21taXQgYjNjNDk4MjU0MmUwYWIxNTFmYjM4ODQ3NTRjZGZiY2I0NzJkYTUyZC4KKworY29tbWl0IDA0YmYzZTI4ODE1OGVlODgwZWRmMjM3ZTQwMDdmZWUzN2QyMDQ0ZGQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDE1OjM5OjM3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGVuZGxlc3MgbG9vcCB3aGVuIFNTTF9yZWFkIHJldHVybnMgZXJyb3IuCisKK2NvbW1pdCBjMTUyNmZjY2MwNDc0YzFkYjE4Y2FhOWRiYjgzMzg1M2NkZGRlM2NjCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxNToxMzoyMSAyMDEyICswMTAwCisKKyAgICBGaXhlZCBhIHR5cG8uCisKK2NvbW1pdCBhMjdhYTE5ZGYyODMxNTZjMDMyYzgxZWFlZTVlMTE1ODU5ZDM4YzE3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxNToxMTozMiAyMDEyICswMTAwCisKKyAgICBEb24ndCByZXBsYWNlICdyYycgdmFyaWFibGUsIGl0J3MgdmFsdWUgaXMgbmVlZGVkIG91dHNpZGUgdGhlIGxvb3AuCisKK2NvbW1pdCA5ODVkZmYyYjA4NzZkOTQ4M2M0MTRmY2NlYTNlZjZiYzYzZTE0NTYxCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxNTowMTozMiAyMDEyICswMTAwCisKKyAgICBSZW1vdmVkIGR1cGxpY2F0ZSBjb2RlLgorCitjb21taXQgMmZkNzgxODMxOGU3YTVkZmU5OGY1MmNjZjc1MGMyYTYzZTgyNWRlZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTU6MDA6MjIgMjAxMiArMDEwMAorCisgICAgUmVtb3ZlZCBkdXBsaWNhdGUgY29kZS4KKworY29tbWl0IDE1ZjIxMTMwYmEzM2RjOWFmZDE2NGU1MmRmZDc0YzljZWMwZTkyMzIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDE0OjU4OjE0IDIwMTIgKzAxMDAKKworICAgIFJlbW92ZWQgZHVwbGljYXRlIGNvZGUuCisKK2NvbW1pdCAyYThhOGYyYWI3Y2Q3NTgyNmM1ZDQxZWMzY2ZkNWNlM2U5NjM0Y2YzCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxNDozOToyOCAyMDEyICswMTAwCisKKyAgICByZW1vdmUgZGVhZCBjb2RlLCAnY3AnIGlzIGFsd2F5cyAhPSBOVUxMIGhlcmUuCisKK2NvbW1pdCAzOGZkNjM3OGNjMzI3NTE4MGY2M2I4ZDliOWE0MDcyYjNkYWJmOGU0CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxNDoyNTowNiAyMDEyICswMTAwCisKKyAgICBGaXhlZCBhIHR5cG8uCisKK2NvbW1pdCBlYmQ5MmUxOWIxMGMwYTM4ZTE3Y2RlNDA3ODY0YjQ1YzI2ZTE3MzI3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxNDowNzo0MyAyMDEyICswMTAwCisKKyAgICBSZW1vdmVkIHVubmVjZXNzYXJ5IGlmICh2YWx1ZSkgY2hlY2sgLSB2YWx1ZSBpcyBjaGVja2VkIGZldyBsaW5lcyBiZWZvcmUuCisKK2NvbW1pdCBjNWNhY2Y1Y2FmOTc5ZDAxOGVhNmNhZTFjMDNiOGZkZjBiMTE4ZGZkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxMzo0NDo0MyAyMDEyICswMTAwCisKKyAgICBQcmV2ZW50IGRvdWJsZSBmcmVlKCksICdkaXJuYW1lJyBpcyBhbHJlYWR5IGZyZWVkIGluc2lkZSBzZV9hZGRfcGFpcl90b19saXN0KCkgaWYgaXQgZmFpbHMuCisKK2NvbW1pdCBhY2RjZWI1MGVhNjZkNmIzMjNjNzRlZTAyMWZiNzdlODEwZTRlN2FmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxMzo0MzoxOSAyMDEyICswMTAwCisKKyAgICBQcmV2ZW50IG1lbW9yeSBsZWFrIHdoZW4gbWFsbG9jIGZhaWxzLgorCitjb21taXQgMTcwNTNlMzRjZmU5YThhYjM5NWZiNTBmNWMzZjFkYWZjNzI0N2FlYgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTM6MzI6NTcgMjAxMiArMDEwMAorCisgICAgRml4ZWQgZG91YmxlIGZjbG9zZSgpLgorICAgIExpbnV4IG1hbiBwYWdlIGZvciBmY2xvc2UoMykgc2F5czogSW4gZWl0aGVyIGNhc2UgYW55IGZ1cnRoZXIgYWNjZXNzIChpbmNsdWRpbmcgYW5vdGhlciBjYWxsIHRvIGZjbG9zZSgpKSB0byB0aGUgc3RyZWFtIHJlc3VsdHMgaW4gdW5kZWZpbmVkIGJlaGF2aW9yLgorCitjb21taXQgYTY2NDFlZGI5Y2I3NGZjMjIzNmI0MmNlNTU1NGZjMzMyOTk1NjU1MgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxMSAxNToyMjozNCAyMDEyICswMTAwCisKKyAgICBNaW5HVzogU2tpcCB0ZXN0IFQwNjUgaWYgbm90IHN0YXJ0ZWQgZnJvbSBpbnNpZGUgYW4gTVNZUyBzaGVsbAorCitjb21taXQgYTg4M2VmMTk4MmYzMDFiMTQ4NWQyMjczMDE2NzQ5MjczMzBmNWI2NworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTU6MTQ6NTMgMjAxMiArMDEwMAorCisgICAgTW92ZWQgZGVidWcgb3B1dHB1dCBiZWZvcmUgcmV0dXJuLgorCitjb21taXQgNDU3NTE5NjcyODdkOTc2NDBlZmRjZGY4ZTc3ZThkNDkwOTM5ZDhlYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxMSAxNDoxNzoxOCAyMDEyICswMTAwCisKKyAgICBDb252ZXJ0IHN0cnRvdWxsKCkgdW5pdCB0ZXN0IGludG8gYSBOZXQtU05NUCB1bml0IHRlc3QKKworY29tbWl0IDJjMmZhNDgzMzZhNGYxZjE3N2MyOTkxZDY1MTVkMjlmMzk1MzNjNDQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTM6NTA6NDQgMjAxMiArMDEwMAorCisgICAgQ29udmVydCByZWFkX2NvbmZpZ19yZWFkX29jdGV0X3N0cmluZ19jb25zdCgpIHVuaXQgdGVzdCBpbnRvIGEgTmV0LVNOTVAgdW5pdCB0ZXN0CisKK2NvbW1pdCAwN2M2NjZmNmNlYTI3ZjJiMmFiOWJjMDhhZWQwY2I2MTMzZmUzNzU4CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxMSAxMzoxNzo0NSAyMDEyICswMTAwCisKKyAgICBGaXhlZCBjb21taXQgNzNhNTIzZTQ2ODI3N2Y2ZGYyZTk4NDg5MTMxM2I4YmU4YmNlMTkyMToKKyAgICBGaWRleCBkZXJlZmVyZW5jaW5nIGtleS0+aW5mbyB3aGVuIGtleSBpcyBrbm93biB0byBiZSBOVUxMLgorCitjb21taXQgM2I2ODY1NjYyOTZkZDg3YmM0MmI3ZjExNjlkYWFjZGIzYzQ1Y2M1OAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE9jdCAxOCAwNjoyNTo1NiAyMDEwICswMDAwCisKKyAgICBXaW4zMjogYnVpbGRzIGFnYWluIHdpdGhvdXQgd2FybmluZ3Mgd2l0aCBNU1ZDIDYuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5NDg5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZjNhN2QxYjA5NjA5ZGFkNjQ5ZjU4YmJkYjViN2UxMGQzOWIzOThjMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE9jdCAxNyAxMTowNDowNiAyMDEwICswMDAwCisKKyAgICBGb2xsb3ctdXAgZm9yIHIxOTQ3NjogZml4ZWQgYSB0eXBvLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTQ3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDJkZTczYmQzNjVhMzgxYjljMzUzY2E1MjMwNzY5ZWVmYjFhYzcxZWQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTE6NDI6NDIgMjAxMiArMDEwMAorCisgICAgbG9jYWwvcGFzc3Rlc3Q6IFJlbW92ZSBhbiBpbmNvcnJlY3QgUEFUSD0gc3RhdGVtZW50CisKK2NvbW1pdCA2OTk1MTNmMTIzOGUwYWRjZTFmMWNlYzk4ZTBkMTQ3MjkzZmM1MDQ3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gT2N0IDE3IDA5OjI1OjUxIDIwMTAgKzAwMDAKKworICAgIE5FVFNOTVBfUkVNT1ZFX0NPTlNUKCktcmVsYXRlZCBjbGVhbnVwLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTQ3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDYzNThkZWU3MmZiMzQ3ZTI2MDBhMGE3YmQyMWYyMzI3MGQzYTAwZjYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTA6NTg6MTUgMjAxMiArMDEwMAorCisgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uYzogQWRkIGEgY29tbWVudAorCitjb21taXQgNTM5NmJmZTAzMmM4Y2JjNzNjOGZmNWQ0YjA4NWViYWRhOWY1OTg0NgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxMSAxMDozMDoxNiAyMDEyICswMTAwCisKKyAgICBSZXBsYWNlIHN0cm5jcHkoKS9zdHJuY2F0KCkgYnkgc3RybGNweSgpL3N0cmxjYXQoKQorCitjb21taXQgZmViM2FmMjhkY2FlMjIwMTVhZTg2NWEyZTVkZDhjNDE2ZTk5OTFkOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxMSAxMDowMjowOCAyMDEyICswMTAwCisKKyAgICBSZXBsYWNlIHN0cm5jcHkoKS9zdHJuY2F0KCkgYnkgc3RybGNweSgpL3N0cmxjYXQoKQorCitjb21taXQgYjdlMWFhMjU1YmFlNGEzNDUzZjllY2E2NDRhODc2NjM0MzUxZjExZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciAyMCAxOTozNjoyOCAyMDEwICswMDAwCisKKyAgICBDSEFOR0VTOiBsaWJzbm1wOiBjaGFuZ2VkIHRoZSB0eXBlIG9mIHRoZSBmb3VydGggYXJndW1lbnQgb2YgbmV0c25tcF9zZXRfcm93X2NvbHVtbigpIGZyb20gY29uc3QgY2hhciogdG8gY29uc3Qgdm9pZCogc3VjaCB0aGF0IG5vIGNhc3QgaXMgbmVjZXNzYXJ5IHdoZW4gcGFzc2luZyBhbm90aGVyIGRhdGF0eXBlIHRoZW4gY2hhciogb3IgY29uc3QgY2hhciouCisgICAgQ0hBTkdFUzogV2luMzI6IGNoYW5nZWQgaW5fYWRkcl90IGZyb20gdV9pbnQgdG8gdV9sb25nIHN1Y2ggdGhhdCBpdCBtYXRjaGVzIHRoZSBkYXRhdHlwZSBvZiBzb2NrYWRkcl9pbjo6c2luX2FkZHIuCisgICAgQWxzbywgZml4ZWQgc2V2ZXJhbCBjb21waWxlciB3YXJuaW5ncyAobW9zdGx5IGNoYXIgKiA8PiB1X2NoYXIgKiBtaXNtYXRjaGVzKSBhbmQgcmVtb3ZlZCBzb21lIGNhc3RzLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE4MzQ1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIAorICAgIENvbmZsaWN0czoKKyAgICAJYWdlbnQvYWdlbnRfcmVnaXN0cnkuYworICAgIAlhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jCisgICAgCWFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYworICAgIAlhcHBzL3NubXB0cmFwZC5jCisgICAgCXNubXBsaWIvc25tcElQdjZCYXNlRG9tYWluLmMKKyAgICAJc25tcGxpYi9zbm1wVURQSVB2NkRvbWFpbi5jCisgICAgCXNubXBsaWIvc3lzdGVtLmMKKworY29tbWl0IGY0N2EzNzUyODQ5ZGIwNzVlNmYyMDUzYjg1OTViN2I3OTJmYjY0NjIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBPY3QgMTUgMTA6NTY6MDkgMjAxMCArMDAwMAorCisgICAgQ0hBTkdFUzogV2luMzI6IGJ1aWxkaW5nOiBCdWlsZHMgbm93IGNvcnJlY3RseSB3aXRoIGEgNjQtYml0IGNvbXBpbGVyLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5NDU4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMDJiNjA1NmRmOTVkYThiNjczMDM0ZTM5YzJjN2MzODZlZDBmMzY5YworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEphbiAxMCAxMTo0NDo1MyAyMDEyICswMTAwCisKKyAgICBGaXggYSBjb21waWxlciB3YXJuaW5nIGFib3V0IGNhc3RpbmcgYXdheSBjb25zdAorCitjb21taXQgYTE5ODY1ODMyZmM3N2Y0YzA0ODE0NGQ5MWE0MzFiMWU5NGQzMjlmMgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBPY3QgMTQgMjM6MTI6MDUgMjAwOSArMDAwMAorCisgICAgQ0hBTkdFUzogYXBwcywgc25tcGxpYjogUEFUQ0g6IDI4MzU1Nzc6IGlkZW50aWZpZWQgYnkgIkJhcnQgVmFuIEFzc2NoZSI6IFJlcGxhY2UgU05NUF9aRVJPIG9mIGFycmF5cyB3aXRoIGEgbWVtc2V0LgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE3Nzk3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgNjdhM2UyZWNjYjk1ZjljOWQwODA5ZWZjYmRkY2Q4NjZlZTMwNjJkNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA2IDE0OjI3OjE1IDIwMTAgKzAwMDAKKworICAgIEZpeGVkIGEgY29tcGlsZXIgd2FybmluZyBhYm91dCBkaXNjYXJkaW5nIHRoZSBjb25zdCBxdWFsaWZpZXIuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTc5NzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAzZGNkZTJlOGE1OTVhNTI3ZjA2MTQyYzNiODUyZGU4NDMzYTFjZjI4CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIEphbiAyNCAxNDoyNzo1NSAyMDEwICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBQcmV2ZW50IGdjYyBwZWQtd2FybmluZyBmb3IgTkVUU05NUF9SRU1PVkVfQ09OU1QKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxODA1MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGMyZTE1MjVhODViZGE1Mjk5YTNiOWYyNDE2MTRmN2U2NTA5YWVlYmEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNiAxMzozNToxMSAyMDEwICswMDAwCisKKyAgICBCYWNrcG9ydCBjb21taXQgMjk1ZjQ3M2M4MzU0NjIyMWIyYTcxZDgxNWM2MWUzM2E2N2Y5OGFlMzogcmVmaW5lIE5FVFNOTVBfUkVNT1ZFX0NPTlNUKCkgaW1wbGVtZW50YXRpb24uCisKK2NvbW1pdCBjYjQyM2IwYWU5ZWQwMDU5YWExMDBkYzRlMmZkOTNhZDFiOTdmYWY4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDYgMTE6NTc6NTEgMjAxMCArMDAwMAorCisgICAgQmFja3BvcnQgY29tbWl0IGUyZmIwOWUwMDkzZTJmNjQ4ZmUyNjM4ZGEyZjNhZjE4ZmRiMzJiZjAgLSBpbnRyb2R1Y2UgTkVUU05NUF9SRU1PVkVfQ09OU1QoKS4KKyAgICAKKyAgICBDb25mbGljdHM6CisgICAgCWFnZW50L3NubXBfcGVybC5jCisgICAgCXNubXBsaWIvc25tcF9zZXJ2aWNlLmMKKworY29tbWl0IGFmYzM5NmFiMTYxOGE4NTk1YTI1MTlmYmMyNWY3YTQ5OGUxNzQ0MTEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMDg6NDk6MzQgMjAxMiArMDEwMAorCisgICAgVW5icmVhayBuZXRzbm1wX21rdGVtcCgpIGFuZCBtYWtlX3RlbXAoKS4KKyAgICAKKyAgICBUaGVzZSB3ZXJlIGJyb2tlbiBieSBjb21taXQgYmI4ZmNiYjg3NDk5ODAwMGY5NDVmMDU4ZDFhYTZmZTE0ZTkyNTg5OS4KKyAgICBBbHNvIHJlcGxhY2UgYSBzdHJuY3B5KCkgY2FsbCBieSBhIGNhbGwgdG8gc3RybGNweSgpIGFuZCByZXBsYWNlIHRoZQorICAgIG1ha2VfdGVtcGZpbGUoKSBpbXBsZW1lbnRhdGlvbiBieSBhIGNhbGwgdG8gbmV0c25tcF9ta3RlbXAoKS4KKworY29tbWl0IDIxMDE4NWMxNWQwZDY1ZjBlYTk4YjVlM2MyZTA3NzZmNjIyMmQxNzAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMDg6Mjc6NDMgMjAxMiArMDEwMAorCisgICAgRml4IGEgY3Jhc2ggZHVyaW5nIHN0YXJ0dXAgb2Ygc25tcGQgaW50cm9kdWNlZCBieSBjb21taXQgODg1MDYxNjg3ZDljYWEzODQ3MDk3OTY2N2Q3ZDhhZDY1NjNjZWRhZC4KKyAgICAKKyAgICBBbHNvLCBtYWtlIHN1cmUgdGhlcmUgaXMgb25seSBhIHNpbmdsZSBjb3B5IG9mIHRoZSBjbGVhbnVwIGNvZGUgaW4gZnVuY3Rpb24KKyAgICBta2RpcmhpZXIoKS4KKworY29tbWl0IDhiYjRlODZhYmNmOThmZjI4NzQ4YWYwYWY4OWM5OGU2NGQ1Y2Q5NjEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFdlZCBKYW4gMTEgMDc6NDc6MTIgMjAxMiArMDEwMAorCisgICAgUmVkdWNlIHRoZSBzY29wZSBvZiB0aGUgb2xkbWFzayB2YXJpYWJsZS4KKworY29tbWl0IDY2ODAxNDdiMTM4ZWMxMTRmODFjNWQxMjhhYzkzNTBjODQ1MGQwODEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTg6NDQ6MzEgMjAxMiArMDAwMAorCisgICAgTWFrZSB0ZXN0IFQwMTVpbnQ2NF9jbGliIHBhc3Mgb24gNjQtYml0IHN5c3RlbXMKKworY29tbWl0IDNhYWQxNWFlNTYwYWM4NTdlNzNjOTA3NjRlOTAzZTdjYTAyYjMyOTUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE1OjQwOjU5IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyBmb3IgbGFyZ2UgT0lEIG5hbWVzCisKK2NvbW1pdCBmYmExODhlZTgyMDEwYjJmMmQ4Y2EyZTQyNmJhNjU0NDk5YWIzZDBhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNTozMTozMyAyMDEyICswMTAwCisKKyAgICBmaXhlZCBidWZmZXIgb3ZlcmZsb3cgaW4gX19jb25jYXRfb2lkX3N0cgorCitjb21taXQgMjFkMjVkODZiOGU0OTA0ZDc5OGRjOGM5NmRhZGU5ZTUwNDg0NTdhOAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTU6MjY6MDcgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYnVmZmVyIG92ZXJmbG93IHdoZW4gcGFyc2luZyBwb3J0IG51bWJlcnMuCisKK2NvbW1pdCBkMzY5MzE4NDFiMmZjMmNlYmM2MzY0YjI5NDkxMjlhMGFkNDJhZDFkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNTowNTo1MSAyMDEyICswMTAwCisKKyAgICBGaXhlZCBhIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIGxhcmdlIFN1bUZpbGUgaXMgdXNlZC4KKworY29tbWl0IDBlZmRkMDIyZGEwOWFmMWI1ZTE2MTcxZmE3YTJiNTIzYzVkNmVjNTkKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE1OjAxOjUzIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHRvbyBiaWcgdGVtcCBmaWxlIHBhdHRlcm4gaXMgdXNlZC4KKworY29tbWl0IDU2MGJjNmMwOWI3NTE1NTZlZmQ2YjRjNDQ5NTc1MWIxMDlhOTNmOTIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjU5OjI0IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdywganVzdCB0byBiZSBzdXJlLgorCitjb21taXQgODI5MWQ3YzViOTJhMzFkZDRmNTgyYjQ5N2Q0YjJhMDg1MzM2N2E1NgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTQ6NTU6MTYgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYnVmZmVyIG92ZXJmbG93LgorCitjb21taXQgODhlMWYzNGRlNzMwMDU3NWZhNmRhYjg1N2VjZGRiMjQyYTg3ZGU4MAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTQ6NDg6NTUgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYnVmZmVyIG92ZXJmbG93IHdoZW4gdG9vIGxvbmcgaW50ZXJmYWNlIG5hbWVzIGFyZSB1c2VkLgorCitjb21taXQgYmUxMzc1YTk5MjZlYmUwY2Q1Yjc4YTQwNDVjM2JkMTFjODM2NjRiMQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTQ6NDY6NDkgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYnVmZmVyIG92ZXJmbG93IHdoZW4gYSBzZW5zb3IgbmFtZSBpcyB0b28gbG9uZy4KKworY29tbWl0IDFjYjI0NjI1MzcyMDYyYjE0YzcxZDdkZDUxZTIwZmVmNzczZTI3NDMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjQxOjAwIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIGEgQ1BVIGhhcyB0b28gbG9uZyBuYW1lLgorCitjb21taXQgODRjODA3ZWUwMzI1MWU1NDg1NmU4M2Q2MmQwNmVhMDhiOGRmNTI3YQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTQ6MzY6NTAgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYnVmZmVyIG92ZXJmbG93IHdoZW4gdG9vIGxvbmcgaW50ZXJmYWNlIG5hbWVzIGFyZSB1c2VkLgorCitjb21taXQgYzMxMGUzOTBiNWRkMDVmMjRiZTdlYjE5MDRjNzRlNDEyNTljOTNkYgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTQ6MjQ6NTQgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYnVmZmVyIG92ZXJmbG93IHdoZW4gdG9vIGJpZyB0ZW1wIGZpbGUgcGF0dGVybiBpcyB1c2VkLgorCitjb21taXQgNDYwMGQxMTQzNGU4M2I4NjUzY2Y5ZjgxM2EzZDhiNjMwNDU1YjQyZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTQ6MTc6MDggMjAxMiArMDEwMAorCisgICAgRml4ZWQgcGxhdXNpYmxlIHN0cmluZyBvdmVyZmxvdyBiZWZvcmUgcGFyc2luZyBjb21tYW5kIGxpbmUgb3B0aW9ucy4KKworY29tbWl0IDg4NTA2MTY4N2Q5Y2FhMzg0NzA5Nzk2NjdkN2Q4YWQ2NTYzY2VkYWQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjExOjAyIDIwMTIgKzAxMDAKKworICAgIEdldCByaWQgb2YgKGluc2VjdXJlKSBTTk1QX01BWFBBVEggaW4gbWtkaXJoaWVyKCkKKworY29tbWl0IDgwMTY4OTBhNDQ1ZjZhN2UyYTg3M2EwNDg3M2Q0ZTI3YjZlZTY0ZTMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDEzOjQ4OjM0IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIHdyb25nIGludGVnZXIgc2l6ZSBvbiA2NCBiaXQgcGxhdGZvcm0uCisKK2NvbW1pdCBiYjhmY2JiODc0OTk4MDAwZjk0NWYwNThkMWFhNmZlMTRlOTI1ODk5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxMzozMTozNiAyMDEyICswMTAwCisKKyAgICBTZWN1cmUgbWtzdGVtcCgpIHdpdGggdW1hc2soKSAtIG9uIHNvbWUgaW1wbGVtZW50YXRpb25zIGl0IGRvZXMgbm90IHNldCAwNjAwIHBlcm1pc3Npb25zIGF1dG9tYXRpY2FsbHkuCisKK2NvbW1pdCAyMDI1MjNjYTcwNGJkNzIyZGMxYWMwZTFlNmIwZTRiNGU1NDI0NDk1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxMzoxMTo1NyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBkZXJlZmVyZW5jaW5nICdjJyBiZWZvcmUgTlVMTCBjaGVjay4KKworY29tbWl0IDczYTUyM2U0NjgyNzdmNmRmMmU5ODQ4OTEzMTNiOGJlOGJjZTE5MjEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDEzOjA4OjI0IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGRlcmVmZXJlbmNpbmcga2V5LT5pbmZvIHdoZW4ga2V5IGlzIGtub3duIHRvIGJlIE5VTEwuCisKK2NvbW1pdCAyZjRlNmFjZDcxNDE4M2YwMTViNzYzNjU3ZjhmMDg0NTkzMzU3ZTI2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgSmFuIDEwIDEwOjM4OjE2IDIwMTIgKzAxMDAKKworICAgIC5naXRpZ25vcmU6IElnbm9yZSBwZXJsLyoueW1sIGZpbGVzCisKK2NvbW1pdCBjMzY1ZDgwYzE2YzJkMTdiMTYwMDExZThjMWY5Y2I5NTg5NTRlOWRiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgSmFuIDEwIDA4OjM0OjE2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXB0cmFwZDogRG8gbm90IGludm9rZSBzaHV0ZG93bl9wZXJsKCkgZnJvbSBpbnNpZGUgdGhlIFNJR1RFUk0gaGFuZGxlciBzaW5jZSB0aGF0IGZhaWxzIGlmIFNJR1RFUk0gaXMgcmVjZWl2ZWQgd2hpbGUgYSBQZXJsIGhhbmRsZXIgaXMgYWN0aXZlLiBCYXNlZCBvbiBhIHBhdGNoIHBvc3RlZCBieSBKb2VsIEF2bmkgPGphdm5pQGFydWJhbmV0d29ya3MuY29tPgorCitjb21taXQgZDA1OWZiODc4YjE0MzY1OTk5NTNjZWE1YTA3NzQ5OWRkY2RjYmNiNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE3OjAzOjU1IDIwMTIgKzAwMDAKKworICAgIENIQU5HRVM6IEJVRzogMzQ0MDc1MjogSUYtTUlCOiBSZXBvcnQgaW50ZXJmYWNlIHNwZWVkIGNvcnJlY3RseSBmb3IgRXRoZXJuZXQgaW50ZXJmYWNlcyBpZiBvdGhlciB0aGFuIDEwIE1icHMsIDEwMCBNYnBzLCAxIEdicHMsIDIuNSBHYnBzIG9yIDEwIEdicHMuIEFkZCBzdXBwb3J0IGZvciBOSUNzIGZhc3RlciB0aGFuIDY1IEdicHMuCisKK2NvbW1pdCBjMDk5MDNhNDJlOWQ5NzMzMWZkOWU0OGVlODMxYTg1YWZkZjljNzBhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gSmFuIDkgMTM6MjY6MTcgMjAxMiArMDEwMAorCisgICAgRG94eWdlbi1zdHlsZSBkb2N1bWVudGF0aW9uIGZpeGVzCisKK2NvbW1pdCBlMzI1ZWNiZmNlNzdmMDBhYzVjZjZmYmQ5NTdmOTU0OTVmNjFjNTliCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gSmFuIDkgMTM6MjU6MTAgMjAxMiArMDEwMAorCisgICAgU3VwcHJlc3MgdW5pbnRlcmVzdGluZyBEb3h5Z2VuIHdhcm5pbmdzCisKK2NvbW1pdCBiZTkxNjFkM2E1ODk4ZTg2Mzc2N2Y5MjY2MTM0ODYxMjZjMmNiZjY3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTI6MzU6MzkgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogU2ltcGxpZnkgaW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIG1hbmlwdWxhdGluZyA2NC1iaXQgbnVtYmVycy4KKworY29tbWl0IDg2ZTRjMmJlMDg1MmEwYTEzYjA2MDMwNzU3MjBiMzI2NGVjNzBkZGUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxMjoyOToxMSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBNYWtlIGl0IGV4cGxpY2l0IHRoYXQgTUFYX1NVQklEIGlzIGFuIHVuc2lnbmVkIGNvbnN0YW50CisKK2NvbW1pdCAzN2UyNzJkOGY3YjcxODBiYTE0MGZhMzg2YTVmZjA1ODk2OGEwOGEyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTg6MjE6NDggMjAxMiArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IElGLU1JQjo6aWZUeXBlOiBSZXBvcnQgdHlwZSAiaW5maW5pYmFuZCAoMTk5KSIgZm9yIEluZmluaUJhbmQgaW50ZXJmYWNlcyBpbnN0ZWFkIG9mIHR5cGUgIm90aGVyICgxKSIuCisKK2NvbW1pdCAyNjk5MzJmYTMyYzdjZDQ3OTU3NDg5Njk4ZTA5YmVlMzFmNjNiN2FmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTQ6MzQ6NDIgMjAxMiArMDEwMAorCisgICAgRml4IGFuIE1TVkMgY29tcGlsZXIgd2FybmluZworCitjb21taXQgMGQxYzIxZjk5OTFkMTMwOWQwNTdlM2U0MDU2ZDU0N2RmN2Q0MGVjZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE2OjA2OjMxIDIwMTIgKzAxMDAKKworICAgIE1ha2UgZGVjbGFyYXRpb24gYW5kIGRlZmluaXRpb24gb2Ygc3RybGNhdCgpIGNvbnNpc3RlbnQuCisKK2NvbW1pdCAwYzNkNGRiYjBhOWNmNWIzNTlmNzBiMmYxOTkxNTQ5NTU1NGY4NDBmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTU6MjM6MTYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogV2luMzI6IHNubXBkOiBSZW1vdmUgZGxtb2QKKworY29tbWl0IDg5M2VjYzk3YjU4NzY2MTA0NWJlY2JlMDlhMzIwYzFiY2JjNzFjN2MKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxNDozNjo1OSAyMDEyICswMTAwCisKKyAgICBBZGQgc3RybGNhdCgpIHRvIHRoZSBNU1ZDIGJ1aWxkIGluZnJhc3RydWN0dXJlLgorCitjb21taXQgM2QxMjY0MjJlNjI1NzAyYjlkM2ZhMDY3NmE5N2VjNWNiMjBkOWQxMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE1OjAxOjA2IDIwMTIgKzAxMDAKKworICAgIE1ha2Ugd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmggY29uc2lzdGVudCB3aXRoIGl0cyAuaW4gZmlsZQorCitjb21taXQgYWY1M2I3NmMyZmZhNzUxZTM5NThkMGZjNWQ4Mjc5Zjc4YzJjMWMyNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE0OjQzOjU1IDIwMTIgKzAxMDAKKworICAgIFNraXAgVDA2NnBhc3Nfc2ltcGxlIGFuZCBUMDY3cGFzc3BlcnNpc3Rfc2ltcGxlIG9uIE1pbkdXCisKK2NvbW1pdCAzNWE5MmU2OTNkMTMzYTViMTFlOWU5YjU5OWRiZjQ3ZWRlZjQ5MzNiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMDg6MTY6MzYgMjAxMiArMDEwMAorCisgICAgUmVtb3ZlIHNubXBsaWIvc25tcERUTFNVRFBEb21haW4uYyBhZ2Fpbiwgd2hpY2ggd2FzIGFkZGVkIGFjY2lkZW50YWxseSB3aGlsZSByZXNvbHZpbmcgbWVyZ2UgY29uZmxpY3RzIChjb21taXQgMWQ3OGY3ZDViNThhZWQyYjUyYzRkMzg2YTdiYTgwYTQ0NzExYmFjYSkKKworY29tbWl0IGE5YjA3M2VhM2I2Y2VkZjcxM2UzMDVlN2IxNWYyOGFlNTdiZmRmMWIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKYW4gNSAxNzo0NzoxMSAyMDEyICswMDAwCisKKyAgICBGaXggNjQtYml0IGNvbXBpbGVyIHdhcm5pbmdzCisKK2NvbW1pdCA3ZTg5MGRhZDk1ZjU2NjA2OWVlMjgwMjE1YTRmZWEzZjBlMmUzOTgwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDUgMTY6Mzg6NTAgMjAxMiArMDEwMAorCisgICAgQXZvaWQgYSBTSUdTRUdWIGlmIGNwID09IE5VTEwuIFRoaXMgaXMgYSBmb2xsb3ctdXAgZm9yIGNvbW1pdCAwODliY2IzNjBhYTI2NzkwYWQyYThjZWRkZjU4M2I3YmE1ZGRmZDQ4LgorCitjb21taXQgMWY2MjAwY2ZlMWIwYjI3ZWJiMDkzYTE2MDZiNTkyZjllOTY4NGJlOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDE1OjUzOjM0IDIwMTIgKzAxMDAKKworICAgIENvbnZlcnQgc3RybmNweSgpIGNhbGxzIGludHJvZHVjZWQgaW4gdjUuNgorCitjb21taXQgYzMxMjZiMTQzOTIxZmFiZWFjNDQyMTY2ZWNhNWI1Yjc0MmZkNDJjMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDE1OjAyOjM5IDIwMTIgKzAxMDAKKworICAgIFJlcGxhY2UgbW9zdCBzdHJuY3B5KCkgY2FsbHMgaW50cm9kdWNlZCBpbiB2NS41CisKK2NvbW1pdCBiMjRlZTdjOTA5NjU3ZGI0M2JkOGM1ZDhjMDEwNTVjYTA4ODNjOWNmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMDg6NDA6MzkgMjAxMiArMDEwMAorCisgICAgRWxpbWluYXRlIG1vc3Qgc3RybmNweSgpIGFuZCBzdHJuY2F0KCkgY2FsbHMKKyAgICAKKyAgICBVc2luZyBzdHJuY3B5KCkgYW5kIHN0cm5jYXQoKSBpcyBlcnJvciBwcm9uZSAtLSBzZWUgYWxzbworICAgIGh0dHA6Ly93d3cuZ3JhdGlzb2Z0LnVzL3RvZGQvcGFwZXJzL3N0cmxjcHkuaHRtbC4gSGVuY2UgcmVwbGFjZQorICAgIGFsbCBpbnZvY2F0aW9ucyBvZiBzdHJuY3B5KCkgYW5kIHN0cm5jYXQoKS4gUmVwbGFjZQorICAgIHN0cm5jcHkoZHN0LCBzcmMsIG4pIGNhbGxzIGJ5OgorICAgICogc3RybGNweShkc3QsIHNyYywgbikgaWYgdGhlIGdvYWwgd2FzIHRvIGF2b2lkIG91dHB1dCBidWZmZXIgb3ZlcmZsb3cuCisgICAgKiBzcHJpbnRmKGRzdCwgIiUuKnMiLCBuLCBzcmMpIHRvIGNvcHkgYSBwcmVmaXggb2Ygc3JjIHRvIGRzdCBvciBpZiBzcmMgaXMKKyAgICAgICAgbm90ICdcMCctdGVybWluYXRlZC4KKyAgICAqIG1lbWNweShkc3QsIHNyYywgbikgaWYgc3RybGVuKHNyYykgPj0gbiBhbmQgbiA8IHNpemUgb2YgZHN0LgorICAgICogc3RyY3B5KGRzdCwgc3JjKSBpZiBuID4gc3RybGVuKHNyYykgYW5kIG4gPCBzaXplIG9mIGRzdC4KKworY29tbWl0IDZkOTViYzQxNDk0NzI5MzEwMDU0NzVjMzBhNTQxZmVkNTUzNGRhMzkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKYW4gNSAxMToxOToxNiAyMDEyICswMTAwCisKKyAgICBGaXggd2FybmluZ3MgdHJpZ2dlcmVkIGR1cmluZyBjb21waWxhdGlvbiBvZiB0aGUgUGVybCB4cyBzb3VyY2UgZmlsZXMKKworY29tbWl0IGJhZDA2MDBmNmVjOTQ0ZWY4NDU1ZTMyN2NlNzg0YjliMDdkMjQ3YzkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKYW4gNSAxMDowMDoxMyAyMDEyICswMTAwCisKKyAgICBBZGQgY29uZmlndXJlIHRlc3QgZm9yIHNvY2thZGRyX3VuLnN1bl9wYXRoIHN1Y2ggdGhhdCB0aGUgY29tMnNlYyB0ZXN0IGlzIHJ1bgorCitjb21taXQgOTJhMzJhYzQ4NjZhNWVkYzdmMzQ3ZDM3OTQyYmYwMjhkZTAyNzYyZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDEwOjAwOjI5IDIwMTIgKzAxMDAKKworICAgIEdldCByaWQgb2YgYSBjb21waWxlciB3YXJuaW5nCisKK2NvbW1pdCA4M2U0YzBlMzA0ZjYxN2NjYWM2NjEwZWRkNzRkMTcwNjc5N2JiZjUyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDUgMDk6MTU6MzcgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogQWRkIGEgdGVzdCBmb3Igc2Vfc3RvcmVfbGlzdCgpCisKK2NvbW1pdCA0ZmFlNTg1MjEwM2VjMzg5M2FkNDg4YmMwZDkwNWNhNjkxNDU5NWVmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDUgMDk6MTc6MTUgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogU2ltcGxpZnkgdGhlIHNlX3N0b3JlX2VudW1fbGlzdCgpIGltcGxlbWVudGF0aW9uCisKK2NvbW1pdCBiMzIyMmJiMjc1ZjJmMjM0NmUwZmQwNDc4YWZhMmVmYjYwMDc3M2U1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDUgMDk6MTY6NDUgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogRGVjbGFyZSAidHlwZSIgYXJndW1lbnQgb2Ygc2Vfc3RvcmVfbGlzdCgpIC8gc2Vfc3RvcmVfc2xpc3QoKSAvIHNlX3N0b3JlX2VudW1fbGlzdCgpIGNvbnN0CisKK2NvbW1pdCAwMjJmODQwZmJmY2IwZTI2YjA4ZjBlNTU3MjgyMzFmNjExNDk1ODAzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMTk6NTU6NTYgMjAxMiArMDAwMAorCisgICAgQXZvaWQgdGhhdCBWYWxncmluZCBjb21wbGFpbnMgYWJvdXQgc2VuZGluZyBVRFAgZGF0YQorCitjb21taXQgNjcyYTgwOWMyMjhlOTU1MGI5OWI4OTEwYmU3NWQwYjE2MTk4NTQwMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDE3OjMzOjA5IDIwMTIgKzAwMDAKKworICAgIEZpeCBhIDY0LWJpdCBjb21waWxlciB3YXJuaW5nCisKK2NvbW1pdCAyNGZmMjYwYWQ4OWNlMmFhMzYxYTU1YzdjNzJlOTE2MDMxZGVmZTM1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMTc6MTE6MjQgMjAxMiArMDEwMAorCisgICAgQ2hhbmdlIHRoZSB0eXBlIG9mIHRoZSBzZWNvbmQgYXJndW1lbnQgb2Ygc25tcF9zZXRfdmFyX3ZhbHVlKCkgYW5kIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSgpIGZyb20gdV9jaGFyKiB0byB2b2lkKiwgbGlrZSBvbiBtb3JlIHJlY2VudCBicmFuY2hlcworCitjb21taXQgYzZjYTczN2ZiNDZmOTBhNGJkYTVkNDM3MzRhYWMzNGU4MzdhMDVmNAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciAxMyAxOTowNzozNyAyMDEwICswMDAwCisKKyAgICBCYWNrcG9ydCBjb21taXQgZjUwNGNlMmQ3NGE0YmM4OGY2OGNjOTUxNWZhNzA1MzM3M2NiMTViNS4KKyAgICAoRml4ZWQgbW9zdCBjb21waWxlciB3YXJuaW5ncyB0cmlnZ2VyZWQgYnkgdGhlIHNvdXJjZSBjb2RlIGluIHRoZSBwZXJsIHN1YmRpcmVjdG9yeS4gTm90ZTogdGhlc2UgY2hhbmdlcyBtYXkgY29udGFpbiBzb21lIHJlYWwgYnVnIGZpeGVzLikKKyAgICAKKyAgICBDb25mbGljdHM6CisgICAgCisgICAgCXBlcmwvQVNOL0FTTi54cworICAgIAlwZXJsL09JRC9PSUQueHMKKyAgICAJcGVybC9TTk1QL1NOTVAueHMKKyAgICAJcGVybC9hZ2VudC9hZ2VudC54cworCitjb21taXQgZDIxMmRjOTg0ZWMzNGU0ZDIzMDYyNWU0NmU1OGIwYzYyOGE1MGRmNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDE2OjQ2OjQ5IDIwMTIgKzAxMDAKKworICAgIFNOTVAueHMgY29tcGlsZXIgd2FybmluZyBmaXhlcworCitjb21taXQgYmFjZWViYjEwZDhjYWY1ZGI2M2NjMzY5MzVmZWQ2NWVlOTMxMDI5ZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDE2OjIyOjQ0IDIwMTIgKzAxMDAKKworICAgIEFkZCBkZWNsYXJhdGlvbiBmb3Igc2h1dGRvd25fc25tcE5vdGlmeVRhYmxlKCkKKworY29tbWl0IGY3Zjk2NmFiZDZkMjg0OWIxMzMxMjUyYWZlNWM0NzNlNWM0MGIzMmQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAxNDoyNDozMyAyMDEyICswMTAwCisKKyAgICBGaXggZm9ybWF0IHNwZWNpZmljYXRpb24gbWlzbWF0Y2hlcy4KKworY29tbWl0IDMwM2MwMTViY2ZlOWFmMGIxNTRlOTg4MWM3YjRmNDQ5ZTA4ZjMwYmIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXkgNiAyMjowNjoyMyAyMDA5ICswMDAwCisKKyAgICBCYWNrcG9ydCBjb21taXQgZDNlYjJiNWNlZDIyYTg0ODAwNTNjZTQzYWNmOTczOTcyOTA1NTQwNAorICAgIChTcHJpbmtsZSBzb21lIGNvbnN0LW5lc3Mgd2hlcmUgcmVsZXZhbnQgLyBmaXggZm9ybWF0IHN0cmluZyBtaXNtYXRjaGVzLAorICAgIE5pZWxzIEJhZ2dlc2VuLCBNYXkgMjAwOSkKKyAgICAKKyAgICBDb25mbGljdHM6CisgICAgCisgICAgCWFnZW50L2FnZW50X3N5c09SVGFibGUuYworICAgIAlhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJDb25mLmMKKyAgICAJaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisgICAgCWluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCisKK2NvbW1pdCBkOTViNDA0MDY5MTZiZGE1YjQ4YjVhNjEzMWJlYzI3Yjg2NmIwYTc5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWF5IDYgMjE6NTk6MjAgMjAwOSArMDAwMAorCisgICAgQmFja3BvcnQgYTJhNzMxNmMzMTBmMGZjYzM3Mjg2NzNmYTA0NzA1MWMyM2I3MTk2MAorICAgIChUcml2aWFsIHdhcm5pbmcgZml4ZXMsIE5pZWxzIEJhZ2dlc2VuLCBNYXkgMjAwOSkuCisgICAgCisgICAgQ29uZmxpY3RzOgorICAgIAorICAgIAlhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jCisgICAgCWFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYworICAgIAlhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2xpbnV4LmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jCisgICAgCWFnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYworICAgIAlhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2dtYXRjaC5jCisgICAgCWFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmMKKyAgICAJYWdlbnQvc25tcGQuYworICAgIAlzbm1wbGliL2NvbnRhaW5lcl9saXN0X3NzbGwuYworCitjb21taXQgZDg2YzQ3ZjAwM2ZkYzE5MmJjZTdiNDZhYzRmMDZiMDllMzg3YzEyYgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNCAxMzoyOTowOCAyMDEyICswMTAwCisKKyAgICBGaXhlZCBhIHR5cG8KKworY29tbWl0IGJlZTRkNzljZjRlYjdlMGE0NTM5N2Y1OWI1Mjk4ZGE2MzNhOGUxYmEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDQgMTM6MTQ6NTcgMjAxMiArMDEwMAorCisgICAgRml4ZWQgcmVhZGluZyBwYXN0IGVuZCBvZiBidWZmZXIuCisKK2NvbW1pdCAzZGMwZTAwYTJmZDhlMzRmZTFhZTMzZWNhYmYzNmUxNDY0NjBhMzFmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDEyOjQwOjA3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIGxhcmdlICd0b2tlbicgaXMgdXNlZC4KKworY29tbWl0IGIzYzQ5ODI1NDJlMGFiMTUxZmIzODg0NzU0Y2RmYmNiNDcyZGE1MmQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDQgMTI6Mjg6NTIgMjAxMiArMDEwMAorCisgICAgRml4ZWQgb2ZmLWJ5LW9uZSBtZW1zZXQuCisKK2NvbW1pdCAwZjUzNjk1MDQ0ZGQzZjBjMzUwNzc1M2UzZjhjMjlkOTdlOTY4NzJkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgQXVnIDMgMjE6Mzg6MjYgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYiwgc25tcGQsIHBlcmw6IEVsaW1pbmF0ZSBkZWFkIHZhcmlhYmxlcworICAgIAorICAgIENvbmZsaWN0czoKKyAgICAKKyAgICAJYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jCisgICAgCWFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZGF0YV9hY2Nlc3MvZG90M3N0YXRzX2xpbnV4LmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jCisgICAgCWFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYworICAgIAlhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19zdGF0dXMuYworICAgIAlhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXguYworICAgIAlhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYworICAgIAlhZ2VudC9taWJncm91cC9ybW9uLW1pYi9kYXRhX2FjY2Vzcy9ldGhlcnN0YXRzX2xpbnV4LmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jCisgICAgCWFwcHMvc25tcHRscy5jCisgICAgCWFwcHMvc25tcHRyYXBkX2xvZy5jCisgICAgCXNubXBsaWIvZGlyX3V0aWxzLmMKKyAgICAJc25tcGxpYi9zbm1wX2NsaWVudC5jCisgICAgCXNubXBsaWIvc25tcF9vcGVuc3NsLmMKKyAgICAJc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4uYworCitjb21taXQgMDE1MzgwNWM5OWI5MTk3MzY1OTM1YzVkMTFhZTljM2Q0YmZhYTBmMworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDA5OjQ4OjQxIDIwMTIgKzAxMDAKKworICAgIEZpeCBhIHNldC1idXQtbm90LXVzZWQgd2FybmluZworCitjb21taXQgM2Y4ODg1ZmJlZTk0MDc3NDhmYzJmMDU3MzcyOGExMWJhMmJjMDIzYQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBcHIgMjggMDU6NTE6MTMgMjAwOSArMDAwMAorCisgICAgUmV0dXJuIGEgdmFsdWUgZnJvbSBzcHJpbnRfcmVhbGxvY192YWx1ZSBldmVuIGlmIG5vIHN1YnRyZWUgaXMgbG9jYXRlZC4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxNzU3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGIxZWFhZjMwMjM2OWZkNDU1MmU4ZmVlN2I2YTgwNTA5MWVjMGE5YjQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDQgMTE6Mzg6NTEgMjAxMiArMDEwMAorCisgICAgQWRkZWQgY2hlY2sgb2YgZmluZF9zZWNfbW9kKCkgcmV0dXJuIHZhbHVlLgorCitjb21taXQgYWVlNGU4OTVmZTNiZDVmNGE2MWUzNDI3NWJmY2EwMzY4YjU2MDU1NQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNCAxMTozMToyMiAyMDEyICswMTAwCisKKyAgICBBZGRlZCBjaGVjayBvZiBzbm1wX3Nlc3NfdHJhbnNwb3J0KCkgcmV0dXJuIHZhbHVlLgorCitjb21taXQgNWQxZDBhNzQ0YWIzMGM4ZTY0NWMzYjg1MDZjYmJkMmNjZWIzZDI3NQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNCAxMTowNDo0OCAyMDEyICswMTAwCisKKyAgICBBZGRlZCBjaGVjayBvZiBuZXRzbm1wX2V4dHJhY3RfaXRlcmF0b3JfY29udGV4dCgpIHJldHVybiB2YWx1ZS4KKworY29tbWl0IDI5OWVhOWE4OWMzZjE3NThhNzc0OGJiOWIzNDExZjYyZjJjNzBmODgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDQgMTA6NTQ6NTUgMjAxMiArMDEwMAorCisgICAgQWRkZWQgY2hlY2sgb2YgZm9wZW4oKSByZXR1cm4gdmFsdWUsIGp1c3QgaW4gY2FzZSBvZiBzb21lIHJhY2UuCisKK2NvbW1pdCA5MGYxYWU2NzU3OTE3NDgxNjM2ZWVmNzcxMDBjYWVlYjUzZWRmZTAxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgSmFuIDMgMTA6MDY6NTYgMjAxMiArMDEwMAorCisgICAgQWRkIHN0cmxjYXQuYy4gU291cmNlOiBodHRwOi8vd3d3LmZyZWVic2Qub3JnL2NnaS9jdnN3ZWIuY2dpL3NyYy9saWIvbGliYy9zdHJpbmcvc3RybGNhdC5jLgorCitjb21taXQgMDg5YmNiMzYwYWEyNjc5MGFkMmE4Y2VkZGY1ODNiN2JhNWRkZmQ0OAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNCAxMDo1MDo1NiAyMDEyICswMTAwCisKKyAgICBBZGRlZCBzdHJyY2hyIHJldHVybiB2YWx1ZSBjaGVjaywganVzdCB0byBiZSBzdXJlLgorCitjb21taXQgMTk5YTA1MTFmNmViMGVmM2ZmMWQ5ZjkyMmI3OTBhYjY3ZGZkZTAxZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDEwOjMxOjI2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBzbXV4OiBzaW1wbGlmeSBzbXV4X2xpc3RfZGV0YWNoKCkKKworY29tbWl0IGQ4ODM1NzNhYTczZTBmNWZjMTg4YWNlZGVlNjQ1MWY5NWRhZTkwMGMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAxMDoyMzowNiAyMDEyICswMTAwCisKKyAgICBGaXggYSBjb21waWxlciB3YXJuaW5nIGludHJvZHVjZWQgYnkgY29tbWl0IGE4MDlmZTUwNzVjOWYzNzQ3MTVmN2QxYTY4Mjk0OWEwNzMwMTcyYzEuCisKK2NvbW1pdCA3YjdhM2ViMjUwMDUyN2VhYTE2OTkyODdhNmNhNmZjYzRjYzJlMDhhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMDk6NDA6MDIgMjAxMiArMDEwMAorCisgICAgRml4IGEgYnVpbGQgZXJyb3IgY2F1c2VkIGJ5IGNvbW1pdCBhODA5ZmU1MDc1YzlmMzc0NzE1ZjdkMWE2ODI5NDlhMDczMDE3MmMxLgorCitjb21taXQgMmI2YzExOWZlZDQ4NDhkYTY2NjNjMTFmMGMyY2JkYzI5OTIxYjVjNgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNTo1MToxMCAyMDEyICswMTAwCisKKyAgICBDaGVjayBmb3IgbmV0c25tcF9kc19nZXRfaW50KCkgZXJyb3JzLgorCitjb21taXQgNmNlNTM2MGNhYTRjOWRlNTFhZGU1Nzg3OWU4M2Y5NmJkMDRiNGM1YQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNTo0MjoyMyAyMDEyICswMTAwCisKKyAgICBDaGVjayBmb3IgbWlzc2luZyB2aWV3LgorCitjb21taXQgYjNiYzU0YmVkMzE2OTBhODVkZjJhY2ZiZjMyOTZkYTkzYTllODliNAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNToyMzoxNyAyMDEyICswMTAwCisKKyAgICBDaGVjayBzb2NrZXQoKSByZXN1bHQuCisgICAgQWxzbyBjbG9zZSB0aGUgc29ja2V0IG9uIGVycm9yLgorCitjb21taXQgOTIwNzVmNTFjZDQ1YTM4Y2EzODc2MGIzZmZlODJlMTY1NTllOWMyZQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNToxODoyNiAyMDEyICswMTAwCisKKyAgICBDaGVjayBvcGVuKCkgcmVzdWx0LgorCitjb21taXQgNjY2NWQ1ZmUyZmM1NjlkNmZhODU0ZDFkNzhlMzQ3YmJhYzY5ZTA3MAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNDoyMjoyMiAyMDEyICswMTAwCisKKyAgICBGaXhlZCBtaXNzaW5nIGJyZWFrLgorCitjb21taXQgYTY2NDhjNTQ1M2UxZWY4ZGFjNTdhMzhlZmNjMDBjY2U1M2JmOWU0ZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNDoyMDoyNyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBtaXNzaW5nIGJyZWFrLgorCitjb21taXQgZDY4ZGNhZTBmMThkNTU0NTcxYWVmMzIxOTQ0YTUyOTA1NDhkZGU4NgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNDoxNjoxMSAyMDEyICswMTAwCisKKyAgICBBZGRlZCAnZmFsbHRocm91Z2gnIGNvbW1lbnQgZm9yIENvdmVyaXR5LgorCitjb21taXQgZmI2ZjgwYzBmZTNiYTM2ZTU2ZjViOTExYTQ3ZTNmNmYzMmJhMjY2ZQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNDoxNDowNyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBleGl0IGNvZGUgb2YgZW5jb2RlX2tleWNoYW5nZSB3aXRoIHdyb25nIGFyZ3VtZW50cy4KKyAgICBBbHNvIGFkZGVkIGEgY29tbWVudCBmb3IgQ292ZXJpdHkuCisKK2NvbW1pdCAzMTMwZTI0ZmRjMjMyNDY0ZGQ3YmIyMTZmNDZjYWZhMmUwZTc3NWE2CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE0OjA5OjU0IDIwMTIgKzAxMDAKKworICAgIEFkZGVkIG1pc3NpbmcgYnJlYWsKKworY29tbWl0IDE4YzEyNmE5NTY1Y2I0ZDY5ZDc1MTNiOTQ0YTIxMDU1ODgwNDVkMzUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTQ6MDc6MjkgMjAxMiArMDEwMAorCisgICAgQWRkZWQgJ2ZhbGx0aHJvdWdoJyBjb21tZW50IGZvciBDb3Zlcml0eS4KKworY29tbWl0IDZkMzFjODIwNzBhMmM2OGZlM2M1MTllOWQ1NmZhMjc3OTU1NGQwMWYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTQ6MDE6NTMgMjAxMiArMDEwMAorCisgICAgQWRkZWQgJ2ZhbGx0aHJvdWdoJyBjb21tZW50IGZvciBDb3Zlcml0eS4KKworY29tbWl0IGRjNmYwZTJlNTQ5YjRjZDA2MWViYzE5MDA4NGIxZmM3N2E1NWY0MGYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTM6MzI6NTkgMjAxMiArMDEwMAorCisgICAgRml4ZWQgd3Jvbmcgb3BlcmF0b3IKKworY29tbWl0IGRhYjMyODY3ZWQwYjk5MzAxZWZkN2I4ZDg1MmFkMTI4OGExODRiZTAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTM6MzA6MzMgMjAxMiArMDEwMAorCisgICAgRml4ZWQgUVVJVEZVTiB1c2FnZS4KKworY29tbWl0IGIxYTJiY2Y2NDYxNWViNjZiYzI0ZDViZTQ5NTBlNDUwMTI5NjIwNDUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTM6MTg6MDMgMjAxMiArMDEwMAorCisgICAgRml4ZWQgd3Jvbmcgb3BlcmF0b3IKKworY29tbWl0IGIyYjFjODUxYjk0ZmVkMzdjMzg2ZWFhMWJmZWFkNWM3NzY5NmUzZWYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTM6MTQ6NTIgMjAxMiArMDEwMAorCisgICAgRml4ZWQgd3Jvbmcgb3BlcmF0b3IKKworY29tbWl0IGE4MDlmZTUwNzVjOWYzNzQ3MTVmN2QxYTY4Mjk0OWEwNzMwMTcyYzEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTA6NTg6NDYgMjAxMiArMDEwMAorCisgICAgQWRkZWQgY2hlY2sgZm9yIGZhaWxlZCByZWdpc3Rlcl9taWIuCisKK2NvbW1pdCA1OTQ5ZjA1NWMxNmFlNjUwNjE1YWFlN2ExZmVlM2YyZDdiMTZkOTQwCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDEwOjI5OjU5IDIwMTIgKzAxMDAKKworICAgIE1ha2UgTUlCIGZpbGUgcGFyc2luZyBhbmQgZGV0ZWN0aW9uIG1vcmUgc3RyaWN0IC0gTEFCRUwgaXMgcmVxdWlyZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBNSUIgZmlsZXMuCisKK2NvbW1pdCBlNGI2NzM2ODNjNjhiYThiM2FiYzA0MGI5MTI1ZWMzMDQ2NDNjYzdjCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gSmFuIDEgMjM6MDA6MjQgMjAxMiArMDEwMAorCisgICAgQXNzdW1lIHRoYXQgbGliZGwgbWlnaHQgYmUgaW4gQUdFTlRMSUJTIG9yIFNOTVBMSUJTIHNvIHByZWFkZCB0aGVtLgorCitjb21taXQgYjEzYzFlNTdiZWRiYTc5YjgwNjEwM2M3NGYxOTIxZDUzYTcwNmIzOAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIEphbiAxIDIyOjU1OjA2IDIwMTIgKzAxMDAKKworICAgIERvIG5vdCByZXF1aXJlIHVjZC1zbm1wL2RsbW9kIHVubGVzcyBpdCB3aWxsIHdvcmsuCisKK2NvbW1pdCAyN2RjZWEwZDVmODAxZGY0OTRhYjJjYjVjNWMwZWJlNTRlYjBkY2QzCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgRGVjIDMxIDE0OjQ4OjI5IDIwMTEgKzAxMDAKKworICAgIEFkanVzdCBwYXRocyBmb3IgdGVzdCByZXN0cnVjdHVyZQorCitjb21taXQgMTRiNjBlODVhMWI1NzAwZTkzZDEyNmUyZjI5MWQ1YzQ4NWYzNGUzNgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IERlYyAzMSAxNDoxNDoyOSAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogTWFrZSB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgZGxtb2QgbW9kdWxlIGZhaWwgcmF0aGVyIHRoYW4gZ2VuZXJhdGUgYSBkdW1teSBtb2R1bGUgaWYgdGhlIGRsb3BlbiBmdW5jdGlvbiBpc24ndCBhdmFpbGFibGUuCisKK2NvbW1pdCA5OGE5NzUzOGZjMWU5ZmY0NmI2MGQ1ZDk2OTM0NzQ0NDU3ODM3OGMwCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgRGVjIDMxIDEzOjM1OjEzIDIwMTEgKzAxMDAKKworICAgIEFkanVzdCB0aGUgcGF0aHMgdG8gc3VwcG9ydCB0ZXN0aW5nIGV2ZW4gaWYgYnVpbGRkaXIgIT0gc3JjZGlyCisKK2NvbW1pdCA4OGYwYWYzY2ZiOTE2YWU1ODYzY2MyOTg2MDcxZDQzNWYyMGMzMDY0CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgRGVjIDMxIDExOjM3OjUyIDIwMTEgKzAxMDAKKworICAgIFJlZHVjZSB0aGUgc2NvcGUgb2YgdGhlIHZhcmlhYmxlcyAncCcgYW5kICdsZW4nLgorCitjb21taXQgMDgxNWE3NTM2Yzc2ZjdlNDg0MjYzODY4M2Y2NzQ4OTRhMWE4Y2UxNAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBEZWMgMjkgMTQ6NDI6NTQgMjAxMSArMDAwMAorCisgICAgUmVwb3J0IHByb2JsZW1zIHdpdGggU2V0VW5kbyBwcm9jZXNzaW5nCisgICAgTWlzc2VkIHdoZW4gYXBwbHlpbmcgcGF0Y2ggIzM0NDU0NDAKKworY29tbWl0IGViMmFiMjM3NDJjYTg2YzBiODljY2ZlOTFlYjZlYTM3NGJmM2FjYzEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgRGVjIDI5IDE0OjM3OjMxIDIwMTEgKzAwMDAKKworICAgIENoZWNrIGZvciB0aGUgZXhwZWN0ZWQgZXJyb3IgKEVQSVBFKSBvbiBjbG9zdXJlLgorICAgIE1pc3NlZCB3aGVuIGFwcGx5aW5nIHBhdGNoICMzNDQ3NDQ0CisKK2NvbW1pdCBhYWMxMGJjNGYwNTNjMDE0ZjM4MmQ2NTkzZmMzMmFiOTVlMGIxYTU3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IERlYyAyOSAxMjo1OTo1MiAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzNDYzNzY3OiBIYW5kbGUgcGFyc2luZyBzdWJpZGVudGlmaWVycyA+IDJeMzEKKworY29tbWl0IGJiYzAyZTM2ZTkwYzFhYWI3ODk4NTYyZjk2M2Y1Y2FkYjI2ZTEwYmQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBXZWQgRGVjIDI4IDE3OjE1OjE2IDIwMTEgKzAwMDAKKworICAgIE1vdmUgcGFzcy9wYXNzX3BlcnNpc3QgdGVzdHMgdG8gdGhlIG5ldyBsb2NhdGlvbgorCitjb21taXQgMzg5OGMwNGZkNmY4OTg2NzA2MmZkZmViZjM2ODU3YWI2MTljMDQ1MAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFdlZCBEZWMgMjggMTY6NTM6MjQgMjAxMSArMDAwMAorCisgICAgQWRkIHRlc3RzIGZvciBwYXNzL3Bhc3NfcGVyc2lzdCwgc3VwcGxpZWQgYnkgQmlsbCBGZW5uZXIKKworY29tbWl0IGQ1ZWUzZjBhMWE2M2JiMTc1MmM3NGNiY2E1NWFhM2Q0MGJmOWJmMTMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDIxOjU4OjUxIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAzNDQ3NDQ0OiBGaXggU0lHX1BJUEUgaGFuZGxpbmcKKyAgICBQYXRjaCBwcm92aWRlZCBieSBCaWxsIEZlbm5lcgorCitjb21taXQgMmExN2IzNzQzMGMxODUyOTk4YzM1ODhlNTQ3ZDdlYjYxYzA2ZGE3MQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMjE6NDU6MzggMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogYWdlbnR4OiBQQVRDSEVTOiAzNDQ1NDQwOiBNb3JlIHJvYnVzdCBoYW5kbGluZyBvZiBBZ2VudFggZXJyb3JzCisgICAgUGF0Y2ggcHJvdmlkZWQgYnkgQmlsbCBGZW5uZXIKKworY29tbWl0IGZlNThhMGU1ZjRkNGUyZTJlY2JjYjQ3MzgyYjA4Y2IxZTRkZjM1MmMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDE4OjE2OjIzIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIRVM6IDM0NTY3NzA6IEhhbmRsZSAob2Jzb2xldGUpIFVJbnRlZ2VyIHR5cGUgcHJvcGVybHkKKyAgICBQYXRjaCBwcm92aWRlZCBieSBCaWxsIEZlbm5lcgorCitjb21taXQgMWJlOGNmMDhhNjdhOTE4NTVmZWUxZWM0YTJkOGUwODdjNzgxMjQ1NgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTg6MDQ6MTAgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogYWdlbnR4OiBQQVRDSEVTOiAzNDQ1NDM3OiBMb2cgQWdlbnRYIGRpc2Nvbm5lY3Rpb25zCisgICAgKGluIGxpbmUgd2l0aCBjb25uZWN0aW9ucykgUGF0Y2ggcHJvdmlkZWQgYnkgQmlsbCBGZW5uZXIKKworY29tbWl0IDA2ODAzNzI4OTEwN2ZhYTJiYTNmNWNkMmZiMDBjMTk0OTRiYjlhMDQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDE3OjI3OjQ2IDIwMTEgKzAwMDAKKworICAgIEhhbmRsZSBhbnkgR0VUTkVYVCByZXF1ZXN0IE9JRCwgbm90IGp1c3QgYSBzaW1wbGUgd2Fsay4KKworY29tbWl0IGE3NGZhNTI4OTgzMTIzZDM1NWE4Y2RjYWE3N2RkNGViNGI4YzY5NTkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDE3OjAwOjE4IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHBhc3M6IFBBVENIRVM6IDM0OTM5NDogQnJpbmcgcGFzc19wZXJzaXN0dGVzdCBzY3JpcHQgaW50byBsaW5lIHdpdGggcGFzc3Rlc3QqCisgICAgKGkuZS4gdXNpbmcgdGhlIGxlZ2l0aW1hdGUgc3RydWN0dXJlIG9mIE5FVC1TTk1QLVBBU1MtTUlCKQorICAgIFBhdGNoIHByb3ZpZGVkIGJ5IEJpbGwgRmVubmVyCisKK2NvbW1pdCBiYmU2NDllYmZhNjFlYTIyMzk5MTcwYjM2Yjk5ZGIzMGExZGU4MDEyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAxNjo1NDozOCAyMDExICswMDAwCisKKyAgICBSZXdvcmsgInBhc3N0ZXN0IiBleGFtcGxlIHRvIGZ1bGx5IHZhbGlkYXRlIEdFVE5FWFQgcmVxdWVzdHMKKyAgICBhbmQgdXNlIGEgbGVnaXRpbWF0ZSBzdHJ1Y3R1cmUgZm9yIG91dHB1dC4gIEJhY2twb3J0IG9mIFNWTgorICAgIHJldmlzaW9uIDE3NjMyICh3aGljaCB1cGRhdGVkICdwYXNzdGVzdC5wbCcgYnV0IG1pc3NlZCAncGFzc3Rlc3QnKQorICAgIENvcnJlY3QgaW4gYnJhbmNoZXMgNS41IGFuZCBhYm92ZQorCitjb21taXQgODJkMDZjNzI0N2IyMmM4YjAxZDQ1YmY1NTA0MWQyZjFlNjQyN2Q0OQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTM6NDU6MTggMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDM0NDc2NzE6IEZpeCBvdmVycmlkZSBoYW5kbGluZyBvZiBPSUQgdmFsdWVzCisgICAgUGF0Y2ggc3VwcGxpZWQgYnkgUGhpbGxpcCBPJ0Rvbm5lbGwKKworY29tbWl0IGJhNGE5Y2U1MWM5NjAwZjlmZGExNjhmMWU2ZWZmMzJhMWRiNjNjYjkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDEzOjI0OjI2IDIwMTEgKzAwMDAKKworICAgIFR3ZWFrIC0tZGlzYWJsZS1zbm1wLXNldCBjaGFuZ2VzCisKK2NvbW1pdCA4MjdjOGIyODgzMDE3MWZhYTljNjFkNTNlZmNhOWViNjYwMDU2MWMyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAxMToyNTo0MyAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBweXRob246IFBBVENIRVM6IDM0MzM4NDY6IEZpeCBmb3IgdXNlIHdpdGggcHl0aG9uIDIuNAorCitjb21taXQgZjk4YTU0YTk5Y2FmN2I0NmIxMDBhOTIwZGI5NDJjYmNhOWM0MzkyNgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTA6MTA6MzYgMjAxMSArMDAwMAorCisgICAgU2tpcCBTRVQtYmFzZWQgdGVzdHMgd2hlbiBjb25maWd1cmVkIHdpdGggLS1kaXNhYmxlLXNldC1zdXBwb3J0CisKK2NvbW1pdCAyMzBkZjE0Zjk0YzM3MzZmZjM0Mzc5YTRlMjgxZWVhMzUzYjQ3ZjgwCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBNb24gRGVjIDI2IDIzOjM0OjIzIDIwMTEgKzAxMDAKKworICAgIERvIG5vdCBhc3NpZ24gdG1TdGF0ZVJlZiB0d2ljZQorCitjb21taXQgYzk2YjNiNGQ4NTMwYWQ1ZTBlZmIwM2YyNGRhYjVlNWYxYTQ2MDAzMQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIERlYyAyNSAxMToxODoyMSAyMDExICswMTAwCisKKyAgICBDb3JyZWN0IHVzZS1hZnRlci1mcmVlLgorCitjb21taXQgYzU5NzhjODljZGUyNDQwZjRkMjBkYWRiYzlkMWRkOGRiNTYyZDU2ZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIERlYyAyNSAxMToxNTo0NCAyMDExICswMTAwCisKKyAgICBDb3JyZWN0IGRvdWJsZS1mcmVlLgorICAgIAorICAgIG5ldHNubXBfdGxzdG1BZGRyX2FkZCB0YWtlcyBvd25lcnNoaXAgb2YgaXQncyBhcmd1bWVudCBzbyBjYWxsaW5nIGZyZWUgb24gdGhlCisgICAgYXJndW1lbnQgb24gZmFpbHVyZSBpcyBpbmNvcnJlY3QuCisKK2NvbW1pdCBjMTM5Y2ExMjNiNDRiYjNiOWI2YmY5MjFlMTYwOWNjNDVmNjNhNjYwCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgU2F0IERlYyAyNCAxNjo1NTozMCAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUyAzNDEwMDU5OiBGaXggc3BhcnNlbHkgYXVnbWVudGluZyB0cmlnZ2VyIHRhYmxlcworICAgIFBhdGNoIHByb3ZpZGVkIGJ5IFN0ZXBoZW4gVHVybmVyCisKK2NvbW1pdCBjNGFlMDIxYjJlNjM4NDQzNzA4MWM1NjIzZjM2MGM4ODk2MzkwMTg4CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgU2F0IERlYyAyNCAxNjoyOTo1NCAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUyAzNDEwMDUwOiBTa2lwIGFscmVhZHktJ3Byb2Nlc3NlZCcgdmFyYmluZHMKKyAgICBCYXNlZCBvbiBtaWIyYyBwYXRjaCBwcm92aWRlZCBieSBTdGVwaGVuIFR1cm5lcgorCitjb21taXQgYzZhY2NmOGM2NjI1NGZhOGM0ODc2N2VkN2RlYzc5NWRkYWZjNTIyZQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFNhdCBEZWMgMjQgMTY6Mjc6MTEgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVMgMzQxMDA1MDogU2tpcCBhbHJlYWR5LSdwcm9jZXNzZWQnIHZhcmJpbmRzCisgICAgUGF0Y2ggcHJvdmlkZWQgYnkgU3RlcGhlbiBUdXJuZXIKKworY29tbWl0IGE2MTgyNmFkOGNhNTQ2NjFkMWQ5MDk3MTI1MDNiZDNhOGIzMmVlZDAKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFRodSBEZWMgMjIgMTg6MzU6NDYgMjAxMSArMDEwMAorCisgICAgUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KKyAgICAKKyAgICBteU1hdGNoIGlzIHVudXNlZCBhcyBubWF0Y2ggaXMgemVybyBhbmQgYWxzbyBzaW5jZSByZWdleEJ1ZmZlciBpcyBjcmVhdGVkCisgICAgd2l0aCBSRUdfTk9TVUIgc2V0LgorCitjb21taXQgYmE0ZmM4MGZlMmNmZDVhNWQ4OTIzMGQ4ZjM3MDNlNGZlMDFlNjAxOQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBEZWMgMjIgMTk6MjQ6NDAgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIIDM0MDIzNzY6IGZyb20gTGVvbmFyZG8gQ2hpcXVpdHRvOiBSZWNvZ25pc2UgUmVpc2VyRlMKKyAgICBBbHNvIG1vdmUgdmFyaW91cyBGU1R5cGUgZGVmaW5pdGlvbnMgdG8gdGhlIGFwcHJvcHJpYXRlIGJsb2NrcworCitjb21taXQgYjVhYzRhMDRkY2Q1NDcwZDA4ZDAzMzIxYWJjZDFlOTgyNjIxZTZlMAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBEZWMgMjIgMTQ6Mzk6NDYgMjAxMSArMDEwMAorCisgICAgRml4ZWQgdW50ZXJtaW5hdGVkIHN0cmluZ3MgYWZ0ZXIgc3RybmNweQorCitjb21taXQgMmIzN2U0ZThmMjUwYTBkODgyMTE5OWE3NGFjM2Y0ZTViN2I3YmFiYQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBEZWMgMjIgMTQ6MzE6NTEgMjAxMSArMDEwMAorCisgICAgRml4ZWQgdW50ZXJtaW5hdGVkIHN0cmluZ3MgYWZ0ZXIgc3RybmNweQorCitjb21taXQgM2QwODM0NTE1NmM0MTkzMzNkZTk2OWYxM2QyMWZjZWM3ZTE4ZTk0ZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBEZWMgMjIgMTQ6MzI6MjkgMjAxMSArMDEwMAorCisgICAgRml4ZWQgdW50ZXJtaW5hdGVkIHN0cmluZ3MgYWZ0ZXIgc3RybmNweQorCitjb21taXQgY2Q4NTlhZDUxYzRmMThkNWIwZmM2OWRkNjY5ZmNiMDUxYzc5ODk2OQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBEZWMgMjIgMTQ6Mzk6MzMgMjAxMSArMDEwMAorCisgICAgRml4ZWQgd3JvbmcgbWVtbW92ZSBzaXplCisKK2NvbW1pdCAzMGZmNThkMDlkNGM5ZDU0MzhiYjYyMTA1NGZkN2FkN2EyYTU5N2U0CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IERlYyAyMiAxNDowNzoxOSAyMDExICswMTAwCisKKyAgICBGaXhlZCB3cm9uZyBsZW5ndGggb2YgYnVmZmVyIHdoZW4gcHJpbnRpbmcgQVNOX0JJVF9TVFIKKworY29tbWl0IDZjMTQ4N2UxZDM2MGQzZDI2MGEzOWNiMWY1YjE1ZGE5NzgzOTUwNTMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgRGVjIDIxIDE1OjQ3OjM0IDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHBvdGVudGlhbCBmcmVlIG9mIHVuaW5pdGlhbGl6ZWQgcG9pbnRlciBpbiBlcnJvciBjYXNlcworCitjb21taXQgYzc2ZmI5NmY2NWUzM2JhMmZkMjEyYTkyMWU4YzM4NjE1NWVlNWM3YQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBEZWMgMjEgMTU6NDQ6NDYgMjAxMSArMDEwMAorCisgICAgRml4ZWQgdW5pdGlhbGl6ZWQgdmFsdWVzIGluIHVkcFRhYmxlCisKK2NvbW1pdCBjNDQ2MDg2NzliODk3NTExNzZmMjhhMmU1NGQ1MjgyYjQ2ZTJhMDVjCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxNDo1NjoxMyAyMDExICswMTAwCisKKyAgICBVc2UgY2FsbG9jIGluc3RlYWQgb2YgbWFsbG9jIGFuZCBtYW51YWwgY2xlYXJpbmcKKworY29tbWl0IGEwNWM1Zjk1MTM0NjE4MjRlNzkwM2FlOWFlOWE2YzMzODZlMzM4NzkKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgRGVjIDIxIDE0OjQwOjUwIDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHByaW50aW5nIG9mIHVuaXRpYWxpemVkIHZhcmlhYmxlIHdoZW4gc2Vuc29yc19nZXRfbGFiZWwoKSBmYWlscworCitjb21taXQgZTRhNWVkYzcyMzkzYmQzZGU5YmYxMmJjZWJhOWQ4M2JiZjdkZTcwYgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBEZWMgMjEgMTQ6MzE6MjUgMjAxMSArMDEwMAorCisgICAgUmVtb3ZlZCB1bnVzZWQgdmFyaWFibGUKKworY29tbWl0IGZhZTJlNWI4MzViOGRmMWVhZTQ3ZTRjZWJiNGViNDA0ZDcyODIzNzcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgRGVjIDIxIDEzOjMxOjIxIDIwMTEgKzAxMDAKKworICAgIEZpeGVkIGRlcmVmZXJlbmNpbmcgdW5pdGlhbGl6ZWQgaWlkIGluIGVycm9yIGNhc2VzIGFuZCB3aXRoIGRlYnVnIGluZm8gZW5hYmxlZC4KKworY29tbWl0IDlkNThmODFhOTIzOWNmYmNmYzhlYmNlMzY3ZDIxZTliM2RjYjAyOGIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgRGVjIDIxIDEzOjMzOjMzIDIwMTEgKzAxMDAKKworICAgIEZpeGVkIGRlcmVmZXJlbmNpbmcgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgaW4gZXJyb3IgY2FzZXMKKworY29tbWl0IDBiYzhjMDhlZGVhZTdhZTA5NWYxMTYyNThjMjBhZTU3NjdkNjA2NTIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgRGVjIDIxIDEzOjIwOjUyIDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHJldHVybmluZyB1bmluaXRpYWxpemVkIHZhcmlhYmxlICdzdGF0dXMnIHdoZW4gc3MgPT0gTlVMTAorCitjb21taXQgNzMwNGM1M2NmOGFkZWU4ZWNjZWYxYThmMjY3NTZmYzA3ZjA5ODcyMQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIERlYyAxOCAyMzozMTo1MyAyMDExICswMTAwCisKKyAgICBPbiBzb2xhcmlzIDEwIHRlc3QgaW4gL2Jpbi9zaCBkb2Vzbid0IHN1cHBvcnQgdGhlIC1lIHRlc3QuIFJlcGxhY2UgaXQgd2l0aCAtZgorCitjb21taXQgOGNkM2JlNjBkNjkzYzljMzZmZmI5N2QzZDliY2I0OWMxYjRhYmUzNQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IERlYyAxNyAwODo1MjoyNCAyMDExICswMTAwCisKKyAgICBBdm9pZCByZXBldGl0aW9uIG9mIHRoZSBjb21wbGV4IGV4cHJlc3Npb24gZGV0ZXJtaW5pbmcgaWYgaXQgaXMgcG9zc2libGUgdG8gZ2V0IHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzLgorICAgIAorICAgIFRoaXMgYWxzbyBtYWtlcyBpdCBwb3NzaWJsZSB0byBidWlsZCBvbiBwbGF0Zm9ybXMgbGlrZSBTb2xhcmlzIDEwIHRoYXQgZGVmaW5lCisgICAgSVBfUkVDVkRTVEFERFIgYnV0IGxhY2sgZWl0aGVyIG9mIG1zZ2hkci5tc2dfY29udHJvbCBhbmQgbXNnaGRyLm1zZ19mbGFncy4KKworY29tbWl0IDk1M2YyZTNkNDI1ZWRlM2I4NjNhMmU3Y2NiMGI0YmM4NjI5MjhiNTcKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBOb3YgNSAyMjoxMzowNyAyMDExICswMTAwCisKKyAgICBNb3ZlIHRoZSB1c2Ugb2YgX3NlbmR0byBhbmQgX3JlY3Zmcm9tIGJlbG93IHRoZWlyIGRlZmluaXRpb25zLgorCitjb21taXQgNjhhMTE3M2M0NmNmNzc2MDE0MjZjZjM5MWQ5YTg1Mjc5NGYyMDU3ZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE5vdiAyMCAyMDowNToxOCAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBTZXBhcmF0ZSBvdXQgdGhlIGNtZXNnIGJ1ZmZlciBzaXplCisKK2NvbW1pdCA0NjFkZDE2ZjNiMjY0NzMyMmNkY2U2MzYzMDgxY2M0NGJhNWE0OWI1CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgTm92IDI2IDIxOjUxOjAxIDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IE1lcmdlIHRvZ2V0aGVyIHRoZSBMaW51eCBhbmQgKkJTRCB2ZXJzaW9uIG9mIHNyYyBwb3J0IHNlbmRpbmcuCisKK2NvbW1pdCA3YWNjYjY5YmFhMWZjMGI2YTM0MzlkMmU1NDljODZkYTM0NTNiYWQyCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDExIDE5OjMwOjMxIDIwMTEgKzAxMDAKKworICAgIFVzZSBhIGJhcmUgc3RydWN0IGlvdmVjIGluIGluc3RlYWQgb2YgYSBvbmUgZWxlbWVudCBhcnJheS4KKyAgICAKKyAgICBUaGUgcHVycG9zZSBvZiB0aGlzIGNoYW5nZSBpcyB0byBtYWtlIF9yZWN2ZnJvbSBtb3JlIHNpbWlsYXIgdG8gX3NlbmR0by4KKworY29tbWl0IDM5ODUyY2Q0Yzg1ZWYyYmZjNzVjZGVhMjgyNTI2MWVlOTNlNzY4YzIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMTEgMTk6Mjk6MjAgMjAxMSArMDEwMAorCisgICAgQWRkIGNvbW1lbnQgZGVzY3JpYmluZyB0aGUgcHVycG9zZSBvZiB0aGUgY2FsbCB0byBnZXRzb2NrbmFtZSBhZnRlciBhbG1vc3QgcmVtb3ZpbmcgaXQuCisKK2NvbW1pdCAxYjI5MmNhMjdlYWI1Y2FhNzNmZWFhYTgzZGM5YzEyYWJjMGYyZTcwCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDExIDE5OjI3OjU5IDIwMTEgKzAxMDAKKworICAgIFJlZHVjZSB2YXJpYWJsZSBzY29wZS4KKworY29tbWl0IGJjODc5NTcxZWNhOTUyMGJjMTMyZjg0MGMzZTY1OWQzNzkzMTQ0ZDcKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMTEgMTk6MjU6MzYgMjAxMSArMDEwMAorCisgICAgSW50cm9kdWNlIHRlbXBvcmFyeSB2YXJpYWJsZXMgdG8gZWFzZSB0aGUgZXh0cmFjdGlvbiBvZiB0aGUgc2VydmVyIGFkZHJlc3MuCisKK2NvbW1pdCBiN2VlYTZjZmZiZDg3MjkzMmNlMmMwNGZlZmI2ZjQzZGUzMzlmMzc0CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDExIDE5OjE4OjMzIDIwMTEgKzAxMDAKKworICAgIFJlbmFtZSB0aGUgY21lc2dwdHIgdmFyaWFibGUgdG8gY20uCisgICAgCisgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyBpcyB0byBpbmNyZWFzZSB0aGUgcmVhZGFiaWxpdHkgb2YgdGhlIGNvZGUuCisKK2NvbW1pdCAwYTc0NjFlNzI4ODA1YzYyYTFjYWI5ZDg3YmZjNzRjNzkyN2E5ZmNjCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDExIDE5OjE1OjIyIDIwMTEgKzAxMDAKKworICAgIEZhY3RvciBvdXQgYSBjb21tb24gbG9vcCBpbiByZWN2bXNnIG9wdGlvbiBwcm9jZXNzaW5nLgorCitjb21taXQgYjNjNjI0OGQwMjAxYWIxNjEwODQwZDZkMGU3NDliM2I2YzRhZDc5MgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIERlYyAxMSAxOToxMzo0MyAyMDExICswMTAwCisKKyAgICBVbmlmeSB0aGUgc3RydWN0dXJlIG9mIExpbnV4IGFuZCBCU0QgcmVjdm1zZyBvcHRpb24gcGFyc2luZyBzb21ld2hhdC4KKworY29tbWl0IDM1NjQwMGQ2MjkwYTQyM2I1MmViZWVhNWE1ZTk3NmZiMTViYjczYjQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMTEgMTk6MDQ6NTYgMjAxMSArMDEwMAorCisgICAgVXNlIENNU0dfREFUQSBvbiB0aGUgcmVzdWx0IG9mIENNU0dfRklSU1QvTkVYVEhEUiwgbm90IG9uIHRoZSBidWZmZXIuCisKK2NvbW1pdCAzYjM1MTcwOGM2MmRlNDZhYTFiOTBlZDIzMmNmZDhjN2M1YjAyMjMxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDggMTI6MDA6MzIgMjAxMSArMDEwMAorCisgICAgUmVtb3ZlIGEgY2FzdAorCitjb21taXQgZGU5MjUwZDlkYWU5NzI3YTZjYzdmNjQ3Njg4ZGRkZjFiODU5NzEyOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyA4IDExOjU4OjA0IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBNYWtlIHNwcmludF9taWJfb2lkKCkgdHJlYXQgT0lEIGNvbXBvbmVudHMgYXMgdW5zaWduZWQgaW5zdGVhZCBvZiBzaWduZWQgaW50ZWdlcnMKKworY29tbWl0IDBlMzNiM2I2ZDU4NTRhNGJhYzE1ZDRlYTVlMDE2YzUzZDE2MWQwY2QKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgOCAxMDowMjoyOCAyMDExICswMTAwCisKKyAgICBGaXggcmVjZW50bHkgaW50cm9kdWNlZCBjb21waWxlciB3YXJuaW5ncworCitjb21taXQgYjdlNTBkNWY5YTY3NTU5ODJkMmFmMzE5MTQ3M2NiMzQ2NDNiYzAzZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyA4IDA4OjM3OjIyIDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFJlZHVjZSBvdmVyaGVhZCBvZiBjb25maWcgZmlsZSBwYXJzaW5nCisKK2NvbW1pdCA3M2M5ZWU0MmQyOGFmZTJlMTA3YTdkNjYxNmI2ZDAxMTg5MGMzNmVhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDggMDk6MDk6NTkgMjAxMSArMDEwMAorCisgICAgUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMKKworY29tbWl0IDNkYjk3OTYyYjM3ZWIxMmQyNTRkNjFlNmJlMjM0YjA2YTM5MWM4YmIKK0F1dGhvcjogQmlsbCBGZW5uZXIgPGZlbm5lckBnbWFpbC5jb20+CitEYXRlOiAgIFRodSBEZWMgOCAwNzo0Mzo0NSAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0ggMzQ1Mzg2ODogZnJvbSAiQmlsbCBGZW5uZXIgPGZlbm5lckBnbWFpbC5jb20+IjogRmFjdG9yIGNvbW1vbiBjb2RlIGludG8gcGFzc19jb21tb24KKyAgICAKKyAgICBNb3ZlIHRoZSBjb2RlIGZvciBwb3JtYXR0aW5nIGFuZCBwcmludGluZyB2YWx1ZXMgZnJvbSBwYXNzIGFuZCBwYXNzX3BlcnNpc3QKKyAgICBpbnRvIHBhc3NfY29tbW9uLgorCitjb21taXQgYjY1NjhjODNmMTc1NmU5YTY1NDM0ZWRlZWViNDBkMjNkZGJiYjY1MgorQXV0aG9yOiBjY2NoaXUgPGNjY2hpdUBzb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBEZWMgNyAxNjoyNToyNyAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBCVUc6IDM0NTIwNjk6IEZpeCBzbm1wdHJhcF9vaWQgZGVjbGFyYXRpb24gaW4gbWliMmMgZ2VuZXJhdGVkIGNvZGUKKyAgICAKKyAgICBUaGlzIGJ1ZyB3YXMgaW50cm9kdWNlZCBjb25zaWRlcmFibGUgdGltZSBhZ28uIEl0IGRpZCBhbHJlYWR5IGV4aXN0IGF0IHRoZQorICAgIHRpbWUgdGhlIDUuNiBicmFuY2ggd2FzIGNyZWF0ZWQgKHNlZSBhbHNvIGNvbW1pdAorICAgIDBlYzA4OGFmYTI3Y2ZkYTRlNmVhNzhhYWU3Y2ZjNTUwNzU2NGVkZGUpLgorCitjb21taXQgZDQ5NGRiNjRjMjA4YjRkYzYyODEzMTMyZjg4NjNiZDVjMWEzOWQ3NworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyAxIDEwOjM4OjE3IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXB0cmFwZDogRWxpbWluYXRlIGFuIHVudXNlZCB2YXJpYWJsZSAoTm93KQorCitjb21taXQgMjhmMjU2MWJjMjkzNWQ4ZTFjYmY0NmQyODIwMTU4MTczZTdhNGNmNAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyAxIDEwOjM3OjExIDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXB0cmFwZDogTW92ZSB0aGUgbWFpbiBsb29wIGNvZGUgaW50byBhIG5ldyBmdW5jdGlvbgorCitjb21taXQgMzk2ZTEyMmRkYzQyYTkxNmYwNmEwMjg4NGMwZThhMjU4ZWRiZTIzOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyAxIDA5OjMyOjE2IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBNYXRjaCBlYWNoIGdldHB3bmFtKCkvZ2V0cHd1aWQoKSBjYWxsIHdpdGggYW4gZW5kcHdlbnQoKSBjYWxsIGFuZCBlYWNoIGdldGdyZW50KCkgY2FsbCB3aXRoIGFuIGVuZGdyZW50KCkgY2FsbC4KKworY29tbWl0IDNlZmVmYmMwMDI0Mzk5Nzg2ZjhiNjhiMWU5M2IwYThmZGRkZGM3ZGEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgMSAxMDo0MTowMSAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IFJlbW92ZSBzdXBlcmZsdW91cyBjYXN0cworCitjb21taXQgN2YwNWRhYThlMGUwZjUzM2IwZjEyYTNlMWNmMDc2NDE1MTk5MDlkNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyAxIDExOjU4OjMyIDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IEJVRzogMzQ0NDkzOTogQlVHOiAxNzk2ODg2OiBzbm1wbGliOiBBdm9pZCB0aGF0IHNwcmludF9yZWFsbG9jX29jdGV0X3N0cmluZygpIGVtYmVkcyB1bnByaW50YWJsZSBjb250cm9sIGNoYXJhY3RlcnMgb3IgYmluYXJ5IHplcm9lcyBpbiBpdHMgb3V0cHV0LiBUaGlzIGJlaGF2aW9yIGNvdWxkIGNhdXNlIHRydW5jYXRlZCBvdXRwdXQgaW4gc25tcHRyYXBkLgorCitjb21taXQgZGI4ZjU1OGZkMmYzYjdjMTA5ZWEzYTFjMjEzM2I3NWI2ZjhjYjJhZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyAxIDEwOjA0OjQxIDIwMTEgKzAxMDAKKworICAgIENvbXBpbGVyIHdhcm5pbmcgZml4OiBwYXNzIHVuc2lnbmVkIGNoYXJzIHRvIGlzcHJpbnQoKSBpbnN0ZWFkIG9mIHNpZ25lZCBjaGFycy4KKworY29tbWl0IDgwMGRjMTAyOGU3ZTBjZDhjYzE0ZDg0ZGQzMTcyM2Q0N2FjMDczZGIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFRodSBEZWMgMSAxMDoxODo1OCAyMDExICswMTAwCisKKyAgICBSZWR1Y2UgdGhlIHNjb3BlIG9mIHRoZSBoaW50IHZhcmlhYmxlCisKK2NvbW1pdCA4M2VhNGEwODBjOTBhNzRiOTc0M2QzZjI0Y2YwZDRiOGExZThjODQ5CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gTm92IDI3IDIxOjE2OjUyIDIwMTEgKzAxMDAKKworICAgIFJlZHVjZSB0aGUgc2NvcGUgb2YgdGhlIHZhcmlhYmxlIHFvcworCitjb21taXQgN2I5ZTAzNDQxYzNkYzNhMDc2NzBlZDAxZjVkMDQ3OTFhODJjNzUwYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE5vdiAzMCAxNDowNDowMSAyMDExICswMTAwCisKKyAgICBSZW1vdmUgI2RlZmluZSB2YWwoeCkgX19TVFJJTkcoeCkgYW5kIGNoYW5nZSB2YWwoeCkgaW50byBfX1NUUklORyh4KS4KKworY29tbWl0IDJmMzc5YjBlNGVjYWRmYTRlNTQxZTMwMDVjOGZjODI4MTg4MmI3NDEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBOb3YgMzAgMTU6NTg6NDcgMjAxMSArMDEwMAorCisgICAgRm9sbG93LXVwIGZvciBjb21taXQgMWFhNzA0ZTogdW5icmVhayB0aGUgTVNWQyBidWlsZAorCitjb21taXQgNjRlZjBmNzExMjc2MTc4MzcwMjdmYjJjZmFmMTc0Yjk1YmE3OWUwZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE5vdiAzMCAxNDoxOTo1MCAyMDExICswMTAwCisKKyAgICBBZGQgU05NUDo6cmVnaXN0ZXJfZGVidWdfdG9rZW5zKCkKKworY29tbWl0IDdiZWFkOWNhOTE3YzY3NTY2ZDVlZDk4YWI1MDdiYmMwMjgxNjIxN2QKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBOb3YgMzAgMTQ6MDg6MDggMjAxMSArMDEwMAorCisgICAgQWdlbnRYIHN1YmFnZW50OiBSZWR1Y2UgY29kZSBkdXBsaWNhdGlvbgorCitjb21taXQgMGVkNzE1NDFmODdlN2Q3OGJjOTk4ZWViZGEzMjE3YzU5ZTFkZjgzMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE5vdiAzMCAxNDowMzoxOSAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBBZGQgRG94eWdlbi1zdHlsZSBmdW5jdGlvbiBoZWFkZXIgZm9yIG5ldHNubXBfcmVnaXN0ZXJfZGVmYXVsdF90YXJnZXQoKSBhbmQgbmV0c25tcF9jbGVhcl9kZWZhdWx0X3RhcmdldCgpLgorCitjb21taXQgOGMyOTcyYjYxZTQwMTY5YjQ3YzUwOTg4YjZhZTllOGMyODVmODRmOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE5vdiAzMCAxNDowMjo1NCAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBwZXJsOiBGaXggc3BlbGxpbmcgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIFNOTVAgbW9kdWxlCisKK2NvbW1pdCA1ZGYyYmFjNmJkNzE3Nzk5MzExZjAwMWFjN2I3M2RiODhmMTFiZGRhCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUdWUgTm92IDI5IDA4OjU5OjU4IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IE9ubHkgdHJhbnNmb3JtIHRoZSBhZGRyZXNzIHRvIHByaW50YWJsZSBmb3JtIHdoZW4gbmVlZGVkLgorCitjb21taXQgMTcxZThkNDhkNGFmMDQwMTNjZmY4ZmQyOGY1MzQxYTJhZWYyMWQ4OAorQXV0aG9yOiBNaWpvIFNhZnJhZGluIDxzYWZyYWRpbkBsaW51eC52bmV0LmlibS5jb20+CitEYXRlOiAgIFR1ZSBOb3YgMjkgMTY6NDk6NDYgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcC1icmlkZ2UtbWliOiBGaXggaW5kZXggaW50ZXJwcmV0YXRpb24uCisgICAgCisgICAgVGhpcyBwYXRjaCBjb3JyZWN0cyBhIHdyb25nIGRhdGEgaW50ZXJwcmV0YXRpb24uCisgICAgc25tcC1icmlkZ2UtbWliIG9idGFpbnMgdGhlIGlmaW5kZXggdmFsdWUgZnJvbSB0aGUgc3lzZnMKKyAgICBhdHRyaWJ1dGUgJ2lmaW5kZXgnIFRoZSB2YWx1ZSBnaXZlbiBieSB0aGUgc3lzZnMgYXR0cmlidXRlCisgICAgaXMgYW4gaW50ZWdlciwgd2hpY2ggaXMgaGFuZGxlZCBhcyBoZXggYW5kIGxlYWRzIHRvCisgICAgaW5jb3JyZWN0IGRhdGEgZGlzcGxheWVkIHRvIHRoZSB1c2VyLgorICAgIAorICAgIGUuZy4KKyAgICAgICAgJCA+IHNubXB3YWxrIGxvY2FsaG9zdCBCUklER0UtTUlCOjpkb3QxZEJhc2VQb3J0SWZJbmRleC4yCisgICAgICAgIEJSSURHRS1NSUI6OmRvdDFkQmFzZVBvcnRJZkluZGV4LjIgPSBJTlRFR0VSOiA1NAorICAgIAorICAgIGFjY29yZGluZyB0byB0aGUgc3lzZnMgYXR0cmlidXRlIHRoZSB2YWx1ZSBpcyAzNgorICAgIAorICAgICAgICAkID4gY2F0IC9zeXMvY2xhc3MvbmV0LzxkZXZpY2U+L2lmaW5kZXgKKyAgICAgICAgMzYKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBNaWpvIFNhZnJhZGluIDxzYWZyYWRpbkBsaW51eC52bmV0LmlibS5jb20+CisKK2NvbW1pdCA4MmUzOWZiNjcwNmRmOTBlY2YyZmM5ZTEwYWRhMmI5NjJlZTE5NmYzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE5vdiAyOSAxMjoyNzo0NiAyMDExICswMDAwCisKKyAgICBGaXggbXVsdGktbGluZSBjYXNlIHRlc3Rpbmcgb2YgaW5jb21pbmcgT0lECisKK2NvbW1pdCBiMTVkYTFhNDUxNjA2MTEwNWExZWFjNzQ1MGNmNjUwZWM0NDI2NmIyCitBdXRob3I6IE5pa29sYXkgRGVuZXYgPG5kZW5ldkBnbWFpbC5jb20+CitEYXRlOiAgIFR1ZSBOb3YgMjkgMDg6Mjk6NDkgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogRnJlZUJTRDogUmVzdG9yZSBJUF9SRUNWRFNUQUREUiBmdW5jdGlvbmFsaXR5LgorCitjb21taXQgN2Y0N2Y1MmU0ODFiYWE5YWFmYjU3ODQyNDRiMGRkMjY1M2U3ZGNmZgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgTW9uIE5vdiAyOCAwODo1MTozOSAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBVc2UgU05NUF9BTExPQ19UWVBFREVGIHRvIGFsbG9jYXRlIHRyYW5zcG9ydHMgaW4gb3JkZXIgdG8gYXZvaWQgdGhlIHNlcGFyYXRlIGNhbGwgdG8gbWVtc2V0LgorCitjb21taXQgY2Y4NjAzOWUzMDg2MjI1YzMwODViYjlhZGYwODhiOGJhNWJhNjk3OQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE5vdiAyMiAxNTowMjo1OCAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBNaW5HVzogdGVzdGluZzogTWFrZSB1bml0LXRlc3RzL1QxMDJwZHVfYnVpbGRfY2xpYiBwYXNzLgorCitjb21taXQgMWE4N2U3NmUwMGVlM2Q1Y2QzN2EwN2JmYzNkODQ0OTBkM2MyYTRlYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE5vdiAyMiAxNDo1NTo0MiAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBNaW5HVzogdGVzdGluZzogTWFrZSB1bml0LXRlc3RzL1QwMTRnZXRob3N0YnlhZGRyX2NsaWIgcGFzcworCitjb21taXQgODg2N2ZkMWRjZmU3MmI1OWQwNzMyMmZmMzhhNjk5YjY2ZWM0ZjMyNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE5vdiAyMiAwOTo0NDozOCAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBNYWtlIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSgpIHJvYnVzdCBhZ2FpbnN0IG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmVzLgorICAgIAorICAgIENIQU5HRVM6IHNubXBsaWI6IE1ha2UgTkVUU05NUF9MQVJHRV9GRF9aRVJPKCkgdXNlIG1lbXNldCgpIG9uIFVuaXggc3lzdGVtcyBpbnN0ZWFkIG9mIGFuIGV4cGxpY2l0IGxvb3AuCisgICAgQ0hBTkdFUzogc25tcGxpYjogTWFrZSBzdXJlIHRoYXQgb24gVW5peCBzeXN0ZW1zIG5ldHNubXBfbGFyZ2VfZmRfY2xyKCkgZG9lc24ndCB0cnkgdG8gcmVhZCBtZW1vcnkgaXQgaXNuJ3QgYWxsb3dlZCB0byByZWFkIGlmIHRoZSBmaXJzdCBhcmd1bWVudCBlcXVhbHMgLTEgKGEgdmFsdWUgdGhhdCBzaG91bGRuJ3QgYmUgcGFzc2VkIGJ5IHRoZSBjYWxsZXIpLgorICAgIENIQU5HRVM6IHNubXBsaWI6IE1ha2UgbmV0c25tcF9sYXJnZV9mZF9pc19zZXQoKSByZXR1cm4gZmFsc2Ugb24gVW5peCBzeXN0ZW1zIGlmIHRoZSBmaXJzdCBhcmd1bWVudCBlcXVhbHMgLTEgKGEgdmFsdWUgdGhhdCBzaG91bGRuJ3QgYmUgcGFzc2VkIGJ5IHRoZSBjYWxsZXIpLgorICAgIENIQU5HRVM6IFdpbmRvd3M6IE1ha2UgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKCkgc2hyaW5rIGJlaGF2aW9yIGNvcnJlY3QuCisKK2NvbW1pdCAyM2RiMGNmMDliOGIwZWFiMzdiNzQ5ZWYwYzNjM2YzMDY5MDAyNDVjCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTm92IDIxIDIzOjAyOjU3IDIwMTEgKzAxMDAKKworICAgIEZpeCBjYXN0aW5nIHR2X3VzZWMgdG8gaW50IHdoaWNoIG1heSBiZSB0b28gc2hvcnQKKworY29tbWl0IDgwZWU0MDIyZTUzNGU2NGFhZDVhNWYyNzE5Mjg0M2I0MmFjYjg1ZTAKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBOb3YgMTkgMDk6MTQ6MDIgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzQzOTIzNDogTW92ZSBuZXRzbm1wX3Bhc3Nfc3RyX3RvX2Vycm5vIHRvIHBhc3NfY29tbW9uIGFuZCByZW5hbWUgaXQgdG8gbmV0c25tcF9pbnRlcm5hbF9wYXNzX3N0cl90b19lcnJubworCitjb21taXQgMGJhYTkyOTZjMDcyYmIzNzM1NzYwYjBkZDk5MmYyZDFkM2NhMjdmYQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IE5vdiAxOSAwOTowNToyNCAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzNDM5MjM0OiBDb3JyZWN0IHRoZSBkZXBlbmRlbmNpZXMgb2YgdWNkLXNubXAvcGFzcyBhbmQgdWNkLXNubXAvcGFzc19wZXJzaXN0CisKK2NvbW1pdCAxYWE3MDRlNGEyOTQ0MzBiMjhlMzliNmY5ZTQ2ODNiOGE0OGJjZTA0CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgTm92IDE5IDA4OjM1OjIxIDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBGYWN0b3Igb3V0IGFzYzJiaW4gYW5kIGJpbjJhc2MuIEFkZCBhIG5ldHNubXBfaW50ZXJuYWxfIHByZWZpeCB0byB0aGVtCisKK2NvbW1pdCBjZGE4ZmU5MTAxM2YxMmNiZjY0YTA3NzVhYmI1NTcyMDAzNWFmOTMxCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgTm92IDE5IDAwOjU1OjI0IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBDYWxsIHNubXBfb2lkdHJlZV9jb21wYXJlIGluc3RlYWQgb2Ygc25tcF9vaWRfbWluX2NvbXBhcmUKKyAgICBDSEFOR0VTOiBzbm1wZDogUmVtb3ZlIHNubXBfb2lkX21pbl9jb21wYXJlIHNpbmNlIGl0IGlzIGludGVybmFsIGFuZCB1bnVzZWQKKworY29tbWl0IDg1Zjg5M2UyYjYwNWU2N2Y5YmQwNDQzYzc0ZTJlZDI2OWFhNjg1NjQKK0F1dGhvcjogTmlraSBEZW5ldiA8bmlraV9kQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE5vdiAxNyAyMjo0MjozMiAyMDExICswMTAwCiAKICAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzE3NTY0MDogVXNlIElQX1JFQ1ZEU1RBRERSIHNvY2tvcHQgd2hlcmUgYXZhaWxhYmxlICgqQlNEKQogICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE4MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBUaGlzIGh1bmsgZmVsbCBvZiB3aGVuIHRoZSByZXN0IG9mIHRoZSBwYXRjaCB3YXMgbWVyZ2VkLgogCi1jb21taXQgYzA0OGYyY2U0M2JmYTgyZThkM2FkOGEyYmQzMTIyOTBjNmJhMjdmMAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgQXByIDE1IDEzOjQyOjE0IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIRVM6IDMxODMwMDA6IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGgKLSAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUdTOiAzMTgyOTg1OiBGaXggY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRCBwcmVmaXggbGVuZ3RoCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTgyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMGUyZDhlODMzN2FmNzI1N2Y3ZWI3Mjc2NzhmODAzNGU4NGFlNzRjZQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgQXByIDE1IDEzOjQyOjE0IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIRVM6IDMxODMwMDA6IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGgKLSAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUdTOiAzMTgyOTg1OiBGaXggY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRCBwcmVmaXggbGVuZ3RoCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTgyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMzkxNTk3Y2ZmZDlhYmRlNWZmNDZiNzRjNWI2YzdlMzIxYWI3ZDNjMQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgQXByIDE1IDEzOjQyOjE0IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIRVM6IDMxODMwMDA6IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGgKLSAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUdTOiAzMTgyOTg1OiBGaXggY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRCBwcmVmaXggbGVuZ3RoCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTgyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNmIzZmJiYWQ5MTNhOGQ3NWE4YWU1MGE2ZDUzMjBlMWZhZmUwZTEwZAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgQXByIDE1IDEzOjQyOjE0IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIRVM6IDMxODMwMDA6IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGgKLSAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUdTOiAzMTgyOTg1OiBGaXggY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRCBwcmVmaXggbGVuZ3RoCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTgyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMGYxYjc4NzU1ZjlkOTJkMzliMTBiYjZmMGFjMzI0OTMyMDZiMzY4NAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgQXByIDE1IDEzOjE3OjM3IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IExpbnV4OiBQQVRDSEVTOiAzMjA1ODExOiBPcHRpb24gdG8gc2tpcCBmZC9sb29wL3JhbSBkZXZpY2VzIGluIGRpc2tJT1RhYmxlCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTgxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZTQ1NzQzNzJlNDc4ZDM3ZWZhMzk3NWNhMGZjNzE4ZmNkYTMwNjA4ZgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXByIDE0IDIxOjMxOjA5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHB5dGhvbjogUEFUQ0hFUzogMzE4NTA4NTogRml4IHNlZ2ZhdWx0IG9uIDY0LWJpdCBzeXN0ZW1zCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTgwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNmMwNmEyNTk0ZjZlODdjNzIyNTFmZjc5M2U3ZDkxODdiODkxNWZiYwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXByIDE0IDIxOjMxOjA5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHB5dGhvbjogUEFUQ0hFUzogMzE4NTA4NTogRml4IHNlZ2ZhdWx0IG9uIDY0LWJpdCBzeXN0ZW1zCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTgwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMjU3ZjRkNzM3MDJmYzRjN2JhMmY3ZTEzMjFhOTY1NTk0NmIwZTgwMwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXByIDE0IDIxOjMxOjA5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHB5dGhvbjogUEFUQ0hFUzogMzE4NTA4NTogRml4IHNlZ2ZhdWx0IG9uIDY0LWJpdCBzeXN0ZW1zCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTgwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgN2U4OTliNWNmMmRiMjE2NGUwYzFkNTg3MDZiOTUwMmU4NjU5Njk3MAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXByIDE0IDIxOjEwOjU2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMTc1MzIzOiBGaXggaGFuZGxpbmcgb2YgJ3doaWxlIChmYWxzZSknIGJsb2NrcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDE3OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDY5NjdkNzg5OTliN2Y0Y2I1MjcwMjA3NTBjZDM1OTI3ZmU0ZjJmZTcKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEFwciAxNCAyMToxMDo1NiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzE3NTMyMzogRml4IGhhbmRsaW5nIG9mICd3aGlsZSAoZmFsc2UpJyBibG9ja3MKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxNzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1MDIzOWY2NjUwNTg2YmI0Yjk5MjA1NDI0NTkyYjdiNTE5MWQ1NDA0Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBcHIgMTQgMjE6MTA6NTYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMxNzUzMjM6IEZpeCBoYW5kbGluZyBvZiAnd2hpbGUgKGZhbHNlKScgYmxvY2tzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTc5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOTNiMzJlMjhlZjU1MTk5MzNmNTAyZGVjZjk5YzY4ZWE4NWEwZGVhNQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXByIDE0IDIxOjEwOjU2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMTc1MzIzOiBGaXggaGFuZGxpbmcgb2YgJ3doaWxlIChmYWxzZSknIGJsb2NrcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE3OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDVkNWQ2ZmQ0ODE1MjhhZGY3Y2EwMWVjMDc5MDg0OWNhNzMxOTZkYzIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEFwciAxNCAyMDo1Mjo1OSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzIwNDg4MzogRml4IGhhbmRsaW5nIG9mIG5vbi10YWJsZSBvYmplY3RzIG5hbWVkIGZvb1RhYmxlCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTc4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgM2E4ZGNhMzE0M2M1Y2ExMTQ0M2ZlYjA3ZjdhZjRiZWQ4MDhiZGQzMgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXByIDE0IDIwOjUyOjU5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMjA0ODgzOiBGaXggaGFuZGxpbmcgb2Ygbm9uLXRhYmxlIG9iamVjdHMgbmFtZWQgZm9vVGFibGUKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxNzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiNGJjN2IyN2NkYTQ5OTM5MWI5ZWNiMmNiZTU0MWUxMGMxNTFhYmQ1Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBcHIgMTQgMjA6NTI6NTkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMDQ4ODM6IEZpeCBoYW5kbGluZyBvZiBub24tdGFibGUgb2JqZWN0cyBuYW1lZCBmb29UYWJsZQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDU5ZDRkOWRjMmU0MmEyOTljNThiODBjN2NlODk4MzY4M2JkMmE3NzIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEFwciAxNCAyMDo1Mjo1OSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzIwNDg4MzogRml4IGhhbmRsaW5nIG9mIG5vbi10YWJsZSBvYmplY3RzIG5hbWVkIGZvb1RhYmxlCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTc4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNmEyOTk2OGNiZGMwMTY2YTQ3YTkzZDFjMTRkMzlhMmUzOWZhOThkMgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXByIDE0IDIwOjQ0OjM3IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMjExNDg0OiBTdXBwb3J0IGVudW1lcmF0aW9ucyBpbiBub3RpZmljYXRpb24gdmFyYmluZHMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxNzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzNDJjYTlkYjUzNzFjYmFkN2ZhOTZhZjMyYWNlZDc1MGMyZDc3ZGIxCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBcHIgMTQgMjA6NDQ6MzcgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMTE0ODQ6IFN1cHBvcnQgZW51bWVyYXRpb25zIGluIG5vdGlmaWNhdGlvbiB2YXJiaW5kcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDE3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGM2YTcxZWFlYmVmNmM4MzFkYWEzNmY1N2VjMWZmMjMwZjA1MmIzMzAKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEFwciAxNCAyMDo0NDozNyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzIxMTQ4NDogU3VwcG9ydCBlbnVtZXJhdGlvbnMgaW4gbm90aWZpY2F0aW9uIHZhcmJpbmRzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNTI4N2Y1ZDE0NjMxZDQwODRlZWUyNDAzMTc0NmM1NDIyNTI2NzEyMgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXByIDE0IDIwOjQ0OjM3IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMjExNDg0OiBTdXBwb3J0IGVudW1lcmF0aW9ucyBpbiBub3RpZmljYXRpb24gdmFyYmluZHMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmMDhhMTk5ODA3MWI2ZDRmNGVjOGQ5ZjVmYmY4YWVmZTU2MjljZTdhCitjb21taXQgNWM5MTNlNTQ2NTZhZTAwOTZiMWZlYjZkYTk4YjVmYzljYTgxZjI3NgogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEFwciAxMiAyMDowMTo1NSAyMDExICswMDAwCitEYXRlOiAgIFdlZCBOb3YgMTYgMjM6MzM6MDcgMjAxMSArMDEwMAogCi0gICAgQWRkIG1pc3Npbmcgc3lzdGVtIG9pZHMgdG8gbWliCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIERlZmluZSB0aGUgZnVsbCBOZXRCU0QgaGllcmFyY2h5IGRvd253YXJkcwogCi1jb21taXQgMzMzMWUwOWJiZWM3MzQwMzRkYmRiNzY3ZTY2YzAzZTE0YTQ1NDhkNQorY29tbWl0IGI4ODE4NDFiZDA0OTNkZDcxZDYzMjU5YmRkZWQ0NDliMDZmMDJjMzIKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBBcHIgMTIgMjA6MDE6NTUgMjAxMSArMDAwMAorRGF0ZTogICBXZWQgTm92IDE2IDIzOjMwOjMzIDIwMTEgKzAxMDAKIAotICAgIEFkZCBtaXNzaW5nIHN5c3RlbSBvaWRzIHRvIG1pYgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDE3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBGaXggc2l6ZV90L2ludCBtaXNtYXRjaGVzCiAKLWNvbW1pdCBkZDg4OWQ1NmFiYzRhNmEyYjc2YjFmNzQ4OWVhNTViMDQ2N2JlMTg0Citjb21taXQgY2EyOTRjZjc1YmJjOGU5MGRiZjQ0ZWU0MDQ3ODkzNWU5MWRiMTQ4NwogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEFwciAxMiAyMDowMTo1NSAyMDExICswMDAwCitEYXRlOiAgIFdlZCBOb3YgMTYgMjM6MTg6MDMgMjAxMSArMDEwMAogCi0gICAgQWRkIG1pc3Npbmcgc3lzdGVtIG9pZHMgdG8gbWliCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzCiAKLWNvbW1pdCAwYTE4NWE5ZDMwNmI2ODE2YTI2ZTM1MDhkY2IwOThiOTE4NjFkYzBiCitjb21taXQgY2QzMmMyZGZmMDZiOWI0NTJjYzE4ZDU1MmQyZjIyMzQwOTJjODI5YwogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEFwciAxMiAyMDowMTo1NSAyMDExICswMDAwCitEYXRlOiAgIFdlZCBOb3YgMTYgMjM6MTc6MDkgMjAxMSArMDEwMAogCi0gICAgQWRkIG1pc3Npbmcgc3lzdGVtIG9pZHMgdG8gbWliCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIEZpeCBmb3JtYXQgd2FybmluZwogCi1jb21taXQgZDk0NzcyNTFkMTU0ZmJiNTI2ZjUzMzY3YjBiNmViY2QxZDI2NzRhYworY29tbWl0IDg4MzEzNmMyYjJmYTA3MzlmNDM3YThjZmI2NjE0YWNjYzc2ZTI2OGUKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBBcHIgMTIgMTk6NTM6MTAgMjAxMSArMDAwMAorRGF0ZTogICBXZWQgTm92IDE2IDIzOjE1OjU4IDIwMTEgKzAxMDAKIAotICAgIEZpeCBmb3IgZ2FyYmFnZSBvdXRwdXQgd2hlbiBhZ2VudCBwcmVzZW50cyBtb3JlIGNvbHVtbnMgaW4gYnVsawotICAgIHJlc3BvbnNlIHRoYW4gb3VyIGxvY2FsIE1JQiBmaWxlICBzcGVjaWZpZWQuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIE1vcmUgbmVlZHMgZm9yIE5FVFNOTVBfUFJJbyBmb3JtYXQgc3BlY2lmaWVyCiAKLWNvbW1pdCA3OWM2OThhMTQ3NGUxMDg1NWYyMTBhNjk5ODcwODA5NjcxMmJlNjA4Citjb21taXQgYjgwODRhN2NjYzkwOWI2ZDZkYjdjMGU4ZTU5NmQ3ODY3MWY1Njc4YgogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEFwciAxMiAxOTo1MzoxMCAyMDExICswMDAwCitEYXRlOiAgIFdlZCBOb3YgMTYgMjM6MTQ6MjYgMjAxMSArMDEwMAogCi0gICAgRml4IGZvciBnYXJiYWdlIG91dHB1dCB3aGVuIGFnZW50IHByZXNlbnRzIG1vcmUgY29sdW1ucyBpbiBidWxrCi0gICAgcmVzcG9uc2UgdGhhbiBvdXIgbG9jYWwgTUlCIGZpbGUgIHNwZWNpZmllZC4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgRml4IHVzaW5nIGNoYXIgYXMgYXJyYXkgaW5kZXggKGN0eXBlLmgpCiAKLWNvbW1pdCBmMzk0YTI2NjYwNGFmOWYzZTFiNTNlZjZkYTM3NWJhYTRhMzkwMWZlCitjb21taXQgODQ1MjllNjMyMGE4OWQ5N2YxMzE0YWViYWQ4MDYyNTVkMmExYjE4YwogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEFwciAxMiAxOTo1MzoxMCAyMDExICswMDAwCitEYXRlOiAgIFdlZCBOb3YgMTYgMjM6MDA6NTcgMjAxMSArMDEwMAogCi0gICAgRml4IGZvciBnYXJiYWdlIG91dHB1dCB3aGVuIGFnZW50IHByZXNlbnRzIG1vcmUgY29sdW1ucyBpbiBidWxrCi0gICAgcmVzcG9uc2UgdGhhbiBvdXIgbG9jYWwgTUlCIGZpbGUgIHNwZWNpZmllZC4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgRml4IG1pc3NpbmcgZm9ybWF0IGZvciBGcmVlQlNEIDQKIAotY29tbWl0IDU0Nzg3ZDI1YjJmYmFhZDA0N2E1NGZjMzBlZmVlY2MyZDI4MDVjZTcKK2NvbW1pdCA0YmQwMzUyOTU1YTI1NTFiZmUwMjMwOGRkMTM0YjkxMjhjOThiOWU5CiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgQXByIDEyIDE5OjUzOjEwIDIwMTEgKzAwMDAKK0RhdGU6ICAgV2VkIE5vdiAxNiAyMjo1OTozNiAyMDExICswMTAwCiAKLSAgICBGaXggZm9yIGdhcmJhZ2Ugb3V0cHV0IHdoZW4gYWdlbnQgcHJlc2VudHMgbW9yZSBjb2x1bW5zIGluIGJ1bGsKLSAgICByZXNwb25zZSB0aGFuIG91ciBsb2NhbCBNSUIgZmlsZSAgc3BlY2lmaWVkLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBGaXggcGFyYW50aGVzaXMgcHJvYmxlbQogCi1jb21taXQgMDA3ZTc2ZDZkYzM4YWNkZmFiNzU2ZmU5YmQ4ZTIzZDgyMDk1YjRjNgorY29tbWl0IGZlNjI2OWIxOTAwY2Y0NGRjMjdhMTk5YTc2MWQxNWEwMWMzZjMwOTIKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBBcHIgMTIgMTk6NTA6MDggMjAxMSArMDAwMAorRGF0ZTogICBXZWQgTm92IDE2IDIyOjU4OjM0IDIwMTEgKzAxMDAKIAotICAgIEZpeCB3cm9uZyBuYW1lIGZvciBjb25maWcgdG9rZW4gJ2RvTm90UmV0YWluTm90aWZpY2F0aW9uTG9ncycKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgRml4IHNpemVfdC9pbnQgbWlzbWF0Y2hlcwogCi1jb21taXQgZjFlZGNmZDA0OWI3NjBiYzUwMTA0Y2ZlODI4MzhlZDJiMzYzMjg2MQorY29tbWl0IGE0ZGI5ZjlmYzEzZDIxZWNmZjQ4OGViNDEwMzc2ZWRkYTZjMjgyMzIKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBBcHIgMTIgMTk6NTA6MDggMjAxMSArMDAwMAorRGF0ZTogICBXZWQgTm92IDE2IDEzOjQzOjM0IDIwMTEgKzAxMDAKIAotICAgIEZpeCB3cm9uZyBuYW1lIGZvciBjb25maWcgdG9rZW4gJ2RvTm90UmV0YWluTm90aWZpY2F0aW9uTG9ncycKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMKIAotY29tbWl0IGFmNTA5MjQwNjlhODhiNWJhZGMwODQwNjVlMjFiNjkxZjMxZjMxM2QKK2NvbW1pdCAzOTBjMDExNGM4ZWMwYmRiMjdiMDhiNmY3NGUzZjZlZjNhNjI5ODFiCiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgQXByIDEyIDE5OjUwOjA4IDIwMTEgKzAwMDAKK0RhdGU6ICAgV2VkIE5vdiAxNiAxMzozNzo0OSAyMDExICswMTAwCiAKLSAgICBGaXggd3JvbmcgbmFtZSBmb3IgY29uZmlnIHRva2VuICdkb05vdFJldGFpbk5vdGlmaWNhdGlvbkxvZ3MnCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTc0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIEZpeCBmb3JtYXQgc3BlY2lmaWVycyB0byBhdm9pZCB3YXJuaW5ncwogCi1jb21taXQgMzNiOTQwNWQxMjAzMDQ2YTQ1OTA2MzRjNTkyYzcxODFjMTMzYjdmMgorY29tbWl0IDI1Y2ZjMTk2MmFlNTc2Y2NiMTU1OGRhMWUzZWY4YjZjMTdmNjNjMTYKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBBcHIgMTIgMTk6NTA6MDggMjAxMSArMDAwMAorRGF0ZTogICBXZWQgTm92IDE2IDExOjI3OjUzIDIwMTEgKzAxMDAKIAotICAgIEZpeCB3cm9uZyBuYW1lIGZvciBjb25maWcgdG9rZW4gJ2RvTm90UmV0YWluTm90aWZpY2F0aW9uTG9ncycKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgUmVhbGx5IHVwLXRvLWRhdGUgbWlicwogCi1jb21taXQgMmZiMGI4OWMyMzIzZGIzMDliMTYyZDYwYTk0M2MxZTNhMGExN2QwNworY29tbWl0IDBlODZjNzgxZjM5ODliZjAyMmM4OTkzYTExODYxN2I3NGE3NTQyMGMKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBBcHIgOSAyMTo1OToxMSAyMDExICswMDAwCitEYXRlOiAgIFdlZCBOb3YgMTYgMDk6MTc6MTkgMjAxMSArMDEwMAogCi0gICAgUmVtb3ZlIGJvZ3VzIChMaW51eCkgZGVmaW5lcwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE3MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBtZW1vcnlfbGludXg6IGdldCBTaG1lbSBmcm9tIC9wcm9jL21lbWluZm8gZm9yIDIuNiAob3IgbmV3ZXIpIGtlcm5lbHMKIAotY29tbWl0IDRmM2RhNzY3YjBmODdjOTljNGMxZjViNzQxMjAzZDdkNjk2YmVlZWEKK2NvbW1pdCBiZjI2NGQxNWRlZDdhY2JiZjJlMzg3MWI5OGZkMWZjZWY0M2Q5ZWMzCiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgQXByIDkgMjE6NTk6MTEgMjAxMSArMDAwMAorRGF0ZTogICBXZWQgTm92IDE2IDA5OjE2OjE2IDIwMTEgKzAxMDAKIAotICAgIFJlbW92ZSBib2d1cyAoTGludXgpIGRlZmluZXMKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgbWVtb3J5X2xpbnV4OiBjbG9zZSBzb2NrZXRzIGluIGVycm9yIHNpdHVhdGlvbnMKIAotY29tbWl0IGMzZGJiZDlmYzU3YWNiY2E5OTkzNTZjZGY5YmU5NThjYzExNzM1ZWYKK2NvbW1pdCA1N2ZmOGE0MGJhZTVkOWJjYWQxNjA4OTE0MmE5Y2YzMjhjOWZhMWY1CiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgQXByIDkgMjE6NTY6MzMgMjAxMSArMDAwMAorRGF0ZTogICBXZWQgTm92IDE2IDA5OjE0OjU3IDIwMTEgKzAxMDAKIAotICAgIEhBVkVfVE1fVE1fR01UT0ZGIGlzIEhBVkVfU1RSVUNUX1RNX1RNX0dNVE9GRgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE3MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBkaXNtYW4vcGluZywgZGlzbWFuL3RyYWNlcm91dGU6IENsb3NlIHNvY2tldHMgaW4gZXJyb3Igc2l0dWF0aW9ucwogCi1jb21taXQgMTg0ODQ4ZjZhNTM2MmE0NTAxOTc0YTVjZjJlNTc3MWQyODY0ZmY3OAorY29tbWl0IDhhMjUwMmExNWMzMjE3Yjk1OTM5YTNjODM2MTY3ZDIzMGFjMzVmMDIKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBBcHIgOSAyMTo1NjozMyAyMDExICswMDAwCitEYXRlOiAgIFdlZCBOb3YgMTYgMDk6MTM6NTMgMjAxMSArMDEwMAogCi0gICAgSEFWRV9UTV9UTV9HTVRPRkYgaXMgSEFWRV9TVFJVQ1RfVE1fVE1fR01UT0ZGCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTcyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIFVwLXRvLWRhdGUgbGlzdCBvZiBSRkNzIHdpdCBtaWJzCiAKLWNvbW1pdCBiMWNkMjFhNGQ3MWMxN2MxMjIxMzRhYzMyODQ5MTdmNjUzNjNlNGQyCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgQXByIDkgMjA6MDQ6MjkgMjAxMSArMDAwMAorY29tbWl0IGRjZGQ3MDIxMTFkOGRhNWY1MzgwNGNmY2YwZGZkYWQ3MzE0NjhiZGUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTm92IDE1IDEwOjU3OjM0IDIwMTEgKzAwMDAKIAotICAgIFNvbGFyaXMgc3VwcG9ydCBmb3IgU0NUUC1NSUIKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgRG9uJ3QgdHJ5IHRvIGluc3RhbGwgYW4gZW1wdHkgbGlzdCBvZiBtYW4gcGFnZXMgKE1BTjMpCiAKLWNvbW1pdCBjY2UzMDQxOTMwOThmNzU3MzgwN2M4MmE3MDhiY2JlMDM0N2E3YTJiCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgQXByIDkgMjA6MDQ6MjkgMjAxMSArMDAwMAorY29tbWl0IGJhNjE5ODA0ZTU5NzhhOGRmNzU0ODQ0ZWZjY2E1MmI2OWI1MDE1ZmEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBOb3YgMTQgMTM6MzQ6MjAgMjAxMSArMDEwMAogCi0gICAgU29sYXJpcyBzdXBwb3J0IGZvciBTQ1RQLU1JQgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBNaW5HVzogTWFrZSBzdXJlIHRoYXQgdGhlIGJhY2tzbGFzaGVzIGluIHRoZSBwc2tpbGwgbWVzc2FnZSBhcmUgZGlzcGxheWVkLgogCi1jb21taXQgYzY2NTljOTRhZDliYTgwNjBkZGUxODk0Mjc2MWNlODVkMWE1Y2MxOQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IEFwciA5IDE5OjUwOjMwIDIwMTEgKzAwMDAKK2NvbW1pdCA5MjNlZWNjNTA3Zjc1MDQzYjYwYzVlNjgwNTNhNGYzOTZhYjBiMGQyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTm92IDE0IDEyOjM2OjM4IDIwMTEgKzAxMDAKIAotICAgIFRaIGlzIG9uZSBob3VyIG9mZiBpZiBIQVZFX1RNX1RNX0dNVE9GRiBhbmQgU1lTViAoc3VjaCBpcyBMaW51eCkKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgQ29tcGlsZXIgd2FybmluZyBmaXggZm9yIHN5c3RlbXMgd2hlcmUgdWludDY0X3QgPSB1bnNpZ25lZCBsb25nIChlLmcuIFJIRUwgNi4xL3g4Nl82NCkKIAotY29tbWl0IDlmYTY0ZjI3YWM1MTk4ZTU0ZmVmMmRmNThkYzA5NGFmMjM3ZmFmMWUKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBBcHIgOSAxOTo1MDozMCAyMDExICswMDAwCi0KLSAgICBUWiBpcyBvbmUgaG91ciBvZmYgaWYgSEFWRV9UTV9UTV9HTVRPRkYgYW5kIFNZU1YgKHN1Y2ggaXMgTGludXgpCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTY5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYTlhNjE5ZTBkMTczMDNjOWVlN2Q1YTdlNzEwNmVhMGFmMzNiOWU5NgotQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBBcHIgMSAwMToxMTowNyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBkdGxzOiBvdmVyaGF1bCBvZiBkZWJ1ZwotICAgIAotICAgICAgLSBkcmFzdGljIHJlZHVjdGlvbiBpbiBudW1iZXIgb2YgbWVzc2FnZXMgYW5kIG1zZyBjb21wbGV4aXR5Ci0gICAgICAgIGZvciBiYXNpYyBkdGxzdWRwIHRva2VuCi0gICAgICAtIHByZXZpb3VzIGxldmVsIG9mIGRldGFpbCBhdmFpbGFibGUgYnkgYWRkaW5nIDk6ZHRsc2R1cCB0b2tlbgotICAgIAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE2OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDFmYWQ5ODdlZWMxZGVmN2NkODZjNjVhYzI3OTAxMzczZTdhNjNkMGIKLUF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgQXByIDEgMDA6NTM6MjkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogZHRsczogY2xlYW4gdXAgY2xvc2U7IGNhdGNoICdjb25uZWN0Jy8nZGlzY29ubmVjdCcKLSAgICAKLSAgICAgIGNvbm5lY3QgPSB3ZSBnZXQgc3VjY2Vzc2Z1bGx5IGRlY29kZWQgc25tcCBkYXRhCi0gICAgICBkaXNjb25uZWN0ID0gMCBieXRlIHJlYWQsIHNzaCBzaHV0ZG93biBmbGFnIHNldAotICAgICAgYWRkIGJpb19jYWNoZSBmbGFncyBmb3IgY29ubmVjdGVkL2Rpc2Nvbm5lY3RlZAotICAgICAgY2hlY2sgZm9yIG51bGwgcHRyIGJlZm9yZSBkZXJlZmVyZW5jaW5nCi0gICAgICBjbG9zZSBoYW5kbGluZzoKLSAgICAgIC0gIG9ubHkgc2VuZCBxdWV1ZWQgZGF0YSBpZiB3ZSBnb3QgdG8gY29ubmVjdGVkIHN0YXRlCi0gICAgICAtICBzZXJpb3VzbHkgcmVkdWNlIHRpbWVvdXQgdG8gd2FpdCBmb3IganVuayByZWFkLiBpIHRoaW5rCi0gICAgICAgICB3ZSBzaG91bGRuJ3QgZXZlbiBib3RoZXIKLSAgICAgIC0gcmV0dXJuIGVhcmx5IGlmIGNhY2hlcCBpcyBOVUxMLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHRlc3QgaXQKLSAgICAgICAgcmVwZWF0ZWRseQotICAgICAgLSB1c2UgY29ycmVjdCBuZmRzIHZhbHVlIGluIHNlbGVjdCBjYWxsCi0gICAgCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTY3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgODA2MzI2YjU4YTkxNjgzZWEyYTY0MmY2YzMyYTE4YjA5ODc2NDVkZgotQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXIgMzEgMDU6MTc6NDAgMjAxMSArMDAwMAotCi0gICAgbWFrZSB0cnVuayBhbmQgdjUtNi1wYXRjaGVzIGNsb3NlbHkgYWxpZ25lZAotICAgIAotICAgICAgbW9zdGx5IGNoYW5nZXMgaW4gZGVidWcsIGNvb2tpZSB0cmFja2luZwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE2NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDBkN2U3ZTQyZWUzYmEwZmFmMjE1NDAwOTAwNDM0ZDYwMjRjMjUwZjgKLUF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWFyIDMxIDAzOjUzOjMzIDIwMTEgKzAwMDAKLQotICAgIGFkZCBjb29raWUgaGFuZGxpbmc7IHJlbW92ZSBpZmRlZidkIGNvZGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNjUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5ODg4ZDQ0NDM4OGUzZjZiMGY2OWVhYWFhMjI1OGIzMTRiMzc3MDU3Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXIgMTggMTE6MjM6MjQgMjAxMSArMDAwMAotCi0gICAgdmVyc2lvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhMmI0NTNiZGE3MjM3M2RiYmIxMTVmN2E5YzA0YTYzNWQ5MzM5ZTA5Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXIgMTggMTE6MTg6MjIgMjAxMSArMDAwMAotCi0gICAgdmVyc2lvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiNWQ1NDlhMmUxNzljYjE4ZDVhYjM0NDAzMDUzMTA4NDExNjFmZjFmCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXIgMTggMTE6MTU6NTUgMjAxMSArMDAwMAotCi0gICAgbWFrZSBkZXBlbmQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiZGEyMmUwYmM1ZDQ4MmM1YzMwM2UzMWJhNWM0MzJjMDkxZmEwZGQ4Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXIgMTggMTA6MzY6MjIgMjAxMSArMDAwMAotCi0gICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3MzQ1MzIyZTI4MTI1ODhiMTNhNGM4MWIzY2RjODc3MjljYzNkOGY3Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXIgMTggMTA6MzI6NDkgMjAxMSArMDAwMAotCi0gICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTQzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNGFlYTU4NjZmMTVmOTY1ZGE3MjY0YjljMTIzYTcyOGM5Y2ZhODczZAotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1hciAxNyAyMTowOToxMCAyMDExICswMDAwCi0KLSAgICBGb3JtYXR0aW5nIGJvdGNoCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTQyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMGVmOGRjZDAxZDE1NDBiOGZjNzcxNjM4NDVmMDFlM2UyZDliNTEwMQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1hciAxNyAyMTowNzoyNyAyMDExICswMDAwCi0KLSAgICBJbnN0YWxsIHJlcXVpcmVkIG1pYnMKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3Njc5MzZhMzc1YzRhOTdmZDIyOTUxZGZkMmVhN2I4NWFlYWZkOTZjCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWFyIDE3IDIxOjA1OjIxIDIwMTEgKzAwMDAKLQotICAgIE5ldyBSRkMgbWlicwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE0MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDllNTA1NmYxMjRmMTU0NmY2ZjUwNmQ4NjE2OWJjOGNmMGY1MDVlMDIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1hciAxNSAxMjozNzoyMCAyMDExICswMDAwCi0KLSAgICB2ZXJzaW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDEzOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDY2NjI4YWE3ZTA0MGQ2YThhM2U2MThkY2Y3Mjg0M2VhMGI4MWUxMTYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1hciAxNSAxMDo1Nzo1OSAyMDExICswMDAwCi0KLSAgICB2ZXJzaW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDEzNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDdlYTUxNzkwNWE4MTc4NGM3OGU3ZmNhZThlNzIzNDg1MjQxNjZhYjgKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1hciAxNSAxMDo1NjowMCAyMDExICswMDAwCi0KLSAgICBtYWtlIGRlcGVuZAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDEzNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDZiOGI0MTY4ZjllZTgyYTZiMjVhMWFmN2UwMDdjZDBlNzU1NDdkNTMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1hciAxNSAxMDo0MjowNiAyMDExICswMDAwCi0KLSAgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxMzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlYzQ0ZjdjZTQzYzM2MmI4NmUzZmQxYzhiYTk5ZGQ1MTRkZjk4MjMxCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXIgMTUgMTA6NDE6MjcgMjAxMSArMDAwMAotCi0gICAgdmVyc2lvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxMzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhMzcxNjE5M2ZlNGNmMmU4MmM0YmUwZTllOGU2ZjRlNjdkNGQwNmJkCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWFyIDE1IDEwOjMxOjEyIDIwMTEgKzAwMDAKLQotICAgIFNwZWxsaW5nIGZpeDogcmVnaW5lcmF0ZWQgLT4gcmVnZW5lcmF0ZWQuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTMzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYmVkOTI3MmZmOWZhNmZmYjc1MTNhODJlYzZkNDIzZTZhNGRlNWIyNgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1hciAxNSAwOTo1OTozMCAyMDExICswMDAwCi0KLSAgICBGaXhlZCBhIGNvbXBpbGVyIHdhcm5pbmcgdGhhdCB3YXMgaW50cm9kdWNlZCBpbiByMjAxMTMuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTMxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNjlkNjgxNWI2NTQ0ZjQ3ZDM5MjkxMTkxZTlkZWI1YmJhZTExMzRlMgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gTWFyIDE0IDE1OjIxOjM2IDIwMTEgKzAwMDAKLQotICAgIHZlcnNpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTI4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOWNjOGM3MmU2NzZmMGU0NmQ3ODRkMTVmMWFiMDcyYzE5MmE1NGJmNwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gTWFyIDE0IDE0OjE0OjA3IDIwMTEgKzAwMDAKLQotICAgIHZlcnNpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTI3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYjA3OWEwYTNkMWNmZjRmNGEzMGE1NmZmZDU1YmRjZTFlYTVkZGVlOAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gTWFyIDE0IDE0OjExOjE0IDIwMTEgKzAwMDAKLQotICAgIG1ha2UgZGVwZW5kCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTI2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMDY5N2QwYWRhOTc0NzQ2MTMyMzNhNjliNTczMzAzMzNlNzViMTg4NgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gTWFyIDE0IDE0OjAwOjUyIDIwMTEgKzAwMDAKLQotICAgIGRvY3VtZW50YXRpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTI1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZWRmY2ZlMDc2ZjcwN2QwZDc0ZmI4ZTFjN2Y1NjQyZGM4ZDg4OTUxOQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gTWFyIDE0IDEzOjU3OjAwIDIwMTEgKzAwMDAKLQotICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDEyNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGI1ZTljOGRkNDI3MmI2N2Y5ODc3NjQ4ZDQ0NWEwNzRjNGU0MDViMjgKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIE1hciAxNCAxMzo0NzowNSAyMDExICswMDAwCi0KLSAgICB2ZXJzaW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDEyMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDA1YjM3MjgxZDAwZWQwY2ExMjc4MDQyYzA1MDIxMDg0YzdiOWEzNTQKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIE1hciAxNCAwOTozMTo1NyAyMDExICswMDAwCi0KLSAgICBGaXggbWFpbiBhZ2VudCBzZWxlY3QgY2FsbCB0byB1c2UgdGhlIHJlbmFtZWQgQVBJIHJvdXRpbmUuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTIyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgN2E2MWY4MzI1MjNlYWJhNjAzOTdlN2JkNTY3MzY2N2UwM2ZmMjhlYQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gTWFyIDEzIDIwOjA5OjUyIDIwMTEgKzAwMDAKLQotICAgIEJyaW5nIHRoZSBuYW1pbmcgb2YgdGhlIGxhcmdlX2ZkX3NldCBzZWxlY3QgY2FsbCBpbnRvCi0gICAgbGluZSB3aXRoIHRoZSByZXN0IG9mIHRoZSBBUEkuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTIxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNmU1YmRjNWNiYTQzNDc5MjJmNjhjYTE1YTM3YzMzMjFhYzk4NjU1MgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gTWFyIDEzIDIwOjA5OjUyIDIwMTEgKzAwMDAKLQotICAgIEJyaW5nIHRoZSBuYW1pbmcgb2YgdGhlIGxhcmdlX2ZkX3NldCBzZWxlY3QgY2FsbCBpbnRvCi0gICAgbGluZSB3aXRoIHRoZSByZXN0IG9mIHRoZSBBUEkuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTIxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNmRlYjM2MDBjZGVkYmI4MDBkMGQ0YjE4MGJkNGEwY2Q4NTYyOWZlYwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gTWFyIDEzIDIwOjA2OjI0IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAzMjAzODA2OiBBZGQgdGhlIGZ1bmN0aW9uIG5ldHNubXBfbGFyZ2Vfc2VsZWN0KCkKLSAgICAocGx1cyB0d2Vha3MgdG8gbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDEyMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDcxMWUzM2JhYmIyMDhhOTA2MjNlY2Y2YjQyNGVkMTFjMzMwOWY5ODcKLUF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgTWFyIDEyIDA2OjU5OjU2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IHJlYWxsb2MraW5pdCBpbnN0ZWFkIG9mIGNhbGxvYwotICAgIAotICAgICBpbnNwaXJlZCBieSBwYXRjaCAzMTk1NTMyIGZyb20gU3RlcGhlbiBIZW1taW5nZXIKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxMTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxZTdhNmI0N2M4ZDdkNzcxNzE4OWE5NDY2ZDE3MjFkZTg4YTdhODc3Ci1BdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IE1hciAxMiAwNjo1OTo1NiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiByZWFsbG9jK2luaXQgaW5zdGVhZCBvZiBjYWxsb2MKLSAgICAKLSAgICAgaW5zcGlyZWQgYnkgcGF0Y2ggMzE5NTUzMiBmcm9tIFN0ZXBoZW4gSGVtbWluZ2VyCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTE5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMThmMTI1ZjlmM2YzZjNjZmNmNzFlYTc1Mjk0MzUzYTA2Y2ExZjQyZQotQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBNYXIgMTIgMDU6NDc6NTggMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiBvcHRpbWl6YXRpb25zIGZvciBsYXJnZSByb3V0ZSB0YWJsZXMgZnJvbSBTdGVwaGVuIEhlbW1pbmdlcgotICAgIAotICAgICBhcHBsaWVkIHBhcnRzIDEtMyBvZiA0IGZyb20gaGltIChtc2dzIHRvIGNvZGVycyBvbiAyLzI4LzExOyBzdWJqZWN0Ci0gICAgIGlwLWZvcndhcmQtbWliIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50czsgcGFydCA0IG5lZWRzIG1vcmUgd29yawotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDExOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGEyNGQ3OWI3MDQ3M2IxZGMyNjY0NDcwYWZkNzljZTYzMTgwNDY1NTgKLUF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgTWFyIDEyIDA1OjQ3OjU4IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogb3B0aW1pemF0aW9ucyBmb3IgbGFyZ2Ugcm91dGUgdGFibGVzIGZyb20gU3RlcGhlbiBIZW1taW5nZXIKLSAgICAKLSAgICAgYXBwbGllZCBwYXJ0cyAxLTMgb2YgNCBmcm9tIGhpbSAobXNncyB0byBjb2RlcnMgb24gMi8yOC8xMTsgc3ViamVjdAotICAgICBpcC1mb3J3YXJkLW1pYiBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHM7IHBhcnQgNCBuZWVkcyBtb3JlIHdvcmsKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwNTk4Yjc3ZTFjM2FjNzMwYWMwN2Q5MmY3OWMxYjAyNDViNzkzNTJlCi1BdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1hciAxMSAxNDo0MzoxNiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBhZGQgbW9yZSBvcGVuc3NsIGVycm9yIGNhc2VzIHdoZXJlIHdlIGNoZWNrIGZvciBsb2NhbCBjZXJ0Ci0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTE3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNTFkZDYyM2VlNDY3ZTNiOTdkYWM0YzVjY2RiY2U0MmMyNzA3ZTAwNwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1hciAxMSAxMjowMToyMyAyMDExICswMDAwCi0KLSAgICBNaW5HVzogZHNrVGFibGU6IFJlcG9ydCB6ZXJvIGZvciB1bmltcGxlbWVudGVkIGZpZWxkcyBpbnN0ZWFkIG9mIHJhbmRvbSBkYXRhLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDExNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDg0YzI0MTJmMDAyMmE5NmVhYzJmMjk0OGNhYTE4ODAzNmE5NDUwMzYKK2NvbW1pdCA0MzRiZmMxZjc0NTc1NTBiNmY4N2Q1YmNkNTExMjc2YjI3MGI1OTY0CiBBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1hciAxMSAxMToxMToyOCAyMDExICswMDAwCitEYXRlOiAgIE1vbiBOb3YgMTQgMTE6MjI6NTMgMjAxMSArMDEwMAogCi0gICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkIHJhY2UgY29uZGl0aW9uIGluIGhyU1dSdW5UYWJsZQotICAgIFRyZWF0IHRoZSByZWFkcyBmcm9tIC9wcm9jLzxwaWQ+LyogY2FyZWZ1bHksIHByb2Nlc3NlcyBjYW4gZXhpdCBpbiB0aGUgbWlkZGxlIG9mIHByb2Nlc3NpbmcuCisgICAgQ0hBTkdFUzogc25tcGQ6IGZyb20gTWFydGluIFdpbGNrOiBmaXhlZCBzbm1wZCBjcmFzaGluZyB3aXRoICdzZWxlY3Q6IGJhZCBmaWxlIGRlc2NyaXB0b3InLgogICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDExNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBPbiAzMi1iaXQgc3lzdGVtcywgc25tcGQgZGllcyB3aXRoIGFmb3JlbWVudGlvbmVkIG1lc3NhZ2Ugd2hlbiB1c2luZyBmaWxlIGRlc2NyaXB0aW9ucyA+IDMyLCBlLmcuIHdoZW4gaGF2aW5nID4zMiBBZ2VudFggc3ViYWdlbnRzLgogCi1jb21taXQgMmQ0OGNjZjZjYzkzYzBlNDRlZWM1NWVkZjU1OWQ5ZjE1MjNjNzRmOQorY29tbWl0IGVkNjVlY2E2ZTdmOWNmYTczODBhNzhkNTZjMDFlZDMxNDc0NWIxNjkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBOb3YgMTEgMTk6MDE6MjEgMjAxMSArMDEwMAorCisgICAgRnJlZUJTRC05OiBGaXggZm9yIGNvbnN0J2lmeWVkIG5saXN0IGFyZ3VtZW50cworCitjb21taXQgZWFjYTc5ODNlMzY1NWFiNjk2ZmNjNDQ2MWNhMGNlZGJhYzZjZTY5YQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE5vdiAxMSAxOTowMDoxMiAyMDExICswMTAwCisKKyAgICBOZXRCU0QtNjogT25lIG1vcmUgaW5zdGFuY2Ugb2YgdGltZXNwZWMgcmVwbGFjaW5nIHRpbWV2YWwKKworY29tbWl0IDhhZDZjNTNmZGVjNWFkZWFlNGU1MmYxNzUxZWNlYzRhMzQ1YmFiMDUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBOb3YgMTEgMTg6NTk6MDEgMjAxMSArMDEwMAorCisgICAgRml4IGJ1aWcgIzM0MzY1Mjc6IGFycF9uZXRsaW5rOiBmaXggZHlpbmcgcmVsb2FkIG9mIGNhY2hlCisKK2NvbW1pdCAzNzhmZmVkMDNiYTc5YTgzNDZkNmM2Mjc4MWUyZGRmNWNlOTJhNDc4CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTm92IDExIDE4OjU1OjQzIDIwMTEgKzAxMDAKKworICAgIEZpeCBidWcgIzM0MzY1Mjg6IHN3aW5zdF9wa2dpbmZvOiByZWNvdmVyIGZyb20gTlVMTCByZXR1cm4gZnJvbSBvcGVuZGlyCisKK2NvbW1pdCBkN2FkOGY1ZjlmM2Y2N2YxNmY2NWMyNTE1ZDExZTE5NGQyY2RkMTJjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgTm92IDEwIDE0OjA0OjQxIDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IEN5Z3dpbjogTWFrZSBkYXRlX25fdGltZSgpIHByb2R1Y2UgdGltZSB6b25lIGluZm9ybWF0aW9uCisKK2NvbW1pdCBiYTM1YzUwYjJmNDU5YmQ5YzExZWQ1OWNjN2QxYjE2MjE1NjQ0ZmEzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgTm92IDEwIDE0OjE3OjA0IDIwMTEgKzAxMDAKKworICAgIFJlcGxhY2UgQUNfVFJZX0xJTksoKSBieSBBQ19MSU5LX0lGRUxTRSgpCisgICAgCisgICAgTm90ZTogdGhlc2UgY2hhbmdlcyBkbyBub3QgYWZmZWN0IHRoZSBnZW5lcmF0ZWQgY29uZmlndXJlIHNjcmlwdC4KKworY29tbWl0IGY2MTViZjI0ZjVkMGYyM2NlOTMwMWRhNTU2MTg0ZDY0NjA3NDA0NTYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgOSAyMDozMjo0OSAyMDExICswMTAwCisKKyAgICBGaXMgQnVnICMzNDM0ODI0OiBTSUdTRUdWIHdoZW4gcmVhZGluZyBkaXNrIGRpcmVjdGl2ZSBhZnRlciBTSUdIVVAKKworY29tbWl0IGE5NGExNzlkOTM0MGY1MWZhN2MyMzQzMTYzMGJjMGZmZDZkNzU5ZTgKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgOSAyMDozMDo1MSAyMDExICswMTAwCisKKyAgICBGaXggYnVnICMzNDMzNjE2OiBkb250IHRyZWF0IERhdGVBbmRUaW1lIGFzIGEgc3RyaW5nCisKK2NvbW1pdCBiMjllNDE2NDUzMWQyNThmZTM0YTZmZTJiOWUxZWM2MGM1NmY5NTQ0CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBNb24gTm92IDcgMDE6MjU6NTcgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZQorCitjb21taXQgZTIyMWU2NWZkYzFjNjhmMTk2ODY1MTcxN2RjYzljY2ZiNjQxNDc4MworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE5vdiAzIDE1OjA1OjAwIDIwMTEgKzAxMDAKKworICAgIEZpeCB3YXJuaW5ncyBhYm91dCBjb252ZXJ0aW5nIHNvY2thZGRyX2luICogaW50byBzb2NrYWRkciAqLgorICAgIAorICAgIFRoaXMgaXMgYSBmb2xsb3ctdXAgZm9yIGNvbW1pdCBhMGFmMzg1LgorCitjb21taXQgMmU3ZTllZGEwYjBkNjJhNzY0NWE5YThmNzBlZjNmYjZmM2RkNjk0MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE5vdiAzIDExOjE3OjQ4IDIwMTEgKzAxMDAKKworICAgIEZpeCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmdzLgorCitjb21taXQgMzQ2MmViY2RkMGI3YzI5OGNiMTVjMzA5OTczNmY0Zjk1MjI1Nzg0NgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIE9jdCAyOCAxNjowNzoxNSAyMDExICswMjAwCisKKyAgICBSZW1vdmUgdGhvc2Ugc3VwZXJmbHVvdXMgcGFyZW50aGVzZXMgdGhhdCB0cmlnZ2VyIGEgY2xhbmcgd2FybmluZy4KKworY29tbWl0IDNlNWZlZGQzZTdkMWVmMzE2ODM2MDRiZjczZGM1NmU5NDRjYWQzNDkKIEF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWFyIDExIDExOjExOjI4IDIwMTEgKzAwMDAKK0RhdGU6ICAgVGh1IE5vdiAzIDA5OjQ1OjI3IDIwMTEgKzAxMDAKIAotICAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCByYWNlIGNvbmRpdGlvbiBpbiBoclNXUnVuVGFibGUKLSAgICBUcmVhdCB0aGUgcmVhZHMgZnJvbSAvcHJvYy88cGlkPi8qIGNhcmVmdWx5LCBwcm9jZXNzZXMgY2FuIGV4aXQgaW4gdGhlIG1pZGRsZSBvZiBwcm9jZXNzaW5nLgorICAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCBVQ0QtU05NUC1NSUI6OnN5c3RlbVN0YXRzIGFmdGVyIDMwIGRheXMgb2YgdXB0aW1lLgogICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDExNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBBZnRlciAzMCBkYXlzLCB2YWx1ZXMgZnJvbSAvcHJvYy9zdGF0IChvbiBMaW51eCkgY2FuIGdldCBiaWdnZXIgdGhhbiAzMmJpdHMgYW5kIHNubXBkIGNhbGN1bGF0aW9ucyBtaWdodCByZW5kZXIgY291bnRlcnMgbGlrZSBzc0NwdVVzZXIgbmVnYXRpdmUgb3IgemVybywgd2hpbGUgdGhlIHJlYWwgdmFsdWUgaXMgaGlnaGVyLiBUaGVyZWZvcmUgdGhlIGNvdW50ZXJzIHNob3VsZCBiZSB0cmFja2VkIGFzIHRoZSBsYXJnZXN0IGludGVnZXIgYXZhaWxhYmxlLgogCi1jb21taXQgYjgxOGZjZWRjYzNiNTdhMjg4YTUyNzRiOTkzZWRjYmIwZmZiYWQwNwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1hciAxMSAwODo0MjowNSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogQnVpbGRzIHdpdGggbW9zdCByZWNlbnQgTWluR1cgKGhhdmluZyAjZGVmaW5lIGxvY2FsdGltZV9yKS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjMDgyMjEwNWEzOWMxMTE4MTYyOTE4NWVlNmQ3MzQ4YWVjZmI1ZjE4Ci1BdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1hciAxMSAwMzowODo1MCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiByZWZpbmUgY2VydCBkZWJ1Z2dpbmc7IHJlbW92ZSB1bnVzZWQgZnVuY3Rpb24KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1YTE2NDFlYmExYzg1ZjI0ZWE3NDYxZTcxODVjODA0MmQ3NjY1M2RjCi1BdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1hciAxMCAyMToyMTozMiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzMjA1NzY1OiBoYW5kbGUgcmVjb25maWcgZm9yIGNlcnRTZWNOYW1lIHRva2VuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTEyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZjViNzEyN2Y0MmM0NTRhMmQ5MWExYTkyM2E5ZTQ4MjIzNTRkZjYxYgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1hciAxMCAyMDowMTozMyAyMDExICswMDAwCi0KLSAgICBTcGVsbGluZyBmaXggaW4gYSBzb3VyY2UgY29kZSBjb21tZW50OiBtZXNzZ2VzIC0+IG1lc3NhZ2VzLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDExMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDBiMTk2ZGZkNDJkNjY5MGU0ZjViZTdlZTNlMjA2NGYwMzcyNzQ3ZTQKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXIgMTAgMTk6NTU6MjYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDMyMDM4MDY6IE1pbm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBvZiBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjNGU4YmI3NTkyODZlNzMxNTU5ZjFiODJhYjdmYWZiYWZkMmQ3ZWEzCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWFyIDEwIDE5OjQ4OjQzIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMzIwMzgwNjogQXZvaWQgdGhhdCB0aGUgbWFpbiBhZ2VudCBwcm9jZXNzaW5nIGxvb3AgLSB3aGVuIHVzaW5nIG1vcmUgdGhhbiBGRF9TRVRTSVpFIGZpbGUgZGVzY3JpcHRvcnMgLSBjYW4gY2F1c2UgbWVtb3J5IGNvcnJ1cHRpb24gYnkgaW52b2tpbmcgc2VsZWN0KCkuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTA5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZGJiMGY3Yjk3OWYwNzYyMTg1ZWU1ZWUxODRiYTNjZjIzYjViMzFhMQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1hciAxMCAxOTo0MzoxNiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMzIwMzgwNjogQWRkIHRoZSBmdW5jdGlvbiBuZXRzbm1wX2xhcmdlX3NlbGVjdCgpLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDEwOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGE3NTJhODYyNmZmMjBmYTU2Yzk1OWU2MDk0NTUzMGU1ODJjOTI5ZWEKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXIgMTAgMTg6NTc6MjQgMjAxMSArMDAwMAotCi0gICAgRml4ZWQgdHdvIGNvbXBpbGVyIHdhcm5pbmdzIChiYWNrcG9ydGVkIHIyMDA5OCBmcm9tIHRoZSB0cnVuaykuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTA3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZGU2YzUyMmNiYzYxYTcyOGZmNzM3ZmVlMWU0ZjQ0NzkxMzMwMTNlYQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1hciAxMCAxODo1NTo1MyAyMDExICswMDAwCi0KLSAgICBBZGRlZCBhIG1pbmltYWwgdW5pdCB0ZXN0IGZvciBuZXRzbm1wX2xhcmdlX2ZkX3NldC4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2NGYxNzZhOWRiMTY5OTNlYWUxYzFhMzFjOThmZDRjNzM0NzRiMTUzCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWFyIDEwIDE4OjUyOjM0IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAzMjAzODA2OiBNYWtlIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSgpIGNsZWFyIGFsbCByZWxldmFudCBmaWxlIGRlc2NyaXB0b3JzLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDEwNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDNjMGZjMzYwZDBlOGJhMWZjZjBjMzE4NTk4MGU1YmFmNmZjOTNlZjcKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1hciAxMCAxNTo1MToyNyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzMTc4Mzg5OiBGaXggaW5jb25zaXN0ZW50IGhhbmRsaW5nIG9mIFRaIG9mZnNldHMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxMDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzZTY5ZmE1YTJmYjJiMjQ4NmVmMjgyZTNiYTJjOGZmZDU4YjBhZDcxCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXIgMTAgMTU6NTE6MjcgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzE3ODM4OTogRml4IGluY29uc2lzdGVudCBoYW5kbGluZyBvZiBUWiBvZmZzZXRzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTA0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYjlhMTQ2OTg5OGFhNTE1YzY4OTcyNjA4Y2JiZjAxYTgyZjJhOTg4MgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWFyIDEwIDE1OjUxOjI3IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDMxNzgzODk6IEZpeCBpbmNvbnNpc3RlbnQgaGFuZGxpbmcgb2YgVFogb2Zmc2V0cwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDEwNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGY4YTg1MjEwNGFmNjdjNmNmYWQ4MjA2NjVlY2EyZGM3M2Q5YjUxZmYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1hciAxMCAxNTo1MToyNyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzMTc4Mzg5OiBGaXggaW5jb25zaXN0ZW50IGhhbmRsaW5nIG9mIFRaIG9mZnNldHMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBkMGU4ZTZmNGQyMTFlYjU1ZDA1ZTYxOTY1MGJlNjU1ZGZhOTM5NGU1Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gTWFyIDcgMTc6MTk6NDYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDMxOTU1Mzc6IE1pbm9yIGJpbmFyeV9hcnJheSBjb250YWluZXIgc29ydCBvcHRpbWl6YXRpb24KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAwNzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlYjAzYzQ4ZTM1NWUwOGFlNTYyNGQ2MDU5NDY2NjU5YjQwYmQ5ODVjCitjb21taXQgMGZjODIyMWIyNDk4OGM0YWU2MTgwZWQ0MmI4NmI5ODUyZmQ1ODZhZAogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIE1hciA2IDE5OjQ3OjA2IDIwMTEgKzAwMDAKK0RhdGU6ICAgV2VkIE5vdiAyIDIyOjU5OjA4IDIwMTEgKzAxMDAKIAotICAgIFRhYnMgdG8gc3BhY2VzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMDc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIGRza0luZGV4IHdhcyBvZmYgYnkgb25lCiAKLWNvbW1pdCA2YmQyYjBiYjAxYzc0MjgzNTM0ZWRjZmMxY2IwODc5MDg2MWUwZDc0Citjb21taXQgYTViMjg4MjllNjRkNWYzYjg3ZTRiOWIxZWY4Y2MyMDRmMzNhNjFiNwogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIE1hciA2IDExOjI4OjA0IDIwMTEgKzAwMDAKK0RhdGU6ICAgV2VkIE5vdiAyIDIxOjI1OjA3IDIwMTEgKzAxMDAKIAotICAgIENvbmZpZ3VyZSBjaGVjayBmb3IgZ2V0aG9zdG5hbWUyCi0gICAgVXNlIGdldGFkZHJpbmZvIGlmIGF2YWlsYWJsZS4gTm93IHdvcmtzIGZvciBTb2xhcmlzIChhbmQgV2luZG93cz8pCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMDc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIFNvbGFyaXMgbmVlZHMgJEFXSyB0byBnZXQgYSB1c2FibGUgbmF3awogCi1jb21taXQgZDg2ODQzNjIxNWMwZTcwYmRlM2M0NGU0YzkyNmRhYTZhYjg4MDA3OAorY29tbWl0IDI4MDFhMjEzOWYyNzAyMWUxYWIxNWUzNjJlMmQzZDYyNGZmYWE0OTQKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBNYXIgNSAxMjo1MDo0NCAyMDExICswMDAwCitEYXRlOiAgIE1vbiBPY3QgMzEgMjI6NTU6NTMgMjAxMSArMDEwMAogCi0gICAgQ2xlYW4gdXAsIGFuZCBjb3NvbGlkYXRlIHJlc3VsdCB0YWJsZSByb3cgY3JlYXRpb24gaW50byBhIG5ldyBmdW5jdGlvbi4KLSAgICBTYXZlcyAyMDAgbGluZXMgb2YgY29kZSwgd2l0aCAoaG9wZWZ1bGx5KSBubyBmdW5jdGlvbmFsaXR5IGNoYW5nZQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDA3MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBQYXRjaCAjMzQwNjM2NDogRml4IHVuc3RhYmxlIGRhdGEgZm9yIE5ldEJTRC4KIAotY29tbWl0IGM4MjEwMmQ5ZTJhNjJkYjQ2MjhiMmM1ZGQ5ZmZiNmQ3MDc3ZjAyYzUKK2NvbW1pdCA4MjFhNThkMTEyZDdhYzQ5NTE0OWUyNjJkNzA0NDEyYmEyODAwNDM4CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gT2N0IDMxIDIyOjQzOjUyIDIwMTEgKzAxMDAKKworICAgIEZpeCBpcHY2IHN0YXRpc3RpY3MgbG9vcGluZyB0b28gZmFyIHdoZW4gc2Nhbm5pbmcgaW50ZXJmYWNlcy4KKyAgICBGaXggVENQIHNlc3Npb24gdGFibGUgcmVwZWF0aW5nIGRhdGEgZnJvbSBmaXJzdCBlbnRyeSBmb3IgYWxsLgorCitjb21taXQgMzQ5NTkxZDAzZTE3YTU1YjQzZWFjYzZhNjg3YjAyZmQ4ZDRlOTUyOAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgTW9uIE9jdCAzMSAwODo1OTozNyAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBwZXJsOiBNYWtlIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIHBlcmwgc3VwcG9ydCB3aXRob3V0IHN1cHBvcnQgZm9yIG9wYXF1ZSB0eXBlcy4KKworY29tbWl0IDFlYzcxMTBlNzJiY2UxNTYxZjc0NjUxNzQ1OWQ2ZjA0MzAxNmI2MGUKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBPY3QgMzAgMTk6MDU6MzAgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogTWFrZSB0aGUgYXNuMSB0ZXN0IHBhc3MgZXZlbiBpZiBzdXBwb3J0IGZvciBvcGFxdWUgdHlwZXMgYXJlIHJlbW92ZWQuCisKK2NvbW1pdCA2ZDI2OTE4YWY1NWFhMzY2MmE3MjA1NDJkZTc3YmJmMzliMGEzZTkxCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgT2N0IDI5IDA4OjM0OjMzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBEaXNhYmxlIHRoZSBzdXBwb3J0IGZvciBpbnRlZ2VyNjQgaW4gcGFzcyBzY3JpcHRzIGlmIGNvbXBpbGluZyB3aXRob3V0IG9wYXF1ZS1zcGVjaWFsLXR5cGVzLgorCitjb21taXQgMjliZjY5ZDcwNDI0ZjM1OWQ5Yzg3ZjA3YTk2NGEwOTk0MTU2NDlhNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE9jdCAxMCAxMzowMjoyNSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGRfc3FsOiBBdm9pZCB0aGF0IGEgbGlua2VyIGVycm9yIGlzIHRyaWdnZXJlZCBvbiBzeXN0ZW1zIHdoZXJlIG15X3Byb2duYW1lIGlzIG1pc3NpbmcgaW4gbGlibXlzcWxjbGllbnQgKGUuZy4gRmVkb3JhIDE1IGFuZCAxNikuCisgICAgCisgICAgVGhpcyBpcyBhIGJhY2twb3J0IG9mIGNvbW1pdCA5ZjY1M2Y3LgorCitjb21taXQgMmNjOTUwNGI5YmI4NjI1Yjk0YmU2Y2RhN2U2MDk5M2QwNTljZDkyOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE9jdCAyNiAwOTowMToyMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDM0Mjg1MDY6IEZpeCBuZXRzbm1wX2dldGhvc3RieWFkZHIoKQorICAgIAorICAgIFRoaXMgcGF0Y2ggc2hvdWxkIGZpeCB0aGUgcmVncmVzc2lvbnMgaW50cm9kdWNlZCBieSBjb21taXQgODVkOTZjNCAoTWF5IDEzLCAyMDExKS4KKworY29tbWl0IDliNDI3YjM1M2YxY2ViOGZlODdlNmZjOGVkM2I2Y2ZhYjNjZTdmMjAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBPY3QgMjcgMDg6MjA6MDAgMjAxMSArMDIwMAorCisgICAgTWluR1c6IEF2b2lkIGNvbmZ1c2lvbiBiZXR3ZWVuIE1pbkdXJ3Mga2lsbC5leGUgYW5kIHRoZSBTeXNJbnRlcm5hbHMgcHNraWxsLmV4ZQorCitjb21taXQgMmM0NWY5MmNmY2I1YjA1ZTA0OTIyNmE1YTc4ODNhMGIxMDYwMTFhZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE9jdCAyNiAxMDo0MjoyOSAyMDExICswMjAwCisKKyAgICBGaXggY29tcGlsZXIgd2FybmluZ3MgYWJvdXQgcGFzc2luZyBhIGNvbnN0IHBvaW50ZXIgdG8gYSBmdW5jdGlvbiBhY2NlcHRpbmcgYSBub24tY29uc3QgcG9pbnRlci4KKworY29tbWl0IDI3NWQyM2VkZmRlYmUwNTc3YjA4NDIxZTRjNmM5MzZhZTM5YjdmZGMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBPY3QgMjYgMDk6MzM6MDkgMjAxMSArMDIwMAorCisgICAgRml4IGNvbXBpbGVyIHdhcm5pbmdzIGFib3V0IHNldC1idXQtbm90LXVzZWQgdmFyaWFibGVzCisKK2NvbW1pdCA0NDk1ZTE3YzA3OGFjNjk5N2E5YzdmYTFhODhkYjA2NDRlOTE5NDkxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgT2N0IDI2IDA5OjMyOjQ2IDIwMTEgKzAyMDAKKworICAgIEZpeCBjb21waWxlciB3YXJuaW5ncyBhYm91dCBjYXN0aW5nIGF3YXkgY29uc3QKKworY29tbWl0IDEzOTUyZjZiZWU5ZjQwODg2N2FiNmQyZmRmZGRlNGYyODQwNzQ5NTcKIEF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWFyIDQgMTU6MDk6MjYgMjAxMSArMDAwMAorRGF0ZTogICBXZWQgT2N0IDI2IDE0OjA1OjE2IDIwMTEgKzAyMDAKIAotICAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCAndHJ1bmNhdGluZyBpbnRlZ2VyIHZhbHVlID4gMzIgYml0cycgaW4gVUNELVNOTVAtTUlCOjpzeXN0ZW1TdGF0cyBvbiBMaW51eAorICAgIENIQU5HRVM6IHNubXBsaWI6IGZyb20gU2lkZGhlc2ggUG95YXJla2FyOiBwcm9wZXJseSBjbGVhbiB1cCBvbGQgcmVxdWVzdHMgaW4gYSBzdWJhZ2VudCB3aGVuIHdlIHJlY29ubmVjdCB0byBtYXN0ZXIuCiAgICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMDYxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIEFuIHNubXAgc3ViYWdlbnQgbGlua2VkIGFnYWluc3QgbmV0LXNubXAtbGlicyBtYXkgY3Jhc2ggaWYgaXQgaGFuZGxlcyBhCisgICAgcmVzcG9uc2Ugd2hpY2ggaGFzIG1hZ2ljIHJlZmVycmluZyB0byBhbiBvbGRlciBkaXNjb25uZWN0ZWQgbWFpbiBzZXNzaW9uLiBUaGlzCisgICAgbWF5IGhhcHBlbiB3aGVuIHRoZSBzdWJhZ2VudAorICAgIGF0dGVtcHRzIHRvIGNsZWFuIHVwIG9sZCByZXF1ZXN0cyBvbiByZWNvbm5lY3Rpb24gb2YgdGhlIGRpc2Nvbm5lY3RlZCBtYXN0ZXIKKyAgICBzZXNzaW9uLgogCi1jb21taXQgNDc2Y2NhODNhMjgzMzM1NzgwYTg0ZWMwYjg3MzQ0MWYxMTQ4NjNkYQorY29tbWl0IGFlMDUyNDcyYjIyNzIwZDA4MzY5ZTg1MTI3ZGIyMTQyNDVkZjJlM2YKIEF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWFyIDQgMTU6MDk6MjYgMjAxMSArMDAwMAorRGF0ZTogICBUdWUgT2N0IDI1IDE2OjE1OjE3IDIwMTEgKzAyMDAKIAotICAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCAndHJ1bmNhdGluZyBpbnRlZ2VyIHZhbHVlID4gMzIgYml0cycgaW4gVUNELVNOTVAtTUlCOjpzeXN0ZW1TdGF0cyBvbiBMaW51eAorICAgIENIQU5HRVM6IHBlcmw6IGZpeGVkIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIGhhbmRsZXIgcmVnaXN0cmF0aW9uIGZhaWxzLgogICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDA2MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBXaGVuIG5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlciBmYWlscywgaXQgZnJlZXMgaXRzIHJlZ2luZm8gLT4gbnNhaHJfREVTVFJPWSAoYW5kIGFueSBvdGhlciBmdW5jdGlvbikgbXVzdCBub3QgZGVyZWZlcmVuY2UgaXQuCiAKLWNvbW1pdCAxNWFmMGFkZjgxZjI1NTQ2M2I5MDg4NTliMzgzZjRhNTE1YmVjMzZkCitjb21taXQgYzE5OWJmOTFiNjIzOWYyNmIyYWFiMzRlODU3NWUwZjBkZjljZGU5YgogQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXIgNCAxNTowOToyNiAyMDExICswMDAwCitEYXRlOiAgIE1vbiBPY3QgMjQgMTQ6MjU6MjggMjAxMSArMDIwMAogCi0gICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkICd0cnVuY2F0aW5nIGludGVnZXIgdmFsdWUgPiAzMiBiaXRzJyBpbiBVQ0QtU05NUC1NSUI6OnN5c3RlbVN0YXRzIG9uIExpbnV4Ci0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMDYxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIENIQU5HRVM6IHNubXBkOiB4ZnMsIGpmcyBhbmQgdnhmcyBmaWxlc3lzdGVtcyBhcmUgbm93IHJlY29nbml6ZWQgaW4gaHJTdG9yYWdlVGFibGUKIAotY29tbWl0IDY1NzkxZWQ2MDM0YjQ0OTVkZmY2N2UwYmQ3NzVhMmM1NzdkMTNmNjcKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXIgMyAxMDo1NjoyMSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBXaW4zMjogRGVwcmVjYXRlZCBsaWJzbm1wLmRlZiAtIGFkZCBORVRTTk1QX0lNUE9SVCB0byBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaW5zdGVhZCB0byBleHBvcnQgYSBmdW5jdGlvbiBmcm9tIG5ldHNubXAuZGxsLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDA1NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDVhNGY5ZWFiNmJmMjExZjBhMDkxN2M1OTJjZGUyZTVlODRkMGM0ZGMKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXIgMyAxMDo1MDoyMyAyMDExICswMDAwCi0KLSAgICBNb3ZlZCBhIHNvdXJjZSBjb2RlIGNvbW1lbnQgc3VjaCB0aGF0IGl0IGlzIGFnYWluIGltbWVkaWF0ZWx5IGFib3ZlIHRoZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaXQgYXBwbGllcyB0by4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAwNTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlNjRmNTEwZmZiMTc5NjE5MTEyNjhhODQ1ZDY5YmJhN2FkYWRiZjg1Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWFyIDMgMTA6NDg6MzQgMjAxMSArMDAwMAotCi0gICAgQWRkZWQgbWlzc2luZyBORVRTTk1QX0lNUE9SVCBkZWNsYXJhdGlvbnMuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMDU0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNDYxZDJkMDkwMzhlMzIxYjU5ZDgzMTkwNWFjOWI3NjViYjRhM2M4ZQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1hciAzIDEwOjI0OjAxIDIwMTEgKzAwMDAKLQotICAgIFJlbW92ZWQgdHdvIG9ic29sZXRlIFdpbjMyIGZpbGVzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDA1MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDI4ODZkMDJjNzI3NjlmYTk2OWYwYTExN2RjNzJjYjVkNmI0MGIyZDUKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXIgMyAxMDowOToxNCAyMDExICswMDAwCi0KLSAgICBUcml2aWFsIGNvbW1lbnQgZml4OiBzbm1wSVB2NkJhc2VEb21haW4uYyBjb250YWlucyBJUHY2IGJhc2UgdHJhbnNwb3J0IHN1cHBvcnQgZnVuY3Rpb25zIGluc3RlYWQgb2YgSVB2NC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAwNTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyZjU0ZjViMzlkOTZhYTdiNDg0ZDBjOTk0NDM0YmQ5MjliMTcyNzYzCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBGZWIgMjUgMTI6NTU6MDQgMjAxMSArMDAwMAotCi0gICAgRml4IHRoZSBjb21tYW5kIHRvIGNyZWF0ZSBhIG5ldyBTVk4gdGFnIGxpbmUKLSAgICAKLSAgICAoSGF2aW5nIGJyb3VnaHQgdGhlIHN0cnVjdHVyZSBvZiB0aGUgNS41LnggYnJhbmNoCi0gICAgIGludG8gbGluZSB3aXRoIHRoZSBvdGhlciBicmFuY2hlcywgdGhlIHByZXZpb3VzCi0gICAgIGNvbW1hbmQgaXMgbm93IHdyb25nIGZvciAqYWxsKiBicmFuY2hlcywgcmF0aGVyCi0gICAgIHRoYW4ganVzdCBtb3N0IG9mIHRoZW0hKQotICAgIAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AxOTk5NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGE2OTFjMmY3NDUxZTQwMWY0ZmI4ZDc0YmZmOGJmMTE2OGYwYTZmZjEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEZlYiAyNSAxMjo1NTowNCAyMDExICswMDAwCi0KLSAgICBGaXggdGhlIGNvbW1hbmQgdG8gY3JlYXRlIGEgbmV3IFNWTiB0YWcgbGluZQotICAgIAotICAgIChIYXZpbmcgYnJvdWdodCB0aGUgc3RydWN0dXJlIG9mIHRoZSA1LjUueCBicmFuY2gKLSAgICAgaW50byBsaW5lIHdpdGggdGhlIG90aGVyIGJyYW5jaGVzLCB0aGUgcHJldmlvdXMKLSAgICAgY29tbWFuZCBpcyBub3cgd3JvbmcgZm9yICphbGwqIGJyYW5jaGVzLCByYXRoZXIKLSAgICAgdGhhbiBqdXN0IG1vc3Qgb2YgdGhlbSEpCi0gICAgCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTk3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzZjZTVhOGJlY2YzZWU1MjIxNmQxNjBmNWM3M2ExNzkzNWVhZjc5MQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgRmViIDI1IDEyOjU1OjA0IDIwMTEgKzAwMDAKLQotICAgIEZpeCB0aGUgY29tbWFuZCB0byBjcmVhdGUgYSBuZXcgU1ZOIHRhZyBsaW5lCi0gICAgCi0gICAgKEhhdmluZyBicm91Z2h0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIDUuNS54IGJyYW5jaAotICAgICBpbnRvIGxpbmUgd2l0aCB0aGUgb3RoZXIgYnJhbmNoZXMsIHRoZSBwcmV2aW91cwotICAgICBjb21tYW5kIGlzIG5vdyB3cm9uZyBmb3IgKmFsbCogYnJhbmNoZXMsIHJhdGhlcgotICAgICB0aGFuIGp1c3QgbW9zdCBvZiB0aGVtISkKLSAgICAKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5OTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiZWE5MDMzZDZhNTgzYTFkOWY4Mjc0YWY0Y2UxNTY1ZGZmZjBmMDkwCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBGZWIgMjUgMTE6NDk6MTcgMjAxMSArMDAwMAotCi0gICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMTk5OTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1MjI5YTA2NmYyMzRmNzBmNWIwODk0ZjBmMzYxN2I0ZjllZDFmY2MxCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBGZWIgMjUgMTE6NDE6MzEgMjAxMSArMDAwMAotCi0gICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDE5OTk0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYmUyYTkxODViNmY0YWRmYzRjODFkNTQyYWY3ZTNiNjU0ZjU1M2IxNgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgRmViIDI1IDExOjM5OjI0IDIwMTEgKzAwMDAKLQotICAgIHZlcnNpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDE5OTkzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMTVhNDU2ZTFkMmVkMTEyYTA3ODM4Y2FmN2YzNDU2NTIxYzE3ZmRmOQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgRmViIDI1IDExOjE1OjUyIDIwMTEgKzAwMDAKLQotICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AxOTk5MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDFjNGZlM2ExYjkxYjgzNzg2OWQ4MmUzZDgxNDNlNmJlNTY5YTA5NjYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEZlYiAyNSAxMToxMDowMCAyMDExICswMDAwCi0KLSAgICBBdm9pZCBhIHBvc3NpYmxlIGNyYXNoIGlmIHRoZSBlbmdpbmVJRCBpcyBub3QgYXZhaWxhYmxlIG9yIHNldC4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk5OTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBkMmZkNzdkODYyODAzZTNhZDUwZjIxMDY3NDMwYTcxZjFlY2U5ZDhkCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBGZWIgMjUgMTE6MTA6MDAgMjAxMSArMDAwMAotCi0gICAgQXZvaWQgYSBwb3NzaWJsZSBjcmFzaCBpZiB0aGUgZW5naW5lSUQgaXMgbm90IGF2YWlsYWJsZSBvciBzZXQuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTkxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNTc3MWMyMjVkYTk2YjQ5NmI4ZGIyZjQ3ODRlN2I4NWM0YmI1MjNjMQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgRmViIDI1IDExOjEwOjAwIDIwMTEgKzAwMDAKLQotICAgIEF2b2lkIGEgcG9zc2libGUgY3Jhc2ggaWYgdGhlIGVuZ2luZUlEIGlzIG5vdCBhdmFpbGFibGUgb3Igc2V0LgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk5MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDQxZTI2YWJkZTJiNWQ2ZjQwY2FmNjg0YTdhMzA5ZjdhNjExYzYzMWYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEZlYiAyNSAxMToxMDowMCAyMDExICswMDAwCi0KLSAgICBBdm9pZCBhIHBvc3NpYmxlIGNyYXNoIGlmIHRoZSBlbmdpbmVJRCBpcyBub3QgYXZhaWxhYmxlIG9yIHNldC4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMTk5OTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5ODg5MDgyZTMyNTJlMDJjYWY1Y2M0ZjNiYzFjNGI0ZDFjMTM0YzUyCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgRmViIDIzIDIxOjA0OjM0IDIwMTEgKzAwMDAKLQotICAgIEluY2x1ZGUgcmVxdWlyZWQgcHJvdG90eXBlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMzEzMDE2NjIyNmQwMDM2NGQ2MDdiYTllODc0M2FiYjdhYTQyZWNjMQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEZlYiAyMyAxNToyMzozNyAyMDExICswMDAwCi0KLSAgICB1bnNpZ25lZCBqdWdnbGluZyB0byByZW1vdmUgd2FybmluZ3MKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1YWFhNGIzZjY4OTNhZTQxMmU3NGQwY2FlZDI2ZjQ3M2RjMzhiNDM1Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgRmViIDIzIDE1OjIwOjExIDIwMTEgKzAwMDAKLQotICAgIEVuYWJsZSAocHJvYmFibHkgZm9yZ290dGVuKSBpcEFkZHJlc3NQcmVmaXhUYWJsZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDVkYWVjMTJkZTQ0MmEyMmZmMjk4MjM1ZTEyNTBiZTk5NjEwM2NkODkKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBGZWIgMjMgMDk6NTQ6MTYgMjAxMSArMDAwMAotCi0gICAgTG9hZGluZyBJUHY2IGRhdGEgaXMgYSBuby1ubyB3aGVuIElQdjYgbm90IGVuYWJsZWQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4YWI2Y2U5NWRiN2JjZGE0NDI5MWYwN2ViODNhMmJjM2I5MWQyNjJhCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgRmViIDIzIDA5OjM2OjIyIDIwMTEgKzAwMDAKLQotICAgIEZpeCBidWcgMzExODYzMTogc25tcHRhYmxlIHNlZ2ZhdWx0cyBpZiBpbmRleCBjb250YWlucyA6IGNoYXJhY3RlcgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTk3MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDk2NWE3N2I5MjNmMTQwOTdiOTFlZGI4OWJhMzZiYzBiNTY5MDc4YzkKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBGZWIgMjMgMDk6MzY6MjIgMjAxMSArMDAwMAotCi0gICAgRml4IGJ1ZyAzMTE4NjMxOiBzbm1wdGFibGUgc2VnZmF1bHRzIGlmIGluZGV4IGNvbnRhaW5zIDogY2hhcmFjdGVyCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTcxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzViNzQyZDkzNTU4NDNlODQxMDBjOTc3YTlhYmMxNTFlMmQ3OGFmZAotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEZlYiAyMyAwOTozNjoyMiAyMDExICswMDAwCi0KLSAgICBGaXggYnVnIDMxMTg2MzE6IHNubXB0YWJsZSBzZWdmYXVsdHMgaWYgaW5kZXggY29udGFpbnMgOiBjaGFyYWN0ZXIKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMTk5NzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3YTYxMjIzZjRjZjdhMzg5Yjg3ZmFjZTI0N2E3YTY1NzM0OTAwYzY2Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgRmViIDIzIDA5OjM2OjIyIDIwMTEgKzAwMDAKLQotICAgIEZpeCBidWcgMzExODYzMTogc25tcHRhYmxlIHNlZ2ZhdWx0cyBpZiBpbmRleCBjb250YWlucyA6IGNoYXJhY3RlcgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk3MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDZjY2I1NGU5NDU3Mjc5ZDhjMmIwYzAzMGFjZWQyMTVlNzAzNjAxMGUKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBGZWIgMjMgMDk6MzA6NTIgMjAxMSArMDAwMAotCi0gICAgRnJlZUJTRCA4IHN1cHBvcnQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5NzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmOWM3MGRkMTZiZWZlODcyOGVmMmFiM2YxMDNkZDgzZThjMzNlYWNlCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgRmViIDIzIDA5OjMwOjUyIDIwMTEgKzAwMDAKLQotICAgIEZyZWVCU0QgOCBzdXBwb3J0Ci0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDE5OTcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOTFiOTU4ODFlZGRjMjVhODg1YjBiNDcxMWI1MmIxMTI3ODk5MGU3YQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEZlYiAyMyAwOTozMDo1MiAyMDExICswMDAwCi0KLSAgICBGcmVlQlNEIDggc3VwcG9ydAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDU4M2U3YjE0NTRhMjdjYWM4OTkwN2Q0NDMyNWExNDMyZmQwYjlhODgKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiAyMiAxNToyNTozNSAyMDExICswMDAwCi0KLSAgICBSZXZlcnQgYSBib2d1cyBjaGFuZ2UgdGhhdCBjcmVwdCBpbnRvIHRoZSBjb2RlLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AxOTk2NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDAwZWY1NjllMDBkMTY0ZDllMTA3MGNkNzA1YzY1ZTRhNzM5MGExNjIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiAyMiAwODo1NTo0OCAyMDExICswMDAwCi0KLSAgICBGaXggNS41LnggYnJhbmNoIHN0cnVjdHVyZSAocGFydCAyKQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AxOTk2NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDcyN2EyZjIxYzNjYzc0ZDNjM2JlOGE0NzA3ZWYxZWM0OWFiNmJmN2MKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBGZWIgMjEgMjI6NDA6MDYgMjAxMSArMDAwMAotCi0gICAgcHJvcGVyIHByb2Nlc3Mgc3RhdHVzIHZhbHVlcyBmb3IgbmV0YnNkCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTYyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMGQ4MjBmY2Y5NWU0NDRkZDhhNTMxY2M2ZjgyY2M3YjhhNjk4NjZiOAotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEZlYiAyMSAyMjozOTowNSAyMDExICswMDAwCi0KLSAgICBjb25kaXRpb25hbGl6ZSB2YXJpYWJsZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk2MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGE0OWQwZDgwODJjMTkxMjczM2E4Nzc1YTczODE3YWRmNGFiM2ViZWYKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBGZWIgMjEgMjI6MjA6MDQgMjAxMSArMDAwMAotCi0gICAgdGNwLW1pYi91ZHAtbWliIHN1cHBvcnQgZm9yIHRoZSAqYnNkcwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk2MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDVmNzI5ZDQ4MDk3ODVhZTBjNzVkYjJhODMxZWE5NDQxNjIyY2Y3ZjcKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBGZWIgMjEgMjI6MTY6NTYgMjAxMSArMDAwMAotCi0gICAgdGNwLW1pYi91ZHAtbWliIHN1cHBvcnQgZm9yIHRoZSAqYnNkcwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk1OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDJiNGYwNzA2YzNjMTQzMzA2OWQ1NjZiY2I0ODg5MmY0NTFjYTYwZDgKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBGZWIgMjEgMjI6MDU6NTYgMjAxMSArMDAwMAotCi0gICAgUHJvcGVybHkgZW5kIGRlYnVnIG1lc3NhZ2Ugd2l0aCBuZXdsaW5lCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTU4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNTNiMzU5NjQ5NmIzZDc4NTgyOTgzMjBlZjNlODNlNGEyNmE3YWEzZQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEZlYiAyMSAyMjowNDoyNCAyMDExICswMDAwCi0KLSAgICByZW1vdmUgdmFyIHRoYXQgc2hhZG93cyB0aGUgdXNlZnVsIG9uZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk1NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDUwZDczZjBkNTZmZTIyYzU5MDUzMGIzZTMwNWQ0MWRjZGFjM2NlMDAKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBGZWIgMjEgMjI6MDI6MzAgMjAxMSArMDAwMAotCi0gICAgbWFqb3IgZmlkZGxpbmcgdG8gZ2V0IHRoaW5ncyB3b3JraW5nIGZvciBvcGVuYnNkIHRvby4gVGhpcyBzaG91bGQgcmVhbGx5IGJlIHJld29ya2VkIHRvIHVzZSB0aGUgdGNwLW1pYi91ZHAtbWliL2RhdGFfYWNjZXNzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTU2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMjc2MDdlMzFmNzQ1NGRiYzFkNzBhMTA2ZDA1MzFmNDM1NTlhMzFiYQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEZlYiAyMSAyMTo1OTo1MCAyMDExICswMDAwCi0KLSAgICBmaXggdGNwIHN0YXRlcyBmb3IgZHJhZ29uZmx5YnNkCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTU1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNjBkNTQ5NTY2YTkwNDk0MDQzNTM3ZDU4ZWM4NDdhZmM0ODdkNjZkMAotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEZlYiAyMSAyMTo1Nzo1OSAyMDExICswMDAwCi0KLSAgICBlbmFibGUgbmV3IHRjcC91ZHAgbWlicyBmb3Igc29sYXJpcwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk1NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDhhMjQwOGMxNmZhYjgzZDZiNDAxMGU0NzdjZjY2MGRjMThmYmIzM2IKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBGZWIgMjEgMTk6MDg6MDAgMjAxMSArMDAwMAotCi0gICAgVXBkYXRlZCBjb21tZW50IGFib3V0IHdoZXJlIG1ha2VyZWxlYXNlIGNvbWVzIGZyb20gKG5vdyBnaXRodWIpCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgM2FiYmNhYTA5MWRhNDFlNDBmODIwODFmNjFiMjRiYmYwY2ZkMjE4YgotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEZlYiAyMSAxOTowODowMCAyMDExICswMDAwCi0KLSAgICBVcGRhdGVkIGNvbW1lbnQgYWJvdXQgd2hlcmUgbWFrZXJlbGVhc2UgY29tZXMgZnJvbSAobm93IGdpdGh1YikKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxOWVhODg2MzFlNWZmZjdlMDQ4ZGUzOGVmZjM1MmE5ZjAwNGQ2MmU5Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gRmViIDIxIDExOjE0OjAxIDIwMTEgKzAwMDAKLQotICAgIEJhY2twb3J0ZWQgcjE5NDU0IGZyb20gdGhlIHRydW5rIGFuZCB0aGVyZWJ5IGZpeGVkIHRoaXMgVmFsZ3JpbmQgY29tcGxhaW50OgotICAgIAotICAgID09NjI4Nz09IEludmFsaWQgcmVhZCBvZiBzaXplIDgKLSAgICA9PTYyODc9PSAgICBhdCAweDRFNkNDQUU6IG5ldHNubXBfZGVsZXRlX3RhYmxlX2RhdGFfc2V0ICh0YWJsZV9kYXRhc2V0LmM6MTg2KQotICAgID09NjI4Nz09ICAgIGJ5IDB4NTEyMTk3NDogc2h1dGRvd25fbm90aWZpY2F0aW9uX2xvZyAobm90aWZpY2F0aW9uX2xvZy5jOjU2NCkKLSAgICA9PTYyODc9PSAgICBieSAweDUxOTQxREI6IF9zaHV0ZG93bl9taWJfbW9kdWxlcyAobWliX21vZHVsZV9zaHV0ZG93bi5oOjMyKQotICAgID09NjI4Nz09ICAgIGJ5IDB4NTRCMTRGNDogc25tcF9jYWxsX2NhbGxiYWNrcyAoY2FsbGJhY2suYzozNDQpCi0gICAgPT02Mjg3PT0gICAgYnkgMHg1NDhCNThCOiBzbm1wX3NodXRkb3duIChzbm1wX2FwaS5jOjg2MikKLSAgICA9PTYyODc9PSAgICBieSAweDQwNEMwNjogbWFpbiAoc25tcGQuYzoxMDYwKQotICAgID09NjI4Nz09ICBBZGRyZXNzIDB4Njg2ZjMxOCBpcyAyNCBieXRlcyBpbnNpZGUgYSBibG9jayBvZiBzaXplIDQwIGZyZWUnZAotICAgID09NjI4Nz09ICAgIGF0IDB4NEEwNjBFMDogZnJlZSAodmdfcmVwbGFjZV9tYWxsb2MuYzozNjYpCi0gICAgPT02Mjg3PT0gICAgYnkgMHg0RTZBQjE2OiBuZXRzbm1wX3RhYmxlX2RhdGFfZGVsZXRlX3RhYmxlICh0YWJsZV9kYXRhLmM6MzIwKQotICAgID09NjI4Nz09ICAgIGJ5IDB4NEU2Q0M4NDogbmV0c25tcF9kZWxldGVfdGFibGVfZGF0YV9zZXQgKHRhYmxlX2RhdGFzZXQuYzoxODApCi0gICAgPT02Mjg3PT0gICAgYnkgMHg1MTIxOTc0OiBzaHV0ZG93bl9ub3RpZmljYXRpb25fbG9nIChub3RpZmljYXRpb25fbG9nLmM6NTY0KQotICAgID09NjI4Nz09ICAgIGJ5IDB4NTE5NDFEQjogX3NodXRkb3duX21pYl9tb2R1bGVzIChtaWJfbW9kdWxlX3NodXRkb3duLmg6MzIpCi0gICAgPT02Mjg3PT0gICAgYnkgMHg1NEIxNEY0OiBzbm1wX2NhbGxfY2FsbGJhY2tzIChjYWxsYmFjay5jOjM0NCkKLSAgICA9PTYyODc9PSAgICBieSAweDU0OEI1OEI6IHNubXBfc2h1dGRvd24gKHNubXBfYXBpLmM6ODYyKQotICAgID09NjI4Nz09ICAgIGJ5IDB4NDA0QzA2OiBtYWluIChzbm1wZC5jOjEwNjApCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTQ0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYTk1MWMyMGE2ODY1OTIwOTQ5ZjQ1MDRjYjA3NjkwNmMyM2NhYjQ4NQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEZlYiAyMSAwNzoxMzozMyAyMDExICswMDAwCi0KLSAgICBGaXhlZCBhIE1pbkdXLXNwZWNpZmljIGNvbXBpbGVyIHdhcm5pbmcgKGJhY2twb3J0ZWQgcjE5OTIyIGZyb20gdHJ1bmspLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk0MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDcxYjYxNWUzOGE1YWYwYzA3YWI5ODk5NGQ5NDA1OGRlZDFlZjAwNmQKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBGZWIgMjAgMDk6MjQ6MjkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzE4NTUyODogc2h1dGRvd25fbWFzdGVyX2FnZW50IGRvZXNuJ3QgY2xvc2UgVURQIHNvY2tldAotICAgIChGaXhlcyBhIGJ1ZyBpbnRyb2R1Y2VkIGluIHIxOTUxMS4pCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTQyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOTJhNjkxOWU2YTk3NWQ2NjhjN2FmMTFmNzg4ZmJiMzU1MWNmMTg2YgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIEZlYiAyMCAwOToyNDoyOSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzMTg1NTI4OiBzaHV0ZG93bl9tYXN0ZXJfYWdlbnQgZG9lc24ndCBjbG9zZSBVRFAgc29ja2V0Ci0gICAgKEZpeGVzIGEgYnVnIGludHJvZHVjZWQgaW4gcjE5NTExLikKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzNjU0ZmNkMGFhOWQ0NjA5YmFmYzdlODc3OTU4ZjVlMjM0ZTFiMWM5Citjb21taXQgNzQ3ZmRjNzFlNjRkMDllMDgwOTI4ZWJiYjRkMDRjYmRlMzkwNjc5OQogQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBGZWIgMTcgMTE6Mjg6MjcgMjAxMSArMDAwMAorRGF0ZTogICBXZWQgT2N0IDUgMTU6NTc6NTkgMjAxMSArMDIwMAogCi0gICAgRml4ZWQgc25tcC1icmlkZ2UtbWliIGluIHN0YW5kYWxvbmUgKGFnZW50eCkgdmVyc2lvbi4KLSAgICBEb24ndCBkZWNsYXJlIGxvY2FsIHZhcmlhYmxlcyBpbnNpZGUgYmxvY2suIFBhdGNoIHByb3ZpZGVkIGJ5IEplbnMgT3N0ZXJrYW1wLgorICAgIENIQU5HRVM6IHNubXBkOiBMb3dlcmVkIHNldmVyaXR5IG9mICdlcnJvciBmaW5kaW5nIHJvdyBpbmRleCBpbiBfaWZYVGFibGVfY29udGFpbmVyX3Jvd19yZXN0b3JlJyBtZXNzYWdlLgogICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkzOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBUaGUgbWVzc2FnZSBpcyBzaG93cyB1cCB3aGVuIHNubXBkIGlzIHN0YXJ0ZWQgYW5kIHRoZXJlIGlzIGRpZmZlcmVudCBzZXQgb2YgbmV0d29yayBpbnRlcmZhY2VzIHRoYW4gaXQgd2FzIHdoZW4gc25tcGQgd2FzdCBsYXN0IHN0b3BwZWQuIFRoaXMgaXMgY29tbW9uIG9uIHBwcC1zZXJ2ZXJzIG9yIHZpcnR1YWwgaG9zdHMuCiAKLWNvbW1pdCBkYWNiZTYzYzE4YjYxZjdlN2RkNzM2ODFiNzhiZmJlYTNlMjIxYWY5Citjb21taXQgMjUwZjY5OGU1OWVhYjlmMWZmZDMzMmZmNTlmZGI3MmVhMGRmMDZmZgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE9jdCAyMyAwODo1MToyMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogTWFrZSB0aGUgdHJhbnNwb3J0IGNvbmZpZ3VyYXRpb24gY29kZSB3b3JrIGFnYWluCisgICAgCisgICAgUHJldmlvdXNseSB0aGUgdHJhbnNwb3J0IGluaGVyaXRhbmNlIHByb2Nlc3NpbmcgY29kZSByYW4gd2l0aAorICAgIE5FVFNOTVBfRkVBVFVSRV9DSEVDS0lORyBzZXQuIEluIHRoaXMgbW9kZSB0aGUgZmlsZSBuZXQtc25tcC9mZWF0dXJlLWRldGFpbHMuaAorICAgIGlzIHJlcXVpZXJlZC4gVGhhdCBmaWxlIGlzIGNyZWF0ZWQgZHVyaW5nIHRoZSBmaXJzdCBtYWtlIHJ1biwgYW5kIHRoYXQgaGFwcGVucworICAgIGFmdGVyIGNvbmZpZ3VyZSBpcyBydW4uCisgICAgQ2hhbmdlIHRoaXMgdG8gdW5kZWZpbmUgTkVUU05NUF9NSU5JTUFMX0NPREUsIGVmZmVjdGl2ZWx5IHR1cm5pbmcgb2ZmIGZlYXR1cmUKKyAgICBzdXBwb3J0IGR1cmluZyB0cmFuc3BvcnQgY29uZmlndXJhdGlvbiBpbiBvcmRlciB0byBtYWtlIGl0IHdvcmsgYXQgYWxsLgorCitjb21taXQgNmVmNjkwNzY0MjI0N2M2NjNiOWI4OTY0YjlmZDQ0YTIxMWRiY2FhNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE9jdCAyMCAyMDozMDo1NCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzNDA4Mzk4OiBGaXggYSBtZW1vcnkgbGVhayBpbiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzLgorICAgIAorICAgIFRoaXMgbWVtb3J5IGxlYWsgd2FzIGludHJvZHVjZWQgdmlhIGNvbW1pdAorICAgIDliZjNkOTZkOTZhOGVjZDRhNWZjMzVjMzI2ZGM5Mzc0NjcwMDJiNmM6IEluaXRpYWwgSEFMCisgICAgaW1wbGVtZW50YXRpb24gb2YgRmlsZVN5c3RlbSBpbmZvcm1hdGlvbiAoTWFyY2ggNywgMjAwOCkuCisKK2NvbW1pdCBjZjgyYjg5NGIyMjE3YzI2ZWRjNmYxMzU2MzUxYzkzMjQxNTYwNGUyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgT2N0IDE1IDE0OjQ1OjA4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMzQyMzkxNTogQ2hhbmdlIGRlZmF1bHQgbnVtYmVyIG9mIHJldHJpZXMgYmFjayBmcm9tIDAgdG8gNQorICAgIAorICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBidWcgaW50cm9kdWNlZCB2aWEgY29tbWl0IDZjYWMwNTAgKE1heSA1LCAyMDExLAorICAgIGFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgdGhlIGRlZmF1bHQgbnVtYmVyIG9mIHJldHJpZXMgaW4KKyAgICBzbm1wZC5jb25mKS4KKworY29tbWl0IGMxMWFkYWExMjkxNWFiZmVlNjI5YmI2YzAyNmMyMWYyMTg1YjIxNmUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBPY3QgMTcgMTA6MjQ6NDYgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogV2luMzI6IEF2b2lkIHRoYXQgY29tcGlsaW5nIHRoZSBoZWFkZXIgZmlsZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IHdpdGggdGhlIE1pbkdXIGdjYyBjb21waWxlciB0cmlnZ2VycyB3YXJuaW5ncyBhYm91dCAicHJhZ21hIGNvbW1lbnQiLgorCitjb21taXQgYjE3YTcyYTc5MzQ4M2FlZTRhNWJiMmYyZTJjN2Y0ZmQ4Njk4MTdlNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE9jdCAxNyAxMDoyMjoyMCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBXaW4zMjogQXZvaWQgdGhhdCB0aGUgUEFDS0FHRV8qIG1hY3JvcyBkZWZpbmVkIGluIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4gY2F1c2UgdHJvdWJsZSB3aGVuIGluY2x1ZGluZyB0aGlzIGhlYWRlciBpbiBhIHBhY2thZ2UgdGhhdCB1c2VzIHRoZSBHTlUgYXV0b3Rvb2xzLgorCitjb21taXQgNjY0ZDNhZTEwN2Q3NTQwNTFiOGM0MjI3OWQ0NTlhYTU3YTFiZTFjMworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE9jdCAxMCAxNjo0NzoxNiAyMDExICswMjAwCisKKyAgICBNaW5HVywgaHdfZnN5czogVXNlIHByb3BlciBmb3JtYXQgc3BlY2lmaWVycyBpbiBhIGRlYnVnIHN0YXRlbWVudC4KKyAgICAKKyAgICBUaGlzIHBhdGNoIGZpeGVzIGFuIGlzc3VlIGludHJvZHVjZWQgaW4gY29tbWl0IDc2ZmYyNWQuCisKK2NvbW1pdCAyMTFkY2I0OTMwNjU2MWUzNWJhM2MyMTNiZTdjZmEyNTdiNDBhOGU1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gT2N0IDEwIDE1OjUyOjQzIDIwMTEgKzAyMDAKKworICAgIEF2b2lkIHRoYXQgZ2NjIDQuNiBjb21wbGFpbnMgYWJvdXQgc2V0IGJ1dCBub3QgdXNlZCB2YXJpYWJsZXMKKworY29tbWl0IDlmNjUzZjczZTVhYTcwZjBiZWYxMTc0NjMyZTk1NTk0Zjg3ZjY2OWYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBPY3QgMTAgMTM6MDI6MjUgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcHRyYXBkX3NxbDogQXZvaWQgdGhhdCBhIGxpbmtlciBlcnJvciBpcyB0cmlnZ2VyZWQgb24gc3lzdGVtcyB3aGVyZSBteV9wcm9nbmFtZSBpcyBtaXNzaW5nIGluIGxpYm15c3FsY2xpZW50IChlLmcuIEZlZG9yYSAxNSBhbmQgMTYpLgorCitjb21taXQgNGM4M2I5MjI5YTc0NTRmMzRmNmZmNzVmNjllNjdlNDAzMGM0MTliNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIE9jdCA3IDE1OjU4OjQ1IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFNldCB0aGUgcnBhdGggZm9yIGxpYnBlcmwuc28gaW4gbGlibmV0c25tcG1pYnMuc28gc3VjaCB0aGF0IHRoZSBkeW5hbWljIGxpbmtlciBjYW4gZmluZCBsaWJwZXJsLnNvIHdpdGhvdXQgcmVxdWlyaW5nIHRoZSB1c2VyIHRvIG1vZGlmeSB0aGUgZHluYW1pYyBsaW5rZXIgc2V0dGluZ3MuCisgICAgCisgICAgVGhpcyBjaGFuZ2UgaW4gYWdlbnQvTWFrZWZpbGUuaW4gaXMgbmVjZXNzYXJ5IG9uIHRoZSA1LjUgYnJhbmNoIGFuZAorICAgIGxhdGVyIGJ1dCBub3Qgb24gdGhlIDUuNCBicmFuY2guIFRoYXQgaXMgYmVjYXVzZSB0aGUgNS40IGJyYW5jaCB1c2VzCisgICAgYW4gb2xkZXIgdmVyc2lvbiBvZiBsaWJ0b29sIHRoYXQgcHJvcGFnYXRlcyB0aGUgcnBhdGggb2YgZGVwZW5kZW50CisgICAgbGlicmFyaWVzLiBUaGlzIGlzIGNhbGxlZCBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY3kgdHJhY2tpbmcgaW4gdGhlCisgICAgbGlidG9vbCBtYW51YWwuIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBwcmVzZW50IGluIGxpYnRvb2wgdmVyc2lvbiAxCisgICAgYnV0IG5vdCBpbiBsaWJ0b29sIHZlcnNpb24gMi4gRm9yIG1vcmUgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBhYm91dAorICAgIGR5bmFtaWMgbGlicmFyaWVzIGFuZCBycGF0aHMsIHNlZSBhbHNvIHRoZSBkb2N1bWVudCB3aXRoIHRoZSB0aXRsZQorICAgICJScGF0aElzc3VlIiBvbiB0aGUgRGViaWFuIHdpa2kgKGh0dHA6Ly93aWtpLmRlYmlhbi5vcmcvUnBhdGhJc3N1ZSkuCisKK2NvbW1pdCA4OTI1YzkxMmQyNjM5NzUyYTg0YmNmZmVlZjFiNzBhODEwMjY0NDliCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgT2N0IDcgMTQ6MjE6MjggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYWdlbnQ6IEhPU1QtUkVTT1VSQ0VTLU1JQjogQWRkIG1pc3NpbmcgYnJhY2UgaW4gYSBkZWJ1ZyBzdGF0ZW1lbnQKKworY29tbWl0IDc2ZmYyNWQ5YmY5NzU3OWU3MjEzMTAyMDY1ZmQ1MDk2ZjA0OWE0YzUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBPY3QgNyAxNDoxMzoxOCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogSE9TVC1SRVNPVVJDRVMtTUlCOjpoclN0b3JhZ2VUYWJsZTogZml4IGJ1ZyBpbiBoYW5kbGluZyBsYXJnZSBmaWxlc3lzdGVtcywgd2hlcmUgbGFyZ2UgbWVhbnMgYWJvdmUgOCBUQiAoPSAyKiozMSAqIDQwOTYgYnl0ZXMpLgorICAgIAorICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBidWcgaW50cm9kdWNlZCBpbiBjb21taXQKKyAgICA3MWQ4MjkzZjM4N2E2Y2Q2NmJiMGRiYjEzYzBmNTAxNzRkMmU2NzhiLgorICAgIEZvciB0aGUgb3JpZ2luYWwgYnVnIHJlcG9ydCwgc2VlIGFsc28KKyAgICBodHRwczovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9mdW5jPWRldGFpbCZhdGlkPTExMjY5NCZhaWQ9MzQxOTgyNSZncm91cF9pZD0xMjY5NC4KKworY29tbWl0IDg2NjAzM2RiOTkwNGZmYjEyMDNmMjgzZjgzODA5MmU0Y2Y2OGRlNmIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFRodSBPY3QgNiAwNzozMzoyNyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUmVtb3ZlIHNwdXJpb3VzICNlbmRpZiB0aGF0IHNlZW1zIHRvIGJlIHRoZSByZXN1bHQgb2YgYSBtaXNtZXJnZS4KKworY29tbWl0IDIwZjRmMzI2N2VlMjBkNTU3MDViN2E0Mzc4OTg3OWMxMDNmOTY2MjAKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFRodSBPY3QgNiAwMDowODo1OSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogQWRkIG1pc3NpbmcgZW5kIGNvbW1lbnRzIHRvIGZlYXR1cmUgaWZuZGVmcy4KKworY29tbWl0IGU1ZGUyY2M1N2JmMzA0ZjMzMjBjYWQwMDM0ZDJlYTJkOGFlZGM0MzYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBPY3QgNSAwOToxNToxMCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBhZ2VudDogTG9nIGEgbW9yZSBkZXRhaWxlZCBlcnJvciBtZXNzYWdlIGlmIGVtYmVkZGVkIHBlcmwgaW5pdGlhbGl6YXRpb24gZmFpbHMKKworY29tbWl0IDVlZWY5OTkwZGUyOGY2MzExMWU2YzA5M2JlMGYzYzdhZTJkNTEzYTEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBPY3QgNSAwODo0NTo0OSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBwZXJsOiBBZGQgYWdlbnQ6OnVwdGltZSgpCisKK2NvbW1pdCA2ODEwZWQ0MmY5YmM1NjA3NTBkNmRiZmI3ZTUwYjZlMmFjMTE4OTljCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgU2VwIDMwIDExOjAxOjIzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IEN5d2luOiBhZ2VudDogSW1wbGVtZW50IGdldF91cHRpbWUoKSBzdWNoIHRoYXQgcXVlcnlpbmcgSE9TVC1SRVNPVVJDRVMtTUlCOjpoclN5c3RlbVVwdGltZSByZXR1cm5zIGEgbm9uLXplcm8gdmFsdWUuCisKK2NvbW1pdCA5NzE3MmIzMTFkMjBmNDQ0MWM3YTdlOTAwOTJiNTljMWUwZGE5OWY3CitBdXRob3I6IFRob21hcyBKYXJvc2NoIDx0amFyb3NjaEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBPY3QgNSAwODo0NjozOSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBQQVRDSDogMzQxODY0OTogSE9TVC1SRVNPVVJDRVMtTUlCOiBVc2UgcGNsb3NlKCkgaW5zdGVhZCBvZiBmY2xvc2UoKSB0byBjbG9zZSBhIHBpcGUuCisKK2NvbW1pdCA2NTkxOTM3YWRiODUwMDBjMjcwNjljNGJlODRjZjQ2ODg4MzhlYmNkCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gT2N0IDIgMTY6MTg6MDMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IEFkZCBkZXBlbmRlbmNpZXMgb24gQEZFQVRVUkVUQVJHU0AgdG8gbWFrZSB0aGUgc3VidGFyZ2V0IHdvcmsgYXMgd2VsbC4KKworY29tbWl0IGI5YzgwMTJlYzAzNWJjMDg0ZjE3NTg3NmZlY2MzNzUxOTVmOWJlODEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBPY3QgMiAxNDowMjo1OCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogQWRkIHRhcmdldCB0byBidWlsZCBhZ2VudHh0cmFwIGZyb20gdGhlIHRvcGxldmVsCisKK2NvbW1pdCA5OTU2NDdjMGNmZTAwNDEyMjYyY2M1Nzk3YmRmYWU5ZDAwYjcwYzc2CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gT2N0IDIgMTU6NDQ6MzYgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IFJlbW92ZSB0aGUgdXNlIG9mIC1MIGZsYWdzIGZvciBpbnRlcm5hbCBsaWJyYXJpZXMgYXMgaXQgY29uZnVzZXMgbGlidG9vbC4KKworY29tbWl0IDkzZGMxMjM1YTBkYjU4ZmZkMjk2MTdjZmYwMGRjMTEyNjM3ODAyMDIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBPY3QgMiAxMTozMTo0NiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogTWFrZSBtYWtlIGFwcHMgd29yayBhZ2FpbgorICAgIAorICAgIGFwcHMgaW5jbHVkZSBzbm1wdHJhcGQgYW5kIHRoYXQgcmVxdWlyZSB0aGUgYWdlbnQgbGlicmFyaWVzIGFzIHdlbGwuCisKK2NvbW1pdCBiYTQxNDg4ZWQ0NGNkMjNjMjU5NjNkNGZjNTZjNDc2ODUzYjJhYjU5CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gT2N0IDIgMTE6Mjk6MzMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IFdoZW4geW91IHNheSBtYWtlIGxpYnMgeW91IGV4cGVjdCBhbGwgdGhlIGxpYnMgdG8gYmUgYnVpbHQuCisgICAgCisgICAgVGhpcyBpcyBkZW1vbnN0cmF0ZWQgYnkgdGhlIHNubXB0cmFwZCB0YXJnZXQgYXQgdGhlIHRvcCBsZXZlbCB3aGljaCBvYnZpb3VzbHkKKyAgICBleHBlY3RlZCBib3RoIGxpYnMgdG8gYmUgYnVpbHQgYW5kIHNvIGZhaWxlZCB0byBjb21waWxlIGJlZm9yZSB0aGlzIHBhdGNoLgorCitjb21taXQgMzA1N2M3M2UwOTM0NzNiZTQ2MjU0YmNkZmI0Y2E3ODhlNDMyZDFiOAogQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBGZWIgMTYgMTQ6NTY6MzMgMjAxMSArMDAwMAorRGF0ZTogICBUdWUgU2VwIDMwIDA3OjMyOjUyIDIwMDggKzAwMDAKIAotICAgIEZpeGVkIHNubXAtYnJpZGdlLW1pYiB3aGVuIHdvcmtpbmcgaW4gdGhlIGVtYmVkZGVkIHBlcmwuCisgICAgTkVXUzogYnVpbGRpbmc6IFBBVENIOiAyMDkxMTU2OiBjb3JyZWN0bHkgZGVjbGFyZSBkZXBlbmRlbmNpZXMgaW4gTWFrZWZpbGUuCisgICAgJ21ha2UgLWogPE4+JyBzaG91bGQgd29yayBub3cuCiAgICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTM4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIEJhY2twb3J0IHRoaXMgdG8gVjUtNCBhcyBpdCBpcyBuZWVkZWQgZm9yIGNvcnJlY3Qgb3BlcmF0aW9uIGluIHRoZSBzaW5nbGUKKyAgICB0aHJlYWRlZCBjYXNlIG9mIG1ha2UgbWlibGliIGFzIHdlbGwuCiAKLWNvbW1pdCBjOGRhMzQxYTY0YmQxOTk1MjlhOWU1OWFjMzUyMzU0N2NjMmZlMWY2Ci1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEZlYiAxNiAxMzoxNjo1NyAyMDExICswMDAwCitjb21taXQgNmVhZTM0MGZhMmE2NDA4NjU5Mjk4MmNjNTI3MzViYzAxNDg3ZDk3OAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IE9jdCAxIDE5OjMzOjUwIDIwMTEgKzAyMDAKIAotICAgIEZpeGVkIEdFVE5FWFQgcHJvY2Vzc2luZyBpbiBzbm1wLWJyaWRnZS1taWIuCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IFNpbGVuY2UgbGliYnNkIDAuMy4wIG5hZ2dpbmcKICAgICAKKyAgICBJZiB5b3UgaGF2ZSBsaWJic2QgMC4zLjAgaW5zdGFsbGVkIHRoZW4gdGhlaXIgdmVyc2lvbiBvZiBubGlzdC5oIHdhcm5zIGFuZAorICAgIHRyaWVzIHRvIG1ha2UgeW91IGluY2x1ZGUgYnNkL25saXN0LmggaW5zdGVhZC4gVGhlIHByb2JsZW0gaXMgdGhhdCB3ZSBkb24ndAorICAgIG5lZWQgdGhhdCBjb21wYXRpYmlsaXR5IGxpYnJhcnkgYXMgd2Uga25vdyBob3cgdG8gZG8gaXQgb3Vyc2VsZiBzbyBpdCBiZWNvbWVzCisgICAgcHVyZSBuYWdnaW5nLiBUaGlzIHBhdGNoIGFkZHMgYSBkZWZpbmUgdGhhdCBjaGFuZ2VzIHRoZSB3YXJuaW5nIGludG8gYW4KKyAgICBlcnJvciBhbmQgdGhlbiBmaWd1cmVzIG91dCB0aGF0IHRoZXJlIGlzIG5vIHVzYWJsZSBubGlzdC5oIGFuZCBpZ25vcmVzIGl0CisgICAgZm9yIHRoZSBmdXR1cmUuCisKK2NvbW1pdCBhYzM4Y2I1MzFiZWU1MGVkYzhkNGM4MzRmMzAwNWY1OTkyYzc3MWQ4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgU2VwIDI5IDE5OjAzOjAyIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHBlcmw6IEVuYWJsZSBzZW5kaW5nIFNOTVB2MiB0cmFwcyB3aXRoIGFuIGVtcHR5IHZhcmJpbmQgbGlzdAorCitjb21taXQgYTc1ZGUyOTcxNTI3YWMyZDJlODEyMDI0Mjk4NjAyYmIyNDEyZjMzNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIFNlcCAzMCAxMDo0MTo0NCAyMDExICswMjAwCisKKyAgICBwZXJsL1NOTVAvU05NUC54czogVXBkYXRlIGVtYWNzIG1vZGVsaW5lCisKK2NvbW1pdCA4NDhmNjMwMGVmZTM4NDkyZmI0NTQ0NTFhMDMwZjBiN2U2ZmY4YzlkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgU2VwIDMwIDEwOjQxOjQ0IDIwMTEgKzAyMDAKKworICAgIHBlcmwvU05NUC9TTk1QLnhzOiBVcGRhdGUgZW1hY3MgbW9kZWxpbmUKKworY29tbWl0IGMxMzc0NDczZWNkOGVjOWUwMzEwMDEzODYxZWUxOGM4M2U1ZDZjNWIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIEZyaSBTZXAgMzAgMDM6Mjk6MzYgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogUHJvdGVjdCB0aGUgdXNlIG9mICRPU1RZUEUgdG8gZW5zdXJlIHRoYXQgJ3Rlc3QnIGdldCBlbm91Z2ggcGFyYW1ldGVycy4KKworY29tbWl0IDdlOTdhMjA2MzNhNTdlYWUzOWQwMTViMjMzMzk0NjNjMzJmNWY4NDgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBTZXAgMjkgMTA6MjI6MDggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogQ29udmVydCBzbm1wbGliL3Rlc3RfYmluYXJ5X2FycmF5LmMgaW50byB0d28gdW5pdCB0ZXN0cworCitjb21taXQgOWMwZGQ5ODE3NjQ1NzM0MmZmZmFhNWU3NGQ4MDJlMzE0NWVkNzBlNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IFNlcCAyOSAwODo1NjoxNyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBBZGQgdW5pdCB0ZXN0IGZvciBuZXRzbm1wX3JlZ2lzdGVyX29sZF9hcGkoKQorCitjb21taXQgNWZkMjZlNGZhM2UwMDBlYTljODFjMzhhYjk3NWI3OTQ2ZWZlMjE1NworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIFNlcCAyOCAxNzo0OTo1NSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBhZ2VudDogQXZvaWQgdGhhdCBuZXRzbm1wX3JlZ2lzdGVyX29sZF9hcGkoKSBmYWlsdXJlIHRyaWdnZXJzIGEgZG91YmxlIGZyZWUuCiAgICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTM3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIEZpeGVzIGEgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIHZpYSBjb21taXQKKyAgICBhYTRkNDdjMjYwOWU1MjgxOGM5Y2RmMWE4ZTIyMDVkZTlhMzM1YTBhIChzdm4gcjE5NTE1KS4KIAotY29tbWl0IGJjYzY4ZjczNzhjMjllZmNmODFkYWEwYzI5OTZjNGVkZTgwZTU1YmMKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgMTUgMjI6MjQ6MDYgMjAxMSArMDAwMAorY29tbWl0IGQyMjUyZDAxNjY5MzgwNzMyNmY3MmI2NjEyMzY0OWRlYTAwYWY5MTYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBTZXAgMjkgMTA6MjA6MDggMjAxMSArMDIwMAogCi0gICAgUHJvcGVybHkgc2F2ZSBlbnRyaWVzIGZvciBOZXRCU0QgYW5kIERyYWdvbkZseQorICAgIENIQU5HRVM6IHRlc3Rpbmc6IFJlcXVpcmUgYSBzZW1pY29sb24gYWZ0ZXIgT0soKSwgT0tGKCkgYW5kIFBMQU4oKQogICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTkzNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBBbHNvLCBsZXQgT0tGKCkgZW1pdCBhIHNpbmdsZSBsaW5lIG9mIG91dHB1dCBzdWNoIHRoYXQgYWxsIG91dHB1dCBpdAorICAgIHByb2R1Y2VzIGlzIHZpc2libGUgaW4gdGhlIG91dHB1dCBvZiAibWFrZSB0ZXN0Ii4KIAotY29tbWl0IDEwMDUwYzk0MjA5YjBhOWRmZTQ1YWI3MTBjOTI4YjY1NmQ5MDZhM2EKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgMTUgMjI6MjQ6MDYgMjAxMSArMDAwMAorY29tbWl0IDE0MjE5MjRiNDg1MjE0MjE5MmM1YmI5ZTkzZGRiZmVkNjllOTA4ZmEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBTZXAgMjEgMjI6MjA6MDggMjAxMSArMDIwMAogCi0gICAgUHJvcGVybHkgc2F2ZSBlbnRyaWVzIGZvciBOZXRCU0QgYW5kIERyYWdvbkZseQorICAgIENIQU5HRVM6IHNubXBsaWI6IEF2b2lkIHdhaXRpbmcgaW5kZWZpbml0ZWx5IGlmIGEgc2Vzc2lvbiBoYXMgdGltZW91dCB6ZXJvCisKK2NvbW1pdCA1ZjI3ZjRmNzRhZTJiZDViYWY1MDNjZjMwNmI0ZjlhMjg0MWE1N2NmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDYgMTA6MzI6MDMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogTWluR1c6IHRlc3Rpbmc6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSB0ZXN0IHJ1bm5lcgorCitjb21taXQgMDk3MDM5NThjYzVlYTg0NTkyOWFlMTllZjllMDgwNGFlY2FhNTEyZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCAyNyAxMjo0Mjo0MSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBBdm9pZCBmYWxzZSBuZWdhdGl2ZSBmb3IgVDExNGFnZW50eGFnZW50eHRyYXBfc2ltcGxlIGNhdXNlZCBieSB0aGUgdGVzdCByZXN1bHQgYmVpbmcgcHJlc2VudCBpbiB0aGUgaGV4IGR1bXAgKCJtb3N0bHlfaGFybWxlc3MiKQorCitjb21taXQgNDM5MzAwMjc5ZjZmMzE0Mzg2MzhkMmYyMjJjMjRjM2M4NDFmYTZhYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCAyNyAxMToxNjozMiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogTWljcm8tb3B0aW1pemUgYWdlbnQgbW9kdWxlIGRlcGVuZGVuY3kgYW5hbHlzaXMKICAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgVGhpcyBtYWtlcyB0aGUgYWdlbnQgbW9kdWxlIGRlcGVuZGVuY3kgYW5hbHlzaXMgY2FycmllZCBvdXQgYnkgdGhlCisgICAgY29uZmlndXJlIHNjcmlwdCBzbGlnaHRseSBmYXN0ZXIsIGVzcGVjaWFsbHkgb24gdGhvc2Ugc3lzdGVtcyB3aGVyZQorICAgIGZvcmsoKSBpcyBleHBlbnNpdmUgKEN5Z3dpbikuCiAKLWNvbW1pdCA1NDAyMjQ4Y2Q0NmRjYzIyZThlNWQzMGFmNzc3MGFiOGZhMDFkZmRiCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDE1IDIyOjE4OjQzIDIwMTEgKzAwMDAKK2NvbW1pdCBiYmM2ODAwMDRhMTM3NjAzOGRmZGM0MTcyZGJlN2I5ZTMxMWZiYTY4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gU2VwIDI2IDEwOjE0OjQ1IDIwMTEgKzAyMDAKIAotICAgIHJlbW92ZSByZWR1bmRhbnQgaW5jbHVkZXMKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5MzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgQ0hBTkdFUzogTWluR1c6IHRlc3Rpbmc6IE1ha2UgdGVzdCBUMTMwc25tcHYxdmFjbWdldF9zaW1wbGUgcGFzcwogCi1jb21taXQgZGY2NDljY2FmODQzZWQ3NmNiZDhmOTY1NjRmNTcxNzZhOGE2MWJhOAotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiAxNSAyMjoxODo0MyAyMDExICswMDAwCitjb21taXQgNzBiMDZjZjc4OTIwOGVhYTg5MGJmYmNkNjM4YmRiNzc1ZjgxNzA1NAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCAyMCAwOTo1MDo1NyAyMDExICswMDAwCiAKLSAgICByZW1vdmUgcmVkdW5kYW50IGluY2x1ZGVzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTM1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIENIQU5HRVM6IFdpbmRvd3M6IHRlc3Rpbmc6IHBlcmw6IEZpeCBhbiBpbmNvcnJlY3QgbWVzc2FnZSBwcmludGVkIHdoaWxlIHJ1bm5pbmcgdGhlIFBlcmwgbW9kdWxlIHJlZ3Jlc3Npb24gdGVzdHMKIAotY29tbWl0IGI1NjU1Y2MxMDcyMWU5ZGRjMjNkOGVhMGE1NDAwN2IxYWIwNjgwZTEKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgMTUgMjE6NDg6MDUgMjAxMSArMDAwMAorY29tbWl0IDcwYmNjOGRlMmQwZmM5MmJiYjg0ODE4MjM2MzBmYWI5YmM4N2FmNzUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBTZXAgMTYgMTY6MTQ6MjQgMjAxMSArMDIwMAogCi0gICAgcmVydW4gYXV0b2hlYWRlci9hdXRvY29uZgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTkzNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBDSEFOR0VTOiBNaW5HVzogdGVzdGluZzogT2J0YWluIHRoZSBNU1lTIHBhdGggZnJvbSB0aGUgZW52aXJvbm1lbnQKIAotY29tbWl0IGNlOGU4NzQ1ODc3NWMyODA5ZWQ4ZjkyMGNlODA0MjFhZDZmMTRjYmEKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgMTUgMjE6NDg6MDUgMjAxMSArMDAwMAorY29tbWl0IDYyNjI3NWUyZDFhY2FmYWU3MTQ0YTMzZWQzMDFhNDBmNTk2YjM3YjAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBTZXAgMTQgMTM6MTQ6MTcgMjAxMSArMDIwMAogCi0gICAgcmVydW4gYXV0b2hlYWRlci9hdXRvY29uZgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkzNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBSZW1vdmUgc3VwZXJmbHVvdXMgbGluayBsaWJyYXJpZXMgZnJvbSBwcm9qZWN0IGZpbGVzICgqLmRzcCkKIAotY29tbWl0IDljZmJkOGIxNDRkNjU5NWU5ODhmMzNjYTQ4NDM4MmM3MDgyYmI2ZWQKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgMTUgMjE6MjY6MzAgMjAxMSArMDAwMAorY29tbWl0IDM4ZmMzY2FhOWVlYjM4MDAyNTRiNGY2YWQ2ZjhmNDc2NGMwZjgzZGIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgMjAgMDk6MzQ6MDggMjAxMSArMDIwMAogCi0gICAgVG9vIG11Y2ggcXVvdGluZyBpcyBiYWQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgQ0hBTkdFUzogc25tcGxpYjogTWFrZSBuZXRzbm1wX2NhbGxiYWNrX2FjY2VwdCgpIHJldHVybiAtMSAoZmFpbHVyZSkgaW5zdGVhZCBvZiAwIChTVERJTl9GSUxFTk8pCiAKLWNvbW1pdCA4OGRjMTQ0YmM2YmEyYWIyMzc3ZjlkNzE4MmExYzJjMDMzNzU0NTllCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDE1IDIxOjExOjM3IDIwMTEgKzAwMDAKK2NvbW1pdCA2YzhjN2U4YWNhOGZjMmVlYjUyMDEwYWUzZTlmZWU2ZGQ4M2VmNzgwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDEzIDA5OjU4OjI2IDIwMTEgKzAyMDAKIAotICAgIEZpeCBJUHY2IFRDUCBhbmQgVURQIHRhYmxlcywgKkJTRCBzdXBwb3J0Ci0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTMwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIENIQU5HRVM6IHNubXBsaWI6IFJlbW92ZSBvYnNvbGV0ZSBzbm1wX2dldF9mZF9mb3Jfc2Vzc2lvbigpIGRlY2xhcmF0aW9uCiAKLWNvbW1pdCA1Y2QxNTczNjI1NDcxYzA1ODNlOTA4N2FlYzY4MDJiNzcxNTdkNWEyCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDE1IDIxOjExOjM3IDIwMTEgKzAwMDAKK2NvbW1pdCAwODYwZDExZmQ4ZmM1ZGJkYWFhZTIyNjFmYWUyYzA3ZmI5YzJjODJkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgU2VwIDggMTM6NTQ6NTUgMjAxMSArMDIwMAogCi0gICAgRml4IElQdjYgVENQIGFuZCBVRFAgdGFibGVzLCAqQlNEIHN1cHBvcnQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgQ0hBTkdFUzogV2luZG93czogTVNWQzogQXZvaWQgdGhhdCB0aGUgdHlwZWRlZnMgaW4gPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPiBjb25mbGljdCB3aXRoIHRob3NlIGluIDxzdGRpbnQuaD4gZnJvbSB0aGUgbXNpbnR0eXBlcyBwcm9qZWN0CiAKLWNvbW1pdCBiMDA1OTVjN2I4NzI4Nzg2Y2Q4NDNmMjY4Nzc3OWIxMWYwZTYxOTZiCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDE1IDIwOjQ1OjM0IDIwMTEgKzAwMDAKK2NvbW1pdCBmOGEwMzZmNjNmZjY4ZjA4MzQzNjEyMGUwYWJkNDc4YjY5MmEyZjYxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgU2VwIDggMTM6MjE6MDYgMjAxMSArMDIwMAogCi0gICAgS2lsbCBjb21waWxlciB3YXJuaW5ncwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTkyOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBNU1ZDOiBXaGVuIGxpbmtpbmcgd2l0aCBPcGVuU1NMLCBsaW5rIHdpdGggdXNlcjMyLmxpYiB0b28KIAotY29tbWl0IGI3NmE1NGY3ZWU2NjQ0YTk2MzZkOThkOTYwZmVmZWNhYmI3NGJjMjkKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgMTUgMjA6NDU6MzQgMjAxMSArMDAwMAorY29tbWl0IDgzNmEyM2UxMGNhODEwYzM4OTk5MDJkMzI1ODc2MTZhOWQxMjAzZGYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKdWwgMTQgMTg6Mzg6MTMgMjAxMSArMDIwMAogCi0gICAgS2lsbCBjb21waWxlciB3YXJuaW5ncwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkyOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBNU1ZDOiBMaW5rIHdpdGggcHJvcGVyIGxpYmVheTMyIGxpYnJhcnkKIAotY29tbWl0IDY1NTU4OTM1ZTliMjcxODc1NzM2NmU4YjNiMTBhOTE0MTJiOTZhZTgKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgMTUgMjA6NDQ6MjIgMjAxMSArMDAwMAorY29tbWl0IDdiMDdmZDZjZGVmNDllYzdiYjA0YjE2NmUyYTRmYmIzN2I1ODI4NDAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgNiAxMToxMDozOCAyMDExICswMjAwCiAKLSAgICBGaWx0ZXIgSVB2NiBlbnRyaWVzIGZyb20gSVB2NCB0YWJsZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTkyOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBSZW1vdmUgYW4gaW5jb3JyZWN0IGNvbW1lbnQgZnJvbSBzaW1wbGVfZXZhbF90b29scy5zaAogCi1jb21taXQgZTg4ZjkyMjJjOTllYmRiMTFlOTRhZWYzOTRjODRkNmNmNjdiYzc1MQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiAxNSAyMDo0NDoyMiAyMDExICswMDAwCitjb21taXQgOThmNmQyOWQ5ODFmZjhlNjA3NjAwYzYzZGFkYjI0MDUzNTYyOTgwNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCA2IDEwOjQ5OjAzIDIwMTEgKzAyMDAKIAotICAgIEZpbHRlciBJUHY2IGVudHJpZXMgZnJvbSBJUHY0IHRhYmxlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTI4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIENIQU5HRVM6IHRlc3Rpbmc6IE1ha2UgSVNERUZJTkVEKCkgY2hlY2sgZm9yIGFuIGV4YWN0IG1hdGNoIGluc3RlYWQgb2YgYSBwcmVmaXggbWF0Y2gKIAotY29tbWl0IDhmZGMyMWZhYTFmNDE4NTFkZjdlMDBkMGUwNWI1ODgzY2MzMjE4MmUKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgMTUgMjA6NDI6NDcgMjAxMSArMDAwMAorY29tbWl0IDUyY2QwMDMxYTMxZjY5MmYxMzI2M2E5NGMzMzVkMDZiZTE0NTQ4MDMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgNiAxMDoxMjo1OSAyMDExICswMjAwCiAKLSAgICBQcm9wZXIgdXNlIG9mIGdldHByb2MyIGFuZCBkcmFnb25mbHkgc3VwcG9ydAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkyNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBDSEFOR0VTOiBNaW5HVzogdGVzdGluZzogTWFrZSB0aG9zZSByZWdyZXNzaW9uIHRlc3RzIHBhc3MgZm9yIHdoaWNoIFNOTVBDT05GUEFUSCBhbmQvb3IgU05NUF9QRVJTSVNURU5UX0RJUiBtYXR0ZXIKIAotY29tbWl0IGVkZDVkZTZjN2MwMDRkMTE2NGFlMmM1MWQ5YjdmMWIzYjdjNTMwNjcKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgMTUgMjA6NDE6MDkgMjAxMSArMDAwMAorY29tbWl0IGY1Y2Q4OWJkMzM1NmRkNzRlMTU1NmMwYjUwOTY2YTY0M2YxOTIwODUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgNiAxMDoxMjo1OSAyMDExICswMjAwCiAKLSAgICBnZXR2ZnNzdGF0IGlzIG9ubHkgZm9yIE5ldEJTRAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkyNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBDSEFOR0VTOiBNaW5HVzogdGVzdGluZzogRml4IGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRlc3QgZnJhbWV3b3JrCiAKLWNvbW1pdCBkMDJlNWRhZjIzOGYwOGI1MDcwNDMxOWVkNDQ0MDYwNTg5ZGNlYmEyCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDE1IDIwOjM5OjUzIDIwMTEgKzAwMDAKK2NvbW1pdCBkZWVkZDUyYzgzNGE2NDQ4ODUyYTA2Nzg1NTM2ZTEzODY1OTY5Njk0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDYgMTA6MTI6NTggMjAxMSArMDIwMAogCi0gICAgRGV0ZWN0IG5lZWQgZm9yIC1sa3ZtIGluIHByb3BlciB0aW1lCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTI1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIENIQU5HRVM6IE1pbkdXOiBTdXBwb3J0IHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIG9mIHJlY2VudCBTaGluaW5nIExpZ2h0IE9wZW5TU0wgYmluYXJ5IGRpc3RyaWJ1dGlvbnMKIAotY29tbWl0IDRkZTg0ODg0MDQxZTIzYWM4YzFiNmRmYzMzMTUzYTZmY2NhNGU2ZDEKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBGZWIgMTQgMTQ6Mzg6MDAgMjAxMSArMDAwMAotCi0gICAgRml4ZWQgYSBNaW5HVy1zcGVjaWZpYyBjb21waWxlciB3YXJuaW5nLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTkyMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGY3MWUxNmQzOGRkYzk5MDJiZTYxM2QzNzQ5OGVhYWQ1MjU3NTdjZGMKLUF1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gRmViIDEzIDE2OjI4OjE2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IE1ha2UgaXQgcG9zc2libGUgdG8gYnVpbGQgc3RhdGljIGFwcGxpY2F0aW9ucyB1c2luZyBuZXQtc25tcC1jb25maWcgYW5kIHRoZSAtKmxpYnMgZmxhZ3Mgb25jZSBtb3JlLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkyMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDFjNGRlYTI1YjBlNTFmNTQyNTE3ZDUyY2Q3YmFkOTQxZjhkMDFlZDcKLUF1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gRmViIDEzIDE2OjI4OjE2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IE1ha2UgaXQgcG9zc2libGUgdG8gYnVpbGQgc3RhdGljIGFwcGxpY2F0aW9ucyB1c2luZyBuZXQtc25tcC1jb25maWcgYW5kIHRoZSAtKmxpYnMgZmxhZ3Mgb25jZSBtb3JlLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTkyMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDEzZmRmNmM0OTZiYTk0OTA4NzAyYWMxOGZjMDVmOTc2MmYwZmYzMTMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEZlYiAxMCAxNToxMzo1OSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSEVTOiAzMTY1ODc4OiBDYXRjaCBidWZmZXIgb3ZlcnJ1biBvbiA2NC1iaXQgc3lzdGVtcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTkyMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGU1ZDMzZjkzMDQ3ZjczNzYxMTAyYjY0MmRmZWFhOTNlYmIyODRjZjEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEZlYiAxMCAxNToxMzo1OSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSEVTOiAzMTY1ODc4OiBDYXRjaCBidWZmZXIgb3ZlcnJ1biBvbiA2NC1iaXQgc3lzdGVtcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkyMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGYzMDI2MzE2YzY4MzJiMDViZDM2NDkyOGU0YmM1Zjk1YTcxMjUyYjEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEZlYiAxMCAxNToxMzo1OSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSEVTOiAzMTY1ODc4OiBDYXRjaCBidWZmZXIgb3ZlcnJ1biBvbiA2NC1iaXQgc3lzdGVtcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTkyMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGVkNWY3YzM3Zjg5OTY0YzFmN2RkMTZlNjIyY2Q2M2M2M2JkMzM1NzQKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEZlYiAxMCAxNTowNjo0NiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzE1MjQxMjogSGFuZGxlIChhbmQgcmVwb3J0KSBwcm9ibGVtcyByZWFkaW5nIC9wcm9jL3Ztc3RhdAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTkxOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGQxMjhkZGQ0YWU1OTE5YjliZjgyZTI0NGE1NzI5NDExNWNmZDE4NTkKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEZlYiAxMCAxNTowNjo0NiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzE1MjQxMjogSGFuZGxlIChhbmQgcmVwb3J0KSBwcm9ibGVtcyByZWFkaW5nIC9wcm9jL3Ztc3RhdAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkxOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDAyNzEzMzQyNjU0ZWZjNDA5OWY2YTY1MzgwMTg0NmIzMDBiYmZhODQKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEZlYiAxMCAxNTowNjo0NiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzE1MjQxMjogSGFuZGxlIChhbmQgcmVwb3J0KSBwcm9ibGVtcyByZWFkaW5nIC9wcm9jL3Ztc3RhdAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTkxOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDdjZThlMjI1Nzg3ZTRkMDcwOTJhNjM0YjgwM2ZiYTYzNTU3ODc2MGYKK2NvbW1pdCBkNTViZDRlMDU0OWYwM2I2ZmQzMjU2MmMyYWE3ZmUzOTI3MmE5ZWY3CiBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDggMTc6NDE6MzcgMjAxMSArMDAwMAorRGF0ZTogICBXZWQgU2VwIDI4IDA2OjU1OjE5IDIwMTEgLTA3MDAKIAotICAgIENIQU5HRVM6IHBlcmw6IHBhdGNoIGZyb20gTWFydGluIEJ1Y2s6IGRvbid0IGFsd2F5cyBvcGVuIHN0ZGVyciBhcyB0aGUgY2FsbHMgdG8gc25tcF9sb2cgYWxyZWFkeSBkbyB0aGlzIGFuZCBpdCBtZXNzZXMgdXAgdGhlIGFnZW50IHdoZW4gZW1iZWRkZWQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk5MTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgcmVtb3ZlIHRoZSB2NS43IGZyb20gdGhlIGZyb3plbiBsaXN0CiAKLWNvbW1pdCAxMThjZDQyYmRhMWQ2MGE4MWYwZTQ0OTU2MzExMGZhOGMzODg5ZTJjCitjb21taXQgYWMyYWVkM2M5NGJiMmViYjQ3M2FmMGExZTIwZjA1NjFhZDYyOTk1NgogQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiA4IDE3OjQxOjM3IDIwMTEgKzAwMDAKK0RhdGU6ICAgV2VkIFNlcCAyOCAwNjo1NToxMSAyMDExIC0wNzAwCiAKLSAgICBDSEFOR0VTOiBwZXJsOiBwYXRjaCBmcm9tIE1hcnRpbiBCdWNrOiBkb24ndCBhbHdheXMgb3BlbiBzdGRlcnIgYXMgdGhlIGNhbGxzIHRvIHNubXBfbG9nIGFscmVhZHkgZG8gdGhpcyBhbmQgaXQgbWVzc2VzIHVwIHRoZSBhZ2VudCB3aGVuIGVtYmVkZGVkCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTE2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIHJlbW92ZSB0aGUgdjUuNyBmcm9tIHRoZSBmcm96ZW4gbGlzdAogCi1jb21taXQgOThhMjNmMGM4ZjFkMDUyMjE4ZDI5NmFkMWZlZDU2OTJiYjBjNTQ3OAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiA4IDE3OjQxOjM3IDIwMTEgKzAwMDAKK2NvbW1pdCA0NmVhYzAyZTlhMjdiZjRmMzA2OGU3OTVjYWI4OTFmMDVhODQ4ODcwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gU2VwIDI2IDIxOjQ5OjI3IDIwMTEgKzAyMDAKIAotICAgIENIQU5HRVM6IHBlcmw6IHBhdGNoIGZyb20gTWFydGluIEJ1Y2s6IGRvbid0IGFsd2F5cyBvcGVuIHN0ZGVyciBhcyB0aGUgY2FsbHMgdG8gc25tcF9sb2cgYWxyZWFkeSBkbyB0aGlzIGFuZCBpdCBtZXNzZXMgdXAgdGhlIGFnZW50IHdoZW4gZW1iZWRkZWQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5MTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiNDNlYWIzMjAzMWQ3YTU4ZmFkNDg4ODNhYmE2NDhiMDAwMzM4ZGU1Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDggMTc6Mzc6MDEgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IEZpeCBhIHN0cmxlbiBjYWxjdWxhdGlvbiBhcyBwb2ludGVkIG91dCBieSBLb25zdGFudGluIEJheWRhcm92Ci0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5OTE1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgM2NkMjQyMjIzOTc3MjFjYTU1MjAzYjQxNDU4ZGY5YmMzYmI1YjYzMwotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiA4IDE3OjM3OjAxIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBGaXggYSBzdHJsZW4gY2FsY3VsYXRpb24gYXMgcG9pbnRlZCBvdXQgYnkgS29uc3RhbnRpbiBCYXlkYXJvdgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkxNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGZmMzlmYTc3NWY4ZjZmMDQwN2JjNGM3ZmNmOGMxZGU4MzAxOTYwODAKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgOCAxNzozNzowMSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogRml4IGEgc3RybGVuIGNhbGN1bGF0aW9uIGFzIHBvaW50ZWQgb3V0IGJ5IEtvbnN0YW50aW4gQmF5ZGFyb3YKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5MTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmMGQ2YmYwM2Q1ZmU2ZGJmY2U0NDMwZjBhZjIwNDBmMDBjZTE0ZTQ1Ci1BdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgRmViIDMgMjI6NDI6MjkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzMTcxODc4OiBVc2luZyBTTk1QdjMgY29udGV4dCBkb2VzIG5vdCB3b3JrCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMi1wYXRjaGVzQDE5OTEwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMWNmOWM0NTZiM2NhNDMxN2QxZDdkMjIwYWRlY2NkODRkMDUzNWRkYgotQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEZlYiAzIDIyOjQyOjI5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMzE3MTg3ODogVXNpbmcgU05NUHYzIGNvbnRleHQgZG9lcyBub3Qgd29yawotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTkxMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDllZDdiYTQyZmMyMjk3NzIyOWE2ZTQzMWIzMDkwMzFlZjhmOGNjYTQKLUF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBGZWIgMyAyMjo0MjoyOSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDMxNzE4Nzg6IFVzaW5nIFNOTVB2MyBjb250ZXh0IGRvZXMgbm90IHdvcmsKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5YzA3ZDQ4NTYyMTQ1ODA3ZjcyMTgwYTdiMjEzY2M1OTlkOGE2YmU1Ci1BdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgRmViIDMgMjI6NDI6MjkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzMTcxODc4OiBVc2luZyBTTk1QdjMgY29udGV4dCBkb2VzIG5vdCB3b3JrCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTEwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNjljNDA3NTUzMGM2NTdhMjhmYTQ1MjgzZTk2NGEzYzFhMTJmOTgwZQotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgMSAxMzowNzo1NSAyMDExICswMDAwCi0KLSAgICBEb24ndCBjaGVjayBmb3IgMzIvNjRiaXQgd3JhcCBpbiBjYWxjdWxhdGVkIGVudHJpZXMuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTA4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMGE0MjAwM2ViMThmYzA1MTEwNDhkMGFjMjZlNWRlNDIwYjRlMWRjNAotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgMSAwOTo0MToyOCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgdGhlIGFnZW50IHdyaXRpbmcgJ2xvb2tzIGxpa2UgYSA2NGJpdCB3cmFwLCBidXQgcHJldiE9bmV3JyBpbiBzeXNsb2cgd2hlbiBjb21wdXRpbmcgaXBTeXN0ZW1TdGF0cwotICAgIAotICAgIFdpdGhvdXQgdGhlIG1lbWNweSwgcHJldl92YWxzLT5zdGF0cyBhbmQgbmV3X3ZhbHMtPnN0YXRzIGNvdWxkIGdldCBkaWZmZXJlbnQsCi0gICAgd2hpY2ggY291bGQgbXVjaCBtdWNoIGxhdGVyICh3aGVuIGEgY291bnRlciBnZXRzIGJpZ2dlciB0aGFuIDMyIGJpdHMpIHJlc3VsdAotICAgIGluICdwcmV2IT1uZXcnIG1lc3NhZ2UgaW4gc3lzbG9nLiBUeXBpY2FsbHkgdGhpcyBoYXBwZW5zIGFmdGVyIGxvbmcgdGltZSBvZgotICAgIHVwdGltZSBhbmQgaXQgaXMgdmVyeSBoYXJkIHRvIHJlcHJvZHVjZS4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk5MDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmZmZjMzAwMmEwZjc1ODBjYjQ0MWRmNzYwYmQzZGQ0YjU0OTAxNWU0Ci1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiAxIDA5OjQxOjI4IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCB0aGUgYWdlbnQgd3JpdGluZyAnbG9va3MgbGlrZSBhIDY0Yml0IHdyYXAsIGJ1dCBwcmV2IT1uZXcnIGluIHN5c2xvZyB3aGVuIGNvbXB1dGluZyBpcFN5c3RlbVN0YXRzCi0gICAgCi0gICAgV2l0aG91dCB0aGUgbWVtY3B5LCBwcmV2X3ZhbHMtPnN0YXRzIGFuZCBuZXdfdmFscy0+c3RhdHMgY291bGQgZ2V0IGRpZmZlcmVudCwKLSAgICB3aGljaCBjb3VsZCBtdWNoIG11Y2ggbGF0ZXIgKHdoZW4gYSBjb3VudGVyIGdldHMgYmlnZ2VyIHRoYW4gMzIgYml0cykgcmVzdWx0Ci0gICAgaW4gJ3ByZXYhPW5ldycgbWVzc2FnZSBpbiBzeXNsb2cuIFR5cGljYWxseSB0aGlzIGhhcHBlbnMgYWZ0ZXIgbG9uZyB0aW1lIG9mCi0gICAgdXB0aW1lIGFuZCBpdCBpcyB2ZXJ5IGhhcmQgdG8gcmVwcm9kdWNlLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTkwNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDBjOTlhZjI0MDQxNmJjZDZkNWM1MTU5NmMzMTBkNTdiMGFmZjRjNWMKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDEgMDk6NDE6MjggMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkIHRoZSBhZ2VudCB3cml0aW5nICdsb29rcyBsaWtlIGEgNjRiaXQgd3JhcCwgYnV0IHByZXYhPW5ldycgaW4gc3lzbG9nIHdoZW4gY29tcHV0aW5nIGlwU3lzdGVtU3RhdHMKLSAgICAKLSAgICBXaXRob3V0IHRoZSBtZW1jcHksIHByZXZfdmFscy0+c3RhdHMgYW5kIG5ld192YWxzLT5zdGF0cyBjb3VsZCBnZXQgZGlmZmVyZW50LAotICAgIHdoaWNoIGNvdWxkIG11Y2ggbXVjaCBsYXRlciAod2hlbiBhIGNvdW50ZXIgZ2V0cyBiaWdnZXIgdGhhbiAzMiBiaXRzKSByZXN1bHQKLSAgICBpbiAncHJldiE9bmV3JyBtZXNzYWdlIGluIHN5c2xvZy4gVHlwaWNhbGx5IHRoaXMgaGFwcGVucyBhZnRlciBsb25nIHRpbWUgb2YKLSAgICB1cHRpbWUgYW5kIGl0IGlzIHZlcnkgaGFyZCB0byByZXByb2R1Y2UuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTA3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgM2IxZDMwYzczOTEwNTVkNTM2NzU5N2QwZDdkY2U3MWFhMmEyODRjZAotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEphbiAzMSAyMjozOTozOCAyMDExICswMDAwCi0KLSAgICBhZGRwcm90b3R5cGVzIGFuZCByZW1vdmUgdW51c2VkIHZhcnMKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5MDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhNjA4MTI4MjlmMmM5MzY5OGYwYzQyYTc5MDQ5YTU1MTMzYTA1OWE1Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSmFuIDMxIDIyOjM5OjM4IDIwMTEgKzAwMDAKLQotICAgIGFkZHByb3RvdHlwZXMgYW5kIHJlbW92ZSB1bnVzZWQgdmFycwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkwNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDkwMTY2NDYyMGM0OTg4ZTVlOWY0YmU2ZjFmZGI5MzRkYTliMjM4NTIKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKYW4gMzEgMjI6Mzc6NTggMjAxMSArMDAwMAotCi0gICAgY29uc3QganVnZ2xpbmcgdG8gcmVtb3ZlIHdhcm5pbmdzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTA0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOWUzMjQ2MzRiZTdiMGRjMDA4NjM0OWViNmMwZjc1NDI4ODNlYjE1ZAotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEphbiAzMSAyMjozNzo1OCAyMDExICswMDAwCi0KLSAgICBjb25zdCBqdWdnbGluZyB0byByZW1vdmUgd2FybmluZ3MKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjMjNhYTRkOTBkOTJmNWM0OTg2YThkY2EwYjE4MjUyM2RjNTg1OTBiCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSmFuIDMxIDIyOjMwOjU0IDIwMTEgKzAwMDAKLQotICAgIGRpc2tpbyBmb3IgZHJhZ29uZmx5Ci0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTAzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMjg1MTNmMTJhNzJhOWEwZGU0YTk1NDUwNDc5YWM1NGE2ODFhZDhhOQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEphbiAzMSAyMjozMDo1NCAyMDExICswMDAwCi0KLSAgICBkaXNraW8gZm9yIGRyYWdvbmZseQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkwMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDBkNGY4ZDYxMTliMmViNmZkZjU2OTA5MGMyYTM0ZmM5NjQyNGMwZjcKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKYW4gMzEgMjI6Mjg6MzAgMjAxMSArMDAwMAotCi0gICAgcHJvcGVybHkgbmFtZSBpbml0YWxpemVyIGZ1bmN0aW9uIGZvciBjcHVfa2luZm8KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5MDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1OTQzYzU5NDQxMzkzZWJkY2Q5YjFjYjZiODMyYTQyODAyNGY5MTQ1Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSmFuIDMxIDIyOjI4OjMwIDIwMTEgKzAwMDAKLQotICAgIHByb3Blcmx5IG5hbWUgaW5pdGFsaXplciBmdW5jdGlvbiBmb3IgY3B1X2tpbmZvCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTAyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZTY5NjliOTkzYjIwOTUxY2NkODIzMmViZDUxMDFjNjY5NGU5ODg3ZgotQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIEphbiAzMCAwMTowNjoyMSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzMTUxODk3OiBmZCBsZWFrIHcvIC9wcm9jL3BhcnRpdGlvbnMKLSAgICByZWFkIGluIGRpc2tpbwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTItcGF0Y2hlc0AxOTg5OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDU1ZWVhMzcyNDFhNTk5ODk4Y2U2MWYzNjRhNmEwN2Q4NTYyMDJmYWQKLUF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBKYW4gMzAgMDE6MDY6MjEgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzE1MTg5NzogZmQgbGVhayB3LyAvcHJvYy9wYXJ0aXRpb25zCi0gICAgcmVhZCBpbiBkaXNraW8KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4OTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3ZjJjN2ZmYTAyMGVhNTdmODU0YTI3MTI5YTY4M2VjY2EzYmQ2OWM2Ci1BdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gSmFuIDMwIDAxOjA2OjIxIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDMxNTE4OTc6IGZkIGxlYWsgdy8gL3Byb2MvcGFydGl0aW9ucwotICAgIHJlYWQgaW4gZGlza2lvCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODk5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOTA1MTMwMzQwOTM0MWY4YjE1MWFjZDMzZDUzY2E3NjNjNGU4NWQwZQotQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIEphbiAzMCAwMTowNjoyMSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzMTUxODk3OiBmZCBsZWFrIHcvIC9wcm9jL3BhcnRpdGlvbnMKLSAgICByZWFkIGluIGRpc2tpbwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg5OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGU2M2RhNzliMWI2MmI3YjA2MWMwNWM0ZTdhMmFkODM4NmI0NzY2MWQKLUF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBKYW4gMjkgMjM6MzY6MjkgMjAxMSArMDAwMAotCi0gICAgTkVXUzogc25tcGQ6IEJVRzogMzE2NjU2ODogaHJTeXN0ZW1Qcm9jZXNzZXMgbWlzc2luZyBpbiA1LjYvNS42LjEKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4OTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3OTFkNDIwZTQ4NzRkMDNhY2MyNTM3NGY3OWViMmFhMTlkYjcyYTljCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gMjcgMDk6MzU6MjQgMjAxMSArMDAwMAotCi0gICAgQWZ0ZXIgdGVuIHllYXJzIGludGVuc2l2ZSB1c2UsIGFuICJleHBlcmltZW50YWwiCi0gICAgZmVhdHVyZSBjYW4gcHJvYmFibHkgYmUgcmVsZWFzZWQgZm9yIGdlbmVyYWwgdXNlLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTg5NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGNlZTI1NDI2YjRjY2M1OWJkM2Q1OTJhNzMxODJjYWY3NjAzMDE0ZDgKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiAyNyAwOTozNToyNCAyMDExICswMDAwCi0KLSAgICBBZnRlciB0ZW4geWVhcnMgaW50ZW5zaXZlIHVzZSwgYW4gImV4cGVyaW1lbnRhbCIKLSAgICBmZWF0dXJlIGNhbiBwcm9iYWJseSBiZSByZWxlYXNlZCBmb3IgZ2VuZXJhbCB1c2UuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODk3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMDg5NThmNjlhYzZhODQ1MGM3MTMzYzA1MmM0N2M5MGJhMzVlZTllYgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDI3IDA5OjM1OjI0IDIwMTEgKzAwMDAKLQotICAgIEFmdGVyIHRlbiB5ZWFycyBpbnRlbnNpdmUgdXNlLCBhbiAiZXhwZXJpbWVudGFsIgotICAgIGZlYXR1cmUgY2FuIHByb2JhYmx5IGJlIHJlbGVhc2VkIGZvciBnZW5lcmFsIHVzZS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4OTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4YTA2ZjlkNGQ5YjA4OTBhNWY5M2FmMDBjZjhhZTRhNDVkYTgzY2ZjCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDI2IDE2OjUwOjUyIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IG1pYjJjOiBtYWtlIHRoZSBtaWIyYyBmb3JlYWNoIHJhbmdlcyB3b3JrIGFzIGFkdmVydGlzZWQgaW4gdGhlIGNvbW1lbnRzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTg5NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDBjZjFiYTZjYTVkNWFkMzI3OGNhYTg4NzliYzQ2ZDI1ZWQxZDU1NTQKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gMjYgMTY6NTA6NTIgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogbWliMmM6IG1ha2UgdGhlIG1pYjJjIGZvcmVhY2ggcmFuZ2VzIHdvcmsgYXMgYWR2ZXJ0aXNlZCBpbiB0aGUgY29tbWVudHMuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODk2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgM2JiZGU1ZjNjZjhkZmY5OWJkODA2ZjFmY2RhYTM4NGVjZWIxODg1NwotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiAyNiAxNjo1MDo1MiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBtaWIyYzogbWFrZSB0aGUgbWliMmMgZm9yZWFjaCByYW5nZXMgd29yayBhcyBhZHZlcnRpc2VkIGluIHRoZSBjb21tZW50cy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4OTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzZTk3MmRlOTc0MjdiNjY0ODUyMjU4YWVjZWNhMmE0ZDk1Y2MzMGI3Ci1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiAyNiAwOToxMjoyMCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgcmFyZSByYWNlIGNvbmRpdGlvbiB3aGVuIGNvdW50aW5nIHByb2Nlc3NlcyBmb3IgVUNELVNOTVAtTUlCOjpwclRhYmxlCi0gICAgCi0gICAgVGhlIFhYIHByb2Nlc3MgY2FuIGV4aXQgYWZ0ZXIgZm9wZW4oL3Byb2MvWFgvc3RhdHVzKSBhbmQgYmVmb3JlIGZnZXRzKCkgZnJvbSBpdC4gc25tcGQgc2hvdWxkIGNvbnRpbnVlIHdpdGggb3RoZXIgcHJvY2Vzc2VzIGFuZCBub3QgdG8gc3RvcC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4OTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiY2VlMDM3YzcxZjAwNmUyYmUzYjQ0NmUzZTgxYzUwOWQ0OWM2NWNkCi1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiAyNiAwOToxMjoyMCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgcmFyZSByYWNlIGNvbmRpdGlvbiB3aGVuIGNvdW50aW5nIHByb2Nlc3NlcyBmb3IgVUNELVNOTVAtTUlCOjpwclRhYmxlCi0gICAgCi0gICAgVGhlIFhYIHByb2Nlc3MgY2FuIGV4aXQgYWZ0ZXIgZm9wZW4oL3Byb2MvWFgvc3RhdHVzKSBhbmQgYmVmb3JlIGZnZXRzKCkgZnJvbSBpdC4gc25tcGQgc2hvdWxkIGNvbnRpbnVlIHdpdGggb3RoZXIgcHJvY2Vzc2VzIGFuZCBub3QgdG8gc3RvcC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4OTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyZTVmNTY0MGRiOTk5NzgzYjgzOTgxMTZmODQ2MmE1YjBhMzI0N2U0Ci1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiAxOSAxMzo1Nzo0NyAyMDExICswMDAwCi0KLSAgICBNYWtlIHVzIGNvbXBhdGlibGUgd2l0aCBycG0tNC45LCBycG1HZXRGaWxlc3lzdGVtTGlzdCBkb2VzIG5vdCBleGlzdCBhbnltb3JlLCBzbyB0aGUgY29uZmlndXJlIHNjcmlwdCBzaG91bGQgbm90IGNoZWNrIGl0LgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg5MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDg0MjRlZmQ5N2UwMDJkNTM0YzgxZDRiYzY4NzMyOWQ3MjNhOWUxOGIKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gMTkgMDY6MzE6MDEgMjAxMSArMDAwMAotCi0gICAgZGlza0lPTEF4IHJlcXVpcmVzIGV4cCB3aGljaCBtYXkgcmVxdWlyZSAtbG0KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4OTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzMjMzNDAzODk3MGM1YWY2YTFjMTk4MTUyMDRkMWNkNDg0MDUyNDkzCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDE5IDA2OjIwOjQ1IDIwMTEgKzAwMDAKLQotICAgIERlZmluZSBEUkFHT05GTFlJRAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg5MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDZhMGMzNTJlOTFjZmNlOTVkNGQ0Y2JiZTU1NTg5NWMyNjZkYTc0NTYKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gMTkgMDY6MjA6NDUgMjAxMSArMDAwMAotCi0gICAgRGVmaW5lIERSQUdPTkZMWUlECi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODkwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNWI3MDJiMDI0YjYwMTc2ZDdmNTY5OWI5MmU1NWRhNTBhOGRlYWU3MQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxOCAyMjowMToyNCAyMDExICswMDAwCi0KLSAgICB0eXBvCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODg1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYmNiNTk3MjY4NzQ1MDBiYTM3MDRmMGI0ODdhMDM5MDgzNTgyMmNhOQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxOCAyMTo1NDoyNCAyMDExICswMDAwCi0KLSAgICBGaW5kIHByb3BlciBpZi1taWIgaW50ZXJmYWNlIGZvciBOZXRCU0QKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4ODMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5N2NlMzg1ODY5OGIzYmYwZTEzMzg5OTQwYTU4YzdhM2RmMGZmMjY4Ci1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiAxNCAxMjoyODo0MCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogZnJvbSBSb2JlcnQgU3Rvcnk6IGZpeGVkIGFkZGluZyBuZXcgYWRkcmVzc2VzIHRvIGlwQWRkcmVzc1RhYmxlCi0gICAgCi0gICAgTG9uZyB0aW1lIGFnbywgdGhlcmUgd2FzIGEgYnVncmVwb3J0WzFdIHJlZ2FyZGluZyBpcEFkZHJlc3NUYWJsZSBvbgotICAgIG5ldC1zbm1wLWNvZGVycyBsaXN0IGFuZCByc3RvcnkncyBleHBlcmltZW50YWwgcGF0Y2ggd2l0aG91dCBhbnkgZmVlZGJhY2suCi0gICAgTm93IEkndmUgZ290IGZldyBjb21wbGFpbnRzIHRoYXQgU05NUCBTRVQgb24gaXBBZGRyZXNzVGFibGUgcHJvZHVjZXMgdGhlCi0gICAgc2FtZSBlcnJvcnMgYW5kIGd1ZXNzIHdoYXQsIHRoZSBwYXRjaCBmaXhlcyB0aGVtLgotICAgIAotICAgIFsxXTogaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9tYWlsYXJjaGl2ZS9mb3J1bS5waHA/dGhyZWFkX25hbWU9MjAwNjA5MjAxMzQ5MzUuMzViMzZlZDYlNDBkZXYuZnV0ei5vcmcmZm9ydW1fbmFtZT1uZXQtc25tcC1jb2RlcnMKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4ODEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmMWJkZGVjMmMyNzZjYmFkYzI3NjFjNDM4ZDZlOWMwZGVjZjExZWJmCi1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiAxNCAxMjoyODo0MCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogZnJvbSBSb2JlcnQgU3Rvcnk6IGZpeGVkIGFkZGluZyBuZXcgYWRkcmVzc2VzIHRvIGlwQWRkcmVzc1RhYmxlCi0gICAgCi0gICAgTG9uZyB0aW1lIGFnbywgdGhlcmUgd2FzIGEgYnVncmVwb3J0WzFdIHJlZ2FyZGluZyBpcEFkZHJlc3NUYWJsZSBvbgotICAgIG5ldC1zbm1wLWNvZGVycyBsaXN0IGFuZCByc3RvcnkncyBleHBlcmltZW50YWwgcGF0Y2ggd2l0aG91dCBhbnkgZmVlZGJhY2suCi0gICAgTm93IEkndmUgZ290IGZldyBjb21wbGFpbnRzIHRoYXQgU05NUCBTRVQgb24gaXBBZGRyZXNzVGFibGUgcHJvZHVjZXMgdGhlCi0gICAgc2FtZSBlcnJvcnMgYW5kIGd1ZXNzIHdoYXQsIHRoZSBwYXRjaCBmaXhlcyB0aGVtLgotICAgIAotICAgIFsxXTogaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9tYWlsYXJjaGl2ZS9mb3J1bS5waHA/dGhyZWFkX25hbWU9MjAwNjA5MjAxMzQ5MzUuMzViMzZlZDYlNDBkZXYuZnV0ei5vcmcmZm9ydW1fbmFtZT1uZXQtc25tcC1jb2RlcnMKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4ODEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2NWY0ZmVkMzEzNzE0YzQyY2FjY2I2N2E1ZjY3MWRiNjJlZTQ2ZWZkCi1BdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiAxNCAwNjoyNTo1OSAyMDExICswMDAwCi0KLSAgICByZW1vdmUgY29tcGxldGVseSB1c2VsZXNzIGFuZCBub25zZW5zaWNhbCBjb2RlCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODc4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYTcwOTY2YTJmOGIzNjQ5ZWExYzcxN2I1ZTg4MzVlZTg1NTEwYmY2ZQotQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gMTQgMDY6MjU6NTkgMjAxMSArMDAwMAotCi0gICAgcmVtb3ZlIGNvbXBsZXRlbHkgdXNlbGVzcyBhbmQgbm9uc2Vuc2ljYWwgY29kZQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDY0YWFkOGU5MWNiNGUwYzFmNjJjMTJkZTk2ZTFhNjQ4NjYwYTU2YzUKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiAxMyAxNTo1NjozNyAyMDExICswMDAwCi0KLSAgICBFbnN1cmUgcmVsZWFzZXMgYXJlIGluc3RhbGxlZCB0byB0aGUgY29ycmVjdCBwYXRoIHdpdGhpbiB0aGUgL3RhZ3MgU1ZOIHRyZWUKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4NzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlNzU0NThmZTVlODRiYTI5MjA5YzQ3N2JiZjc0MjNjOTIwMzNkNWFlCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gMTMgMTU6NTY6MzcgMjAxMSArMDAwMAotCi0gICAgRW5zdXJlIHJlbGVhc2VzIGFyZSBpbnN0YWxsZWQgdG8gdGhlIGNvcnJlY3QgcGF0aCB3aXRoaW4gdGhlIC90YWdzIFNWTiB0cmVlCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZTRkOTZkY2VjMDkzMzgyMDczM2ZhNTg5Y2VlNjI4NzVlZGY2Y2RlMwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDEzIDE1OjE1OjU3IDIwMTEgKzAwMDAKLQotICAgIFJlbW92ZSBDKysgY29tbWVudHMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4NjggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA0ZWM4YjQzMWI1OGM1Y2RlZDE2Nzk0YTRiZTkyZjg4Mzc2OTM5MWE4Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gMTMgMTU6MTU6NTcgMjAxMSArMDAwMAotCi0gICAgUmVtb3ZlIEMrKyBjb21tZW50cwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg2OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDNiYzQ4MmE5MTA0YmE2OWRjYjJiZjFmNmY1NzM3NDI5NzczNzZjNzAKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiAxMyAxMzoxNzo0MSAyMDExICswMDAwCi0KLSAgICBGaXggYnJva2VuIHBhdGNoCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODY0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgY2E3YWU1YzNmMjkwMTQwNjZkNTU2NjJmNTllMzM4MjVkMWY3M2U0NwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDEzIDEyOjE0OjE5IDIwMTEgKzAwMDAKLQotICAgIENvbmZpZ3VyZSBmaXhlcyBmb3IgRHJhZ29uRmx5IHN1cHBvcnQKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4NjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhNGRkMWI0ZGFmYjg5NzAwNDFjMWYzOGNmMjZkYTJhMDA2ZTRkZGUzCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gMTMgMTI6MTQ6MTkgMjAxMSArMDAwMAotCi0gICAgQ29uZmlndXJlIGZpeGVzIGZvciBEcmFnb25GbHkgc3VwcG9ydAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg2MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGE1MTQxMTgwNDc5NTBhNmRhM2U4MmNjNWQwN2Q0NTMwY2ZlZjgyODYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiAxMyAxMjowNDo1MyAyMDExICswMDAwCi0KLSAgICBDb2RlIGZpeGVzIGZvciBEcmFnb25GbHkgc3VwcG9ydAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg2MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDk4NmIyZGVkYTU3OTJhMjQ0ZmZkYTVlMDA3NDEyYmI1ZTQzYTY3M2YKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiAxMyAxMjowNDo1MyAyMDExICswMDAwCi0KLSAgICBDb2RlIGZpeGVzIGZvciBEcmFnb25GbHkgc3VwcG9ydAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg2MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDE5Zjk3MDY5OWFhMDY2MzkzNzg4NjFiNmQ2YTVlMjdmNGMzZmM5NjcKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiAxMyAxMTozMzoxNCAyMDExICswMDAwCi0KLSAgICBGaXggdHlwbwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg2MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDM2ZTVkNmRiOWI5YmNmMzFhZDc1NGQyMDdhYjhhNTg5YjEyNTllNDAKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiAxMyAxMTozMzoxNCAyMDExICswMDAwCi0KLSAgICBGaXggdHlwbwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg2MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGFiYWYwMjU0MTExYWFjMDg1M2QzZWM0MzQ3YjBmZmM4NDNkYWVjMjIKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gMTIgMTk6MjA6MjMgMjAxMSArMDAwMAotCi0gICAgR2V0IHJpZCBvZiBhIGNvbXBpbGVyIHdhcm5pbmcgaW4gYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhQYXJhbWV0ZXJzL3VzbURIUGFyYW1ldGVycy5jLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTg1NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGJlODA0YzdiZTg0NzY5MmNiODA4YzE5ZWZjMDYwM2JiNTY2MGZkNWIKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gMTIgMTk6MjA6MjMgMjAxMSArMDAwMAotCi0gICAgR2V0IHJpZCBvZiBhIGNvbXBpbGVyIHdhcm5pbmcgaW4gYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhQYXJhbWV0ZXJzL3VzbURIUGFyYW1ldGVycy5jLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg1NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDRkYzZhYTY4NmRjN2Y2YmIzNmMwNTQ1MzJlZjI2NjJiMjYyY2U1YzUKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gMTIgMTk6MDQ6MzkgMjAxMSArMDAwMAotCi0gICAgRml4ZWQgYSBjb21waWxlciB3YXJuaW5nIChmb3JtYXQgc3BlY2lmaWNhdGlvbiBtaXNtYXRjaCkgdGhhdCB3YXMgaW50cm9kdWNlZAotICAgIGluIHIxOTgwOCAoInNubXBkOiBQQVRDSEVTOiAyOTc1MjU0OiBBdm9pZCBjYWxsYmFjayByZS11c2Ugb2YgY2xvc2VkIHNlc3Npb25zIikuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODU2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZjJkNzM0NTRiYTA3MzQ3YjQxY2ZlZDc3NTFlYzZmOTIxYmRiZDgwMQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiAxMiAxOTowNDozOSAyMDExICswMDAwCi0KLSAgICBGaXhlZCBhIGNvbXBpbGVyIHdhcm5pbmcgKGZvcm1hdCBzcGVjaWZpY2F0aW9uIG1pc21hdGNoKSB0aGF0IHdhcyBpbnRyb2R1Y2VkCi0gICAgaW4gcjE5ODA4ICgic25tcGQ6IFBBVENIRVM6IDI5NzUyNTQ6IEF2b2lkIGNhbGxiYWNrIHJlLXVzZSBvZiBjbG9zZWQgc2Vzc2lvbnMiKS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4NTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBkNjZmODhmZjRmMGE2NjlmNWM1ZGU3MDI3ZTFlYjBjN2NkOWFhZmJjCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDEyIDE5OjA0OjM5IDIwMTEgKzAwMDAKLQotICAgIEZpeGVkIGEgY29tcGlsZXIgd2FybmluZyAoZm9ybWF0IHNwZWNpZmljYXRpb24gbWlzbWF0Y2gpIHRoYXQgd2FzIGludHJvZHVjZWQKLSAgICBpbiByMTk4MDggKCJzbm1wZDogUEFUQ0hFUzogMjk3NTI1NDogQXZvaWQgY2FsbGJhY2sgcmUtdXNlIG9mIGNsb3NlZCBzZXNzaW9ucyIpLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg1NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDhmNThkYWUyYTFiM2U3NDVlZTFlOGI5NDRmN2VhN2U1YWUxYzRjZjAKLUF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDEyIDE1OjAzOjExIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXA6IHBhdGNoOiAzMDk2NzI1OiBzeXNPUlRhYmxlIHJlZ2lzdGF0aW9uIGZvciBub3RpZmljYXRpb24gbG9nIG1pYgotICAgIAotICAgICAgb3JpZ2luYWwgcGF0Y2ggZml4ZWQgc2V2ZXJhbCBpc3N1ZXMsIG90aGVyIHBhcnRzIGFwcGxpZWQgZWFybGllcgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg1NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDg5MDVjOThkYjZkZTg4MGIzYmM5OTJlZGQ5NGVmNzBmYTRkNTE3NzMKLUF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDEyIDE1OjAzOjExIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXA6IHBhdGNoOiAzMDk2NzI1OiBzeXNPUlRhYmxlIHJlZ2lzdGF0aW9uIGZvciBub3RpZmljYXRpb24gbG9nIG1pYgotICAgIAotICAgICAgb3JpZ2luYWwgcGF0Y2ggZml4ZWQgc2V2ZXJhbCBpc3N1ZXMsIG90aGVyIHBhcnRzIGFwcGxpZWQgZWFybGllcgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg1NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDE1OTUzMGVhNWZlM2FkNjIzZGI4MjFjOGI3OTNjZDA0NjVkYWIwYjIKLUF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDEyIDE0OjM3OjA5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IGFnZW50OiBNSUItc3BlY2lmaWMgbGVhay1hdC1leGl0IGZpeGVzLgotICAgIAotICAgICAgYmFja3BvcnQgYXBwbGljYWJsZSBwYXJ0cyBvZiByMTk1MzMgZnJvbSB0cnVuawotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg1NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDk1NmM4NDk1MzBlNTljMDQ1MWQ5NjQzMjQ3ZTQzNDhlMmFiMDk1ODQKLUF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDEyIDE0OjM3OjA5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IGFnZW50OiBNSUItc3BlY2lmaWMgbGVhay1hdC1leGl0IGZpeGVzLgotICAgIAotICAgICAgYmFja3BvcnQgYXBwbGljYWJsZSBwYXJ0cyBvZiByMTk1MzMgZnJvbSB0cnVuawotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg1NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDE2NWM4YmFkZGE2OTcwNjdkZjhmYWFjMGRiMTI0NTViODEyY2M1YTkKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxNjowNDoxNiAyMDExICswMDAwCi0KLSAgICBSZWNvZ25pc2UgQWdlbnQgT0lEIGZvciBEcmFnb25GbHkgc3lzdGVtcyAoYW5kIGdlbmVyYWwgdGlkeWluZyB1cCkKLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICBRbjogU2hvdWxkIHRoZXNlIGJlIHVwZGF0ZWQgdG8gcmVmZXIgdG8gTmV0LVNOTVAgKHJhdGhlciB0aGFuIFVDRCk/Ci0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOWI2ZDI3NmEyY2JjM2YxODY0YWU5NmFlMWJkN2FhNDMwNjQyYzg2NQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDE2OjA0OjE2IDIwMTEgKzAwMDAKLQotICAgIFJlY29nbmlzZSBBZ2VudCBPSUQgZm9yIERyYWdvbkZseSBzeXN0ZW1zIChhbmQgZ2VuZXJhbCB0aWR5aW5nIHVwKQotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIFFuOiBTaG91bGQgdGhlc2UgYmUgdXBkYXRlZCB0byByZWZlciB0byBOZXQtU05NUCAocmF0aGVyIHRoYW4gVUNEKT8KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4NTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiMmZhZWIwZWNkNmMzMGEwM2Y5ZGUyZGFmMzczMjU5MTBkMmZkMDBmCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTY6MDE6MjIgMjAxMSArMDAwMAotCi0gICAgRGVmaW5lIEFnZW50IE9JRCBmb3IgRHJhZ29uRmx5IHN5c3RlbXMKLSAgICAoYW5kIGdlbmVyYWwgdGlkeWluZyB1cCkKLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4NTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBkZDAxZGViYTdmZWQ1ODU0OWYzNDc4MDkxYTc5NDExMjA3NWY5MjlmCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTY6MDE6MjIgMjAxMSArMDAwMAotCi0gICAgRGVmaW5lIEFnZW50IE9JRCBmb3IgRHJhZ29uRmx5IHN5c3RlbXMKLSAgICAoYW5kIGdlbmVyYWwgdGlkeWluZyB1cCkKLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4NTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhNmU1MzkwOGJlNDhlOGIwZmVhNWFhMzk2MWRlZDNkNzE4NGRjNDYxCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTY6MDE6MjIgMjAxMSArMDAwMAotCi0gICAgRGVmaW5lIEFnZW50IE9JRCBmb3IgRHJhZ29uRmx5IHN5c3RlbXMKLSAgICAoYW5kIGdlbmVyYWwgdGlkeWluZyB1cCkKLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4NTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxY2IxYzIwZWNhYTI1NGQxMjQ2MWE2YTJjMDM1ZjU1YTkwMzRiYzk4Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTU6Mjc6NTAgMjAxMSArMDAwMAotCi0gICAgTmV0QlNEIERyYWdvbkZseSBzdXBwb3J0IGZvciBVRFAgJiBUQ1AgdGFibGVzCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODUwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMjUzNDljZjgzOWNmY2YxY2M3ZTgzZWNkYmVjYTU3NjFjYjkxZWE3YQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDE1OjI3OjUwIDIwMTEgKzAwMDAKLQotICAgIE5ldEJTRCBEcmFnb25GbHkgc3VwcG9ydCBmb3IgVURQICYgVENQIHRhYmxlcwotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg1MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGE4YmU4MDQxMmZiNDdlZGU1YTI1YjVhNmFjNjA2ZjMyMzNiZmE4OWMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxNDo0MToyNiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBOZXRCU0Q6IERyYWdvbkZseSBzdXBwb3J0Ci0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODQ5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYjQ0M2NiZDg1YTY1ZTM1NWZmMDEwMWZlNjgxNDJkNDliOGNjNGU1NwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDE0OjQxOjI2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IE5ldEJTRDogRHJhZ29uRmx5IHN1cHBvcnQKLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4NDkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwOTMyYjA0OTEwZWM2NzAxMTJlMjE2ZTY0Nzg5Y2EyZjRiNWIwNzYxCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTQ6MzY6MjUgMjAxMSArMDAwMAotCi0gICAgTmV0QlNEL0RyYWdvbkZseSAnc3RydWN0IGlmbmV0JyByZXF1aXJlcyBLRVJORUwsIGJ1dCBub3QgX0tFUk5FTAotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgICAgICAoSSBob3BlIEkndmUgZ290IHRoaXMgb25lIHJpZ2h0ISkKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4NDggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhNTJmOGMzZjg1NjMxODliZDBkMWRmZTQ5ZDBjODA5ZWYwOGQ3ZGUyCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTQ6MzY6MjUgMjAxMSArMDAwMAotCi0gICAgTmV0QlNEL0RyYWdvbkZseSAnc3RydWN0IGlmbmV0JyByZXF1aXJlcyBLRVJORUwsIGJ1dCBub3QgX0tFUk5FTAotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgICAgICAoSSBob3BlIEkndmUgZ290IHRoaXMgb25lIHJpZ2h0ISkKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4NDggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjNzU4OGU4NzFiZmE5MTQyNjk4NDAyMTY5MGFmZGE3NmIyMzFmNWZiCi1BdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxNDoxNDowNyAyMDExICswMDAwCi0KLSAgICByZXZlcnQgUEFUQ0ggMzA1MzQzNjogdGNwQ29ubmVjdGlvblRhYmxlX2RhdGFfYWNjZXNzIGludmFsaWQgbWVtb3J5IGFjY2VzcwotICAgIAotICAgICAgdGhlIGJ1ZyB0aGlzIGlzIGZpeGluZyB3YXMgaW50cm9kdWNlZCBpbiByMTc3MTksIGFuZCBmaXhlZCBpbiByMTc4NjEuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODQ3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgY2EyNzBiOTU0OTVkNjM3YmNhOWQyMTY1OGMwMjk1ZDVlMGNiZTNiNgotQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTQ6MTQ6MDcgMjAxMSArMDAwMAotCi0gICAgcmV2ZXJ0IFBBVENIIDMwNTM0MzY6IHRjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2FjY2VzcyBpbnZhbGlkIG1lbW9yeSBhY2Nlc3MKLSAgICAKLSAgICAgIHRoZSBidWcgdGhpcyBpcyBmaXhpbmcgd2FzIGludHJvZHVjZWQgaW4gcjE3NzE5LCBhbmQgZml4ZWQgaW4gcjE3ODYxLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg0NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGFlOTk3MDRmNWNkOWI4NWU5M2ZlNGE4ZGRmMThmMTcwMGY3MzA2MmYKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDEzOjM0OjIyIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IGZyb20gQmlsbCBGZW5uZXI6IGZpeCBzZW5kaW5nIG9mIFVEUCByZXNwb25zZXMgZnJvbSBtdWx0aWhvbWVkIGFnZW50cy4KLSAgICAKLSAgICBUcnkgdG8gc2VuZCB0aGUgcmVzcG9uc2UgYXMgaXQgd2FzIGJlZm9yZSBOZXQtU05NUCA1LjYgKGFzc3VtaW5nIHRoZSBhcHByb3ByaWF0ZSByZXF1ZXN0IHdhcyB1bmljYXN0KSBhbmQgb25seSBpZiBpdCBmYWlscyB0cnkgdG8gc2V0IGlmX2luZGV4ICh0aGUgcmVxdWVzdCBtdXN0IGJlIGJyb2FkY2FzdCkuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODQ2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzNmZTJmNzIwMGZiMDBiZTFmM2MyMzIwNTE5MzhlYTg3ODQ3YzI1OAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDEzOjIyOjEwIDIwMTEgKzAwMDAKLQotICAgIFJlYWxseSBoYW5kbGUgc3lzdGVtcyB3aXRoICdzdHJ1Y3QgdGltZXNwZWMgaWZuZXQuaWZfbGFzdGNoYW5nZScKLSAgICAobWlzc2luZyBlbGVtZW50IGZyb20gU1ZOIHJldmlzaW9uIDE5ODQxKQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg0NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGY0ODNjOWI5OWRlMDM0ZTk4YTkxNDg5ZjJjNjVjZmFkOWFjODgzNmYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxMzoyMjoxMCAyMDExICswMDAwCi0KLSAgICBSZWFsbHkgaGFuZGxlIHN5c3RlbXMgd2l0aCAnc3RydWN0IHRpbWVzcGVjIGlmbmV0LmlmX2xhc3RjaGFuZ2UnCi0gICAgKG1pc3NpbmcgZWxlbWVudCBmcm9tIFNWTiByZXZpc2lvbiAxOTg0MSkKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4NDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1YjEwYjRiMGM4NDQ0YjA0MzJlMWZjYjViMzM1ZDg4NWIwMWY0ODczCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTI6MjQ6MTIgMjAxMSArMDAwMAotCi0gICAgQWRkaXRpb25hbCBoZWFkZXJzIHdoZW4gdGVzdGluZyBmb3IgSVB2NiBoZWFkZXJzCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODQ0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNGFlYmJmZjcwN2JmMGNkNGI1MTcyNDc0MTQzYWExYjMwMmMzMWJlZgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDEyOjI0OjEyIDIwMTEgKzAwMDAKLQotICAgIEFkZGl0aW9uYWwgaGVhZGVycyB3aGVuIHRlc3RpbmcgZm9yIElQdjYgaGVhZGVycwotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg0NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGM0MGVkNmVlMzk4NDBmMzcyOWY5M2VlN2YzYzc5MmRkZTkyMjU3MGUKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxMjoyNDoxMiAyMDExICswMDAwCi0KLSAgICBBZGRpdGlvbmFsIGhlYWRlcnMgd2hlbiB0ZXN0aW5nIGZvciBJUHY2IGhlYWRlcnMKLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4NDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzZjQzZmNlZGZhYjAxM2FkYjYyYmJkYzkxOWM1MTlkMDIzZGY5Y2YyCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTI6MTQ6MjUgMjAxMSArMDAwMAotCi0gICAgTWlzc2luZyB0eXBlIHVuZGVyIGRhcndpbgotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg0MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDk2ZDEzMWY5YTY2YzMzNGE1N2NhNTA0YTAyNjk1MjNiZDAxNmE5NjAKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxMjoxNDoyNSAyMDExICswMDAwCi0KLSAgICBNaXNzaW5nIHR5cGUgdW5kZXIgZGFyd2luCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODQzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZjA4OTA1MmQ2OTAzNmUzMjg3YTVmNDUyNWIzODg1NWEwYzFhNjYzMQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDEyOjEwOjU2IDIwMTEgKzAwMDAKLQotICAgIE5ldEJTRCBzdXBwb3J0IGZvciBEaXNrIEkvTyBzdGF0cwotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg0MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDM1NTdlZjcwZjBjYTg2MTdkNzg3YjRiZmMxYmY3YWQ5MWJlMDIwMmYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxMjowMToyNyAyMDExICswMDAwCi0KLSAgICBIYW5kbGUgc3lzdGVtcyB3aXRoICdzdHJ1Y3QgdGltZXNwZWMgaWZuZXQuaWZfbGFzdGNoYW5nZScgKHJhdGhlciB0aGFuIHN0cnVjdCB0aW1ldmFsKQotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDc5ZThiM2Y5NThhOTc3ZDVlOWNlYjk5NDgxNTQ0NjY1MmMwODlmZGIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxMjowMToyNyAyMDExICswMDAwCi0KLSAgICBIYW5kbGUgc3lzdGVtcyB3aXRoICdzdHJ1Y3QgdGltZXNwZWMgaWZuZXQuaWZfbGFzdGNoYW5nZScgKHJhdGhlciB0aGFuIHN0cnVjdCB0aW1ldmFsKQotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDVhYTNhMzM2MjFkZjg5YmYxZjU1NjdlMWNkOWE2Njc3YWU5ZjIwZGIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxMToyNzowNiAyMDExICswMDAwCi0KLSAgICBQdWxsIGluIGtlcm5lbF9uZXRic2QgbW9kdWxlIHdoZW4gcmVxdWlyZWQKLSAgICBbQmFzZWQgb24gZml4IGZyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODQwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYjMyOWRjOWZmYzZhN2QxNGNjYjAyNzdmNzYzY2ZkYTc1MGE1N2VjYQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDExOjI3OjA2IDIwMTEgKzAwMDAKLQotICAgIFB1bGwgaW4ga2VybmVsX25ldGJzZCBtb2R1bGUgd2hlbiByZXF1aXJlZAotICAgIFtCYXNlZCBvbiBmaXggZnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4NDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3YjU3YmRiNTE1NDcxNjEyMzk2YzVmNzExYjlmZTA0YTY5ZGEwZDUwCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTA6MzY6MDggMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogTmV0QlNEOiBSZXRyaWV2ZSBNSUItSUkgbmV0d29yayBzdGF0aXN0aWNzIHZpYSBzeXNjdGwKLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4M2IxY2FiOGI4ZGNiY2FlYjFhNjhkMDNjYjBlMGM0YzE5Njk2NTYwCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTA6MzY6MDggMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogTmV0QlNEOiBSZXRyaWV2ZSBNSUItSUkgbmV0d29yayBzdGF0aXN0aWNzIHZpYSBzeXNjdGwKLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBkNTIxMjFkN2M5NWE2ZWYyYWZlODZjMmJiYzQzNWY0ZTQ5YzdmMjhiCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKYW4gMTAgMTY6NTY6MTEgMjAxMSArMDAwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIGRhcndpbgotICAgIChUaGUgcGF0Y2ggZnJvbSB0aGUgTmV0QlNEIGFyY2hpdmUgYXBwZWFycyB0byBiZSBlc3NlbnRpYWxseSB0aGUKLSAgICBzYW1lIGFzIHRoZSBlcXVpdmFsZW50IGNvZGUgZnJvbSB0aGUgT3BlbkJTRCBwYXRjaCBhcmNoaXZlKQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTgzNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGVhMDVmMzlkMjcxZTM2ZTRhMWQxZjAxOGU2NWZkMTg5MjAyMTlmOGMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEphbiAxMCAxNjo1NjoxMSAyMDExICswMDAwCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgZGFyd2luCi0gICAgKFRoZSBwYXRjaCBmcm9tIHRoZSBOZXRCU0QgYXJjaGl2ZSBhcHBlYXJzIHRvIGJlIGVzc2VudGlhbGx5IHRoZQotICAgIHNhbWUgYXMgdGhlIGVxdWl2YWxlbnQgY29kZSBmcm9tIHRoZSBPcGVuQlNEIHBhdGNoIGFyY2hpdmUpCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODM3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMmQ5NmJlNzBlYjdjYjQ2ZTI4OThjOTU3ZWQ4NzY3NjcwNmE2ZDZkZgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSmFuIDEwIDE2OjU2OjExIDIwMTEgKzAwMDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciBkYXJ3aW4KLSAgICAoVGhlIHBhdGNoIGZyb20gdGhlIE5ldEJTRCBhcmNoaXZlIGFwcGVhcnMgdG8gYmUgZXNzZW50aWFsbHkgdGhlCi0gICAgc2FtZSBhcyB0aGUgZXF1aXZhbGVudCBjb2RlIGZyb20gdGhlIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZSkKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzMGY2ODM2ZDA0NGMzM2E1NTk1YjYyZDE2ZmZjNTk2ZjBhYzJjOTBhCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKYW4gMTAgMTY6NTQ6MDIgMjAxMSArMDAwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIGRhcndpbgotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTgzNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDFhNmFkMTk3MDUwNjlmYzhjYjRmNzBjMzBjOTYyYWYzOGQ1NDFkMjYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEphbiAxMCAxNjo1NDowMiAyMDExICswMDAwCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgZGFyd2luCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODM2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNzRkMzBiNjMxNDY3YWMxNzc4ZWM3MTIzMWM1NWEzY2M4NThhNWM2YQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSmFuIDEwIDE2OjU0OjAyIDIwMTEgKzAwMDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciBkYXJ3aW4KLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiNGZkMDFhYTA3NGU0Yjc0OWE5NmY5Y2E0MzkyODlmMzg0Y2I4MGMzCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKYW4gMTAgMTQ6NTU6NTcgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogTmV0QlNEOiBVcGRhdGUgbWVtb3J5IGFuZCBDUFUgc3RhdGlzdGljcyBoYW5kbGluZwotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGNlODU0ZDE5NjM1ODIxYWVhMWE4Y2Y1ZjkwOTVlMTQwNjhmM2ZiOWIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEphbiAxMCAxNDo1NTo1NyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBOZXRCU0Q6IFVwZGF0ZSBtZW1vcnkgYW5kIENQVSBzdGF0aXN0aWNzIGhhbmRsaW5nCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODM1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOThjMzliNjg3NmRkNTMwYzlhY2U3NmE4NmU5MTcyMzYzMWZlYTY5ZQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSmFuIDEwIDE0OjIyOjQ0IDIwMTEgKzAwMDAKLQotICAgIEZpeCBkaXZpZGUtYnktemVybyBlcnJvciBpbiBDUFUgcGVyZm9ybWFuY2Ugc3RhdGlzdGljcwotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgzNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGI2MWRkYzRmYzZkY2IzMzFjNjkyMWM4MjViOTNiNjBjOGIyNTdmYjQKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEphbiAxMCAxNDoyMjo0NCAyMDExICswMDAwCi0KLSAgICBGaXggZGl2aWRlLWJ5LXplcm8gZXJyb3IgaW4gQ1BVIHBlcmZvcm1hbmNlIHN0YXRpc3RpY3MKLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4YTQ5Y2FkYjVlMmE4ZTRmMWEzZjIwYmY3MmI5ZGI0YTA0ZmEzMGM5Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBKYW4gOSAyMjo1NDo1MCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBPcGVuQlNEOiBVcGRhdGUgU1dSdW4gY29kZSB0byB1c2Uga3ZtX2dldHByb2MyCi0gICAgW0Zyb20gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgzMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDI3MTYxOTMyYTNjY2MyOGZjMjY0MjdjNzY0MDhiODZmM2I3MDgwMDMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIEphbiA5IDIxOjMwOjM4IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IGJ1aWxkOiBPcGVuQlNEOiBGaXggb3JkZXIgb2YgaGVhZGVycyB3aGVuIGNoZWNraW5nIDxuZXRpbmV0L2luX3BjYi5oPgotICAgIFtGcm9tIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4ZDI5ZDQwZGU0YmE1ZjI1N2Y2YmY0NmUyYjM5YjExYjI3ODFjODg0Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBKYW4gOSAxOTo0NDo1NyAyMDExICswMDAwCi0KLSAgICBBbWVuZCBob3cgbXVsdGktQ1BVIHN0YXRpc3RpY3MgYXJlIHJldHJlaXZlZCB1c2luZyBzeXNjdGwgb24gT3BlbkJTRCBzeXN0ZW1zCi0gICAgKGlmIHRoaXMgYmxvY2sgd2FzIGFjdGl2ZSwgd2hpY2ggaXQgaXNuJ3QsIGJ1dCB0aGF0J3Mgbm90IGltcG9ydGFudCByaWdodCBub3QpCi0gICAgW0Jhc2VkIG9uIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZSwgYW1lbmRlZCAocHJvYmFibHkgd3JvbmdseSkgYnkgRFRTXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgzMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDRhZmVjN2Y4OGFiODQwYzZiOGJjMGI5NmM2YWE3NzdjYzMzY2JiM2MKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIEphbiA5IDE5OjQ0OjU3IDIwMTEgKzAwMDAKLQotICAgIEFtZW5kIGhvdyBtdWx0aS1DUFUgc3RhdGlzdGljcyBhcmUgcmV0cmVpdmVkIHVzaW5nIHN5c2N0bCBvbiBPcGVuQlNEIHN5c3RlbXMKLSAgICAoaWYgdGhpcyBibG9jayB3YXMgYWN0aXZlLCB3aGljaCBpdCBpc24ndCwgYnV0IHRoYXQncyBub3QgaW1wb3J0YW50IHJpZ2h0IG5vdCkKLSAgICBbQmFzZWQgb24gT3BlbkJTRCBwYXRjaCBhcmNoaXZlLCBhbWVuZGVkIChwcm9iYWJseSB3cm9uZ2x5KSBieSBEVFNdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODMxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZTM3N2U4OTMwNTE5NGUxOWZmYzM5ZDZkODhkODRkMjM2ZmFjYTU1OQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gSmFuIDkgMTg6MTM6NTAgMjAxMSArMDAwMAotCi0gICAgc3lzY3RsIHRha2VzIGEgJ3NpemVfdCcgdmFyaWFibGUgZm9yIHRoZSBzaXplIHBhcmFtZXRlcgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTgzMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDc3YWY4OTlhZWRlYjg1NDExMjNmZjg4OWMyZjlmNDUyNjVkOGRiYWUKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIEphbiA5IDE4OjEzOjUwIDIwMTEgKzAwMDAKLQotICAgIHN5c2N0bCB0YWtlcyBhICdzaXplX3QnIHZhcmlhYmxlIGZvciB0aGUgc2l6ZSBwYXJhbWV0ZXIKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBkMjA5MDZjYjY4NWRhMjlkY2VhNzFiODkzZDI3MjExNDIxODZiZDZmCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBKYW4gOSAxODoxMzo1MCAyMDExICswMDAwCi0KLSAgICBzeXNjdGwgdGFrZXMgYSAnc2l6ZV90JyB2YXJpYWJsZSBmb3IgdGhlIHNpemUgcGFyYW1ldGVyCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODMwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOTBjMTQwY2U4OTNlOGE2YzJmZDk3Y2QzMzk2NTRhMzZjMzZlNjgyYQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gSmFuIDkgMTg6MTE6MDEgMjAxMSArMDAwMAotCi0gICAgc3lzY3RsIHRha2VzIGEgJ3NpemVfdCcgdmFyaWFibGUgZm9yIHRoZSBzaXplIHBhcmFtZXRlcgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgyOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDI5NGEyZGE5NTY3OWQ2NjgyMmZmMzlkNDY5NmNlNmY0MDM1ZGZkZTMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIEphbiA5IDE4OjExOjAxIDIwMTEgKzAwMDAKLQotICAgIHN5c2N0bCB0YWtlcyBhICdzaXplX3QnIHZhcmlhYmxlIGZvciB0aGUgc2l6ZSBwYXJhbWV0ZXIKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwZTU5YzE0YzVjZjJmODdmNTNhZmI5OGIzNzA1YmVkZTE0ODIzNjE4Ci1BdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IEphbiA4IDAwOjQ3OjIyIDIwMTEgKzAwMDAKLQotICAgIFVwZGF0ZSBhY2NvbmZpZy5oIHdpdGggY2hhbmdlcyBmcm9tIHIxOTgxOS4KLSAgICBSZXJ1biBhdXRvaGVhZGVyLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTgyNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDM5YjlhMGFiY2JiYTBjYWZlYTVhNjMyNGUxYzU3NmU2NTg4YTFjZDUKLUF1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgSmFuIDggMDA6NDc6MjIgMjAxMSArMDAwMAotCi0gICAgVXBkYXRlIGFjY29uZmlnLmggd2l0aCBjaGFuZ2VzIGZyb20gcjE5ODE5LgotICAgIFJlcnVuIGF1dG9oZWFkZXIuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODI3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzY0YTA2MjlkM2QzMjYzZDg2YWM1MWVhMTk4NjcyZGQzMDdkZDRmNQotQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBKYW4gOCAwMDo0NzoyMiAyMDExICswMDAwCi0KLSAgICBVcGRhdGUgYWNjb25maWcuaCB3aXRoIGNoYW5nZXMgZnJvbSByMTk4MTkuCi0gICAgUmVydW4gYXV0b2hlYWRlci4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MjcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwYzg5NzBlYzIzYzEwNjRhODFjZmM1YzM2MmUzYjM0OGFmYjAyMDcwCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAyMDo1NjoyNiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBPcGVuQlNEOiBTdXBwb3J0IHVwZGF0aW5nIHRoZSByb3V0aW5nIHRhYmxlCi0gICAgW0Zyb20gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTgyNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDgzNGNjMTI4YWY3ZmQ1NDIyYTllZGE3M2FhNDg5ODc3NzRmMjQzNWQKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDIwOjU2OjI2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IE9wZW5CU0Q6IFN1cHBvcnQgdXBkYXRpbmcgdGhlIHJvdXRpbmcgdGFibGUKLSAgICBbRnJvbSBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODI2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMTE0Mzc1NGE0YzE4NTNjYmM4MmU5YzAyNmJlMmQyYzhmYWViYmQ4OAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMjA6NTY6MjYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogT3BlbkJTRDogU3VwcG9ydCB1cGRhdGluZyB0aGUgcm91dGluZyB0YWJsZQotICAgIFtGcm9tIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MjYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiMmQ4ZjEwMjY2NmUyMjZmZjE4NmQxYTUzZTBmNTk4YmI0YTNjODRjCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAyMDoyOTozOSAyMDExICswMDAwCi0KLSAgICBTZXQgJ25leHQnIGZpZWxkIGZvciB1ZHAgZW50cnkgbGlua2VkIGxpc3Qgb24gT3BlbkJTRDQKLSAgICBbRnJvbSBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgc2V0IGluIDxuZXQtc25tcC9zeXN0ZW0vb3BlbmJzZC5oPgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTgyNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDFiNWM5YzAwMzBmN2E4MzA5ZmU4ODYwNDRhZGQxNmEyNDQ2MjhiNGUKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDIwOjI5OjM5IDIwMTEgKzAwMDAKLQotICAgIFNldCAnbmV4dCcgZmllbGQgZm9yIHVkcCBlbnRyeSBsaW5rZWQgbGlzdCBvbiBPcGVuQlNENAotICAgIFtGcm9tIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBzZXQgaW4gPG5ldC1zbm1wL3N5c3RlbS9vcGVuYnNkLmg+Ci0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODI1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMWUyYzY2NDE3MjBlMGJkNDk2MDM0YTRmMjU0M2E5ODRhZTVhNTA0MQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMjA6Mjk6MzkgMjAxMSArMDAwMAotCi0gICAgU2V0ICduZXh0JyBmaWVsZCBmb3IgdWRwIGVudHJ5IGxpbmtlZCBsaXN0IG9uIE9wZW5CU0Q0Ci0gICAgW0Zyb20gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIHNldCBpbiA8bmV0LXNubXAvc3lzdGVtL29wZW5ic2QuaD4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MjUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlZWNiNjlmMjZhNDRmZDdlN2M4ZjNlZjk2ODI1NDZkNjM4MGRiNTE5Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAyMDoxMjoyNSAyMDExICswMDAwCi0KLSAgICBVc2UgYSBzdWl0YWJsZSBjb25zdGFudCBmb3IgQ1dEIGJ1ZmZlciBzaXplCi0gICAgW0Jhc2VkIG9uIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4MjQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlY2UwMzMzNTVmN2Q2OWE5ZGVmNGI4ZDIzMDdiZDVkYjMzMDhhMjhlCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAyMDoxMjoyNSAyMDExICswMDAwCi0KLSAgICBVc2UgYSBzdWl0YWJsZSBjb25zdGFudCBmb3IgQ1dEIGJ1ZmZlciBzaXplCi0gICAgW0Jhc2VkIG9uIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MjQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxNDMzMzYwYzBjM2FiMDNkZGZkMTQ5NjE3OTZiMWZkOWNkMGNlMWI5Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAyMDoxMjoyNSAyMDExICswMDAwCi0KLSAgICBVc2UgYSBzdWl0YWJsZSBjb25zdGFudCBmb3IgQ1dEIGJ1ZmZlciBzaXplCi0gICAgW0Jhc2VkIG9uIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MjQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBkODI5ZWQ2NTI1NWNkYzYyMGJjMjYzOGU2OGFiMmY3ZWZlNTkzNzA1Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAyMDowNzoxNyAyMDExICswMDAwCi0KLSAgICBNb3ZlIGdsb2JhbCB2YXJpYWJsZSBpbnRvIHRoZSBtZXRob2Qgd2hlcmUgaXQncyB1c2VkLgotICAgIFtGcm9tIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4MjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4YTIzOGI1OTgzNTg5Y2JhNDc0ZDg3NTU3MWRkZTJhNTFhOGY4MjczCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAyMDowNzoxNyAyMDExICswMDAwCi0KLSAgICBNb3ZlIGdsb2JhbCB2YXJpYWJsZSBpbnRvIHRoZSBtZXRob2Qgd2hlcmUgaXQncyB1c2VkLgotICAgIFtGcm9tIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5ODNlNWYyYjdlYThkMWI4MjYzYzcwZTJkNGJmYmEyYjU2YjlhNWMwCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAyMDowNzoxNyAyMDExICswMDAwCi0KLSAgICBNb3ZlIGdsb2JhbCB2YXJpYWJsZSBpbnRvIHRoZSBtZXRob2Qgd2hlcmUgaXQncyB1c2VkLgotICAgIFtGcm9tIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyNTQ2ZWMyZDQ3NGNkZTU0ZTg1M2Y0MGVmNjg5YmY0NmM1MmU0N2Q0Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxNjo0ODo1NiAyMDExICswMDAwCi0KLSAgICBIYW5kbGUgc3lzdGVtcyB3aXRob3V0IElGTV9UT0tFTgotICAgIFtGcm9tIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3OTEzMjM2MTc2YTAwMTI0NmIwYTdiZDQyNDkwNTIxMDJjZWU3MGRiCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxNjo0ODo1NiAyMDExICswMDAwCi0KLSAgICBIYW5kbGUgc3lzdGVtcyB3aXRob3V0IElGTV9UT0tFTgotICAgIFtGcm9tIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4ZTRiZjRiNTNhMTNkYzk3ZGYxOGRkZDgxOGQwMmE0M2E4MGJjZmE2Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxNDozODozNyAyMDExICswMDAwCi0KLSAgICBVcGRhdGUgcmV0cmlldmFsIG9mIGNhY2hlIHVzYWdlIHN0YXRpc3RpY3Mgb24gRnJlZUJTRAotICAgIFtGcm9tIEZyZWVCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzODI4MTc3NzExNWYyN2UwNTBhNjYzM2QzZGQ1ODFhOTBhZTdjNmUzCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxNDozODozNyAyMDExICswMDAwCi0KLSAgICBVcGRhdGUgcmV0cmlldmFsIG9mIGNhY2hlIHVzYWdlIHN0YXRpc3RpY3Mgb24gRnJlZUJTRAotICAgIFtGcm9tIEZyZWVCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyZGJkYzVjYjY3NjE1MDFhNmI5ZTEyZWM5MmQ3Nzg0OWM1NDcwZDcwCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxNDoyMDozMCAyMDExICswMDAwCi0KLSAgICBJbmNyZWFzZSBtYXhpbXVtIHNpemUgb2YgZXhlY3V0ZSBvdXRwdXQgY2FjaGUKLSAgICBbRnJvbSBGcmVlQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODE5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNTQ5YTc3ZjcyMjAwZDQ0NzA3MzU5YThlNDlmZjhjNWJkNTNhM2YzMAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTQ6MjA6MzAgMjAxMSArMDAwMAotCi0gICAgSW5jcmVhc2UgbWF4aW11bSBzaXplIG9mIGV4ZWN1dGUgb3V0cHV0IGNhY2hlCi0gICAgW0Zyb20gRnJlZUJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgxOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGI1NDBkM2M5OTcxMDQ1ODkwYmRkZDNkZTUwZjQwZjE0NjhmMWIwM2MKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDE0OjIwOjMwIDIwMTEgKzAwMDAKLQotICAgIEluY3JlYXNlIG1heGltdW0gc2l6ZSBvZiBleGVjdXRlIG91dHB1dCBjYWNoZQotICAgIFtGcm9tIEZyZWVCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjYzQ1OWY2OWZiYTY4YjYzMzJiOWFkMjdiNGJjODFhM2RmMTNiYzFhCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxNDowOToxNSAyMDExICswMDAwCi0KLSAgICBSZW1vdmUgZHVwbGljYXRlIGluY2x1ZGUgZGlyZWN0aXZlcwotICAgIFtGcm9tIEZyZWVCU0QgcGF0Y2hlcyBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgxNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDdmNzE1MTYzMmRlYTVhZDg5NDUzMGVlNTg0NzY1NjQyNDFkOTU4MDcKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDE0OjA5OjE1IDIwMTEgKzAwMDAKLQotICAgIFJlbW92ZSBkdXBsaWNhdGUgaW5jbHVkZSBkaXJlY3RpdmVzCi0gICAgW0Zyb20gRnJlZUJTRCBwYXRjaGVzIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODE3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZjhkNmI0NmMyYzMyYTcyMjE3MTZlZjUzM2JmYWFlZDg5NTkwMzg0ZQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTM6NDc6MjMgMjAxMSArMDAwMAotCi0gICAgSGFuZGxlIHN5c3RlbXMgd2hlcmUgUlRGX0xMSU5GTyBpcyBub3QgZGVmaW5lZAotICAgIFtGcm9tIEZyZWVCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4MTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiYTgxYjFkZmI0ODhlNTYwMmFmMTMxYTkyMzlhOWFiOGQzZDM1ZTFlCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxMzo0NzoyMyAyMDExICswMDAwCi0KLSAgICBIYW5kbGUgc3lzdGVtcyB3aGVyZSBSVEZfTExJTkZPIGlzIG5vdCBkZWZpbmVkCi0gICAgW0Zyb20gRnJlZUJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgxNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDJmZjQ2ZmU2OTdkOWMzYWY5MTA2NTE1YzQxYjdlNmE5ODEyNmFhMDkKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDEzOjQ3OjIzIDIwMTEgKzAwMDAKLQotICAgIEhhbmRsZSBzeXN0ZW1zIHdoZXJlIFJURl9MTElORk8gaXMgbm90IGRlZmluZWQKLSAgICBbRnJvbSBGcmVlQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODE2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZjAyMzEyYWFlYmZmNTVmMDQwNDc2YTFjNzEwM2U5OTFhMTFjNmFhMgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTM6NDA6NDAgMjAxMSArMDAwMAotCi0gICAgSW5jbHVkZSB6ZnMgbW91bnQgcG9pbnRzIGZvciBkaXNrIHJlcG9ydHMgdW5kZXIgRnJlZUJTRAotICAgIFtGcm9tIEZyZWVCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4MTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4M2JmNDQ0ZjA3NmVkMmI5MjEyMjM5NTk1ODZhNGVlMzgzNTk1NjIzCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxMzo0MDo0MCAyMDExICswMDAwCi0KLSAgICBJbmNsdWRlIHpmcyBtb3VudCBwb2ludHMgZm9yIGRpc2sgcmVwb3J0cyB1bmRlciBGcmVlQlNECi0gICAgW0Zyb20gRnJlZUJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgxNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGJkNmNkY2EyNmY5NDY5NjExMzAzMzU2YmJkYWVkZDgyMzdkM2QxYmEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDEzOjQwOjQwIDIwMTEgKzAwMDAKLQotICAgIEluY2x1ZGUgemZzIG1vdW50IHBvaW50cyBmb3IgZGlzayByZXBvcnRzIHVuZGVyIEZyZWVCU0QKLSAgICBbRnJvbSBGcmVlQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODE1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZTJkNzcxYjcyN2U2MGFmMTA0NWFmMjg3MWE4ZjRhOWUwMTA3Y2NiNQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTM6MzQ6NTMgMjAxMSArMDAwMAotCi0gICAgUHJvdGVjdCBhZ2FpbnN0IG11bHRpcGxlLWluY2x1c2lvbgotICAgIFtGcm9tIEZyZWVCU0QgcGF0Y2hlcyBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTgxNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDY1YzBmMzliZWNhNGIyMzIxMWNkMjE3YWRlN2NhMTk2ZDRlZTllZmMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDEzOjM0OjUzIDIwMTEgKzAwMDAKLQotICAgIFByb3RlY3QgYWdhaW5zdCBtdWx0aXBsZS1pbmNsdXNpb24KLSAgICBbRnJvbSBGcmVlQlNEIHBhdGNoZXMgYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5MGFmY2RhYWQ5MDg0NDBhZDhhMDBkYmY3YjcxMTMyZTNlNjMxZThlCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxMzozNDo1MyAyMDExICswMDAwCi0KLSAgICBQcm90ZWN0IGFnYWluc3QgbXVsdGlwbGUtaW5jbHVzaW9uCi0gICAgW0Zyb20gRnJlZUJTRCBwYXRjaGVzIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMzQ5ZmFjZDVhYzU1NTZiOWY5ZWI2YjJmYmJhOWMwZWQ4ZmRhMTZlMgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTM6MjQ6MzEgMjAxMSArMDAwMAotCi0gICAgSW5jbHVkZSA8dW5pc3RkLmg+Ci0gICAgW0Zyb20gQlNEIHBhdGNoZXMgYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4MTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1NDUxMDY3ZGZmYTAxZjk5MWViMmY5MWJiZDVlZDViNjU1OTg5YTFjCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxMzoyNDozMSAyMDExICswMDAwCi0KLSAgICBJbmNsdWRlIDx1bmlzdGQuaD4KLSAgICBbRnJvbSBCU0QgcGF0Y2hlcyBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGE4ZjQ5MmE5ZmJlYjRmMTMzNTdlN2E3NTkxMDdkZmZjYzVlOWM0OTEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDEzOjI0OjMxIDIwMTEgKzAwMDAKLQotICAgIEluY2x1ZGUgPHVuaXN0ZC5oPgotICAgIFtGcm9tIEJTRCBwYXRjaGVzIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNjQ1MGE5ODQ1MTliOGJjODc3MjdlYzdjZjA4Y2U1YjdjMTBlM2M1MAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTM6MjE6NDggMjAxMSArMDAwMAotCi0gICAgQXZvaWQgY2FsbGJhY2sgcmUtdXNlIG9mIGNsb3NlZCBzZXNzaW9ucy4KLSAgICAoUGFydCBvZiBwYXRjaCAjMjk3NTI1NCAtIHNlZSBTVk4gcmV2aXNpb24gMTk4MDgpCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODEyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZmY0Nzc3NTFkZGM4NmM3YThlZjU4ODJkMzhkNDJlM2E4ZGIxOTliMQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTM6MjE6NDggMjAxMSArMDAwMAotCi0gICAgQXZvaWQgY2FsbGJhY2sgcmUtdXNlIG9mIGNsb3NlZCBzZXNzaW9ucy4KLSAgICAoUGFydCBvZiBwYXRjaCAjMjk3NTI1NCAtIHNlZSBTVk4gcmV2aXNpb24gMTk4MDgpCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODEyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgY2Y2MWEzMTI2Mzg3MTZiMDk3ZTU4M2JlMDlmYTUyMTc2M2U0NWJlZQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTM6MjE6NDggMjAxMSArMDAwMAotCi0gICAgQXZvaWQgY2FsbGJhY2sgcmUtdXNlIG9mIGNsb3NlZCBzZXNzaW9ucy4KLSAgICAoUGFydCBvZiBwYXRjaCAjMjk3NTI1NCAtIHNlZSBTVk4gcmV2aXNpb24gMTk4MDgpCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODEyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOWM1NDE3ZDE1YjRjZWRjYTk1NDgzYjQ0YTlkY2YxYjM4MTJjY2I2OQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTI6NTU6MzEgMjAxMSArMDAwMAotCi0gICAgRnJlZUJTRCB1c2VzIGEgc2xpZ2h0bHkgZGlmZmVyZW50IG5hbWluZyBzY2hlbWUgZm9yIHN0cnVjdCBpZnJlcQotICAgIFtGcm9tIEZyZWVCU0QgcGF0Y2hlcyBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTgxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDM4YjI5MWIwOTZhNWQxZGRmNmQ4MDNhNDMzNjQ3NWQzYjdhZDkyMzYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDEyOjU1OjMxIDIwMTEgKzAwMDAKLQotICAgIEZyZWVCU0QgdXNlcyBhIHNsaWdodGx5IGRpZmZlcmVudCBuYW1pbmcgc2NoZW1lIGZvciBzdHJ1Y3QgaWZyZXEKLSAgICBbRnJvbSBGcmVlQlNEIHBhdGNoZXMgYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2ODVhN2RkOWQ1ZWVjOTk4YWE3YzVlYTA1MGM2OTg3YWY0MjIwZjBiCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxMjo1NTozMSAyMDExICswMDAwCi0KLSAgICBGcmVlQlNEIHVzZXMgYSBzbGlnaHRseSBkaWZmZXJlbnQgbmFtaW5nIHNjaGVtZSBmb3Igc3RydWN0IGlmcmVxCi0gICAgW0Zyb20gRnJlZUJTRCBwYXRjaGVzIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYjBlYjE1YTIzZDljODdiOGE0MTExNGUzNmY4NGJiYWFkYTZhMTJjZQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTI6MjI6MDMgMjAxMSArMDAwMAotCi0gICAgRW5zdXJlIFRDUCB0YWJsZSBpbmZvcm1hdGlvbiBpcyBsb2FkZWQgYmVmb3JlIGNvdW50aW5nIGNvbm5lY3Rpb25zCi0gICAgW0Zyb20gRnJlZUJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTgxMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGY1MTJmODBkN2ZkZDc2ZGQwOTJlNzBlYThmYzE3MDNiMDE5ZTYyYzMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDEyOjIyOjAzIDIwMTEgKzAwMDAKLQotICAgIEVuc3VyZSBUQ1AgdGFibGUgaW5mb3JtYXRpb24gaXMgbG9hZGVkIGJlZm9yZSBjb3VudGluZyBjb25uZWN0aW9ucwotICAgIFtGcm9tIEZyZWVCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlNWEyMTkzN2JjZWIxN2E2MTBjYjYzOGU1ZjVmYmQxYmI3YjczYzQyCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxMjoyMjowMyAyMDExICswMDAwCi0KLSAgICBFbnN1cmUgVENQIHRhYmxlIGluZm9ybWF0aW9uIGlzIGxvYWRlZCBiZWZvcmUgY291bnRpbmcgY29ubmVjdGlvbnMKLSAgICBbRnJvbSBGcmVlQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODEwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNGY3YzUyYjU4YzJiNzk1NzhhMDc3YWRmZGI2M2UyODcyYTEwZWUxMQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiA2IDE5OjM1OjA2IDIwMTEgKzAwMDAKLQotICAgIEZpeCBkb2N1bWVudGF0aW9uIGJ1ZyBwb2ludGVkIG91dCBpbiBjcGFuIGJ1ZyAjNTI2MTgKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4MDkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlM2E1OWFlNTY2OWI0NjFlMGIxMDdlN2MyZTlmZWMyNDEwZWY3M2FjCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDYgMTk6MzU6MDYgMjAxMSArMDAwMAotCi0gICAgRml4IGRvY3VtZW50YXRpb24gYnVnIHBvaW50ZWQgb3V0IGluIGNwYW4gYnVnICM1MjYxOAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgwOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGNmYzkyZWM4NDUwNmJjMTY5OWVkZWQ1NThmMDM1YTk0MDA1YTFiYzkKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gNiAxOTozNTowNiAyMDExICswMDAwCi0KLSAgICBGaXggZG9jdW1lbnRhdGlvbiBidWcgcG9pbnRlZCBvdXQgaW4gY3BhbiBidWcgIzUyNjE4Ci0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODA5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNzBlYTliYjYxMDEyYTc1YmI2YTYyYThjOTVjODYxYzRkN2E2ZDAzZgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDYgMTQ6MTE6MjIgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDI5NzUyNTQ6IEF2b2lkIGNhbGxiYWNrIHJlLXVzZSBvZiBjbG9zZWQgc2Vzc2lvbnMKLSAgICAKLSAgICBRbjogU2hvdWxkIHRoaXMgYWxzbyBiZSBhcHBsaWVkIHdoZW4gbWFpbiBzZXNzaW9uIGlzIE5VTEw/Ci0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODA4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgM2M1MDc1NDMxOTY2NGRkYTg4OWY2YmZiMjE2NzkyZGJjMzAwNWI3NgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDYgMTQ6MTE6MjIgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDI5NzUyNTQ6IEF2b2lkIGNhbGxiYWNrIHJlLXVzZSBvZiBjbG9zZWQgc2Vzc2lvbnMKLSAgICAKLSAgICBRbjogU2hvdWxkIHRoaXMgYWxzbyBiZSBhcHBsaWVkIHdoZW4gbWFpbiBzZXNzaW9uIGlzIE5VTEw/Ci0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODA4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZmJiZTJjNzU4NjgxMTBjYmIzYWFhZWY4MDlmZGQ1NzMyMjY4NDk1NAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDYgMTQ6MTE6MjIgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDI5NzUyNTQ6IEF2b2lkIGNhbGxiYWNrIHJlLXVzZSBvZiBjbG9zZWQgc2Vzc2lvbnMKLSAgICAKLSAgICBRbjogU2hvdWxkIHRoaXMgYWxzbyBiZSBhcHBsaWVkIHdoZW4gbWFpbiBzZXNzaW9uIGlzIE5VTEw/Ci0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODA4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOTdiMGU5MTVkYWJiYWU0ZTliODc4ZDlhM2MwZTAxNzYxZjRlZDliNgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDYgMTM6MjE6MzkgMjAxMSArMDAwMAotCi0gICAgRml4IG1pc2xlYWRpbmcgaW5kZW50YXRpb24KLSAgICAKLSAgICBRbjogU2hvdWxkIHRoaXMgY2FsbCAnc3ViYWdlbnRfc3RhcnR1cCcgcmF0aGVyIHRoYW4gJ2FnZW50eF9yZW9wZW5fc2Vzc2lvbic/Ci0gICAgUW46IFdoeSBkb2Vzbid0IHRoaXMgYXR0ZW1wdCB0byByZS1vcGVuIHRoZSBzZXNzaW9uIGlmIGl0IHdhcyBvcmlnaW5hbGx5IE5VTEw/Ci0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODA3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYjdkY2Y4N2ZjNWU5ZWQ0ZmM3OGEzZGRhMGM0ZjE3MjU1NzNiMDQzOAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDYgMTM6MjE6MzkgMjAxMSArMDAwMAotCi0gICAgRml4IG1pc2xlYWRpbmcgaW5kZW50YXRpb24KLSAgICAKLSAgICBRbjogU2hvdWxkIHRoaXMgY2FsbCAnc3ViYWdlbnRfc3RhcnR1cCcgcmF0aGVyIHRoYW4gJ2FnZW50eF9yZW9wZW5fc2Vzc2lvbic/Ci0gICAgUW46IFdoeSBkb2Vzbid0IHRoaXMgYXR0ZW1wdCB0byByZS1vcGVuIHRoZSBzZXNzaW9uIGlmIGl0IHdhcyBvcmlnaW5hbGx5IE5VTEw/Ci0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODA3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZWNjZWI1MWRmYWYyMzBjODljZGIyY2IyZDEwNDM5ZTJlMGUyNDFhNgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDYgMTM6MjE6MzkgMjAxMSArMDAwMAotCi0gICAgRml4IG1pc2xlYWRpbmcgaW5kZW50YXRpb24KLSAgICAKLSAgICBRbjogU2hvdWxkIHRoaXMgY2FsbCAnc3ViYWdlbnRfc3RhcnR1cCcgcmF0aGVyIHRoYW4gJ2FnZW50eF9yZW9wZW5fc2Vzc2lvbic/Ci0gICAgUW46IFdoeSBkb2Vzbid0IHRoaXMgYXR0ZW1wdCB0byByZS1vcGVuIHRoZSBzZXNzaW9uIGlmIGl0IHdhcyBvcmlnaW5hbGx5IE5VTEw/Ci0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODA3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZTU1MDk5OGM0MjExZGFmZjM5NGEyZjc3MjU3NWY5ZTQ2OWQxODU0YQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDYgMTI6NDY6MTkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDI5NDE4MTE6IEhhbmRsZSBzdWNjZXNzZnVsIHJlcXVlc3RzIHdpdGggcmVxSUQgMAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTgwNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDg2ZmY1MzVlMjc2NmI1ZjVhYjIzN2U3MDAyYTdlYzA3ODRlOWY4MDYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiA2IDEyOjQ2OjE5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAyOTQxODExOiBIYW5kbGUgc3VjY2Vzc2Z1bCByZXF1ZXN0cyB3aXRoIHJlcUlEIDAKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiNDIwZTFiNjliZjIzMTNiNmNlNzVjZGVlMjBkNjIyNTg2MGE0Y2IxCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gNiAxMjo0NjoxOSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMjk0MTgxMTogSGFuZGxlIHN1Y2Nlc3NmdWwgcmVxdWVzdHMgd2l0aCByZXFJRCAwCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODA2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNDg1MjVhMGVmNTNhODVkMWYwMjk0MjA1ZDQxYzlkOTE3OWEwMDdkZgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiA2IDA5OjM4OjUwIDIwMTEgKzAwMDAKLQotICAgIFNwZWxsaW5nIGZpeDogSW5pdGlhbHppZXMgLT4gSW5pdGlhbGl6ZXMuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODA1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYWRkYTM2ZGE3NzY0ODZkMDcyYzRkY2Y5ZWFhOGU1N2Q3ODM4NGJjMgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDUgMTY6MzE6NTAgMjAxMSArMDAwMAotCi0gICAgVXNlIHRoZSBhcHByb3ByaWF0ZSBBUEkgY2FsbCBmb3IgcmVwb3J0aW5nIGNvbmZpZyBlcnJvcnMuCi0gICAgKCJEb24ndCBiZSBzbyBpbXBhdGllbnQsIERhdmUuLi4uIikKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4MDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2ZmY4ZjIyZmQ3YjU3Y2YwOTQ1ZDBmMTViMDQzM2E0NzZhNjdkOWJkCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gNSAxNjozMTo1MCAyMDExICswMDAwCi0KLSAgICBVc2UgdGhlIGFwcHJvcHJpYXRlIEFQSSBjYWxsIGZvciByZXBvcnRpbmcgY29uZmlnIGVycm9ycy4KLSAgICAoIkRvbid0IGJlIHNvIGltcGF0aWVudCwgRGF2ZS4uLi4iKQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgwMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGMxMmFiNWVkYmQ4NzY1ZDYzM2YzMjhmZjQ2OGZjMWU4ZGNmNmUyYTAKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiA1IDE0OjA2OjUyIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6IDMxMzQzMjM6IEZpeCBjcmFzaCB3aGVuIGNvbXBhcmluZyBpbnZhbGlkIE9JRHMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjOTJmMjg2MDRkMTNiYWYyYWIwYTZiM2Q3MTAwNzMwZDMzOTQ5ZjBmCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gNSAxNDowNjo1MiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUdTOiAzMTM0MzIzOiBGaXggY3Jhc2ggd2hlbiBjb21wYXJpbmcgaW52YWxpZCBPSURzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODAxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOWFiMTVmYzZlNDI2ZTVlMDhhMzM3NGVjM2RhN2JlNDI4MjdiZGM1MgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDUgMTQ6MDY6NTIgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogQlVHUzogMzEzNDMyMzogRml4IGNyYXNoIHdoZW4gY29tcGFyaW5nIGludmFsaWQgT0lEcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgwMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDA4OTg1YjU5MTQ3MWI5YjQ3OTA4YmZiYjdlYmM2M2FkNWI3NGIxZTIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiA1IDE0OjA0OjU5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXB0cmFwZDogQlVHUzogMzE1MTI1NDogRml4IGNyYXNoIHdpdGggaW52YWxpZCB0cmFwaGFuZGxlIGRpcmVjdGl2ZQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgwMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGZiYWM4YjcyNmRiYzlhNGQwZjczNGM2ZDVkM2I3NzYyZjI3ZjJlZGYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiA1IDE0OjA0OjU5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXB0cmFwZDogQlVHUzogMzE1MTI1NDogRml4IGNyYXNoIHdpdGggaW52YWxpZCB0cmFwaGFuZGxlIGRpcmVjdGl2ZQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTgwMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDJlZjAyZWMwMzNiOTJhMDAwZTgwMWNjMzk3MDI5ODNkZjg3ZWY0MTIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiA1IDE0OjA0OjU5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXB0cmFwZDogQlVHUzogMzE1MTI1NDogRml4IGNyYXNoIHdpdGggaW52YWxpZCB0cmFwaGFuZGxlIGRpcmVjdGl2ZQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgwMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDFiODYyOGEyZjVhMDA2ZTZmMzJiMTIwZDIzMzQ3ODhkZjU4MDEwMzgKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gNCAxODoyNDo1NSAyMDExICswMDAwCi0KLSAgICBDb3B5cmlnaHQgdXBkYXRlIGZvciAyMDExCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMi1wYXRjaGVzQDE5Nzk1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYmM5YmYwODM5NWY5ODdkMWQzOWQxNjUxYTI1ODZlZTA2NzIyNzA4OQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiA0IDE4OjI0OjU1IDIwMTEgKzAwMDAKLQotICAgIENvcHlyaWdodCB1cGRhdGUgZm9yIDIwMTEKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk3OTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1NzQ1MDJhM2M3MWY1Zjk3NjBjMjBlNDJjMzhkM2U5NjcxNmFhN2VhCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDQgMTg6MjQ6NTUgMjAxMSArMDAwMAotCi0gICAgQ29weXJpZ2h0IHVwZGF0ZSBmb3IgMjAxMQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTc5NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGE3ZTY3NTdkZDkyMThkZGMwZmI0NTkxZWI0OTk5OTk4ZTliMGFmY2MKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gNCAxODoyNDo1NSAyMDExICswMDAwCi0KLSAgICBDb3B5cmlnaHQgdXBkYXRlIGZvciAyMDExCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5Nzk1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZGZmZDYyMWFiMDVlZTJhZDRmMTg5MjU1YWVmZDQyYmYyY2I1ZWI3MAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiA0IDEyOjE5OjEzIDIwMTEgKzAwMDAKLQotICAgIEZpeCBjb21waWxlciB3YXJuaW5ncyB0cmlnZ2VyZWQgYnkgdGhlIFdpbjMyIE1JQi1JSSBpbXBsZW1lbnRhdGlvbiAoYmFja3BvcnRlZCByMTk3OTAgZnJvbSB0aGUgdHJ1bmspLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTc5MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGM0ZWM1NDBmNjNjNWUxODRkOTQ3YjZlYmE1MTE0ODI1N2M0MTY3OTYKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gNCAxMjoxNzo1MSAyMDExICswMDAwCi0KLSAgICBSZW1vdmVkIHR3byB1bnVzZWQgdmFyaWFibGVzIGZyb20gdGhlIHNjdHAtbWliIGltcGxlbWVudGF0aW9uIChiYWNrcG9ydGVkIHIxOTc4MCBmcm9tIHRoZSB0cnVuaykuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5NzkyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZTI4Njk5NmE1ODEyNDJiZWZkZjBmY2ZlMzdkOWU1MDM1MzhkMjA0ZQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiA0IDEyOjE1OjI3IDIwMTEgKzAwMDAKLQotICAgIEZpeGVkIGEgcmVjZW50bHkgaW50cm9kdWNlZCBtaXNtYXRjaCBiZXR3ZWVuIGZvcm1hdCBzcGVjaWZpY2F0aW9uIGFuZCBhcmd1bWVudCBsaXN0IGluIHRoZSBpcC1taWIgaW1wbGVtZW50YXRpb24gKGJhY2twb3J0ZWQgcjE5Nzc5IGZyb20gdGhlIHRydW5rKS4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk3OTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgQ0hBTkdFUzogc25tcGQ6IEF2b2lkIHRoYXQgc25tcGQgY3Jhc2hlcyBpZiBzdGFydGVkIG9uIGEgc3lzdGVtIHdpdGggYW5vdGhlciBPcGVuU1NMIGxpYnJhcnkgdmVyc2lvbiB0aGFuIHRoZSBvbmUgaXQgaGFzIGJlZW4gYnVpbHQgd2l0aC4KIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1DaGFuZ2VzOiBWNS42IC0+IFY1LjYuMQorQ2hhbmdlczogVjUuNy5yYzMgLT4gVjUuNy4xCiAKLTIwMTEtMDEtMDMgMjI6MjggIGhhcmRha2VyCisyMDExLTA5LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIAotICAgKiBORVdTOgorICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYzogVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcuMQogCi0gICBORVdTIHVwZGF0ZQogCi0yMDExLTAxLTAzIDIyOjI2ICBoYXJkYWtlcgorMjAxMS0wOS0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiAKLSAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZToKKyAgICogQ2hhbmdlTG9nOiB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS43LjEucmMzCiAKLSAgIENIQU5HRVM6IFVwZ3JhZGVkIERUTFMgc3VwcG9ydCBmcm9tIGFscGhhIHRvIGZ1bGw7IG1lbnRpb24gdGhhdAotICAgdHNtIGlzIG5lZWRlZCBmb3IgVExTIHRvbworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0yMDExLTAxLTAzIDIyOjI0ICBoYXJkYWtlcgorQ2hhbmdlczogVjUuNy5yYzIgLT4gVjUuNy4xLnJjMwogCi0gICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsICAgCi0gICAgICBkaXN0L25ldC1zbm1wLnNwZWM6CisyMDExLTA5LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIAotICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjOiBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNy4xLnJjMwogCi0yMDEwLTEyLTI5IDAxOjQxICBoYXJkYWtlcgorCisyMDExLTA5LTIyICBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CisKKyAgICogOiBjb21taXQgMDdmNjFhMDJhMjQwOTA5NmU1Yzk2MmNkMjExMTI2Mzk2YWQwOWQyYiBNZXJnZTogZWUwZDNhZAorCisgYmRhMzI0YiBBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4gRGF0ZTogICBUaHUKKyBTZXAgMjIgMTA6Mzk6NTkgMjAxMSArMDEwMAorCisyMDExLTA5LTIyICBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CisKKyAgICogOiBjb21taXQgYzU1ZjYwOGYxNmYxNjBmNWU3OWRjMDU3Zjg4NzhkZWY0NjI5NzNlMSBBdXRob3I6IERhdmUKKworIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+IERhdGU6ICAgVGh1IFNlcCAyMiAxMDozNToyNCAyMDExCisgKzAxMDAKKworMjAxMS0wOS0yMiAgU3RldmUgRnJpZWRsIDxzdGV2ZUB1bml4d2l6Lm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrX2h3LmM6IENIQU5HRVM6IHNubXBkOiAzNDA5NjkyOgorCisgQ2FsY3VsYXRlIGRpc2sgcGVyY2VudGFnZSB1c2FnZSB2aWEgZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYyB0bworIGF2b2lkIGludGVnZXIgYXJpdGhtZXRpYyBlcnJvcnMuICAoQ29kZSBiYXNlZCBvbiBwYXRjaCwgcmF0aGVyIHRoYW4KKyBhcHBsaWVkIHZlcmJhdGltKQorCisyMDExLTA5LTIyICBTdGV2ZSBGcmllZGwgPHN0ZXZlQHVuaXh3aXoubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tfaHcuYzogQ0hBTkdFUzogc25tcGQ6IDM0MDk2OTI6CisKKyBDYWxjdWxhdGUgZGlzayBwZXJjZW50YWdlIHVzYWdlIHZpYSBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljIHRvCisgYXZvaWQgaW50ZWdlciBvdmVyZmxvdyBlcnJvcnMuICAoQ29kZSBiYXNlZCBvbiB0aGUgc3VibWl0dGVkIHBhdGNoLAorIHJhdGhlciB0aGFuIGFwcGxpZWQgdmVyYmF0aW0pCisKKzIwMTEtMDktMjIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIENoYW5nZUxvZzogVGhlIG9ubHkgY2hhbmdlIGJldHdlZW4gVjUuNy5yYzEgYW5kIFY1LjcuMS5yYzIgaXMgdGhlCisKKyB2ZXJzaW9uIG51bWJlci4gTWFrZSB0aGlzIGNsZWFyIGluIHRoZSBDaGFuZ2VMb2cgZmlsZS4KKworMjAxMS0wOS0yMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nOiBjaGFuZ2Vsb2cgdXBkYXRlCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ2hhbmdlczogVjUuNy5yYzEgLT4gVjUuNy4xLnJjMgorCisyMDExLTA5LTIxICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYzogVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcuMS5yYzIKKworCisyMDExLTA5LTA0ICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KKworICAgKiA6IGNvbW1pdCA0ZDZkZWZkYWU3MmMzNWIxMDgwMDc2MTgwMzEzZDI5MTA1Njg0NzViIE1lcmdlOiBkM2E3NThjCisKKyAzYjdmZGM0IEF1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+IERhdGU6ICAgU3VuCisgU2VwIDQgMTQ6NDY6MDIgMjAxMSArMDIwMAorCisyMDExLTA5LTA0ICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KKworICAgKiA6IGNvbW1pdCBiYmUyYzE5YTAxZWNlYzAyNGY3NDFlMmU1NDcwMWFlNjIxMmY0YzNlIEF1dGhvcjogTWFnbnVzCisKKyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPiBEYXRlOiAgIFN1biBTZXAgNCAxNDo0NDozOCAyMDExCisgKzAyMDAKKworMjAxMS0wOS0wNCAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CisKKyAgICogOiBjb21taXQgZDNhNzU4Y2YzMDI1NGI4MDcwNmE0M2YxOTFjMTUyMzhiMmNiNzNjOSBNZXJnZTogYzEwN2NlMAorCisgMjI3ZGJkNyBBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPiBEYXRlOiAgIFN1bgorIFNlcCA0IDE0OjA4OjM1IDIwMTEgKzAyMDAKKworMjAxMS0wOS0wNCAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CisKKyAgICogOiBjb21taXQgOWVmYTQ2N2E5NzJiYjZlMWM3ZmJkYWYyZTI3NDI5ZDI5ZjRhYjg5ZSBBdXRob3I6IE1hZ251cworCisgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4gRGF0ZTogICBTdW4gU2VwIDQgMTQ6MDA6MTIgMjAxMQorICswMjAwCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ2hhbmdlczogVjUuNy5wcmUyIC0+IFY1LjcuMS5yYzEKKworMjAxMS0wOC0zMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCBhcHBzL01ha2VmaWxlLmRlcGVuZCwgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6IG1ha2UKKworIGRlcGVuZCBmb3IgNS43LjEucmMxCisKKzIwMTEtMDgtMzAgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvcmVhZF9jb25maWcuYzogZml4IEMrKyBjb21tZW50CisKKworMjAxMS0wOC0zMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjEucmMxCisKKworMjAxMS0wOC0zMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgYzEwN2NlMDc4NDA5ZDI2NWI5YjIxOGQ0OWYzODE1Yjc5NWRiMWRjMyBNZXJnZTogZWE0YjNiMgorCisgOTE1YWE4ZCBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFR1ZSBBdWcgMzAgMTk6MDc6MDcgMjAxMSAtMDcwMAorCisyMDExLTA4LTMwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA0MjJiMDgyYTk1OTNjYTljNjVhYWM0NDllNmQxMjhhOWU5N2U5NGZiIEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFR1ZSBBdWcgMzAKKyAxOTowNjo1NiAyMDExIC0wNzAwCisKKzIwMTEtMDgtMzAgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGVhNGIzYjIzZjM1MDU4M2U1NjI2MzI4YjUzNjdlNmM2MTcyNTVmOTUgTWVyZ2U6IGJjZjM4YjgKKworIGIzNGQ1ZGMgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUdWUgQXVnIDMwIDE2OjM4OjI1IDIwMTEgLTA3MDAKKworMjAxMS0wOC0zMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgNzFjMGQ3NjUwNDkzNzEwNjMxZmEwOGQ1ZGM0ZGFkNTAxYTlhYTc3MSBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBUdWUgQXVnIDMwCisgMTY6Mzc6NDEgMjAxMSAtMDcwMAorCisyMDExLTA4LTMwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBiMTNmNGQ4ODg2YjZhNGU3M2JjMDdkZjJiOTBkMWE2MTE1Y2YzZGZjIE1lcmdlOiBmN2UyMWYyCisKKyA2NGU5Nzc4IEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVHVlIEF1ZyAzMCAxMTowOTozMCAyMDExIC0wNzAwCisKKzIwMTEtMDgtMzAgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGI1ZDJhNDNmOTdhNTk4NThjOTQ0ZWJhMjI5MGI1OWI5M2MyMzBhNmEgTWVyZ2U6IDg2ZWZlZTIKKworIGNmNGNmN2YgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUdWUgQXVnIDMwIDExOjA5OjI5IDIwMTEgLTA3MDAKKworMjAxMS0wOC0zMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBNZXJnZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoICdvcmlnaW4vVjUtNi1wYXRjaGVzJyBpbnRvCisKKyBWNS02LXBhdGNoZXMKKworMjAxMS0wOC0zMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhdXRvLWRldGVybWluZSBwYXRjaCBhcmd1bWVudHMgaWYKKworIHBvc3NpYmxlIGZvciBuc3BhdGNodHJ5CisKKzIwMTEtMDgtMzAgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogbWFrZSBpdCBzbyB0aGUgZ2l0IGNvbW1pdCBsaW5lIGNhbgorCisgYmUgY3V0L3Bhc3RlIHdpdGhvdXQgbGluZWJyZWFrcworCisyMDExLTA4LTMwICBSb25hbGQgV2FobCA8cndhLWNvQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3JlYWRfY29uZmlnLmM6IENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDMzOTQ1ODY6IGZyb20KKworIHJ3YS1jbzogZmlsZSBkZXNjcmlwdG9yIGxlYWsgaW4gcmVhZF9jb25maWcgKCtmaXgpIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTMwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDogZGVzY3JpYmUgdGhhdCBuc3JvbGx1cCBuZWVkcyB0byBiZSBydW4gbm93LgorCisKKzIwMTEtMDgtMzAgIERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KKworICAgKiA6IGNvbW1pdCAyYjkyYTBhMWUzYTA2MThjNTE1ZWJkOTAyMjcxYjk1YzA4OTMxYWZhIE1lcmdlOiBhMDg2MzQ3CisKKyA4NmVmZWUyIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPiBEYXRlOiAgIFR1ZQorIEF1ZyAzMCAxMToyODoxNCAyMDExICswMTAwCisKKzIwMTEtMDgtMzAgIERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KKworICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50ZW50LmM6IEFwcGFyZW50bHkgSVJJWCBoYXMgYQorCisgZGlmZmVyZW50IEFQSSBmb3Igc3RhdGZzCisKKzIwMTEtMDgtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYzogZG9uJ3QgcHJvdmlkZSBhIGZlYXR1cmUgd2hlbiB5b3VyIGEKKworIGNoaWxkIG9mIGFub3RoZXIgZmVhdHVyZQorCisyMDExLTA4LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IE1lcmdlIHJlbW90ZS10cmFja2luZyBicmFuY2ggJ29yaWdpbi9WNS03LXBhdGNoZXMnIGludG8KKworIFY1LTctcGF0Y2hlcworCisyMDExLTA4LTI4ICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KKworICAgKiBhcHBzL01ha2VmaWxlLmluOiBVc2UgdGhlIGZlYXR1cmUgdGFyZ2V0IGluc3RlYWQgb2YgdGhlIHRhcmdldAorCisgd2hlbiBidWlsZGluZyB0aGUgZmVhdHVyZSBzZXQKKworMjAxMS0wOC0yOSAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy5oOiB0aGUgaXJpeDYgYnVpbGQgb25seSBkZWZpbmVzCisKKyBpcml4Niwgbm90IGlyaXgKKworMjAxMS0wOC0yOSAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX3N0cnVjdF9tZW1iZXJzLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IHJlLWFkZCBzb2NrYWRkcl91bi5zdW5fcGF0aAorCisgY29uZmlndXJlIGNoZWNrIChsb3N0IGluIHByZXZpb3VzIGNvbW1pdCkKKworMjAxMS0wOC0yOCAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy5oOiAKKworIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRlbnQuYyBkb2Vzbid0IGJ1aWxkIG9uIElSSVggeWV0CisKKzIwMTEtMDgtMjggIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGEwODYzNDc5ZDgwOTYyYzY1Mjk0N2RmZGVlMTFiZGQxMzZjMGUwMTMgTWVyZ2U6IDUyNTA4OTMKKworIGY5NWFhMzEgQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBTdW4gQXVnIDI4IDIzOjM3OjI3IDIwMTEgKzAyMDAKKworMjAxMS0wOC0yOCAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX3N0cnVjdF9tZW1iZXJzLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIHNubXBsaWIvc25tcFVEUERvbWFpbi5jLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiBDSEFOR0VTOiBidWlsZGluZzogYnVpbGQgZml4CisKKyBmb3Igc3lzdGVtcyBsYWNraW5nIGZpZWxkcyBtc2dfY29udHJvbC9tc2dfZmxhZ3MgaW4gc3RydWN0IG1zZ2hkcgorIChiYWNrcG9ydCkKKworMjAxMS0wOC0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmMtY29uZi5kL21mZC1pbnRlcmZhY2UubTJjOiBhZGRlZCByZXF1aXJlZCBmZWF0dXJlcyBmb3IKKworIG1mZCBoYW5kbGluZworCisyMDExLTA4LTI2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAuZ2l0aWdub3JlOiBhZGRlZCAuZnQgYW5kIC5mdC4xIGZvciBmZWF0dXJlIGZpbGVzCisKKworMjAxMS0wOC0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogcGVybC9hZ2VudC9hZ2VudC54czogbm9fd3JpdGVfc3VwcG9ydCBzdXBwb3J0ZWQKKworCisyMDExLTA4LTI2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyZmFjZS5tMmM6IGhhbmRsZSBuby13cml0ZS1zdXBwb3J0IHdpdGgKKworIGlmZGVmcworCisyMDExLTA4LTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA1MjUwODkzMjdhYmE3ZDAxZDYzM2M2MzRjNmI2ZjA2ZGU0MmFjYmI4IE1lcmdlOiAxYmIyMzRhCisKKyAwNGZkNzFhIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVGh1IEF1ZyAyNSAwNjo1NzoyMSAyMDExIC0wNzAwCisKKzIwMTEtMDgtMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGVhOGJlZDc5ZTgxYzQyZTMzY2JmMzdjYTZmM2MwM2M1NDk5ODdiMjIgQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgVGh1IEF1ZyAyNQorIDA2OjU2OjIyIDIwMTEgLTA3MDAKKworMjAxMS0wOC0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogcHl0aG9uL25ldHNubXAvY2xpZW50LnB5OiB1c2UgPj4gdG8gcHJpbnQgdG8gc3RkZXJyCisKKworMjAxMS0wOC0yMyAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1yZW1vdmU6IENIQU5HRVM6IGJ1aWxkOiBEbyBub3QgZ2VuZXJhdGUKKworIGFuIG91dHB1dCBmaWxlIG9uIGZhaWx1cmUgbWFrZSBzdXBwb3NlcyB0aGF0IG5vIG91dHB1dCBpcyBnZW5lcmF0ZWQgaWYgdGhlIGNvbW1hbmQgZmFpbGVkLgorIENoYW5nZSBmZWF0dXJlLXJlbW92ZSB0byBmb2xsb3cgdGhhdCBwcmVzdW1wdGlvbi4KKworMjAxMS0wOC0yMSAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1yZW1vdmU6IENvcnJlY3QgdHlwbworCisKKzIwMTEtMDgtMjMgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDFiYjIzNGE2Y2MzNmU2YTRlZmJlM2ZiMjljNDgwMjEwZGMyYjljMTMgTWVyZ2U6IDM1YTk4YzMKKworIDFmMDgyYTMgQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUdWUgQXVnIDIzIDIzOjM4OjA3IDIwMTEgKzAyMDAKKworMjAxMS0wOC0yMyAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnM6IG1ha2Ugc3VyZSB0aGF0CisKKyBfS0VSTkVMIGlzIGRlZmluZWQgdG8gMSBzbyB0aGF0ICIjaWYgX0tFUk5FTCIgd29ya3Mgb24gc3lzdGVtcyB0aGF0CisgbmVlZCBpdCAoZS5nLiBJUklYKQorCisyMDExLTA4LTIzICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCAzNWE5OGMzZDdjNWEzYzVkZjM1NmFkZDllOGI4MDgyODc4OTliNjlhIE1lcmdlOiAxZjM3ZjU3CisKKyBhMjdmNzQ0IEF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVHVlIEF1ZyAyMyAyMzozMDoyNyAyMDExICswMjAwCisKKzIwMTEtMDgtMjMgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDI2YmIyNDcwYzEwNmY4MzQ0NDJhMmFkYmM3NjExYmYxNjY1N2ZiZGYgQXV0aG9yOiBUaG9tYXMKKworIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgVHVlIEF1ZyAyMyAyMzoyMjo0NAorIDIwMTEgKzAyMDAKKworMjAxMS0wOC0yMiAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBhdXRvcmVjb25mCisKKworMjAxMS0wOC0yMiAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVycywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4uYywgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogQ0hBTkdFUzogYnVpbGRpbmc6IGJ1aWxkIGZpeAorCisgZm9yIHN5c3RlbXMgbGFja2luZyBmaWVsZCBtc2dfZmxhZ3MgaW4gc3RydWN0IG1zZ2hkciAoZS5nLiBJUklYKQorCisyMDExLTA4LTIxICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBjb25maWd1cmU6IGF1dG9yZWNvbmYKKworCisyMDExLTA4LTIxICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBjb25maWd1cmU6IGF1dG9yZWNvbmYKKworCisyMDExLTA4LTIxICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBjb25maWd1cmU6IGF1dG9yZWNvbmYKKworCisyMDExLTA4LTIxICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBiNjJjYjA4NjRmNTc3YmE4NTU3M2QwZDI1MGQxMmEzOTM4N2MwN2I0IEF1dGhvcjogVGhvbWFzCisKKyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFN1biBBdWcgMjEgMDA6NTU6MzMKKyAyMDExICswMjAwCisKKzIwMTEtMDgtMjEgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDcxYjkwYjZmMjE3OTQ0YjRmZmMxODM2ZTUxNjBkNDBlMzNiNDQyM2QgQXV0aG9yOiBUaG9tYXMKKworIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgU3VuIEF1ZyAyMSAwMDo0MDoyOAorIDIwMTEgKzAyMDAKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDaGFuZ2VzOiBWNS43LnByZTEgLT4gVjUuNy4xLnByZTIKKworMjAxMS0wOC0xOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCBhcHBzL01ha2VmaWxlLmRlcGVuZCwgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6IG1ha2UKKworIGRlcGVuZCBmb3IgNS43LjEucHJlMgorCisyMDExLTA4LTE4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYzogVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcuMS5wcmUyCisKKworMjAxMS0wOC0xOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgMDMwNTM0Nzk2MDRiYzgzZWZiZWE1NzliNDU2MmIxODMxY2VhMWNiNiBNZXJnZTogZjczZTYzNgorCisgZDk0ZGYzOSBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBBdWcgMTggMTE6NTc6NDYgMjAxMSAtMDcwMAorCisyMDExLTA4LTE4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCAyOGI1NDA3MDUxNDc1M2U4ZDhhYmI3MThiMjI0ZDY1N2FiN2E4YWI4IEF1dGhvcjogR2FycmV0dAorCisgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgVGh1IEF1ZyAxOAorIDExOjQ5OjU2IDIwMTEgLTA3MDAKKworMjAxMS0wOC0xOCAgVmxhZGltaXIgS29uZHJhdGlldiA8d3VsZjIwMDFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tfaHcuYzogQ0hBTkdFUzogYWdlbnQ6IFBBVENIIDMzODkyMjg6CisKKyBmcm9tIHd1bGYyMDAxOiBpbmNvbXBsZXRlIGNvbW1pdCAocGF0Y2ggMzM4NjYzMzogZml4IGludGVnZXIKKyBvdmVyZmxvdykgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMTggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wLmNvbmYuNS5kZWY6IFBhdGNoIGZyb20gQ2xhdXMgS2xlaW4gb24gLWNvZGVycyBmb3IgZml4aW5nCisKKyBtYW4gcGFnZSB0eXBvcworCisyMDExLTA4LTE4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6IGNoYW5nZWQgY2xpZW50YWRkciBzbyBpdCByZWdpc3RlcnMgYXMgcHJlLW1pYgorCisgdG8gYmUgcGlja2VkIHVwIGJlZm9yZSB0aGUgdHJhbnNwb3J0cyBnZXQgY3JlYXRlZAorCisyMDExLTA4LTE3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBjMDIxMzFlNWIzNWQyOTY3NTViYWVjOTliZDM2MzIwNWE4NjMwN2RkIEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFdlZCBBdWcgMTcKKyAwOTozNDowMCAyMDExIC0wNzAwCisKKzIwMTEtMDgtMTcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHNubXBsaWIvc3lzdGVtLmM6IEZpeCB0aGUgbG9nIG1lc3NhZ2UgdGhhdCByZXBvcnRzIHRoYXQKKworIGdldGhvc3RieWFkZHIoKSBpcyBtaXNzaW5nCisKKzIwMTEtMDgtMTcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDE4MmUxZGMwYzNlYWNmYTRlOWNjZGIyODYwMGZmMGYyMzcwMjExYWUgTWVyZ2U6IDQ5OWI3OTYKKworIDUxN2I2YjAgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBXZWQgQXVnCisgMTcgMTg6MDk6MzAgMjAxMSArMDIwMAorCisyMDExLTA4LTE3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA2NTgwNTU2Y2M3YmQ4MzNhZjczMWI2MmNlMWVkMjAxNzU2NGZlN2ViIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFdlZCBBdWcgMTcgMTg6MDg6MDEgMjAxMSArMDIwMAorCisyMDExLTA4LTE0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA0OTliNzk2Y2JkNzgwNjVjMzM1NDc3OTEzNmJkM2Q5ZDFmNTQ4YTU4IE1lcmdlOiAwNDE4ZmYwCisKKyBhOWNiMjY3IEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgU3VuIEF1ZworIDE0IDA4OjAyOjM4IDIwMTEgKzAyMDAKKworMjAxMS0wOC0xNCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgM2NiM2YxZWRlMzg4ZDg0ZTM5MmUxZDgxNWQ1OTk0YTRiZjBmMTBmOSBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBTdW4gQXVnIDE0IDA3OjU5OjI1IDIwMTEgKzAyMDAKKworMjAxMS0wOC0xMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogcGVybC9PSUQvT0lELnhzLCBwZXJsL1NOTVAvU05NUC54cywgcGVybC9hZ2VudC9hZ2VudC54czogV2luZG93czoKKworIE1ha2UgdGhlIFBlcmwgYWdlbnQgbW9kdWxlIHdvcmsgYWdhaW4gd2l0aCB0aGUgb3JpZ2luYWwgU05NUF9GUkVFKCkKKyBkZWZpbml0aW9uLgorCisyMDExLTA4LTEzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAwNDE4ZmYwY2RhMjE0MTFhNDdmYTg5NzhjM2UwZDA0M2ExOWQyNGI2IE1lcmdlOiAyNmIwYWEzCisKKyAzYzczYjQ4IEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgU2F0IEF1ZworIDEzIDE4OjQyOjA1IDIwMTEgKzAyMDAKKworMjAxMS0wOC0xMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmg6IFJldmVydCB0aGUgdHdvIG1vc3QgcmVjZW50CisKKyBTTk1QX0ZSRUUoKSBjaGFuZ2VzIChjb21taXRzCisgNDdjOGVmMWI4OWM2Y2NiNDI0N2Q5NjMzNDc3OTI1OTA4YzY4YzFhNSBhbmQKKyA3ZjQyZDBkOTMzMjA0ODQxNTIyNzE0MjdjYzk4MDhjYmRhNDliYmQwKS4KKworMjAxMS0wOC0xMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgMjZiMGFhMzAxMGZhMTgyYjYwMzlhOGMyY2FkOGNjYjQ1NzE2NTJkZSBNZXJnZTogMmYzZDYwNworCisgMGM4ZTFhOSBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFNhdCBBdWcKKyAxMyAxMTo0MzoyMCAyMDExICswMjAwCisKKzIwMTEtMDgtMTMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDNlNTBjM2UwMGU5ZjMyMWZiNzA4YmM1NzllYjRkYzFhMGYxZTdjNGQgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgU2F0IEF1ZyAxMyAxMTozMTo0MCAyMDExICswMjAwCisKKzIwMTEtMDgtMTMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDJmM2Q2MDc5ZGMzNmFhZDk1NTlkOTFjNWMzMjRlMmNlNTM1NTczZGQgTWVyZ2U6IGUzMmFhOTcKKworIGZmMTczNGQgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBTYXQgQXVnCisgMTMgMDk6MDg6MDYgMjAxMSArMDIwMAorCisyMDExLTA4LTEzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBlMTQ3ZTRiOTY3NTUyMDdkZTFjZTMwOTkwZDY3YjRiN2M3NmRkNDgzIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFNhdCBBdWcgMTMgMDg6Mzk6MTQgMjAxMSArMDIwMAorCisyMDExLTA4LTEzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB3aW4zMi9idWlsZC5wbDogQ0hBTkdFUzogV2luZG93czogYnVpbGRpbmcgKGJ1aWxkLmJhdCk6IEluc3RhbGwKKworIG5ldHNubXAuZGxsIGJlZm9yZSBydW5uaW5nIHRoZSBQZXJsIHJlZ3Jlc3Npb24gdGVzdHMgc3VjaCB0aGF0IHRoZQorIHJlZ3Jlc3Npb24gdGVzdHMgYXJlIHJ1biB3aXRoIHRoZSBjb3JyZWN0IHZlcnNpb24gb2YgbmV0c25tcC5kbGwuCisKKzIwMTEtMDgtMTMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHdpbjMyL01ha2VmaWxlLmluOiBDSEFOR0VTOiBXaW5kb3dzOiBwZXJsIChidWlsZC5iYXQpOiBXaGVuCisKKyBpbnN0YWxsaW5nIGRldmVsb3BtZW50IGZpbGVzLCBpbnN0YWxsIHRoZSBQREIgZmlsZXMgdG9vLgorCisyMDExLTA4LTEzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAgcGVybC9TTk1QL3QvYXN5bmMudCwgcGVybC9TTk1QL3QvY29uZi50LCBwZXJsL1NOTVAvdC9taWIudCwgCisgICAgICBwZXJsL2FnZW50L3Rlc3QucGw6IENIQU5HRVM6IHRlc3Rpbmc6IEZpeCBQZXJsIHJlZ3Jlc3Npb24gdGVzdAorCisgZmFpbHVyZXMgQWxsIFBlcmwgcmVncmVzc2lvbiB0ZXN0cyBwYXNzIG5vdyBvbiBMaW51eCBhbmQgb24gV2luZG93cyAoTVNWQykuCisKKzIwMTEtMDgtMTMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHBlcmwvU05NUC90L2FzeW5jLnQsIHBlcmwvU05NUC90L2J1bGt3YWxrLnQ6IENIQU5HRVM6IHRlc3Rpbmc6CisKKyBQZXJsIHJlZ3Jlc3Npb24gdGVzdHM6IERvbid0IGZhaWwgc2tpcHBlZCB0ZXN0cy4KKworMjAxMS0wOC0xMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogcGVybC9TTk1QL1NOTVAucG0sIHBlcmwvU05NUC9TTk1QLnhzOiBDSEFOR0VTOiBwZXJsOiBBZGQKKworIFNOTVA6OmdldGVudigpIGFuZCBTTk1QOjpzZXRlbnYoKS4KKworMjAxMS0wOC0xMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgsIHNubXBsaWIvdG9vbHMuYzogQ0hBTkdFUzoKKworIHNubXBsaWI6IEFkZCBuZXRzbm1wX3NldGVudigpLgorCisyMDExLTA4LTEzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBsb2NhbC9wYXNzX3BlcnNpc3R0ZXN0OiBsb2NhbC9wYXNzX3BlcnNpc3R0ZXN0OiBkb2N1bWVudCBob3cgdG8KKworIHVzZSBvbiBXaW5kb3dzCisKKzIwMTEtMDgtMTMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGxvY2FsL3Bhc3NfcGVyc2lzdHRlc3Q6IFNldCBleGVjdXRlIGZsYWcgb24gbG9jYWwvcGFzc19wZXJzaXN0dGVzdAorCisgc3VjaCB0aGF0IHRoZSBpbnN0cnVjdGlvbnMgaW4gdGhhdCBmaWxlIHdvcmsKKworMjAxMS0wOC0xMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogLmdpdGlnbm9yZTogLmdpdGlnbm9yZTogRml4IGEgc3VwcHJlc3Npb24gcGF0dGVybgorCisKKzIwMTEtMDgtMTIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGUzMmFhOTc3NDIyMzJjZWQzYTcyZjhiODQ1YWNlNWNlM2Q1M2I4ZGYgTWVyZ2U6IDRhZGZlYzgKKworIDg2ZmJkMzMgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBGcmkgQXVnIDEyIDA5OjExOjE0IDIwMTEgLTA3MDAKKworMjAxMS0wOC0xMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgYTczZWI0MGVjMjYzYTBmZGY1M2E3NGU3MjBkZGY0MWM0YTdlZTNkNCBNZXJnZTogNzY5MDg5NAorCisgMjk0MGVlMyBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIEZyaSBBdWcgMTIgMDk6MTE6MTMgMjAxMSAtMDcwMAorCisyMDExLTA4LTEyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCAxZjBhOTI4YTI5MTNjZmE3ZjVjZWFhZjQ2OTZjNjlmYmRjNjg3NjIxIEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIEZyaSBBdWcgMTIKKyAwOTowOToxMSAyMDExIC0wNzAwCisKKzIwMTEtMDgtMTEgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDRhZGZlYzgxMjE2ZjZjNWJmMjVjOWFjNmIyYjc0NzhkMWJlOGU4NDIgTWVyZ2U6IDI4MWI4NjkKKworIDI5NDBlZTMgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUaHUgQXVnCisgMTEgMTg6NTc6MjkgMjAxMSArMDIwMAorCisyMDExLTA4LTExICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAxZTEwMDBhODgxNTkyMWI1ZWMyZTc5OTdiNTM1OTJhNTQ0YjNkZmMyIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFRodSBBdWcgMTEgMTU6NDY6MzIgMjAxMSArMDIwMAorCisyMDExLTA4LTExICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAyODFiODY5NjFiMTAyNjZkZGYzODgzOTQyZDRkYzNiNmI5OGQzMjI3IE1lcmdlOiBkOGQyMjVjCisKKyBmMTgxMDk5IEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVGh1IEF1ZworIDExIDE4OjQ2OjA2IDIwMTEgKzAyMDAKKworMjAxMS0wOC0xMSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBNZXJnZSBWNS00LXBhdGNoZXMuCisKKworMjAxMS0wOC0xMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5jOiBkb24ndCBhc3NlcnQgb24gYSBkb3VibGUKKworIGluaXQ7IGp1c3QgZG9uJ3QgZG8gaXQgdHdpY2UKKworMjAxMS0wOC0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgZDhkMjI1Y2EzNGE4ZjIyNzUyMTUzYWNiNzk0NGY5NDM1ZjU2NGQyYyBNZXJnZTogMDZiNDE4NgorCisgNDdjOGVmMSBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFdlZCBBdWcKKyAxMCAxODowNToyMSAyMDExICswMjAwCisKKzIwMTEtMDgtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oOiBTTk1QX0ZSRUUoKTogY2FzdCBhcmd1bWVudCB0bworCisgKHZvaWQgKikgYmVmb3JlIHBhc3NpbmcgaXQgdG8gbmV0c25tcF9mcmVlKCkKKworMjAxMS0wOC0wOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgMDZiNDE4NjVlYzMwMmMzOTMxYjEwODNkM2ZkZTg5ZjkzNDVlYzA2ZiBNZXJnZTogMTE0MjZmYgorCisgYTRmNmFjNyBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFR1ZSBBdWcgOSAwNjo0NDo0MSAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDExNDI2ZmIzYzZmMzI3ODIwYjliYjg2YTc2ZWNjOWUyYzM3ZTc5MzQgTWVyZ2U6IDAzNDRkZjkKKworIDliZjA2ODEgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUdWUgQXVnIDkgMDY6NDQ6MTEgMjAxMSAtMDcwMAorCisyMDExLTA4LTA5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IE1lcmdlIHJlbW90ZS10cmFja2luZyBicmFuY2ggJ29yaWdpbi9WNS00LXBhdGNoZXMnIGludG8KKworIFY1LTQtcGF0Y2hlcworCisyMDExLTA4LTA5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA5YmYwNjgxMjE4ZWRmNDNjZGI1ZmM2OGYxNzIxMjNiYzRhMmQwMTg4IE1lcmdlOiBmOWRiNjExCisKKyBjY2IwZWI2IEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVHVlIEF1ZworIDkgMDg6MTk6MzMgMjAxMSArMDIwMAorCisyMDExLTA4LTA5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBkZTdlMzQ4ZWNlMDNkMjM4MGMyYTg4MDZlYmJhZDVkOWI1NDg3NjgyIE1lcmdlOiBkNTM4YmNiCisKKyBjY2IwZWI2IEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVHVlIEF1ZworIDkgMDg6MDc6MjIgMjAxMSArMDIwMAorCisyMDExLTA4LTA5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAwMjIwMzkyZDg5OWE5Y2FiNzAxZjc0YWYxMjAzMGJiMWQ0Y2M1ZTJlIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIEZyaSBKdWwgMSAxMzowMjoxNSAyMDExICswMjAwCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENIQU5HRVMsIE5FV1M6IHZlcnNpb24gdXBkYXRlIGZvciA1LjcuMS5wcmUxCisKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nOiB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS43LjEucHJlMQorCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L3NubXBkLmM6IGZpeCBDKysgY29tbWVudHMKKworCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9zbm1wZC5jOiBmaXggQysrIGNvbW1lbnRzCisKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvc25tcGQuYzogZml4IEMrKyBjb21tZW50cworCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L3NubXBkLmM6IGZpeCBDKysgY29tbWVudHMKKworCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYywgcGVybC9BU04vQVNOLnBtLCBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLAorICAgICAgIHBlcmwvT0lEL09JRC5wbSwgcGVybC9TTk1QL1NOTVAucG0sIAorICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtLCBwZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbSwgCisgICAgICBwZXJsL2FnZW50L2FnZW50LnBtLCBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwgCisgICAgICBwZXJsL2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbTogVmVyc2lvbiBudW1iZXIgdXBkYXRlOgorCisgNS43LjEucHJlMQorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBNYWtlZmlsZS50b3A6IHZlcnNpb24gdXBkYXRlIGZvciA1LjcuMS5wcmUxCisKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgY2Y0Y2NlNGMxODljZjQ3ZjRjNDg5ZGI0M2I3ZmE1MTBmODkwNmExYSBNZXJnZTogZGY5MWE5ZgorCisgOTNlOTdkYyBBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4gRGF0ZTogICBNb24KKyBBdWcgOCAyMjoxNToyOCAyMDExICswMTAwCisKKzIwMTEtMDgtMDggIERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KKworICAgKiA6IE1lcmdlIHJlbW90ZS10cmFja2luZyBicmFuY2ggJ29yaWdpbi9WNS02LXBhdGNoZXMnIGludG8KKworIFY1LTYtcGF0Y2hlcworCisyMDExLTA4LTA4ICBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CisKKyAgICogOiBNZXJnZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoICdvcmlnaW4vVjUtNC1wYXRjaGVzJyBpbnRvCisKKyBWNS00LXBhdGNoZXMKKworMjAxMS0wOC0wOCAgRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorCisgICAqICB3aW4zMi9NYWtlZmlsZS1hcHBzLmluLCB3aW4zMi9kaXN0L1JFQURNRS5idWlsZC53aW4zMi50eHQsIAorICAgICAgd2luMzIvbGliYWdlbnQvTWFrZWZpbGUuaW4sIHdpbjMyL2xpYm5ldHNubXB0cmFwZC9NYWtlZmlsZS5pbiwgCisgICAgICB3aW4zMi9saWJzbm1wL01ha2VmaWxlLmluLCB3aW4zMi9saWJzbm1wX2RsbC9NYWtlZmlsZS5pbiwgCisgICAgICB3aW4zMi9uZXRzbm1wbWlicy9NYWtlZmlsZS5pbiwgd2luMzIvc25tcGQvTWFrZWZpbGUuaW4sIAorICAgICAgd2luMzIvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sIHdpbjMyL3NubXB0cmFwZC9NYWtlZmlsZS5pbjogRGVmaW5lCisKKyBfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIHRva2VuIChhcyBwZXIgQWxleCcgYnVpbGQKKyBpbnN0cnVjdGlvbnMpCisKKzIwMTEtMDgtMDggIERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KKworICAgKiAgd2luMzIvTWFrZWZpbGUtYXBwcy5pbiwgd2luMzIvbGliYWdlbnQvTWFrZWZpbGUuaW4sIAorICAgICAgd2luMzIvbGliaGVscGVycy9NYWtlZmlsZS5pbiwgd2luMzIvbGlibmV0c25tcHRyYXBkL01ha2VmaWxlLmluLCAKKyAgICAgIHdpbjMyL2xpYnNubXAvTWFrZWZpbGUuaW4sIHdpbjMyL2xpYnNubXBfZGxsL01ha2VmaWxlLmluLCAKKyAgICAgIHdpbjMyL25ldHNubXBtaWJzL01ha2VmaWxlLmluLCB3aW4zMi9zbm1wZC9NYWtlZmlsZS5pbiwgCisgICAgICB3aW4zMi9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbiwgd2luMzIvc25tcHRyYXBkL01ha2VmaWxlLmluOiBEZWZpbmUKKworIF9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04gdG9rZW4gKGFzIHBlciBBbGV4JyBidWlsZAorIGluc3RydWN0aW9ucykKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBNZXJnZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoICdvcmlnaW4vVjUtNC1wYXRjaGVzJyBpbnRvCisKKyBWNS00LXBhdGNoZXMKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZGYxNmRjMjIyMWU5OTNkZDNjNjY2NTBkNWU4NzI1NzdmZmU2YzAxYiBNZXJnZTogNzE0YmM4MgorCisgOGU1YTI4ZCBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIE1vbiBBdWcgOCAxMzo1Njo0MyAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGZmYTA1YjA1MWFjM2UyYjE5NzE5NWE5OTg5Y2M3YTkxZmU4ZDkyODIgQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgTW9uIEF1ZyA4IDEzOjU1OjM4CisgMjAxMSAtMDcwMAorCisyMDExLTA4LTA4ICBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CisKKyAgICogOiBjb21taXQgNzE0YmM4MmZhMDFlMjFhMzY1NTgyNDk2M2ZhNTRlOWI4MDQyZmZiMCBNZXJnZTogNmZlOGZlNQorCisgM2VmMWRiNSBBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4gRGF0ZTogICBNb24KKyBBdWcgOCAyMToyMTo0NiAyMDExICswMTAwCisKKzIwMTEtMDgtMDggIERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KKworICAgKiA6IGNvbW1pdCBiNDUxNjA3ZGNhMDE1YzExMWU5NmZkZmViMmRkYjA2NjFmYjRmNzI0IEF1dGhvcjogRGF2ZQorCisgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4gRGF0ZTogICBNb24gQXVnIDggMjE6MjA6MzIgMjAxMQorICswMTAwCisKKzIwMTEtMDgtMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDZmZThmZTUyOTRhNDViYzdlNGVhMzc1MWExYWQ3YWE0N2I1Y2FiYjIgTWVyZ2U6IDM2NGY4ZmYKKworIGY2OWFiZTMgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBNb24gQXVnCisgOCAyMjowMjozOCAyMDExICswMjAwCisKKzIwMTEtMDgtMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGM5NDgxMzA0NGE0YzRhNjA4ZTk4ZTgwMjIzMDc1YzZmYWYwNGVlMTEgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgTW9uIEF1ZyA4IDIxOjU2OjE1IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgMzY0ZjhmZmFlYjkwYjRlYjAxNjVmYzg1NTY4OGNkMDYyNjYzMjc5NCBNZXJnZTogMzI4NzI5NQorCisgN2FiYjkyNiBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIE1vbiBBdWcgOCAxMToyNDoyNiAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogTWVyZ2UgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCAnb3JpZ2luL1Y1LTYtcGF0Y2hlcycgaW50bworCisgVjUtNi1wYXRjaGVzCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogZGlzcGxheSB0aGUgYnJhbmNoIHdlJ2xsIGNvbW1pdCB0bworCisKKzIwMTEtMDgtMDggIFZsYWRpbWlyIEtvbmRyYXRpZXYgPHd1bGYyMDAxQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrX2h3LmM6IENIQU5HRVM6IHNubXBkOiBQQVRDSCAzMzg2NjMzOgorCisgZnJvbSB3dWxmMjAwMTogZml4IGludGVnZXIgb3ZlcmZsb3cgaW4gZGlzayBwZXJjZW50IGNhbGN1bGF0aW9ucyBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgODRhNzc1ZDA1NTdmZWE5NzU3MGU0MTcxNWEzMTY0OTcwYjRjMDNhMiBNZXJnZTogNmZmZjFjMQorCisgZDM3M2M0ZiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIE1vbiBBdWcKKyA4IDIwOjEyOjMyIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wOCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9hZ2VudF90cmFwLmM6IENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDMzODcxMzk6IGZyb20KKworIHlhYmVyYXVuZXlhOiBBdm9pZCBzZWdmYXVsdCBpZiB0cmFwc2VzcyB0cmFuc3BvcnQgZWxlbWVudCBjYW50IGJlCisgcGFyc2VkIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IG5zc2ZwYXRjaGFwcGx5OiBzcGxpdCB0aGUKKworIGRpc3BsYXllZCBnaXQgY29tbWl0IGNvbW1hbmQgaW50byBtdWx0aXBsZSBzZWdtZW50cworCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBhZ2VudC9oZWxwZXJzL3NjYWxhcl9ncm91cC5jOiBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMzM4Njk2MToKKworIE1ha2UgU05NUCBHRVQgd29yayBpbiBhbiBBZ2VudFggc3ViYWdlbnQgaWYgd3JpdGUgc3VwcG9ydCBpcworIGRpc2FibGVkIHZpYSBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKE1hcmsgUnVzaykuCisKKzIwMTEtMDgtMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHNubXBsaWIvbWliLmM6IENIQU5HRVM6IHNubXBsaWI6IEZpeCBhIGNyYXNoIHRoYXQgY291bGQgYmUKKworIHRyaWdnZXJlZCBieSBjYWxsaW5nIF9taWJpbmRleF9hZGQoKSB3aXRoIHRoZSBzZWNvbmQgYXJndW1lbnQgbm90CisgZXF1YWwgdG8gLTEuCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDZmZmYxYzFhZTUxYjA2YzlkODBmYWYxNTM3M2E5NjNkMTczZjE0ZTggTWVyZ2U6IDgzN2M1MmUKKworIDhjYzkwMDQgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBNb24gQXVnIDggMTA6NTg6NTkgMjAxMSAtMDcwMAorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA4Y2E3ZmYxZTY5MmNhZWM0MTg2Yjc4OGM5YWUyZDI3YmUyMTMyOTBmIEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIE1vbiBBdWcgOCAxMDozMzo1NgorIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBNZXJnZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoICdvcmlnaW4vVjUtNC1wYXRjaGVzJyBpbnRvCisKKyBWNS00LXBhdGNoZXMKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgYjhmNTI5Y2JhMjdjMDExNGI0Y2I3MzQwY2ZkNDQ5NTA0ZmEwNzUwNiBNZXJnZTogMDgyMmYyZAorCisgNTU2ZTkzOCBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIE1vbiBBdWcgOCAxMDowNTozNiAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogZml4IGZ1bmN0aW9uIG5hbWUgdHlwbworCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDI5ODgyYTA3OGE5NTlhMGY3OGIwM2UwMTk2OGYxZDE3YjdmNmEyOTkgTWVyZ2U6IDVlOWJkMmYKKworIDA0MDljMGEgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBNb24gQXVnIDggMTA6MDM6MzQgMjAxMSAtMDcwMAorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IG1hbnVhbCBtZXJnZSBvZiBwdWxsL3B1c2gKKworCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IG1ha2UgbnNwdWxsL25zcHVzaCBjaGVjayBmb3IgYQorCisgY2xlYW4gcmVwbworCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IG5ldyBmdW5jdGlvbiAibnNtYWtlYWxsIiB0byB0ZXN0CisKKyBidWlsZGluZyBvbiBldmVyeSBicmFuY2gKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBkZWZhdWx0IHRvIG1lcmdlCisKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBNZXJnZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoICdvcmlnaW4vVjUtNy1wYXRjaGVzJyBpbnRvCisKKyBWNS03LXBhdGNoZXMKKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmg6IENIQU5HRVM6IFdpbmRvd3M6IEF2b2lkIHRoYXQgaWYKKworIHRoZSBOZXQtU05NUCBQZXJsIG1vZHVsZXMgaGF2ZSBiZWVuIGJ1aWx0IHdpdGggYW5vdGhlciB2ZXJzaW9uIG9mCisgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gdGhhbiBBY3RpdmVQZXJsIHRoYXQgdXNpbmcgb25lIG9mIHRoZXNlIFBlcmwKKyBtb2R1bGVzIHRyaWdnZXJzIGEgIkZyZWUgdG8gd3JvbmcgcG9vbCIgY3Jhc2guIFRoaXMgcmVncmVzc2lvbiB3YXMKKyBjYXVzZWQgYnkgY29tbWl0IDNiMTRjNTljZjgyNzhkNDEwMjA3ZmY0MmRlYmRhMjYzNjQyNmE0NjggKHRoZQorIG5ldHNubXBfZnJlZSgpIGludG8gU05NUF9GUkVFKCkgY2hhbmdlcyBpbiB0aGUgKi54cyBmaWxlcykuCisKKzIwMTEtMDgtMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGUxMDk1Mzk5MzA3MDNjYjMwNTJkNTI0MWIxOGFjNmZjMDYyZmFhY2EgTWVyZ2U6IDBjOWI2Y2IKKworIGU0NmIxNzAgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBNb24gQXVnCisgOCAxODozNDoxMSAyMDExICswMjAwCisKKzIwMTEtMDgtMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHNubXBsaWIvbWliLmM6IENIQU5HRVM6IHNubXBsaWI6IEZpeCBhIGNyYXNoIHRoYXQgY291bGQgYmUKKworIHRyaWdnZXJlZCBieSBjYWxsaW5nIF9taWJpbmRleF9hZGQoKSB3aXRoIHRoZSBzZWNvbmQgYXJndW1lbnQgbm90CisgZXF1YWwgdG8gLTEuCisKKzIwMTEtMDgtMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDdmNDJkMGQ5MzMyMDQ4NDE1MjI3MTQyN2NjOTgwOGNiZGE0OWJiZDAgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgTW9uIEF1ZyA4IDA5OjUwOjUxIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgMGM5YjZjYmU5ZGJlMmVjNTIxN2E5NWI2NzgxZmQ3ZGMxZjZlYmRhNyBNZXJnZTogZmE2Y2VmNQorCisgOTYzMzIwZiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIE1vbiBBdWcKKyA4IDE4OjE0OjM2IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgYTNiODY1NGEyMzJjNTYzYmM5N2NjOTkyNWNkOTg1OTBhMzBjNWJjNSBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBNb24gQXVnIDggMTc6MjQ6MTggMjAxMSArMDIwMAorCisyMDExLTA4LTA3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBmYTZjZWY1Y2E5MWRmM2EwYjAzNDU1YjY4NTU5ZDJiZWUyNDgxMDFjIE1lcmdlOiBmNWZlNTM2CisKKyA4YWRkMGRhIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgU3VuIEF1ZworIDcgMTA6MTg6NTQgMjAxMSArMDIwMAorCisyMDExLTA4LTA3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBhMGRkM2NhZjI1OTI2ZTQzNDY1NzE4YmY0MTdhNDY0YzJmYjM2MzY2IEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFN1biBBdWcgNyAxMDoxNzowMSAyMDExICswMjAwCisKKzIwMTEtMDgtMDUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IDMyIGlzIHRvbyBsaW1pdGVkIGZvcgorCisgYmlnZ2VyIHRhYmxlczsgaW5jcmVhc2UgdGhlIG1heCBtc2cgY291bnQgdG8gMTI4CisKKzIwMTEtMDgtMDUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogbWFrZSByb2xsdXAgYW5kIHN5bmMgc3VwcG9ydAorCisgLS1yZWJhc2UgYW5kIGNoYW5nZSB0aGUgZGVmYXVsdCBiYWNrIHRvIG1lcmdlCisKKzIwMTEtMDgtMDUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogTWVyZ2UgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCAnb3JpZ2luL1Y1LTQtcGF0Y2hlcycgaW50bworCisgVjUtNC1wYXRjaGVzCisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIFJFQURNRS53aW4zMjogQ0hBTkdFUzogV2luMzI6IERvY3VtZW50ZWQgaG93IHRvIHVzZSBidWlsZC5iYXQgd2l0aAorCisgT3BlblNTTCBlbmFibGVkCisKKzIwMTEtMDctMTUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIFJFQURNRS53aW4zMjogQ0hBTkdFUzogV2luZG93czogUmVtb3ZlIG91dGRhdGVkIGluc3RydWN0aW9ucyBhYm91dAorCisgZWRpdGluZyB3aW4zMlxsaWJzbm1wX2RsbFxsaWJzbm1wLmRlZiBmcm9tIFJFQURNRS53aW4zMgorCisyMDExLTA3LTE1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBSRUFETUUud2luMzI6IENIQU5HRVM6IFdpbjMyOiBEb2N1bWVudCBob3cgdG8gYnVpbGQgNjQtYml0CisKKyBleGVjdXRhYmxlcyBmb3IgdGhlIHg2NC9hbWQ2NCBhcmNoaXRlY3R1cmUKKworMjAxMS0wOC0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgZjVmZTUzNmU4ZmQ2YzQ4ZmUyNDNkZWNkMzFmYWM5Y2YxYzkyZjRjYyBNZXJnZTogNzg1MGVhMQorCisgODA5MjhhOCBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIEZyaSBBdWcKKyA1IDE1OjEzOjI3IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgODA5MjhhODkwOWNmYWIzN2YwMWIzOWEwNzFhM2U4YWQ4NTk1NjIyMiBNZXJnZTogZjE2YTA5NAorCisgMGRiYzg2OSBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIEZyaSBBdWcKKyA1IDEzOjU3OjMwIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgMGRiYzg2OWZlYzA3ZDhlOTBkYmQxYzk1NDkzZWU3Y2JjNjIzYzk1YyBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBGcmkgQXVnIDUgMTI6NDA6MzEgMjAxMSArMDIwMAorCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAuZ2l0aWdub3JlOiAuZ2l0aWdub3JlOiBBZGQKKworIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLmRlZiBhbmQgcGVybC9TTk1QL3QKKworMjAxMS0wOC0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgODZjMWUyYjk2NzlmZWMyY2Q3OTliYTc2MDA1YzNkNjBlOWQ0NzYzNCBNZXJnZTogYmNkODYzNQorCisgZjE2YTA5NCBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIEZyaSBBdWcKKyA1IDEyOjIwOjUwIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgMmY4ZDRmNTc5NmNiYzFjN2U5NjdhY2RhYTgwMTliMjRmMTUyMGEzNiBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBGcmkgQXVnIDUgMTI6MDI6NTEgMjAxMSArMDIwMAorCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBzbm1wbGliL3BhcnNlLmM6IFVuYnJlYWsgdGhlIFY1LTQtcGF0Y2hlcyAtIHJldmVydCBjb21taXQKKworIGQyYzQ3NjhiZDJlZmI0ODY2NDQzNGE4MzE0MjVjMmRkYTg1ZDcxMzMgKENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENICisgMzM2MjIzMzogZnJvbSB5YWJlcmF1bmV5YTogTXV0ZSB1bm5lY2Vzc2FyeSBjYW5ub3QgZmluZCBtb2R1bGUKKyBub2lzZSkuCisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmg6IAorCisgVW5icmVhayB0aGUgVjUtNC1wYXRjaGVzIGJyYW5jaCAtIHdhcyBicm9rZW4gYnkgY29tbWl0CisgYmY3MTc4YjBiMjI1ODdkNDNkMWE4MGMyNjljZDIxNmJkNTkzMDIxNCAoYWdlbnQ6IGNoYW5nZSB0eXBlIG9mCisgc25tcF9lbmFibGVhdXRoZW50cmFwcyB0byBsb25nKQorCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oOiBVbmJyZWFrIHRoZSBWNS00LXBhdGNoZXMKKworIGJyYW5jaCAtIHdhcyBicm9rZW4gYnkgY29tbWl0CisgMGU2ODQyZmUwODBjZWM4NTNiMDhjZDIzMjMwMTVhYmFiYzM4MWNlMSAoQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSAorIDMzODM0NDE6IGZyb20gc2FjaGluc3VyZW5kcmFuOiBGaXggY3Jhc2ggb24gNS40LjQgZHVlIHRvIGFjY2VzcyBvZgorIGZyZWVkIG1lbW9yeSkuCisKKzIwMTEtMDgtMDUgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIE5FV1M6IG1pbm9yIE5FV1MgcG9saXNoCisKKworMjAxMS0wOC0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgYmNkODYzNTA3MTM4MjI5NjNkMzc2ZWZmNTgyYTkyZjQzZTQyNmQ2YyBNZXJnZTogOWM4MTBhMworCisgN2EyMGY3MSBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIEZyaSBBdWcKKyA1IDEwOjI4OjU1IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgM2FhOTQ5ZmJkZmMxYTk0YTgzNDBhZDhiYWY4YjMxNDc1NmEwYmI5ZCBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBGcmkgQXVnIDUgMTA6MjY6MTUgMjAxMSArMDIwMAorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA5YzgxMGEzYjM3YjY4NTczYzQwMzM3ZTI0NmUyZmFmMjk5Yjc3ZDMxIE1lcmdlOiA3MWNiMmU4CisKKyA2MTBkNjNmIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVGh1IEF1ZyA0IDEwOjQyOjA4IDIwMTEgLTA3MDAKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgOTQzOTMwZTFlMTI0Mzg1ZmQ5NDczOGI2ZGNkYTM3ZDI5ZGM3YWM3ZiBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBUaHUgQXVnIDQgMTA6NDE6NDEKKyAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogTWVyZ2UgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCAnb3JpZ2luL1Y1LTQtcGF0Y2hlcycgaW50bworCisgVjUtNC1wYXRjaGVzCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDRlZGNiODhkYWU4YjJlNTlkYzY4M2U4MGQ0MTRmYTdlY2VjMzY4ODUgTWVyZ2U6IDY1ZjNlZWYKKworIDJkZDllZDAgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUaHUgQXVnIDQgMTA6MjQ6MTEgMjAxMSAtMDcwMAorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IE1lcmdlIHJlbW90ZS10cmFja2luZyBicmFuY2ggJ29yaWdpbi9WNS01LXBhdGNoZXMnIGludG8KKworIFY1LTUtcGF0Y2hlcworCisyMDExLTA4LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBiYzVjYTAzYTA0YWIxOWM2MzRhMzRkMDYwYjBiMTZiNzQ4NGNiNTIwIE1lcmdlOiA4OGZkZGI3CisKKyA5MGMwZTc1IEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVGh1IEF1ZworIDQgMTk6MTM6MDcgMjAxMSArMDIwMAorCisyMDExLTA4LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBzbm1wbGliL3NubXBfY2xpZW50LmMsIHNubXBsaWIvc25tcHVzbS5jOiBzbm1wdXNtOiBGaXggcmVjZW50bHkKKworIGludHJvZHVjZWQgY29tcGlsZXIgd2FybmluZ3MKKworMjAxMS0wOC0wNCAgU3R1YXJ0IEhlbmRlcnNvbiA8dDBqdzJmdTBrbWdAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfbmV0YnNkLmM6IENIQU5HRVM6IG9wZW5ic2Q6CisKKyBQQVRDSCAzMzU3OTMyOiBmcm9tIHQwancyZnUwa21nOiBDbGVhbmluZyBpbiBtZW1vcnlfbmV0YnNkLmMgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIFZsYWRpbWlyIEtvbmRyYXRpZXYgPHd1bGYyMDAxQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfZ2V0ZnNzdGF0cy5jOiBDSEFOR0VTOiBhZ2VudDoKKworIFBBVENIIDMzODYxNDc6IGZyb20gd3VsZjIwMDE6IGZpeCBVQ0QtU05NUC1NSUI6OmRza1VzZWQgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDQ3M2Q3ZTVjZDRkNDExYmJhMjBlYjg1MzU5ZDg3MjgwNjMzMDFjYmQgTWVyZ2U6IGE0ZThiNjIKKworIDg4ZmRkYjcgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUaHUgQXVnIDQgMDk6Mjg6MjIgMjAxMSAtMDcwMAorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCAyMTAxYmIyZDdhZDZkYjAzOGM3NTVhYTkxOTNjOGFjZTBkYmQ0ZjU4IEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFRodSBBdWcgNCAwOToyODowNgorIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogLmdpdGlnbm9yZTogaWdub3JlICoub3JpZyBhbmQgKi5yZWoKKworCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGhlbHAgb3V0cHV0IGRlc2NyaWJlcyByZWJhc2UgdnMKKworIG1lcmdlIGJldHRlcgorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBmMTI2YTE3YzZhMzA2MzQ1NWE1MTE5NDBiMDIzMDQ3YWJkOWI0OGVlIE1lcmdlOiBhZDc2NWY0CisKKyA3N2E0Nzg0IEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVGh1IEF1ZyA0IDA5OjI1OjE2IDIwMTEgLTA3MDAKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgNDUyZTE3MDdmMjA5ZWM0NWU3YzdmMmEzMDQwZWY1OTVmYjlkMWFmNiBNZXJnZTogZGM3NTVhNgorCisgYjM3MmU1YSBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBBdWcgNCAwOToyNTowMyAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDQgIFN0dWFydCBIZW5kZXJzb24gPHQwancyZnUwa21nQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgTWFrZWZpbGUuaW4sIGFjY29uZmlnLmgsIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL29wZW5ic2QuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9vcGVuYnNkNC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL29wZW5ic2Q1Lmg6IENIQU5HRVM6IG9wZW5ic2Q6IFBBVENICisgICAgICAzMzU3OTI3OgorCisgZnJvbSB0MGp3MmZ1MGttZzogUmVjb2duaXNlIG9wZW5ic2Q1IFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGZpeCB3aGVyZSBhcmd1bWVudHMgYXJlIHNldAorCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogc3BsaXQgbnNzZnBhdGNoYXBwbHkgaW50byB0d28KKworIHBhcnRzOiBhcHBseSBhbmQgY29tbWl0aW5nCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogcGF0Y2ggdXNpbmcgLU4KKworCisyMDExLTA4LTA0ICBEYXZpZCBBcm5vbGQgPGRqYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIG1hbi9kZWZhdWx0X3N0b3JlLjMuYm90LCBtYW4vZW5jb2RlX2tleWNoYW5nZS4xLmRlZiwgCisgICAgICBtYW4vZml4cHJvYy4xLmRlZiwgbWFuL21pYjJjLmNvbmYuNS5pbiwgbWFuL25ldC1zbm1wLWNvbmZpZy4xLmRlZiwKKyAgICAgICBtYW4vbmV0c25tcF9hZ2VudF9hcGkuMy5kZWYsIG1hbi9uZXRzbm1wX21pYl9hcGkuMy5kZWYsIAorICAgICAgbWFuL3NubXAuY29uZi41LmRlZiwgbWFuL3NubXBidWxrZ2V0LjEuZGVmLAorICAgICAgbWFuL3NubXBidWxrd2Fsay4xLmRlZiwgIG1hbi9zbm1wY21kLjEuZGVmLCBtYW4vc25tcGNvbmYuMS5kZWYsCisgICAgICBtYW4vc25tcGQuOC5kZWYsICBtYW4vc25tcGQuY29uZi41LmRlZiwgbWFuL3NubXBkLmV4YW1wbGVzLjUuZGVmLCAKKyAgICAgIG1hbi9zbm1wZGVsdGEuMS5kZWYsIG1hbi9zbm1wZGYuMS5kZWYsIG1hbi9zbm1wZ2V0LjEuZGVmLCAKKyAgICAgIG1hbi9zbm1wZ2V0bmV4dC4xLmRlZiwgbWFuL3NubXBuZXRzdGF0LjEuZGVmLCBtYW4vc25tcHNldC4xLmRlZiwgCisgICAgICBtYW4vc25tcHN0YXR1cy4xLmRlZiwgbWFuL3NubXB0YWJsZS4xLmRlZiwgbWFuL3NubXB0ZXN0LjEuZGVmLCAKKyAgICAgIG1hbi9zbm1wdHJhbnNsYXRlLjEuZGVmLCBtYW4vc25tcHRyYXAuMS5kZWYsIG1hbi9zbm1wdHJhcGQuOC5kZWYsIAorICAgICAgbWFuL3NubXB0cmFwZC5jb25mLjUuZGVmLCBtYW4vc25tcHVzbS4xLmRlZiwgbWFuL3NubXB2YWNtLjEuZGVmLCAKKyAgICAgIG1hbi9zbm1wd2Fsay4xLmRlZjogQ0hBTkdFUzogbWFuOiBQQVRDSCAzMzEyODYxOiBmcm9tIGRqYTogTWFuCisgICAgICBwYWdlcworCisgaHlwaGVuLXZzLW1pbnVzIGNsZWFudXAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogd2luMzIvZGlzdC9pbnN0YWxsZXIvbmV0LXNubXAubnNpOiBEZXRlY3QgKGFuZCByZWplY3QpIE9wZW5TU0wKKworIDEuMC4wCisKKzIwMTEtMDgtMDQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogd2luMzIvZGlzdC9pbnN0YWxsZXIvbmV0LXNubXAubnNpOiBDb21tYW5kLWxpbmUgb3B0aW9ucyBmb3Igc2lsZW50CisKKyBpbnN0YWxsCisKKzIwMTEtMDgtMDQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogd2luMzIvZGlzdC9pbnN0YWxsZXIvbmV0LXNubXAubnNpOiBFbnN1cmUgV2luZG93cyBwYWNrYWdlCisKKyB1bmluc3RhbGxzIGNvbXBsZXRlbHkuCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDgxYzYzZmI1YzVlNGFiYjljMjlhY2E4OWJmOWQ2OTQ0MTAwODZlOTcgTWVyZ2U6IDRhNjkyMGEKKworIGRjNzU1YTYgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUaHUgQXVnIDQgMDg6MzM6MzQgMjAxMSAtMDcwMAorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfY2xpZW50LmM6IGFkZGVkIHNwYWNpbmcgdG8gbWF0Y2ggdGhlIGxhdGVyIGJyYW5jaGVzCisKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBtYW51YWwgbWVyZ2UKKworCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfY2xpZW50LmM6IHJlbW92ZWQgYWNjaWRlbnRpYWxseSBkdXBsaWNhdGVkIGNvZGUKKworCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IG1hbnVhbCBtZXJnZQorCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogbWFudWFsIG1lcmdlCisKKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3BhcnNlLmM6IENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDMzNjIyMzM6IGZyb20KKworIHlhYmVyYXVuZXlhOiBNdXRlIHVubmVjZXNzYXJ5IGNhbm5vdCBmaW5kIG1vZHVsZSBub2lzZSBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYywgYWdlbnQvc25tcF92YXJzLmMsIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnM6IENIQU5HRVM6IGZyZWVic2Q6IFBBVENIIDMzNjMzMDg6CisgICAgICBmcm9tCisKKyB5YWJlcmF1bmV5YTogRml4IGNvbXBpbGF0aW9uIG9uIEZyZWVCU0QgOS54IHdpdGggcmVjZW50IGhlYWRlcgorIHNodWZmbGluZyBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhbGxvdyBuc3JvbGx1cCB0byB0YWtlIGEgLS1tZXJnZQorCisgZmxhZyBmb3IgbWVyZ2luZyBpbnN0ZWFkIG9mIHJlYmFzaW5nCisKKzIwMTEtMDgtMDQgIFNhY2hpbiBTdXJlbmRyYW4gPHNhY2hpbnN1cmVuZHJhbkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgsIHNubXBsaWIvc25tcF9jbGllbnQuYywgCisgICAgICBzbm1wbGliL3NubXB1c20uYzogQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSCAzMzgzNDQxOiBmcm9tCisKKyBzYWNoaW5zdXJlbmRyYW46IEZpeCBjcmFzaCBvbiA1LjQuNCBkdWUgdG8gYWNjZXNzIG9mIGZyZWVkIG1lbW9yeSBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBNYWtlZmlsZS5pbjogQ0hBTkdFUzogZnJlZWJzZDogUEFUQ0ggMzM2MzMyODogZnJvbSB5YWJlcmF1bmV5YToKKworIEFkZCBGcmVlQlNEIDkueCB0byBzdXBwb3J0ZWQgT1NlcyBsaXN0IFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvcGFyc2UuYzogQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0ggMzM2MjIzMzogZnJvbQorCisgeWFiZXJhdW5leWE6IE11dGUgdW5uZWNlc3NhcnkgY2Fubm90IGZpbmQgbW9kdWxlIG5vaXNlIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jLCBhZ2VudC9zbm1wX3ZhcnMuYywgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVyczogQ0hBTkdFUzogZnJlZWJzZDogUEFUQ0ggMzM2MzMwODoKKyAgICAgIGZyb20KKworIHlhYmVyYXVuZXlhOiBGaXggY29tcGlsYXRpb24gb24gRnJlZUJTRCA5Lnggd2l0aCByZWNlbnQgaGVhZGVyCisgc2h1ZmZsaW5nIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFsbG93IG5zcm9sbHVwIHRvIHRha2UgYSAtLW1lcmdlCisKKyBmbGFnIGZvciBtZXJnaW5nIGluc3RlYWQgb2YgcmViYXNpbmcKKworMjAxMS0wOC0wNCAgU2FjaGluIFN1cmVuZHJhbiA8c2FjaGluc3VyZW5kcmFuQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCwgc25tcGxpYi9zbm1wX2NsaWVudC5jLCAKKyAgICAgIHNubXBsaWIvc25tcHVzbS5jOiBDSEFOR0VTOiBzbm1wdHJhcGQ6IFBBVENIIDMzODM0NDE6IGZyb20KKworIHNhY2hpbnN1cmVuZHJhbjogRml4IGNyYXNoIG9uIDUuNC40IGR1ZSB0byBhY2Nlc3Mgb2YgZnJlZWQgbWVtb3J5IFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIE1ha2VmaWxlLmluOiBDSEFOR0VTOiBmcmVlYnNkOiBQQVRDSCAzMzYzMzI4OiBmcm9tIHlhYmVyYXVuZXlhOgorCisgQWRkIEZyZWVCU0QgOS54IHRvIHN1cHBvcnRlZCBPU2VzIGxpc3QgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9wYXJzZS5jOiBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzMzYyMjMzOiBmcm9tCisKKyB5YWJlcmF1bmV5YTogTXV0ZSB1bm5lY2Vzc2FyeSBjYW5ub3QgZmluZCBtb2R1bGUgbm9pc2UgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsIGFnZW50L3NubXBfdmFycy5jLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzOiBDSEFOR0VTOiBmcmVlYnNkOiBQQVRDSCAzMzYzMzA4OgorICAgICAgZnJvbQorCisgeWFiZXJhdW5leWE6IEZpeCBjb21waWxhdGlvbiBvbiBGcmVlQlNEIDkueCB3aXRoIHJlY2VudCBoZWFkZXIKKyBzaHVmZmxpbmcgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYWxsb3cgbnNyb2xsdXAgdG8gdGFrZSBhIC0tbWVyZ2UKKworIGZsYWcgZm9yIG1lcmdpbmcgaW5zdGVhZCBvZiByZWJhc2luZworCisyMDExLTA4LTA0ICBTYWNoaW4gU3VyZW5kcmFuIDxzYWNoaW5zdXJlbmRyYW5AdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oLCBzbm1wbGliL3NubXBfY2xpZW50LmMsIAorICAgICAgc25tcGxpYi9zbm1wdXNtLmM6IENIQU5HRVM6IHNubXB0cmFwZDogUEFUQ0ggMzM4MzQ0MTogZnJvbQorCisgc2FjaGluc3VyZW5kcmFuOiBGaXggY3Jhc2ggb24gNS40LjQgZHVlIHRvIGFjY2VzcyBvZiBmcmVlZCBtZW1vcnkgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9wYXJzZS5jOiBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzMzYyMjMzOiBmcm9tCisKKyB5YWJlcmF1bmV5YTogTXV0ZSB1bm5lY2Vzc2FyeSBjYW5ub3QgZmluZCBtb2R1bGUgbm9pc2UgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYWxsb3cgbnNyb2xsdXAgdG8gdGFrZSBhIC0tbWVyZ2UKKworIGZsYWcgZm9yIG1lcmdpbmcgaW5zdGVhZCBvZiByZWJhc2luZworCisyMDExLTA4LTA0ICBTYWNoaW4gU3VyZW5kcmFuIDxzYWNoaW5zdXJlbmRyYW5AdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oLCBzbm1wbGliL3NubXBfY2xpZW50LmMsIAorICAgICAgc25tcGxpYi9zbm1wdXNtLmM6IENIQU5HRVM6IHNubXB0cmFwZDogUEFUQ0ggMzM4MzQ0MTogZnJvbQorCisgc2FjaGluc3VyZW5kcmFuOiBGaXggY3Jhc2ggb24gNS40LjQgZHVlIHRvIGFjY2VzcyBvZiBmcmVlZCBtZW1vcnkgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9mcmVlYnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmMsIHNubXBsaWIva2V5dG9vbHMuYywKKyAgICAgIHNubXBsaWIvc2NhcGkuYzoKKworIENIQU5HRVM6IGJ1aWxkaW5nOiBQQVRDSCAzMzgzOTUxOiBmcm9tIHlhYmVyYXVuZXlhOiBGaXggLVd1bnVzZWQKKyBjb21waWxlIHdhcm5pbmdzIHdpdGggRnJlZUJTRC9OZXRCU0QgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9mcmVlYnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmMsIHNubXBsaWIva2V5dG9vbHMuYywKKyAgICAgIHNubXBsaWIvc2NhcGkuYzoKKworIENIQU5HRVM6IGJ1aWxkaW5nOiBQQVRDSCAzMzgzOTUxOiBmcm9tIHlhYmVyYXVuZXlhOiBGaXggLVd1bnVzZWQKKyBjb21waWxlIHdhcm5pbmdzIHdpdGggRnJlZUJTRC9OZXRCU0QgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGU4NzhhYmJkYjE4MDhlZjgzZTBhODA3NDUzNmZiNTRlMTMyMTlhOGIgTWVyZ2U6IDQwM2RlNDIKKworIDg3OGZiZjQgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUaHUgQXVnIDQgMDc6NTU6MDAgMjAxMSAtMDcwMAorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCAyNTBhZmEwNjg5MmZkODk3YWMzMWUzODM2YTdmZmM5ZTJiNGNmN2I5IE1lcmdlOiAyYzE0YzFjCisKKyAzYWZjNWUwIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVGh1IEF1ZyA0IDA3OjUxOjMzIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgNTc4Y2Q3Y2NlMzUxYWU4ZDkwNGVjM2Q4MGJlOWJhNmQxZDQ4YTcxMiBNZXJnZTogMjU5ODhiZQorCisgZjNiYzU1MSBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBBdWcgNCAwNzo1MDo1NiAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogYXV0b2NvbmYKKworCisyMDExLTA4LTA0ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVyczogQ0hBTkdFUzogYnVpbGRpbmc6IFBBVENICisKKyAzMzgzOTQ5OiBmcm9tIHlhYmVyYXVuZXlhOiBGaXggYXV0b2NvbmYgdGVzdHMgZm9yIHN5cy9tYnVmLmggU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogcHJvbXB0IGZvciBwYXRjaCBhbmQgYW4gYXJlYSwgYW5kCisKKyB1c2UgdGhlIHByb3BlciBDSEFOR0VTIGxpbmUgZm9ybWF0CisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogVXNlIGZldGNoIC0tYWxsIGFuZCByZWJhc2UgYXMKKworIHN1Z2dlc3RlZCBieSBCYXJ0IGZvciBzcGVlZCBpbXByb3ZlbWVudHMKKworMjAxMS0wOC0wNCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgZDZhMWE4OWU2ZjY0ODk1MWE5YjgzMTkzMmQzY2MyMzA4MjFmMmQzNyBNZXJnZTogZGNiNzEyZgorCisgODcyZTAxMyBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFRodSBBdWcKKyA0IDEyOjA2OjE4IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgNDQ5NjliNGU1N2MyNzE5NGU1YmQzNTdiYzQ1Mjc1ZmViODY5NWQyMiBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBGcmkgSnVsIDggMjA6NTI6MjUgMjAxMSArMDIwMAorCisyMDExLTA3LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBhZ2VudC9taWJncm91cC93aW5FeHRETEwuYzogQ0hBTkdFUzogV2luMzI6IHdpbkV4dERMTDogSW52b2tlCisKKyBTbm1wVXRpbE9pZEZyZWUoKSBiZWZvcmUgU25tcFV0aWxPaWRDcHkoKS4gSXQncyBub3QgY2xlYXIgeWV0IHdoeQorIHRoZSBvcmlnaW5hbCBjb2RlIGRpZCBub3QgbWFrZSBzbm1wd2FsayB0cmlnZ2VyIGEgbWVtb3J5IGxlYWsuCisKKzIwMTEtMDgtMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGRjYjcxMmZmYzg2YjMzNTgzMDAwZWY0YWU5YTUxY2VkMjVjZDE1YmYgTWVyZ2U6IGU4NWNmYTUKKworIDk4NjIzZWYgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUaHUgQXVnCisgNCAxMTozNjoxNyAyMDExICswMjAwCisKKzIwMTEtMDgtMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDhhMDFlYzY0MjNkNDAwYzRhMTNjY2FjNjhhMzc5MWQwMjE4YTA4ODUgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVGh1IEF1ZyA0IDExOjE5OjE3IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgZTg1Y2ZhNTk5YjIzYjc2ZDk3OTEzYzk2YjVkNzAzYmZmNmJhNDk0NCBNZXJnZTogYjA1NmVlNgorCisgZTIxZWVmMiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFRodSBBdWcKKyA0IDA4OjQ0OjQzIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcGtnaW5mby5jOiBDSEFOR0VTOiBhZ2VudDoKKworIEF2b2lkIHRoYXQgYSBNSUIgd2FsayBvbiB0aGUgaG9zdCByZXNvdXJjZXMgTUlCIHRyaWdnZXJzIGEgY3Jhc2ggb24KKyBGZWRvcmEgMTUKKworMjAxMS0wOC0wNCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgYjA1NmVlNmViNTM5MDlhZDA0ZjE2ZWMyNmQyNjkwZDdhMDgzMTkyYSBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUaHUgQXVnIDQgMDc6NTk6MDQgMjAxMSArMDIwMAorCisyMDExLTA4LTAzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAgYWdlbnQvYWdlbnRfdHJhcC5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZGF0YV9hY2Nlc3MvZG90M3N0YXRzX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX2FjYworICAgICAgIGVzcy5jLCBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jZnNfc3RhdHVzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHNfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfYWNjZXNzCisgICAgICAgLmMsIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jLCBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmMsIGFnZW50L3NubXBfYWdlbnQuYywgCisgICAgICBhcHBzL3NubXBidWxrZ2V0LmMsIGFwcHMvc25tcHRscy5jLCBhcHBzL3NubXB0cmFwZF9sb2cuYywgCisgICAgICBwZXJsL1NOTVAvU05NUC54cywgc25tcGxpYi9jb250YWluZXJfaXRlcmF0b3IuYywgCisgICAgICBzbm1wbGliL2Rpcl91dGlscy5jLCBzbm1wbGliL3NubXBfYXBpLmMsIHNubXBsaWIvc25tcF9jbGllbnQuYywgCisgICAgICBzbm1wbGliL3NubXBfZW51bS5jLCBzbm1wbGliL3NubXBfb3BlbnNzbC5jLCBzbm1wbGliL3NubXB1c20uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU1RDUERvbWFpbi5jOiBDSEFOR0VTOiBzbm1wbGliLCBzbm1wZDoKKworIHBlcmw6IEVsaW1pbmF0ZSBkZWFkIHZhcmlhYmxlcworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBhZThlM2VjZDJkZjRjZjM3NjI1OTQ0YWRlZDFkZmU0NzM1ZDQ0ZWVhIE1lcmdlOiA3MzE4N2NlCisKKyA5MzM1ZTE5IEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgV2VkIEF1ZyAzIDE0OjM3OjM2IDIwMTEgLTA3MDAKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgNzk0ZjlhNjlkN2ViNjQyMjY4MjAwYjBhNGIxOTkxNTFkZWY2NmVkMCBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBXZWQgQXVnIDMgMTQ6MzY6MjUKKyAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYWRkZWQgYSBjb21tZW50CisKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhdCBlbmQgb2YgbnNyb2xsdXAgbWVudGlvbiB0aGF0CisKKyBub3cgd291bGQgYmUgYSBnb29kIHRpbWUgdG8gcnVuIG5zc3luYworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGEgbmV3IG5zc3luYygpIGZ1bmN0aW9uIGZvcgorCisgcHVzaC9wdWxsaW5nIGFjdGl2ZSBicmFuY2hlcworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFkZGVkIGEgY29tbWVudAorCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYXQgZW5kIG9mIG5zcm9sbHVwIG1lbnRpb24gdGhhdAorCisgbm93IHdvdWxkIGJlIGEgZ29vZCB0aW1lIHRvIHJ1biBuc3N5bmMKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhIG5ldyBuc3N5bmMoKSBmdW5jdGlvbiBmb3IKKworIHB1c2gvcHVsbGluZyBhY3RpdmUgYnJhbmNoZXMKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhdCBlbmQgb2YgbnNyb2xsdXAgbWVudGlvbiB0aGF0CisKKyBub3cgd291bGQgYmUgYSBnb29kIHRpbWUgdG8gcnVuIG5zc3luYworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGEgbmV3IG5zc3luYygpIGZ1bmN0aW9uIGZvcgorCisgcHVzaC9wdWxsaW5nIGFjdGl2ZSBicmFuY2hlcworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFkZGVkIGEgY29tbWVudAorCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYXQgZW5kIG9mIG5zcm9sbHVwIG1lbnRpb24gdGhhdAorCisgbm93IHdvdWxkIGJlIGEgZ29vZCB0aW1lIHRvIHJ1biBuc3N5bmMKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhIG5ldyBuc3N5bmMoKSBmdW5jdGlvbiBmb3IKKworIHB1c2gvcHVsbGluZyBhY3RpdmUgYnJhbmNoZXMKKworMjAxMS0wOC0wMyAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtbWliLmg6IFJlZW5hYmxlIElQLU1JQjo6aXBEZWZhdWx0Um91dGVyVGFibGUKKyAgICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogQSBuZXcgZnVuY3Rpb246IG5zc2ZwYXRjaGFwcGx5CisKKyB0aGF0IGF1dG8tcHVsbHMgZ2l0IGNvbW1hbmQgbGluZSBpbmZvIGZyb20gU0YKKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtY3R4LWdldC5tMmk6IGFkZGVkIHZhcmlhYmxlcyBuYW1lcyB0bworCisgdGhlIGdlbmVyYXRlZCBlcnJvciBtZXNzYWdlcy4KKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmMtY29uZi5kL21mZC1pbnRlcmFjdGl2ZS1zZXR1cC5tMmM6IFdvcmRpbmcgY2hhbmdlcyB0bworCisgaGVscCBkZXNjcmliZSBjb250ZXh0cyBiZXR0ZXIKKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvTWFrZWZpbGUuaW4sIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLWdldC1VNjQubTJpOiBBZGRlZAorCisgdGhlIG1pc3NpbmcgVTY0IG0yaSBmaWxlCisKKzIwMTEtMDgtMDMgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2lwLW1pYi5oOiBSZWVuYWJsZSBJUC1NSUI6OmlwRGVmYXVsdFJvdXRlclRhYmxlCisgICAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IEEgbmV3IGZ1bmN0aW9uOiBuc3NmcGF0Y2hhcHBseQorCisgdGhhdCBhdXRvLXB1bGxzIGdpdCBjb21tYW5kIGxpbmUgaW5mbyBmcm9tIFNGCisKKzIwMTEtMDgtMDIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLWN0eC1nZXQubTJpOiBhZGRlZCB2YXJpYWJsZXMgbmFtZXMgdG8KKworIHRoZSBnZW5lcmF0ZWQgZXJyb3IgbWVzc2FnZXMuCisKKzIwMTEtMDgtMDIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjLWNvbmYuZC9tZmQtaW50ZXJhY3RpdmUtc2V0dXAubTJjOiBXb3JkaW5nIGNoYW5nZXMgdG8KKworIGhlbHAgZGVzY3JpYmUgY29udGV4dHMgYmV0dGVyCisKKzIwMTEtMDgtMDIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL01ha2VmaWxlLmluLCBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1nZXQtVTY0Lm0yaTogQWRkZWQKKworIHRoZSBtaXNzaW5nIFU2NCBtMmkgZmlsZQorCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IEEgbmV3IGZ1bmN0aW9uOiBuc3NmcGF0Y2hhcHBseQorCisgdGhhdCBhdXRvLXB1bGxzIGdpdCBjb21tYW5kIGxpbmUgaW5mbyBmcm9tIFNGCisKKzIwMTEtMDgtMDIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLWN0eC1nZXQubTJpOiBhZGRlZCB2YXJpYWJsZXMgbmFtZXMgdG8KKworIHRoZSBnZW5lcmF0ZWQgZXJyb3IgbWVzc2FnZXMuCisKKzIwMTEtMDgtMDIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjLWNvbmYuZC9tZmQtaW50ZXJhY3RpdmUtc2V0dXAubTJjOiBXb3JkaW5nIGNoYW5nZXMgdG8KKworIGhlbHAgZGVzY3JpYmUgY29udGV4dHMgYmV0dGVyCisKKzIwMTEtMDgtMDIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL01ha2VmaWxlLmluLCBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1nZXQtVTY0Lm0yaTogQWRkZWQKKworIHRoZSBtaXNzaW5nIFU2NCBtMmkgZmlsZQorCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IEEgbmV3IGZ1bmN0aW9uOiBuc3NmcGF0Y2hhcHBseQorCisgdGhhdCBhdXRvLXB1bGxzIGdpdCBjb21tYW5kIGxpbmUgaW5mbyBmcm9tIFNGCisKKzIwMTEtMDctMTggIElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgorCisgICAqIGFnZW50L2FnZW50X3RyYXAuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuYzogYWdlbnQ6IGNoYW5nZQorCisgdHlwZSBvZiBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzIHRvIGxvbmcgVHlwZSBvZiBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzIHZhcmlhYmxlIGlzIGNoYW5nZWQgZnJvbSBpbnQgdG8gbG9uZy4KKyBUaGlzIGZpeGVzIHRoZSBidWcgd2l0aCB3cml0aW5nIHRvIHNubXBFbmFibGVBdXRoZW5UcmFwcyBpZiBzZXJ2ZXIKKyBpcyBjb21waWxlZCBmb3IgNjRiaXQgKHNubXBzZXQgcmVwb3J0cyB3cm9uZyBsZW5ndGgpLiBUaGlzIGJ1ZyB3YXMKKyBpbnRyb2R1Y2VkIGEgbG9uZyB0aW1lIGFnbyAoYnkgZmFlZWNkMCBjb21taXQpLiAgQWN0dWFsbHkgdGhpcyBpcyBhICdsZXNzIGVmZm9ydCcgdHlwZSBvZiBmaXggYnV0IEkgd29uZGVyIHdoeSB3ZQorIG5lZWQgYSBsb25nIHRvIHN0b3JlIGFuIElOVEVHRVIgaW4gdGhlIGZpcnN0IHBsYWNlPyBTaWduZWQtb2ZmLWJ5OiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4gU2lnbmVkLW9mZi1ieTogV2VzCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtY3R4LWdldC5tMmk6IGFkZGVkIHZhcmlhYmxlcyBuYW1lcyB0bworCisgdGhlIGdlbmVyYXRlZCBlcnJvciBtZXNzYWdlcy4KKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmMtY29uZi5kL21mZC1pbnRlcmFjdGl2ZS1zZXR1cC5tMmM6IFdvcmRpbmcgY2hhbmdlcyB0bworCisgaGVscCBkZXNjcmliZSBjb250ZXh0cyBiZXR0ZXIKKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvTWFrZWZpbGUuaW4sIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLWdldC1VNjQubTJpOiBBZGRlZAorCisgdGhlIG1pc3NpbmcgVTY0IG0yaSBmaWxlCisKKzIwMTEtMDgtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDZhZDdlMjhmZjllNWU0ZWJjMTM1OGVlMzljYzk3OTZhNDRhMWJlZTcgTWVyZ2U6IGYyODMyZTMKKworIDFlMTU0Y2UgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBXZWQgQXVnCisgMyAxOToxNToyNCAyMDExICswMjAwCisKKzIwMTEtMDgtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDYxYjE3OGYxZWU4OTUyYWEwM2FhM2IxYmE1MWY0YTY2NTVlNDdmMDEgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgV2VkIEF1ZyAzIDE4OjA5OjQ3IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oOiBXaGl0ZXNwYWNlLW9ubHkgY2hhbmdlOiBmaXggaW5kZW50YXRpb24KKworIG9mIGFuICNpbmNsdWRlIGRpcmVjdGl2ZQorCisyMDExLTA4LTAyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBwZXJsL05ldFNOTVAueHM6IENIQU5HRVM6IFBlcmw6IFJlbW92ZSBmaWxlIHBlcmwvTmV0U05NUC54cworCisgYmVjYXVzZSBpdCBicmVha3MgdGhlIFdpbmRvd3MgYnVpbGQuICBUbyBXZXM6IGlmIHlvdSBjYW4gdGVsbCBtZSBob3cgdG8gcmVwcm9kdWNlIHRoZSBwcm9ibGVtIHlvdSBvYnNlcnZlZAorIEknbGwgdHJ5IHRvIGZpbmQgYSBwb3J0YWJsZSBmaXguICBUaGlzIHJldmVydHMgY29tbWl0IGQ1NDg3MWY1MjkzNjc1YzgwNThlY2NlODhmZWQ1YjY0NmM4MzYzMjMgKCJBZGRlZAorIGEgYm9ndXMgZW1wdHkgLnhzIGZpbGUgZm9yIGJ1bmRsaW5nIG9uIG5ld2VyIHBlcmwgdGhhdCB3YW50cworICJzb21ldGhpbmciIikuCisKKzIwMTEtMDgtMDIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDBmNDg5YjE5OWFkYWI0OGIxNjMzZWJjYWY1ZmY1YTdjMjJjNGNiODkgTWVyZ2U6IGY0ZWFhMDIKKworIDcyYTU5YmMgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUdWUgQXVnCisgMiAxMDoxMTo1MyAyMDExICswMjAwCisKKzIwMTEtMDgtMDIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDdmY2MwYjgwMzJmOGRhNWI3YmMzMDA1OWFmMGJhNjU2ZWFlNzEwOTEgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgTW9uIEF1ZyAxIDE0OjExOjI4IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wMiAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogICAqIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdAorICAgICAgIGFfYWNjZXNzLmM6IEZpeCBhIGNvbXBpbGVyIHdhcm5pbmcgaW4KKworCisgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfYWNjZXNzLmMKKworMjAxMS0wOC0wMSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogLmdpdGlnbm9yZTogLmdpdGlnbm9yZTogQWRkIGZpbGUgbmFtZXMgYW5kIHBhdHRlcm5zIGZvciBvdXRwdXQKKworIGZpbGVzIGdlbmVyYXRlZCBkdXJpbmcgdGhlIFdpbmRvd3MgYnVpbGQKKworMjAxMS0wNy0yOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogLmdpdGlnbm9yZTogLmdpdGlnbm9yZTogU29ydCBhbHBoYWJldGljYWxseQorCisKKzIwMTEtMDctMjkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIC5naXRpZ25vcmU6IC5naXRpZ25vcmU6IEFkZCBhcHBzL3NzaHRvc25tcAorCisKKzIwMTEtMDgtMDEgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqICAuZ2l0aWdub3JlLCBwZXJsL1RyYXBSZWNlaXZlci9jb25zdC1jLmluYywgCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9jb25zdC14cy5pbmM6IFJlbW92ZSB0d28gZ2VuZXJhdGVkIFBlcmwgZmlsZXMuCisKKworMjAxMS0wOC0wMiAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZjRlYWEwMmQ5YjA3NmE2N2Q3MjcyZGU3ZWVmOGU5ZGZiZjE4OWJiZiBNZXJnZTogNDAxMjVkOAorCisgYWRhZGNiOSBBdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFR1ZSBBdWcgMiAwMDo1Nzo1MSAyMDExICswMjAwCisKKzIwMTEtMDgtMDIgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGRpc3QvbnNiLWZ1bmN0aW9uczogc3VwcHJlc3MgIm9rIiB0ZXN0IG91dHB1dCBpbiBuc2IKKworCisyMDExLTA4LTAxICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgNDAxMjVkODUzOWNkODlmOTUyZmJjMjQ1ODhjNWU4MWU5Y2Q4MjFmZSBBdXRob3I6IEphbgorCisgU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgTW9uIEF1ZyAxCisgMTM6NTg6MzMgMjAxMSArMDIwMAorCisyMDExLTA4LTAxICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA1YWNmMGQyY2ViMzk3Nzk2NGVkMzlmMDAzMDczYmE2NDEzOGMyZWJkIEF1dGhvcjogVGhvbWFzCisKKyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFN1biBKdWwgMzEgMjM6NTc6NDEKKyAyMDExICswMjAwCisKKzIwMTEtMDctMzEgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGE3NzIyYTgxZjljYjdhYTg2NzBlN2MyMzg2MDEzNjJhMzEwODdhY2MgTWVyZ2U6IDI0MmUxNzkKKworIGFlOWFjNmMgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBTdW4gSnVsCisgMzEgMDk6MTE6NDUgMjAxMSArMDIwMAorCisyMDExLTA3LTMxICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBhcHBzL3NzaHRvc25tcC5jOiBGaXggYW4gaW5jb3JyZWN0IHNvdXJjZSBjb2RlIGNvbW1lbnQ6IHRoZXJlIGlzCisKKyBubyByZXF1aXJlbWVudCBpbiB0aGUgQU5TSSBDIHN0YW5kYXJkIHRoYXQgc3RhY2sgdmFyaWFibGVzIHNob3VsZCBiZQorIGluaXRpYWxpemVkIHRvIHplcm8uCisKKzIwMTEtMDctMzEgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDI0MmUxNzk3YjI2OTRhMDY4OTg1NmFlMzZkMDVkMzQxM2FhZjhkNzcgQXV0aG9yOiBUaG9tYXMKKworIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgU3VuIEp1bCAzMSAwMTo0NDowOQorIDIwMTEgKzAyMDAKKworMjAxMS0wNy0zMCAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zeXN0ZW0uYzogQ0hBTkdFUzogYnVpbGRpbmc6IGJ1aWxkIGZpeCBmb3Igc3lzdGVtcyBsYWNraW5nCisKKyBnZXRhZGRyaW5mbygpIGFuZCBFQUlfRkFJTCAoZS5nLiBIUC1VWCAxMC4yMC8xMS4wMCkKKworMjAxMS0wNy0zMCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgMThkZjc1OWYxOWI5NzVjNDQ5ZDAxMGJiMGExNjIxMTliYjY4MzYwZCBNZXJnZTogNTRhNDRjYgorCisgNzA1MDcxOCBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFNhdCBKdWwKKyAzMCAxNjozOToxMyAyMDExICswMjAwCisKKzIwMTEtMDctMzAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDgyZDczZmIxMWJlM2FlMzFmMzljOWQ2MThkNTM4OGRjOWIxMDA2ZDcgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEp1bCAyOSAyMDo1MToyNyAyMDExICswMjAwCisKKzIwMTEtMDctMzAgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBjb25maWd1cmUsIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IGF1dG9yZWNvbmYKKworCisyMDExLTA3LTMwICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgY29uZmlndXJlLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiBhdXRvcmVjb25mCisKKworMjAxMS0wNy0zMCAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgMTA5ZjY2OTRkNzg4ZjQ4ZWJkOWZjMGExZTkwYzQ1YWJjMzdiZWEyMCBBdXRob3I6IFRob21hcworCisgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBTYXQgSnVsIDMwIDE0OjIyOjE5CisgMjAxMSArMDIwMAorCisyMDExLTA3LTMwICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA3ZDgxMDBlZWQ0NTlhMWZmMWEyMGMwNjczNjRmYTZjYjQ3NDkxMzA5IE1lcmdlOiAxMTZjMjRmCisKKyA5ZTQ3YWM0IEF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgU2F0IEp1bCAzMCAwMDoyMDowMSAyMDExICswMjAwCisKKzIwMTEtMDctMzAgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGRpc3QvbnNiLWZ1bmN0aW9ucywgZGlzdC9uc2ItbmlnaHRseSwgZGlzdC9uc2ItcGFja2FnZTogbWlub3IgbnNiCisKKyBmaXhlcy9lbmhhbmNlbWVudHMgZnJvbSBteSBvbGQgc3ZuIHRyZWUKKworMjAxMS0wNy0yOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgMTE2YzI0ZjBmN2ZiM2Y5OWJhNjQ2NzMwZjYxYzU2ZDFhZTIzYmE0MSBNZXJnZTogOTgyZmI3ZgorCisgNGZjMGI4YiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIEZyaSBKdWwKKyAyOSAxMTozMToyMCAyMDExICswMjAwCisKKzIwMTEtMDctMjkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGM0ODE3M2MwNmE5ZWFhZGJmODFlNmI0OTYyZDU1ZWYwYTU0ZGIyNTEgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEp1bCAyOSAxMDoyNzozOSAyMDExICswMjAwCisKKzIwMTEtMDctMjkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGNvbmZpZ3VyZSwgbHRtYWluLnNoLCBtNC9saWJ0b29sLm00OiBSZXJ1biBhdXRvcmVjb25mCisKKworMjAxMS0wNy0yOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogLmdpdGlnbm9yZTogLmdpdGlnbm9yZTogU29ydCBhbHBoYWJldGljYWxseQorCisKKzIwMTEtMDctMjkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIC5naXRpZ25vcmU6IC5naXRpZ25vcmU6IEFkZCBhcHBzL3NzaHRvc25tcAorCisKKzIwMTEtMDctMjkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyaF9zdG9yYWdlLmM6IEZpeCB0d28gZmlsZW5hbWVzIGluIGhvc3QgbWliCisKKyBzb3VyY2UgY29kZSBjb21tZW50cy4KKworMjAxMS0wNy0yOCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDk4MmZiN2ZkOGJhYjI1YzQzMjJhYTYyYzUwNDM3MDM2Y2UyOTZlM2UgTWVyZ2U6IDFlZGE2NzUKKworIDM0NTgxMjggQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVGh1IEp1bCAyOCAxNjoyNDowMyAyMDExICswMjAwCisKKzIwMTEtMDctMjggIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmM6IEZpeCBwb3RlbnRpYWwKKworIHNpZ3NlZ3Ygd2hlbiBhbiBpZlRhYmxlIGVudHJ5IGlzIHJlbW92ZWQgYXMgcmVzdWx0IG9mIGJvdGgKKyBpbnRlcmZhY2VfcmVwbGFjZV9vbGQgYW5kIGludGVyZmFjZV9mYWRlb3V0IGF0IHRoZSBzYW1lIHRpbWUuCisKKzIwMTEtMDctMjggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFwcHMvc3NodG9zbm1wLmM6IE1ha2UgYXBwcy9zc2h0b3NubXAuYyBidWlsZCBhZ2FpbiAod2FzIGJyb2tlbiBieQorCisgY29tbWl0IDYxMjI0N2NkZjE0YzFlNzQ1YzM4NGNlZmUxZjNmZGUzZTQ0NWIzNDcgdGhhdCBjaGFuZ2VkCisgTVNHX05PU0lHTkFMIGludG8gTkVUU05NUF9OT1NJR05BTCkKKworMjAxMS0wNy0yOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgMWVkYTY3NTNiN2ZlN2QzYjNmMjE3YzA5MjU0ZWMwMmQwZWUxZDBjZSBNZXJnZTogZGI4Yjg2MAorCisgYTJmOWVjZSBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFRodSBKdWwKKyAyOCAxNTozMjoyOCAyMDExICswMjAwCisKKzIwMTEtMDctMjggIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMTogCisKKyBDSEFOR0VTOiBzbm1wZDogUmVzdG9yZSBzdG9yYWdlIHRhYmxlcyBvbiBMaW51eAorCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6IERvY3VtZW50IGludGVyZmFjZV9yZXBsYWNlX29sZCBvcHRpb24uCisKKworMjAxMS0wNy0yOCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYzogQ0hBTkdFUzoKKworIHNubXBkOiBhZGRlZCAnaW50ZXJmYWNlX3JlcGxhY2Vfb2xkJyBvcHRpb24gdG8gcmVtb3ZlIG9sZCBlbnRyaWVzIGluCisgaWZUYWJsZSB3aGVuIGFuIGludGVyZmFjZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgYWxyZWFkeSBleGlzaW5nIG9uZQorIGFwcGVhcnMuICBFLmcuIHJlbW92ZSBvbGQgcHBwMCBpbnRlcmZhY2Ugd2hlbiBuZXcgcHBwMCBzaG93cyB1cC4KKworMjAxMS0wNy0yOCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wZC5jb25mLjUuZGVmOiBEb2N1bWVudCB0aGUgaW50ZXJmYWNlX2ZhZGVvdXQgb3B0aW9uLgorCisKKzIwMTEtMDctMjggIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmM6IEFsbG93IGlmVGFibGUKKworIGVudHJpZXMgdG8gYmUgZGVsZXRlZCBpbW1lZGlhdGVseSB3aGVuIGFwcHJvcHJpYXRlIGludGVyZmFjZQorIGRpc2FwcGVhcnMgKGkuZS4gaW50ZXJmYWNlX2ZhZGVvdXQgPSAwIHdvcmtzIGFzIGV4cGVjdGVkKS4KKworMjAxMS0wNy0yOCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYzogQ0hBTkdFUzoKKworIHNubXBkOiBhZGRlZCAnaW50ZXJmYWNlX2ZhZGVvdXQnIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIHNldAorIGxpZmV0aW1lIG9mIGlmVGFibGUgZW50cmllcyBvZiByZW1vdmVkIGludGVyZmFjZXMuICBQcmV2aW91cyBsaWZldGltZSB3YXMgaGFyZGNvZGVkIDUgbWludXRlcywgbm93IGl0J3MgY29uZmlndXJhYmxlLgorCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZDYyYTBlYjkwNzBiNGQ4ZDlmZTJiY2ZkYjRkNTNkMzdlZjgxNGY5YiBBdXRob3I6IEphbgorCisgU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgVGh1IEp1bCAyOAorIDE0OjQ5OjA4IDIwMTEgKzAyMDAKKworMjAxMS0wNy0yOCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYzogQ0hBTkdFUzoKKworIHNubXBkOiBhZGRlZCAnaW50ZXJmYWNlX3JlcGxhY2Vfb2xkJyBvcHRpb24gdG8gcmVtb3ZlIG9sZCBlbnRyaWVzIGluCisgaWZUYWJsZSB3aGVuIGFuIGludGVyZmFjZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgYWxyZWFkeSBleGlzaW5nIG9uZQorIGFwcGVhcnMuICBFLmcuIHJlbW92ZSBvbGQgcHBwMCBpbnRlcmZhY2Ugd2hlbiBuZXcgcHBwMCBzaG93cyB1cC4KKworMjAxMS0wNy0yOCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wZC5jb25mLjUuZGVmOiBEb2N1bWVudCB0aGUgaW50ZXJmYWNlX2ZhZGVvdXQgb3B0aW9uLgorCisKKzIwMTEtMDctMjggIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmM6IEFsbG93IGlmVGFibGUKKworIGVudHJpZXMgdG8gYmUgZGVsZXRlZCBpbW1lZGlhdGVseSB3aGVuIGFwcHJvcHJpYXRlIGludGVyZmFjZQorIGRpc2FwcGVhcnMgKGkuZS4gaW50ZXJmYWNlX2ZhZGVvdXQgPSAwIHdvcmtzIGFzIGV4cGVjdGVkKS4KKworMjAxMS0wNy0yOCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYzogQ0hBTkdFUzoKKworIHNubXBkOiBhZGRlZCAnaW50ZXJmYWNlX2ZhZGVvdXQnIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIHNldAorIGxpZmV0aW1lIG9mIGlmVGFibGUgZW50cmllcyBvZiByZW1vdmVkIGludGVyZmFjZXMuICBQcmV2aW91cyBsaWZldGltZSB3YXMgaGFyZGNvZGVkIDUgbWludXRlcywgbm93IGl0J3MgY29uZmlndXJhYmxlLgorCisyMDExLTA3LTI4ICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYXBwcy9zc2h0b3NubXAuYywgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jOiBDSEFOR0VTOiBidWlsZGluZzogYnVpbGQKKyAgICAgIGZpeAorCisgZm9yIHN5c3RlbXMgbGFja2luZyBNU0dfRE9OVFdBSVQKKworMjAxMS0wNy0yNyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmM6IENIQU5HRVM6IHNubXBkOiBNYWtlCisKKyBUQ1AtTUlCOjp0Y3BDdXJyRXN0YWIgd29yayBhZ2Fpbi4gV2FzIGJyb2tlbiBpbiA1LjcgYnkgdGhlCisgaW50cm9kdWN0aW9uIG9mIHRoZSAiZmVhdHVyZXMiIGZlYXR1cmUuCisKKzIwMTEtMDctMjcgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBmYjg4MDc0ZmJiYzI2OGM3ZjA1MDk0OTE1MzVhZWM1ZmVjYjA1Njg0IE1lcmdlOiBhNzQzYWU1CisKKyAzODIxMjczIEF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFdlZCBKdWwgMjcgMTQ6NDc6MjUgMjAxMSArMDIwMAorCisyMDExLTA3LTI3ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgMzFmYTA3Y2Q5ZmZkZTQ2ZDQxZDJiNTgzOGMzZmM0ZDAxNTQ4YmZiNSBBdXRob3I6IEphbgorCisgU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgV2VkIEp1bCAyNworIDE0OjQ1OjQ3IDIwMTEgKzAyMDAKKworMjAxMS0wNy0yNyAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L3NubXBkLmM6IENIQU5HRVM6IHNubXBkOiBydW4gc2lnbmFsIGhhbmRsZXJzIHdoZW4gc2VsZWN0KCkKKworIGlzIGludGVycnVwdGVkLiAgVGhpcyBiZWhhdmlvciBpcyBpbmRpY2F0ZWQgaW4gY29tbWVudCBvbiBsaW5lIDEyNDQsIGJ1dCBpdCB3YXMgbm90CisgYWN0dWFsbHkgZG9uZS4KKworMjAxMS0wNy0yNiAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgMmU5NDY2ZDdmNTlkNjVkMDUwMjc3NzM1ZTRlZDlkMzA3MTlmZjc1MiBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUdWUgSnVsIDI2IDEzOjEwOjA0IDIwMTEgKzAyMDAKKworMjAxMS0wNy0yNiAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgNzcwODI5Njc2MGVhZjVhODBkODU0MDc0NmM5YzI0OTgyNmZkMWJmZSBNZXJnZTogZWExMWU1ZQorCisgY2Q2ZTM4MiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFR1ZSBKdWwKKyAyNiAxNjoyMTo0MSAyMDExICswMjAwCisKKzIwMTEtMDctMjYgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYzogQ2xhcmlmeSBhbiBJUHY2IHNvdXJjZSBjb2RlIGNvbW1lbnQKKworCisyMDExLTA3LTI2ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBhZ2VudC9hZ2VudF9oYW5kbGVyLmMsIG1hbi9uZXRzbm1wX2hhbmRsZXIuMzogU3BlbGxpbmcgZml4OgorCisgZGVmaW5lZHkgLT4gZGVmaW5lZAorCisyMDExLTA3LTI2ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBhZ2VudC9oZWxwZXJzL3N0YXNoX2NhY2hlLmMsIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjM6IFNwZWxsaW5nCisKKyBmaXg6IGFsZXZpYXRlIC0+IGFsbGV2aWF0ZQorCisyMDExLTA3LTI2ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZGQyYzQ3MTMzNDkzZDVhMDBkZTZiM2NkYmNmYWM3ZTlkNDRiNmZmZSBNZXJnZTogZjljY2JjNworCisgZWExMWU1ZSBBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUdWUgSnVsIDI2IDE0OjI1OjI4IDIwMTEgKzAyMDAKKworMjAxMS0wNy0yNiAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGM1YTg0NjRjNDJhOTRjMjUwZWUyZGZhMmE0NzMxMDlhNzM0MjAzZDggQXV0aG9yOiBKYW4KKworIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFR1ZSBKdWwgMjYKKyAxNDoyNDo1NSAyMDExICswMjAwCisKKzIwMTEtMDctMjUgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBmOWNjYmM3NzI2NjYxMzRkMWQxNzhiNTA1YWY5ZGRjZGQ5ZWQ0MjQ0IEF1dGhvcjogSmFuCisKKyBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBNb24gSnVsIDI1CisgMTU6MDI6MTUgMjAxMSArMDIwMAorCisyMDExLTA3LTIwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBiMGMwYTM1NWQ1ZjYwMWExMWJlNDkxNGZiZjcxMzcxNmFiZDMwYTI5IEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFR1ZSBKdWwgMTkKKyAxODozNjoxMSAyMDExIC0wNzAwCisKKzIwMTEtMDctMjAgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGMxNGZjMzg2MTRiYWYxMGQ1MTcxMzZmMDQ4MDkwN2I3ZjAzZDhkNzQgQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgV2VkIEp1bCAyMAorIDEzOjQ0OjU5IDIwMTEgLTA3MDAKKworMjAxMS0wNy0xOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdGVzdGhhbmRsZXIuYzogcmVtb3ZlIGJyb2tlbiB3aGl0ZXNwYWNlIGxpbmVzIHRoYXQKKworIGxlYWRzIHRvIHJlYWRpbmcgY29uZnVzaW9uCisKKzIwMTEtMDctMjAgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGViZGQyMTZjMDc0YmY0MWNkM2EwODRiZDE0Njg5Y2YwMWM4ODdiMzEgQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgVHVlIEp1bCAxOQorIDE4OjM2OjExIDIwMTEgLTA3MDAKKworMjAxMS0wNy0xOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogLmdpdGlnbm9yZTogdXBkYXRlZCBnaXRpZ25vcmUgdG8gaWdub3JlIGEgbnVtYmVyIG9mIGF1dG8tZ2VuZXJhdGVkCisKKyBmaWxlcworCisyMDExLTA3LTE5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC90ZXN0aGFuZGxlci5jOiByZW1vdmUgYnJva2VuIHdoaXRlc3BhY2UgbGluZXMgdGhhdAorCisgbGVhZHMgdG8gcmVhZGluZyBjb25mdXNpb24KKworMjAxMS0wNy0xOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgZGY1ZjcwMDU1Y2Y5YmUzM2YwNWZiNTBhYmUyZjVhODFlYWMwOTJhZCBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUdWUgSnVsIDE5IDExOjA3OjE5IDIwMTEgKzAyMDAKKworMjAxMS0wNy0xOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgZjU5NmYxODI0MmRjZGZkNmNmNDljODhkYTFkODM2YzE2ZTI2MGNhYyBNZXJnZTogMGYzMDliNAorCisgNzBkZWU0YiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFR1ZSBKdWwKKyAxOSAxMTozMzoyOCAyMDExICswMjAwCisKKzIwMTEtMDctMTkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqICBhZ2VudC9hZ2VudF90cmFwLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWJfNV81LmM6IENIQU5HRVM6IHNubXBkOiBQQVRDSDoKKyAgICAgIDMzNjk2ODA6CisKKyBmcm9tIElseWEgWWFub2s6IGNoYW5nZSBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzIGZyb20gaW50IHRvIGxvbmcgc3VjaAorIHRoYXQgbW9kaWZ5aW5nIHRoZSBjb3JyZXNwb25kaW5nIE1JQiBvYmplY3QgZG9lcyBub3Qgb3ZlcndyaXRlCisgbWVtb3J5IGluIDY0LWJpdCBidWlsZHMuCisKKzIwMTEtMDctMTkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jOiBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDMzNzA2NDU6CisKKyBmcm9tIEJpbGwgRmVubmVyOiBGaXggQWdlbnRYIHN1YmFnZW50IGZvdXIgYnl0ZSBsZWFrCisKKzIwMTEtMDctMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IFRlc3QgaGFybmVzczogZG8KKworIG5vdCBpbnZva2UgSVNSVU5OSU5HKCkgb24gTWluR1cuCisKKzIwMTEtMDctMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IFRlc3QgaGFybmVzczoKKworIGNsZWFudXAgLSByZW1vdmUgY29kZSB0aGF0IGJlY2FtZSBzdXBlcmZsdW91cy4KKworMjAxMS0wNy0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogTWluR1c6IERvIG5vdAorCisgYXNzdW1lIHRoYXQga2lsbC5leGUgcmVwb3J0cyB2aWEgaXRzIGV4aXQgc3RhdHVzIHdoZXRoZXIgdGhlCisgc2lnbmFsbGVkIHByb2Nlc3Mgc3RpbGwgZXhpc3RzLgorCisyMDExLTA3LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBDSEFOR0VTOiB0ZXN0aW5nOgorCisgUmVtb3ZlIHRoZSBmdW5jdGlvbiBXQUlUT1JESUUoKSBmcm9tIHNpbXBsZV9ldmFsX3Rvb2xzLnNoIHNpbmNlIGl0CisgaXMgbmV2ZXIgaW52b2tlZC4KKworMjAxMS0wNy0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogQ0hBTkdFUzogdGVzdGluZzoKKworIFNpbXBsaWZ5IFdBSVRGT1IoKSBpbiBzaW1wbGVfZXZhbF90b29scy5zaC4gVGhlIGNvZGUgdGhhdCBoYW5kbGVkCisgaW52b2NhdGlvbiBvZiBXQUlURk9SKCkgd2l0aCB6ZXJvIG9yIG9uZSBhcmd1bWVudHMgaGFzIGJlZW4gZHJvcHBlZAorIHNpbmNlIFdBSVRGT1IoKSBpcyBhbHdheXMgaW52b2tlZCB3aXRoIHR3byBhcmd1bWVudHMuCisKKzIwMTEtMDctMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IFRlc3QgaGFybmVzczoKKworIG1pbm9yIHNpbXBsaWZpY2F0aW9uLgorCisyMDExLTA3LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTl0cmFwZHRyYXBoYW5kbGVfc2ltcGxlOiBDSEFOR0VTOgorCisgdGVzdGluZzogU2tpcCB0ZXN0IDU5IGlmIFNJR0hVUCBpcyBub3Qgc3VwcG9ydGVkLiBNYWtlcyB0ZXN0IDU5IHBhc3MKKyBvbiBNaW5HVy4KKworMjAxMS0wNy0wNiAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogTWluR1cgZml4CisKKworMjAxMS0wNy0wNiAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogVGVzdCBmcmFtZXdvcmsKKworIHJlZmFjdG9yaW5nOiBJbnRyb2R1Y2UgV0FJVEZPUk5PVENPTkQoKS4KKworMjAxMS0wNy0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogQ0hBTkdFUzogdGVzdGluZzoKKworIE1ha2UgU1RPUFBST0cgc2VuZCBTSUdURVJNIHJlcGVhdGVkbHkuIFRoaXMgZml4ZXMgYSByYWNlIHdoZXJlCisgU0lHVEVSTSBjb3VsZCBiZSBzZW50IGJlZm9yZSB0aGUgU0lHVEVSTSBzaWduYWwgaGFuZGxlciB3YXMgc2V0IHVwLAorIGVzcGVjaWFsbHkgd2hlbiBydW5uaW5nIHRoZSByZWdyZXNzaW9uIHRlc3RzIHVuZGVyIFZhbGdyaW5kLgorIENIQU5HRVM6IHRlc3Rpbmc6IE1ha2UgdGhlIFNOTVBfVkVSQk9TRT0xIG91dHB1dCBldmVuIG1vcmUgdmVyYm9zZS4KKworMjAxMS0wNy0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogVGVzdCBoYXJuZXNzCisKKyByZWZhY3RvcmluZzogaW50cm9kdWNlIEVDSE9TRU5EU0lHVEVSTSgpIGFuZCBFQ0hPU0VORFNJR0tJTEwoKQorCisyMDExLTA3LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBGaXggYSBidWcgaW4KKworIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2ggdGhhdCB3YXMgaW50cm9kdWNlZAorIGluIGNvbW1pdCA5MzhkNzVjLgorCisyMDExLTA3LTAxICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAuZ2l0aWdub3JlOiAuZ2l0aWdub3JlOiBJZ25vcmUgKi5leGUgZmlsZXMgZ2VuZXJhdGVkIGJ5IHRoZSBXaW4zMgorCisgYnVpbGQKKworMjAxMS0wNy0wNCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogQ0hBTkdFUzogdGVzdGluZzoKKworIFRlc3Qgb25seSBvbmNlIGR1cmluZyBhIHRlc3Qgd2hldGhlciB0aGUgc2hlbGwgc3VwcG9ydHMgc3ViLXNlY29uZAorIHNsZWVwaW5nIGluc3RlYWQgb2YgcmVwZWF0ZWRseS4KKworMjAxMS0wNy0wNCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfcnVuOiBDSEFOR0VTOiB0ZXN0aW5nOiBDaGFuZ2VkCisKKyBkZWZhdWx0IHRpbWVvdXQgZnJvbSAxcyB0byAxMHMgd2hlbiB0aGUgcmVncmVzc2lvbiB0ZXN0cyBhcmUgcnVuCisgdW5kZXIgVmFsZ3JpbmQKKworMjAxMS0wNy0wNCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogQ0hBTkdFUzogdGVzdGluZzoKKworIEFmdGVyIGhhdmluZyBzZW50IFNJR1RFUk0gdG8gc25tcGQgb3Igc25tcHRyYXBkLCB3YWl0IHVudGlsIHRoZQorIHByb2Nlc3MgaGFzIHN0b3BwZWQgYmVmb3JlIHNlbmRpbmcgU0lHS0lMTC4gVGhpcyByYWNlIGNvbmRpdGlvbiB3YXMKKyBoaXQgbW9zdCBlYXNpbHkgd2hlbiBydW5uaW5nIHRoZSByZWdyZXNzaW9uIHRlc3RzIHVuZGVyIFZhbGdyaW5kLgorIENIQU5HRVM6IHRlc3Rpbmc6IENoZWNrIFBJRCBmaWxlIGV4aXN0ZW5jZSBhZnRlciBoYXZpbmcgcmVhZCBpdAorIGluc3RlYWQgb2YgYmVmb3JlLiBUaGlzIGZpeGVzIHRoZSByYWNlIGNvbmRpdGlvbiB3aGVyZSB0aGUgUElEIGZpbGUKKyBkaXNhcHBlYXJlZCBhZnRlciB0aGUgZXhpc3RlbmNlIGNoZWNrIGFuZCBiZWZvcmUgaXQgd2FzIHJlYWQuCisKKzIwMTEtMDYtMTcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jOiBGaXggYSBidWcgaW4gYSBkZWJ1ZyBzdGF0ZW1lbnQKKworIGludHJvZHVjZWQgYnkgcGF0Y2ggMzMxMDI1MCAvIHIyMDQ5NDogdXNlICVsZCB0byBwcmludCBhIHZhbHVlIG9mCisgdHlwZSBvaWQgaW5zdGVhZCBvZiAlZC4gIFRoaXMgcGF0Y2ggaXMgYSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHRvIFY1LjYgU1ZOIHBhdGNoZXM6IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA1MTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDUxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNy0xOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgMGYzMDliNDkzYzIxZDNjNjkxNDQ4NzUxNGI0MTU2MDc1NGZmY2RmOSBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUdWUgSnVsIDE5IDA4OjM3OjUwIDIwMTEgKzAyMDAKKworMjAxMS0wNy0xOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgMWI3NDU0YmMyODE1Njg0NzBhMTMwMDQ3NmQyZWRiNGY0MTFlNjAyOSBNZXJnZTogOGQ5ZGNjOAorCisgNjkwZWE3ZCBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFR1ZSBKdWwKKyAxOSAwODozMToyOCAyMDExICswMjAwCisKKzIwMTEtMDctMTkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFwcHMvc25tcHRyYXBkLmM6IENIQU5HRVM6IHNubXB0cmFwZDogQWRkIG1pc3NpbmcgbmV3bGluZQorCisgY2hhcmFjdGVyIGluIGEgbG9nIG1lc3NhZ2UKKworMjAxMS0wNy0xOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYXBwcy9zbm1wdHJhcGQuYzogQ0hBTkdFUzogc25tcHRyYXBkOiBJbnZva2Ugc2h1dGRvd25fcGVybCgpIHdoZW4KKworIHNodXR0aW5nIGRvd24KKworMjAxMS0wNy0xOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogc25tcGxpYi9zbm1wVURQSVB2NkRvbWFpbi5jOiBTcGVsbGluZyBmaXg6IGJyYW5rZXQgLT4gYnJhY2tldAorCisKKzIwMTEtMDctMTcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGNvbmZpZ3VyZSwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogUnVuIGF1dG9yZWNvbmYuCisKKyBGaXhlcyBidWlsZCBicmVha2FnZSBjYXVzZWQgYnkgcGF0Y2gKKyBkNTg4ZWM4NTNiZDA1MzFmMjEyZmNiZjUxYjk2MmI5NmM2ODI4YjU5IChSUE0gNC45IHN1cHBvcnQpCisKKzIwMTEtMDctMTcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGQ2MTdkODRmODNmYTY5ZWQ5ZmE5Zjk4ZWZjNGFmYWY4ODBkMTIxZjIgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVGh1IEp1bCAxNCAxNjo0Mzo0NyAyMDExICswMjAwCisKKzIwMTEtMDctMTQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4uYzogQ0hBTkdFUzogc25tcGxpYjogTWFrZQorCisgbmV0c25tcF9pcHY2X2ZtdGFkZHIoKSBzaG93IHRoZSBJUHY2IHNjb3BlIElECisKKzIwMTEtMDctMTcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmMsIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IENIQU5HRVM6IFdpbjMyOiBBZGQgc3VwcG9ydAorICAgICAgZm9yCisKKyBJUHY2IGFkZHJlc3Mgc2NvcGUgSUQKKworMjAxMS0wNy0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogY29uZmlndXJlLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiBSdW4gYXV0b3JlY29uZgorCisKKzIwMTEtMDctMTcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGE1NjcyMWEzZTc3NTRlMzg5ZGFhN2U4YTNkNTc5Mjg5OWVkYzlkZTMgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVGh1IEp1bCAxNCAxNjoxODozMiAyMDExICswMjAwCisKKzIwMTEtMDctMTUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDg0NGQ0Y2U4NjdiZjNhYmU3Yjc1MzZjNWRiZmJhNDAxOTM3YThkNGEgTWVyZ2U6IGVlZDAxOTgKKworIDYxMDM2YTggQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBGcmkgSnVsIDE1IDE1OjMzOjEwIDIwMTEgLTA3MDAKKworMjAxMS0wNy0xNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgODUxYmNmNTNmY2QxM2NkZjBiYTlmMTJlNWQ2MDNlNzNmOGJiOTYxMSBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBGcmkgSnVsIDE1CisgMTU6MzI6NDkgMjAxMSAtMDcwMAorCisyMDExLTA3LTE0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYzogZml4IGEgdHlwbworCisKKzIwMTEtMDctMTMgIFJvYmVydCBTdG9yeSA8cnN0b3J5QGxvY2FsaG9zdD4KKworICAgKiBzbm1wbGliL3BhcnNlLmM6IENIQU5HRVM6IHNubXBsaWI6ICB0d2VhayBwYXRjaCAzMDQ0ODg4IHRvIHJlc3RvcmUKKworIHByb3BlciBub24tZXJyb3IgcmV0dXJuIGR1cmluZyBtaWIgbG9hZGluZworCisyMDExLTA3LTExICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGFkZGVkIDUuNyBwYXRjaGVzIHRvIHRoZSBicmFuY2ggbGlzdCBhbmQgZml4IHRoZSByZWxlYXNlIGZpbGUKKworCisyMDExLTA3LTExICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGFkZGVkIDUuNyBwYXRjaGVzIHRvIHRoZSBicmFuY2ggbGlzdAorCisKKzIwMTEtMDctMTEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGRpc3QvcmVsZWFzZTogYSBjb3B5IG9mIHRoZSByZWxlYXNlIGZpbGUgYXBwbGllZCB0byB0aGUgb2xkZXIKKworIGJyYW5jaGVzCisKKzIwMTEtMDctMTEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYWRkZWQgNS43IHBhdGNoZXMKKworCisyMDExLTA3LTExICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBjNDMxMjMxZThmMGEzOWQxOTUwYmM3MmMzMmUzNDAyZjkwZmE4MDMwIE1lcmdlOiA1NmZlZTQwCisKKyBhMmFjMjRkIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgTW9uIEp1bCAxMSAxOTozMzoxNyAyMDExIC0wNzAwCisKKzIwMTEtMDctMTEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYWRkZWQgYSBjb3B5IG9mIHRoZQorCisgc2hlbGwtZnVuY3Rpb25zIHRvIHRoZSBvbGRlciBicmFuY2gKKworMjAxMS0wNy0xMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9yZWxlYXNlOiBhIGNvcHkgb2YgdGhlIHJlbGVhc2UgZmlsZSBhcHBsaWVkIHRvIHRoZSBvbGRlcgorCisgYnJhbmNoZXMKKworMjAxMS0wNy0wMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nOiB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS43CisKKworMjAxMS0wNy0wMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43CisKKworMjAxMS0wNy0wMSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRMU0Jhc2VEb21haW4uaCwgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmM6IFJldmVydCAiZml4IGR0bHN1ZHAKKworIHRyYW5zcG9ydCBhZGRyZXNzIGZvcm1hdCBmdW5jdGlvbiIgVGhpcyByZXZlcnRzIGNvbW1pdCAyYWIzYTZlNmYyZmNjMWZmM2U1ZjBmYjVkYzVkMDVlNDk4ODIwZDg5LiAgIC0gZm9yIHNvbWUgcmVhc29uIEkgc2F3ICdyYycgYW5kIG15IGJyYWluIGludGVycHJldGVkIGl0IGFzICAgICdwcmUtcmVsZWFzZScuIFdoYXQgY2FuIEkgc2F5LCBpdCB3YXMgbGF0ZS4gOi0vCisKKzIwMTEtMDctMDEgIFJvYmVydCBTdG9yeSA8cnN0b3J5QGxvY2FsaG9zdD4KKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUTFNCYXNlRG9tYWluLmgsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5jOiBmaXggZHRsc3VkcCB0cmFuc3BvcnQKKworIGFkZHJlc3MgZm9ybWF0IGZ1bmN0aW9uICAtIHVwZGF0ZSBpcHY0IGZtdGFkZHIgdG8gaGFuZGxlIHNvY2thZGRyIGFuZCB0byBjaGVjayAgICBzaXplIGJlZm9yZSBhc3N1bWluZyBkYXRhIGlzIGFkZHIgcGFpciAgLSBtb3ZlIGR0bHN1ZHAgZnVuY3Rpb25zIHRvIGV4dHJhY3QgYWRkcihzKSB0byB0bHNiYXNlCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDU2ZmVlNDAxMThiMjFhOWY0ZGMwMmE2ZjI0N2Y3ZGE2ZmM2OWEwMDUgTWVyZ2U6IGQzOTE5NGIKKworIDlmZjQ3MTQgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBXZWQgSnVuIDI5IDIzOjE4OjEzIDIwMTEgLTA3MDAKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6IGZpeCB0YWcgcHVzaGluZworCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2UueG1sOiBmaXggdGFnIHB1c2hpbmcKKworCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDogbWlzYyBwdWJsaWNhdGlvbiBmaXhlcyBmb3VuZCB3aGlsZQorCisgcHVibGlzaGluZworCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDaGFuZ2VMb2c6IHZlcnNpb24gdXBkYXRlIGZvciA1LjcucmMzCisKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LnJjMworCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2UueG1sOiByZW1vdmUgdW5uZWVkZWQgY29tbWVudAorCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2UueG1sOiBtaXNjIHB1YmxpY2F0aW9uIGZpeGVzIGZvdW5kIHdoaWxlCisKKyBwdWJsaXNoaW5nCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IHJhbiBhdXRvaGVhZGVyIHRvIGFkZCB0aGUKKworIG1pc3NpbmcgdGVtcGxhdGUgaWZkZWZzCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENoYW5nZUxvZzogdmVyc2lvbiB1cGRhdGUgZm9yIDUuNy5yYzIKKworCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYzogVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcucmMyCisKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgNjRiNmM2OGE4NDkzMGFiMDFlM2UxNDZjNDlmM2FiNTM4MmVmZGEzZSBNZXJnZTogMTI3ZWVjMgorCisgZDM5MTk0YiBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFdlZCBKdW4gMjkgMTc6MTI6NDYgMjAxMSAtMDcwMAorCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBkZjljZjlhMWUyOTNkMDVhMjQ3ODY2OTRmNjhjMDVhMmJlMTNhOWIzIEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFdlZCBKdW4gMjkKKyAxNjozNDoxMSAyMDExIC0wNzAwCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2UueG1sOiB1c2UgZ2l0MmNsIHRvIGdlbmVyYXRlIHRoZSBDaGFuZ2VMb2cgZmlsZTsKKworIG5lZWRzIG11Y2ggbW9yZSB3b3JrLgorCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDogdXNlIHRoZSBuZXcgcnVuLWF1dG9jb25mIHNjcmlwdAorCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGRpc3QvcnVuLWF1dG9jb25mOiBBIHNjcmlwdCB0byBpbnZva2UgdGhlIGNvcnJlY3QgdmVyc2lvbiBvZiB0aGUKKworIGF1dG9jb25mIHRvb2wKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6IHJlbWFpbmluZyBjb21tYW5kIGxpbmUgY2hhbmdlcyBmb3Igc3ZuIC0+CisKKyBnaXQKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6IG1ha2UgdGhlIGJyYW5jaCBlY2hvIG91dHB1dCBhbmQgc3ZuIHVwZGF0ZQorCisgY29udmVydGVkIHRvIGdpdCBlcXVpdmFsZW50cworCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDogcHVsbCB0aGUgYnJhbmNoIGluZm8gZnJvbSBnaXQKKworCisyMDExLTA2LTI5ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3JwbS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMTogVHdlYWsgUlBNIGhhbmRsaW5nIHRvIHdvcmsgd2l0aAorICAgICAgbGlicmFyeQorCisgdmVyc2lvbiA0LjkKKworMjAxMS0wNi0yOSAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGQ1ODhlYzg1M2JkMDUzMWYyMTJmY2JmNTFiOTYyYjk2YzY4MjhiNTkgQXV0aG9yOiBKYW4KKworIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFdlZCBKdW4gMjkKKyAxNjowNzowMCAyMDExICswMjAwCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGRpc3QvcmVsZWFzZTogbm90ZWQgdGhhdCB0aGUgbWFzdGVyIGJyYW5jaCBpcyBpbiByYyBzdGF0ZQorCisKKzIwMTEtMDYtMjggIFdlcyBIYXJkYWtlciA8b3BlbnNvdXJjZUBoYXJkYWtlcnMubmV0PgorCisgICAqIDogY29tbWl0IDhiMjNiNGMxMzkyM2I4Y2FmNGQ0YWVkMzJhNDUwOTMzOTM0ZmY0NjEgTWVyZ2U6IDE1Mzc4MWQKKworIDQ3ZjUwNDggQXV0aG9yOiBXZXMgSGFyZGFrZXIgPG9wZW5zb3VyY2VAaGFyZGFrZXJzLm5ldD4gRGF0ZTogICBUdWUKKyBKdW4gMjggMTM6MTQ6NTIgMjAxMSAtMDcwMAorCisyMDExLTA2LTI4ICBXZXMgSGFyZGFrZXIgPG9wZW5zb3VyY2VAaGFyZGFrZXJzLm5ldD4KKworICAgKiA6IGNvbW1pdCBhZjhiMjM1MjM0ZjcyOTQ0YTY0OWE3NmYwZDMwY2ZmOTVhYzJlODk1IEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8b3BlbnNvdXJjZUBoYXJkYWtlcnMubmV0PiBEYXRlOiAgIFR1ZSBKdW4gMjggMTM6MTE6MTkgMjAxMQorIC0wNzAwCisKKzIwMTEtMDYtMjggIFdlcyBIYXJkYWtlciA8b3BlbnNvdXJjZUBoYXJkYWtlcnMubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogdXNlIGdpdCBtZXJnZSB3aXRoIHRoZSAtLWxvZworCisgb3B0aW9uCisKKzIwMTEtMDYtMjggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDE1Mzc4MWRiZmIyYWZjMDAwM2JhNGU1OGZmY2NhNTMwMDFlNDg2ZDYgTWVyZ2U6IGIzZTgwZGUKKworIDNjNWE0MDkgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUdWUgSnVuCisgMjggMTk6NDM6MTMgMjAxMSArMDIwMAorCisyMDExLTA2LTI4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA5YmM4MmU0Y2E0ODM3ZjAwMDcyZGJhODZiOTQ5N2EyNzE4NjkwOWY5IEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFR1ZSBKdW4gMjggMTk6MTM6MzUgMjAxMSArMDIwMAorCisyMDExLTA2LTI4ICBXZXMgSGFyZGFrZXIgPG9wZW5zb3VyY2VAaGFyZGFrZXJzLm5ldD4KKworICAgKiBGQVE6IFdlJ3JlIG5vdyB1c2luZyBnaXQhCisKKworMjAxMS0wNi0yNyAgV2VzIEhhcmRha2VyIDxvcGVuc291cmNlQGhhcmRha2Vycy5uZXQ+CisKKyAgICogOiBjb21taXQgYjNlODBkZTliMDdkMjgyZmYxMWFmOGIwNmE5MWQ2NDI3OWQzMjYxZCBNZXJnZTogYzRhZDI3OAorCisgNmE1ZTVhNiBBdXRob3I6IFdlcyBIYXJkYWtlciA8b3BlbnNvdXJjZUBoYXJkYWtlcnMubmV0PiBEYXRlOiAgIE1vbgorIEp1biAyNyAyMTozNDo1OSAyMDExIC0wNzAwCisKKzIwMTEtMDYtMjcgIFdlcyBIYXJkYWtlciA8b3BlbnNvdXJjZUBoYXJkYWtlcnMubmV0PgorCisgICAqIDogY29tbWl0IDM4ZmU4MTc3ZDUzMzEzNWE2Y2M2ODI3MjRmMTZhOTExMTNiY2Q3ZjMgTWVyZ2U6IDdkOTE3Y2YKKworIGRkNThiYWYgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPG9wZW5zb3VyY2VAaGFyZGFrZXJzLm5ldD4gRGF0ZTogICBNb24KKyBKdW4gMjcgMjE6MzQ6NTYgMjAxMSAtMDcwMAorCisyMDExLTA2LTI3ICBXZXMgSGFyZGFrZXIgPG9wZW5zb3VyY2VAaGFyZGFrZXJzLm5ldD4KKworICAgKiA6IGNvbW1pdCA1YzE3N2Y1MTdkMTZmMDU1NDViMjc5ZDE2ZjBlNGZkNTY5NmJlNjUxIE1lcmdlOiBmMGQ2YmYwCisKKyBjMmJjZWJjIEF1dGhvcjogV2VzIEhhcmRha2VyIDxvcGVuc291cmNlQGhhcmRha2Vycy5uZXQ+IERhdGU6ICAgTW9uCisgSnVuIDI3IDIxOjM0OjU1IDIwMTEgLTA3MDAKKworMjAxMS0wNi0yNyAgV2VzIEhhcmRha2VyIDxvcGVuc291cmNlQGhhcmRha2Vycy5uZXQ+CisKKyAgICogOiBjb21taXQgOWM5NzY5NTcyZWI4YzAzYjY5NTU2YzFjNWFhYjliNGQ1NmM2ZDFkMyBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBNb24gSnVuIDI3CisgMTQ6MTE6MTQgMjAxMSArMDAwMAorCisyMDExLTA2LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFkZGVkIGEgZmVhdHVyZSB0byBub3Qgcm9sbAorCisgYnJhbmNoZXMgY3VycmVubHkgaW4gcmMgcGhhc2UgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTMyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFkZGVkIGEgbnNyb2xsdXAgZnVuY3Rpb24gZm9yCisKKyByb2xsaW5nIGJyYW5jaGVzIHVwd2FyZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUzMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBjcmVhdGVkIGFuIG5zcGF0Y2hhcHBseSBmdW5jdGlvbgorCisgdG8gYXBwbHkgYSBwcmV2aW91c2x5IHRlc3RlZCBwYXRjaCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA1MzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYWRkZWQgYSBuc3RyeXBhdGNoIGZ1bmN0aW9uIHRvCisKKyB0ZXN0IHBhdGNoIGFwcGxpY2F0aW9uIGFnYWluc3QgdmFyaW91cyBicmFuY2hlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA1MjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYWRkZWQgdmVyYm9zZSBvdXRwdXQgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA1MjggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogbW9yZSBwcmVmaXggY2hhbmdlcyBhbmQgYmV0dGVyCisKKyBzZXR0aW5nIG9mIGRlZmF1bHQgdmFsdWVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUyNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiB1c2UgbnMgcHJlZml4ZXMgaW5zdGVhZCBvZiBnZW5lcmljCisKKyBzbm1wIHByZWZpeGVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUyNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDaGFuZ2VMb2c6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUyNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogCisKKyBNaXNzaW5nIGNoZWNrIGZvciBycG10cy5oIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlOiBWZXJzaW9uIG51bWJlciB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTIyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywgCisgICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsIAorICAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgCisgICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsIAorICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsIAorICAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgCisgICAgICBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywgCisgICAgICBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsIAorICAgICAgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsIG1hbi9uZXRzbm1wX3V0aWwuMywKKyAgICAgICBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzogZG9jdW1lbnRhdGlvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTIxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywgCisgICAgICBzbm1wbGliL3NubXBfdmVyc2lvbi5jOiBWZXJzaW9uIG51bWJlciB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTIwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTIzICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3aW5zdC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiBUd2VhayBSUE0gaGFuZGxpbmcgdG8gd29yaworCisgd2l0aCBsaWJyYXJ5IHZlcnNpb24gNC45IEJhc2VkIG9uIGEgcGF0Y2ggYnkgSmFuIFNhZnJhbmVrIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjIgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYzogUHJvdmlkZSBhIGZyYW1ld29yayBmb3IgcmVhZGluZworCisgUlBNIHBhY2thZ2UgaW5mb3JtYXRpb24gZnJvbSBhIGNhY2hlIGRpcmVjdG9yeSAocmF0aGVyIHRoYW4gcXVlcnlpbmcKKyB0aGUgUlBNZGIgZGlyZWN0bHkpLiAgTXkgYXBvbG9naWVzIHRvIEplZmYgSm9obnNvbiBmb3IgdGhlIGRlbGF5IGluIGFkZGluZyB0aGlzCisgZnVuY3Rpb25hbGl0eS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjIgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA1MTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjIgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlOiBWZXJzaW9uIG51bWJlciB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNTE1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTIyICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywgCisgICAgICBzbm1wbGliL3NubXBfdmVyc2lvbi5jOiBWZXJzaW9uIG51bWJlciB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNTE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTIxICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYzogUHJvdmlkZSBhCisKKyBmcmFtZXdvcmsgZm9yIHJlYWRpbmcgUlBNIHBhY2thZ2UgaW5mb3JtYXRpb24gZnJvbSBhIGNhY2hlIGRpcmVjdG9yeQorIChyYXRoZXIgdGhhbiBxdWVyeWluZyB0aGUgUlBNZGIgZGlyZWN0bHkpLiAgTXkgYXBvbG9naWVzIHRvIEplZmYgSm9obnNvbiBmb3IgdGhlIGRlbGF5IGluIGFkZGluZyB0aGlzCisgZnVuY3Rpb25hbGl0eS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA1MTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjEgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcGtnaW5mby5jOiBQcm92aWRlIGEKKworIGZyYW1ld29yayBmb3IgcmVhZGluZyBSUE0gcGFja2FnZSBpbmZvcm1hdGlvbiBmcm9tIGEgY2FjaGUgZGlyZWN0b3J5CisgKHJhdGhlciB0aGFuIHF1ZXJ5aW5nIHRoZSBSUE1kYiBkaXJlY3RseSkuICBNeSBhcG9sb2dpZXMgdG8gSmVmZiBKb2huc29uIGZvciB0aGUgZGVsYXkgaW4gYWRkaW5nIHRoaXMKKyBmdW5jdGlvbmFsaXR5LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDUxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yMSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmM6IFByb3ZpZGUgYQorCisgZnJhbWV3b3JrIGZvciByZWFkaW5nIFJQTSBwYWNrYWdlIGluZm9ybWF0aW9uIGZyb20gYSBjYWNoZSBkaXJlY3RvcnkKKyAocmF0aGVyIHRoYW4gcXVlcnlpbmcgdGhlIFJQTWRiIGRpcmVjdGx5KS4gIE15IGFwb2xvZ2llcyB0byBKZWZmIEpvaG5zb24gZm9yIHRoZSBkZWxheSBpbiBhZGRpbmcgdGhpcworIGZ1bmN0aW9uYWxpdHkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA1MTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMTkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jOiBGb2xsb3ctdXAgZm9yIHIyMDUxMTogcmVhbGx5IHVzZQorCisgdGhlIHByb3BlciBmb3JtYXQgc3BlY2lmaWNhdGlvbi4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA1MTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMTkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jOiBGb2xsb3ctdXAgZm9yIHIyMDUxMTogcmVhbGx5IHVzZQorCisgdGhlIHByb3BlciBmb3JtYXQgc3BlY2lmaWNhdGlvbi4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA1MTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMTcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jOiBGaXggYSBidWcgaW4gYSBkZWJ1ZyBzdGF0ZW1lbnQKKworIGludHJvZHVjZWQgYnkgcGF0Y2ggMzMxMDI1MCAvIHIyMDQ5NDogdXNlICVsZCB0byBwcmludCBhIHZhbHVlIG9mCisgdHlwZSBvaWQgaW5zdGVhZCBvZiAlZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA1MTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMTcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jOiBGaXggYSBidWcgaW4gYSBkZWJ1ZyBzdGF0ZW1lbnQKKworIGludHJvZHVjZWQgYnkgcGF0Y2ggMzMxMDI1MCAvIHIyMDQ5NDogdXNlICVsZCB0byBwcmludCBhIHZhbHVlIG9mCisgdHlwZSBvaWQgaW5zdGVhZCBvZiAlZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA1MTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMTcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jOiBVc2UgJXAgdG8gcHJpbnQgYSBwb2ludGVyIGluc3RlYWQKKworIG9mICVsZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTEwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTE3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYzogVXNlICVwIHRvIHByaW50IGEgcG9pbnRlciBpbnN0ZWFkCisKKyBvZiAlbGQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDUxMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0xMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ0hBTkdFUzogdmVyc2lvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA1MDggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMTMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENoYW5nZUxvZzogdmVyc2lvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA1MDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMTMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZTogcnVuIGNvcnJlY3QgdmVyc2lvbiBvZiBhdXRvY29uZiBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUwNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0xMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUwNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0xMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlOiByYW4gYXV0b2NvbmYgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA1MDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMTAgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL2NlcnRfdXRpbC5jOiBJbmNsdWRlIHN0ZGxpYi5oIHRvIG1ha2UgZG1hbGxvYyBoYXBweQorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNTAyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTEwICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19zZWN1cml0eV9tb2R1bGVzOiBGaXggYnVpbGQgb2Ygc25tcHVzbQorCisgd2hlbiBhZGRpdGlvbmFsIHNlYyBtb2R1bGVzIHJlcXVlc3RlZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA1MDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDkgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL2NlcnRfdXRpbC5jOiBJbmNsdWRlIHN0ZOClhuCkhobgpYbgpIWF4KWG4KSFhuClhuCkhobgpYbgpIWFh2liLmggdG8gbWFrZSBkbWFsbG9jIGhhcHB5CisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUwMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wOSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF90cmFuc3BvcnQuYzogQ0hBTkdFUzogQlVHOiAzMTUxODQ1OiBmaXggbXVsdGlwbGUKKworIHJlZ2lzdHJhdGlvbnMgb2Ygc25tcCB0cmFuc3BvcnQgaGFuZGxlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDk5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTA5ICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jOiBDSEFOR0VTOiBCVUc6IDMxNTE4NDU6IGZpeCBtdWx0aXBsZQorCisgcmVnaXN0cmF0aW9ucyBvZiBzbm1wIHRyYW5zcG9ydCBoYW5kbGVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ5OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wOCAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oLCBzbm1wbGliL3NubXBfYXBpLmMsIAorICAgICAgc25tcGxpYi9zeXN0ZW0uYzogbW9yZSBkbnNzZWMgdHdlYWtzICAtIGNyZWF0ZSBhbiBhcHAtZ2xvYmFsCisgICAgICB2YWxpZGF0b3IgY29udGV4dCBmb3IgdXNlIHdpdGggYWxsICAgIHZhbGlkYXRpb24gcm91dGluZXMuIG1haW5seQorICAgICAgdXNlZnVsIGZvciBsb25nLWxpdmVkIGFwcHMuICAgLSB1c2UgdGhlIGFwcHR5cGUgYXMgdGhlIHZhbGlkYXRvcgorICAgICAgJ3Njb3BlJywgYWxsb3dpbmcgICAgZm9yIGFwcC1zcGVjaWZpYyBjb25maWd1cmF0aW9uIG9mIHZhbGlkYXRpb24KKyAgICAgIHZpYSBsaWJ2YWwncyAgICBkbnN2YWwuY29uZiBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ5OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wNyAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmg6IGFkZCBhIG1heCBkZWZpbmUgZm9yCisKKyBlYWNoIGRlZmF1bHQgc3RvcmUgdHlwZSAgIG5vdCBhY3R1YWxseSB1c2VkLCBqdXN0IGEgaGVscGZ1bCByZW1pbmRlciBmb3IgdGhvc2UgYWRkaW5nICAgbmV3IGlkcyB3aG8gbWlnaHQgbm90IHRoaW5rIHRvIGNoZWNrIE5FVFNOTVBfRFNfTUFYX1NVQklEUy4gICAgKHRoZSBib29sIGxpc3QgaXMgcmFwaWRseSBhcHByb2FjaGluZyB0aGUgY3VycmVudCBsaW1pdC4pIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ5NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wNyAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX3J1bjogbWVudGlvbiBidWlsZGRpciB3aGVuCisKKyBjb21wbGFpbmluZyBhYm91dCBub3QgYmVpbmcgcnVuIGZyb20gc291cmNlIHRyZWUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDk2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTAzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBwZXJsL1NOTVAvU05NUC54czogUmV2ZXJ0ZWQgcjIwMzYyOiB0aGF0IHBhdGNoIG1ha2VzIHNlbnNlIG9uIHRoZQorCisgdHJ1bmsgYW5kIHRoZSA1LjYgYnJhbmNoIGJ1dCBub3Qgb24gdGhlIDUuNSBub3Igb24gdGhlIDUuNCBicmFuY2guICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDk1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTAxICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jOgorCisgQ0hBTkdFUzogc25tcGQ6IHBhdGNoIDMzMTAyNTA6IGZyb20gZmVubmVyOiBtaXNjIGZpeGVzIGZvciBkZWJ1Z2dpbmcKKyBvdXRwdXQgb2YgYWdlbnR4IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0OTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmM6CisKKyBDSEFOR0VTOiBzbm1wZDogcGF0Y2ggMzMxMDI1MDogZnJvbSBmZW5uZXI6IG1pc2MgZml4ZXMgZm9yIGRlYnVnZ2luZworIG91dHB1dCBvZiBhZ2VudHggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDk0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTAxICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jOgorCisgQ0hBTkdFUzogc25tcGQ6IHBhdGNoIDMzMTAyNTA6IGZyb20gZmVubmVyOiBtaXNjIGZpeGVzIGZvciBkZWJ1Z2dpbmcKKyBvdXRwdXQgb2YgYWdlbnR4IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0OTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENIQU5HRVMsIE5FV1M6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDkyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTAxICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL01ha2VmaWxlLmRlcGVuZDogbWFrZSBkZXBlbmQgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0OTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZTogZml4ZWQgYXV0b2NvbmYgdmVyc2lvbiBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ5MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ4OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wMSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDSEFOR0VTOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCBhcHBzL01ha2VmaWxlLmRlcGVuZCwgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6IG1ha2UKKworIGRlcGVuZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDg1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTAxICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHBlcmwvU05NUC9TTk1QLnhzOiBSZWluc3RhdGUgYW4gInVudXNlZCIgbGFiZWwgdGhhdCBpcyBhY3R1YWxseQorCisgc3RpbGwgcmVxdWlyZWQuICAocmVmZXJlbmNlZCBpbiBsaW5lIDI3MTApIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOiBGaXggdHlwbyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIG1hbi9uZXRzbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsIAorICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgCisgICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsIAorICAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsIAorICAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywgCisgICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywgCisgICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCBtYW4vbmV0c25tcF9zY2FsYXIuMywgCisgICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgbWFuL25ldHNubXBfdXRpbC4zLAorICAgICAgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsIAorICAgICAgbWFuL25ldHNubXBfd2F0Y2hlci4zOiBkb2N1bWVudGF0aW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLCAKKyAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ0hBTkdFUzogdmVyc2lvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDc5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTAxICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENoYW5nZUxvZzogdmVyc2lvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDc4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTAxICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCAKKyAgICAgIGFwcHMvTWFrZWZpbGUuZGVwZW5kLCBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgCisgICAgICBzbm1wbGliL01ha2VmaWxlLmRlcGVuZDogbWFrZSBkZXBlbmQgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTAxICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywgCisgICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsIAorICAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgCisgICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsIAorICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsIAorICAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgCisgICAgICBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywgCisgICAgICBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsIAorICAgICAgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsIG1hbi9uZXRzbm1wX3V0aWwuMywKKyAgICAgICBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzogZG9jdW1lbnRhdGlvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTAxICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBDSEFOR0VTLCBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjLCBzbm1wbGliL3NubXBfdmVyc2lvbi5jOiBWZXJzaW9uIG51bWJlciB1cGRhdGUKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6IGZpeCB4bWwgcXVvdGluZyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0zMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvcGFyc2UuYzogZml4IG5vbiBleGlzdGVudCBtYWxsb2MgbWFjcm8gdG8gdXNlIGNhbGxvYworICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMzEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oLCBzbm1wbGliL3BhcnNlLmM6IENIQU5HRVM6CisKKyBzbm1wbGliOiBBcHBsaWVkIHRoZSBpbnRlbnQgb2YgcGF0Y2ggMzA0NDg4OCB0byBhbGxvdyBhcHBsaWNhdGlvbnMKKyB0byByZWFkIHRoZSBlcnJvciBtZXNzYWdlcyBvZiBhIE1JQiBwYXJzaW5nIGZhaWx1cmUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMzEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6IAorCisgQ0hBTkdFUzogc25tcGQ6IFBBVENIIDMwNjY4NjI6IGZyb20gZmhldzogZml4IHRoZSBhZ2VudCBmb3IKKyBjb21wYXJpbmcgdW5zaWduZWQgbGFyZ2UgaW5kZXhlcyBvZiB0aGUgZGlzayBhbmQgZXh0ZW5kIHRhYmxlcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMzEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6IAorCisgQ0hBTkdFUzogc25tcGQ6IFBBVENIIDMwNjY4NjI6IGZyb20gZmhldzogZml4IHRoZSBhZ2VudCBmb3IKKyBjb21wYXJpbmcgdW5zaWduZWQgbGFyZ2UgaW5kZXhlcyBvZiB0aGUgZGlzayBhbmQgZXh0ZW5kIHRhYmxlcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMzEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6IAorCisgQ0hBTkdFUzogc25tcGQ6IFBBVENIIDMwNjY4NjI6IGZyb20gZmhldzogZml4IHRoZSBhZ2VudCBmb3IKKyBjb21wYXJpbmcgdW5zaWduZWQgbGFyZ2UgaW5kZXhlcyBvZiB0aGUgZGlzayBhbmQgZXh0ZW5kIHRhYmxlcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMzEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6IAorCisgQ0hBTkdFUzogc25tcGQ6IFBBVENIIDMwNjY4NjI6IGZyb20gZmhldzogZml4IHRoZSBhZ2VudCBmb3IKKyBjb21wYXJpbmcgdW5zaWduZWQgbGFyZ2UgaW5kZXhlcyBvZiB0aGUgZGlzayBhbmQgZXh0ZW5kIHRhYmxlcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMzEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6IAorCisgQ0hBTkdFUzogc25tcGQ6IFBBVENIIDMwNjY4NjI6IGZyb20gZmhldzogZml4IHRoZSBhZ2VudCBmb3IKKyBjb21wYXJpbmcgdW5zaWduZWQgbGFyZ2UgaW5kZXhlcyBvZiB0aGUgZGlzayBhbmQgZXh0ZW5kIHRhYmxlcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ3MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0zMSAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzogQ0hBTkdFUzogc25tcGQ6IGZpeGVkIGhyU1dSdW5QYXRoCisKKyBvZiBzd2FwcGVkLW91dCBwcm9jZXNzZXMgb24gTGludXguICBmZ2V0cygpIHJldHVybnMgTlVMTCBib3RoIHdoZW4gL3Byb2MvUElEL2NtZGxpbmUgaXMgZW1wdHkgKD0gc3dhcHBlZAorIG91dCkgYW5kIHdoZW4gdGhlIHByb2Nlc3MgZXhpdGVkIGFmdGVyIGZvcGVuKCksIHNvIGNoZWNrCisgL3Byb2MvUElEL3N0YXR1cyBpbiBib3RoIGNhc2VzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0zMSAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzogQ0hBTkdFUzogc25tcGQ6IGZpeGVkIGhyU1dSdW5QYXRoCisKKyBvZiBzd2FwcGVkLW91dCBwcm9jZXNzZXMgb24gTGludXguICBmZ2V0cygpIHJldHVybnMgTlVMTCBib3RoIHdoZW4gL3Byb2MvUElEL2NtZGxpbmUgaXMgZW1wdHkgKD0gc3dhcHBlZAorIG91dCkgYW5kIHdoZW4gdGhlIHByb2Nlc3MgZXhpdGVkIGFmdGVyIGZvcGVuKCksIHNvIGNoZWNrCisgL3Byb2MvUElEL3N0YXR1cyBpbiBib3RoIGNhc2VzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0zMSAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzogQ0hBTkdFUzogc25tcGQ6IGZpeGVkIGhyU1dSdW5QYXRoCisKKyBvZiBzd2FwcGVkLW91dCBwcm9jZXNzZXMgb24gTGludXguICBmZ2V0cygpIHJldHVybnMgTlVMTCBib3RoIHdoZW4gL3Byb2MvUElEL2NtZGxpbmUgaXMgZW1wdHkgKD0gc3dhcHBlZAorIG91dCkgYW5kIHdoZW4gdGhlIHByb2Nlc3MgZXhpdGVkIGFmdGVyIGZvcGVuKCksIHNvIGNoZWNrCisgL3Byb2MvUElEL3N0YXR1cyBpbiBib3RoIGNhc2VzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0zMSAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzogQ0hBTkdFUzogc25tcGQ6IGZpeGVkIGhyU1dSdW5QYXRoCisKKyBvZiBzd2FwcGVkLW91dCBwcm9jZXNzZXMgb24gTGludXguICBmZ2V0cygpIHJldHVybnMgTlVMTCBib3RoIHdoZW4gL3Byb2MvUElEL2NtZGxpbmUgaXMgZW1wdHkgKD0gc3dhcHBlZAorIG91dCkgYW5kIHdoZW4gdGhlIHByb2Nlc3MgZXhpdGVkIGFmdGVyIGZvcGVuKCksIHNvIGNoZWNrCisgL3Byb2MvUElEL3N0YXR1cyBpbiBib3RoIGNhc2VzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDogdXAgdGhlIGFudGUgYW5kIHJ1biBvdGhlciB0ZXN0IHN1aXRlcworCisgYmVzaWRlcyBqdXN0IHRoZSBkZWZhdWx0IHNldCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcHVzbS5jOiBDSEFOR0VTOiBzbm1wZDogcGF0Y2ggMzI5OTM4NDogZml4IElORk9STXMgc28KKworIHRoZXkgcmV0cnkgcHJvYmluZyBmb3IgYW4gZW5naW5lSUQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcHVzbS5jOiBBcHBsaWVkIChyb3VnaGx5KSBwYXRjaCAzMjk5MzcwIHRvIGF2b2lkCisKKyByZXdyaXRpbmcgZXhpc3RpbmcgYXV0aGtleS9wcml2a2V5L2V0Y3MgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDYwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXguYywgYWdlbnQvbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXguaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYzogQXBwbGllZCB0aGUgaW50ZW50CisgICAgICBvZgorCisgcGF0Y2ggMzI5OTM4NiB3aGljaCBmaXhlcyBkdXBsaWNhdGUgZW50cmllcyBvbiBhIFNJR0hVUC4gIFRvIGFjaGlldmUKKyB0aGlzIHNvbWUgbmV3IGhlYWRlcl9jb21wbGV4IGZ1bmN0aW9ucyBuZWVkZWQgdG8gYmUgY3JlYXRlZCB0aGF0CisgZGlkbid0IGNoYW5nZSB0aGUgYmVoYXZpb3Igb2YgdGhlIG9sZGVyIG9uZXMuICBUaGUgbm90aWZpY2F0aW9uIGNvZGUKKyBub3cgY2FsbHMgdGhlc2UgbmV3ZXIgZnVuY3Rpb25zLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDU5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6IENIQU5HRVM6IHNubXBkOiBwYXRjaCAzMjk5Mzg0OiBmaXggSU5GT1JNcyBzbworCisgdGhleSByZXRyeSBwcm9iaW5nIGZvciBhbiBlbmdpbmVJRC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzogQ0hBTkdFUzogc25tcGQ6IHBhdGNoIDMyOTkzODQ6IGZpeCBJTkZPUk1zIHNvCisKKyB0aGV5IHJldHJ5IHByb2JpbmcgZm9yIGFuIGVuZ2luZUlELiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOiBDSEFOR0VTOiBzbm1wZDogcGF0Y2ggMzI5OTM4NDogZml4IElORk9STXMgc28KKworIHRoZXkgcmV0cnkgcHJvYmluZyBmb3IgYW4gZW5naW5lSUQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDU4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6IENIQU5HRVM6IHNubXBkOiBwYXRjaCAzMjk5Mzg0OiBmaXggSU5GT1JNcyBzbworCisgdGhleSByZXRyeSBwcm9iaW5nIGZvciBhbiBlbmdpbmVJRC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzogQXBwbGllZCAocm91Z2hseSkgcGF0Y2ggMzI5OTM3MCB0byBhdm9pZAorCisgcmV3cml0aW5nIGV4aXN0aW5nIGF1dGhrZXkvcHJpdmtleS9ldGNzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzogQXBwbGllZCAocm91Z2hseSkgcGF0Y2ggMzI5OTM3MCB0byBhdm9pZAorCisgcmV3cml0aW5nIGV4aXN0aW5nIGF1dGhrZXkvcHJpdmtleS9ldGNzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzogQXBwbGllZCAocm91Z2hseSkgcGF0Y2ggMzI5OTM3MCB0byBhdm9pZAorCisgcmV3cml0aW5nIGV4aXN0aW5nIGF1dGhrZXkvcHJpdmtleS9ldGNzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzogQXBwbGllZCAocm91Z2hseSkgcGF0Y2ggMzI5OTM3MCB0byBhdm9pZAorCisgcmV3cml0aW5nIGV4aXN0aW5nIGF1dGhrZXkvcHJpdmtleS9ldGNzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuaCwgcGVybC9NYWtlZmlsZS5QTDoKKworIE5FV1M6IHNubXBkOiBwYXRjaCAzMTMxMzk3OiBmcm9tIHRha2V2b3M6IGh1Z2Ugc3BlZWR1cHMgb2YgdGhlCisgVENQL1VEUCBUYWJsZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDU2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBwZXJsL05ldFNOTVAueHM6IEFkZGVkIGEgYm9ndXMgZW1wdHkgLnhzIGZpbGUgZm9yIGJ1bmRsaW5nIG9uCisKKyBuZXdlciBwZXJsIHRoYXQgd2FudHMgInNvbWV0aGluZyIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDU1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19zdGF0dXMuYzogQ0hBTkdFUzoKKworIHNubXBkOiBwYXRjaCAzMzA2NDc2OiBmcm9tIHRpbnlweXJhbWlkczogZml4IG1lbW9yeSBsZWFrIGluIHRoZQorIHN3cnVuIGNvbnRhaW5lciBsb2FkaW5nIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2ZzX3N0YXR1cy5jOiBDSEFOR0VTOgorCisgc25tcGQ6IHBhdGNoIDMzMDY0NzY6IGZyb20gdGlueXB5cmFtaWRzOiBmaXggbWVtb3J5IGxlYWsgaW4gdGhlCisgc3dydW4gY29udGFpbmVyIGxvYWRpbmcgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDU0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuYywgCisgICAgICBhZ2VudC9taWJncm91cC90dW5uZWwvdHVubmVsLmM6IEZvbGxvdy11cCBmb3IgcjIwNDQ5OiB1c2UKKworIE5FVFNOTVBfUFJJbyAidSIgZm9yIHByaW50aW5nIHN1YmlkcyBpbnN0ZWFkIG9mIG9ubHkgTkVUU05NUF9QUklvLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ1MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdHVubmVsL3R1bm5lbC5jOiBGb2xsb3ctdXAgZm9yIHIyMDQ0OTogdXNlCisKKyBORVRTTk1QX1BSSW8gInUiIGZvciBwcmludGluZyBzdWJpZHMgaW5zdGVhZCBvZiBvbmx5IE5FVFNOTVBfUFJJby4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ1MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiBDSEFOR0VTOiBXaW4zMjogTWljcm9zb2Z0CisKKyBWaXN1YWwgU3R1ZGlvOiBMaW5rIHdpdGggZ2RpMzIubGliIGlmIE9wZW5TU0wgaGFzIGJlZW4gZW5hYmxlZAorIGJlY2F1c2UgZ2RpMzIubGliIGlzIGEgZGVwZW5kZW5jeSBvZiBPcGVuU1NMLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ1MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiBDSEFOR0VTOiBXaW4zMjogTWljcm9zb2Z0CisKKyBWaXN1YWwgU3R1ZGlvOiBMaW5rIHdpdGggZ2RpMzIubGliIGlmIE9wZW5TU0wgaGFzIGJlZW4gZW5hYmxlZAorIGJlY2F1c2UgZ2RpMzIubGliIGlzIGEgZGVwZW5kZW5jeSBvZiBPcGVuU1NMLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ1MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiBDSEFOR0VTOiBXaW4zMjogTWljcm9zb2Z0CisKKyBWaXN1YWwgU3R1ZGlvOiBMaW5rIHdpdGggZ2RpMzIubGliIGlmIE9wZW5TU0wgaGFzIGJlZW4gZW5hYmxlZAorIGJlY2F1c2UgZ2RpMzIubGliIGlzIGEgZGVwZW5kZW5jeSBvZiBPcGVuU1NMLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDUxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmg6IEZvbGxvdy11cCBmb3IgcjIwNDQ4OiBzaW5jZSB0aGUKKworICJvaWQiIHR5cGVkZWYgaGFzIGJlZW4gY2hhbmdlZCBiYWNrIGZyb20gdWludDMyX3QgdG8gdV9sb25nLCBjaGFuZ2UKKyBORVRTTk1QX1BSSW8gZnJvbSBORVRTTk1QX1BSSTMyIGludG8gImwiLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ1MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oOiBGb2xsb3ctdXAgZm9yIHIyMDQ0ODogc2luY2UgdGhlCisKKyAib2lkIiB0eXBlZGVmIGhhcyBiZWVuIGNoYW5nZWQgYmFjayBmcm9tIHVpbnQzMl90IHRvIHVfbG9uZywgY2hhbmdlCisgTkVUU05NUF9QUklvIGZyb20gTkVUU05NUF9QUkkzMiBpbnRvICJsIi4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ1MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdHVubmVsL3R1bm5lbC5jOiBDSEFOR0VTOiBzbm1wZDogVXNlIHByb3BlciBmb3JtYXQKKworIHNwZWNpZmllciBpbiBkZWJ1ZyBzdGF0ZW1lbnRzIGZvciBwcmludGluZyB2YWx1ZXMgb2YgdHlwZSAnb2lkJy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NDkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3R1bm5lbC90dW5uZWwuYzogQ0hBTkdFUzogc25tcGQ6IFVzZSBwcm9wZXIgZm9ybWF0CisKKyBzcGVjaWZpZXIgaW4gZGVidWcgc3RhdGVtZW50cyBmb3IgcHJpbnRpbmcgdmFsdWVzIG9mIHR5cGUgJ29pZCcuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDQ5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuYywgCisgICAgICBhZ2VudC9taWJncm91cC90dW5uZWwvdHVubmVsLmM6IENIQU5HRVM6IHNubXBkOiBVc2UgcHJvcGVyIGZvcm1hdAorCisgc3BlY2lmaWVyIGluIGRlYnVnIHN0YXRlbWVudHMgZm9yIHByaW50aW5nIHZhbHVlcyBvZiB0eXBlICdvaWQnLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ0OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdHVubmVsL3R1bm5lbC5jOiBDSEFOR0VTOiBzbm1wZDogVXNlIHByb3BlciBmb3JtYXQKKworIHNwZWNpZmllciBpbiBkZWJ1ZyBzdGF0ZW1lbnRzIGZvciBwcmludGluZyB2YWx1ZXMgb2YgdHlwZSAnb2lkJy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ0OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oOiByZXZlcnQgT0lEIHR5cGVkZWYgdG8gdV9sb25nIGFzCisKKyBhZ3JlZWQgdG8gb24gLWNvZGVycyBhbmQgaW4gdGhlIGFkbWluIG1lZXRpbmcgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ0OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oOiByZXZlcnQgT0lEIHR5cGVkZWYgdG8gdV9sb25nIGFzCisKKyBhZ3JlZWQgdG8gb24gLWNvZGVycyBhbmQgaW4gdGhlIGFkbWluIG1lZXRpbmcgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDQ4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI0ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi9zeXN0ZW0uYzogUmVtZW1iZXIgdG8gcmV0dXJuIGluZm8gYWxzbyB3aXRob3V0IEROU1NFQworICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjQgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2NvbW1vbi5jOiBBZGRlZCBOVUxMLWNoZWNrcworCisgYWZ0ZXIgbWFsbG9jIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjQgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2NvbW1vbi5jOiBBZGRlZCBOVUxMLWNoZWNrcworCisgYWZ0ZXIgbWFsbG9jIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjQgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2NvbW1vbi5jOiBBZGRlZCBOVUxMLWNoZWNrcworCisgYWZ0ZXIgbWFsbG9jIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjQgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2NvbW1vbi5jOiBBZGRlZCBOVUxMLWNoZWNrcworCisgYWZ0ZXIgbWFsbG9jIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ0NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yMiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmM6IENIQU5HRVM6CisKKyBhZ2VudDogQlVHOiAzMzA1MTU3OiBGaXggaXBBZGRyZXNzUHJlZml4IGhhbmRsaW5nIG9mIElQdjYgYWRkcmVzc2VzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjIgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jOiBDSEFOR0VTOgorCisgYWdlbnQ6IEJVRzogMzMwNTE1NzogRml4IGlwQWRkcmVzc1ByZWZpeCBoYW5kbGluZyBvZiBJUHY2IGFkZHJlc3NlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDQ1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTIyICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6IENIQU5HRVM6IHB5dGhvbjogQlVHOiAzMjk1NDA3OiBGaXgKKworIGhhbmRsaW5nIG9mIHZvaWQgcG9pbnRlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDQ0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTIyICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6IENIQU5HRVM6IHB5dGhvbjogQlVHOiAzMjk1NDA3OiBGaXgKKworIGhhbmRsaW5nIG9mIHZvaWQgcG9pbnRlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDQ0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTIyICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6IENIQU5HRVM6IHB5dGhvbjogQlVHOiAzMjk1NDA3OiBGaXgKKworIGhhbmRsaW5nIG9mIHZvaWQgcG9pbnRlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjIgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzogQ0hBTkdFUzogcHl0aG9uOiBCVUc6IDMyOTU0MDc6IEZpeAorCisgaGFuZGxpbmcgb2Ygdm9pZCBwb2ludGVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjIgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsIHNubXBsaWIvc25tcF9hcGkuYzogQ0hBTkdFUzoKKworIHNubXBsaWI6IEJVRzogMzI2NDg1MjogUmVjb2duaXNlIG1pc3NpbmcgcmVwb3J0IHR5cGVzCisgKHNubXB7VW5hdmFpbGFibGUsVW5rbm93bn1Db250ZXh0cyxzbm1wVW5rbm93blBEVUhhbmRsZXJzKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDQzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTIyICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oLCBzbm1wbGliL3NubXBfYXBpLmM6IENIQU5HRVM6CisKKyBzbm1wbGliOiBCVUc6IDMyNjQ4NTI6IFJlY29nbmlzZSBtaXNzaW5nIHJlcG9ydCB0eXBlcworIChzbm1we1VuYXZhaWxhYmxlLFVua25vd259Q29udGV4dHMsc25tcFVua25vd25QRFVIYW5kbGVycykgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ0MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yMiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCwgc25tcGxpYi9zbm1wX2FwaS5jOiBDSEFOR0VTOgorCisgc25tcGxpYjogQlVHOiAzMjY0ODUyOiBSZWNvZ25pc2UgbWlzc2luZyByZXBvcnQgdHlwZXMKKyAoc25tcHtVbmF2YWlsYWJsZSxVbmtub3dufUNvbnRleHRzLHNubXBVbmtub3duUERVSGFuZGxlcnMpIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjIgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsIHNubXBsaWIvc25tcF9hcGkuYzogQ0hBTkdFUzoKKworIHNubXBsaWI6IEJVRzogMzI2NDg1MjogUmVjb2duaXNlIG1pc3NpbmcgcmVwb3J0IHR5cGVzCisgKHNubXB7VW5hdmFpbGFibGUsVW5rbm93bn1Db250ZXh0cyxzbm1wVW5rbm93blBEVUhhbmRsZXJzKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjIgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsIHNubXBsaWIvc25tcF9hcGkuYzogQ0hBTkdFUzoKKworIHNubXBsaWI6IEJVRzogMzI2NDg1MjogUmVjb2duaXNlIG1pc3NpbmcgcmVwb3J0IHR5cGVzCisgKHNubXB7VW5hdmFpbGFibGUsVW5rbm93bn1Db250ZXh0cyxzbm1wVW5rbm93blBEVUhhbmRsZXJzKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDQzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTIwICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL3NubXBBQUw1UFZDRG9tYWluLmMsIHNubXBsaWIvc25tcEFsaWFzRG9tYWluLmMsIAorICAgICAgc25tcGxpYi9zbm1wRFRMU1VEUERvbWFpbi5jLCBzbm1wbGliL3NubXBJUFhEb21haW4uYywgCisgICAgICBzbm1wbGliL3NubXBTU0hEb21haW4uYywgc25tcGxpYi9zbm1wU1RERG9tYWluLmMsIAorICAgICAgc25tcGxpYi9zbm1wVENQRG9tYWluLmMsIHNubXBsaWIvc25tcFRDUElQdjZEb21haW4uYywgCisgICAgICBzbm1wbGliL3NubXBVRFBEb21haW4uYywgc25tcGxpYi9zbm1wVURQSVB2NkRvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvc25tcFVuaXhEb21haW4uYzogQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzMjM0NzU0OiBFbnN1cmUKKyAgICAgIG9sZAorCisgZl9jcmVhdGVfZnJvbV90c3RyaW5nIGhvb2sgaXMgaW5pdGlhbGl6ZWQgdG8gTlVMTCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDQyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTIwICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wU1RERG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRDUElQdjZEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU1RDUERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmM6IENIQU5HRVM6IHNubXBsaWI6IEJVRzoKKyAgICAgIDMyMzQ3NTQ6CisKKyBFbnN1cmUgb2xkIGZfY3JlYXRlX2Zyb21fdHN0cmluZyBob29rIGlzIGluaXRpYWxpemVkIHRvIE5VTEwgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ0MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yMCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBBbGlhc0RvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVBYRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFNURERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVENQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUQ1BJUHY2RG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5jOiBDSEFOR0VTOiBzbm1wbGliOiBCVUc6CisgICAgICAzMjM0NzU0OgorCisgRW5zdXJlIG9sZCBmX2NyZWF0ZV9mcm9tX3RzdHJpbmcgaG9vayBpcyBpbml0aWFsaXplZCB0byBOVUxMIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ0MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yMCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi9zbm1wQUFMNVBWQ0RvbWFpbi5jLCBzbm1wbGliL3NubXBJUFhEb21haW4uYywgCisgICAgICBzbm1wbGliL3NubXBTVEREb21haW4uYywgc25tcGxpYi9zbm1wVENQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi9zbm1wVENQSVB2NkRvbWFpbi5jLCBzbm1wbGliL3NubXBVRFBEb21haW4uYywgCisgICAgICBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmMsIHNubXBsaWIvc25tcFVuaXhEb21haW4uYzogQ0hBTkdFUzoKKworIHNubXBsaWI6IEJVRzogMzIzNDc1NDogRW5zdXJlIG9sZCBmX2NyZWF0ZV9mcm9tX3RzdHJpbmcgaG9vayBpcworIGluaXRpYWxpemVkIHRvIE5VTEwgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWNjb25maWcuaCwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogdXNlICNpZmRlZgorCisgcmF0aGVyIHRoYW4gI2lmIGZvciBkZWZpbmUgY2hlY2tzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWNjb25maWcuaCwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogdXNlICNpZmRlZgorCisgcmF0aGVyIHRoYW4gI2lmIGZvciBkZWZpbmUgY2hlY2tzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWNjb25maWcuaCwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogdXNlICNpZmRlZgorCisgcmF0aGVyIHRoYW4gI2lmIGZvciBkZWZpbmUgY2hlY2tzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWNjb25maWcuaCwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogdXNlICNpZmRlZgorCisgcmF0aGVyIHRoYW4gI2lmIGZvciBkZWZpbmUgY2hlY2tzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhY2NvbmZpZy5oLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiB1c2UgI2lmZGVmCisKKyByYXRoZXIgdGhhbiAjaWYgZm9yIGRlZmluZSBjaGVja3MuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE5ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wX2FwaS4zLmRlZiwgbWFuL3NubXBfc2Vzc19hcGkuMy5kZWY6IENIQU5HRVM6IG1hbjogQlVHOgorCisgMzE5MDcyNTogRG9jdW1lbnQgc25tcHssX3Nlc3N9c3luY2hfcmVzcG9uc2UgYW5kIHNubXBfYXN5bmNfc2VuZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDQwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE5ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zZXNzaW9uX2FwaS4zLmRlZiwgbWFuL3NubXBfc2Vzc19hcGkuMy5kZWY6IENIQU5HRVM6IG1hbjogQlVHOgorCisgMzE5MDcyNTogRG9jdW1lbnQgc25tcHssX3Nlc3N9c3luY2hfcmVzcG9uc2UgYW5kIHNubXBfYXN5bmNfc2VuZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDQwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE5ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9uZXRzbm1wX3Nlc3NfYXBpLjMuZGVmLCBtYW4vbmV0c25tcF9zZXNzaW9uX2FwaS4zLmRlZjogCisKKyBDSEFOR0VTOiBtYW46IEJVRzogMzE5MDcyNTogRG9jdW1lbnQgc25tcHssX3Nlc3N9c3luY2hfcmVzcG9uc2UgYW5kCisgc25tcF9hc3luY19zZW5kIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTkgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL25ldHNubXBfc2Vzc19hcGkuMy5kZWYsIG1hbi9uZXRzbm1wX3Nlc3Npb25fYXBpLjMuZGVmOiAKKworIENIQU5HRVM6IG1hbjogQlVHOiAzMTkwNzI1OiBEb2N1bWVudCBzbm1weyxfc2Vzc31zeW5jaF9yZXNwb25zZSBhbmQKKyBzbm1wX2FzeW5jX3NlbmQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDQwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE5ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wX2FwaS4zLmRlZiwgbWFuL3NubXBfc2Vzc19hcGkuMy5kZWY6IENIQU5HRVM6IG1hbjogQlVHOgorCisgMzE5MDcyNTogRG9jdW1lbnQgc25tcHssX3Nlc3N9c3luY2hfcmVzcG9uc2UgYW5kIHNubXBfYXN5bmNfc2VuZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDQwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE5ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOiBDSEFOR0VTOiBzbm1wZDogZml4ZWQgcmFjZQorCisgY29uZGl0aW9uIGluIGhyU1dSdW5UYWJsZSBUcmVhdCB0aGUgcmVhZHMgZnJvbSAvcHJvYy88cGlkPi8qCisgY2FyZWZ1bHksIHByb2Nlc3NlcyBjYW4gZXhpdCBpbiB0aGUgbWlkZGxlIG9mIHByb2Nlc3NpbmcuICAoYWxyZWFkeQorIGZpeGVkIGluIFY1LTUtcGF0Y2hlcyBhbmQgVjUtNC1wYXRjaGVzIGluIFNWTiByZXYuIDIwMTE1LCBkdW5ubyB3aHkKKyBJIGRpZCBub3QgcGF0Y2ggdHJ1bmspIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTkgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmM6IENIQU5HRVM6IHNubXBkOiBmaXhlZCByYWNlCisKKyBjb25kaXRpb24gaW4gaHJTV1J1blRhYmxlIFRyZWF0IHRoZSByZWFkcyBmcm9tIC9wcm9jLzxwaWQ+LyoKKyBjYXJlZnVseSwgcHJvY2Vzc2VzIGNhbiBleGl0IGluIHRoZSBtaWRkbGUgb2YgcHJvY2Vzc2luZy4gIChhbHJlYWR5CisgZml4ZWQgaW4gVjUtNS1wYXRjaGVzIGFuZCBWNS00LXBhdGNoZXMgaW4gU1ZOIHJldi4gMjAxMTUsIGR1bm5vIHdoeQorIEkgZGlkIG5vdCBwYXRjaCB0cnVuaykgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDM4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE5ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIva2V5dG9vbHMuYywgc25tcGxpYi9zY2FwaS5jOiBDSEFOR0VTOiBzbm1wbGliOiBCVUc6CisKKyAzMTg0Njk3OiBEb24ndCByZWZlcmVuY2UgaW50ZXJuYWwgTUQ1IHdoZW4gaXQncyBleHBsaWNpdGx5IGRpc2FibGVkIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTkgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9rZXl0b29scy5jLCBzbm1wbGliL3NjYXBpLmM6IENIQU5HRVM6IHNubXBsaWI6IEJVRzoKKworIDMxODQ2OTc6IERvbid0IHJlZmVyZW5jZSBpbnRlcm5hbCBNRDUgd2hlbiBpdCdzIGV4cGxpY2l0bHkgZGlzYWJsZWQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDM3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE2ICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zeXN0ZW0uYzogbWFrZSBzdXJlIHdlIGdldCB0aGUgaGludCBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQzNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogdGVzdGluZy9SVU5URVNUUzogRm9sbG93LXVwIGZvciByMjA0MzI6IHRlc3RpbmcvUlVOVEVTVFMgd2l0aG91dAorCisgYXJndW1lbnRzIHdvcmtzIGFnYWluIGFzIGl0IHNob3VsZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHRlc3RpbmcvUlVOVEVTVFM6IEZvbGxvdy11cCBmb3IgcjIwNDMyOiB0ZXN0aW5nL1JVTlRFU1RTIHdpdGhvdXQKKworIGFyZ3VtZW50cyB3b3JrcyBhZ2FpbiBhcyBpdCBzaG91bGQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4uYzogUmFuCisKKyBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmMgdGhyb3VnaCBkb3MydW5peC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQzNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xNCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDcxY29tMnNlYzZfc2ltcGxlOiBGaXhlZCBhIHR5cG8gaW4gYQorCisgY29tbWVudC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA3MWNvbTJzZWM2X3NpbXBsZTogRml4ZWQgYSB0eXBvIGluIGEKKworIGNvbW1lbnQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHRlc3RpbmcvUlVOVEVTVFM6IFJVTlRFU1RTIHdvcmtzIGFnYWluIGZvciB0ZXN0cyB3aXRoIGEgZm91ci1kaWdpdAorCisgbnVtYmVyLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQzMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xNCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogdGVzdGluZy9SVU5URVNUUzogUlVOVEVTVFMgd29ya3MgYWdhaW4gZm9yIHRlc3RzIHdpdGggYSBmb3VyLWRpZ2l0CisKKyBudW1iZXIuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc3lzdGVtLmM6IEZpeGVkIGEgcmVjZW50bHkgaW50cm9kdWNlZCBidWcgaW4KKworIG5ldHNubXBfZ2V0YWRkcmluZm8oKS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQzMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xNCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmM6IERvY3VtZW50IHRoYXQgdGhlIHVjZC1zbm1wCisKKyBkaXNraW8gY29kZSBzdGlsbCBoYXMgdG8gYmUgbW9kaWZpZWQgc3VjaCB0aGF0IGRpc2tpb19mcmVlX2NvbmZpZygpCisgZ2V0cyBpbnZva2VkIHVwb24gU0lHSFVQLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQzMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xNCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmM6IERvY3VtZW50IHRoYXQgdGhlIHVjZC1zbm1wCisKKyBkaXNraW8gY29kZSBzdGlsbCBoYXMgdG8gYmUgbW9kaWZpZWQgc3VjaCB0aGF0IGRpc2tpb19mcmVlX2NvbmZpZygpCisgZ2V0cyBpbnZva2VkIHVwb24gU0lHSFVQLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDMwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEzICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zeXN0ZW0uYzogZml4IGNhc3QgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTMgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgICogCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfZGF0YV9hCisgICAgICAgY2Nlc3MuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9kYXRhX2FjY2VzCisgICAgICAgcy5jOiBSZXZlcnQgMjA0MjAgIkNIQU5HRVM6IHNubXBkOiBGaXhlZCBtZW1vcnkgbGVhayBpbiBUQ1AtTUlCCisKKyB0YWJsZXMgaW50cm9kdWNlZCBieSBwYXRjaCAjMzA1MzQzNi4iIFJldmVydCAxOTcwOCAiQ0hBTkdFUzogc25tcGQ6CisgUEFUQ0g6IDMwNTM0MzY6IGZyb206IHRha2V2b3M6IGZpeDogdGNwQ29ubmVjdGlvblRhYmxlX2RhdGFfYWNjZXNzCisgaW52YWxpZCBtZW1vcnkgYWNjZXNzIiB0aGUgYnVnIDMwNTM0MzYgaXMgZml4aW5nIHdhcyBpbnRyb2R1Y2VkIGluIHIxNzcxOSwgYW5kIGZpeGVkIGluCisgcjE3ODYxLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDI4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEzICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAKKyAgICAgIGFwcHMvc25tcG5ldHN0YXQvaW5ldC5jLCBhcHBzL3NubXBuZXRzdGF0L3JvdXRlLmMsIAorICAgICAgYXBwcy9zbm1wdHJhcGRfbG9nLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczIsIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCBzbm1wbGliL3N5c3RlbS5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmM6IG1vcmUgZG5zIHJlbGF0ZWQgdHdlYWtzICAtCisgICAgICBhZGQgbmV0c25tcF9nZXRob3N0YnlhZGRyICAtIGFsd2F5cyBkZWZpbmUgbmV0c25tcF8qIHZlcnNpb25zOworICAgICAgbG9nb25jZSBpZiB1bmRlcmx5aW5nICAgIGZ1bmN0aW9uIGlzIG5vdCBhdmFpbGFibGUgIC0gdXNlIG5ldworICAgICAgZnVuY3Rpb25zIGluIGRpc21hbiBtaWJzIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDI3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEzICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFwcHMvc25tcG5ldHN0YXQvaW5ldDYuYywgc25tcGxpYi9zbm1wdjMuYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmM6IHVzZSBuZXcgbmV0c25tcCBkbnMKKworIGZ1bmN0aW9ucyBpbiBhcHBzL3NubXBsaWIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDI2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEzICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oLCBzbm1wbGliL3N5c3RlbS5jOiBtb3ZlIEROU1NFQworCisgdmFsaWRhdGlvbiBpbnRvIHJlc29sdmVyIHdyYXBwZXIgZnVuY3Rpb25zICAgLSBhbGxvd3Mgb3RoZXIgY29kZSB0byBiZW5lZml0IGZyb20gdmFsaWRhdGlvbiAgIC0gbmV3IG5ldHNubXBfZ2V0aG9zdGJ5bmFtZSwgbmV0c25tcF9nZXRhZGRyaW5mbyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MjUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvbWliLmM6IEZvbGxvdy11cCBmb3IgcjIwNDE3OiByZXBsYWNlZCBhIG1hbGxvYygpL2ZyZWUoKQorCisgcGFpciBieSBhIGNhbGwgdG8gcmVhbGxvYygpLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQyNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9taWIuYzogRm9sbG93LXVwIGZvciByMjA0MTc6IHJlcGxhY2VkIGEgbWFsbG9jKCkvZnJlZSgpCisKKyBwYWlyIGJ5IGEgY2FsbCB0byByZWFsbG9jKCkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDI0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL21pYi5jOiBGb2xsb3ctdXAgZm9yIHIyMDQxNzogcmVwbGFjZWQgYSBtYWxsb2MoKS9mcmVlKCkKKworIHBhaXIgYnkgYSBjYWxsIHRvIHJlYWxsb2MoKS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQyNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbmV0bGluay5jOiBGaXggZm9yIFJIRUw0CisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQyMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jOiBIZWFkZXIgZmlkZGxpbmcgZm9yIHRoZQorCisgYmVuZWZpdCBvZiBSSEVMNCwgU29sYXJpcywgT3BlbkJTRCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgICogCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfZGF0YV9hCisgICAgICAgY2Nlc3MuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9kYXRhX2FjY2VzCisgICAgICAgcy5jOiBDSEFOR0VTOiBzbm1wZDogRml4ZWQgbWVtb3J5IGxlYWsgaW4gVENQLU1JQiB0YWJsZXMKKyAgICAgIGludHJvZHVjZWQKKworIGJ5IHBhdGNoICMzMDUzNDM2LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQyMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2EKKyAgICAgICBjY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2RhdGFfYWNjZXMKKyAgICAgICBzLmM6IENIQU5HRVM6IHNubXBkOiBGaXhlZCBtZW1vcnkgbGVhayBpbiBUQ1AtTUlCIHRhYmxlcworICAgICAgaW50cm9kdWNlZAorCisgYnkgcGF0Y2ggIzMwNTM0MzYuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oOiBSZXZlcnRlZCBhY2NpZGVudGFsbHkgY29tbWl0dGVkCisKKyBjaGFuZ2VzIG9mIHIyMDQxMi4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQxOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOiBDSEFOR0VTOiBzbm1wbGliOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluCisKKyBzbm1wX2ZyZWVfc2Vzc2lvbigpLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQxOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOiBDSEFOR0VTOiBzbm1wbGliOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluCisKKyBzbm1wX2ZyZWVfc2Vzc2lvbigpLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQxOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOiBDSEFOR0VTOiBzbm1wbGliOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluCisKKyBzbm1wX2ZyZWVfc2Vzc2lvbigpLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQxOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOiBDSEFOR0VTOiBzbm1wbGliOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluCisKKyBzbm1wX2ZyZWVfc2Vzc2lvbigpLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDE4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL21pYi5jOiBDSEFOR0VTOiBzbm1wbGliOiBfbWliaW5kZXhfYWRkKCkgbm8gbG9uZ2VyIHJlYWRzCisKKyBwYXN0IHRoZSBlbmQgb2YgdGhlIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBhcnJheSBfbWliaW5kZXhlcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0MTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvbWliLmM6IENIQU5HRVM6IHNubXBsaWI6IF9taWJpbmRleF9hZGQoKSBubyBsb25nZXIgcmVhZHMKKworIHBhc3QgdGhlIGVuZCBvZiB0aGUgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGFycmF5IF9taWJpbmRleGVzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQxNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9taWIuYzogQ0hBTkdFUzogc25tcGxpYjogX21pYmluZGV4X2FkZCgpIG5vIGxvbmdlciByZWFkcworCisgcGFzdCB0aGUgZW5kIG9mIHRoZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYXJyYXkgX21pYmluZGV4ZXMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvbGNkX3RpbWUuYzogQXZvaWQgdGhhdCBNU1ZDIHRyaWdnZXJzIGEgY29tcGlsZXIgd2FybmluZyBvbgorCisgdGhlIGNvZGUgaW4gc25tcGxpYi9sY2RfdGltZS5jLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDE2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jOiBBdm9pZAorCisgcmVhZGluZyBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDE1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9hdC5jOiBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbgorCisgdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJCisgaXBOZXRUb01lZGlhVGFibGUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9hdC5jOiBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbgorCisgdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJCisgaXBOZXRUb01lZGlhVGFibGUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9hdC5jOiBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbgorCisgdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJCisgaXBOZXRUb01lZGlhVGFibGUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9hdC5jOiBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbgorCisgdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJCisgaXBOZXRUb01lZGlhVGFibGUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYzogQ0hBTkdFUzogV2luMzI6IEZpeGVkIGEgbWVtb3J5CisKKyBsZWFrIGluIHRoZSBOZXQtU05NUCAobm9uLXdpbkV4dERMTCkgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1JQi1JSQorIGlmVGFibGUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmM6IENIQU5HRVM6IFdpbjMyOiBGaXhlZCBhIG1lbW9yeQorCisgbGVhayBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkKKyBpZlRhYmxlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jOiBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkKKworIGxlYWsgaW4gdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJCisgaWZUYWJsZS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYzogQ0hBTkdFUzogV2luMzI6IEZpeGVkIGEgbWVtb3J5CisKKyBsZWFrIGluIHRoZSBOZXQtU05NUCAobm9uLXdpbkV4dERMTCkgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1JQi1JSQorIGlmVGFibGUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jOiBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhaworCisgaW4gdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJCisgaXBBZGRyVGFibGUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDEyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYzogQ0hBTkdFUzogV2luMzI6IEZpeGVkIGEgbWVtb3J5IGxlYWsKKworIGluIHRoZSBOZXQtU05NUCAobm9uLXdpbkV4dERMTCkgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1JQi1JSQorIGlwQWRkclRhYmxlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmM6IENIQU5HRVM6IFdpbjMyOiBGaXhlZCBhIG1lbW9yeSBsZWFrCisKKyBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkKKyBpcEFkZHJUYWJsZS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jLCB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaDogCisKKyBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpCisgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1JQi1JSSBpcEFkZHJUYWJsZS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nOiBEb2N1bWVudGF0aW9uIC8gc291cmNlIGNvZGUgY29tbWVudCBzcGVsbGluZyBmaXg6CisKKyBleGl0ZW50IC0+IGV4aXN0ZW50LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nLCBzbm1wbGliL21pYi5jOiBEb2N1bWVudGF0aW9uIC8gc291cmNlIGNvZGUgY29tbWVudAorCisgc3BlbGxpbmcgZml4OiBleGl0ZW50IC0+IGV4aXN0ZW50LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nLCBzbm1wbGliL21pYi5jOiBEb2N1bWVudGF0aW9uIC8gc291cmNlIGNvZGUgY29tbWVudAorCisgc3BlbGxpbmcgZml4OiBleGl0ZW50IC0+IGV4aXN0ZW50LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nLCBzbm1wbGliL21pYi5jOiBEb2N1bWVudGF0aW9uIC8gc291cmNlIGNvZGUgY29tbWVudAorCisgc3BlbGxpbmcgZml4OiBleGl0ZW50IC0+IGV4aXN0ZW50LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmM6IENIQU5HRVM6IFdpbjMyOiBCdWlsZAorCisgc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5jIG9ubHkgaWYgTkVUU05NUF9FTkFCTEVfSVBWNgorIGhhcyBiZWVuIGRlZmluZWQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBNYWtlZmlsZS5pbiwgTWFrZWZpbGUucnVsZXMsIGNvbmZpZ3VyZSwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZTogaW5zdGFsbCB0aGUgYnVpbHQgZmVhdHVyZQorCisgaGVhZGVycyB0b28gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDA5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTExICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDI1c25tcHYzZ2V0U0hBREVTX3NpbXBsZSwgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMjZzbm1wdjNnZXRTSEFBRVNfc2ltcGxlOiBDSEFOR0VTOgorCisgdGVzdGluZzogVGVzdHMgMDI1IGFuZCAwMjYgcGFzcyBvbiBNaW5HVyBldmVuIGlmIHdpbkV4dERMTCBoYXMgYmVlbgorIGVuYWJsZWQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MDggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTEgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA2NWFnZW50ZXh0ZW5kX3NpbXBsZTogVDA2NSByb2J1c3RuZXNzCisKKyBpbXByb3ZlbWVudC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQwNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfdm9pZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tfaHcuaDogQ0hBTkdFUzogc25tcGQ6IHVjZF9zbm1wIGJ1aWxkcworCisgYWdhaW4gb24gTWluR1cgYW5kIEN5Z3dpbi4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQwNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTWFrZWZpbGUuaW46IGluc3RhbGwgdGhlIG5ldC1zbm1wLWZlYXR1cmVzLmggZmlsZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQwNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDE0MXNubXB2MmNzZXRfc2ltcGxlOiBJbXByb3ZlZCB0ZXN0CisKKyByb2J1c3RuZXNzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDA0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jOiBDb21waWxlciB3YXJuaW5nIGZpeGVzLiAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvd2luc2VydmljZS5jOiBNaW5HVzogYXZvaWQgdGhhdCBnY2MgY29tcGxhaW5zIGFib3V0IHBhc2luZworCisgYSAoY2hhciAqKSBhcmd1bWVudCB3aGlsZSAodW5zaWduZWQgY2hhciAqKSBpcyBleHBlY3RlZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0MDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvd2luc2VydmljZS5jOiBNaW5HVzogYXZvaWQgdGhhdCBnY2MgY29tcGxhaW5zIGFib3V0IHBhc2luZworCisgYSAoY2hhciAqKSBhcmd1bWVudCB3aGlsZSAodW5zaWduZWQgY2hhciAqKSBpcyBleHBlY3RlZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0MDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvd2luc2VydmljZS5jOiBNaW5HVzogYXZvaWQgdGhhdCBnY2MgY29tcGxhaW5zIGFib3V0IHBhc2luZworCisgYSAoY2hhciAqKSBhcmd1bWVudCB3aGlsZSAodW5zaWduZWQgY2hhciAqKSBpcyBleHBlY3RlZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvd2luc2VydmljZS5jOiBNaW5HVzogYXZvaWQgdGhhdCBnY2MgY29tcGxhaW5zIGFib3V0IHBhc2luZworCisgYSAoY2hhciAqKSBhcmd1bWVudCB3aGlsZSAodW5zaWduZWQgY2hhciAqKSBpcyBleHBlY3RlZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQwMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90b29scy5jOiBBdm9pZCBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBpZiB0aGUgbGFzdCBjaGFyCisKKyBvZiB0aW1lX3N0cmluZyBpcyBpbiB0aGUgcmFuZ2UgMHg4MC4uMHhmZSBhbmQgY2hhciBpcyBhIHNpZ25lZCB0eXBlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDAxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmg6IFJldmVydGVkIHIyMDM4MCBiZWNhdXNlIGl0IGJyZWFrcworCisgYWxsIHN0YXRlbWVudHMgdGhhdCBwcmludCBhbiBPSUQgc3ViLUlEIG9uIGFueSA2NC1iaXQgcGxhdGZvcm0uIFRoZQorIGVmZmVjdCBvZiByMjAzODAgb24gYmlnIGVuZGlhbiBhcmNoaXRlY3R1cmVzIHdhcyB0aGF0IGEgIjAiIHdvdWxkIGJlCisgcHJpbnRlZCBpbnN0ZWFkIG9mIHRoZSBPSUQgc3ViLUlEIChhdCBsZWFzdCB3aXRoIHRoZSBMUDY0IGFuZCB0aGUKKyBJTFA2NCBtb2RlbHMpLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDAwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDSEFOR0VTLCBORVdTOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM4NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM4NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCBhcHBzL01ha2VmaWxlLmRlcGVuZCwgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6IG1ha2UKKworIGRlcGVuZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzODMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTAgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmM6IEMrKyAtPiBDIGNvbW1lbnRzCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM4MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTkVXUzogTkVXUyB1cGRhdGUgZm9yIDUuNyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM4MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oOiByZXZlcnQgdGhlIG9pZCB0eXBlZGVmIHJlc2l6aW5nCisKKyBmcm9tIHIxNzgwOSBiZWNhdXNlIGl0IGJyb2tlIGJhY2t3YXJkcyBjb21wYXQsIGFzIHBvaW50ZWQgb3V0IGJ5CisgdXNlcnMgb24gdGhlIC1jb2RlcnMgbGlzdCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzODAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZTogdXNlIHByb3BlciBhdXRvY29uZiB2ZXJzaW9uIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzc5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYywgcGVybC9BU04vQVNOLnBtLCBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLAorICAgICAgIHBlcmwvT0lEL09JRC5wbSwgcGVybC9TTk1QL1NOTVAucG0sIAorICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtLCBwZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbSwgCisgICAgICBwZXJsL2FnZW50L2FnZW50LnBtLCBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwgCisgICAgICBwZXJsL2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbTogVmVyc2lvbiBudW1iZXIgdXBkYXRlCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTWFrZWZpbGUudG9wOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIG1pYnMvVUNELVNOTVAtTUlCLnR4dDogYWRkZWQgYSBtaXNzaW5nIDAgaW4gdGhlIHJldmlzaW9uIGRhdGUKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA5ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmM6IFVzZSBzeW1ib2xpYworCisgbmFtZWQgZm9yIGlmVHlwZSB2YWx1ZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDM3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9pb2N0bC5jOiBVc2Ugc3ltYm9saWMKKworIG5hbWVkIGZvciBpZlR5cGUgdmFsdWVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfaW9jdGwuYzogVXNlIHN5bWJvbGljCisKKyBuYW1lZCBmb3IgaWZUeXBlIHZhbHVlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA5ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmM6IFVzZSBzeW1ib2xpYworCisgbmFtZWQgZm9yIGlmVHlwZSB2YWx1ZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDM3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9pb2N0bC5jOiBVc2Ugc3ltYm9saWMKKworIG5hbWVkIGZvciBpZlR5cGUgdmFsdWVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWlicy9yZmNtaWJzLmRpZmY6IElBTkEgaGFzIGZpeGVkIHRoZQorCisgSUFOQS1JUFBNLU1FVFJJQ1MtUkVHSVNUUlktTUlCIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1pYnMvcmZjbWlicy5kaWZmOiBJQU5BIGhhcyBmaXhlZCB0aGUKKworIElBTkEtSVBQTS1NRVRSSUNTLVJFR0lTVFJZLU1JQiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1pYnMvVUNELVNOTVAtTUlCLnR4dDogYWRkZWQgYSBuZXcgUkVWSVNJT04gY2xhdXNlIHRvIGxpc3QgdGhlCisKKyBjaGFuZ2VzIGluIHRoZSB0aGUgcmVjZW50IHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIE5FV1M6IGFkZGVkIHBpbmcvdHJhY2Vyb3V0ZSBtaWJzIG5vdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmM6IHdlIGFjdHVhbGx5IHdhbnQgdG8gdXNlIHRoZSBiYXNlCisKKyBPSUQgYXMgdGhlIHN0YXJ0aW5nIHBvaW50LCBub3QgdGhlIHJlZyBPSUQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmM6IGZpeGVkIHRoZSBwcm94eSBzdXBwb3J0IHRvIGRvIGEKKworIHByb3BlciBPSUQgbGVzcyB0aGFuIE9JRCBjb21wYXJlLiAgV2UgYWN0dWFsbHkgZG9uJ3QgY2FyZSBhYm91dCB0aGUKKyBsZW5ndGggb2YgdGhlIG9yaWdpbmFsIHJlcXVlc3QsIG9ubHkgdGhhdCBpdCB3YXMgYmVmb3JlIHRoZQorIHJlZ2lzdGVyZWQgcmViYXNlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYzogQ0hBTkdFUzogcGF0Y2ggMzE0MDgzMzogZnJvbQorCisganNhZnJhbmVrOiBmaXggcHJveHkgR0VUTkVYVCByZXF1ZXN0cyBXaGVuIE9JRHMgcmVxdWVzdGVkIGFyZSBiZWxvdworIHRoZSBwcm94eSByZXF1ZXN0IHJlbWFwLCB3ZSBuZWVkIHRvIG5vdCBpbmNsdWRlIGFueSBPSURzIHRoYXQgbWlnaHQKKyBiZSBpbiB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgb3JpZ2luYWwgT0lEIGFuZCB0aGUgcmVtYXBwZWQgT0lELiAgVGhpcworIHBhdGNoIGZ1ZGdlcyB0aGUgcmVxdWVzdCBzbyB0aGF0IGl0IGZpeGVzIHRoZSByZXF1ZXN0IE9JRCBzbyBpdCdzCisganVzdCBiZWZvcmUgdGhlIHJlbWFwcGVkIHByb3h5IHJhbmdlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzY5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvY3B1LmgsIG1pYnMvVUNELVNOTVAtTUlCLnR4dDoKKyAgICAgIE5FV1M6CisKKyBQQVRDSCAzMTY3MzI1OiBmcm9tIGtyaXN6dG9mb3JvOiBVQ0QtU05NUC9TeXN0ZW1TdGF0czogYWRkIHZhcmlhYmxlcworIHRvIHJlcG9ydCBjcHVzdGVhbCwgY3B1Z3Vlc3QsIGNwdWd1ZXN0bmljZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNjggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYzogQ0hBTkdFUzogcGF0Y2gKKworIDMxODQwMjY6IGZyb20gZWl2bmFlczogQXZvaWQgY29uc3RhbnQgcmVmcmVzaCBvZiBpbnRlcmZhY2UKKyBzdGF0aXN0aWNzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM2NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L3NubXBfYWdlbnQuYywgYXBwcy9zbm1wZGVsdGEuYywgc25tcGxpYi9zY2FwaS5jLCAKKyAgICAgIHNubXBsaWIvc25tcF9hcGkuYywgc25tcGxpYi9zeXN0ZW0uYywgc25tcGxpYi90b29scy5jOiBGaXhlZAorICAgICAgc2V2ZXJhbAorCisgY29tcGlsZXIgd2FybmluZ3MgcmVwb3J0ZWQgYnkgdGhlIE1TVkMgY29tcGlsZXIuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNjYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL2dldHRpbWVvZmRheS5jOiBXaW4zMi9NU1ZDOiBGaXhlZCBhIGNvbXBpbGVyIHdhcm5pbmcuIAorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNjUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jOiBDSEFOR0VTOiBhZ2VudDogRml4ZWQgYQorCisgeWVhci0yMDM4IGJ1ZyBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgaXBSb3V0ZVRhYmxlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzY0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA4ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Byb2JlSGlzdG9yeVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Jlc3VsdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVIb3BzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLmM6IEZpeAorCisgd2FybmluZ3MgYW5kIGRhdGEgZm9ybWF0IGZvciBEYXRlQW5kVGltZSBvYmplY3RzLiAgVGhlc2UgbW9kdWxlcworIHdvcmssIGJ1dDogLSBUaGV5IGFyZSBMaW51eCBvbmx5IC0gUm93cyBtdXN0IGJlIGNyZWF0ZWQgd2l0aCByb3dTdGF0dXMgY3JlYXRlQW5kV2FpdCBiZWZvcmUgdGhleSBhcmUKKyBwb3B1bGF0ZWQgLSBBZ2VudCBtdXN0IHJ1biBhcyByb290IC0gQWdlbnQgaXMgYmxvY2tlZCB3aGlsZSB0ZXN0cyBydW4gLSBEYXRhIGZvcm1hdCBmb3IgSW5ldEFkZHJlc3Mgb2JqZWN0cyBpcyB3cm9uZy4gSXQgaXMgQVNDSUksIG5vdAorICAgYmluYXJ5IChtYWtpbmcgaXQgZWFzaWVyIHRvIHVzZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGJ1dCAuLi4pIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzNjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDggIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUHJvYmVIaXN0b3J5VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUmVzdWx0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUhvcHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVQcm9iZUhpc3RvcnlUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVSZXN1bHRzVGFibGUuYzogRml4CisKKyB3YXJuaW5ncyBhbmQgZGF0YSBmb3JtYXQgZm9yIERhdGVBbmRUaW1lIG9iamVjdHMuICBUaGVzZSBtb2R1bGVzCisgd29yaywgYnV0OiAtIFRoZXkgYXJlIExpbnV4IG9ubHkgLSBSb3dzIG11c3QgYmUgY3JlYXRlZCB3aXRoIHJvd1N0YXR1cyBjcmVhdGVBbmRXYWl0IGJlZm9yZSB0aGV5IGFyZQorIHBvcHVsYXRlZCAtIEFnZW50IG11c3QgcnVuIGFzIHJvb3QgLSBBZ2VudCBpcyBibG9ja2VkIHdoaWxlIHRlc3RzIHJ1biAtIERhdGEgZm9ybWF0IGZvciBJbmV0QWRkcmVzcyBvYmplY3RzIGlzIHdyb25nLiBJdCBpcyBBU0NJSSwgbm90CisgICBiaW5hcnkgKG1ha2luZyBpdCBlYXNpZXIgdG8gdXNlIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgYnV0IC4uLikgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDM2MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOCAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdQcm9iZUhpc3RvcnlUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdSZXN1bHRzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlSG9wc1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZS5jOiBGaXgKKworIHdhcm5pbmdzIGFuZCBkYXRhIGZvcm1hdCBmb3IgRGF0ZUFuZFRpbWUgb2JqZWN0cy4gIFRoZXNlIG1vZHVsZXMKKyB3b3JrLCBidXQ6IC0gVGhleSBhcmUgTGludXggb25seSAtIFJvd3MgbXVzdCBiZSBjcmVhdGVkIHdpdGggcm93U3RhdHVzIGNyZWF0ZUFuZFdhaXQgYmVmb3JlIHRoZXkgYXJlCisgcG9wdWxhdGVkIC0gQWdlbnQgbXVzdCBydW4gYXMgcm9vdCAtIEFnZW50IGlzIGJsb2NrZWQgd2hpbGUgdGVzdHMgcnVuIC0gRGF0YSBmb3JtYXQgZm9yIEluZXRBZGRyZXNzIG9iamVjdHMgaXMgd3JvbmcuIEl0IGlzIEFTQ0lJLCBub3QKKyAgIGJpbmFyeSAobWFraW5nIGl0IGVhc2llciB0byB1c2UgZnJvbSB0aGUgY29tbWFuZCBsaW5lLCBidXQgLi4uKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzYzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA4ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Byb2JlSGlzdG9yeVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Jlc3VsdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVIb3BzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLmM6IEZpeAorCisgd2FybmluZ3MgYW5kIGRhdGEgZm9ybWF0IGZvciBEYXRlQW5kVGltZSBvYmplY3RzLiAgVGhlc2UgbW9kdWxlcworIHdvcmssIGJ1dDogLSBUaGV5IGFyZSBMaW51eCBvbmx5IC0gUm93cyBtdXN0IGJlIGNyZWF0ZWQgd2l0aCByb3dTdGF0dXMgY3JlYXRlQW5kV2FpdCBiZWZvcmUgdGhleSBhcmUKKyBwb3B1bGF0ZWQgLSBBZ2VudCBtdXN0IHJ1biBhcyByb290IC0gQWdlbnQgaXMgYmxvY2tlZCB3aGlsZSB0ZXN0cyBydW4gLSBEYXRhIGZvcm1hdCBmb3IgSW5ldEFkZHJlc3Mgb2JqZWN0cyBpcyB3cm9uZy4gSXQgaXMgQVNDSUksIG5vdAorICAgYmluYXJ5IChtYWtpbmcgaXQgZWFzaWVyIHRvIHVzZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGJ1dCAuLi4pIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzNjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDggIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUHJvYmVIaXN0b3J5VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUmVzdWx0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUhvcHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVQcm9iZUhpc3RvcnlUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVSZXN1bHRzVGFibGUuYzogRml4CisKKyB3YXJuaW5ncyBhbmQgZGF0YSBmb3JtYXQgZm9yIERhdGVBbmRUaW1lIG9iamVjdHMuICBUaGVzZSBtb2R1bGVzCisgd29yaywgYnV0OiAtIFRoZXkgYXJlIExpbnV4IG9ubHkgLSBSb3dzIG11c3QgYmUgY3JlYXRlZCB3aXRoIHJvd1N0YXR1cyBjcmVhdGVBbmRXYWl0IGJlZm9yZSB0aGV5IGFyZQorIHBvcHVsYXRlZCAtIEFnZW50IG11c3QgcnVuIGFzIHJvb3QgLSBBZ2VudCBpcyBibG9ja2VkIHdoaWxlIHRlc3RzIHJ1biAtIERhdGEgZm9ybWF0IGZvciBJbmV0QWRkcmVzcyBvYmplY3RzIGlzIHdyb25nLiBJdCBpcyBBU0NJSSwgbm90CisgICBiaW5hcnkgKG1ha2luZyBpdCBlYXNpZXIgdG8gdXNlIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgYnV0IC4uLikgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzYzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgcGVybC9TTk1QL1NOTVAueHM6IFJlbW92ZWQgYW4gdW51c2VkIGxhYmVsIGZyb20gcGVybC9TTk1QL1NOTVAueHMuCisgICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzYyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgcGVybC9TTk1QL1NOTVAueHM6IFJlbW92ZWQgYW4gdW51c2VkIGxhYmVsIGZyb20gcGVybC9TTk1QL1NOTVAueHMuCisgICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzYyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgcGVybC9TTk1QL1NOTVAueHM6IFJlbW92ZWQgYW4gdW51c2VkIGxhYmVsIGZyb20gcGVybC9TTk1QL1NOTVAueHMuCisgICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzYyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgcGVybC9TTk1QL1NOTVAueHM6IFJlbW92ZWQgYW4gdW51c2VkIGxhYmVsIGZyb20gcGVybC9TTk1QL1NOTVAueHMuCisgICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCBhZ2VudC9oZWxwZXJzL29sZF9hcGkuYywgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmg6IENIQU5HRVM6IHNubXBkOiBEZWNsYXJlIHRoZSBPSUQKKworIGFyZ3VtZW50IHR5cGUgb2YgTUlCIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgYXMgJ2NvbnN0IG9pZCAqJyBpbnN0ZWFkCisgb2YgJ29pZCAqJyBzaW5jZSB0aGVzZSBmdW5jdGlvbnMgZG8gbm90IG1vZGlmeSB0aGUgT0lELiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzYxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbmV0bGluay5jLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvYXJwLmg6IFVzZSB0aGUgY29ycmVjdCBkYXRhIHR5cGUgZm9yCisKKyB0aGUgJ2NhY2hlIGV4cGlyZWQnIHZhcmlhYmxlOiBjaGFyIGluc3RlYWQgb2YgaW50LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzYwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jOiBGaXhlZCBhIGNvbXBpbGVyIHdhcm5pbmcgdGhhdCB3YXMKKworIGludHJvZHVjZWQgaW4gcjIwMTUxLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzU5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3dpbnNlcnZpY2UuYzogV2luMzI6IGltcHJvdmVkIHNvdXJjZSBjb2RlIGNvbnNpc3RlbmN5IGJ5CisKKyB1c2luZyBMUENUU1RSIGluc3RlYWQgb2YgTFBDU1RSLiBOb3RlOiB0aGlzIGRvZXMgbm90IG1lYW4gdGhhdAorIFVuaWNvZGUgYnVpbGRzIGFyZSBzdXBwb3J0ZWQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzU4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3dpbnNlcnZpY2UuYzogV2luMzI6IGltcHJvdmVkIHNvdXJjZSBjb2RlIGNvbnNpc3RlbmN5IGJ5CisKKyB1c2luZyBMUENUU1RSIGluc3RlYWQgb2YgTFBDU1RSLiBOb3RlOiB0aGlzIGRvZXMgbm90IG1lYW4gdGhhdAorIFVuaWNvZGUgYnVpbGRzIGFyZSBzdXBwb3J0ZWQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDcgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbmV0bGluay5jOiBBZGQgZmlsZQorCisgZm9yZ290dGVuIGluIHIyMDM1MyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oOiBSZXZlcnRlZCBhIGNoYW5nZSB0aGF0IHdhcworCisgY29tbWl0dGVkIGFjY2lkZW50YWxseSBpbiByMjAyNzYuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzU2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzogRml4ZWQgdHdvIGNvbXBpbGVyCisKKyB3YXJuaW5ncy4gIChCYWNrcG9ydGVkIHIyMDIzNiBmcm9tIHRoZSB0cnVuay4pIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzNTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jOiBDb21tZW50ZWQgb3V0IGFuIHVudXNlZCBmdW5jdGlvbgorCisgYmVjYXVzZSB0aGUgY29tcGlsZXIgY29tcGxhaW5lZCBhYm91dCBpdC4gIChCYWNrcG9ydGVkIHIyMDIzNyBmcm9tCisgdGhlIHRydW5rLikgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDM1NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnAuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2NvbW1vbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9kYXRhXworICAgICAgIGFjY2Vzcy5jLCBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2FycC5oOiBDSEFOR0VTOiBzbm1wZDogUEFUQ0ggMzEyNTk2OgorCisgZnJvbSBmYWJsZWQ4MDogbGlzdGVuIGZvciBuZXRsaW5rIGNoYW5nZSBldmVudHMgZm9yIHRoZSBhcnAtcmVsYXRlZAorIHRhYmxlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuaDogTkVXUzogUEFUQ0gKKworIDMxOTg3ODE6IGZyb20gZmVubmVyOiBHZXQgZGlzbWFuL3BpbmcgYW5kIGRpc21hbi90cmFjZXJvdXRlIHRvIGF0CisgbGVhc3QgY29tcGlsZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMzUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmg6IE5FV1M6IFBBVENICisKKyAzMTk4NzgxOiBmcm9tIGZlbm5lcjogR2V0IGRpc21hbi9waW5nIGFuZCBkaXNtYW4vdHJhY2Vyb3V0ZSB0byBhdAorIGxlYXN0IGNvbXBpbGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDM1MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5oOiBORVdTOiBQQVRDSAorCisgMzE5ODc4MTogZnJvbSBmZW5uZXI6IEdldCBkaXNtYW4vcGluZyBhbmQgZGlzbWFuL3RyYWNlcm91dGUgdG8gYXQKKyBsZWFzdCBjb21waWxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAzNTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuaDogTkVXUzogUEFUQ0gKKworIDMxOTg3ODE6IGZyb20gZmVubmVyOiBHZXQgZGlzbWFuL3BpbmcgYW5kIGRpc21hbi90cmFjZXJvdXRlIHRvIGF0CisgbGVhc3QgY29tcGlsZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA2ICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zeXN0ZW0uYzogTkVXUzogc25tcGxpYjogYWRkIG9wdGlvbmFsIHN1cHBvcnQgZm9yIGxvY2FsCisKKyBETlNTRUMgdmFsaWRhdGlvbiBvZiBob3N0bmFtZXMgIC0gb3B0aW9uYWwgYXQgY29uZmlndXJlIHRpbWU6IC0td2l0aC1sb2NhbC1kbnNzZWMtdmFsaWRhdGlvbiAgLSByZXF1aXJlcyBETlNTRUMtVG9vbCB2YWxpZGF0aW9uIGxpYnJhcmllcyAgLSBpbml0aWFsIHN1cHBvcnQsIGZvciBzeXN0ZW1zIHdpdGggZ2V0YWRkcmluZm8uIHN1cHBvcnQgZm9yCisgICAgYWRkaXRpb25hbCByZXNvbHZlciBpbnRlcmZhY2VzIGNvbWluZyBzb29uLiAgIC0gYWxzbyBUT0RPOiBmbGFnIGZvciBpZ25vcmluZyB2YWxpZGF0b2luIGVycm9ycyAobG9nICYgY29udGludWUpIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM1MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oOiBtb3ZlIHVudXNlZCAoYW5kIHRvbyBnZW5lcmljKQorCisgdG9rZW4gd2l0aGluIFVDRF9DT01QQVRJQkxFIGlmZGVmICAgLSBNQVhMQUJFTCBjb25mbGljdHMgd2l0aCA8YXJwYS9uYW1lc2VyLmg+ICAgLSBhZGRlZCBORVRTTk1QX01BWExBQkVMIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM1MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9NYWtlZmlsZS5pbiwgYXBwcy9NYWtlZmlsZS5pbiwgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmluLCBjb25maWd1cmUsIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MyLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IHVwZGF0ZSBjb25maWd1cmUvTWFrZWZpbGVzCisKKyBmb3IgRE5TU0VDIGxvY2FsIHZhbGlkYXRpb24gb3B0aW9uIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM0OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDSEFOR0VTOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kOiBtYWtlIGRlcGVuZCBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIG1hbi9uZXRzbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsIAorICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgCisgICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsIAorICAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsIAorICAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywgCisgICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywgCisgICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCBtYW4vbmV0c25tcF9zY2FsYXIuMywgCisgICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgbWFuL25ldHNubXBfdXRpbC4zLAorICAgICAgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsIAorICAgICAgbWFuL25ldHNubXBfd2F0Y2hlci4zOiBkb2N1bWVudGF0aW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLCAKKyAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc3lzY3RsLmM6IHJlbW92ZWQgdGhlCisKKyBhY2NpZGVudGFsIGJyb2tlbiBmZWF0dXJlIHJlcXVpcmUgbGluZSB0aGF0IGdvdCBoYWxmIGluc2VydGVkIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM0MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDSEFOR0VTOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzNDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzMzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kOiBtYWtlIGRlcGVuZCBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzMzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIG1hbi9uZXRzbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsIAorICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgCisgICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsIAorICAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsIAorICAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywgCisgICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywgCisgICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCBtYW4vbmV0c25tcF9zY2FsYXIuMywgCisgICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgbWFuL25ldHNubXBfdXRpbC4zLAorICAgICAgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsIAorICAgICAgbWFuL25ldHNubXBfd2F0Y2hlci4zOiBkb2N1bWVudGF0aW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzMzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLCAKKyAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzMzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogd2luMzIvZGlzdC9pbnN0YWxsZXIvbmV0LXNubXAubnNpOiBGaXggaW5jb21wbGV0ZSB1bmluc3RhbGwKKworIGNvbmZpZ3VyYXRpb246IC0gYnJva2VuIHJlbW92YWwgb2YgTWljcm9zb2Z0IERMTCAtIHJlbW92ZSBhc3NvcnRlZCBuZXcgTUlCcyBhbmQgaGVhZGVyIGZpbGVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAzMzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogd2luMzIvZGlzdC9pbnN0YWxsZXIvbmV0LXNubXAubnNpOiBGaXggaW5jb21wbGV0ZSB1bmluc3RhbGwKKworIGNvbmZpZ3VyYXRpb246IC0gYnJva2VuIHJlbW92YWwgb2YgTWljcm9zb2Z0IERMTCAtIHJlbW92ZSBhc3NvcnRlZCBuZXcgTUlCcyBhbmQgaGVhZGVyIGZpbGVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzMzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogd2luMzIvZGlzdC9pbnN0YWxsZXIvbmV0LXNubXAubnNpOiBGaXggaW5jb21wbGV0ZSB1bmluc3RhbGwKKworIGNvbmZpZ3VyYXRpb246IC0gYnJva2VuIHJlbW92YWwgb2YgTWljcm9zb2Z0IERMTCAtIHJlbW92ZSBhc3NvcnRlZCBuZXcgTUlCcyBhbmQgaGVhZGVyIGZpbGVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzMzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogd2luMzIvZGlzdC9pbnN0YWxsZXIvbmV0LXNubXAubnNpOiBGaXggaW5jb21wbGV0ZSB1bmluc3RhbGwKKworIGNvbmZpZ3VyYXRpb246IC0gYnJva2VuIHJlbW92YWwgb2YgTWljcm9zb2Z0IERMTCAtIHJlbW92ZSBhc3NvcnRlZCBuZXcgTUlCcyBhbmQgaGVhZGVyIGZpbGVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2k6IEZpeCBpbmNvbXBsZXRlIHVuaW5zdGFsbAorCisgY29uZmlndXJhdGlvbjogLSBicm9rZW4gcmVtb3ZhbCBvZiBNaWNyb3NvZnQgRExMIC0gcmVtb3ZlIGFzc29ydGVkIG5ldyBNSUJzIGFuZCBoZWFkZXIgZmlsZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDMzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9kaXN0L2J1aWxkLWJpbmFyeS5wbDogU3VwcG9ydCBUYXIvR1ppcCBjb21tYW5kIHBhdGhzCisKKyBjb250YWluaW5nIHNwYWNlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzM0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA2ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHdpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LnBsOiBTdXBwb3J0IFRhci9HWmlwIGNvbW1hbmQgcGF0aHMKKworIGNvbnRhaW5pbmcgc3BhY2VzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzMzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGw6IFN1cHBvcnQgVGFyL0daaXAgY29tbWFuZCBwYXRocworCisgY29udGFpbmluZyBzcGFjZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzM0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA2ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICB3aW4zMi9kaXN0L2J1aWxkLWJpbmFyeS5wbDogUmVwb3J0IEdaaXAgY29tbWFuZCBjb3JyZWN0bHkKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDMzMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGw6IFJlcG9ydCBHWmlwIGNvbW1hbmQgY29ycmVjdGx5CisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzMzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHdpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LnBsOiBSZXBvcnQgR1ppcCBjb21tYW5kIGNvcnJlY3RseQorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDUgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5jOiBGaXggZm9yIERyYWdvbkZseSBCU0QgKGRvZXMKKyAgICAgIG5vdAorCisgZGVmaW5lIElQX1NFTkRTUkNBRERSKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzMyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA1ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4uYzogRml4IGZvciBEcmFnb25GbHkgQlNEIChkb2VzCisgICAgICBub3QKKworIGRlZmluZSBJUF9TRU5EU1JDQUREUikgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzMyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA1ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oOiBGaXggc3BlbGxpbmcgb2YKKworIFNPX1JFQ1ZEU1RBRERSIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzMzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDUgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmg6IEZpeCBzcGVsbGluZyBvZgorCisgU09fUkVDVkRTVEFERFIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzMxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA1ICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgsIG1hbi9zbm1wLmNvbmYuNS5kZWYsIAorICAgICAgc25tcGxpYi9zbm1wX2FwaS5jOiBORVdTOiBhcHBzOiBhZGQgc25tcC5jb25mIHRva2VucyBmb3IgdGltZW91dHMKKworIGFuZCByZXRyaWVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMzMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90b29scy5jLCB0ZXN0aW5nL1RFU1RDT05GLnNoOiBDSEFOR0VTOiBNaW5HVzogTWFkZQorCisgcmVncmVzc2lvbiB0ZXN0IG91dHB1dCBpbmRlcGVuZGVudCBvZiB0aGUgTmV0LVNOTVAgdmFyaWFibGVzIGRlZmluZWQKKyBpbiB0aGUgV2luZG93cyByZWdpc3RyeS4gU29tZSB0ZXN0cyB0aGF0IGZhaWxlZCBwcmV2aW91c2x5IGFmdGVyIHRoZQorIE5ldC1TTk1QIGJpbmFyaWVzIChNU1ZDIGJ1aWxkKSBoYWQgYmVlbiBpbnN0YWxsZWQgZG8gbm93IHBhc3MuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzI5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3Rvb2xzLmMsIHRlc3RpbmcvVEVTVENPTkYuc2g6IENIQU5HRVM6IE1pbkdXOiBNYWRlCisKKyByZWdyZXNzaW9uIHRlc3Qgb3V0cHV0IGluZGVwZW5kZW50IG9mIHRoZSBOZXQtU05NUCB2YXJpYWJsZXMgZGVmaW5lZAorIGluIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5LiBTb21lIHRlc3RzIHRoYXQgZmFpbGVkIHByZXZpb3VzbHkgYWZ0ZXIgdGhlCisgTmV0LVNOTVAgYmluYXJpZXMgKE1TVkMgYnVpbGQpIGhhZCBiZWVuIGluc3RhbGxlZCBkbyBub3cgcGFzcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAzMjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdG9vbHMuYywgdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfVEVTVENPTkYuc2g6IAorCisgQ0hBTkdFUzogTWluR1c6IE1hZGUgcmVncmVzc2lvbiB0ZXN0IG91dHB1dCBpbmRlcGVuZGVudCBvZiB0aGUKKyBOZXQtU05NUCB2YXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeS4gU29tZSB0ZXN0cyB0aGF0CisgZmFpbGVkIHByZXZpb3VzbHkgYWZ0ZXIgdGhlIE5ldC1TTk1QIGJpbmFyaWVzIChNU1ZDIGJ1aWxkKSBoYWQgYmVlbgorIGluc3RhbGxlZCBkbyBub3cgcGFzcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzMjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdG9vbHMuYywgdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfVEVTVENPTkYuc2g6IAorCisgQ0hBTkdFUzogTWluR1c6IE1hZGUgcmVncmVzc2lvbiB0ZXN0IG91dHB1dCBpbmRlcGVuZGVudCBvZiB0aGUKKyBOZXQtU05NUCB2YXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeS4gU29tZSB0ZXN0cyB0aGF0CisgZmFpbGVkIHByZXZpb3VzbHkgYWZ0ZXIgdGhlIE5ldC1TTk1QIGJpbmFyaWVzIChNU1ZDIGJ1aWxkKSBoYWQgYmVlbgorIGluc3RhbGxlZCBkbyBub3cgcGFzcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMyOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHdpbjMyL2VuY29kZV9rZXljaGFuZ2UvZW5jb2RlX2tleWNoYW5nZS52Y3Byb2osIAorICAgICAgd2luMzIvbGliYWdlbnQvbGliYWdlbnQudmNwcm9qLCAKKyAgICAgIHdpbjMyL2xpYm5ldHNubXB0cmFwZC9saWJuZXRzbm1wdHJhcGQudmNwcm9qLCAKKyAgICAgIHdpbjMyL2xpYnNubXAvbGlic25tcC52Y3Byb2osCisgICAgICB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC52Y3Byb2osIAorICAgICAgd2luMzIvbmV0c25tcG1pYnMvbmV0c25tcG1pYnMudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBidWxrZ2V0L3NubXBidWxrZ2V0LnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wYnVsa3dhbGsvc25tcGJ1bGt3YWxrLnZjcHJvaiwgd2luMzIvc25tcGQvc25tcGQudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBkZWx0YS9zbm1wZGVsdGEudmNwcm9qLCB3aW4zMi9zbm1wZGYvc25tcGRmLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wZ2V0L3NubXBnZXQudmNwcm9qLAorICAgICAgd2luMzIvc25tcGdldG5leHQvc25tcGdldG5leHQudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBuZXRzdGF0L3NubXBuZXRzdGF0LnZjcHJvaiwKKyAgICAgIHdpbjMyL3NubXBzZXQvc25tcHNldC52Y3Byb2osICB3aW4zMi9zbm1wc3RhdHVzL3NubXBzdGF0dXMudmNwcm9qLAorICAgICAgIHdpbjMyL3NubXB0YWJsZS9zbm1wdGFibGUudmNwcm9qLCB3aW4zMi9zbm1wdGVzdC9zbm1wdGVzdC52Y3Byb2osCisgICAgICAgd2luMzIvc25tcHRyYW5zbGF0ZS9zbm1wdHJhbnNsYXRlLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC52Y3Byb2osIHdpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXB1c20vc25tcHVzbS52Y3Byb2osIHdpbjMyL3NubXB2YWNtL3NubXB2YWNtLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wd2Fsay9zbm1wd2Fsay52Y3Byb2osIHdpbjMyL3dpbjMyLnNsbiwKKyAgICAgIHdpbjMyL3dpbjMyZGxsLnNsbjoKKworIFJlbW92ZWQgVmlzdWFsIFN0dWRpbyAyMDA1IHNvbHV0aW9uIGFuZCBwcm9qZWN0IGZpbGVzIGFnYWluIHNpbmNlCisgVmlzdWFsIFN0dWRpbyAyMDEwIHJlZnVzZXMgdG8gbG9hZCB0aGVzZS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMyOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTWFrZWZpbGUuaW46IGNsZWFuIHRoZSBwZXJsL3B5dGhvbiBmZWF0dXJlIGxlZnRvdmVycyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMyNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6IGZpeCBtaWIgbW9kdWxlIGludm9jYXRpb24gZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMjYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYzogZml4IGlmZGVmCisKKyB0eXBvIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMyNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTWFrZWZpbGUuaW46IGZpeCBwZXJsL3B5dGhvbiBmZWF0dXJlIGRlcGVuZGVuY2llcyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMyNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvYXV0b19ubGlzdC5jOiByZXZlcnRlZCBhdXRvX25saXN0IG1hY3JvIHVzYWdlOyB0aGUgZnVuY3Rpb24KKworIGlzIHVzZWQgaW4gaGVhZGVycyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czogQWRkIGEgLVQgb3B0aW9uIHRvIHJ1biAnbWFrZSB0ZXN0JworICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFwcHMvTWFrZWZpbGUuaW46IGZpeCB0aGUgZW5jb2RlX2tleWNoYW5nZSAuZnQgZmlsZW5hbWUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHBlcmwvVHJhcFJlY2VpdmVyL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oLCBzbm1wbGliL3Rvb2xzLmM6IAorCisgZml4IHRoZSBmZWF0dXJlcyByZXF1aXJlZCBieSB0aGUgVHJhcFJlY2VpdmVyIG1vZHVsZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBNYWtlZmlsZS5pbjogQWRkIHRoZSBUcmFwUmVjZWl2ZXIgdG8gdGhlIGxpc3Qgb2YgcGVybCBtb2R1bGVzCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMxOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogcGVybC9TTk1QL1NOTVAueHM6IHVzZSB0aGUgbmV3ZXIgTmV0LVNOTVAgQVBJcywgcmF0aGVyIHRoYW4gdGhlCisKKyBvbGRlciBVQ0Qgb25lcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBwZXJsL1NOTVAvU05NUC54czogcmVtb3ZlIFNFVCBjb2RlIHdoZW4gdW5kZXIgLS1yZWFkLW9ubHkgbW9kZQorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuYzogcmVxdWlyZQorCisgY2hlY2tfdmJfdWludCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlX3N1YmFnZW4KKyAgICAgICB0LmMsIGFnZW50L3NubXBfYWdlbnQuYywgbG9jYWwvbWliMmMtY29uZi5kL3N1YmFnZW50Lm0yYywgCisgICAgICBweXRob24vbmV0c25tcC9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCwgCisgICAgICBzbm1wbGliL3NubXBfbG9nZ2luZy5jOiBsYXN0IG9mIHRoZSBwZXJsLXVzZWQgZmVhdHVyZSBmdW5jdGlvbnMKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzE1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvUm1vbi9ldmVudC5jLCBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9zdWJhZ2VuCisgICAgICAgdC5jLCBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYywgYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYywgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvc3ViYWdlbnQubTJjLCBzbm1wbGliL21pYi5jLCBzbm1wbGliL3BhcnNlLmM6CisKKyBzdGFydGVkIHRoZSBmaW5hbCBzZXQgb2YgZnVuY3Rpb24gcmVtb3ZhbHMgZm9yIGZlYXR1cmVzIHJlcXVpcmVkIGJ5CisgcGVybC9weXRob24gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1zb3VyY2UtaW5jbHVkZXMubTJpOiBhZGRlZCB0aGUKKworIG5ldC1zbm1wLWZlYXR1cmVzLmggaGVhZGVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHBlcmwvT0lEL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oLCAKKyAgICAgIHBlcmwvU05NUC9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCwgCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCwgCisgICAgICBwZXJsL2FnZW50L25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oOiBBZGRlZCBwZXJsIGZlYXR1cmUKKworIHJlcXVpcmVtZW50cyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBNYWtlZmlsZS5pbiwgTWFrZWZpbGUucnVsZXMsIGNvbmZpZ3VyZSwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wZXJsX3B5dGhvbiwgCisgICAgICBwZXJsL0FTTi9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCwgCisgICAgICBwZXJsL09JRC9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCwgCisgICAgICBwZXJsL1NOTVAvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgsIAorICAgICAgcGVybC9hZ2VudC9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCwgCisgICAgICBwZXJsL2RlZmF1bHRfc3RvcmUvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmg6IGhvcGVmdWxseQorICAgICAgd29ya2luZworCisgcnVsZXMgdG8gYXBwbHkgZmVhdHVyZSByZXF1aXJlbWVudHMgdG8gcGVybCBhbmQgcHl0aG9uIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX3NvbGFyaXMyLmMsIAorICAgICAgYWdlbnQvc25tcF9hZ2VudC5jOiBtb3JlIGNoYW5nZXMgdG8gcmVtb3ZlIHVubmVlZGVkIGZ1bmN0aW9ucworCisgcHJpbWFyaWx5IHdoZW4gd3JpdGUgbW9kZSBpcyB0dXJuZWQgb2ZmIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMxMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2xvZ2dpbmcuYzogY2hhbmdlIHRoZSB3YW50IGludm9jYXRpb24gdG8gb25seSBkZWZhdWx0CisKKyB0byBleGNsdWRlIGV4dGVybmFsIGhvb2tzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMwOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9maW5kLXVudXNlZC1jb2RlOiBzZWFyY2ggdGhyb3VnaCAueHMgZmlsZXMgZm9yCisKKyBmdW5jdGlvbiBpbnZvY2F0aW9ucyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMDggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2F1dG9fbmxpc3QuYzogZm9yZ290IGEgc2VtaWNvbG9uIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzA3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvblRhYmxlLmM6IGlxdWVyeSBwZHUKKyAgICAgIHNlc3Npb25zCisKKyBhcmUgb25seSBuZWVkZWQgaW4gd3JpdGUgbW9kZS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMwNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYXBwcy9NYWtlZmlsZS5pbjogZml4IGZlYXR1cmUgZGV0ZWN0aW9uIG9mIHNvbWV0aW1lcy1idWlsdAorCisgYXBwbGljYXRpb25zIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMwNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvYXV0b19ubGlzdC5jOiB1c2UgdGhlIGZlYXR1cmVfdW51c2VkIG1hY3JvIGZvciBtYWtpbmcgYW4KKworIGVtcHR5IGZpbGUgZm9yIGNvbnNpc3RlbmN5IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMwNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jLCBhZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9od19mc3lzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfbmV0d29yay5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9vcGVuYnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zb2xhcmlzMi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc3lzY3RsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfZGF0CisgICAgICAgYV9hY2Nlc3MuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmMsCisgICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlL3NubXBUbHN0bUNlcnRUb1RTTgorICAgICAgIFRhYmxlLmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYywgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmMsIGFwcHMvc25tcHRscy5jLCAKKyAgICAgIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvbWliLmMsIHNubXBsaWIvc25tcF9vcGVuc3NsLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmM6IEFub3RoZXIgc3dlZXAgZm9yIHVudXNlZAorCisgZnVuY3Rpb25zIHdoZW4gcmVhZF9vbmx5IG1vZGUgaXMgdHVybmVkIG9uIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMwMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYywgYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmMsIGFnZW50L21pYmdyb3VwL2FnZW50L25zTG9nZ2luZy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJCb29sZWFuVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckRlbHRhVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3RUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEV4cHJlc3Npb25UYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cE9iamVjdFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc3lzY3RsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliXzVfNS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlLmMKKyAgICAgICAsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aQorICAgICAgIGZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUFkZHJUYWJsZS9zbm1wVGxzdG1BZGRyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUvc25tcFRsc3RtQ2VydFRvVFNOCisgICAgICAgVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtUGFyYW1zVGFibGUvc25tcFRsc3RtUGFyYW1zVGFibGUuCisgICAgICAgYywgc25tcGxpYi9jaGVja192YXJiaW5kLmM6IG1hcmsgYSBzbGV3IG9mIGZ1bmN0aW9ucyBhcyBmZWF0dXJlcworCisgdGhhdCBhcmUgb25seSBuZWVkZWQgd2l0aCB3cml0ZV9zdXBwb3J0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMwMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9maW5kLXVudXNlZC1jb2RlOiBydW4gZ3JlcCB3aXRoIC1uIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzAxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfdHJhbnNwb3J0LmMsIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOiAKKworIGZlYXR1cml6ZSBuZXRzbm1wX3NvY2thZGRyX3NpemUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzAwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmM6IHJlbW92ZSBhCisKKyBmZWF0dXJlX3JlcXVpcmUgbm90IGFjdHVhbGx5IG5lZWRlZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI5OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9jZXJ0X3V0aWwuYywgc25tcGxpYi9jb250YWluZXIuYzogbWFyayBTVUJDT05UQUlORVJfRklORAorCisgYXMgYSBmZWF0dXJlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI5OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2NsaWVudC5jLCBzbm1wbGliL3NubXB0c20uYzogdGhlIHJvdyBjcmVhdGlvbiBBUEkgaXMKKworIG9ubHkgdXNlZCBpbiB0aGUgVFNNIGltcGxlbWVudGF0aW9uIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI5NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jLCBzbm1wbGliL3NubXB0c20uYzogdGhlIG5ld2VyIGNvbnRleHQgZW5naW5lSUQKKworIHByb2JpbmcgaXMgb25seSBuZWVkZWQgaWZmIFRTTSBpcyBpbiB1c2UgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjk2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL2Rpcl91dGlscy5jOiBmaXggYW4gaWZkZWYgdHlwbyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI5NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX29wZW5zc2wuYzogbW92ZWQgZmV0YXVyZSBjaGlsZF9vZiBzdGF0ZW1lbnRzIHRvIHRoZQorCisgdG9wIG9mIHRoZSBmaWxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI5NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvY29udGFpbmVyLmMsIHNubXBsaWIvZGlyX3V0aWxzLmMsIAorICAgICAgc25tcGxpYi9zbm1wX29wZW5zc2wuYzogbWFya2VkIGEgY291cGxlIG9mIHJhcmVseSB1c2VkIGNvbnRhaW5lcgorCisgZnVuY3Rpb25zLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjkzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmM6IHNwbGl0IG91dCB0aGUgcHJlZml4X2luZm8gZmVhdHVyZQorICAgICAgaW50bworCisgc3ViLWZlYXR1cmVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI5MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogICAqIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2ludAorICAgICAgIGVyZmFjZS5jOiBtYXJrIHRoZSBhY2Nlc3NvciBmdW5jdGlvbnMgYXMgdW5uZWVkZWQgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyOTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmM6IGZpeCBhIGNoaWxkX29mIHN0YXRlbWVudAorCisgd2l0aCBhIGNvcHkvcGFzdGUgZXJyb3IgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjkwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX3RkYXRhLmM6IHRoZSBjb250YWluZXIgcm93LXJlbW92ZSBpcyBvbmx5CisKKyBuZWVkZWQgaWYgdGhlIHRkYXRhIHJlbW92ZV9yb3cgaXMgbmVlZGVkIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI4OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYywgYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUFkZHJUYWJsZS9zbm1wVGxzdG1BZGRyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUvc25tcFRsc3RtQ2VydFRvVFNOCisgICAgICAgVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtUGFyYW1zVGFibGUvc25tcFRsc3RtUGFyYW1zVGFibGUuCisgICAgICAgYzogZmVhdHVyZSBtYXJraW5nIG9mIHVudXNlZCB0ZGF0YSBmdW5jdGlvbnMgICAgCisgICAgICB0YWJsZV90ZGF0YV9kZWxldGVfdGFibGUgICAgIHRhYmxlX3RkYXRhX2V4dHJhY3RfdGFibGUgICAgCisgICAgICB0YWJsZV90ZGF0YV9yZW1vdmVfcm93IGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjg4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RhdGFfc2V0LmM6IHJlbW92YWwgb2Ygc29tZSByYXJlbHkgdXNlZAorCisgCWZ1bmN0aW9ucyB0YWJsZV9zZXRfbXVsdGlfYWRkX2RlZmF1bHRfcm93IAl0YWJsZV9kYXRhc2V0X3VucmVnaXN0ZXJfYXV0b19kYXRhX3RhYmxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI4NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6IEFkZGVkIGEgZGVmaW5pdGlvbiB0byBpbmNvcnBvcmF0ZQorCisgcmVhZF9vbmx5L25vdGlmeV9vbmx5IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI4NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmM6IGFkZGVkIGEgbWlzc2luZyBmZWF0dXJlIGRlZmluaXRpb24KKworIGxpbmUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjg1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9NYWtlZmlsZS5pbjogYWRkZWQgYmFjayBpbiBtaXNzaW5nIG1pYmdyb3VwIGZlYXR1cmUKKworIGRlZmluaXRpb24gbGlzdCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyODQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOiBJbmNsdWRlIHRoZSBvcmlnaW5hbCBiYXNlIGZsYWdzIHRvCisKKyBlbnN1cmUgLS13aXRoLWRlZmF1bHRzIGdldHMgcGlja2VkIHVwIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI4MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6IGZpeCB1c2FnZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI4MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6IEFkZGVkIGEgLWIgZmxhZyBmb3IgYmFzZSBhcmd1bWVudHMgdG8KKworIHN0YXJ0IGZyb20gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjgxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czogZGVmYXVsdCB0byBhIGxpbmVhciBzZWFjaCBvZiBzaXplCisKKyB0ZXN0cywgcmF0aGVyIHRoYW4gZXhwb25lbnRpYWwgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjgwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTAzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oLCBzbm1wbGliL3NubXBVRFBEb21haW4uYzogCisKKyBDSEFOR0VTOiBzbm1wbGliOiBHdWFyZCBuZXRzbm1wX3VkcF9yZWN2ZnJvbSgpIGV0Yy4gZGVjbGFyYXRpb25zCisgY29uc2lzdGVudGx5LiAgQ0hBTkdFUzogV2luMzI6IEJ1aWxkcyB3aXRoIFZpc3VhbCBTdHVkaW8gMjAxMC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAyNzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaCwgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4uYzogQ0hBTkdFUzogc25tcGxpYjoKKyAgICAgIEd1YXJkCisKKyBuZXRzbm1wX3VkcF9yZWN2ZnJvbSgpIGV0Yy4gZGVjbGFyYXRpb25zIGNvbnNpc3RlbnRseS4gIENIQU5HRVM6CisgV2luMzI6IEJ1aWxkcyB3aXRoIFZpc3VhbCBTdHVkaW8gMjAxMC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAyNzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaCwgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4uYzogQ0hBTkdFUzogc25tcGxpYjoKKyAgICAgIEd1YXJkCisKKyBuZXRzbm1wX3VkcF9yZWN2ZnJvbSgpIGV0Yy4gZGVjbGFyYXRpb25zIGNvbnNpc3RlbnRseS4gIENIQU5HRVM6CisgV2luMzI6IEJ1aWxkcyB3aXRoIFZpc3VhbCBTdHVkaW8gMjAxMC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi93aW5zZXJ2aWNlLmM6IENIQU5HRVM6IFdpbjMyOiBQQVRDSDogMzI5Mzg0MjogRWxpbWluYXRlCisKKyByZWdpc3RyeSBhcmd1bWVudCBsaW1pdCBvZiAxMjcgY2hhcmFjdGVycyAodGhpcyBsaW1pdGF0aW9uIHdhcworIHJlcG9ydGVkIGJ5IFN5bHZhaW4gRGVyeSkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMjc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTAzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3dpbnNlcnZpY2UuYzogQ0hBTkdFUzogV2luMzI6IFBBVENIOiAzMjkzODQyOiBFbGltaW5hdGUKKworIHJlZ2lzdHJ5IGFyZ3VtZW50IGxpbWl0IG9mIDEyNyBjaGFyYWN0ZXJzICh0aGlzIGxpbWl0YXRpb24gd2FzCisgcmVwb3J0ZWQgYnkgU3lsdmFpbiBEZXJ5KS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAyNzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvd2luc2VydmljZS5jOiBDSEFOR0VTOiBXaW4zMjogUEFUQ0g6IDMyOTM4NDI6IEVsaW1pbmF0ZQorCisgcmVnaXN0cnkgYXJndW1lbnQgbGltaXQgb2YgMTI3IGNoYXJhY3RlcnMgKHRoaXMgbGltaXRhdGlvbiB3YXMKKyByZXBvcnRlZCBieSBTeWx2YWluIERlcnkpLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDI3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi93aW5zZXJ2aWNlLmM6IENIQU5HRVM6IFdpbjMyOiBQQVRDSDogMzI5Mzg0MjogRWxpbWluYXRlCisKKyByZWdpc3RyeSBhcmd1bWVudCBsaW1pdCBvZiAxMjcgY2hhcmFjdGVycyAodGhpcyBsaW1pdGF0aW9uIHdhcworIHJlcG9ydGVkIGJ5IFN5bHZhaW4gRGVyeSkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogQ0hBTkdFUzogV2luMzI6IGhlYWRlciBmaWxlCisKKyA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhbiBub3cgYmUgdXNlZCBpbiB0aGUgTWluR1cKKyBlbnZpcm9ubWVudC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAyNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogQ0hBTkdFUzogV2luMzI6IGhlYWRlciBmaWxlCisKKyA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhbiBub3cgYmUgdXNlZCBpbiB0aGUgTWluR1cKKyBlbnZpcm9ubWVudC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAyNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogQ0hBTkdFUzogV2luMzI6IGhlYWRlciBmaWxlCisKKyA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhbiBub3cgYmUgdXNlZCBpbiB0aGUgTWluR1cKKyBlbnZpcm9ubWVudC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAyNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogQ0hBTkdFUzogV2luMzI6IGhlYWRlciBmaWxlCisKKyA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhbiBub3cgYmUgdXNlZCBpbiB0aGUgTWluR1cKKyBlbnZpcm9ubWVudC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oOiBXaW4zMiBETEwgYnVpbGQgZml4ZXMuCisKKyAoQmFja3BvcnRlZCByMjAxODQgZnJvbSB0cnVuay4pIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAyNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaDogV2luMzIgRExMIGJ1aWxkIGZpeGVzLgorCisgKEJhY2twb3J0ZWQgcjIwMTg0IGZyb20gdHJ1bmsuKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMjc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3dpbnNlcnZpY2UuYzogU3BlbGxpbmcgYW5kIGdyYW1tYXIgZml4ZXMgZm9yIHRoZSBzb3VyY2UKKworIGNvZGUgY29tbWVudHMgaW4gc25tcGxpYi93aW5zZXJ2aWNlLmMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMjc0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3dpbnNlcnZpY2UuYzogU3BlbGxpbmcgYW5kIGdyYW1tYXIgZml4ZXMgZm9yIHRoZSBzb3VyY2UKKworIGNvZGUgY29tbWVudHMgaW4gc25tcGxpYi93aW5zZXJ2aWNlLmMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvd2luc2VydmljZS5jOiBTcGVsbGluZyBhbmQgZ3JhbW1hciBmaXhlcyBmb3IgdGhlIHNvdXJjZQorCisgY29kZSBjb21tZW50cyBpbiBzbm1wbGliL3dpbnNlcnZpY2UuYy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAyNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvd2luc2VydmljZS5jOiBTcGVsbGluZyBhbmQgZ3JhbW1hciBmaXhlcyBmb3IgdGhlIHNvdXJjZQorCisgY29kZSBjb21tZW50cyBpbiBzbm1wbGliL3dpbnNlcnZpY2UuYy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAyNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIE5FV1M6IGFkZGVkIG5vdGUgYWJvdXQgdGhlIG5ldyB0aW1pbmcgZnVuY3Rpb24gZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wZC5jb25mLjUuZGVmOiBVcGRhdGUgdGhlIG1hbnVhbCBwYWdlIHRvIHJlZmxlY3QgdGhlIG5ldworCisgdGltaW5nIG9wdGlvbnMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjcyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3Rvb2xzLmM6IGJldHRlciBkb2N1bWVudGF0aW9uIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjcxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29uZi5jOiB1c2UgdGhlCisKKyBuZXRzbm1wX3N0cmluZ190aW1lX3RvX3NlY3MoKSBmb3IgcGFyc2luZyBmcmVxdWVuY2llcy90aW1lIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMTAycGR1X2J1aWxkX2NsaWIuYzogZml4IHBkdQorCisgYnVpbGRpbmcgdGVzdHMgdW5kZXIgdmFyaW91cyBkaXNhYmxlZCBtb2RlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDEwMnBkdV9idWlsZF9jbGliLmM6IGRvbid0IHRyeSB0bworCisgYnVpbGQgdGhlIEdFVCBwZHUgdW5kZXIgbm90aWZ5X29ubHkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjY4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaCwgc25tcGxpYi90b29scy5jOiBmaXggYSBidWcgd2l0aAorCisgbm8tc3VmZml4IHN0cmluZ3MgYW5kIHVzZSBhIGNvbnN0IGlucHV0IHN0cmluZyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNjcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICAgKiAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAxMG5ldHNubXBfc3RyaW5nX3RpbWVfdG9fc2Vjc19jbGliLmM6CisKKyBBIG5ldyB1bml0IHRlc3QgZm9yIHRoZSB0aW1lIGNvbnZlcnNpb24gcm91dGluZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNjYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IHVzZSB0aGUKKworIG5ldHNubXBfc3RyaW5nX3RpbWVfdG9fc2VjcygpIGZ1bmN0aW9uIGZvciBjb21wdXRpbmcgaW50ZXJ2YWwKKyBwZXJpb2RzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI2NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgsIHNubXBsaWIvdG9vbHMuYzogQWRkZWQgYQorCisgbmV0c25tcF9zdHJpbmdfdGltZV90b19zZWNzKCkgZnVuY3Rpb25zIHRvIGNvbnZlcnQsIGUuZy4sIDFoIHRvIDM2MDAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjY0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6IHJlbW92ZSBjb2RlIHRvIGJ1aWxkL3BhcnNlIEdFVC9ldGMgcmVxdWVzdHMKKworIHdoZW4gTk9USUZZX09OTFkgaXMgdHVybmVkIG9uLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjYzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBORVdTOiB1cGRhdGUgdGhlIE5FV1MgdG8gcmVmbGVjdCB0aGUgbmV3IC0tZW5hYmxlLXJlYWQtb25seSBhbmQKKworIC0tZW5hYmxlLW5vdGlmeS1vbmx5IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI2MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jOiBtaW5vcgorCisgaW1wcm92ZW1lbnRzIGZvciByb25seSB2cyByd3JpdGUgaGFuZGxpbmcgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjYxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jOiBzdGlsbCBlbmFibGUKKworIFJPTkxZIHdoZW4gUldSSVRFIGlzbid0IHBvc3NpYmxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI2MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6IGZpeCBHRVQgc3VwcG9ydCB3aGVuIG5vX3dyaXRlIGlzCisKKyBlbmFibGVkIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI1OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzogbWFyayBhIGZ1dHVyZQorCisgbW9kaWZpY2F0aW9uIG5lZWQgaW4gYSBjb21tZW50IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2hlbHBlcnMvb2xkX2FwaS5jOiBmaXggaGFuZGxpbmcgb2Ygbm9fd3JpdGUgc3VwcG9ydAorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsIGFnZW50L3NubXBfYWdlbnQuYywgYWdlbnQvc25tcGQuYzogCisKKyBkb24ndCBvcGVuIGFueSBsaXN0ZW5pbmcgdHJhbnNwb3J0cyB3aGVuIG5vdGlmeS1vbmx5IGlzIHNwZWNpZmllZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGU6IHNldCB0aGUKKworIG5vLWxpc3RlbiBhbmQgcmVhZC1vbmx5IGZsYWdzIHdoZW4gLS1lbmFibGUtbm90aWZ5LW9ubHkgaXMgc2V0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI1NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogcmFuIGF1dG9oZWFkZXIgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wU1NIRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRDUElQdjZEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU1RDUERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4uYzogaW1wbGVtZW50IHRoZQorCisgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCBpbiB0aGVzZSB0cmFuc3BvcnRzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI1MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlOiBydW4gYXV0b2NvbmYgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlOiBtb3ZlIHRoZSByZWFkLW9ubHkgZmxhZworCisgZGVmaW5pdGlvbiBiZWxvdyB0aGUgbm90aWZ5LW9ubHksIHNpbmNlIG5vdGlmeS1vbmx5IG5lZWRzIHRvIGltcGx5CisgcmVhZC1vbmx5IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI1MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZTogRGVmaW5lZCBhIG5ldworCisgLS1lbmFibGUtbm90aWZ5LW9ubHkgZmxhZyBmb3IgYnVpbGRpbmcgYSB0b29sc2V0IHRoYXQgb25seSBhbGxvd3MKKyBmb3Igbm90aWZpY2F0aW9ucyB3aXRoIG5vIHJlYWQvd3JpdGUgc3VwcG9ydCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGU6IERlZmluZWQgYSBuZXcKKworIC0tbm8tbGlzdGVuIGZsYWcgdG8gcmVtb3ZlIGxpc3RlbmluZyBzdXBwb3J0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI0OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVmYXVsdF9tb2R1bGVzLmg6IHRoZSBkaXNtYW4gc2NoZWR1bGUgbWliIGlzIG9ubHkKKworIHVzZWZ1bCB3aGVuIFNFVHMgYXJlIHR1cm5lZCBvbiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNDggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi5oOiB0aGUgZGlzbWFuIHNjaGVkdWxlIG1pYiBpcyBvbmx5IHVzZWZ1bAorCisgd2hlbiBTRVRzIGFyZSB0dXJuZWQgb24gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjQ3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgICogCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlCisgICAgICAgX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnQKKyAgICAgICBlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2ludGVyCisgICAgICAgZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9pbnQKKyAgICAgICBlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmEKKyAgICAgICBjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWIKKyAgICAgICBsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfaW50ZXJmCisgICAgICAgYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfaW50ZXJmYWNlLgorICAgICAgIGMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfaW50ZXJmYWNlLgorICAgICAgIGM6IGZpbmlzaGVkIG5vX3dyaXRlIHN1cHBvcnQgZm9yIGNvbW1vbiBpbmNsdWRlZCB0YWJsZXMKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjQ2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYzogQWRkIGJhY2sgaW4KKworICduZXRzbm1wX3NldF9yb3dfY29sdW1uJyB3aGVuIG5vX3dyaXRlIHN1cHBvcnQgaXMgZW5hYmxlZCBUaGlzCisgZnVuY3Rpb24gaXMgYSBnZW5lcmljIGRhdGEgbWFuaXB1bGF0aW9uIGZ1bmN0aW9uLCBub3QgU0VUIHNwZWNpZmljIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI0NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmM6IGRvbid0IHVzZSBtYXJrX3Jvd19jb2x1bW5fd3JpdGFibGUKKworIHdoZW4gcmVhZC1vbmx5IHN1cHBvcnQgaXMgZW5hYmxlZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9hZ2VudC9uc0NhY2hlLmMsIGFnZW50L21pYmdyb3VwL2FnZW50L25zRGVidWcuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc0xvZ2dpbmcuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmM6IGZpeCBub193cml0ZSBzdXBwb3J0CisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI0MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmM6IGZpeCBub193cml0ZSBzdXBwb3J0IGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjQyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmM6IERvbid0IGZyZWUKKworIHRoZSBpZlhUYWJsZSByb3cgZm91bmQgb24gbG9hZCBmYWlsdXJlIGFzIHdlIGRvbid0IG93biBpdCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMjQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmM6IERvbid0IGZyZWUKKworIHRoZSBpZlhUYWJsZSByb3cgZm91bmQgb24gbG9hZCBmYWlsdXJlIGFzIHdlIGRvbid0IG93biBpdCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMjQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmM6IERvbid0IGZyZWUKKworIHRoZSBpZlhUYWJsZSByb3cgZm91bmQgb24gbG9hZCBmYWlsdXJlIGFzIHdlIGRvbid0IG93biBpdCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMjQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmM6IERvbid0IGZyZWUKKworIHRoZSBpZlhUYWJsZSByb3cgZm91bmQgb24gbG9hZCBmYWlsdXJlIGFzIHdlIGRvbid0IG93biBpdCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMjQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmM6IERvbid0IGZyZWUKKworIHRoZSBpZlhUYWJsZSByb3cgZm91bmQgb24gbG9hZCBmYWlsdXJlIGFzIHdlIGRvbid0IG93biBpdCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogZ2l0IGJhc2gtc2hlbGwgZnVuY3Rpb25zIHRvIGVuYWJsZQorCisgYnJhbmNoIHN3aXRjaGluZyBhbmQgZXh0ZXJuYWwgYnVpbGRpbmcgVGhlc2UgbG9jYWwgc2hlbGwgZnVuY3Rpb25zCisgKHNubXBjb25maWd1cmUgYW5kIHNubXBtYWtlKSBsZXQgeW91IGNvbmZpZ3VyZSBhbmQgYnVpbGQgdGhlCisgTmV0LVNOTVAgc291cmNlIGNvZGUgaW4gZXh0ZXJuYWwgZGlyZWN0b3JpZXMgdGhhdCBhcmUKKyBhdXRvLWNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIGV4aXN0aW5nIGJyYW5jaCBuYW1lICh3aXRoIGFuIG9wdGlvbmFsCisgc3VmZml4KS4gIFRoaXMgbGV0cyB5b3UgcnVuICdzbm1wbWFrZScgZnJvbSB3aXRoaW4gdGhlIHNvdXJjZQorIGRpcmVjdG9yeSBhbmQgaGF2ZSBpdCBhY3R1YWxseSBleHRlcm5hbGx5IGtlZXAgdHJhY2sgb2YgbW9kaWZpZWQKKyBmaWxlcywgZXRjLCBzbyBidWlsZGluZyBpbiBtdWx0aXBsZSBicmFuY2hlcyBjYW4gYmUgZG9uZSBmcm9tIGEKKyBzaW5nbGUgZ2l0IGNoZWNrb3V0LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjQwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzogY2xlYW4gdXAgdGhlIGl0ZXJhdG9ycworICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IGZyZWUgdmFyYmluZHMgYWZ0ZXIKKworIHNlbmRpbmcgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjM4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uYzogQ29tbWVudGVkIG91dCBhbiB1bnVzZWQgZnVuY3Rpb24KKworIGJlY2F1c2UgdGhlIGNvbXBpbGVyIGNvbXBsYWluZWQgYWJvdXQgaXQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOiBGaXhlZCB0d28gY29tcGlsZXIKKworIHdhcm5pbmdzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjM2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIzICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jOiBSZW1vdmUgdW5uZWNlc3NhcnkgbnVsbCBjaGVjaworICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjMgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5jOiBNb3ZlIHBvaW50ZXIgZGVyZWZlcmVuY2UgdG8gYWZ0ZXIKKworIHRoZSBjaGVjayBmb3Igc3VjY2Vzc2Z1bCBhbGxvY2F0aW9uIG9mIHRoZSBwb2ludGVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIzNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMyAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmM6IFJlZHVjZSB2YXJpYWJsZSBzY29wZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIzMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMyAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmM6IFJlbW92ZSBhbiB1bnVzZWQgdmFyaWFibGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjMgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOiBSZWR1Y2UgdmFyaWFibGUgc2NvcGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjMgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOiBSZWR1Y2UgdmFyaWFibGUgc2NvcGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9hZ2VudF90cmFwLmM6IFJlZHVjZSB2YXJpYWJsZSBzY29wZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIyOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2FnZW50X3RyYXAuYzogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIyOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6IG1lbnRpb24gd2hpY2ggbW9kdWxlIGlzIHJlcXVpcmVkIHdoZW4KKworIGJ1aWxkaW5nIHRvIGdldCB0aGUgZGVsaXZlciBzdXBwb3J0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIyNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzogZGVsZXRlZCBhbiB1bm5lZWRlZAorCisgZGVidWdnaW5nIHN0YXRlbWVudCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMjYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IHByb3Blcmx5IHVwZGF0ZSB0aGUgbWF4CisKKyBjb3VudCBpbiB0aGUgb3V0Z29pbmcgbm90aWZpY2F0aW9ucyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMjUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IGJldHRlciBwYWNrZXQgZXN0aW1hdGlvbgorCisgdG8gZW5zdXJlIHdlIGRvbid0IG92ZXJydW4uICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMjQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IGVzdGltYXRlIHRoZSBwYWNrZXQgc2l6ZQorCisgYW5kIGJyZWFrIHRoZSBub3RpZmljYXRpb24gdXAgYmFzZWQgb24gaXQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjIzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOiB0cmFuc2Zvcm0gdGhlCisKKyBub3RpZmljYXRpb24gc2VuZGluZyBpbnRvIGEgbGFyZ2VyIGxvb3AgZm9yIGxhdGVyIG11bHRpLW5vdGlmcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBORVdTOiBmdXJ0aGVyIGluZm9ybWF0aW9uIGFib3V0IGZlYXR1cmUgbWFya2luZy9zZWxlY3Rpb24KKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjIxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBORVdTOiBtZW50aW9uIHRoZSBuZXcgZGVsaXZlcnkgYnkgbm90aWZpY2F0aW9ucyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIyMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTkVXUzogZG9jdW1lbnQgdGhlIG1pbmltYWxpc3Qgc3VwcG9ydCBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIxOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6IGRvY3VtZW50IHRoZSBuZXcgZGVsaXZlckJ5Tm90aWZ5IGNvbmZpZworCisgdG9rZW5zIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIxOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzogYWxsb3cgcnVuIHRpbWUKKworIG1vZGlmaWNhdGlvbnMgb2YgdGhlIE9JRHMgdG8gdXNlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIxNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaDogYWRkIGNvbmZpZyBmbGFncyB0byBub3QKKworIGluY2x1ZGUgdGhlIHBlcmlvZCBjb25maWcgYW5kIG1zZyBjb3VudCB2YWx1ZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjE2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOiBpbmNsdWRlIHRoZSBwZXJpb2RpYworCisgY291bnQsIHRoZSBtZXNzYWdlIG51bWJlciBhbmQgdGhlIG1heCBtZXNzYWdlIG51bWJlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IGRlbGV0ZWQgZGVidWdnaW5nCisKKyBjb21tZW50IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIxNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmMsIAorICAgICAgbWlicy9ORVQtU05NUC1QRVJJT0RJQy1OT1RJRlktTUlCLnR4dDogTW92ZSB0aGUgbm90aWZpY2F0aW9uCisKKyBkZWZpbml0aW9uIHRvIHdpdGhpbiB0aGUgc3ViLW1pYiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IGRlbGV0ZSBhbiB1bnVzZWQKKworIHZhcmlhYmxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaDogbG9hZCB0aGUgTUlCIGludG8gdGhlCisKKyBkZWZhdWx0IHNldCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1pYnMvTkVULVNOTVAtUEVSSU9ESUMtTk9USUZZLU1JQi50eHQ6IEEgbmV3IG1pYiB0byBob2xkIHRoZQorCisgcGVyaW9kaWMgbm90aWZ5IG9iamVjdHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjEwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOiBmaWxsIG91dCB0aGUgY29uZmlnIGZyZWUKKworIHJvdXRpbmUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjA5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOiBwcm9wZXJseSBtb25pdG9yIHRoZQorCisgd2hvbGUgY29udGFpbmVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIwOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaDogcGFyc2UgdGhlIGNvbmYgZmlsZXMgYW5kCisKKyBjcmVhdGUgYW5kIGluc2VydCBvYmplY3RzIGludG8gdGhlIGNvbnRhaW5lciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IGRlZmluZWQgYSBjb250YWluZXIgdG8KKworIHN0b3JlIGEgbGlzdCBvZiBkZWxpdmVyIG9iamVjdHMgaW4gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjA2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5oOiBhZGRlZCBhIG5leHRfcnVuCisKKyB0aW1lc3RhbXAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjA1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOiBhY3R1YWxseSBzZW5kIGEKKworIG5vdGlmaWNhdGlvbiB3aXRoIHRoZSByZXN1bHRzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIwNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzogbWFrZSB0aGUgd2FsayBvbiB0aGUKKworIHRlc3Qgb2JqZWN0IGZ1bmN0aW9uLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjAzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOiBjcmVhdGUgYSBtYXggcGFja2V0IHNpemUKKworIGNvbmZpZyB0b2tlbiBhbmQgcGFyc2UgaXQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjAyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5oOiBtaW5pbWFsIHN0YXJ0aW5nIHRlc3QKKworIG9iamVjdCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5Lmg6IGFkZGVkIGEgZnVuY3Rpb24gdG8KKworIGNhbGN1bGF0ZSB0aGUgdGltZSB1bnRpbCB0aGUgbmV4dCBydW4gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjAwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOiByZW1vdmUgbGVmdCBpbiB0ZW1wbGF0ZQorCisgbGluZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxOTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5Lmg6IHVzZSBhbiBhbGFybSBjYWxsYmFjaworCisgcHJvdG90eXBlIGZvciBleGVjdXRlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE5OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaDogYmVnaW5uaW5nIHRlbXBsYXRlIGNvZGUKKworIGZvciBkZWxpdmVyeSBvZiBkYXRhIGJ5IG5vdGlmaWNhdGlvbnMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTk3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvc25tcF9hZ2VudC5jOiBSZWR1Y2UgdmFyaWFibGUgc2NvcGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxOTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6IFJlZHVjZSB2YXJpYWJsZSBzY29wZXMgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxOTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxOTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHdpbjMyL2xpYnNubXAvbGlic25tcC52Y3Byb2osIHdpbjMyL3dpbjMyLnNsbjogQWRkZWQgVmlzdWFsIFN0dWRpbworCisgMjAwNSBwcm9qZWN0IGFuZCBzb2x1dGlvbiBmaWxlIGZvciBidWlsZGluZyB0aGUgTmV0LVNOTVAgbGlicmFyeSBhcworIGEgc3RhdGljIGxpYnJhcnkuIEJvdGggdGhlIFdpbjMyIGFuZCB0aGUgeDY0IGNvbmZpZ3VyYXRpb25zIGFyZQorIGluY2x1ZGVkLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTkzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgd2luMzIvZW5jb2RlX2tleWNoYW5nZS9lbmNvZGVfa2V5Y2hhbmdlLnZjcHJvaiwgCisgICAgICB3aW4zMi9saWJhZ2VudC9saWJhZ2VudC52Y3Byb2osIAorICAgICAgd2luMzIvbGlibmV0c25tcHRyYXBkL2xpYm5ldHNubXB0cmFwZC52Y3Byb2osIAorICAgICAgd2luMzIvbGlic25tcF9kbGwvbGlic25tcF9kbGwudmNwcm9qLCAKKyAgICAgIHdpbjMyL25ldHNubXBtaWJzL25ldHNubXBtaWJzLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wYnVsa2dldC9zbm1wYnVsa2dldC52Y3Byb2osIAorICAgICAgd2luMzIvc25tcGJ1bGt3YWxrL3NubXBidWxrd2Fsay52Y3Byb2osIHdpbjMyL3NubXBkL3NubXBkLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wZGVsdGEvc25tcGRlbHRhLnZjcHJvaiwgd2luMzIvc25tcGRmL3NubXBkZi52Y3Byb2osIAorICAgICAgd2luMzIvc25tcGdldC9zbm1wZ2V0LnZjcHJvaiwKKyAgICAgIHdpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wbmV0c3RhdC9zbm1wbmV0c3RhdC52Y3Byb2osCisgICAgICB3aW4zMi9zbm1wc2V0L3NubXBzZXQudmNwcm9qLCAgd2luMzIvc25tcHN0YXR1cy9zbm1wc3RhdHVzLnZjcHJvaiwKKyAgICAgICB3aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLnZjcHJvaiwgd2luMzIvc25tcHRlc3Qvc25tcHRlc3QudmNwcm9qLAorICAgICAgIHdpbjMyL3NubXB0cmFuc2xhdGUvc25tcHRyYW5zbGF0ZS52Y3Byb2osIAorICAgICAgd2luMzIvc25tcHRyYXAvc25tcHRyYXAudmNwcm9qLCB3aW4zMi9zbm1wdHJhcGQvc25tcHRyYXBkLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wdXNtL3NubXB1c20udmNwcm9qLCB3aW4zMi9zbm1wdmFjbS9zbm1wdmFjbS52Y3Byb2osIAorICAgICAgd2luMzIvc25tcHdhbGsvc25tcHdhbGsudmNwcm9qOiBNb3JlIFZpc3VhbCBTdHVkaW8gMjAwNSBwcm9qZWN0CisgICAgICBmaWxlCisKKyBjbGVhbnVwLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTkxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgd2luMzIvZW5jb2RlX2tleWNoYW5nZS9lbmNvZGVfa2V5Y2hhbmdlLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wYnVsa2dldC9zbm1wYnVsa2dldC52Y3Byb2osIAorICAgICAgd2luMzIvc25tcGJ1bGt3YWxrL3NubXBidWxrd2Fsay52Y3Byb2osIHdpbjMyL3NubXBkL3NubXBkLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wZGVsdGEvc25tcGRlbHRhLnZjcHJvaiwgd2luMzIvc25tcGRmL3NubXBkZi52Y3Byb2osIAorICAgICAgd2luMzIvc25tcGdldC9zbm1wZ2V0LnZjcHJvaiwKKyAgICAgIHdpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wbmV0c3RhdC9zbm1wbmV0c3RhdC52Y3Byb2osCisgICAgICB3aW4zMi9zbm1wc2V0L3NubXBzZXQudmNwcm9qLCAgd2luMzIvc25tcHN0YXR1cy9zbm1wc3RhdHVzLnZjcHJvaiwKKyAgICAgICB3aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLnZjcHJvaiwgd2luMzIvc25tcHRlc3Qvc25tcHRlc3QudmNwcm9qLAorICAgICAgIHdpbjMyL3NubXB0cmFuc2xhdGUvc25tcHRyYW5zbGF0ZS52Y3Byb2osIAorICAgICAgd2luMzIvc25tcHRyYXAvc25tcHRyYXAudmNwcm9qLCB3aW4zMi9zbm1wdHJhcGQvc25tcHRyYXBkLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wdXNtL3NubXB1c20udmNwcm9qLCB3aW4zMi9zbm1wdmFjbS9zbm1wdmFjbS52Y3Byb2osIAorICAgICAgd2luMzIvc25tcHdhbGsvc25tcHdhbGsudmNwcm9qOiBDbGVhbmVkIHVwIFdpbjMyIFZTMjAwNSBwcm9qZWN0CisKKyBmaWxlcyAtIHJlbW92ZWQgc3VwZXJmbHVvdXMgbGlicmFyeSByZWZlcmVuY2VzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTg5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgd2luMzIvZW5jb2RlX2tleWNoYW5nZS9lbmNvZGVfa2V5Y2hhbmdlLnZjcHJvaiwgCisgICAgICB3aW4zMi9saWJhZ2VudC9saWJhZ2VudC52Y3Byb2osIAorICAgICAgd2luMzIvbGlibmV0c25tcHRyYXBkL2xpYm5ldHNubXB0cmFwZC52Y3Byb2osIAorICAgICAgd2luMzIvbGlic25tcF9kbGwvbGlic25tcF9kbGwudmNwcm9qLCAKKyAgICAgIHdpbjMyL25ldHNubXBtaWJzL25ldHNubXBtaWJzLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wYnVsa2dldC9zbm1wYnVsa2dldC52Y3Byb2osIAorICAgICAgd2luMzIvc25tcGJ1bGt3YWxrL3NubXBidWxrd2Fsay52Y3Byb2osIHdpbjMyL3NubXBkL3NubXBkLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wZGVsdGEvc25tcGRlbHRhLnZjcHJvaiwgd2luMzIvc25tcGRmL3NubXBkZi52Y3Byb2osIAorICAgICAgd2luMzIvc25tcGdldC9zbm1wZ2V0LnZjcHJvaiwKKyAgICAgIHdpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wbmV0c3RhdC9zbm1wbmV0c3RhdC52Y3Byb2osCisgICAgICB3aW4zMi9zbm1wc2V0L3NubXBzZXQudmNwcm9qLCAgd2luMzIvc25tcHN0YXR1cy9zbm1wc3RhdHVzLnZjcHJvaiwKKyAgICAgICB3aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLnZjcHJvaiwgd2luMzIvc25tcHRlc3Qvc25tcHRlc3QudmNwcm9qLAorICAgICAgIHdpbjMyL3NubXB0cmFuc2xhdGUvc25tcHRyYW5zbGF0ZS52Y3Byb2osIAorICAgICAgd2luMzIvc25tcHRyYXAvc25tcHRyYXAudmNwcm9qLCB3aW4zMi9zbm1wdHJhcGQvc25tcHRyYXBkLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wdXNtL3NubXB1c20udmNwcm9qLCB3aW4zMi9zbm1wdmFjbS9zbm1wdmFjbS52Y3Byb2osIAorICAgICAgd2luMzIvc25tcHdhbGsvc25tcHdhbGsudmNwcm9qLCB3aW4zMi93aW4zMmRsbC5zbG46IEFkZGVkIHg2NAorCisgY29uZmlndXJhdGlvbnMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxODggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTggIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICB3aW4zMi9lbmNvZGVfa2V5Y2hhbmdlL2VuY29kZV9rZXljaGFuZ2UudmNwcm9qLCAKKyAgICAgIHdpbjMyL2xpYmFnZW50L2xpYmFnZW50LnZjcHJvaiwgCisgICAgICB3aW4zMi9saWJuZXRzbm1wdHJhcGQvbGlibmV0c25tcHRyYXBkLnZjcHJvaiwgCisgICAgICB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC52Y3Byb2osIAorICAgICAgd2luMzIvbmV0c25tcG1pYnMvbmV0c25tcG1pYnMudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBidWxrZ2V0L3NubXBidWxrZ2V0LnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wYnVsa3dhbGsvc25tcGJ1bGt3YWxrLnZjcHJvaiwgd2luMzIvc25tcGQvc25tcGQudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBkZWx0YS9zbm1wZGVsdGEudmNwcm9qLCB3aW4zMi9zbm1wZGYvc25tcGRmLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wZ2V0L3NubXBnZXQudmNwcm9qLAorICAgICAgd2luMzIvc25tcGdldG5leHQvc25tcGdldG5leHQudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBuZXRzdGF0L3NubXBuZXRzdGF0LnZjcHJvaiwKKyAgICAgIHdpbjMyL3NubXBzZXQvc25tcHNldC52Y3Byb2osICB3aW4zMi9zbm1wc3RhdHVzL3NubXBzdGF0dXMudmNwcm9qLAorICAgICAgIHdpbjMyL3NubXB0YWJsZS9zbm1wdGFibGUudmNwcm9qLCB3aW4zMi9zbm1wdGVzdC9zbm1wdGVzdC52Y3Byb2osCisgICAgICAgd2luMzIvc25tcHRyYW5zbGF0ZS9zbm1wdHJhbnNsYXRlLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC52Y3Byb2osIHdpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXB1c20vc25tcHVzbS52Y3Byb2osIHdpbjMyL3NubXB2YWNtL3NubXB2YWNtLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wd2Fsay9zbm1wd2Fsay52Y3Byb2osIHdpbjMyL3dpbjMyZGxsLnNsbjogQWRkZWQKKworIHdpbjMyZGxsLXJlbGF0ZWQgVmlzdWFsIFN0dWRpbyAyMDA1IHByb2plY3QgYW5kIHNvbHV0aW9uIGZpbGVzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTg2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg6IFdpbjMyIERMTCBidWlsZCBmaXhlcy4gCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE4NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNyAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBVRFBEb21haW4uYzogQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDMxNzU2NDA6IFVzZQorCisgSVBfUkVDVkRTVEFERFIgc29ja29wdCB3aGVyZSBhdmFpbGFibGUgKCpCU0QpIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxODMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTcgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5jOiBDSEFOR0VTOiBzbm1wZDoKKyAgICAgIFBBVENIRVM6CisKKyAzMTc1NjQwOiBVc2UgSVBfUkVDVkRTVEFERFIgc29ja29wdCB3aGVyZSBhdmFpbGFibGUgKCpCU0QpIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxODMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTcgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5jOiBDSEFOR0VTOiBzbm1wZDoKKyAgICAgIFBBVENIRVM6CisKKyAzMTc1NjQwOiBVc2UgSVBfUkVDVkRTVEFERFIgc29ja29wdCB3aGVyZSBhdmFpbGFibGUgKCpCU0QpIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE4MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6IENIQU5HRVM6IHNubXBsaWI6IFBBVENIRVM6IDMxODMwMDA6IEZpeAorCisgY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRCBwcmVmaXggbGVuZ3RoIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6CisgMzE4Mjk4NTogRml4IGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQgcHJlZml4IGxlbmd0aCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTgyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzogQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzE4MzAwMDogRml4CisKKyBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGggQ0hBTkdFUzogc25tcGxpYjogQlVHUzoKKyAzMTgyOTg1OiBGaXggY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRCBwcmVmaXggbGVuZ3RoIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxODIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTUgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOiBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSEVTOiAzMTgzMDAwOiBGaXgKKworIGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQgcHJlZml4IGxlbmd0aCBDSEFOR0VTOiBzbm1wbGliOiBCVUdTOgorIDMxODI5ODU6IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE4MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6IENIQU5HRVM6IHNubXBsaWI6IFBBVENIRVM6IDMxODMwMDA6IEZpeAorCisgY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRCBwcmVmaXggbGVuZ3RoIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6CisgMzE4Mjk4NTogRml4IGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQgcHJlZml4IGxlbmd0aCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTgyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzogQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzE4MzAwMDogRml4CisKKyBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGggQ0hBTkdFUzogc25tcGxpYjogQlVHUzoKKyAzMTgyOTg1OiBGaXggY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRCBwcmVmaXggbGVuZ3RoIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE4MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmMsIGFwcHMvc25tcHRyYXBkX2RzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oLCBtYW4vc25tcGQuY29uZi41LmRlZjogQ0hBTkdFUzoKKworIExpbnV4OiBQQVRDSEVTOiAzMjA1ODExOiBPcHRpb24gdG8gc2tpcCBmZC9sb29wL3JhbSBkZXZpY2VzIGluCisgZGlza0lPVGFibGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE4MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmMsIGFwcHMvc25tcHRyYXBkX2RzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oLCBtYW4vc25tcGQuY29uZi41LmRlZjogQ0hBTkdFUzoKKworIExpbnV4OiBQQVRDSEVTOiAzMjA1ODExOiBPcHRpb24gdG8gc2tpcCBmZC9sb29wL3JhbSBkZXZpY2VzIGluCisgZGlza0lPVGFibGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTgxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6IENIQU5HRVM6IHB5dGhvbjogUEFUQ0hFUzogMzE4NTA4NToKKworIEZpeCBzZWdmYXVsdCBvbiA2NC1iaXQgc3lzdGVtcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTgwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6IENIQU5HRVM6IHB5dGhvbjogUEFUQ0hFUzogMzE4NTA4NToKKworIEZpeCBzZWdmYXVsdCBvbiA2NC1iaXQgc3lzdGVtcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTgwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6IENIQU5HRVM6IHB5dGhvbjogUEFUQ0hFUzogMzE4NTA4NToKKworIEZpeCBzZWdmYXVsdCBvbiA2NC1iaXQgc3lzdGVtcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTgwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6IENIQU5HRVM6IHB5dGhvbjogUEFUQ0hFUzogMzE4NTA4NToKKworIEZpeCBzZWdmYXVsdCBvbiA2NC1iaXQgc3lzdGVtcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxODAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmM6IENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMTc1MzIzOiBGaXggaGFuZGxpbmcgb2YKKworICd3aGlsZSAoZmFsc2UpJyBibG9ja3MgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDE3OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYzogQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMxNzUzMjM6IEZpeCBoYW5kbGluZyBvZgorCisgJ3doaWxlIChmYWxzZSknIGJsb2NrcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTc5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjOiBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzE3NTMyMzogRml4IGhhbmRsaW5nIG9mCisKKyAnd2hpbGUgKGZhbHNlKScgYmxvY2tzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmM6IENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMTc1MzIzOiBGaXggaGFuZGxpbmcgb2YKKworICd3aGlsZSAoZmFsc2UpJyBibG9ja3MgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE3OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYzogQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMxNzUzMjM6IEZpeCBoYW5kbGluZyBvZgorCisgJ3doaWxlIChmYWxzZSknIGJsb2NrcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmM6IENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMjA0ODgzOiBGaXggaGFuZGxpbmcgb2YKKworIG5vbi10YWJsZSBvYmplY3RzIG5hbWVkIGZvb1RhYmxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxNzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmM6IENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMjA0ODgzOiBGaXggaGFuZGxpbmcgb2YKKworIG5vbi10YWJsZSBvYmplY3RzIG5hbWVkIGZvb1RhYmxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxNzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmM6IENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMjA0ODgzOiBGaXggaGFuZGxpbmcgb2YKKworIG5vbi10YWJsZSBvYmplY3RzIG5hbWVkIGZvb1RhYmxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmM6IENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMjA0ODgzOiBGaXggaGFuZGxpbmcgb2YKKworIG5vbi10YWJsZSBvYmplY3RzIG5hbWVkIGZvb1RhYmxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmM6IENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMjA0ODgzOiBGaXggaGFuZGxpbmcgb2YKKworIG5vbi10YWJsZSBvYmplY3RzIG5hbWVkIGZvb1RhYmxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYzogQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMTE0ODQ6IFN1cHBvcnQKKworIGVudW1lcmF0aW9ucyBpbiBub3RpZmljYXRpb24gdmFyYmluZHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDE3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYzogQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMTE0ODQ6IFN1cHBvcnQKKworIGVudW1lcmF0aW9ucyBpbiBub3RpZmljYXRpb24gdmFyYmluZHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDE3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYzogQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMTE0ODQ6IFN1cHBvcnQKKworIGVudW1lcmF0aW9ucyBpbiBub3RpZmljYXRpb24gdmFyYmluZHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYzogQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMTE0ODQ6IFN1cHBvcnQKKworIGVudW1lcmF0aW9ucyBpbiBub3RpZmljYXRpb24gdmFyYmluZHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYzogQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMTE0ODQ6IFN1cHBvcnQKKworIGVudW1lcmF0aW9ucyBpbiBub3RpZmljYXRpb24gdmFyYmluZHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTEyICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtaWJzL1VDRC1TTk1QLU1JQi50eHQ6IEFkZCBtaXNzaW5nIHN5c3RlbSBvaWRzIHRvIG1pYiBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTIgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1pYnMvVUNELVNOTVAtTUlCLnR4dDogQWRkIG1pc3Npbmcgc3lzdGVtIG9pZHMgdG8gbWliIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDE3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xMiAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWlicy9VQ0QtU05NUC1NSUIudHh0OiBBZGQgbWlzc2luZyBzeXN0ZW0gb2lkcyB0byBtaWIgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTEyICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtaWJzL1VDRC1TTk1QLU1JQi50eHQ6IEFkZCBtaXNzaW5nIHN5c3RlbSBvaWRzIHRvIG1pYiBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTIgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1pYnMvVUNELVNOTVAtTUlCLnR4dDogQWRkIG1pc3Npbmcgc3lzdGVtIG9pZHMgdG8gbWliIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTEyICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhcHBzL3NubXB0YWJsZS5jOiBGaXggZm9yIGdhcmJhZ2Ugb3V0cHV0IHdoZW4gYWdlbnQgcHJlc2VudHMgbW9yZQorCisgY29sdW1ucyBpbiBidWxrIHJlc3BvbnNlIHRoYW4gb3VyIGxvY2FsIE1JQiBmaWxlICBzcGVjaWZpZWQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTEyICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhcHBzL3NubXB0YWJsZS5jOiBGaXggZm9yIGdhcmJhZ2Ugb3V0cHV0IHdoZW4gYWdlbnQgcHJlc2VudHMgbW9yZQorCisgY29sdW1ucyBpbiBidWxrIHJlc3BvbnNlIHRoYW4gb3VyIGxvY2FsIE1JQiBmaWxlICBzcGVjaWZpZWQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTEyICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhcHBzL3NubXB0YWJsZS5jOiBGaXggZm9yIGdhcmJhZ2Ugb3V0cHV0IHdoZW4gYWdlbnQgcHJlc2VudHMgbW9yZQorCisgY29sdW1ucyBpbiBidWxrIHJlc3BvbnNlIHRoYW4gb3VyIGxvY2FsIE1JQiBmaWxlICBzcGVjaWZpZWQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTEyICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhcHBzL3NubXB0YWJsZS5jOiBGaXggZm9yIGdhcmJhZ2Ugb3V0cHV0IHdoZW4gYWdlbnQgcHJlc2VudHMgbW9yZQorCisgY29sdW1ucyBpbiBidWxrIHJlc3BvbnNlIHRoYW4gb3VyIGxvY2FsIE1JQiBmaWxlICBzcGVjaWZpZWQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTEyICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhcHBzL3NubXB0YWJsZS5jOiBGaXggZm9yIGdhcmJhZ2Ugb3V0cHV0IHdoZW4gYWdlbnQgcHJlc2VudHMgbW9yZQorCisgY29sdW1ucyBpbiBidWxrIHJlc3BvbnNlIHRoYW4gb3VyIGxvY2FsIE1JQiBmaWxlICBzcGVjaWZpZWQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTIgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wdHJhcGQuOC5kZWY6IEZpeCB3cm9uZyBuYW1lIGZvciBjb25maWcgdG9rZW4KKworICdkb05vdFJldGFpbk5vdGlmaWNhdGlvbkxvZ3MnIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTIgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wdHJhcGQuOC5kZWY6IEZpeCB3cm9uZyBuYW1lIGZvciBjb25maWcgdG9rZW4KKworICdkb05vdFJldGFpbk5vdGlmaWNhdGlvbkxvZ3MnIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTIgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wdHJhcGQuOC5kZWY6IEZpeCB3cm9uZyBuYW1lIGZvciBjb25maWcgdG9rZW4KKworICdkb05vdFJldGFpbk5vdGlmaWNhdGlvbkxvZ3MnIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTIgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wdHJhcGQuOC5kZWY6IEZpeCB3cm9uZyBuYW1lIGZvciBjb25maWcgdG9rZW4KKworICdkb05vdFJldGFpbk5vdGlmaWNhdGlvbkxvZ3MnIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTIgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wdHJhcGQuOC5kZWY6IEZpeCB3cm9uZyBuYW1lIGZvciBjb25maWcgdG9rZW4KKworICdkb05vdFJldGFpbk5vdGlmaWNhdGlvbkxvZ3MnIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0wOSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5jOiBSZW1vdmUgYm9ndXMKKworIChMaW51eCkgZGVmaW5lcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTczIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTA5ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmM6IFJlbW92ZSBib2d1cworCisgKExpbnV4KSBkZWZpbmVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMDkgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QuYzogUmVtb3ZlIGJvZ3VzCisKKyAoTGludXgpIGRlZmluZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTczIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTA5ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi9zbm1wLXRjLmM6IEhBVkVfVE1fVE1fR01UT0ZGIGlzIEhBVkVfU1RSVUNUX1RNX1RNX0dNVE9GRgorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTcyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTA5ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi9zbm1wLXRjLmM6IEhBVkVfVE1fVE1fR01UT0ZGIGlzIEhBVkVfU1RSVUNUX1RNX1RNX0dNVE9GRgorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTcyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTA5ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi9zbm1wLXRjLmM6IEhBVkVfVE1fVE1fR01UT0ZGIGlzIEhBVkVfU1RSVUNUX1RNX1RNX0dNVE9GRgorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMDkgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuaCwgY29uZmlndXJlLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IEJpbGwgRmVubmVycyBwYXRjaCB0byBtYWtlCisKKyBESVNNQU4gUElORyBhbmQgVFJBQ0VST1VURSBNSUJTIGNvbXBpbGUgdW5kZXIgTGludXggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTcxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTA5ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5jLCBhZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmM6IFNvbGFyaXMgc3VwcG9ydCBmb3IKKworIFNDVFAtTUlCIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMDkgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmMsIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFycy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIuYzogU29sYXJpcyBzdXBwb3J0IGZvcgorCisgU0NUUC1NSUIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0wOSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYywgYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5jOiBTb2xhcmlzIHN1cHBvcnQgZm9yCisKKyBTQ1RQLU1JQiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMDkgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcC10Yy5jOiBUWiBpcyBvbmUgaG91ciBvZmYgaWYgSEFWRV9UTV9UTV9HTVRPRkYgYW5kCisKKyBTWVNWIChzdWNoIGlzIExpbnV4KSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTY5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTA5ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXAtdGMuYzogVFogaXMgb25lIGhvdXIgb2ZmIGlmIEhBVkVfVE1fVE1fR01UT0ZGIGFuZAorCisgU1lTViAoc3VjaCBpcyBMaW51eCkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE2OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0wOSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wLXRjLmM6IFRaIGlzIG9uZSBob3VyIG9mZiBpZiBIQVZFX1RNX1RNX0dNVE9GRiBhbmQKKworIFNZU1YgKHN1Y2ggaXMgTGludXgpIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE2OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0wMSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOiBDSEFOR0VTOiBzbm1wbGliOiBkdGxzOgorCisgb3ZlcmhhdWwgb2YgZGVidWcgICAtIGRyYXN0aWMgcmVkdWN0aW9uIGluIG51bWJlciBvZiBtZXNzYWdlcyBhbmQgbXNnIGNvbXBsZXhpdHkgICAgIGZvciBiYXNpYyBkdGxzdWRwIHRva2VuICAgLSBwcmV2aW91cyBsZXZlbCBvZiBkZXRhaWwgYXZhaWxhYmxlIGJ5IGFkZGluZyA5OmR0bHNkdXAgdG9rZW4gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE2OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0wMSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOiBDSEFOR0VTOiBzbm1wbGliOiBkdGxzOgorCisgb3ZlcmhhdWwgb2YgZGVidWcgICAtIGRyYXN0aWMgcmVkdWN0aW9uIGluIG51bWJlciBvZiBtZXNzYWdlcyBhbmQgbXNnIGNvbXBsZXhpdHkgICAgIGZvciBiYXNpYyBkdGxzdWRwIHRva2VuICAgLSBwcmV2aW91cyBsZXZlbCBvZiBkZXRhaWwgYXZhaWxhYmxlIGJ5IGFkZGluZyA5OmR0bHNkdXAgdG9rZW4gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTY4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTAxICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmM6IENIQU5HRVM6IHNubXBsaWI6IGR0bHM6CisKKyBjbGVhbiB1cCBjbG9zZTsgY2F0Y2ggJ2Nvbm5lY3QnLydkaXNjb25uZWN0JyAgIGNvbm5lY3QgPSB3ZSBnZXQgc3VjY2Vzc2Z1bGx5IGRlY29kZWQgc25tcCBkYXRhICAgZGlzY29ubmVjdCA9IDAgYnl0ZSByZWFkLCBzc2ggc2h1dGRvd24gZmxhZyBzZXQgICBhZGQgYmlvX2NhY2hlIGZsYWdzIGZvciBjb25uZWN0ZWQvZGlzY29ubmVjdGVkICAgY2hlY2sgZm9yIG51bGwgcHRyIGJlZm9yZSBkZXJlZmVyZW5jaW5nICAgY2xvc2UgaGFuZGxpbmc6ICAgLSAgb25seSBzZW5kIHF1ZXVlZCBkYXRhIGlmIHdlIGdvdCB0byBjb25uZWN0ZWQgc3RhdGUgICAtICBzZXJpb3VzbHkgcmVkdWNlIHRpbWVvdXQgdG8gd2FpdCBmb3IganVuayByZWFkLiBpIHRoaW5rICAgICAgd2Ugc2hvdWxkbid0IGV2ZW4gYm90aGVyICAgLSByZXR1cm4gZWFybHkgaWYgY2FjaGVwIGlzIE5VTEwsIHNvIHdlIGRvbid0IGhhdmUgdG8gdGVzdCBpdCAgICAgcmVwZWF0ZWRseSAgIC0gdXNlIGNvcnJlY3QgbmZkcyB2YWx1ZSBpbiBzZWxlY3QgY2FsbCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTY3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTAxICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmM6IENIQU5HRVM6IHNubXBsaWI6IGR0bHM6CisKKyBjbGVhbiB1cCBjbG9zZTsgY2F0Y2ggJ2Nvbm5lY3QnLydkaXNjb25uZWN0JyAgIGNvbm5lY3QgPSB3ZSBnZXQgc3VjY2Vzc2Z1bGx5IGRlY29kZWQgc25tcCBkYXRhICAgZGlzY29ubmVjdCA9IDAgYnl0ZSByZWFkLCBzc2ggc2h1dGRvd24gZmxhZyBzZXQgICBhZGQgYmlvX2NhY2hlIGZsYWdzIGZvciBjb25uZWN0ZWQvZGlzY29ubmVjdGVkICAgY2hlY2sgZm9yIG51bGwgcHRyIGJlZm9yZSBkZXJlZmVyZW5jaW5nICAgY2xvc2UgaGFuZGxpbmc6ICAgLSAgb25seSBzZW5kIHF1ZXVlZCBkYXRhIGlmIHdlIGdvdCB0byBjb25uZWN0ZWQgc3RhdGUgICAtICBzZXJpb3VzbHkgcmVkdWNlIHRpbWVvdXQgdG8gd2FpdCBmb3IganVuayByZWFkLiBpIHRoaW5rICAgICAgd2Ugc2hvdWxkbid0IGV2ZW4gYm90aGVyICAgLSByZXR1cm4gZWFybHkgaWYgY2FjaGVwIGlzIE5VTEwsIHNvIHdlIGRvbid0IGhhdmUgdG8gdGVzdCBpdCAgICAgcmVwZWF0ZWRseSAgIC0gdXNlIGNvcnJlY3QgbmZkcyB2YWx1ZSBpbiBzZWxlY3QgY2FsbCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNjcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMzEgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzogbWFrZSB0cnVuayBhbmQKKworIHY1LTYtcGF0Y2hlcyBjbG9zZWx5IGFsaWduZWQgICBtb3N0bHkgY2hhbmdlcyBpbiBkZWJ1ZywgY29va2llIHRyYWNraW5nIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNjYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMzEgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzogbWFrZSB0cnVuayBhbmQKKworIHY1LTYtcGF0Y2hlcyBjbG9zZWx5IGFsaWduZWQgICBtb3N0bHkgY2hhbmdlcyBpbiBkZWJ1ZywgY29va2llIHRyYWNraW5nIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE2NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0zMSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOiBhZGQgY29va2llIGhhbmRsaW5nOworCisgcmVtb3ZlIGlmZGVmJ2QgY29kZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTY1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTI3ICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmM6IFNpbXBsaWZ5IGFycmF5IHJlc2l6aW5nIHNvbWV3aGF0CisKKyBmdXJ0aGVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE2NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0yNyAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jOiBEbyBub3QgYXNzaWduIG5ld19kYXRhIGlmIHRoZQorCisgdmFsdWUgd29uJ3QgYmUgdXNlZC4gIFJlZHVjZSB2YXJpYWJsZSBzY29wZXMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMjcgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYzogSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjbGVhciBhCisKKyBjaHVuayBvZiBtZW1vcnkgaWYgdGhlIG5leHQgYWN0aW9uIG9uIGl0IGlzIHRvIGZpbGwgaXQgc28gdXNlIG1hbGxvYworIGluc3RlYWQgb2YgY2FsbG9jLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTYyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTI3ICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmM6IENvbnRhaW5lckJpbmFyeUFycmF5IHJlYWxseQorCisgY2FuJ3QgaG9sZCBhbnl0aG5nIGJ1dCBwb2ludGVycyBhbmQgdGhhdCBtZWFucyB0aGUgZGF0YV9zaXplIGZpZWxkCisgaXMgdW5uZWNlc3Nhcnkgc28gSSByZW1vdmVkIGl0LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTYxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTI2ICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9od19tZW0uYywgCisgICAgICBhZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYywgYXBwcy9zbm1wdHJhcGQuYywgCisgICAgICBzbm1wbGliL2ludDY0LmMsIHNubXBsaWIvc25tcF9vcGVuc3NsLmMsIHNubXBsaWIvc25tcF9zZWNtb2QuYywgCisgICAgICBzbm1wbGliL3NubXB2My5jOiBBZGQgbWlzc2luZyBpbmNsdWRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTYwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTI2ICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmM6IFVzZSB0aGUgcmlnaHQgZmVhdHVyZQorCisgbWFjcm8gaW4gb3JkZXIgdG8gbWFrZSBidWlsZHMgd2l0aCAtLWVuYWJsZS1pcHY2CisgLS13aXRoLW91dC10cmFuc3BvcnRzPVVEUElQdjYgc3VjY2VlZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE1OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0yNiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOiBSZW1vdmUgZHVwbGljYXRlIGNvcGllcyBvZgorCisgZnVuY3Rpb25zIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0yNSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL25ldC1zbm1wLWNlcnQ6IHR3ZWFrIGRlYnVnIG1lc3NhZ2UgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMjUgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYzogQ0hBTkdFUzogc25tcGxpYjogdXBkYXRlCisKKyBjZXJ0IHRva2VuIGhhbmRsaW5nICAtIHJlbW92ZSBkZWZYNTA5IGNlcnQgdG9rZW5zIChzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgYmVmb3JlIDUuNikgIC0gd2FybmluZ3MgZm9yIG91ci90aGVpciB0b2tlbnMsIHJlY29tbWVuZCB1c2luZyBsb2NhbC9wZWVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE1NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0yNSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYzogbWVyZ2UgbmV0c25tcF9kdGxzdWRwNgorICAgICAgaW50bworCisgbmV0c25tcF9kdGxzdWRwICAgIHVzZSBhZGRyIHNpemUgdG8gdGVsbCB0aGVtIGFwYXJ0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE1NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0yNSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF90cmFuc3BvcnQuYzogbG9nIChvbmNlKSB3YXJuaW5nIHdoZW4gZGVwcmVjYXRlZAorCisgZl9jcmVhdGVfZnJvbV90c3RyaW5nIHRyYW5zcG9ydCBmdW5jdGlvbiB1c2VkIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE1NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0yNSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVENQRG9tYWluLmM6IHJlZHVjZSBjYXN0aW5nOyBtYWtlIHN1cmUgdG8KKworIGZyZWUgdGhlIHJpZ2h0IHBvaW50ZXIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTUzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTI1ICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmM6IHJlZHVjZSBjYXN0aW5nIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTI0ICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYzogUmVwbGFjZSBhIHZhcmlhYmxlIHdpdGggYQorCisgY29uc3RhbnQuIE1ha2Ugb25lIG1vcmUgb2lkIGNvbnN0LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTUxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE4ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENIQU5HRVM6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE0NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xOCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDaGFuZ2VMb2c6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE0NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xOCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwgCisgICAgICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuZGVwZW5kLCAKKyAgICAgIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kOiBtYWtlIGRlcGVuZCBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTggIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIG1hbi9uZXRzbm1wX2FjY2Vzc19tdWx0aXBsZXhlci4zLCBtYW4vbmV0c25tcF9hZ2VudC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X2hhbmRsZXIuaC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywgCisgICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLjMsIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsIAorICAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgCisgICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsIAorICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsIAorICAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbnVsbF9jb250YWluZXIuMywgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsIAorICAgICAgbWFuL25ldHNubXBfb2xkX2FwaS4zLCBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgCisgICAgICBtYW4vbmV0c25tcF9zY2FsYXIuMywgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsIAorICAgICAgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCBtYW4vbmV0c25tcF90YWJsZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCBtYW4vbmV0c25tcF90YWJsZV9yb3cuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsIAorICAgICAgbWFuL25ldHNubXBfdG9vbHMuaC4zLCBtYW4vbmV0c25tcF91dGlsLjMsCisgICAgICBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywKKyAgICAgIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzogZG9jdW1lbnRhdGlvbgorCisgdXBkYXRlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTggIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTcgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wZGVsdGEuMS5kZWY6IEZvcm1hdHRpbmcgYm90Y2ggZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTQyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE3ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtYW4vc25tcGRlbHRhLjEuZGVmOiBGb3JtYXR0aW5nIGJvdGNoIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTQyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE3ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtaWJzL01ha2VmaWxlLmluOiBJbnN0YWxsIHJlcXVpcmVkIG1pYnMgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE3ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtaWJzL01ha2VmaWxlLmluOiBJbnN0YWxsIHJlcXVpcmVkIG1pYnMgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTcgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1pYnMvcmZjbGlzdDogTmV3IFJGQyBtaWJzIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE0MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNyAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWlicy9yZmNsaXN0OiBOZXcgUkZDIG1pYnMgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTUgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ0hBTkdFUywgTkVXUzogdmVyc2lvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTM4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENoYW5nZUxvZzogdmVyc2lvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTM3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9NYWtlZmlsZS5kZXBlbmQsIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCwgYXBwcy9NYWtlZmlsZS5kZXBlbmQsIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQsIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kOiBtYWtlCisKKyBkZXBlbmQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDEzNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkaXN0L25ldC1zbm1wLnNwZWMsIAorICAgICAgcGVybC9BU04vQVNOLnBtLCBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLCBwZXJsL09JRC9PSUQucG0sIAorICAgICAgcGVybC9TTk1QL1NOTVAucG0sIHBlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci5wbSwgCisgICAgICBwZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbSwgcGVybC9hZ2VudC9hZ2VudC5wbSwgCisgICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwgCisgICAgICBwZXJsL2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzoKKyAgICAgIFZlcnNpb24KKworIG51bWJlciB1cGRhdGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDEzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBNYWtlZmlsZS50b3A6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDEzNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvY2VydF91dGlsLmM6IFNwZWxsaW5nIGZpeDogcmVnaW5lcmF0ZWQgLT4gcmVnZW5lcmF0ZWQuIAorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTMzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi9jZXJ0X3V0aWwuYzogU3BlbGxpbmcgZml4OiByZWdpbmVyYXRlZCAtPiByZWdlbmVyYXRlZC4gCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDEzMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvY2VydF91dGlsLmM6IFNpbXBsaWZpZWQgcjE5NTk0IChsZWFrLWF0LWV4aXQgZml4KS4gCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDEzMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX29wZW5zc2wuYzogRml4ZWQgYSBjb21waWxlciB3YXJuaW5nIHRoYXQgd2FzCisKKyBpbnRyb2R1Y2VkIGluIHIyMDExMy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9vcGVuc3NsLmM6IEZpeGVkIGEgY29tcGlsZXIgd2FybmluZyB0aGF0IHdhcworCisgaW50cm9kdWNlZCBpbiByMjAxMTMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxMzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ0hBTkdFUywgTkVXUzogdmVyc2lvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTI4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENoYW5nZUxvZzogdmVyc2lvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTI3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9NYWtlZmlsZS5kZXBlbmQsIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCwgYXBwcy9NYWtlZmlsZS5kZXBlbmQsIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQsIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kOiBtYWtlCisKKyBkZXBlbmQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDEyNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgbWFuL25ldHNubXBfYWdlbnQuMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsIAorICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgCisgICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2RhdGFfbGlzdC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgCisgICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsIAorICAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywgCisgICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCBtYW4vbmV0c25tcF9vbGRfYXBpLjMsIAorICAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsIAorICAgICAgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIG1hbi9uZXRzbm1wX3NjYWxhci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCBtYW4vbmV0c25tcF9zZXJpYWxpemUuMywgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCBtYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMywgCisgICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGUuMywgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCBtYW4vbmV0c25tcF91dGlsLjMsCisgICAgICAgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgCisgICAgICBtYW4vbmV0c25tcF93YXRjaGVyLjM6IGRvY3VtZW50YXRpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDEyNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkaXN0L25ldC1zbm1wLnNwZWMsIAorICAgICAgcGVybC9BU04vQVNOLnBtLCBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLCBwZXJsL09JRC9PSUQucG0sIAorICAgICAgcGVybC9TTk1QL1NOTVAucG0sIHBlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci5wbSwgCisgICAgICBwZXJsL2FnZW50L2FnZW50LnBtLCBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwgCisgICAgICBwZXJsL2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzoKKyAgICAgIFZlcnNpb24KKworIG51bWJlciB1cGRhdGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDEyNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBNYWtlZmlsZS50b3A6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDEyMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9zbm1wZC5jOiBGaXggbWFpbiBhZ2VudCBzZWxlY3QgY2FsbCB0byB1c2UgdGhlIHJlbmFtZWQgQVBJCisKKyByb3V0aW5lLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDEyMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9zbm1wZC5jOiBGaXggbWFpbiBhZ2VudCBzZWxlY3QgY2FsbCB0byB1c2UgdGhlIHJlbmFtZWQgQVBJCisKKyByb3V0aW5lLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTIyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEzICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaCwgc25tcGxpYi9sYXJnZV9mZF9zZXQuYzogCisKKyBCcmluZyB0aGUgbmFtaW5nIG9mIHRoZSBsYXJnZV9mZF9zZXQgc2VsZWN0IGNhbGwgaW50byBsaW5lIHdpdGggdGhlCisgcmVzdCBvZiB0aGUgQVBJLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDEyMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMyAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgsIHNubXBsaWIvbGFyZ2VfZmRfc2V0LmM6IAorCisgQnJpbmcgdGhlIG5hbWluZyBvZiB0aGUgbGFyZ2VfZmRfc2V0IHNlbGVjdCBjYWxsIGludG8gbGluZSB3aXRoIHRoZQorIHJlc3Qgb2YgdGhlIEFQSS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTMgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oLCBzbm1wbGliL2xhcmdlX2ZkX3NldC5jOiAKKworIEJyaW5nIHRoZSBuYW1pbmcgb2YgdGhlIGxhcmdlX2ZkX3NldCBzZWxlY3QgY2FsbCBpbnRvIGxpbmUgd2l0aCB0aGUKKyByZXN0IG9mIHRoZSBBUEkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxMjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTMgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oLCBzbm1wbGliL2xhcmdlX2ZkX3NldC5jOiAKKworIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAzMjAzODA2OiBBZGQgdGhlIGZ1bmN0aW9uCisgbmV0c25tcF9sYXJnZV9zZWxlY3QoKSAocGx1cyB0d2Vha3MgdG8gbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTIwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEyICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmM6IENIQU5HRVM6IHNubXBsaWI6IHJlYWxsb2MraW5pdAorCisgaW5zdGVhZCBvZiBjYWxsb2MgIGluc3BpcmVkIGJ5IHBhdGNoIDMxOTU1MzIgZnJvbSBTdGVwaGVuIEhlbW1pbmdlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTE5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEyICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmM6IENIQU5HRVM6IHNubXBsaWI6IHJlYWxsb2MraW5pdAorCisgaW5zdGVhZCBvZiBjYWxsb2MgIGluc3BpcmVkIGJ5IHBhdGNoIDMxOTU1MzIgZnJvbSBTdGVwaGVuIEhlbW1pbmdlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTE5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEyICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmM6IENIQU5HRVM6IHNubXBsaWI6IHJlYWxsb2MraW5pdAorCisgaW5zdGVhZCBvZiBjYWxsb2MgIGluc3BpcmVkIGJ5IHBhdGNoIDMxOTU1MzIgZnJvbSBTdGVwaGVuIEhlbW1pbmdlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxMTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTIgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZQorICAgICAgIF9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50CisgICAgICAgZXJmYWNlLmMsIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5Lmg6CisKKyBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IG9wdGltaXphdGlvbnMgZm9yIGxhcmdlIHJvdXRlIHRhYmxlcyBmcm9tCisgU3RlcGhlbiBIZW1taW5nZXIgIGFwcGxpZWQgcGFydHMgMS0zIG9mIDQgZnJvbSBoaW0gKG1zZ3MgdG8gY29kZXJzIG9uIDIvMjgvMTE7IHN1YmplY3QgIGlwLWZvcndhcmQtbWliIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50czsgcGFydCA0IG5lZWRzIG1vcmUgd29yayBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTE4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEyICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2NvbW1vbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUKKyAgICAgICBfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludAorICAgICAgIGVyZmFjZS5jOiBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IG9wdGltaXphdGlvbnMgZm9yIGxhcmdlIHJvdXRlCisKKyB0YWJsZXMgZnJvbSBTdGVwaGVuIEhlbW1pbmdlciAgYXBwbGllZCBwYXJ0cyAxLTMgb2YgNCBmcm9tIGhpbSAobXNncyB0byBjb2RlcnMgb24gMi8yOC8xMTsgc3ViamVjdCAgaXAtZm9yd2FyZC1taWIgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzOyBwYXJ0IDQgbmVlZHMgbW9yZSB3b3JrIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTIgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZQorICAgICAgIF9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50CisgICAgICAgZXJmYWNlLmM6IENIQU5HRVM6IHNubXBkOiBQQVRDSDogb3B0aW1pemF0aW9ucyBmb3IgbGFyZ2Ugcm91dGUKKworIHRhYmxlcyBmcm9tIFN0ZXBoZW4gSGVtbWluZ2VyICBhcHBsaWVkIHBhcnRzIDEtMyBvZiA0IGZyb20gaGltIChtc2dzIHRvIGNvZGVycyBvbiAyLzI4LzExOyBzdWJqZWN0ICBpcC1mb3J3YXJkLW1pYiBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHM7IHBhcnQgNCBuZWVkcyBtb3JlIHdvcmsgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTE4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTExICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmM6IENIQU5HRVM6IHNubXBsaWI6IGFkZCBtb3JlCisKKyBvcGVuc3NsIGVycm9yIGNhc2VzIHdoZXJlIHdlIGNoZWNrIGZvciBsb2NhbCBjZXJ0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTEgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYzogQ0hBTkdFUzogc25tcGxpYjogYWRkIG1vcmUKKworIG9wZW5zc2wgZXJyb3IgY2FzZXMgd2hlcmUgd2UgY2hlY2sgZm9yIGxvY2FsIGNlcnQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTE3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTExICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6IE1pbkdXOiBkc2tUYWJsZTogUmVwb3J0IHplcm8gZm9yCisKKyB1bmltcGxlbWVudGVkIGZpZWxkcyBpbnN0ZWFkIG9mIHJhbmRvbSBkYXRhLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDExNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOiBNaW5HVzogZHNrVGFibGU6IFJlcG9ydCB6ZXJvIGZvcgorCisgdW5pbXBsZW1lbnRlZCBmaWVsZHMgaW5zdGVhZCBvZiByYW5kb20gZGF0YS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDExNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMSAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzogQ0hBTkdFUzogc25tcGQ6IGZpeGVkIHJhY2UKKworIGNvbmRpdGlvbiBpbiBoclNXUnVuVGFibGUgVHJlYXQgdGhlIHJlYWRzIGZyb20gL3Byb2MvPHBpZD4vKgorIGNhcmVmdWx5LCBwcm9jZXNzZXMgY2FuIGV4aXQgaW4gdGhlIG1pZGRsZSBvZiBwcm9jZXNzaW5nLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDExNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMSAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzogQ0hBTkdFUzogc25tcGQ6IGZpeGVkIHJhY2UKKworIGNvbmRpdGlvbiBpbiBoclNXUnVuVGFibGUgVHJlYXQgdGhlIHJlYWRzIGZyb20gL3Byb2MvPHBpZD4vKgorIGNhcmVmdWx5LCBwcm9jZXNzZXMgY2FuIGV4aXQgaW4gdGhlIG1pZGRsZSBvZiBwcm9jZXNzaW5nLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDExNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jOiBDSEFOR0VTOiBzbm1wZDogQnVpbGRzCisKKyB3aXRoIG1vc3QgcmVjZW50IE1pbkdXIChoYXZpbmcgI2RlZmluZSBsb2NhbHRpbWVfcikuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTExICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb3JlLmM6IENIQU5HRVM6IHNubXBkOiBCdWlsZHMKKworIHdpdGggbW9zdCByZWNlbnQgTWluR1cgKGhhdmluZyAjZGVmaW5lIGxvY2FsdGltZV9yKS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDExNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvc25tcF9vcGVuc3NsLmM6IENIQU5HRVM6IHNubXBsaWI6CisKKyByZWZpbmUgY2VydCBkZWJ1Z2dpbmc7IHJlbW92ZSB1bnVzZWQgZnVuY3Rpb24gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDExMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvc25tcF9vcGVuc3NsLmM6IENIQU5HRVM6IHNubXBsaWI6CisKKyByZWZpbmUgY2VydCBkZWJ1Z2dpbmc7IHJlbW92ZSB1bnVzZWQgZnVuY3Rpb24gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9jZXJ0X3V0aWwuYzogQ0hBTkdFUzogc25tcGQ6IEJVRzogMzIwNTc2NTogaGFuZGxlIHJlY29uZmlnCisKKyBmb3IgY2VydFNlY05hbWUgdG9rZW4gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDExMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvY2VydF91dGlsLmM6IENIQU5HRVM6IHNubXBkOiBCVUc6IDMyMDU3NjU6IGhhbmRsZSByZWNvbmZpZworCisgZm9yIGNlcnRTZWNOYW1lIHRva2VuIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDExMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvc25tcGQuYzogU3BlbGxpbmcgZml4IGluIGEgc291cmNlIGNvZGUgY29tbWVudDogbWVzc2dlcyAtPgorCisgbWVzc2FnZXMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9zbm1wZC5jOiBTcGVsbGluZyBmaXggaW4gYSBzb3VyY2UgY29kZSBjb21tZW50OiBtZXNzZ2VzIC0+CisKKyBtZXNzYWdlcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDExMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9sYXJnZV9mZF9zZXQuYzogQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDMyMDM4MDY6IE1pbm9yCisKKyBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gb2YgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKCkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTEwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL2xhcmdlX2ZkX3NldC5jOiBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMzIwMzgwNjogTWlub3IKKworIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBvZiBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDExMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvc25tcGQuYzogQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAzMjAzODA2OiBBdm9pZCB0aGF0IHRoZSBtYWluCisKKyBhZ2VudCBwcm9jZXNzaW5nIGxvb3AgLSB3aGVuIHVzaW5nIG1vcmUgdGhhbiBGRF9TRVRTSVpFIGZpbGUKKyBkZXNjcmlwdG9ycyAtIGNhbiBjYXVzZSBtZW1vcnkgY29ycnVwdGlvbiBieSBpbnZva2luZyBzZWxlY3QoKS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMDkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L3NubXBkLmM6IENIQU5HRVM6IHNubXBkOiBQQVRDSDogMzIwMzgwNjogQXZvaWQgdGhhdCB0aGUgbWFpbgorCisgYWdlbnQgcHJvY2Vzc2luZyBsb29wIC0gd2hlbiB1c2luZyBtb3JlIHRoYW4gRkRfU0VUU0laRSBmaWxlCisgZGVzY3JpcHRvcnMgLSBjYW4gY2F1c2UgbWVtb3J5IGNvcnJ1cHRpb24gYnkgaW52b2tpbmcgc2VsZWN0KCkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxMDkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaCwgc25tcGxpYi9sYXJnZV9mZF9zZXQuYzogCisKKyBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMzIwMzgwNjogQWRkIHRoZSBmdW5jdGlvbgorIG5ldHNubXBfbGFyZ2Vfc2VsZWN0KCkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTA4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgsIHNubXBsaWIvbGFyZ2VfZmRfc2V0LmM6IAorCisgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDMyMDM4MDY6IEFkZCB0aGUgZnVuY3Rpb24KKyBuZXRzbm1wX2xhcmdlX3NlbGVjdCgpLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTA4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuYzogCisKKyBGaXhlZCB0d28gY29tcGlsZXIgd2FybmluZ3MgKGJhY2twb3J0ZWQgcjIwMDk4IGZyb20gdGhlIHRydW5rKS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L2NsaWJfYnVpbGQsIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA5bGFyZ2VfZmRfc2V0X2NsaWIuYzogQWRkZWQgYQorCisgbWluaW1hbCB1bml0IHRlc3QgZm9yIG5ldHNubXBfbGFyZ2VfZmRfc2V0LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTA2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9jbGliX2J1aWxkLCAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwOWxhcmdlX2ZkX3NldF9jbGliLmM6IEFkZGVkIGEKKworIG1pbmltYWwgdW5pdCB0ZXN0IGZvciBuZXRzbm1wX2xhcmdlX2ZkX3NldC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvbGFyZ2VfZmRfc2V0LmM6IENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAzMjAzODA2OiBNYWtlCisKKyBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKSBjbGVhciBhbGwgcmVsZXZhbnQgZmlsZSBkZXNjcmlwdG9ycy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDEwNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9sYXJnZV9mZF9zZXQuYzogQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDMyMDM4MDY6IE1ha2UKKworIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSgpIGNsZWFyIGFsbCByZWxldmFudCBmaWxlIGRlc2NyaXB0b3JzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDEwNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXAtdGMuYzogQ0hBTkdFUzogc25tcGQ6IEJVRzogMzE3ODM4OTogRml4IGluY29uc2lzdGVudAorCisgaGFuZGxpbmcgb2YgVFogb2Zmc2V0cyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTA0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcC10Yy5jOiBDSEFOR0VTOiBzbm1wZDogQlVHOiAzMTc4Mzg5OiBGaXggaW5jb25zaXN0ZW50CisKKyBoYW5kbGluZyBvZiBUWiBvZmZzZXRzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxMDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTAgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wLXRjLmM6IENIQU5HRVM6IHNubXBkOiBCVUc6IDMxNzgzODk6IEZpeCBpbmNvbnNpc3RlbnQKKworIGhhbmRsaW5nIG9mIFRaIG9mZnNldHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDEwNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXAtdGMuYzogQ0hBTkdFUzogc25tcGQ6IEJVRzogMzE3ODM4OTogRml4IGluY29uc2lzdGVudAorCisgaGFuZGxpbmcgb2YgVFogb2Zmc2V0cyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxMDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTAgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wLXRjLmM6IENIQU5HRVM6IHNubXBkOiBCVUc6IDMxNzgzODk6IEZpeCBpbmNvbnNpc3RlbnQKKworIGhhbmRsaW5nIG9mIFRaIG9mZnNldHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDEwNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYXBwcy9NYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczI6IG1ha2UKKworIHZhcmlhYmxlIG5hbWVzIG1hdGNoIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA5OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlLmM6IAorCisgRml4ZWQgdHdvIGNvbXBpbGVyIHdhcm5pbmdzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDk4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMjogZml4ZWQgaW5zdGFsbGF0aW9uCisKKyB2YXJpYWJsZXMgZm9yIHRoZSBvcHRpb25hbCBTRVQgcHJvZ3JhbXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDk3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3JlbW92ZS11bm5lZWRlZC1tb2R1bGVzOiBjaG1vZCBhK3ggZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwOTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvcmVtb3ZlaWZkZWZjb2RlLnBsOiBwcmludCBhbiBlcnJvciBpZiB0aGUgZW5kIG9mCisKKyBhIGZpbGUgd2FzIHJlYWNoZWQgYW5kIHdlJ3JlIG5vdCBiYWNrIGludG8gdGhlIHN0YXRlIHdlIGNhbiB3cml0ZTsKKyBvdGhlcndpc2UgYSBjbG9zaW5nICNpZmRlZiBpcyBtaXNzaW5nLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDk1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4uYzogZml4IGVuZGlmIGNvbW1lbnQgdG8gbWF0Y2gKKworIHRoZSBvcGVuaW5nIGlmZGVmIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA5NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9yZW1vdmVpZmRlZmNvZGUucGw6IHJlc2V0IHRoZSBjYW53cml0ZSBmbGFnIGZvcgorCisgZXZlcnkgZmlsZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwOTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvcmVtb3ZlLXVubmVlZGVkLW1vZHVsZXM6IHRlbXBvcmFyaWx5IGxlYXZlIGluCisKKyBoZWFkZXIgZmlsZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDkyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogY2hhbmdlIHRoZSB1bmlxdWUgZmlsZSBjaGVjayB0byBvbmUgdGhhdAorCisgaXMgbm90IGluIHRoZSBtaWJncm91cCBkaXJlY3RvcnkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDkxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9yZWFkLW9ubHkvVDAxNDFzbm1wdjJjc2V0ZmFpbF9zaW1wbGU6IGEgdGVzdCBmb3IKKworIGVuc3VyaW5nIHRoZSBhZ2VudCByZWplY3RzIFNFVCByZXF1ZXN0cyB3aXRoIC0tZW5hYmxlLXJlYWQtb25seSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwOTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAxNDFzbm1wdjJjc2V0X3NpbXBsZTogYWRkIGJhY2sgaW4gdGhlCisKKyBzdG9wYWdlbnQgY29tbWFuZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwODkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QxMDFwZHVfdHlwZV9jbGliLmMsIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMTAycGR1X2J1aWxkX2NsaWIuYywgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QxMDNwZHVfcGFyc2VfY2xpYi5jOiB1bml0IHRlc3RzCisgICAgICB3cml0ZW4KKworIGZvciB0aGUgcmVhZC1vbmx5IHN1cHBvcnQgY29udmVydGVkIHRvIHdvcmsgd2l0aCBvciB3aXRob3V0CisgcmVhZC1vbmx5IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA4OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDE0MXNubXB2MmNzZXRfc2ltcGxlOiBkb24ndCBydW4gdGhlCisKKyBzZXQgdGVzdCBpZiBub193cml0ZV9zdXBwb3J0IGlzIHR1cm5lZCBvbiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwODcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAzMHNubXB2M3VzZXJjcmVhdGlvbl9zaW1wbGU6IHNraXAgaWYKKworIG5vX3dyaXRlX3N1cHBvcnQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDg2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMTQxc25tcHYyY3NldF9zaW1wbGU6IEEgbmV3IHRlc3QgdG8KKworIGNoZWNrIHdoZXRoZXIgU05NUHYyYyBTRVRzIHRvIHN5c0NvbnRhY3Qgd29yayBhcyBleHBlY3RlZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwODUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3Zhbnljb25maWc6IGFsbG93IGZvciB2MmMgU0VUIHN1cHBvcnQKKworIHRlc3RpbmcgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDg0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYzogQWxsb3cgZm9yIHNpbmdsZSBxdW90ZXMgZm9yIHZhY20KKworIGNvbnRleHQgbmFtZSBxdW90aW5nIHRvbyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwODMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZTogZml4IHRoZSBjb25maWd1cmUgdGVzdHMgdG8gaW5jbHVkZSB0aGUgd29yZCB0ZXN0IGluIHRoZQorCisgdGVzdCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwODIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMjogZml4IHRoZSBjb25maWd1cmUgdGVzdHMgdG8gaW5jbHVkZQorCisgdGhlIHdvcmQgdGVzdCBpbiB0aGUgdGVzdCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwODEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvcmVtb3ZlLXVubmVlZGVkLW1vZHVsZXM6IEFkZGVkIGFuIGFubm95aW5nbHkgbG9uZworCisgbGlzdCBvZiBleGNlcHRpb25zIHRoYXQgbmVlZHMgdG8gYmUgYXV0b21hdGVkIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA4MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9yZW1vdmUtdW5uZWVkZWQtbW9kdWxlczogQSBxdWljayBwZXJsIHNjcmlwdCB0bworCisgcmVtb3ZlIHVubmVlZGVkIGNvZGUgbW9kdWxlcyBmcm9tIHRoZSBtb2R1bGVzIGRpcmVjdG9yeSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUFkZHJUYWJsZS9zbm1wVGxzdG1BZGRyVGFibGUuYywgCisgICAgICBzbm1wbGliL2NlcnRfdXRpbC5jLCBzbm1wbGliL3NubXB1c20uYywgc25tcGxpYi92YWNtLmM6IG1vcmUKKworIGltcHJvdmVtZW50cyAocmVtb3ZlbWVudHMpIGZvciBmZWF0dXJpemF0aW9uIGFuZCByZWFkLW9ubHkgc3VwcG9ydCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jOiBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDoKKworIDMxOTU1Mzc6IE1pbm9yIGJpbmFyeV9hcnJheSBjb250YWluZXIgc29ydCBvcHRpbWl6YXRpb24gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDA3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmM6IENIQU5HRVM6IHNubXBsaWI6IFBBVENIOgorCisgMzE5NTUzNzogTWlub3IgYmluYXJ5X2FycmF5IGNvbnRhaW5lciBzb3J0IG9wdGltaXphdGlvbiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDYgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYzogVGFicyB0byBzcGFjZXMKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDA3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNiAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jOiBUYWJzIHRvIHNwYWNlcworICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDYgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYywgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zOiBDb25maWd1cmUgY2hlY2sgZm9yIGdldGhvc3RuYW1lMgorCisgVXNlIGdldGFkZHJpbmZvIGlmIGF2YWlsYWJsZS4gTm93IHdvcmtzIGZvciBTb2xhcmlzIChhbmQgV2luZG93cz8pIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAwNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDYgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYywgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zOiBDb25maWd1cmUgY2hlY2sgZm9yIGdldGhvc3RuYW1lMgorCisgVXNlIGdldGFkZHJpbmZvIGlmIGF2YWlsYWJsZS4gTm93IHdvcmtzIGZvciBTb2xhcmlzIChhbmQgV2luZG93cz8pIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNSAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFwcHMvc25tcHRlc3QuYzogQWRkIGRyb3BwZWQgfHwncyBmcm9tIHIyMDA3MiBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBSZXN1bHRzVGFibGUuYzogQ2xlYW4gdXAsIGFuZAorCisgY29zb2xpZGF0ZSByZXN1bHQgdGFibGUgcm93IGNyZWF0aW9uIGludG8gYSBuZXcgZnVuY3Rpb24uICBTYXZlcyAyMDAKKyBsaW5lcyBvZiBjb2RlLCB3aXRoIChob3BlZnVsbHkpIG5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAwNzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDUgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwUmVzdWx0c1RhYmxlLmM6IENsZWFuIHVwLCBhbmQKKworIGNvc29saWRhdGUgcmVzdWx0IHRhYmxlIHJvdyBjcmVhdGlvbiBpbnRvIGEgbmV3IGZ1bmN0aW9uLiAgU2F2ZXMgMjAwCisgbGluZXMgb2YgY29kZSwgd2l0aCAoaG9wZWZ1bGx5KSBubyBmdW5jdGlvbmFsaXR5IGNoYW5nZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhcHBzL01ha2VmaWxlLmluLCBhcHBzL3NubXB0ZXN0LmMsIGNvbmZpZ3VyZSwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczI6IGRvbid0IGJ1aWxkIFNFVCByZWxhdGVkIGFwcHMgd2l0aAorCisgLS1lbmFibGUtcmVhZC1vbmx5IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA3MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2hlbHBlcnMvYmFieV9zdGVwcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jLCBhZ2VudC9taWJncm91cC9taWJJSS91cGRhdGVzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aQorICAgICAgIGZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmMsIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXQuYywgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaCwgc25tcGxpYi9zbm1wX2NsaWVudC5jOiBmaXgKKworIGlzc3VlcyB3aXRoIGNvbWJpbmluZyAtLWVuYWJsZS1taW5pbWFsaXN0IGFuZCAtLWVuYWJsZS1yZWFkLW9ubHkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDcxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZpbmQtdW51c2VkLWNvZGU6IGJldHRlciBvdXRwdXQgZm9yIGZpbmRpbmcKKworIG9iamVjdCBzeW1ib2xzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA0ICBNaWtlIEJhZXIgPGJhZXJtQHN1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9yZW1vdmVpZmRlZmNvZGUucGw6IGxhc3QgY29tbWl0OiBjaGFuZ2VzIHRvIGFsbG93CisKKyBwYXJzaW5nIG9mIGZlYXR1ZXJzIGZpbGVzIHRvIGdldCBhbGwgbWluaW1hbGlzdCB0YWdzIHdoaWNoIGFyZSB0aGVuCisgcHJvY2Vzc2VkIGZvciByZW1vdmFsIHRoaXMgY29tbWl0OiBjaGFuZ2VkIGNvbW1lbnRzL3doaXRlIHNwYWNlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA2OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNCAgTWlrZSBCYWVyIDxiYWVybUBzdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYzogYWRkZWQgbm9fd3JpdGUgc3VwcG9ydCB0byBleHRlbmQuYworICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNjggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDQgIE1pa2UgQmFlciA8YmFlcm1Ac3VzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmM6IEFkZGVkIG1pc3NpbmcgI2VuZGlmIGNvbW1lbnQgZm9yIHJlbW92ZQorCisgaWZkZWYgY29kZSBzdXBwb3J0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA2NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNCAgTWlrZSBCYWVyIDxiYWVybUBzdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvcmVtb3ZlaWZkZWZjb2RlLnBsOiBhZGRlZCBjaGFuZ2VzIHRvIGFsbG93IGNvZGUKKworIHJlbW92YWwgaW4tcGxhY2UgKGkuZS4gZG9lcyBub3QgcmVxdWlyZSBjcmVhdGluZyBhIG5ldyBmaWxlKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNjYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDQgIE1pa2UgQmFlciA8YmFlcm1Ac3VzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2lnbm9yZS5yZWdleHA6IGFkZGluZyBhIGlnbm9yZS5yZWdleHAgZmlsZSB0aGF0CisKKyBjYW4gYmUgdXNlZCB3aXRoIHJlbW92ZWlmZGVmY29kZS5wbCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNjUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1tYWtlZG9jczogYWRkIGEgb3V0Z29pbmcgbGluayB0byB0aGUKKworIHBhcmVudCBtYXJraW5nIHBhZ2UgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDY0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzOiBBZGRlZCBhIHdpa2kgb3V0cHV0IG1vZGUKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDYzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtbWFrZWRvY3M6IE5vdGUgdGhhdCB0aGUgb3JnIG91dHB1dCBpcyB0aGUKKworIGRlZmF1bHQgaW4gdGhlIGhlbHAgb3V0cHV0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA2MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jOiBDSEFOR0VTOiBzbm1wZDogZml4ZWQKKworICd0cnVuY2F0aW5nIGludGVnZXIgdmFsdWUgPiAzMiBiaXRzJyBpbiBVQ0QtU05NUC1NSUI6OnN5c3RlbVN0YXRzIG9uCisgTGludXggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDA2MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jOiBDSEFOR0VTOiBzbm1wZDogZml4ZWQKKworICd0cnVuY2F0aW5nIGludGVnZXIgdmFsdWUgPiAzMiBiaXRzJyBpbiBVQ0QtU05NUC1NSUI6OnN5c3RlbVN0YXRzIG9uCisgTGludXggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDA2MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jOiBDSEFOR0VTOiBzbm1wZDogZml4ZWQKKworICd0cnVuY2F0aW5nIGludGVnZXIgdmFsdWUgPiAzMiBiaXRzJyBpbiBVQ0QtU05NUC1NSUI6OnN5c3RlbVN0YXRzIG9uCisgTGludXggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDA2MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jOiBDSEFOR0VTOiBzbm1wZDogZml4ZWQKKworICd0cnVuY2F0aW5nIGludGVnZXIgdmFsdWUgPiAzMiBiaXRzJyBpbiBVQ0QtU05NUC1NSUI6OnN5c3RlbVN0YXRzIG9uCisgTGludXggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDYxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYywgYWdlbnQvaGVscGVycy93YXRjaGVyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jLCBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXQKKyAgICAgICBhX2FjY2Vzcy5jLCBhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jLCBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYywKKyAgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jLCBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5jLCBzbm1wbGliL3NubXBfYXBpLmM6CisKKyByZWNsYXNzaWZpY2F0aW9uIG9mIHRoZSByZW1haW5pbmcgZmVhdHVyZXMgaW50byBhIGhpZXJhcmNoeSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9vcGVuc3NsLmM6IGRvbid0IGRvdWJsZS1kZWNsYXJlIGNlcnRfdXRpbHMgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYzogdGhlCisKKyBpcGFkZHJlc3NfbGludXggd2FzIGluY29ycmVjdGx5IG1hcmtlZCBhcyBuZWVkaW5nIGNlcnRfZmluZ2VycHJpbnRzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYzogcHV0IHRoZSBhZ2VudF9yZWdpc3RyeSBmZWF0dXJlIGluCisKKyBsaWJuZXRzbm1wYWdlbnQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmOiBDSEFOR0VTOiBXaW4zMjogRGVwcmVjYXRlZAorCisgbGlic25tcC5kZWYgLSBhZGQgTkVUU05NUF9JTVBPUlQgdG8gZnVuY3Rpb24gZGVjbGFyYXRpb25zIGluc3RlYWQgdG8KKyBleHBvcnQgYSBmdW5jdGlvbiBmcm9tIG5ldHNubXAuZGxsLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDA1NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWY6IENIQU5HRVM6IFdpbjMyOiBEZXByZWNhdGVkCisKKyBsaWJzbm1wLmRlZiAtIGFkZCBORVRTTk1QX0lNUE9SVCB0byBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaW5zdGVhZCB0bworIGV4cG9ydCBhIGZ1bmN0aW9uIGZyb20gbmV0c25tcC5kbGwuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg6IE1vdmVkIGEgc291cmNlIGNvZGUgY29tbWVudAorCisgc3VjaCB0aGF0IGl0IGlzIGFnYWluIGltbWVkaWF0ZWx5IGFib3ZlIHRoZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaXQKKyBhcHBsaWVzIHRvLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDA1NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oOiBBZGRlZCBtaXNzaW5nCisgICAgICBORVRTTk1QX0lNUE9SVAorCisgZGVjbGFyYXRpb25zLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDU0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTAzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg6IEFkZGVkIG1pc3NpbmcKKyAgICAgIE5FVFNOTVBfSU1QT1JUCisKKyBkZWNsYXJhdGlvbnMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMDU0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTAzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9saWJhZ2VudC9saWJhZ2VudC5kZWYsIHdpbjMyL2xpYnVjZG1pYnMvbGlidWNkbWlicy5kZWY6IAorCisgUmVtb3ZlZCB0d28gb2Jzb2xldGUgV2luMzIgZmlsZXMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHdpbjMyL2xpYmFnZW50L2xpYmFnZW50LmRlZiwgd2luMzIvbGlidWNkbWlicy9saWJ1Y2RtaWJzLmRlZjogCisKKyBSZW1vdmVkIHR3byBvYnNvbGV0ZSBXaW4zMiBmaWxlcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAwNTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4uYzogVHJpdmlhbCBjb21tZW50IGZpeDoKKworIHNubXBJUHY2QmFzZURvbWFpbi5jIGNvbnRhaW5zIElQdjYgYmFzZSB0cmFuc3BvcnQgc3VwcG9ydCBmdW5jdGlvbnMKKyBpbnN0ZWFkIG9mIElQdjQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4uYzogVHJpdmlhbCBjb21tZW50IGZpeDoKKworIHNubXBJUHY2QmFzZURvbWFpbi5jIGNvbnRhaW5zIElQdjYgYmFzZSB0cmFuc3BvcnQgc3VwcG9ydCBmdW5jdGlvbnMKKyBpbnN0ZWFkIG9mIElQdjQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMDUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTAyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9jb25maWcuaDogUmVtb3ZlZCBhbiBvYnNvbGV0ZSBmaWxlLiAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaCwgd2luMzIvc25tcHNtX3NodXRkb3duLmgsIAorICAgICAgd2luMzIvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmg6IEJ1aWxkcyBhZ2FpbiB3aXRoIFZpc3VhbCBTdHVkaW8KKworIGFmdGVyIHRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlICJmZWF0dXJlIiBmZWF0dXJlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDQ5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTAyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9zbm1wc21faW5pdC5oOiBSZW1vdmVkIGEgbWlzbGVhZGluZyBjb21tZW50LiAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNDggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDIgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMjogQ29ycmVjdCB0aGUgY2hlY2sgb2YKKworIHdldGhlciB1c20gc2VjdXJpdHkgaXMgZW5hYmxlZC4gIFJlZ2VuZXJhdGUgY29uZmlndXJlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDQ3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTAyICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogUmVnZW5lcmF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA0NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wMiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXQKKyAgICAgICBhX2FjY2Vzcy5jOiBBZGQgbWlzc2luZyBkZXBlbmRlbmNpZXMgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDIgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXB1c20uYzogSWdub3JlIHRoZSByZXR1cm4gdmFsdWUgZnJvbQorCisgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA0NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wMiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvY29udGFpbmVyLmM6IFNwbGl0IHRoZSBjb250YWluZXJfY29tcGFyZV9mdW5jdGlvbnMgZmVhdHVyZQorCisgaW50byBjb250YWluZXJfY29tcGFyZV9tZW0sIGNvbnRhaW5lcl9jb21wYXJlX2xvbmcsCisgY29udGFpbmVyX2NvbXBhcmVfdWxvbmcsIGNvbnRhaW5lcl9jb21wYXJlX2ludDMyIGFuZAorIGNvbnRhaW5lcl9jb21wYXJlX3VpbnQzMiBVbmlmeSB0aGUgc3RydWN0dXJlIG9mIHRoZSBjb21wYXJlCisgZnVuY3Rpb25zIGZ1cnRoZXIuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDIgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL2NvbnRhaW5lci5jOiBDaGFuZ2UgdGhlIHNwZWxsaW5nIG9mIHRoZQorCisgY29udGFpbmVyX2NvbXBhcmVfY3N0cmluZyBmZWF0dXJlIHRvIGNvbnRhaW5lcl9uY29tcGFyZV9jc3RyaW5nIGFzCisgdGhhdCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBpcyBndWFyZGVkIGJ5IHRoYXQgYXR0cmlidXRlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDQyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTAyICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg6IEFkZCB0aGUgbWlzc2luZyByZXBsYWNlbWVudAorCisgbWFjcm8gZm9yIHNubXBfaW5pdF9zdGF0aXN0aWNzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wMiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oOiBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWNfYnkKKworIHRha2VzIHR3byBhcmd1bWVudHMgc28gbGV0IHRoZSByZXBsYWNlbWVudCBtYWNybyB0YWtlIHR3byBhcmd1bWVudHMKKyBhcyB3ZWxsLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDQwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI3ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYzogRml4IHR5cG8gaW4KKworIHIxOTk5MCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtY2hlY2s6IFJlbW92ZSBsaW5lcyBzdGFydGluZyB3aXRoICNkZWZpbmUKKworIGluIHRoZSBvdXRwdXQgb2YgdGhlIHByZXByb2Nlc3NvciBXaGVuIGdjYyAtRSBpcyBjYWxsZWQgd2l0aCAtZ2dkYjMKKyAob3IgLWREKSB0aGVuIGFsbCB0aGUgbWFjcm8gZGVmaW5pdGlvbnMgYXJlIHBhc3NlZCB0aHJvdWdoIHRoZQorIHByZXByb2Nlc3NvciBhbmQgdGhhdCBtZXNzZXMgdXAgb3VyIHByb2Nlc3NpbmcuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBNYWtlZmlsZS5ydWxlczogUHV0IHRoZSBnZW5lcmF0ZWQgZmlsZSBpbiB0aGUgYnVpbGQgdHJlZSwgbm90IHRoZQorCisgc291cmNlIHRyZWUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9hZ2VudF90cmFwLmMsIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvaHdfbWVtLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZQorICAgICAgIF9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50CisgICAgICAgZXJmYWNlLmMsIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcgorICAgICAgIGZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmEKKyAgICAgICBjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWIKKyAgICAgICBsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpCisgICAgICAgZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfaW50ZXJmCisgICAgICAgYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfaW50ZXJmYWNlLgorICAgICAgIGMsIGFnZW50L21pYmdyb3VwL3RzbS1taWIvc25tcFRzbVN0YXRzL3NubXBUc21TdGF0cy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2NvbW1vbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfc29sYXJpczIuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuCisgICAgICAgYzogbW92ZWQgYSBidW5jaCBvZiBmZWF0dXJlcyBpbnRvIHRoZSBsaWJuZXRzbm1wbWlicyBmZWF0dXJlIHNldC4KKyAgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAzNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2FnZW50X2hhbmRsZXIuYywgYWdlbnQvYWdlbnRfaW5kZXguYywgCisgICAgICBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCBhZ2VudC9hZ2VudF90cmFwLmMsIAorICAgICAgYWdlbnQvaGVscGVycy9hbGxfaGVscGVycy5jLCBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlLmMsIGFnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYywgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsIAorICAgICAgYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX3Jvdy5jLCAKKyAgICAgIGFnZW50L3NubXBfYWdlbnQuYywgbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHMsIHNubXBsaWIvbWliLmM6CisKKyBjbGFzc2lmaWVkIGxpYm5ldHNubXBhZ2VudCBmZWF0dXJlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOiByZXZlcnNlIHRoZSBvcmRlciBvZiB0aGUgbGlicmFyaWVzCisKKyAoc25tcGxpYiBmaXJzdCkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDM0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czogb3V0cHV0IGNsZWFudXAgYW5kIGFkZGVkIGFnZW50LW1pYnMKKworIGFuZCBsb2dnaW5nIG9wdGlvbnMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDMzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czogYWRkIGEgZGVmYXVsdCBzZXQgb2YgYXJndW1lbnRzCisKKyBjYWxjdWxhdGUgcmVzdWx0aW5nIHNpemVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAzMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9kaXJfdXRpbHMuYzogQWRkZWQgYSBtaXNzaW5nIDsgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOiBwcmVmaXggdGhlIG91dHB1dCBmaWxlcyB3aXRoIGEgbnVtYmVyCisKKyB0byBpbmRpY2F0ZSBvcmRlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOiBzYXZlIHRoZSByZXN1bHRzIG9mIHRoZSBzeXN0ZW0KKworIGV4ZWN1dGlvbnMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDI5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czogZW5hYmxlIGJ1aWxkaW5nIG9mIHRoZSByZXN1bHRpbmcKKworIGNvbWJpbmF0aW9ucyBBZGQgYSAtbiBmbGFnIGZvciBkcnktcnVucyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMjggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czogZW5hYmxlIHRoZSAtdCB0YWcgZm9yIGxpbWl0aW5nIHR5cGVzCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAyNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6IEFkZGVkIGFyZ3VtZW50IHBhcnNpbmcgYW5kIGFyZ3VtZW50cworCisgZm9yIHNlbGVjdGluZyBhbmQgbGlzdGluZyB0eXBlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMjYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOiBnZW5lcmF0ZSBjb25maWd1cmUgc2NyaXB0IGFyZ3VtZW50cworCisgZnJvbSBzcGVjcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMjUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOiBhZGRlZCBhIGJ1bmNoIG9mIG5ldyBmZWF0dXJlIG9wdGlvbnMKKworIGFuZCBjbGVhbmVkIHVwIGEgYml0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAyNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6IGFkZGVkIGEgbmV3IChub3QgeWV0IHdvcmtpbmcpIHNjcmlwdAorCisgdG8gdGVzdCBzaXppbmcgb2YgdmFyaW91cyBhcmd1bWVudCBzZXRzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAyMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmM6IFNpbXBsaWZ5IHRoZSBjb2RlLiBVbmlmeSBzb21lCisKKyBkZWJ1ZyBsb2dzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDIyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI2ICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYzogUmVkdWNlIHRoZSBzY29wZSBvZiBhIGZldworCisgdmFyaWFibGVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAyMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jOiBSZW1vdmUgc29tZSB1bnVzZWQgaW5jbHVkZXMuIAorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jOiBNYWtlIGl0IHBvc3NpYmxlIHRvCisKKyBpbml0aWFsaXplL3VuaW5pdGlhbGl6ZSBtb2R1bGVzIHdpdGggNjQgY2hhcmFjdGVyIG5hbWVzIGFuZCBub3QKKyBzdWZmZXIgd2lsZCB3cml0ZXMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jOiBDb2RlIHJlc3RydWN0dXJpbmcgLSBwdXQgdGhlCisKKyBtYW5hZ2VkIHJvdXRpbmVzIGJlZm9yZSB0aGUgbWFuYWdtZW50IGNvZGUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5oOiAKKworIENIQU5HRVM6IGxpYm5ldHNubXBtaWJzOiBNYWtlIGFsbCBmdW5jdGlvbnMgaW4gdGhlIGRsbW9kIG1vZHVsZSB0aGF0CisgZG9uJ3QgaGF2ZSB0byBiZSBwdWJsaWMgc3RhdGljIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAxNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmM6IFJlbmFtZSBkZWluaXRfZGxtb2QgdG8KKworIHNodXRkb3duX2RsbW9kIGFzIHRoYXQgaXMgd2hhdCBpdCByZWFsbHkgaXMgYWJvdXQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIE1pa2UgQmFlciA8YmFlcm1Ac3VzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5jOiBhZGRpbmcgbWluaW1hbGlzdCBpZmRlZnMKKworIHRvIG5ldC1zbm1wLXZhY20gbWliIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAxNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzOiBwcm9wZXJseSBoYW5kbGUgdHdpbiBjaGlsZHJlbjsKKworIGFsc28gc29ydCB0aGUgY2hpbGQgbGlzdCBhbHBoYWJldGljYWxseS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAxNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2xvZ2dpbmcuYzogSSBzdXBwb3NlIGxvZ2dpbmcgc2hvdWxkIHByb2JhYmx5IGRlZmF1bHQKKworIHRvIGJlaW5nIGEgd2FudGVkIG9wdGlvbiA6LSkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtbWFrZWRvY3M6IG9yZy1saW5rIHRoZSBmaWxlcyBpbiB0aGUKKworIG91dHB1dCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBNYWtlZmlsZS5ydWxlcywgYWdlbnQvTWFrZWZpbGUuaW4sIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmluLCAKKyAgICAgIGFwcHMvTWFrZWZpbGUuaW4sIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sIAorICAgICAgbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLWNoZWNrLCBzbm1wbGliL01ha2VmaWxlLmluOiBtYWtlIHRoZQorCisgZmVhdHVyZXMtY2hlY2sgc2NyaXB0IHRyYWNrIHRoZSBmdWxsIHNvdXJjZSBwYXRoIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzOiBjaGFuZ2UgdGhlIGZ1bmN0aW9uIG5hbWVzIHRvCisKKyBtYXRjaCB0aGF0IGl0J3MgcHJpbnRpbmcgdG8gb3JnLW1vZGUgYXQgdGhlIG1vbWVudC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAxMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvZmlsZV91dGlscy5jLCBzbm1wbGliL21pYi5jLCBzbm1wbGliL29pZF9zdGFzaC5jLCAKKyAgICAgIHNubXBsaWIvc25tcF9hcGkuYywgc25tcGxpYi9zbm1wX2xvZ2dpbmcuYywgc25tcGxpYi90b29scy5jOiBsYXN0CisgICAgICBvZgorCisgdGhlIGZlYXR1cmUgY2xhc3NpZmljYXRpb24gaW4gbGlibmV0c25tcCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMDkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIva2V5dG9vbHMuYywgc25tcGxpYi9sY2RfdGltZS5jLCBzbm1wbGliL3NjYXBpLmM6IG1ha2UgdGhlCisKKyB1c21fc3VwcG9ydCB1dGlsaXRpZXMgc2VsZi1kZWNsYXJlIHRoZW1zZWx2ZXMgYXMgY2hpbGRyZW4gdG8gbWFrZQorIHN1cmUgdGhleSdyZSBwcm9wZXJseSBpbmNsdWRlZCBkdXJpbmcgZGVwZW5kZW5jeSBvcmRlcmluZyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMDggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL2NhbGxiYWNrLmMsIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvY2hlY2tfdmFyYmluZC5jLCAKKyAgICAgIHNubXBsaWIvY29udGFpbmVyLmMsIHNubXBsaWIvZGF0YV9saXN0LmMsIHNubXBsaWIvZGVmYXVsdF9zdG9yZS5jLAorICAgICAgIHNubXBsaWIvZmRfZXZlbnRfbWFuYWdlci5jLCBzbm1wbGliL2ZpbGVfdXRpbHMuYywgCisgICAgICBzbm1wbGliL2tleXRvb2xzLmMsIHNubXBsaWIvc25tcHVzbS5jOiBzdXBlcnN0cnVjdHVyYWxpemF0aW9uaXppbmcKKworIHRoZSBmZWF0dXJlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL3JlYWRfY29uZmlnLmMsIHNubXBsaWIvc25tcC10Yy5jLCBzbm1wbGliL3NubXBfY2xpZW50LmMsIAorICAgICAgc25tcGxpYi9zbm1wX2VudW0uYywgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jLCBzbm1wbGliL3N5c3RlbS5jLCAKKyAgICAgIHNubXBsaWIvdGV4dF91dGlscy5jLCBzbm1wbGliL3Rvb2xzLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmMsIHNubXBsaWIvdWNkX2NvbXBhdC5jOgorCisgc2lnbmlmaWNhbnQgcGFyZW50L2NoaWxkIGZlYXR1cmUgY2xhc3NpZmljYXRpb24gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDA2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfYXBpLmMsIHNubXBsaWIvc25tcHVzbS5jOiBjbGFzc2lmeSBhIGZldyBjb21wb25lbnRzCisKKyBpbnRvIGEgdG9wLWxldmVsIGxpYm5ldHNubXAgY29tcG9uZW50IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAwNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIva2V5dG9vbHMuYywgc25tcGxpYi9sY2RfdGltZS5jLCBzbm1wbGliL3NjYXBpLmMsIAorICAgICAgc25tcGxpYi9zbm1wdXNtLmM6IHN0cnVjdHVyaXplIHRoZSB1c20gZmVhdHVyZXMgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL2NvbnRhaW5lci5jLCBzbm1wbGliL2NvbnRhaW5lcl9pdGVyYXRvci5jLCAKKyAgICAgIHNubXBsaWIvY29udGFpbmVyX2xpc3Rfc3NsbC5jLCBzbm1wbGliL2NvbnRhaW5lcl9udWxsLmMsIAorICAgICAgc25tcGxpYi9kaXJfdXRpbHMuYzogc3RydWN0dXJlIHRoZSBjb250YWluZXIgZmVhdHVyZXMgaW50byBhCisKKyBoaWVyYXJjaHkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDAzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfbG9nZ2luZy5jOiBncm91cCB0aGUgbG9nZ2luZyBoYW5kbGVycyB1bmRlciBhIHBhcmVudAorCisgZmVhdHVyZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtbWFrZWRvY3M6IGZpeCB0aGUgZXhwZWN0IGFyZ3VtZW50IGNvdW50CisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAwMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzOiBmaXggdGhlIG5hbWUgb2YgdGhlIGV4cGVjdGVkCisKKyBpbnB1dCBmaWxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAwMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzOiBhcmd1bWVudCBwYXJzaW5nIGFuZCB1c2FnZSgpCisKKyBvdXRwdXQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTk5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jLCBhZ2VudC9oZWxwZXJzL3N0YXNoX3RvX25leHQuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywgYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZS5jLCBzbm1wbGliL29pZF9zdGFzaC5jOiAtCisgICAgICBhZGRlZCB0d28gb2lkX3N0YXNoIGZ1bmN0aW9ucyBhcyBpbmRpdmlkdWFsIGZlYXR1cmVzIC0gY2xlYW5lZCB1cAorICAgICAgc29tZSB3YXJuaW5ncyBpbiB0aGUgdGFibGVfaXRlcmF0b3IgY29kZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk5OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgZGlzdC9tYWtlcmVsZWFzZS54bWw6IEZpeCB0aGUgY29tbWFuZCB0byBjcmVhdGUgYSBuZXcgU1ZOIHRhZyBsaW5lCisgICAgICAoSGF2aW5nIGJyb3VnaHQgdGhlIHN0cnVjdHVyZSBvZiB0aGUgNS41LnggYnJhbmNoICBpbnRvIGxpbmUgd2l0aAorICAgICAgdGhlIG90aGVyIGJyYW5jaGVzLCB0aGUgcHJldmlvdXMgIGNvbW1hbmQgaXMgbm93IHdyb25nIGZvciAqYWxsKgorICAgICAgYnJhbmNoZXMsIHJhdGhlciAgdGhhbiBqdXN0IG1vc3Qgb2YgdGhlbSEpIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AxOTk5NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgZGlzdC9tYWtlcmVsZWFzZS54bWw6IEZpeCB0aGUgY29tbWFuZCB0byBjcmVhdGUgYSBuZXcgU1ZOIHRhZyBsaW5lCisgICAgICAoSGF2aW5nIGJyb3VnaHQgdGhlIHN0cnVjdHVyZSBvZiB0aGUgNS41LnggYnJhbmNoICBpbnRvIGxpbmUgd2l0aAorICAgICAgdGhlIG90aGVyIGJyYW5jaGVzLCB0aGUgcHJldmlvdXMgIGNvbW1hbmQgaXMgbm93IHdyb25nIGZvciAqYWxsKgorICAgICAgYnJhbmNoZXMsIHJhdGhlciAgdGhhbiBqdXN0IG1vc3Qgb2YgdGhlbSEpIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTk5NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgZGlzdC9tYWtlcmVsZWFzZS54bWw6IEZpeCB0aGUgY29tbWFuZCB0byBjcmVhdGUgYSBuZXcgU1ZOIHRhZyBsaW5lCisgICAgICAoSGF2aW5nIGJyb3VnaHQgdGhlIHN0cnVjdHVyZSBvZiB0aGUgNS41LnggYnJhbmNoICBpbnRvIGxpbmUgd2l0aAorICAgICAgdGhlIG90aGVyIGJyYW5jaGVzLCB0aGUgcHJldmlvdXMgIGNvbW1hbmQgaXMgbm93IHdyb25nIGZvciAqYWxsKgorICAgICAgYnJhbmNoZXMsIHJhdGhlciAgdGhhbiBqdXN0IG1vc3Qgb2YgdGhlbSEpIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk5NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgZGlzdC9tYWtlcmVsZWFzZS54bWw6IEZpeCB0aGUgY29tbWFuZCB0byBjcmVhdGUgYSBuZXcgU1ZOIHRhZyBsaW5lCisgICAgICAoSGF2aW5nIGJyb3VnaHQgdGhlIHN0cnVjdHVyZSBvZiB0aGUgNS41LnggYnJhbmNoICBpbnRvIGxpbmUgd2l0aAorICAgICAgdGhlIG90aGVyIGJyYW5jaGVzLCB0aGUgcHJldmlvdXMgIGNvbW1hbmQgaXMgbm93IHdyb25nIGZvciAqYWxsKgorICAgICAgYnJhbmNoZXMsIHJhdGhlciAgdGhhbiBqdXN0IG1vc3Qgb2YgdGhlbSEpIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTk3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBtYW4vbmV0c25tcF9hY2Nlc3NfbXVsdGlwbGV4ZXIuMywgbWFuL25ldHNubXBfYWdlbnQuMywgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF9oYW5kbGVyLmguMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsIAorICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgCisgICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX2RhdGFfbGlzdC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgCisgICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsIAorICAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywgCisgICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21vbml0b3JfY2FsbGJhY2tfaGVhZGVyX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX251bGxfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgCisgICAgICBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIAorICAgICAgbWFuL25ldHNubXBfc2NhbGFyLjMsIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLCBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywgbWFuL25ldHNubXBfdGFibGUuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgbWFuL25ldHNubXBfdGFibGVfcm93LjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3Rvb2xzLmguMywgbWFuL25ldHNubXBfdXRpbC4zLAorICAgICAgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsICBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsCisgICAgICBtYW4vbmV0c25tcF93YXRjaGVyLjM6IGRvY3VtZW50YXRpb24KKworIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDE5OTk1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjLCBwZXJsL0FTTi9BU04ucG0sIHBlcmwvQW55RGF0YV9TTk1QL1N0b3JhZ2UucG0sCisgICAgICAgcGVybC9PSUQvT0lELnBtLCBwZXJsL1NOTVAvU05NUC5wbSwgCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0sIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtLCAKKyAgICAgIHBlcmwvYWdlbnQvYWdlbnQucG0sIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtOiBWZXJzaW9uIG51bWJlciB1cGRhdGUKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AxOTk5NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDaGFuZ2VMb2c6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AxOTk5MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYywgcGVybC9BU04vQVNOLnBtLCBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLAorICAgICAgIHBlcmwvT0lEL09JRC5wbSwgcGVybC9TTk1QL1NOTVAucG0sIAorICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtLCBwZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbSwgCisgICAgICBwZXJsL2FnZW50L2FnZW50LnBtLCBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwgCisgICAgICBwZXJsL2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbTogVmVyc2lvbiBudW1iZXIgdXBkYXRlCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMTk5OTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wdjMuYzogQXZvaWQgYSBwb3NzaWJsZSBjcmFzaCBpZiB0aGUgZW5naW5lSUQgaXMgbm90CisKKyBhdmFpbGFibGUgb3Igc2V0LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTk5MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXB2My5jOiBBdm9pZCBhIHBvc3NpYmxlIGNyYXNoIGlmIHRoZSBlbmdpbmVJRCBpcyBub3QKKworIGF2YWlsYWJsZSBvciBzZXQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTkxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcHYzLmM6IEF2b2lkIGEgcG9zc2libGUgY3Jhc2ggaWYgdGhlIGVuZ2luZUlEIGlzIG5vdAorCisgYXZhaWxhYmxlIG9yIHNldC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5OTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wdjMuYzogQXZvaWQgYSBwb3NzaWJsZSBjcmFzaCBpZiB0aGUgZW5naW5lSUQgaXMgbm90CisKKyBhdmFpbGFibGUgb3Igc2V0LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTkxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcHYzLmM6IEF2b2lkIGEgcG9zc2libGUgY3Jhc2ggaWYgdGhlIGVuZ2luZUlEIGlzIG5vdAorCisgYXZhaWxhYmxlIG9yIHNldC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMTk5OTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIE1pa2UgQmFlciA8YmFlcm1Ac3VzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJEZWx0YVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuaDogYWRkaW5nIGlmZGVmIGNvZGUKKworIGZvciBtaW5pbWFsaXN0IHN1cHBvcnQgb2YgZGlmZm1hbiBtaWIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTkwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI0ICBNaWtlIEJhZXIgPGJhZXJtQHN1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uYywgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uaDoKKworIEFkZGluZyBtaW5pbWFsaXN0IGlmZGVmcyB0byBob3N0IHJlc291cmNlIG1pYiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5ODkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYywgc25tcGxpYi9kYXRhX2xpc3QuYzogbWFyayB0aGUKKworIGRhdGFfbGlzdCBmdW5jdGlvbiB0aGF0J3Mgb25seSB1c2VkIGluIHN0YWNoX2NhY2hpbmcgYXMgYSBmZWF0dXJlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk4OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jOiB3aG9vcHMuICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk4NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYzogbW9yZSBtaXNzaW5nIHN0YXNoIHJlZmVyZW5jZXMKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTg2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmM6IGlmZGVmZWQvZmVhdHVyZWQgb3V0IGEgbWlzc2luZworCisgc3Rhc2hfY2FjaGUgc2VjdGlvbiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5ODUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYzogbWFrZSB0aGUgcHJlZml4X2luZm8gbW9yZQorCisgaGllcmFyY2hpY2FsIGFuZCBzdWItZmVhdHVyZSB0aGUgdW51c2VkIG9uZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5ODQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmluZC11bnVzZWQtY29kZTogZG8gaW5jbHVkZSB0aGUgcGVybC9weXRob24gY29kZQorCisgd2hlbiBzZWFyY2hpbmcgZm9yIGZpbGVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk4MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvaGVscGVycy90YWJsZV90ZGF0YS5jOiBtYWtlIHRoZSBzZW1pLXVzZWQgdGFibGVfdGRhdGEKKworIGZ1bmN0aW9ucyBjaGlsZHJlbiBvZiB0YWJsZV90ZGF0YV9hbGwgaW5zdGVhZCBvZiBqdXN0IHRhYmxlX3RkYXRhIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk4MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMyAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYzogQ29ycmVjdCB0eXBvIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTgxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9wYXJzZS5jOiBDb3JyZWN0IHR5cG8gZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5ODAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjMgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L3NubXBfdmFycy5jOiBwcm9wZXIgaW5jbHVkZSBvZiBwcm90b3R5cGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5NzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50LCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX3RyYW5zcG9ydHMsIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGU6IGNvbXBhdCBzb21lIGZlYXR1cmUgaGVhZGVyCisKKyBjaGlja2VuIGFuZCBlZ2cgcHJvYmxlbXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTc4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9zbm1wX3ZhcnMuYzogSW5jbHVkZSByZXF1aXJlZCBwcm90b3R5cGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXB1c20uYzogdW5zaWduZWQganVnZ2xpbmcgdG8gcmVtb3ZlIHdhcm5pbmdzIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgICogCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuYywKKyAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlLmgsCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXQKKyAgICAgICBhX2FjY2Vzcy5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2RhdGFfYWNjZXNzLmM6CisKKyB1bnNpZ25lZCBqdWdnbGluZyB0byByZW1vdmUgd2FybmluZ3MgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMyAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogICAqIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlLmMsCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5oLAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfZGF0CisgICAgICAgYV9hY2Nlc3MuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jOgorCisgdW5zaWduZWQganVnZ2xpbmcgdG8gcmVtb3ZlIHdhcm5pbmdzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMyAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliLmg6IEVuYWJsZSAocHJvYmFibHkgZm9yZ290dGVuKQorCisgaXBBZGRyZXNzUHJlZml4VGFibGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMyAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliLmg6IEVuYWJsZSAocHJvYmFibHkgZm9yZ290dGVuKQorCisgaXBBZGRyZXNzUHJlZml4VGFibGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTc0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLWNoZWNrLCAKKyAgICAgIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1tYWtlZG9jcywKKyAgICAgIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1yZW1vdmUsIAorICAgICAgbG9jYWwvbWluaW1hbGlzdC9maW5kLXVudXNlZC1jb2RlLCAKKyAgICAgIGxvY2FsL21pbmltYWxpc3QvcmVtb3ZlaWZkZWZjb2RlLnBsOiBhZGRlZCBvdGhlciBtaXNzaW5nICduZXcnCisgICAgICBmaWxlcworCisgbm90IGluY2x1ZGVkIGluIHRoZSBtaW5pbWFsaXN0IHBhdGNoIGZpbGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTczIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2ZyZWVic2Q0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX25ldGJzZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9vcGVuYnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfZnJlZWJzZDQuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9uZXRic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9vcGVuYnNkLmM6IExvYWRpbmcKKworIElQdjYgZGF0YSBpcyBhIG5vLW5vIHdoZW4gSVB2NiBub3QgZW5hYmxlZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTcyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2ZyZWVic2Q0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX25ldGJzZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9vcGVuYnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfZnJlZWJzZDQuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9uZXRic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9vcGVuYnNkLmM6IExvYWRpbmcKKworIElQdjYgZGF0YSBpcyBhIG5vLW5vIHdoZW4gSVB2NiBub3QgZW5hYmxlZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5NzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjMgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFwcHMvc25tcHRhYmxlLmM6IEZpeCBidWcgMzExODYzMTogc25tcHRhYmxlIHNlZ2ZhdWx0cyBpZiBpbmRleAorCisgY29udGFpbnMgOiBjaGFyYWN0ZXIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTk3MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMyAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYXBwcy9zbm1wdGFibGUuYzogRml4IGJ1ZyAzMTE4NjMxOiBzbm1wdGFibGUgc2VnZmF1bHRzIGlmIGluZGV4CisKKyBjb250YWlucyA6IGNoYXJhY3RlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTcxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhcHBzL3NubXB0YWJsZS5jOiBGaXggYnVnIDMxMTg2MzE6IHNubXB0YWJsZSBzZWdmYXVsdHMgaWYgaW5kZXgKKworIGNvbnRhaW5zIDogY2hhcmFjdGVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMTk5NzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjMgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFwcHMvc25tcHRhYmxlLmM6IEZpeCBidWcgMzExODYzMTogc25tcHRhYmxlIHNlZ2ZhdWx0cyBpZiBpbmRleAorCisgY29udGFpbnMgOiBjaGFyYWN0ZXIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk3MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMyAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYXBwcy9zbm1wdGFibGUuYzogRml4IGJ1ZyAzMTE4NjMxOiBzbm1wdGFibGUgc2VnZmF1bHRzIGlmIGluZGV4CisKKyBjb250YWlucyA6IGNoYXJhY3RlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5NzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjMgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2ZyZWVic2Q4Lmg6IEZyZWVCU0QgOCBzdXBwb3J0IGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTk3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMyAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZnJlZWJzZDguaDogRnJlZUJTRCA4IHN1cHBvcnQgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDE5OTcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkOC5oOiBGcmVlQlNEIDggc3VwcG9ydCBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjMgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2ZyZWVic2Q4Lmg6IEZyZWVCU0QgOCBzdXBwb3J0IGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg6IGFkZGVkIG1pc3NpbmcKKworIG5ldC1zbm1wLWZlYXR1cmVzLmggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTY5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgTWFrZWZpbGUuaW4sIE1ha2VmaWxlLnJ1bGVzLCBNYWtlZmlsZS50b3AsIGFnZW50L01ha2VmaWxlLmluLCAKKyAgICAgIGFnZW50L2FnZW50X2hhbmRsZXIuYywgYWdlbnQvYWdlbnRfaW5kZXguYywgCisgICAgICBhZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jLCBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCAKKyAgICAgIGFnZW50L2FnZW50X3RyYXAuYywgYWdlbnQvaGVscGVycy9hbGxfaGVscGVycy5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvYmFieV9zdGVwcy5jLCBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmMsIGFnZW50L2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvbXVsdGlwbGV4ZXIuYywgYWdlbnQvaGVscGVycy9vbGRfYXBpLmMsIAorICAgICAgYWdlbnQvaGVscGVycy9yZWFkX29ubHkuYywgYWdlbnQvaGVscGVycy9yb3dfbWVyZ2UuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3NjYWxhci5jLCBhZ2VudC9oZWxwZXJzL3NjYWxhcl9ncm91cC5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmMsIGFnZW50L2hlbHBlcnMvc3Rhc2hfY2FjaGUuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3N0YXNoX3RvX25leHQuYywgYWdlbnQvaGVscGVycy90YWJsZS5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYywgYWdlbnQvaGVscGVycy90YWJsZV9jb250YWluZXIuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYywgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsIAorICAgICAgYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX3Jvdy5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYywgYWdlbnQvaGVscGVycy93YXRjaGVyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuaW4sIGFnZW50L21pYmdyb3VwL1Jtb24vYWxhcm1UYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jLCBhZ2VudC9taWJncm91cC9hZ2VudC9uc0NhY2hlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNNb2R1bGVUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvY2xpZW50LmMsIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Q29uZi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJDb25mLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJEZWx0YVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXJyb3JUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25Db25mLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvblRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0Q29uZi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXhwcmVzc2lvblRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb25mLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfaW50ZXJmYWMKKyAgICAgICBlLmMsIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RhdGFfc2V0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9zY2FsYXJfaW50LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfa2luZm8uYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X25saXN0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9wZXJmc3RhdC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L2h3X21lbS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9kYXJ3aW4uYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcnBtLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3aW5zdC5jLAorICAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmMsCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2NvbnN0YW50cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlCisgICAgICAgLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZQorICAgICAgIF9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50CisgICAgICAgZXJmYWNlLmMsIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9kYXRhXworICAgICAgIGFjY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXIKKyAgICAgICBmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2RhdAorICAgICAgIGFfYWNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2ludAorICAgICAgIGVyZmFjZS5jLCBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdAorICAgICAgIGFfYWNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2ludAorICAgICAgIGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9pbnRlcmZhCisgICAgICAgY2UuYywgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwX3NjYWxhcnMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9pbnRlcmZhCisgICAgICAgY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZV9pbnRlcmZhCisgICAgICAgY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFiCisgICAgICAgbGVfaW50ZXJmYWNlLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc2V0U2VyaWFsTm8uYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jLCBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jLCBhZ2VudC9taWJncm91cC9taWJJSS91ZHAuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbnRleHQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZS5jCisgICAgICAgLCBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGkKKyAgICAgICBmeUZpbHRlclRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aQorICAgICAgIGZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3MuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpCisgICAgICAgZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLCisgICAgICAgZXlUYWJsZV9pbnRlcmZhY2UuYywgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0cy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0c181XzUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jLCBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2M21pYnMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fc29sYXJpczIuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfaW50ZXJmCisgICAgICAgYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfaW50ZXJmYWNlLgorICAgICAgIGMsIGFnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUFkZHJUYWJsZS9zbm1wVGxzdG1BZGRyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUvc25tcFRsc3RtQ2VydFRvVFNOCisgICAgICAgVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtUGFyYW1zVGFibGUvc25tcFRsc3RtUGFyYW1zVGFibGUuCisgICAgICAgYywgYWdlbnQvbWliZ3JvdXAvdHNtLW1pYi9zbm1wVHNtU3RhdHMvc25tcFRzbVN0YXRzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1TZW5zb3JzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYywgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2NvbW1vbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfc29sYXJpczIuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuCisgICAgICAgYywgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5jLCAgYWdlbnQvbWliZ3JvdXAvd2luRXh0RExMLmMsCisgICAgICBhZ2VudC9zbm1wX2FnZW50LmMsIGFnZW50L3NubXBfdmFycy5jLCAgYWdlbnQvc25tcGQuYywKKyAgICAgIGFwcHMvTWFrZWZpbGUuaW4sIGFwcHMvYWdlbnR4dHJhcC5jLCAKKyAgICAgIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sIGFwcHMvc25tcG5ldHN0YXQvbWFpbi5jLCAKKyAgICAgIGFwcHMvc25tcG5ldHN0YXQvbmV0c3RhdC5oLCBhcHBzL3NubXBuZXRzdGF0L3JvdXRlLmMsIAorICAgICAgYXBwcy9zbm1wdGVzdC5jLCBhcHBzL3NubXB0cmFuc2xhdGUuYywgYXBwcy9zbm1wdHJhcGQuYywgCisgICAgICBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jLCBhcHBzL3NubXB0cmFwZF9zcWwuYywgY29uZmlndXJlLCAKKyAgICAgIGNvbmZpZ3VyZS5hYywgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfYWdlbnQsIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfbGliLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX3NlY3VyaXR5X21vZHVsZXMsIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfdHJhbnNwb3J0cywKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMiwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wZXJsX3B5dGhvbiwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZSwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGlic25tcC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBrc20uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIHBlcmwvT0lEL09JRC54cywgCisgICAgICBwZXJsL1NOTVAvU05NUC54cywgcGVybC9hZ2VudC9hZ2VudC54cywgc25tcGxpYi9NYWtlZmlsZS5pbiwgCisgICAgICBzbm1wbGliL2NhbGxiYWNrLmMsIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvY2hlY2tfdmFyYmluZC5jLCAKKyAgICAgIHNubXBsaWIvY29udGFpbmVyLmMsIHNubXBsaWIvY29udGFpbmVyX2l0ZXJhdG9yLmMsIAorICAgICAgc25tcGxpYi9jb250YWluZXJfbGlzdF9zc2xsLmMsIHNubXBsaWIvY29udGFpbmVyX251bGwuYywgCisgICAgICBzbm1wbGliL2RhdGFfbGlzdC5jLCBzbm1wbGliL2RlZmF1bHRfc3RvcmUuYywgc25tcGxpYi9kaXJfdXRpbHMuYywKKyAgICAgICBzbm1wbGliL2ZkX2V2ZW50X21hbmFnZXIuYywgc25tcGxpYi9maWxlX3V0aWxzLmMsCisgICAgICBzbm1wbGliL2ludDY0LmMsICBzbm1wbGliL2tleXRvb2xzLmMsIHNubXBsaWIvbGNkX3RpbWUuYywKKyAgICAgIHNubXBsaWIvbWliLmMsICBzbm1wbGliL29pZF9zdGFzaC5jLCBzbm1wbGliL3BhcnNlLmMsCisgICAgICBzbm1wbGliL3JlYWRfY29uZmlnLmMsICBzbm1wbGliL3NjYXBpLmMsIHNubXBsaWIvc25tcC10Yy5jLAorICAgICAgc25tcGxpYi9zbm1wX2FwaS5jLCAgc25tcGxpYi9zbm1wX2NsaWVudC5jLCBzbm1wbGliL3NubXBfZW51bS5jLAorICAgICAgc25tcGxpYi9zbm1wX2xvZ2dpbmcuYywgIHNubXBsaWIvc25tcF9vcGVuc3NsLmMsCisgICAgICBzbm1wbGliL3NubXBfcGFyc2VfYXJncy5jLCAgc25tcGxpYi9zbm1wX3NlY21vZC5jLAorICAgICAgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jLCBzbm1wbGliL3NubXBrc20uYywgIHNubXBsaWIvc25tcHRzbS5jLAorICAgICAgc25tcGxpYi9zbm1wdXNtLmMsIHNubXBsaWIvc25tcHYzLmMsICBzbm1wbGliL3N5c3RlbS5jLAorICAgICAgc25tcGxpYi90ZXh0X3V0aWxzLmMsIHNubXBsaWIvdG9vbHMuYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmMsIHNubXBsaWIvdWNkX2NvbXBhdC5jLCAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3YzY29uZmlnLCAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3YzdXNtY29uZmlnYmFzZSwgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1N2M3ZhY21jb25maWcsIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDQ5c25tcHYzaW5mb3JtX3NpbXBsZSwgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNDlzbm1wdjNpbmZvcm1hdXRoX3NpbXBsZSwgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTd0cmFwZGF1dGh0ZXN0Ml9zaW1wbGUsIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdDNfc2ltcGxlLCAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1N3RyYXBkYXV0aHRlc3Rfc2ltcGxlLCAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA2MHRyYXBkcGVybF9zaW1wbGUsIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDYxYWdlbnRwZXJsX3NpbXBsZSwgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTNhZ2VudHh0cmFwX3NpbXBsZSwgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTRhZ2VudHhhZ2VudHh0cmFwX3NpbXBsZTogTkVXUzoKKworIHBhY2thZ2luZzogRW5hYmxlIG1pY3JvLWFuZC1tYWNyby1mZWF0dXJlIG1hbmFnZW1lbnQgd2l0aGluCisgTmV0LVNOTVA7IHRoaXMgYWRkcyBhIG51bWJlciBvZiBuZXcgZmxhZ3MgdG8gY29uZmlndXJlCisgKC0tZW5hYmxlLW1pbmltYWxpc3QgYW5kIC0tZW5hYmxlLXJlYWQtb25seSkuICBUaGVzZSBjaGFuZ2VzIGFyZQorIGRlc2lnbmVkIHRvIHJlbW92ZSBtdWNoIG9mIHRoZSBpbmxpbmUgY29kZSB0aGF0IGlzbid0IGFsd2F5cworIG5lY2Vzc2FyeSBvciBkZXNpcmVkLiAgU2NyaXB0cyBleGlzdCAoYW5kIHdpbGwgYmUgaW1wcm92ZWQpIHRvIHN0aXAKKyBvdXQgdW51c2VkIGNvbXBvbmVudHMgZnJvbSB0aGUgY29kZSBlbnRpcmVseSB0byBlbmFibGUgYSBzaG9ydGVyCisgcmV2aWV3IHByb2Nlc3MgZm9yIHVwZ3JhZGluZyB0byBuZXcgcmVsZWFzZXMuICBUaGlzIHdvcmsgd2FzIGRvbmUgYnkKKyBXZXMgSGFyZGFrZXIgYW5kIE1pY2hhZWwgQmFlciBmcm9tIFNQQVJUQSwgSW5jLiBidXQgaXMgYmVpbmcgY2hlY2tlZAorIGluIGFzIGEgbGFyZ2UgcGF0Y2ggc2luY2UgY29udmVydGluZyB0aGUgbWljcm8gcGF0Y2hlcyBmcm9tIGdpdCB0bworIHN2biB0dXJlbmQgb3V0IHRvIGJlIGltcG9zc2libGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTY4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBGQVE6IHVzZSB0aGUgd2lraSBVUkwgaW5zdGVhZCBvZiB0aGUgdHV0b3JpYWwtNSBVUkwgZm9yIHRoZQorCisgc25tcHRyYXAgdHV0b3JpYWwgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTY3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIyICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmM6IFJldmVydCBhIGJvZ3VzIGNoYW5nZSB0aGF0IGNyZXB0CisKKyBpbnRvIHRoZSBjb2RlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AxOTk2NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgQUdFTlQudHh0LCBDSEFOR0VTLCBDT1BZSU5HLCBDaGFuZ2VMb2csIENvZGluZ1N0eWxlLCAKKyAgICAgIEVYQU1QTEUuY29uZi5kZWYsIEZBUSwgSU5TVEFMTCwgTWFrZWZpbGUuYW0sIE1ha2VmaWxlLmluLCAKKyAgICAgIE1ha2VmaWxlLnJ1bGVzLCBNYWtlZmlsZS50b3AsIE5FV1MsIFBPUlRJTkcsIFJFQURNRSwgCisgICAgICBSRUFETUUuUGFuYXNvbmljX0FNM1gudHh0LCBSRUFETUUuYWdlbnQtbWlicywgUkVBRE1FLmFnZW50eCwgCisgICAgICBSRUFETUUuYWl4LCBSRUFETUUuaHB1eDExLCBSRUFETUUuaXJpeCwgUkVBRE1FLmtyYjUsIFJFQURNRS5vc1gsIAorICAgICAgUkVBRE1FLnNubXB2MywgUkVBRE1FLnNvbGFyaXMsIFJFQURNRS5zcWwsIFJFQURNRS50aHJlYWQsIAorICAgICAgUkVBRE1FLnRydTY0LCBSRUFETUUud2luMzIsIFRPRE8sIGFjY29uZmlnLmgsIGFjbG9jYWwubTQsIAorICAgICAgYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9NYWtlZmlsZS5pbiwgYWdlbnQvYWdlbnRfaGFuZGxlci5jLCAKKyAgICAgIGFnZW50L2FnZW50X2luZGV4LmMsIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsIAorICAgICAgYWdlbnQvYWdlbnRfcmVnaXN0cnkuYywgYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5jLCAKKyAgICAgIGFnZW50L2FnZW50X3RyYXAuYywgYWdlbnQvYXV0b19ubGlzdC5jLCBhZ2VudC9hdXRvbmxpc3QuaCwgCisgICAgICBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5pbiwgCisgICAgICBhZ2VudC9oZWxwZXJzL2FsbF9oZWxwZXJzLmMsIGFnZW50L2hlbHBlcnMvYmFieV9zdGVwcy5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvYnVsa190b19uZXh0LmMsIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvZGVidWdfaGFuZGxlci5jLCBhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmMsIAorICAgICAgYWdlbnQvaGVscGVycy9tb2RlX2VuZF9jYWxsLmMsIGFnZW50L2hlbHBlcnMvbXVsdGlwbGV4ZXIuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL251bGwuYywgYWdlbnQvaGVscGVycy9vbGRfYXBpLmMsIAorICAgICAgYWdlbnQvaGVscGVycy9yZWFkX29ubHkuYywgYWdlbnQvaGVscGVycy9yb3dfbWVyZ2UuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3NjYWxhci5jLCBhZ2VudC9oZWxwZXJzL3NjYWxhcl9ncm91cC5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvc2VyaWFsaXplLmMsIGFnZW50L2hlbHBlcnMvc3Rhc2hfY2FjaGUuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3N0YXNoX3RvX25leHQuYywgYWdlbnQvaGVscGVycy90YWJsZS5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYywgYWdlbnQvaGVscGVycy90YWJsZV9jb250YWluZXIuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYywgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsIAorICAgICAgYWdlbnQvaGVscGVycy90YWJsZV9nZW5lcmljLmMsIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX3Jvdy5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX3RkYXRhLmMsIAorICAgICAgYWdlbnQvaGVscGVycy93YXRjaGVyLmMsIGFnZW50L2tlcm5lbC5jLCBhZ2VudC9rZXJuZWwuaCwgCisgICAgICBhZ2VudC9tMm0uaCwgYWdlbnQvbWliX21vZHVsZXMuYywgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmluLCBhZ2VudC9taWJncm91cC9SRUFETUUsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvUkVBRE1FLnNtdXgsIGFnZW50L21pYmdyb3VwL1Jtb24uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9SbW9uL1JFQURNRSwgYWdlbnQvbWliZ3JvdXAvUm1vbi9hZ3V0aWwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9SbW9uL2FndXRpbC5oLCBhZ2VudC9taWJncm91cC9SbW9uL2FndXRpbF9hcGkuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9SbW9uL2FsYXJtLmMsIGFnZW50L21pYmdyb3VwL1Jtb24vYWxhcm0uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL1Jtb24vYWxhcm1UYWJsZS5oLCAgYWdlbnQvbWliZ3JvdXAvUm1vbi9ldmVudC5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvUm1vbi9ldmVudC5oLCAgYWdlbnQvbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmMsCisgICAgICBhZ2VudC9taWJncm91cC9SbW9uL2hpc3RvcnkuaCwgIGFnZW50L21pYmdyb3VwL1Jtb24vcm93X2FwaS5oLAorICAgICAgYWdlbnQvbWliZ3JvdXAvUm1vbi9yb3dzLmMsICBhZ2VudC9taWJncm91cC9SbW9uL3Jvd3MuaCwKKyAgICAgIGFnZW50L21pYmdyb3VwL1Jtb24vc3RhdGlzdGljcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL1Jtb24vc3RhdGlzdGljcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL1Jtb24vdGVzdF9hbGFybS5zaCwgCisgICAgICBhZ2VudC9taWJncm91cC9SbW9uL3Rlc3RfaGlzdC5zaCwgYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmgsIGFnZW50L21pYmdyb3VwL2FnZW50L25zQ2FjaGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc0NhY2hlLmgsIGFnZW50L21pYmdyb3VwL2FnZW50L25zRGVidWcuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc0RlYnVnLmgsIGFnZW50L21pYmdyb3VwL2FnZW50L25zTG9nZ2luZy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zTG9nZ2luZy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zTW9kdWxlVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50X21pYnMuaCwgYWdlbnQvbWliZ3JvdXAvYWdlbnR4LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9jbGllbnQuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmMsCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2RlZmF1bHRfbW9kdWxlcy5oLCBhZ2VudC9taWJncm91cC9kaXNtYW4uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQtbWliLmgsIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudENvbmYuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRDb25mLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFNldFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzQ29uZi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzQ29uZi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVNjYWxhcnMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlU2NhbGFycy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJDb25mLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJDb25mLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJEZWx0YVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJEZWx0YVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXJyb3JUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEVycm9yVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25Db25mLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbkNvbmYuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3QuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3QuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3RDb25mLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0Q29uZi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBTY2FsYXJzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwU2NhbGFycy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cFZhbHVlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwVmFsdWUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBWYWx1ZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwVmFsdWVUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cF9lbnVtLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24tbWliLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFcnJvclRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXJyb3JUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEV4cHJlc3Npb25UYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEV4cHJlc3Npb25UYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cE9iamVjdFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwT2JqZWN0VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBWYWx1ZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwVmFsdWVUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVFdmVudFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVPYmplY3RzVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwLW1pYi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBSZXN1bHRzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwUmVzdWx0c1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL29sZC1ldmVudC1taWIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy1taWIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUHJvYmVIaXN0b3J5VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUHJvYmVIaXN0b3J5VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUmVzdWx0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Jlc3VsdHNUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvbmYuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb25mLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvcmUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUtbWliLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUhvcHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVIb3BzVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZGF0YV9hY2Nlc3MvZG90M3N0YXRzX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX2FjYworICAgICAgIGVzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9hY2MKKyAgICAgICBlc3MuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfZ2V0CisgICAgICAgLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX2dldAorICAgICAgIC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9zZXQKKyAgICAgICAuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfc2V0CisgICAgICAgLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9lbnVtcy5oLAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2ludGVyZmFjCisgICAgICAgZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfaW50ZXJmYWMKKyAgICAgICBlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9vaWRzLmgsCisgICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9pb2N0bF9pbXBfY29tbW9uLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMuaCwgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvTWFrZWZpbGUuZGxtb2QsCisgICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZGF0YV9zZXQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9kYXRhX3NldC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jb2x1bW5zLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfZW51bXMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9ub3RpZmljYXRpb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9ub3RpZmljYXRpb24uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9zY2FsYXJfaW50LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvc2NhbGFyX2ludC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy91Y2REZW1vUHVibGljLmNtZHMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5jb25mLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy93YXRjaGVkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvd2F0Y2hlZC5oLCBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfa2VybmRhdGEuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2tlcm5kYXRhLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9raW5mby5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfa2luZm8uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2tzdGF0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9rc3RhdC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9tYWNoLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9tYWNoLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9ubGlzdC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbmxpc3QuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X251bGwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X251bGwuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3BjcC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfcGNwLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9wZXJmc3RhdC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfcGVyZnN0YXQuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3BzdGF0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9wc3RhdC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9zeXNjdGwuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2luZm8uYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2luZm8uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX2dldGZzc3RhdHMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50Y3RsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX21udGVudC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvaHdfZnN5cy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvaHdfZnN5cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvbW50dHlwZXMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL21vdW50cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9od19tZW0uYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvaHdfbWVtLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9haXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2Rhcndpbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfZHluaXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2ZyZWVic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2hwdXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2lyaXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9saW51eC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfbmV0YnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9udWxsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9zb2xhcmlzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV93aW4uYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9kdW1teV9zZW5zb3JzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9kdW1teV9zZW5zb3JzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9od19zZW5zb3JzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9od19zZW5zb3JzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9rc3RhdF9zZW5zb3JzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9rc3RhdF9zZW5zb3JzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjIuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192Mi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvbG1zZW5zb3JzX3YzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL3BpY2xkX3NlbnNvcnMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL3BpY2xkX3NlbnNvcnMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jLCBhZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QuaCwgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X2Rhcndpbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X251bGwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcnBtLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2N5Z3dpbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fZGFyd2luLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9raW5mby5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fa3ZtX3Byb2MuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX25saXN0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9udWxsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jZnNfcHNpbmZvLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jZnNfc3RhdHVzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jaW5mby5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJwc2luZm8uYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3BzdGF0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX2RldmljZS5jLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX2RldmljZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZGlzay5jLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfbmV0d29yay5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmgsICBhZ2VudC9taWJncm91cC9ob3N0L2hyX290aGVyLmMsCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX290aGVyLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wYXJ0aXRpb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3BhcnRpdGlvbi5oLAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wcmludC5jLCAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wcmludC5oLAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wcm9jLmMsICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3Byb2MuaCwKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3aW5zdC5jLAorICAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmgsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmgsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uaCwKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJoX2ZpbGVzeXMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocmhfc3RvcmFnZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJoX3N0b3JhZ2UuaCwgYWdlbnQvbWliZ3JvdXAvaG9zdF9yZXMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfaW9jdGwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfb3BlbmJzZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc29sYXJpczIuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX3N5c2N0bC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc3lzY3RsLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfY29uc3RhbnRzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RlZnMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2NvbnN0YW50cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9kYXRhX2FjY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9kYXRhX2FjY2Vzcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2NvbW1vbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2lvY3RsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfaW9jdGwuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2xpbnV4LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZQorICAgICAgIC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUKKyAgICAgICAuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlCisgICAgICAgX2NvbnN0YW50cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUKKyAgICAgICBfZGF0YV9hY2Nlc3MuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlCisgICAgICAgX2RhdGFfYWNjZXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZQorICAgICAgIF9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlCisgICAgICAgX2ludGVyZmFjZS5oLCBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlLmMsCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5oLAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfY29uCisgICAgICAgc3RhbnRzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2RhdAorICAgICAgIGFfYWNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2RhdAorICAgICAgIGFfYWNjZXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludAorICAgICAgIGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnQKKyAgICAgICBlcmZhY2UuaCwgYWdlbnQvbWliZ3JvdXAvaXAtbWliLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zb2xhcmlzMi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcHY2c2NvcGV6b25lLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwdjZzY29wZXpvbmVfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwdjZzY29wZXpvbmVfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFyc19jb21tb24uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFyc19saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfc29sYXJpczIuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9jb25zdAorICAgICAgIGFudHMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2RhdGFfCisgICAgICAgYWNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9kYXRhXworICAgICAgIGFjY2Vzcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXIKKyAgICAgICBmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcgorICAgICAgIGZhY2UuaCwgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlLmMsCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5oLAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfY29uCisgICAgICAgc3RhbnRzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2RhdAorICAgICAgIGFfYWNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2RhdAorICAgICAgIGFfYWNjZXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2ludAorICAgICAgIGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9pbnQKKyAgICAgICBlcmZhY2UuaCwgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2NvbnN0YW50cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfZGF0YV9hY2Nlc3MuaCwKKyAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2ludGVyZmFjZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZS5jLAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuaCwKKyAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdAorICAgICAgIGFfYWNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdAorICAgICAgIGFfYWNjZXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdAorICAgICAgIGFfZ2V0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdAorICAgICAgIGFfZ2V0LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2VudQorICAgICAgIG1zLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2ludAorICAgICAgIGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnQKKyAgICAgICBlcmZhY2UuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfb2lkCisgICAgICAgcy5oLCBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmgsCisgICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2VudW1zLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfb2lkcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfY29uc3RhbgorICAgICAgIHRzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfZGF0YV9hYworICAgICAgIGNlc3MuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9kYXRhX2FjCisgICAgICAgY2Vzcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmEKKyAgICAgICBjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmEKKyAgICAgICBjZS5oLCBhZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcF9zY2FsYXJzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9jb25zdGFuCisgICAgICAgdHMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9kYXRhX2FjCisgICAgICAgY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlX2RhdGFfYWMKKyAgICAgICBjZXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGVfaW50ZXJmYQorICAgICAgIGNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGVfaW50ZXJmYQorICAgICAgIGNlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGVfc3ViYWdlbgorICAgICAgIHQuYywgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUvaXB2NkludGVyZmFjZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZV9jb25zdGFuCisgICAgICAgdHMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZV9kYXRhX2FjCisgICAgICAgY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUvaXB2NkludGVyZmFjZVRhYmxlX2RhdGFfYWMKKyAgICAgICBjZXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGVfaW50ZXJmYQorICAgICAgIGNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGVfaW50ZXJmYQorICAgICAgIGNlLmgsIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWIKKyAgICAgICBsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWIKKyAgICAgICBsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWIKKyAgICAgICBsZV9kYXRhX2FjY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWIKKyAgICAgICBsZV9kYXRhX2FjY2Vzcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWIKKyAgICAgICBsZV9lbnVtcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWIKKyAgICAgICBsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFiCisgICAgICAgbGVfaW50ZXJmYWNlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYgorICAgICAgIGxlX29pZHMuaCwgYWdlbnQvbWliZ3JvdXAvaXBmd2NoYWlucy9SRUFETUUsIAorICAgICAgYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5jLCBhZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkuaCwgYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9hdC5oLCBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5oLCBhZ2VudC9taWJncm91cC9taWJJSS9pZlRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuaCwgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcC5oLCBhZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY29sdW1ucy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQ2lkclJvdXRlVGFibGVfZW51bXMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcHY2LmMsIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguaCwgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbmV0YnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX25ldGJzZC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL21pYklJX2NvbW1vbi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL210YV9zZW5kbWFpbC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL210YV9zZW5kbWFpbC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX2hlYWRlcnMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV93cml0ZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX3dyaXRlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc2V0U2VyaWFsTm8uYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zZXRTZXJpYWxOby5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWJfNV81LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWJfNV81LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5oLCBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuaCwgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5oLCBhZ2VudC9taWJncm91cC9taWJJSS91ZHAuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS91ZHAuaCwgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS91ZHBUYWJsZS5oLCBhZ2VudC9taWJncm91cC9taWJJSS91cGRhdGVzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdXBkYXRlcy5oLCBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbnRleHQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbnRleHQuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmgsICBhZ2VudC9taWJncm91cC9taWJkZWZzLmgsCisgICAgICBhZ2VudC9taWJncm91cC9taWJpbmNsLmgsICBhZ2VudC9taWJncm91cC9taXNjL2lwZndhY2MuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL21pc2MvaXBmd2FjYy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9kYXRhX2FjY2Vzcy9ldGhlcnN0YXRzX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfYWNjZXNzCisgICAgICAgLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2FjY2VzcworICAgICAgIC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9nZXQuYywKKyAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2dldC5oLAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfc2V0LmMsCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9zZXQuaCwKKyAgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2VudW1zLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuYworICAgICAgICwgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZS5oCisgICAgICAgLCBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX29pZHMuaCwKKyAgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvaW9jdGxfaW1wX2NvbW1vbi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXguYywgYWdlbnQvbWliZ3JvdXAvc211eC5oLAorICAgICAgIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jLCBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zbXV4L3NubXBfYmdwLmMsIGFnZW50L21pYmdyb3VwL3NtdXgvc25tcF9iZ3AuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zbXV4L3NubXBfb3NwZi5jLCBhZ2VudC9taWJncm91cC9zbXV4L3NubXBfb3NwZi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NtdXgvc25tcF9yaXAyLmMsIGFnZW50L21pYmdyb3VwL3NtdXgvc25tcF9yaXAyLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc211eF9nYXRlZC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpCisgICAgICAgZnlGaWx0ZXJUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGkKKyAgICAgICBmeUZpbHRlclRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aQorICAgICAgIGZ5RmlsdGVyVGFibGVfY29uc3RhbnRzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aQorICAgICAgIGZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3MuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpCisgICAgICAgZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGkKKyAgICAgICBmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGkKKyAgICAgICBmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhQYXJhbWV0ZXJzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhQYXJhbWV0ZXJzL3VzbURIUGFyYW1ldAorICAgICAgIGVycy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIUGFyYW1ldGVycy91c21ESFBhcmFtZXQKKyAgICAgICBlcnMuaCwKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VySworICAgICAgIGV5VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLCisgICAgICAgZXlUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcksKKyAgICAgICBleVRhYmxlX2RhdGFfYWNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VySworICAgICAgIGV5VGFibGVfZGF0YV9hY2Nlc3MuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLCisgICAgICAgZXlUYWJsZV9kYXRhX2dldC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcksKKyAgICAgICBleVRhYmxlX2RhdGFfZ2V0LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VySworICAgICAgIGV5VGFibGVfZGF0YV9zZXQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLCisgICAgICAgZXlUYWJsZV9kYXRhX3NldC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcksKKyAgICAgICBleVRhYmxlX2RveHlnZW4uY29uZiwgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLCisgICAgICAgZXlUYWJsZV9lbnVtcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcksKKyAgICAgICBleVRhYmxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcksKKyAgICAgICBleVRhYmxlX2ludGVyZmFjZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcksKKyAgICAgICBleVRhYmxlX29pZHMuaCwgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0c181XzUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Db25mLmMsIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Db25mLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmMsCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHNfNV81LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzXzVfNS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmMsIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzbWlicy5oLCBhZ2VudC9taWJncm91cC9zdHJ1Y3QuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0LmMsIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXQuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy9NYWtlZmlsZSwgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm4uaCwgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX3ByaXZhdGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fc29sYXJpczIuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5UYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2NvbnN0YQorICAgICAgIG50cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2EKKyAgICAgICBjY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2EKKyAgICAgICBjY2Vzcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmYKKyAgICAgICBhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfaW50ZXJmCisgICAgICAgYWNlLmgsIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9jb25zdGFudHMuCisgICAgICAgaCwgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9kYXRhX2FjY2VzCisgICAgICAgcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2RhdGFfYWNjZXMKKyAgICAgICBzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfaW50ZXJmYWNlLgorICAgICAgIGMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfaW50ZXJmYWNlLgorICAgICAgIGgsIGFnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmMsIGFnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdHVubmVsLmgsIGFnZW50L21pYmdyb3VwL3R1bm5lbC90dW5uZWwuYywgCisgICAgICBhZ2VudC9taWJncm91cC90dW5uZWwvdHVubmVsLmgsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmgsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5oLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jLAorICAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXJyb3JtaWIuYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZmlsZS5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9maWxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvaHB1eC5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9ocHV4LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1TZW5zb3JzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1TZW5zb3JzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1zZW5zb3JzTWliLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1zZW5zb3JzTWliLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2dtYXRjaC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5LmMsCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnkuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfYWl4NC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9haXg0LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2RhcndpbjcuYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9keW5peC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9keW5peC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9ocHV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2hwdXguaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm9jLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYywgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0LmMsCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYWl4NC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2JzZGk0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2JzZGk0LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2RhcndpbjcuYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2hwdXguaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbGludXguaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkX3NubXAuaCwgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9wcml2YXRlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfc29sYXJpczIuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfY29uc3RhbnRzLgorICAgICAgIGgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfZGF0YV9hY2NlcworICAgICAgIHMuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9kYXRhX2FjY2VzCisgICAgICAgcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2ludGVyZmFjZS4KKyAgICAgICBjLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2ludGVyZmFjZS4KKyAgICAgICBoLCBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMsIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuYywgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzLmgsIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9leGVjdXRlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2V4ZWN1dGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMuYywgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdmVyc2lvbnRhZywgYWdlbnQvbWliZ3JvdXAvd2luRXh0RExMLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvd2luRXh0RExMLmgsIGFnZW50L29iamVjdF9tb25pdG9yLmMsIAorICAgICAgYWdlbnQvc25tcF9hZ2VudC5jLCBhZ2VudC9zbm1wX3BlcmwuYywgYWdlbnQvc25tcF9wZXJsLmgsIAorICAgICAgYWdlbnQvc25tcF9wZXJsLnBsLCBhZ2VudC9zbm1wX3ZhcnMuYywgYWdlbnQvc25tcGQuYywgCisgICAgICBhZ2VudC9zbm1wZC5oLCBhcHBzL01ha2VmaWxlLmRlcGVuZCwgYXBwcy9NYWtlZmlsZS5pbiwgCisgICAgICBhcHBzL2VuY29kZV9rZXljaGFuZ2UuYywgYXBwcy9zbm1wX3BlcmxfdHJhcGQucGwsIAorICAgICAgYXBwcy9zbm1wYnVsa2dldC5jLCBhcHBzL3NubXBidWxrd2Fsay5jLCBhcHBzL3NubXBkZWx0YS5jLCAKKyAgICAgIGFwcHMvc25tcGRmLmMsIGFwcHMvc25tcGdldC5jLCBhcHBzL3NubXBnZXRuZXh0LmMsIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQsIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9mZnMuYywgYXBwcy9zbm1wbmV0c3RhdC9pZi5jLCAKKyAgICAgIGFwcHMvc25tcG5ldHN0YXQvaW5ldC5jLCBhcHBzL3NubXBuZXRzdGF0L2luZXQ2LmMsIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9tYWluLmMsIGFwcHMvc25tcG5ldHN0YXQvbWFpbi5oLCAKKyAgICAgIGFwcHMvc25tcG5ldHN0YXQvbmV0c3RhdC5oLCBhcHBzL3NubXBuZXRzdGF0L3JvdXRlLmMsIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC93aW5zdHViLmMsIGFwcHMvc25tcG5ldHN0YXQvd2luc3R1Yi5oLCAKKyAgICAgIGFwcHMvc25tcHNldC5jLCBhcHBzL3NubXBzdGF0dXMuYywgYXBwcy9zbm1wdGFibGUuYywgCisgICAgICBhcHBzL3NubXB0ZXN0LmMsIGFwcHMvc25tcHRyYW5zbGF0ZS5jLCBhcHBzL3NubXB0cmFwLmMsIAorICAgICAgYXBwcy9zbm1wdHJhcGQuYywgYXBwcy9zbm1wdHJhcGRfYXV0aC5jLCBhcHBzL3NubXB0cmFwZF9hdXRoLmgsIAorICAgICAgYXBwcy9zbm1wdHJhcGRfZHMuaCwgYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYywgCisgICAgICBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5oLCBhcHBzL3NubXB0cmFwZF9sb2cuYywgCisgICAgICBhcHBzL3NubXB0cmFwZF9sb2cuaCwgYXBwcy9zbm1wdHJhcGRfc3FsLmMsIGFwcHMvc25tcHVzbS5jLCAKKyAgICAgIGFwcHMvc25tcHZhY20uYywgYXBwcy9zbm1wd2Fsay5jLCBhcHBzL3NzaHRvc25tcC5jLCBjb25maWcuZ3Vlc3MsIAorICAgICAgY29uZmlnLnN1YiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfYWdlbnQsIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2xpYiwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zLCBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVycywgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczEsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMiwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzEsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMiwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzMsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjNCwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfcHJvZ3MsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVycywKKyAgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9pcHY2X3R5cGVzLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X21hbnVhbCwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wYXRocywgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wZXJsX3B5dGhvbiwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF90eXBlcywgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZSwgZGlzdC9NYWtlZmlsZSwgCisgICAgICBkaXN0L1JFQURNRS5idWlsZC1zY3JpcHRzLCBkaXN0L1JFTEVBU0UtSU5TVFJVQ1RJT05TLCAKKyAgICAgIGRpc3QvYXV0b2NvbmYtdmVyc2lvbiwgZGlzdC9jaGFuZ2Vsb2dmaXgsIGRpc3QvY2hlY2stYXBpLWNoYW5nZSwgCisgICAgICBkaXN0L2N2c3Nob3csIGRpc3QvY3ZzdXAsIGRpc3QvZXh0cmFjdG5ld3MsIGRpc3QvZmluZC1yZXF1aXJlcywgCisgICAgICBkaXN0L21ha2VyZWxlYXNlLnhtbCwgZGlzdC9uZXQtc25tcC1zb2xhcmlzLWJ1aWxkL0RFVkVOViwgCisgICAgICBkaXN0L25ldC1zbm1wLXNvbGFyaXMtYnVpbGQvUkVBRE1FLCAKKyAgICAgIGRpc3QvbmV0LXNubXAtc29sYXJpcy1idWlsZC9idWlsZHBhY2thZ2Utc29sYXJpcywgCisgICAgICBkaXN0L25ldC1zbm1wLXNvbGFyaXMtYnVpbGQvZWxmZGVwZW5kLnNoLCBkaXN0L25ldC1zbm1wLnNwZWMsIAorICAgICAgZGlzdC9uc2ItY29uZmlnLCBkaXN0L25zYi1mdW5jdGlvbnMsIGRpc3QvbnNiLW5pZ2h0bHksIAorICAgICAgZGlzdC9uc2ItcGFja2FnZSwgZGlzdC9uc2ItcGxhdGZvcm0sIGRpc3QvcGF0bWUsIAorICAgICAgZGlzdC9zY2hlbWEtc25tcHRyYXBkLnNxbCwgZGlzdC9zbm1wZC1pbml0LmQsIAorICAgICAgZGlzdC9zbm1wdHJhcGQtaW5pdC5kLCBkaXN0L3N2bnVwLCBkb2MvcmZjL2FnZW50eC9yZmMyNzQxLnR4dCwgCisgICAgICBkb2MvcmZjL21pc2MvcmZjMzUxMi50eHQsIGRvYy9yZmMvbWlzYy9yZmMzNTg0LnR4dCwgCisgICAgICBkb2MvcmZjL3NtaVYyL3JmYzI1NzgudHh0LCBkb2MvcmZjL3NtaVYyL3JmYzI1NzkuZXJyYXRhLCAKKyAgICAgIGRvYy9yZmMvc21pVjIvcmZjMjU3OS50eHQsIGRvYy9yZmMvc21pVjIvcmZjMjU4MC50eHQsIAorICAgICAgZG9jL3JmYy9zbm1wVjEvcmZjMTE1NS50eHQsIGRvYy9yZmMvc25tcFYxL3JmYzExNTcudHh0LCAKKyAgICAgIGRvYy9yZmMvc25tcFYxL3JmYzEyMTIudHh0LCBkb2MvcmZjL3NubXBWMS9yZmMxMjEzLnR4dCwgCisgICAgICBkb2MvcmZjL3NubXBWMi9yZmMxOTAxLnR4dCwgZG9jL3JmYy9zbm1wVjIvcmZjMTkwMi50eHQsIAorICAgICAgZG9jL3JmYy9zbm1wVjIvcmZjMTkwMy50eHQsIGRvYy9yZmMvc25tcFYyL3JmYzE5MDQudHh0LCAKKyAgICAgIGRvYy9yZmMvc25tcFYyL3JmYzE5MDUudHh0LCBkb2MvcmZjL3NubXBWMi9yZmMxOTA2LnR4dCwgCisgICAgICBkb2MvcmZjL3NubXBWMi9yZmMxOTA3LnR4dCwgZG9jL3JmYy9zbm1wVjIvcmZjMTkwOC50eHQsIAorICAgICAgZG9jL3JmYy9zbm1wVjIvcmZjMjA4OS50eHQsIGRvYy9yZmMvc25tcFYzL3JmYzM0MTAuZXJyYXRhLCAKKyAgICAgIGRvYy9yZmMvc25tcFYzL3JmYzM0MTAudHh0LCBkb2MvcmZjL3NubXBWMy9yZmMzNDExLnR4dCwgCisgICAgICBkb2MvcmZjL3NubXBWMy9yZmMzNDEyLnR4dCwgZG9jL3JmYy9zbm1wVjMvcmZjMzQxMy5lcnJhdGEsIAorICAgICAgZG9jL3JmYy9zbm1wVjMvcmZjMzQxMy50eHQsIGRvYy9yZmMvc25tcFYzL3JmYzM0MTQuZXJyYXRhLCAKKyAgICAgIGRvYy9yZmMvc25tcFYzL3JmYzM0MTQudHh0LCBkb2MvcmZjL3NubXBWMy9yZmMzNDE1LmVycmF0YSwgCisgICAgICBkb2MvcmZjL3NubXBWMy9yZmMzNDE1LnR4dCwgZG9jL3JmYy9zbm1wVjMvcmZjMzQxNi50eHQsIAorICAgICAgZG9jL3JmYy9zbm1wVjMvcmZjMzQxNy50eHQsIGRvYy9yZmMvc25tcFYzL3JmYzM0MTguZXJyYXRhLCAKKyAgICAgIGRvYy9yZmMvc25tcFYzL3JmYzM0MTgudHh0LCBkb3RnZGJpbml0LCBkb3h5Z2VuLmNvbmYsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2luZGV4LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3N5c09SVGFibGUuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hdXRvX25saXN0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9jcHUuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2ZzeXMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL21lbW9yeS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvc2Vuc29ycy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaCwgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L29iamVjdF9tb25pdG9yLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2V0X2hlbHBlci5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3Rhc2hfdG9fbmV4dC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oLCBpbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2FycC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlci5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pcF9zY2FsYXJzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwc3RhdHMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL25ldC1zbm1wLWRhdGEtYWNjZXNzLWluY2x1ZGVzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9yb3V0ZS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc2NvcGV6b25lLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zd2luc3QuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvdGNwQ29ubi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oLCBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvUkVBRE1FLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY211X2NvbXBhdC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbnVsbC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kaXJfdXRpbHMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZpbGVfdXRpbHMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9saWJzbm1wLmgsCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWQ1LmgsICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQUFMNVBWQ0RvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQWxpYXNEb21haW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBEVExTVURQRG9tYWluLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFNTSERvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wU1RERG9tYWluLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9vcGVuc3NsLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcGtzbS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90ZXh0X3V0aWxzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS93aW5waXBlLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3dpbnNlcnZpY2UuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oLCBpbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaCwgaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oLCBpbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9haXguaCwgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vYnNkLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vYnNkaS5oLCBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9ic2RpMy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2JzZGk0LmgsIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2N5Z3dpbi5oLAorICAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2Rhcndpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjcuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW44LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luOS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RyYWdvbmZseS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2R5bml4LmgsCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZnJlZWJzZDIuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkMy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2ZyZWVic2Q0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZnJlZWJzZDUuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkNi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2ZyZWVic2Q3LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oLCBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9ocHV4LmgsCisgICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vaXJpeC5oLAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0va2ZyZWVic2QuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oLAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbWluZ3czMi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL21pbmd3MzJtc3ZjLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbWlwcy5oLCBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9uZXRic2QuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9vcGVuYnNkLmgsIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL29zZjUuaCwKKyAgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zb2xhcmlzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc29sYXJpczIuMy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3NvbGFyaXMyLjQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zb2xhcmlzMi41LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc29sYXJpczIuNi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N1bm9zLmgsIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N2cjUuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgsIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3VsdHJpeDQuaCwKKyAgICAgICBpbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgsIGluY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oLCBpbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaCwgCisgICAgICBpbmNsdWRlL3VjZC1zbm1wL1JFQURNRSwgaW5jbHVkZS91Y2Qtc25tcC9hZ2VudF9pbmRleC5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvYWdlbnRfcmVhZF9jb25maWcuaCwgCisgICAgICBpbmNsdWRlL3VjZC1zbm1wL2FnZW50X3JlZ2lzdHJ5LmgsIGluY2x1ZGUvdWNkLXNubXAvYWdlbnRfdHJhcC5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvYXNuMS5oLCBpbmNsdWRlL3VjZC1zbm1wL2F1dG9fbmxpc3QuaCwgCisgICAgICBpbmNsdWRlL3VjZC1zbm1wL2NhbGxiYWNrLmgsIGluY2x1ZGUvdWNkLXNubXAvZGVmYXVsdF9zdG9yZS5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvZHNfYWdlbnQuaCwgaW5jbHVkZS91Y2Qtc25tcC9oZWFkZXJfY29tcGxleC5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvaW50NjQuaCwgaW5jbHVkZS91Y2Qtc25tcC9rZXl0b29scy5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvbWliLmgsIGluY2x1ZGUvdWNkLXNubXAvbWliX21vZHVsZV9jb25maWcuaCwgCisgICAgICBpbmNsdWRlL3VjZC1zbm1wL21pYmluY2wuaCwgaW5jbHVkZS91Y2Qtc25tcC9wYXJzZS5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvcmVhZF9jb25maWcuaCwgaW5jbHVkZS91Y2Qtc25tcC9zY2FwaS5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvc25tcC10Yy5oLCBpbmNsdWRlL3VjZC1zbm1wL3NubXAuaCwgCisgICAgICBpbmNsdWRlL3VjZC1zbm1wL3NubXBfYWdlbnQuaCwgaW5jbHVkZS91Y2Qtc25tcC9zbm1wX2FsYXJtLmgsIAorICAgICAgaW5jbHVkZS91Y2Qtc25tcC9zbm1wX2FwaS5oLCBpbmNsdWRlL3VjZC1zbm1wL3NubXBfY2xpZW50LmgsIAorICAgICAgaW5jbHVkZS91Y2Qtc25tcC9zbm1wX2RlYnVnLmgsIGluY2x1ZGUvdWNkLXNubXAvc25tcF9pbXBsLmgsIAorICAgICAgaW5jbHVkZS91Y2Qtc25tcC9zbm1wX2xvZ2dpbmcuaCwgCisgICAgICBpbmNsdWRlL3VjZC1zbm1wL3NubXBfcGFyc2VfYXJncy5oLCBpbmNsdWRlL3VjZC1zbm1wL3NubXBfdmFycy5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvc25tcHVzbS5oLCBpbmNsdWRlL3VjZC1zbm1wL3NubXB2My5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvc3RydWN0LmgsIGluY2x1ZGUvdWNkLXNubXAvc3lzdGVtLmgsIAorICAgICAgaW5jbHVkZS91Y2Qtc25tcC90b29scy5oLCBpbmNsdWRlL3VjZC1zbm1wL3RyYW5zZm9ybV9vaWRzLmgsIAorICAgICAgaW5jbHVkZS91Y2Qtc25tcC91Y2Qtc25tcC1hZ2VudC1pbmNsdWRlcy5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvdWNkLXNubXAtY29uZmlnLmgsIAorICAgICAgaW5jbHVkZS91Y2Qtc25tcC91Y2Qtc25tcC1pbmNsdWRlcy5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvdXRpbF9mdW5jcy5oLCBpbmNsdWRlL3VjZC1zbm1wL3Zhcl9zdHJ1Y3QuaCwgCisgICAgICBpbmNsdWRlL3VjZC1zbm1wL3ZlcnNpb24uaCwgaW5zdGFsbC1zaCwgbG9jYWwvRkFRMkhUTUwsIAorICAgICAgbG9jYWwvTWFrZWZpbGUuaW4sIGxvY2FsL1JFQURNRS5taWIyYywgbG9jYWwvVmVyc2lvbi1NdW5nZS5wbCwgCisgICAgICBsb2NhbC9jb252ZXJ0Y29kZSwgbG9jYWwvZml4cHJvYywgbG9jYWwvaHRtbC1hZGQtaGVhZGVyLWZvb3Rlci5wbCwKKyAgICAgICBsb2NhbC9odG1sLXRleHRmaWxlLWZpeC5wbCwgbG9jYWwvaXBmLW1vZC5wbCwgbG9jYWwvbWliMmMsIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2RlZmF1bHQtbWZkLXRvcC5tMmMsIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2RldGFpbHMtZW51bXMubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9kZXRhaWxzLW5vZGUubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9kZXRhaWxzLXRhYmxlLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1jdHgtY29weS5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtY3R4LWdldC5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtY3R4LXNldC5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtZGF0YS1hbGxvY2F0ZS5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtZGF0YS1jb250ZXh0Lm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1nZXQtY2hhci5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtZ2V0LWRlY2wtYm90Lm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1nZXQtZGVjbC5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtZ2V0LWxvbmcubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLWdldC1vaWQubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLWhlYWRlci1ib3R0b20ubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLWhlYWRlci10b3AubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLXNvdXJjZS1pbmNsdWRlcy5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtdGFibGUtY29uc3RhbnRzLm0yYywgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy10YWJsZS1lbnVtcy5tMmMsIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtdGFibGUtaW5kZXhlcy1mcm9tLW9pZC5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtdGFibGUtaW5kZXhlcy1zZXQubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLXRhYmxlLWluZGV4ZXMtdG8tb2lkLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy10YWJsZS1pbmRleGVzLXZhcmJpbmQtc2V0dXAubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLXRhYmxlLWluZGV4ZXMubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLXRhYmxlLW9pZHMubTJjLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLXZhbHVlLW1hcC1mdW5jLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy12YWx1ZS1tYXAtcmV2ZXJzZS5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtdmFsdWUtbWFwLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbTJjLWludGVybmFsLXdhcm5pbmcubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9tMmNfc2V0dXBfZW51bS5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL20yY19zZXR1cF9ub2RlLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbTJjX3NldHVwX3RhYmxlLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbTJjX3RhYmxlX3NhdmVfZGVmYXVsdHMubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9tZmQtYWNjZXNzLWNvbnRhaW5lci1jYWNoZWQtZGVmaW5lcy5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL21mZC1hY2Nlc3MtdW5zb3J0ZWQtZXh0ZXJuYWwtZGVmaW5lcy5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL21mZC1kYXRhLWFjY2Vzcy5tMmMsIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL21mZC1kYXRhLWdldC5tMmMsIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL21mZC1kYXRhLXNldC5tMmMsIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL21mZC1kb3h5Z2VuLm0yYywgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyYWN0aXZlLXNldHVwLm0yYywgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyZmFjZS5tMmMsIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL21mZC1tYWtlZmlsZS5tMm0sIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL21mZC1wZXJzaXN0ZW5jZS5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL21mZC1yZWFkbWUubTJjLCBsb2NhbC9taWIyYy1jb25mLmQvbWZkLXRvcC5tMmMsCisgICAgICAgbG9jYWwvbWliMmMtY29uZi5kL25vZGUtZ2V0Lm0yaSwgbG9jYWwvbWliMmMtY29uZi5kL25vZGUtc2V0Lm0yaSwKKyAgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbm9kZS1zdG9yYWdlLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbm9kZS12YWxpZGF0ZS5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL25vZGUtdmFyYmluZC12YWxpZGF0ZS5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL3BhcmVudC1kZXBlbmRlbmNpZXMubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9wYXJlbnQtc2V0Lm0yaSwKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9zdWJhZ2VudC5tMmMsIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL3N5bnRheC1DT1VOVEVSNjQtZ2V0Lm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvc3ludGF4LURhdGVBbmRUaW1lLWdldC5tMmQsIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL3N5bnRheC1EYXRlQW5kVGltZS1nZXQubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9zeW50YXgtRGF0ZUFuZFRpbWUtcmVhZG1lLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvc3ludGF4LUluZXRBZGRyZXNzLWdldC5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL3N5bnRheC1JbmV0QWRkcmVzcy1zZXQubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9zeW50YXgtSW5ldEFkZHJlc3NUeXBlLWdldC5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL3N5bnRheC1JbmV0QWRkcmVzc1R5cGUtc2V0Lm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvc3ludGF4LVJvd1N0YXR1cy1kZXBlbmRlbmNpZXMubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9zeW50YXgtUm93U3RhdHVzLWdldC5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL3N5bnRheC1Sb3dTdGF0dXMtdmFyYmluZC12YWxpZGF0ZS5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL3N5bnRheC1TdG9yYWdlVHlwZS1kZXBlbmRlbmNpZXMubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9zeW50YXgtVGVzdEFuZEluY3ItZ2V0Lm0yaSwgbG9jYWwvbWliMmMtdXBkYXRlLAorICAgICAgIGxvY2FsL21pYjJjLmFjY2Vzc19mdW5jdGlvbnMuY29uZiwgbG9jYWwvbWliMmMuYXJyYXktdXNlci5jb25mLCAKKyAgICAgIGxvY2FsL21pYjJjLmNoZWNrX3ZhbHVlcy5jb25mLAorICAgICAgbG9jYWwvbWliMmMuY2hlY2tfdmFsdWVzX2xvY2FsLmNvbmYsIAorICAgICAgbG9jYWwvbWliMmMuY29sdW1uX2RlZmluZXMuY29uZiwgbG9jYWwvbWliMmMuY29sdW1uX2VudW1zLmNvbmYsIAorICAgICAgbG9jYWwvbWliMmMuY29sdW1uX3N0b3JhZ2UuY29uZiwgbG9jYWwvbWliMmMuY29uZiwgCisgICAgICBsb2NhbC9taWIyYy5jb250YWluZXIuY29uZiwgbG9jYWwvbWliMmMuY3JlYXRlLWRhdGFzZXQuY29uZiwgCisgICAgICBsb2NhbC9taWIyYy5lbXVsYXRpb24uY29uZiwgbG9jYWwvbWliMmMuZ2VuaHRtbC5jb25mLCAKKyAgICAgIGxvY2FsL21pYjJjLmludF93YXRjaC5jb25mLCBsb2NhbC9taWIyYy5pdGVyYXRlLmNvbmYsIAorICAgICAgbG9jYWwvbWliMmMuaXRlcmF0ZV9hY2Nlc3MuY29uZiwgbG9jYWwvbWliMmMubWZkLmNvbmYsIAorICAgICAgbG9jYWwvbWliMmMubm90aWZ5LmNvbmYsIGxvY2FsL21pYjJjLm9sZC1hcGkuY29uZiwgCisgICAgICBsb2NhbC9taWIyYy5wZXJsLmNvbmYsIGxvY2FsL21pYjJjLnJhdy10YWJsZS5jb25mLCAKKyAgICAgIGxvY2FsL21pYjJjLnJvdy5jb25mLCBsb2NhbC9taWIyYy5zY2FsYXIuY29uZiwgCisgICAgICBsb2NhbC9taWIyYy50YWJsZV9kYXRhLmNvbmYsIGxvY2FsL3Bhc3NfcGVyc2lzdHRlc3QsIAorICAgICAgbG9jYWwvcGFzc3Rlc3QsIGxvY2FsL3Bhc3N0ZXN0LnBsLCBsb2NhbC9zbm1wLXVjZC5zaCwgCisgICAgICBsb2NhbC9zbm1wY2hlY2suZGVmLCBsb2NhbC9zbm1wY29uZiwgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcC1kYXRhL2F1dGhvcHRzLCAKKyAgICAgIGxvY2FsL3NubXBjb25mLmRpci9zbm1wLWRhdGEvZGVidWdnaW5nLCAKKyAgICAgIGxvY2FsL3NubXBjb25mLmRpci9zbm1wLWRhdGEvbWlicywgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcC1kYXRhL291dHB1dCwgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcC1kYXRhL3NubXBjb25mLWNvbmZpZywgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcGQtZGF0YS9hY2wsIAorICAgICAgbG9jYWwvc25tcGNvbmYuZGlyL3NubXBkLWRhdGEvYmFzaWNfc2V0dXAsIAorICAgICAgbG9jYWwvc25tcGNvbmYuZGlyL3NubXBkLWRhdGEvZXh0ZW5kaW5nLCAKKyAgICAgIGxvY2FsL3NubXBjb25mLmRpci9zbm1wZC1kYXRhL21vbml0b3IsIAorICAgICAgbG9jYWwvc25tcGNvbmYuZGlyL3NubXBkLWRhdGEvb3BlcmF0aW9uLCAKKyAgICAgIGxvY2FsL3NubXBjb25mLmRpci9zbm1wZC1kYXRhL3NubXBjb25mLWNvbmZpZywgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcGQtZGF0YS9zeXN0ZW0sIAorICAgICAgbG9jYWwvc25tcGNvbmYuZGlyL3NubXBkLWRhdGEvdHJhcHNpbmtzLCAKKyAgICAgIGxvY2FsL3NubXBjb25mLmRpci9zbm1wdHJhcGQtZGF0YS9hdXRoZW50aWNhdGlvbiwgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcHRyYXBkLWRhdGEvZm9ybWF0dGluZywgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcHRyYXBkLWRhdGEvbG9nZ2luZywgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcHRyYXBkLWRhdGEvcnVudGltZSwgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcHRyYXBkLWRhdGEvc25tcGNvbmYtY29uZmlnLCAKKyAgICAgIGxvY2FsL3NubXBjb25mLmRpci9zbm1wdHJhcGQtZGF0YS90cmFwaGFuZGxlLCBsb2NhbC9zbm1wZHVtcC5wbCwgCisgICAgICBsb2NhbC90a21pYiwgbG9jYWwvdHJhcHRvZW1haWwsIGx0bWFpbi5zaCwgCisgICAgICBtNC9hY19hZGRfc2VhcmNoX3BhdGgubTQsIG00L2FjX21zZ19jYWNoZS5tNCwgCisgICAgICBtNC9hY19tc2dfbW9kdWxlX2RiZy5tNCwgbTQvYWNfcHJvbXB0X3VzZXIubTQsIG00L2xpYnRvb2wubTQsIAorICAgICAgbTQvbHRvcHRpb25zLm00LCBtNC9sdHN1Z2FyLm00LCBtNC9sdHZlcnNpb24ubTQsCisgICAgICBtNC9sdH5vYnNvbGV0ZS5tNCwgIG00L25ldHNubXBfYXJnLm00LCBtNC9uZXRzbm1wX3NlYXJjaF9saWJzLm00LAorICAgICAgbWFrZWRlcGVuZC5pbiwgIG1ha2VmaWxlaW5kZXBlbmQucGwsIG1ha2Vub3N5c2RlcGVuZC5wbCwKKyAgICAgIG1ha2V0YXJnZXQsICBtYW4vTWFrZWZpbGUuaW4sIG1hbi9hZGRfbWliZGlyLjMsCisgICAgICBtYW4vYWRkX21vZHVsZV9yZXBsYWNlbWVudC4zLCAgbWFuL2NvbmZpZ19hcGkuMy5kZWYsCisgICAgICBtYW4vZGVmYXVsdF9zdG9yZS4zLmJvdCwgIG1hbi9kZWZhdWx0X3N0b3JlLjMudG9wLAorICAgICAgbWFuL2VuY29kZV9rZXljaGFuZ2UuMS5kZWYsICBtYW4vZml4cHJvYy4xLmRlZiwKKyAgICAgIG1hbi9nZXRfbW9kdWxlX25vZGUuMywgbWFuL2luaXRfbWliLjMsICBtYW4vaW5pdF9taWJfaW50ZXJuYWxzLjMsCisgICAgICBtYW4vbWFrZV9pbmRleC5wbCwgbWFuL21hbl9zZWN0aW9ucy50eHQsICBtYW4vbWliMmMtdXBkYXRlLjEuZGVmLAorICAgICAgbWFuL21pYjJjLjEuZGVmLCBtYW4vbWliMmMuY29uZi41LmluLCAgbWFuL21pYjJjLmV4dHJhY3QucGwsCisgICAgICBtYW4vbWliX2FwaS4zLmRlZiwgbWFuL25ldC1zbm1wLWNvbmZpZy4xLmRlZiwgCisgICAgICBtYW4vbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIuMS5kZWYsIAorICAgICAgbWFuL25ldHNubXBfYWNjZXNzX211bHRpcGxleGVyLjMsIG1hbi9uZXRzbm1wX2FnZW50LjMsIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfaGFuZGxlci5oLjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsIAorICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuMywgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgCisgICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsIAorICAgICAgbWFuL25ldHNubXBfZXhhbXBsZV9zY2FsYXJfaW50LjMsIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgCisgICAgICBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLCBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9sZWFmLjMsIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgCisgICAgICBtYW4vbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21vbml0b3JfY2FsbGJhY2tfaGVhZGVyX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX251bGxfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgCisgICAgICBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIAorICAgICAgbWFuL25ldHNubXBfc2NhbGFyLjMsIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCBtYW4vbmV0c25tcF9zZXRfZGF0YS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3cuMywgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RkYXRhLjMsIG1hbi9uZXRzbm1wX3Rvb2xzLmguMywgbWFuL25ldHNubXBfdXRpbC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsIAorICAgICAgbWFuL25ldHNubXBfd2F0Y2hlci4zLCBtYW4vcGR1X2FwaS4zLmRlZiwgbWFuL3ByaW50X2Rlc2NyaXB0aW9uLjMsCisgICAgICAgbWFuL3ByaW50X21pYi4zLCBtYW4vcHJpbnRfb2JqaWQuMywgbWFuL3ByaW50X3ZhbHVlLjMsIAorICAgICAgbWFuL3ByaW50X3ZhcmlhYmxlLjMsIG1hbi9yZWFkX2FsbF9taWJzLjMsIG1hbi9yZWFkX21pYi4zLCAKKyAgICAgIG1hbi9yZWFkX21vZHVsZS4zLCBtYW4vcmVhZF9tb2R1bGVfbm9kZS4zLCBtYW4vcmVhZF9vYmppZC4zLCAKKyAgICAgIG1hbi9zZXNzaW9uX2FwaS4zLmRlZiwgbWFuL3NodXRkb3duX21pYi4zLCBtYW4vc25tcC5jb25mLjUuZGVmLCAKKyAgICAgIG1hbi9zbm1wX2FnZW50X2FwaS4zLmRlZiwgbWFuL3NubXBfYWxhcm0uMy5kZWYsIAorICAgICAgbWFuL3NubXBfYXBpX2VycnN0cmluZy4zLCBtYW4vc25tcF9jbG9zZS4zLCBtYW4vc25tcF9jb25maWcuNS5kZWYsCisgICAgICAgbWFuL3NubXBfZXJyb3IuMywgbWFuL3NubXBfZnJlZV9wZHUuMywgbWFuL3NubXBfb3Blbi4zLCAKKyAgICAgIG1hbi9zbm1wX3BlcnJvci4zLCBtYW4vc25tcF9yZWFkLjMsIG1hbi9zbm1wX3NlbGVjdF9pbmZvLjMsIAorICAgICAgbWFuL3NubXBfc2VuZC4zLCBtYW4vc25tcF9zZXNzX2FwaS4zLmRlZiwgCisgICAgICBtYW4vc25tcF9zZXNzX2FzeW5jX3NlbmQuMywgbWFuL3NubXBfc2Vzc19jbG9zZS4zLCAKKyAgICAgIG1hbi9zbm1wX3Nlc3NfZXJyb3IuMywgbWFuL3NubXBfc2Vzc19pbml0LjMsIG1hbi9zbm1wX3Nlc3Nfb3Blbi4zLAorICAgICAgIG1hbi9zbm1wX3Nlc3NfcGVycm9yLjMsIG1hbi9zbm1wX3Nlc3NfcmVhZC4zLCAKKyAgICAgIG1hbi9zbm1wX3Nlc3Nfc2VsZWN0X2luZm8uMywgbWFuL3NubXBfc2Vzc19zZW5kLjMsIAorICAgICAgbWFuL3NubXBfc2Vzc19zZXNzaW9uLjMsIG1hbi9zbm1wX3Nlc3NfdGltZW91dC4zLCAKKyAgICAgIG1hbi9zbm1wX3NldF9taWJfd2FybmluZ3MuMywgbWFuL3NubXBfc2V0X3NhdmVfZGVzY3JpcHRpb25zLjMsIAorICAgICAgbWFuL3NubXBfdGltZW91dC4zLCBtYW4vc25tcF90cmFwX2FwaS4zLmRlZiwKKyAgICAgIG1hbi9zbm1wYnVsa2dldC4xLmRlZiwgIG1hbi9zbm1wYnVsa3dhbGsuMS5kZWYsIG1hbi9zbm1wY21kLjEuZGVmLAorICAgICAgbWFuL3NubXBjb25mLjEuZGVmLCAgbWFuL3NubXBkLjguZGVmLCBtYW4vc25tcGQuY29uZi41LmRlZiwKKyAgICAgIG1hbi9zbm1wZC5leGFtcGxlcy41LmRlZiwgIG1hbi9zbm1wZC5pbnRlcm5hbC41LmRlZiwKKyAgICAgIG1hbi9zbm1wZGVsdGEuMS5kZWYsIG1hbi9zbm1wZGYuMS5kZWYsICBtYW4vc25tcGdldC4xLmRlZiwKKyAgICAgIG1hbi9zbm1wZ2V0bmV4dC4xLmRlZiwgbWFuL3NubXBpbmZvcm0uMSwgIG1hbi9zbm1wbmV0c3RhdC4xLmRlZiwKKyAgICAgIG1hbi9zbm1wc2V0LjEuZGVmLCBtYW4vc25tcHN0YXR1cy4xLmRlZiwgIG1hbi9zbm1wdGFibGUuMS5kZWYsCisgICAgICBtYW4vc25tcHRlc3QuMS5kZWYsIG1hbi9zbm1wdHJhbnNsYXRlLjEuZGVmLCAgbWFuL3NubXB0cmFwLjEuZGVmLAorICAgICAgbWFuL3NubXB0cmFwZC44LmRlZiwgbWFuL3NubXB0cmFwZC5jb25mLjUuZGVmLCAgbWFuL3NubXB1c20uMS5kZWYsCisgICAgICBtYW4vc25tcHZhY20uMS5kZWYsIG1hbi9zbm1wd2Fsay4xLmRlZiwgIG1hbi90a21pYi4xLmRlZiwKKyAgICAgIG1hbi90cmFwdG9lbWFpbC4xLmRlZiwgbWFuL3ZhcmJpbmRfYXBpLjMuZGVmLCAKKyAgICAgIG1hbi92YXJpYWJsZXMuNS5kZWYsIG1pYnMvQUdFTlRYLU1JQi50eHQsIAorICAgICAgbWlicy9ESVNNQU4tRVZFTlQtTUlCLnR4dCwgbWlicy9ESVNNQU4tRVhQUkVTU0lPTi1NSUIudHh0LCAKKyAgICAgIG1pYnMvRElTTUFOLU5TTE9PS1VQLU1JQi50eHQsIG1pYnMvRElTTUFOLVBJTkctTUlCLnR4dCwgCisgICAgICBtaWJzL0RJU01BTi1TQ0hFRFVMRS1NSUIudHh0LCBtaWJzL0RJU01BTi1TQ1JJUFQtTUlCLnR4dCwgCisgICAgICBtaWJzL0RJU01BTi1UUkFDRVJPVVRFLU1JQi50eHQsIG1pYnMvRXRoZXJMaWtlLU1JQi50eHQsIAorICAgICAgbWlicy9IQ05VTS1UQy50eHQsIG1pYnMvSE9TVC1SRVNPVVJDRVMtTUlCLnR4dCwgCisgICAgICBtaWJzL0hPU1QtUkVTT1VSQ0VTLVRZUEVTLnR4dCwgCisgICAgICBtaWJzL0lBTkEtQUREUkVTUy1GQU1JTFktTlVNQkVSUy1NSUIudHh0LCAKKyAgICAgIG1pYnMvSUFOQS1MQU5HVUFHRS1NSUIudHh0LCBtaWJzL0lBTkEtUlRQUk9UTy1NSUIudHh0LCAKKyAgICAgIG1pYnMvSUFOQWlmVHlwZS1NSUIudHh0LCBtaWJzL0lGLUlOVkVSVEVELVNUQUNLLU1JQi50eHQsIAorICAgICAgbWlicy9JRi1NSUIudHh0LCBtaWJzL0lORVQtQUREUkVTUy1NSUIudHh0LCAKKyAgICAgIG1pYnMvSVAtRk9SV0FSRC1NSUIudHh0LCBtaWJzL0lQLU1JQi50eHQsIAorICAgICAgbWlicy9JUFY2LUZMT1ctTEFCRUwtTUlCLnR4dCwgbWlicy9JUFY2LUlDTVAtTUlCLnR4dCwgCisgICAgICBtaWJzL0lQVjYtTUlCLnR4dCwgbWlicy9JUFY2LVRDLnR4dCwgbWlicy9JUFY2LVRDUC1NSUIudHh0LCAKKyAgICAgIG1pYnMvSVBWNi1VRFAtTUlCLnR4dCwgbWlicy9MTS1TRU5TT1JTLU1JQi50eHQsIG1pYnMvTVRBLU1JQi50eHQsIAorICAgICAgbWlicy9NYWtlZmlsZS5pbiwgbWlicy9NYWtlZmlsZS5taWIsIG1pYnMvTkVULVNOTVAtQUdFTlQtTUlCLnR4dCwgCisgICAgICBtaWJzL05FVC1TTk1QLUVYQU1QTEVTLU1JQi50eHQsIG1pYnMvTkVULVNOTVAtRVhURU5ELU1JQi50eHQsIAorICAgICAgbWlicy9ORVQtU05NUC1NSUIudHh0LCBtaWJzL05FVC1TTk1QLU1PTklUT1ItTUlCLnR4dCwgCisgICAgICBtaWJzL05FVC1TTk1QLVBBU1MtTUlCLnR4dCwgbWlicy9ORVQtU05NUC1TWVNURU0tTUlCLnR4dCwgCisgICAgICBtaWJzL05FVC1TTk1QLVRDLnR4dCwgbWlicy9ORVQtU05NUC1WQUNNLU1JQi50eHQsIAorICAgICAgbWlicy9ORVRXT1JLLVNFUlZJQ0VTLU1JQi50eHQsIG1pYnMvTk9USUZJQ0FUSU9OLUxPRy1NSUIudHh0LCAKKyAgICAgIG1pYnMvUkVBRE1FLm1pYnMsIG1pYnMvUkZDLTEyMTUudHh0LCBtaWJzL1JGQzExNTUtU01JLnR4dCwgCisgICAgICBtaWJzL1JGQzEyMTMtTUlCLnR4dCwgbWlicy9STU9OLU1JQi50eHQsIG1pYnMvU0NUUC1NSUIudHh0LCAKKyAgICAgIG1pYnMvU01VWC1NSUIudHh0LCBtaWJzL1NOTVAtQ09NTVVOSVRZLU1JQi50eHQsIAorICAgICAgbWlicy9TTk1QLUZSQU1FV09SSy1NSUIudHh0LCBtaWJzL1NOTVAtTVBELU1JQi50eHQsIAorICAgICAgbWlicy9TTk1QLU5PVElGSUNBVElPTi1NSUIudHh0LCBtaWJzL1NOTVAtUFJPWFktTUlCLnR4dCwgCisgICAgICBtaWJzL1NOTVAtVEFSR0VULU1JQi50eHQsIG1pYnMvU05NUC1VU0VSLUJBU0VELVNNLU1JQi50eHQsIAorICAgICAgbWlicy9TTk1QLVVTTS1BRVMtTUlCLnR4dCwgbWlicy9TTk1QLVVTTS1ESC1PQkpFQ1RTLU1JQi50eHQsIAorICAgICAgbWlicy9TTk1QLVZJRVctQkFTRUQtQUNNLU1JQi50eHQsIG1pYnMvU05NUHYyLUNPTkYudHh0LCAKKyAgICAgIG1pYnMvU05NUHYyLU1JQi50eHQsIG1pYnMvU05NUHYyLVNNSS50eHQsIG1pYnMvU05NUHYyLVRDLnR4dCwgCisgICAgICBtaWJzL1NOTVB2Mi1UTS50eHQsIG1pYnMvVENQLU1JQi50eHQsIAorICAgICAgbWlicy9UUkFOU1BPUlQtQUREUkVTUy1NSUIudHh0LCBtaWJzL1RVTk5FTC1NSUIudHh0LCAKKyAgICAgIG1pYnMvVUNELURFTU8tTUlCLmluYywgbWlicy9VQ0QtREVNTy1NSUIudHh0LCAKKyAgICAgIG1pYnMvVUNELURJU0tJTy1NSUIuaW5jLCBtaWJzL1VDRC1ESVNLSU8tTUlCLnR4dCwgCisgICAgICBtaWJzL1VDRC1ETE1PRC1NSUIuaW5jLCBtaWJzL1VDRC1ETE1PRC1NSUIudHh0LCAKKyAgICAgIG1pYnMvVUNELUlQRklMVEVSLU1JQi5pbmMsIG1pYnMvVUNELUlQRklMVEVSLU1JQi50eHQsIAorICAgICAgbWlicy9VQ0QtSVBGV0FDQy1NSUIuaW5jLCBtaWJzL1VDRC1JUEZXQUNDLU1JQi50eHQsIAorICAgICAgbWlicy9VQ0QtU05NUC1NSUItT0xELnR4dCwgbWlicy9VQ0QtU05NUC1NSUIuaW5jLCAKKyAgICAgIG1pYnMvVUNELVNOTVAtTUlCLnR4dCwgbWlicy9VRFAtTUlCLnR4dCwgbWlicy9pYW5hbGlzdCwgCisgICAgICBtaWJzL21ha2VodG1sLnBsLCBtaWJzL21pYmZldGNoLCBtaWJzL25vZGVtYXAsIG1pYnMvcmZjbGlzdCwgCisgICAgICBtaWJzL3JmY21pYnMuZGlmZiwgbWlicy9zbWlzdHJpcCwgbWtpbnN0YWxsZGlycywgCisgICAgICBuZXQtc25tcC1jb25maWcuaW4sIG5ldC1zbm1wLWNyZWF0ZS12My11c2VyLmluLCBvdi9NYWtlZmlsZS5pbiwgCisgICAgICBvdi9SRUFETUUsIG92L1VDRC1Db21wdXRlciwgb3YvVUNELWZpZWxkcywgb3YvYml0bWFwcy9VQ0QuMjAubSwgCisgICAgICBvdi9iaXRtYXBzL1VDRC4yMC5wLCBvdi9iaXRtYXBzL1VDRC4yNi5tLCBvdi9iaXRtYXBzL1VDRC4yNi5wLCAKKyAgICAgIG92L2JpdG1hcHMvVUNELjMyLm0sIG92L2JpdG1hcHMvVUNELjMyLnAsIG92L2JpdG1hcHMvVUNELjM4Lm0sIAorICAgICAgb3YvYml0bWFwcy9VQ0QuMzgucCwgb3YvYml0bWFwcy9VQ0QuNDQubSwgb3YvYml0bWFwcy9VQ0QuNDQucCwgCisgICAgICBvdi9iaXRtYXBzL1VDRC41MC5tLCBvdi9iaXRtYXBzL1VDRC41MC5wLCBvdi9iaXRtYXBzL1VDRC5maWVsZHMsIAorICAgICAgb3Yvb2lkX3RvX3N5bS5pbiwgb3Yvb2lkX3RvX3R5cGUuaW4sIHBlcmwvQVNOL0FTTi5wbSwgCisgICAgICBwZXJsL0FTTi9BU04ueHMsIHBlcmwvQVNOL0NoYW5nZXMsIHBlcmwvQVNOL01BTklGRVNULCAKKyAgICAgIHBlcmwvQVNOL01ha2VmaWxlLlBMLCBwZXJsL0FTTi90ZXN0LnBsLCBwZXJsL0FueURhdGFfU05NUC9DaGFuZ2VzLAorICAgICAgIHBlcmwvQW55RGF0YV9TTk1QL0RCRF9BbnlEYXRhLnBhdGNoLCBwZXJsL0FueURhdGFfU05NUC9Gb3JtYXQucG0sCisgICAgICAgcGVybC9BbnlEYXRhX1NOTVAvSU5TVEFMTCwgcGVybC9BbnlEYXRhX1NOTVAvTUFOSUZFU1QsIAorICAgICAgcGVybC9BbnlEYXRhX1NOTVAvTWFrZWZpbGUuUEwsIHBlcmwvQW55RGF0YV9TTk1QL1JFQURNRSwgCisgICAgICBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLCBwZXJsL0FueURhdGFfU05NUC9jb25maWdzL3NjbGksIAorICAgICAgcGVybC9BbnlEYXRhX1NOTVAvY29uZmlncy91bml4LCBwZXJsL0FueURhdGFfU05NUC9uZXRzaCwgCisgICAgICBwZXJsL01ha2VmaWxlLlBMLCBwZXJsL01ha2VmaWxlLm1ha2VmaWxlcywgcGVybC9NYWtlZmlsZS5zdWJzLnBsLCAKKyAgICAgIHBlcmwvT0lEL0NoYW5nZXMsIHBlcmwvT0lEL01BTklGRVNULCBwZXJsL09JRC9NYWtlZmlsZS5QTCwgCisgICAgICBwZXJsL09JRC9PSUQucG0sIHBlcmwvT0lEL09JRC54cywgcGVybC9PSUQvUkVBRE1FLCAKKyAgICAgIHBlcmwvT0lEL3Rlc3QucGwsIHBlcmwvT0lEL3R5cGVtYXAsIHBlcmwvU05NUC9CVUcsIAorICAgICAgcGVybC9TTk1QL01BTklGRVNULCBwZXJsL1NOTVAvTUFOSUZFU1QuU0tJUCwKKyAgICAgIHBlcmwvU05NUC9NYWtlZmlsZS5QTCwgIHBlcmwvU05NUC9SRUFETUUsIHBlcmwvU05NUC9TTk1QLnBtLAorICAgICAgcGVybC9TTk1QL1NOTVAueHMsICBwZXJsL1NOTVAvVE9ETywgcGVybC9TTk1QL2V4YW1wbGVzL2FzeW5jMS5wbCwgCisgICAgICBwZXJsL1NOTVAvZXhhbXBsZXMvYXN5bmMyLnBsLCBwZXJsL1NOTVAvZXhhbXBsZXMvYnVsa3dhbGsucGwsIAorICAgICAgcGVybC9TTk1QL2V4YW1wbGVzL2lwZm9yd2FyZC5wbCwgcGVybC9TTk1QL2V4YW1wbGVzL21pYnRyZWUucGwsIAorICAgICAgcGVybC9TTk1QL2V4YW1wbGVzL21pYndhbGsucGwsIHBlcmwvU05NUC9leGFtcGxlcy9waW5nbWliLnBsLCAKKyAgICAgIHBlcmwvU05NUC9leGFtcGxlcy90YWJsZXdhbGsucGwsIHBlcmwvU05NUC9leGFtcGxlcy90ZXN0bGVhay5wbCwgCisgICAgICBwZXJsL1NOTVAvZXhhbXBsZXMvdHJhcC1leGFtcGxlLnBsLCBwZXJsL1NOTVAvaGludHMvaXJpeC5wbCwgCisgICAgICBwZXJsL1NOTVAvaGludHMvc29sYXJpcy5wbCwgcGVybC9TTk1QL3Blcmxzbm1wLmgsIAorICAgICAgcGVybC9TTk1QL3QvUkVBRE1FLCBwZXJsL1NOTVAvdC9hc3luYy50LCBwZXJsL1NOTVAvdC9idWxrd2Fsay50LCAKKyAgICAgIHBlcmwvU05NUC90L2NvbmYudCwgcGVybC9TTk1QL3QvY29uZnRlc3QuY29uZiwgcGVybC9TTk1QL3QvZ2V0LnQsIAorICAgICAgcGVybC9TTk1QL3QvZ2V0bmV4dC50LCBwZXJsL1NOTVAvdC9taWIudCwgcGVybC9TTk1QL3QvbWliLnR4dCwgCisgICAgICBwZXJsL1NOTVAvdC9taWJsb2FkLnQsIHBlcmwvU05NUC90L25vdGlmeS50LAorICAgICAgcGVybC9TTk1QL3Qvc2Vzc2lvbi50LCAgcGVybC9TTk1QL3Qvc2V0LnQsCisgICAgICBwZXJsL1NOTVAvdC9zbm1wdGVzdC5jb25mLCAgcGVybC9TTk1QL3Qvc3RhcnRhZ2VudC5wbCwKKyAgICAgIHBlcmwvU05NUC90eXBlbWFwLCAgcGVybC9UcmFwUmVjZWl2ZXIvQ2hhbmdlcywKKyAgICAgIHBlcmwvVHJhcFJlY2VpdmVyL01BTklGRVNULCAgcGVybC9UcmFwUmVjZWl2ZXIvTWFrZWZpbGUuUEwsCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9SRUFETUUsICBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0sIAorICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnhzLCBwZXJsL1RyYXBSZWNlaXZlci9jb25zdC1jLmluYywgCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9jb25zdC14cy5pbmMsIAorICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvZmFsbGJhY2svY29uc3QtYy5pbmMsIAorICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvZmFsbGJhY2svY29uc3QteHMuaW5jLCAKKyAgICAgIHBlcmwvVHJhcFJlY2VpdmVyL3Blcmxfc25tcHRyYXBkLmgsIHBlcmwvVHJhcFJlY2VpdmVyL3BwcG9ydC5oLCAKKyAgICAgIHBlcmwvVHJhcFJlY2VpdmVyL3QvMS50LCBwZXJsL1RyYXBSZWNlaXZlci90eXBlbWFwLCAKKyAgICAgIHBlcmwvYWdlbnQvQ2hhbmdlcywgcGVybC9hZ2VudC9NQU5JRkVTVCwgcGVybC9hZ2VudC9NYWtlZmlsZS5QTCwgCisgICAgICBwZXJsL2FnZW50L1N1cHBvcnQvTWFrZWZpbGUuUEwsIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtLCAKKyAgICAgIHBlcmwvYWdlbnQvYWdlbnQucG0sIHBlcmwvYWdlbnQvYWdlbnQueHMsIAorICAgICAgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL01ha2VmaWxlLlBMLCAKKyAgICAgIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCAKKyAgICAgIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnhzLCAKKyAgICAgIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9nZW4sIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS90ZXN0LnBsLCAKKyAgICAgIHBlcmwvYWdlbnQvbmV0c25tcF9yZXF1ZXN0X2luZm9QdHIucG0sIHBlcmwvYWdlbnQvdGVzdC5wbCwgCisgICAgICBwZXJsL2FnZW50L3R5cGVtYXAsIHBlcmwvZGVmYXVsdF9zdG9yZS9DaGFuZ2VzLCAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9NQU5JRkVTVCwgcGVybC9kZWZhdWx0X3N0b3JlL01ha2VmaWxlLlBMLCAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9SRUFETUUsIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnhzLCBwZXJsL2RlZmF1bHRfc3RvcmUvZ2VuLCAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS90ZXN0LnBsLCBwZXJsL2RlZmF1bHRfc3RvcmUvdHlwZW1hcCwgCisgICAgICBwZXJsL21ha2UtcGVybC1tYWtlZmlsZXMsIHBlcmwvbWFuYWdlci9JTlNUQUxMLCAKKyAgICAgIHBlcmwvbWFuYWdlci9NYWtlZmlsZS5QTCwgcGVybC9tYW5hZ2VyL2Rpc3BsYXl0YWJsZS5wbSwgCisgICAgICBwZXJsL21hbmFnZXIvZ2V0VmFsdWVzLnBtLCBwZXJsL21hbmFnZXIvbWFuYWdlci5wbSwgCisgICAgICBwZXJsL21hbmFnZXIvc2V0dXBhdXRoLCBwZXJsL21hbmFnZXIvc2V0dXBkYiwgCisgICAgICBwZXJsL21hbmFnZXIvc2V0dXB1c2VyLCBwZXJsL21hbmFnZXIvc25tcHRvc3FsLCBweXRob24vTElDRU5TRSwgCisgICAgICBweXRob24vUkVBRE1FLCBweXRob24vbmV0c25tcC9fX2luaXRfXy5weSwgCisgICAgICBweXRob24vbmV0c25tcC9jbGllbnQucHksIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmMsIAorICAgICAgcHl0aG9uL25ldHNubXAvdGVzdHMvX19pbml0X18ucHksIHB5dGhvbi9uZXRzbm1wL3Rlc3RzL3NubXBkLmNvbmYsCisgICAgICAgcHl0aG9uL25ldHNubXAvdGVzdHMvdGVzdC5weSwgcHl0aG9uL3NldHVwLnB5LCByZW1vdmUtZmlsZXMsIAorICAgICAgc2Vkc2NyaXB0LmluLCBzbm1wbGliL01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5pbiwgCisgICAgICBzbm1wbGliL2FzbjEuYywgc25tcGxpYi9jYWxsYmFjay5jLCBzbm1wbGliL2NoZWNrX3ZhcmJpbmQuYywgCisgICAgICBzbm1wbGliL2NtdV9jb21wYXQuYywgc25tcGxpYi9jb250YWluZXIuYywgCisgICAgICBzbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYywgc25tcGxpYi9jb250YWluZXJfaXRlcmF0b3IuYywgCisgICAgICBzbm1wbGliL2NvbnRhaW5lcl9saXN0X3NzbGwuYywgc25tcGxpYi9jb250YWluZXJfbnVsbC5jLCAKKyAgICAgIHNubXBsaWIvZGF0YV9saXN0LmMsIHNubXBsaWIvZGVmYXVsdF9zdG9yZS5jLCBzbm1wbGliL2Rpcl91dGlscy5jLAorICAgICAgIHNubXBsaWIvZmRfZXZlbnRfbWFuYWdlci5jLCBzbm1wbGliL2ZpbGVfdXRpbHMuYywKKyAgICAgIHNubXBsaWIvZ2V0b3B0LmMsICBzbm1wbGliL2luZXRfbnRvcC5jLCBzbm1wbGliL2luZXRfcHRvbi5jLAorICAgICAgc25tcGxpYi9pbnQ2NC5jLCAgc25tcGxpYi9rZXl0b29scy5jLCBzbm1wbGliL2xhcmdlX2ZkX3NldC5jLAorICAgICAgc25tcGxpYi9sY2RfdGltZS5jLCAgc25tcGxpYi9tZDUuYywgc25tcGxpYi9taWIuYywKKyAgICAgIHNubXBsaWIvbXRfc3VwcG9ydC5jLCAgc25tcGxpYi9vaWRfc3Rhc2guYywgc25tcGxpYi9wYXJzZS5jLAorICAgICAgc25tcGxpYi9wa2NzLmMsICBzbm1wbGliL3JlYWRfY29uZmlnLmMsIHNubXBsaWIvc2NhcGkuYywKKyAgICAgIHNubXBsaWIvc25tcC10Yy5jLCAgc25tcGxpYi9zbm1wLmMsIHNubXBsaWIvc25tcEFBTDVQVkNEb21haW4uYywgCisgICAgICBzbm1wbGliL3NubXBBbGlhc0RvbWFpbi5jLCBzbm1wbGliL3NubXBDYWxsYmFja0RvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvc25tcERUTFNVRFBEb21haW4uYywgc25tcGxpYi9zbm1wSVBYRG9tYWluLmMsIAorICAgICAgc25tcGxpYi9zbm1wU1NIRG9tYWluLmMsIHNubXBsaWIvc25tcFNURERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvc25tcFRDUERvbWFpbi5jLCBzbm1wbGliL3NubXBUQ1BJUHY2RG9tYWluLmMsIAorICAgICAgc25tcGxpYi9zbm1wVURQRG9tYWluLmMsIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYywgCisgICAgICBzbm1wbGliL3NubXBVbml4RG9tYWluLmMsIHNubXBsaWIvc25tcF9hbGFybS5jLAorICAgICAgc25tcGxpYi9zbm1wX2FwaS5jLCAgc25tcGxpYi9zbm1wX2F1dGguYywgc25tcGxpYi9zbm1wX2NsaWVudC5jLAorICAgICAgc25tcGxpYi9zbm1wX2RlYnVnLmMsICBzbm1wbGliL3NubXBfZW51bS5jLAorICAgICAgc25tcGxpYi9zbm1wX2xvZ2dpbmcuYywgIHNubXBsaWIvc25tcF9vcGVuc3NsLmMsCisgICAgICBzbm1wbGliL3NubXBfcGFyc2VfYXJncy5jLCAgc25tcGxpYi9zbm1wX3NlY21vZC5jLAorICAgICAgc25tcGxpYi9zbm1wX3NlcnZpY2UuYywgIHNubXBsaWIvc25tcF90cmFuc3BvcnQuYywKKyAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmMsICBzbm1wbGliL3NubXBrc20uYywgc25tcGxpYi9zbm1wdHNtLmMsCisgICAgICBzbm1wbGliL3NubXB1c20uYywgIHNubXBsaWIvc25tcHYzLmMsIHNubXBsaWIvc25wcmludGYuYywKKyAgICAgIHNubXBsaWIvc3RybGNweS5jLCAgc25tcGxpYi9zdHJ0b2tfci5jLCBzbm1wbGliL3N0cnRvbC5jLAorICAgICAgc25tcGxpYi9zdHJ0b3VsLmMsICBzbm1wbGliL3N0cnRvdWxsLmMsIHNubXBsaWIvc3lzdGVtLmMsCisgICAgICBzbm1wbGliL3Rlc3RfYmluYXJ5X2FycmF5LmMsICBzbm1wbGliL3RleHRfdXRpbHMuYywKKyAgICAgIHNubXBsaWIvdG9vbHMuYywgc25tcGxpYi91Y2Qtc25tcC1pbmNsdWRlcy5oLCAKKyAgICAgIHNubXBsaWIvdWNkX2NvbXBhdC5jLCBzbm1wbGliL3ZhY20uYywgc25tcGxpYi93aW5waXBlLmMsIAorICAgICAgc25tcGxpYi93aW5zZXJ2aWNlLmMsIHNubXBsaWIvd2luc2VydmljZS5tYywKKyAgICAgIHNubXBsaWIvd2luc2VydmljZS5yYywgIHNubXBsaWIvd2luc2VydmljZXJjLnJjLCBzdGFtcC1oLAorICAgICAgc3RhbXAtaC5pbiwgdGVzdGluZy9NYWtlZmlsZS5pbiwgIHRlc3RpbmcvUkVBRE1FLAorICAgICAgdGVzdGluZy9SVU5URVNUUywgdGVzdGluZy9ULmMsIHRlc3RpbmcvVDIuc2gsIAorICAgICAgdGVzdGluZy9URVNUQ09ORi5zaCwgdGVzdGluZy9kYXRhLmtleWNoYW5nZS1tZDUsIAorICAgICAgdGVzdGluZy9kYXRhLmtleWNoYW5nZS1zaGExLCB0ZXN0aW5nL2RhdGEua2V5Y2hhbmdlLXNoYTEtZGVzLCAKKyAgICAgIHRlc3RpbmcvZGF0YS5rdWwtbWQ1LCB0ZXN0aW5nL2RhdGEua3VsLXNoYTEsIHRlc3RpbmcvZXRpbWV0ZXN0LmMsIAorICAgICAgdGVzdGluZy9ldmFsX29uZXByb2dyYW0uc2gsIHRlc3RpbmcvZXZhbF9vbmVzY3JpcHQuc2gsIAorICAgICAgdGVzdGluZy9ldmFsX3N1aXRlLnNoLCB0ZXN0aW5nL2V2YWxfdGVzdGxpc3QsIAorICAgICAgdGVzdGluZy9ldmFsX3Rvb2xzLnNoLCB0ZXN0aW5nL2tleW1hbmFnZXRlc3QuYywKKyAgICAgIHRlc3RpbmcvbWlzY3Rlc3QuYywgIHRlc3RpbmcvcmZjMTIxMy9SRUFETUUsIHRlc3RpbmcvcmZjMTIxMy9ydW4sIAorICAgICAgdGVzdGluZy9yZmMxMjEzL3NubXBmdW4uc2gsIHRlc3RpbmcvcmZjMTIxMy90ZXN0X2Z1biwgCisgICAgICB0ZXN0aW5nL3JmYzEyMTMvdGVzdG1pYjEuc2gsIHRlc3RpbmcvcmZjMTIxMy90ZXN0bWliMi5zaCwgCisgICAgICB0ZXN0aW5nL3JmYzEyMTMvdGVzdG1pYjMuc2gsIHRlc3Rpbmcvc2NhcGl0ZXN0LmMsIAorICAgICAgdGVzdGluZy90ZXN0X2tleWNoYW5nZS5zaCwgdGVzdGluZy90ZXN0X2t1bC5zaCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1N0cmFuc3BvcnQsIHRlc3RpbmcvdGVzdHMvU3YxY29uZmlnLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvU3YyY2NvbmZpZywgdGVzdGluZy90ZXN0cy9TdjNjb25maWcsIAorICAgICAgdGVzdGluZy90ZXN0cy9TdjN1c21jb25maWdhZ2VudCwgdGVzdGluZy90ZXN0cy9TdjN1c21jb25maWdiYXNlLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvU3YzdXNtY29uZmlndHJhcGQsIHRlc3RpbmcvdGVzdHMvU3YzdmFjbWNvbmZpZywgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1N2YWNtY29uZmlnLCB0ZXN0aW5nL3Rlc3RzL1N2YW55Y29uZmlnLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAwMGNvbmZpZ3VyZSwgdGVzdGluZy90ZXN0cy9UMDAxc25tcHYxZ2V0LCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAxNHNubXB2MmNnZXQsIHRlc3RpbmcvdGVzdHMvVDAxNXNubXB2MmNnZXRuZXh0LCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAxNjBzbm1wdjJjYnVsa2dldCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMTZzbm1wdjJjZ2V0ZmFpbCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMTdzbm1wdjJjdG92MWdldGZhaWwsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDE4c25tcHYxdG92MmNnZXRmYWlsLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAxOXNubXB2MmNub3N1Y2gsIHRlc3RpbmcvdGVzdHMvVDAyMHNubXB2M2dldCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMjFzbm1wdjNnZXRuZXh0LCB0ZXN0aW5nL3Rlc3RzL1QwMjIwc25tcHYzYnVsa2dldCwKKyAgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMjJzbm1wdjNnZXRNRDUsCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMjNzbm1wdjNnZXRNRDVBRVMsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDIzc25tcHYzZ2V0TUQ1REVTLAorICAgICAgdGVzdGluZy90ZXN0cy9UMDI0c25tcHYzZ2V0U0hBMSwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMjVzbm1wdjNnZXRTSEFERVMsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDI2c25tcHYzZ2V0U0hBQUVTLAorICAgICAgdGVzdGluZy90ZXN0cy9UMDI4c25tcHYzZ2V0ZmFpbCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMzBzbm1wdjN1c2VyY3JlYXRpb24sIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDM1c25tcHYzdHJhcGR1c2VybWdtdCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwNDlzbm1wdjNpbmZvcm0sCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwNDlzbm1wdjNpbmZvcm1hdXRoLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDA0OXNubXB2M2luZm9ybXByaXYsIHRlc3RpbmcvdGVzdHMvVDA1MHNubXB2M3RyYXAsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDUxc25tcHYyY3RyYXAsIHRlc3RpbmcvdGVzdHMvVDA1MnNubXB2MmNpbmZvcm0sIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDUzYWdlbnR2MXRyYXAsIHRlc3RpbmcvdGVzdHMvVDA1NGFnZW50djJjdHJhcCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwNTVhZ2VudHYxbWludHJhcCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwNTZhZ2VudHYyY21pbnRyYXAsCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwNTd0cmFwZGF1dGh0ZXN0LCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDA1N3RyYXBkYXV0aHRlc3QyLAorICAgICAgdGVzdGluZy90ZXN0cy9UMDU3dHJhcGRhdXRodGVzdDMsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDU4YWdlbnRhdXRodHJhcCwKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDA1OXRyYXBkdHJhcGhhbmRsZSwgIHRlc3RpbmcvdGVzdHMvVDA2MHRyYXBkcGVybCwKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDA2MWFnZW50cGVybCwgIHRlc3RpbmcvdGVzdHMvVDA2NWFnZW50ZXh0ZW5kLAorICAgICAgdGVzdGluZy90ZXN0cy9UMTAwYWdlbnRodXAsICB0ZXN0aW5nL3Rlc3RzL1QxMTBhZ2VudHhnZXQsCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QxMTFhZ2VudHhzZXQsICB0ZXN0aW5nL3Rlc3RzL1QxMTJhZ2VudHhzZXRmYWlsLAorICAgICAgdGVzdGluZy90ZXN0cy9UMTEzYWdlbnR4dHJhcCwgIHRlc3RpbmcvdGVzdHMvVDExNWFnZW50eHBlcmwsCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QxMjBwcm94eWdldCwgIHRlc3RpbmcvdGVzdHMvVDEyMXByb3h5c2V0LAorICAgICAgdGVzdGluZy90ZXN0cy9UMTIycHJveHlzZXRmYWlsLCAgdGVzdGluZy90ZXN0cy9UMTMwc25tcHYxdmFjbWdldCwKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDEzMXNubXB2MmN2YWNtZ2V0LCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDEzMnNubXB2M3ZhY21nZXQsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMTQwc25tcHYxdmFjbWdldGZhaWwsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMTQxc25tcHYyY3ZhY21nZXRmYWlsLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDE0MnNubXB2M3ZhY21nZXRmYWlsLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDE1MHNvbGFyaXNob3N0Y3B1LCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDE1MXNvbGFyaXNob3N0ZGlzaywgdGVzdGluZy90ZXN0cy9UMTUyaG9zdHVwdGltZSwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QxNTNzb2xhcmlzc3dhcCwgdGVzdGluZy90ZXN0cy9UMTYwc25tcG5ldHN0YXQsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMjAwc25tcHYyY3dhbGthbGwsIHRlc3RpbmcvdGVzdHMvVDMwMHVkcCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QzMTB0Y3AsIHRlc3RpbmcvdGVzdHMvVDMyMHVkcHY2LCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDMzMHRjcHY2LCB0ZXN0aW5nL3Rlc3RzL1QzNTB1bml4LCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDM2MGR0bHN1ZHAsIHRlc3RpbmcvdGVzdHMvVDM5OWFsaWFzLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvdGVzdC1sb2NhbGhvc3QuY2VydCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL3Rlc3QtbG9jYWxob3N0LnByaXYsIHRlc3RpbmcvdGVzdHMvdGVzdC11c2VyLmNlcnQsIAorICAgICAgdGVzdGluZy90ZXN0cy90ZXN0LXVzZXIucHJpdiwgd2luMzIvQ29uZmlndXJlLCAKKyAgICAgIHdpbjMyL0VYQU1QTEUuY29uZi53aW4zMiwgd2luMzIvTWFrZWZpbGUtYXBwcy5pbiwgCisgICAgICB3aW4zMi9NYWtlZmlsZS5pbiwgd2luMzIvTWdtdEFwaS13aW5FeHRETEwuaCwgCisgICAgICB3aW4zMi9Tbm1wLXdpbkV4dERMTC5oLCB3aW4zMi9hZ2VudF9tb2R1bGVfZG90X2NvbmYuaCwgCisgICAgICB3aW4zMi9hZ2VudF9tb2R1bGVfaW5jbHVkZXMuaCwgd2luMzIvYWdlbnRfbW9kdWxlX2luaXRzLmgsIAorICAgICAgd2luMzIvYnVpbGQuYmF0LCB3aW4zMi9idWlsZC5wbCwgd2luMzIvY29uZmlnLmgsIAorICAgICAgd2luMzIvY29uZmlnLmguYm9ybGFuZCwgd2luMzIvZGlzdC9SRUFETUUuYnVpbGQud2luMzIudHh0LCAKKyAgICAgIHdpbjMyL2Rpc3QvUkVBRE1FLnR4dCwgd2luMzIvZGlzdC9idWlsZC1iaW5hcnkuYmF0LCAKKyAgICAgIHdpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LnBsLCAKKyAgICAgIHdpbjMyL2Rpc3QvaHRtbGhlbHAvQ29uZmlndXJhdGlvbl9PdmVydmlldy5odG1sLCAKKyAgICAgIHdpbjMyL2Rpc3QvaHRtbGhlbHAvRGV2ZWxvcGVyX0ZBUS5odG1sLCAKKyAgICAgIHdpbjMyL2Rpc3QvaHRtbGhlbHAvRkFRLmh0bWwsIAorICAgICAgd2luMzIvZGlzdC9odG1saGVscC9IZWxwX0NhdmVhdHMuaHRtbCwgCisgICAgICB3aW4zMi9kaXN0L2h0bWxoZWxwL0ludHJvZHVjdGlvbi5odG1sLCAKKyAgICAgIHdpbjMyL2Rpc3QvaHRtbGhlbHAvTmV0LVNOTVAuaGhjLAorICAgICAgd2luMzIvZGlzdC9odG1saGVscC9OZXQtU05NUC5oaHAsIAorICAgICAgd2luMzIvZGlzdC9odG1saGVscC9zbm1wLmNvbmYud2luMzIuaHRtbCwgCisgICAgICB3aW4zMi9kaXN0L2h0bWxoZWxwL3NubXBkLmNvbmYud2luMzIuaHRtbCwgCisgICAgICB3aW4zMi9kaXN0L2h0bWxoZWxwL3NubXB0cmFwZC5jb25mLndpbjMyLmh0bWwsIAorICAgICAgd2luMzIvZGlzdC9pbnN0YWxsZXIvQWRkMlBhdGgubnNpLCAKKyAgICAgIHdpbjMyL2Rpc3QvaW5zdGFsbGVyL1NldEVuVmFyLm5zaSwgCisgICAgICB3aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2ksIHdpbjMyL2Rpc3Qvc2NyaXB0cy9jcmVhdGUtdG9jLCAKKyAgICAgIHdpbjMyL2Rpc3Qvc2NyaXB0cy9tYW5kaXIyaHRtbCwgCisgICAgICB3aW4zMi9kaXN0L3NjcmlwdHMvbmV0LXNubXAtcGVybC10ZXN0LnBsLCAKKyAgICAgIHdpbjMyL2Rpc3Qvc2NyaXB0cy9wb2RkaXIyaHRtbCwgd2luMzIvZGlzdC9zY3JpcHRzL3JlYWRtZTJodG1sLCAKKyAgICAgIHdpbjMyL2Rpc3Qvc2NyaXB0cy90eHQyaHRtbCwgd2luMzIvZGlzdC90b3NvY2sxLnNoLCAKKyAgICAgIHdpbjMyL2VuY29kZV9rZXljaGFuZ2UvZW5jb2RlX2tleWNoYW5nZS5kc3AsIAorICAgICAgd2luMzIvaW5zdGFsbC1uZXQtc25tcC5iYXQsIHdpbjMyL2xpYmFnZW50L01ha2VmaWxlLmluLCAKKyAgICAgIHdpbjMyL2xpYmFnZW50L2xpYmFnZW50LmRlZiwgd2luMzIvbGliYWdlbnQvbGliYWdlbnQuZHNwLCAKKyAgICAgIHdpbjMyL2xpYmhlbHBlcnMvTWFrZWZpbGUuaW4sIHdpbjMyL2xpYmhlbHBlcnMvbGliaGVscGVycy5kc3AsIAorICAgICAgd2luMzIvbGlibmV0c25tcHRyYXBkL01ha2VmaWxlLmluLCAKKyAgICAgIHdpbjMyL2xpYm5ldHNubXB0cmFwZC9saWJuZXRzbm1wdHJhcGQuZHNwLCAKKyAgICAgIHdpbjMyL2xpYnNubXAvTWFrZWZpbGUuaW4sIHdpbjMyL2xpYnNubXAvbGlic25tcC5kc3AsIAorICAgICAgd2luMzIvbGlic25tcF9kbGwvTWFrZWZpbGUuaW4sIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLCAKKyAgICAgIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXBfZGxsLmRzcCwKKyAgICAgIHdpbjMyL2xpYnVjZG1pYnMvbGlidWNkbWlicy5kZWYsICB3aW4zMi9sb2NhbC9NYWtlZmlsZS5pbiwKKyAgICAgIHdpbjMyL2xvY2FsL21pYjJjLmJhdCwgIHdpbjMyL2xvY2FsL3NubXBjb25mLmJhdCwKKyAgICAgIHdpbjMyL2xvY2FsL3RyYXB0b2VtYWlsLmJhdCwgIHdpbjMyL21pYl9tb2R1bGVfZG90X2NvbmYuaCwKKyAgICAgIHdpbjMyL21pYl9tb2R1bGVfaW5jbHVkZXMuaCwgIHdpbjMyL21pYl9tb2R1bGVfaW5pdHMuaCwKKyAgICAgIHdpbjMyL21pYl9tb2R1bGVfc2h1dGRvd24uaCwgCisgICAgICB3aW4zMi9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgsIAorICAgICAgd2luMzIvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaCwgCisgICAgICB3aW4zMi9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLAorICAgICAgd2luMzIvbmV0c25tcG1pYnMvTWFrZWZpbGUuaW4sICB3aW4zMi9uZXRzbm1wbWlicy9uZXRzbm1wbWlicy5kc3AsCisgICAgICB3aW4zMi9ubWFrZXBlcmwuYmF0LCAgd2luMzIvc25tcGJ1bGtnZXQvc25tcGJ1bGtnZXQuZHNwLCAKKyAgICAgIHdpbjMyL3NubXBidWxrd2Fsay9zbm1wYnVsa3dhbGsuZHNwLCB3aW4zMi9zbm1wZC9NYWtlZmlsZS5pbiwgCisgICAgICB3aW4zMi9zbm1wZC9zbm1wZC5kc3AsIHdpbjMyL3NubXBkZWx0YS9zbm1wZGVsdGEuZHNwLCAKKyAgICAgIHdpbjMyL3NubXBkZi9zbm1wZGYuZHNwLCB3aW4zMi9zbm1wZ2V0L3NubXBnZXQuZHNwLCAKKyAgICAgIHdpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LmRzcCwgd2luMzIvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sIAorICAgICAgd2luMzIvc25tcG5ldHN0YXQvc25tcG5ldHN0YXQuZHNwLCB3aW4zMi9zbm1wc2V0L3NubXBzZXQuZHNwLCAKKyAgICAgIHdpbjMyL3NubXBzbV9pbml0LmgsIHdpbjMyL3NubXBzdGF0dXMvc25tcHN0YXR1cy5kc3AsIAorICAgICAgd2luMzIvc25tcHRhYmxlL3NubXB0YWJsZS5kc3AsIHdpbjMyL3NubXB0ZXN0L3NubXB0ZXN0LmRzcCwgCisgICAgICB3aW4zMi9zbm1wdHJhbnNsYXRlL3NubXB0cmFuc2xhdGUuZHNwLAorICAgICAgd2luMzIvc25tcHRyYXAvc25tcHRyYXAuZHNwLCAgd2luMzIvc25tcHRyYXBkL01ha2VmaWxlLmluLAorICAgICAgd2luMzIvc25tcHRyYXBkL3NubXB0cmFwZC5kc3AsICB3aW4zMi9zbm1wdXNtL3NubXB1c20uZHNwLAorICAgICAgd2luMzIvc25tcHZhY20vc25tcHZhY20uZHNwLCAgd2luMzIvc25tcHdhbGsvc25tcHdhbGsuZHNwLAorICAgICAgd2luMzIvd2luMzIuZHN3LCB3aW4zMi93aW4zMmRsbC5kc3c6CisKKyBGaXggNS41LnggYnJhbmNoIHN0cnVjdHVyZSAocGFydCAyKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDE5OTY1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIxICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2tpbmZvLmM6IHByb3BlciBwcm9jZXNzCisKKyBzdGF0dXMgdmFsdWVzIGZvciBuZXRic2QgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk2MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9raW5mby5jOiBwcm9wZXIgcHJvY2VzcworCisgc3RhdHVzIHZhbHVlcyBmb3IgbmV0YnNkIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk2MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zY2FwaS5jOiBjb25kaXRpb25hbGl6ZSB2YXJpYWJsZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjEgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc2NhcGkuYzogY29uZGl0aW9uYWxpemUgdmFyaWFibGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5NjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjEgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubi5oOiB0Y3AtbWliL3VkcC1taWIKKworIHN1cHBvcnQgZm9yIHRoZSAqYnNkcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTYwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIxICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm4uaDogdGNwLW1pYi91ZHAtbWliCisKKyBzdXBwb3J0IGZvciB0aGUgKmJzZHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTYwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIxICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fZnJlZWJzZDQuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fbmV0YnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX29wZW5ic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2ZyZWVic2Q0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbmV0YnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfb3BlbmJzZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2ludGVyZmFjZS4KKyAgICAgICBjOiB0Y3AtbWliL3VkcC1taWIgc3VwcG9ydCBmb3IgdGhlICpic2RzIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk1OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL21pYklJLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2ZyZWVic2Q0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX25ldGJzZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9vcGVuYnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnQuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9mcmVlYnNkNC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X25ldGJzZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X29wZW5ic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuCisgICAgICAgYzogdGNwLW1pYi91ZHAtbWliIHN1cHBvcnQgZm9yIHRoZSAqYnNkcyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk1OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogICAqIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2RhdGFfYQorICAgICAgIGNjZXNzLmM6IFByb3Blcmx5IGVuZCBkZWJ1ZyBtZXNzYWdlIHdpdGggbmV3bGluZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjEgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2EKKyAgICAgICBjY2Vzcy5jOiBQcm9wZXJseSBlbmQgZGVidWcgbWVzc2FnZSB3aXRoIG5ld2xpbmUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5NTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjEgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9saW51eC5jOiByZW1vdmUgdmFyCisKKyB0aGF0IHNoYWRvd3MgdGhlIHVzZWZ1bCBvbmUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk1NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2xpbnV4LmM6IHJlbW92ZSB2YXIKKworIHRoYXQgc2hhZG93cyB0aGUgdXNlZnVsIG9uZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5NTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjEgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYzogbWFqb3IgZmlkZGxpbmcgdG8gZ2V0IHRoaW5ncyB3b3JraW5nCisKKyBmb3Igb3BlbmJzZCB0b28uIFRoaXMgc2hvdWxkIHJlYWxseSBiZSByZXdvcmtlZCB0byB1c2UgdGhlCisgdGNwLW1pYi91ZHAtbWliL2RhdGFfYWNjZXNzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjEgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYzogbWFqb3IgZmlkZGxpbmcgdG8gZ2V0IHRoaW5ncyB3b3JraW5nCisKKyBmb3Igb3BlbmJzZCB0b28uIFRoaXMgc2hvdWxkIHJlYWxseSBiZSByZXdvcmtlZCB0byB1c2UgdGhlCisgdGNwLW1pYi91ZHAtbWliL2RhdGFfYWNjZXNzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk1NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmM6IGZpeCB0Y3Agc3RhdGVzIGZvciBkcmFnb25mbHlic2QKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk1NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmM6IGZpeCB0Y3Agc3RhdGVzIGZvciBkcmFnb25mbHlic2QKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTU1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIxICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkuaDogZW5hYmxlIG5ldyB0Y3AvdWRwIG1pYnMgZm9yIHNvbGFyaXMKKyAgICAgIGdpdC1zdm4taWQ6CisKKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjcgLT4gVjUuNy4xLnByZTEKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvc25tcGQuYzogZml4IEMrKyBjb21tZW50cworCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjLCBwZXJsL0FTTi9BU04ucG0sIHBlcmwvQW55RGF0YV9TTk1QL1N0b3JhZ2UucG0sCisgICAgICAgcGVybC9PSUQvT0lELnBtLCBwZXJsL1NOTVAvU05NUC5wbSwgCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0sIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtLCAKKyAgICAgIHBlcmwvYWdlbnQvYWdlbnQucG0sIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtOiBWZXJzaW9uIG51bWJlciB1cGRhdGU6CisKKyA1LjcuMS5wcmUxCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIE1ha2VmaWxlLnRvcDogdmVyc2lvbiB1cGRhdGUgZm9yIDUuNy4xLnByZTEKKworCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBjZjRjY2U0YzE4OWNmNDdmNGM0ODlkYjQzYjdmYTUxMGY4OTA2YTFhIE1lcmdlOiBkZjkxYTlmCisKKyA5M2U5N2RjIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPiBEYXRlOiAgIE1vbgorIEF1ZyA4IDIyOjE1OjI4IDIwMTEgKzAxMDAKKworMjAxMS0wOC0wOCAgRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorCisgICAqIDogTWVyZ2UgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCAnb3JpZ2luL1Y1LTYtcGF0Y2hlcycgaW50bworCisgVjUtNi1wYXRjaGVzCisKKzIwMTEtMDgtMDggIERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KKworICAgKiAgd2luMzIvTWFrZWZpbGUtYXBwcy5pbiwgd2luMzIvZGlzdC9SRUFETUUuYnVpbGQud2luMzIudHh0LCAKKyAgICAgIHdpbjMyL2xpYmFnZW50L01ha2VmaWxlLmluLCB3aW4zMi9saWJuZXRzbm1wdHJhcGQvTWFrZWZpbGUuaW4sIAorICAgICAgd2luMzIvbGlic25tcC9NYWtlZmlsZS5pbiwgd2luMzIvbGlic25tcF9kbGwvTWFrZWZpbGUuaW4sIAorICAgICAgd2luMzIvbmV0c25tcG1pYnMvTWFrZWZpbGUuaW4sIHdpbjMyL3NubXBkL01ha2VmaWxlLmluLCAKKyAgICAgIHdpbjMyL3NubXBuZXRzdGF0L01ha2VmaWxlLmluLCB3aW4zMi9zbm1wdHJhcGQvTWFrZWZpbGUuaW46IERlZmluZQorCisgX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiB0b2tlbiAoYXMgcGVyIEFsZXgnIGJ1aWxkCisgaW5zdHJ1Y3Rpb25zKQorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBkZjE2ZGMyMjIxZTk5M2RkM2M2NjY1MGQ1ZTg3MjU3N2ZmZTZjMDFiIE1lcmdlOiA3MTRiYzgyCisKKyA4ZTVhMjhkIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgTW9uIEF1ZyA4IDEzOjU2OjQzIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZmZhMDViMDUxYWMzZTJiMTk3MTk1YTk5ODljYzdhOTFmZThkOTI4MiBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBNb24gQXVnIDggMTM6NTU6MzgKKyAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDggIERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KKworICAgKiA6IGNvbW1pdCA3MTRiYzgyZmEwMWUyMWEzNjU1ODI0OTYzZmE1NGU5YjgwNDJmZmIwIE1lcmdlOiA2ZmU4ZmU1CisKKyAzZWYxZGI1IEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPiBEYXRlOiAgIE1vbgorIEF1ZyA4IDIxOjIxOjQ2IDIwMTEgKzAxMDAKKworMjAxMS0wOC0wOCAgRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorCisgICAqIDogY29tbWl0IGI0NTE2MDdkY2EwMTVjMTExZTk2ZmRmZWIyZGRiMDY2MWZiNGY3MjQgQXV0aG9yOiBEYXZlCisKKyBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPiBEYXRlOiAgIE1vbiBBdWcgOCAyMToyMDozMiAyMDExCisgKzAxMDAKKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgNmZlOGZlNTI5NGE0NWJjN2U0ZWEzNzUxYTFhZDdhYTQ3YjVjYWJiMiBNZXJnZTogMzY0ZjhmZgorCisgZjY5YWJlMyBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIE1vbiBBdWcKKyA4IDIyOjAyOjM4IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgYzk0ODEzMDQ0YTRjNGE2MDhlOThlODAyMjMwNzVjNmZhZjA0ZWUxMSBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBNb24gQXVnIDggMjE6NTY6MTUgMjAxMSArMDIwMAorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCAzNjRmOGZmYWViOTBiNGViMDE2NWZjODU1Njg4Y2QwNjI2NjMyNzk0IE1lcmdlOiAzMjg3Mjk1CisKKyA3YWJiOTI2IEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgTW9uIEF1ZyA4IDExOjI0OjI2IDIwMTEgLTA3MDAKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBNZXJnZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoICdvcmlnaW4vVjUtNi1wYXRjaGVzJyBpbnRvCisKKyBWNS02LXBhdGNoZXMKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBkaXNwbGF5IHRoZSBicmFuY2ggd2UnbGwgY29tbWl0IHRvCisKKworMjAxMS0wOC0wOCAgVmxhZGltaXIgS29uZHJhdGlldiA8d3VsZjIwMDFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tfaHcuYzogQ0hBTkdFUzogc25tcGQ6IFBBVENIIDMzODY2MzM6CisKKyBmcm9tIHd1bGYyMDAxOiBmaXggaW50ZWdlciBvdmVyZmxvdyBpbiBkaXNrIHBlcmNlbnQgY2FsY3VsYXRpb25zIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA4NGE3NzVkMDU1N2ZlYTk3NTcwZTQxNzE1YTMxNjQ5NzBiNGMwM2EyIE1lcmdlOiA2ZmZmMWMxCisKKyBkMzczYzRmIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgTW9uIEF1ZworIDggMjA6MTI6MzIgMjAxMSArMDIwMAorCisyMDExLTA4LTA4ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2FnZW50X3RyYXAuYzogQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0ggMzM4NzEzOTogZnJvbQorCisgeWFiZXJhdW5leWE6IEF2b2lkIHNlZ2ZhdWx0IGlmIHRyYXBzZXNzIHRyYW5zcG9ydCBlbGVtZW50IGNhbnQgYmUKKyBwYXJzZWQgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogbnNzZnBhdGNoYXBwbHk6IHNwbGl0IHRoZQorCisgZGlzcGxheWVkIGdpdCBjb21taXQgY29tbWFuZCBpbnRvIG11bHRpcGxlIHNlZ21lbnRzCisKKzIwMTEtMDgtMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFnZW50L2hlbHBlcnMvc2NhbGFyX2dyb3VwLmM6IENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAzMzg2OTYxOgorCisgTWFrZSBTTk1QIEdFVCB3b3JrIGluIGFuIEFnZW50WCBzdWJhZ2VudCBpZiB3cml0ZSBzdXBwb3J0IGlzCisgZGlzYWJsZWQgdmlhIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAoTWFyayBSdXNrKS4KKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogc25tcGxpYi9taWIuYzogQ0hBTkdFUzogc25tcGxpYjogRml4IGEgY3Jhc2ggdGhhdCBjb3VsZCBiZQorCisgdHJpZ2dlcmVkIGJ5IGNhbGxpbmcgX21pYmluZGV4X2FkZCgpIHdpdGggdGhlIHNlY29uZCBhcmd1bWVudCBub3QKKyBlcXVhbCB0byAtMS4KKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgNmZmZjFjMWFlNTFiMDZjOWQ4MGZhZjE1MzczYTk2M2QxNzNmMTRlOCBNZXJnZTogODM3YzUyZQorCisgOGNjOTAwNCBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIE1vbiBBdWcgOCAxMDo1ODo1OSAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDhjYTdmZjFlNjkyY2FlYzQxODZiNzg4YzlhZTJkMjdiZTIxMzI5MGYgQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgTW9uIEF1ZyA4IDEwOjMzOjU2CisgMjAxMSAtMDcwMAorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IE1lcmdlIHJlbW90ZS10cmFja2luZyBicmFuY2ggJ29yaWdpbi9WNS00LXBhdGNoZXMnIGludG8KKworIFY1LTQtcGF0Y2hlcworCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBiOGY1MjljYmEyN2MwMTE0YjRjYjczNDBjZmQ0NDk1MDRmYTA3NTA2IE1lcmdlOiAwODIyZjJkCisKKyA1NTZlOTM4IEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgTW9uIEF1ZyA4IDEwOjA1OjM2IDIwMTEgLTA3MDAKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBmaXggZnVuY3Rpb24gbmFtZSB0eXBvCisKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgMjk4ODJhMDc4YTk1OWEwZjc4YjAzZTAxOTY4ZjFkMTdiN2Y2YTI5OSBNZXJnZTogNWU5YmQyZgorCisgMDQwOWMwYSBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIE1vbiBBdWcgOCAxMDowMzozNCAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogbWFudWFsIG1lcmdlIG9mIHB1bGwvcHVzaAorCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogbWFrZSBuc3B1bGwvbnNwdXNoIGNoZWNrIGZvciBhCisKKyBjbGVhbiByZXBvCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogbmV3IGZ1bmN0aW9uICJuc21ha2VhbGwiIHRvIHRlc3QKKworIGJ1aWxkaW5nIG9uIGV2ZXJ5IGJyYW5jaAorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGRlZmF1bHQgdG8gbWVyZ2UKKworCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IE1lcmdlIHJlbW90ZS10cmFja2luZyBicmFuY2ggJ29yaWdpbi9WNS03LXBhdGNoZXMnIGludG8KKworIFY1LTctcGF0Y2hlcworCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaDogQ0hBTkdFUzogV2luZG93czogQXZvaWQgdGhhdCBpZgorCisgdGhlIE5ldC1TTk1QIFBlcmwgbW9kdWxlcyBoYXZlIGJlZW4gYnVpbHQgd2l0aCBhbm90aGVyIHZlcnNpb24gb2YKKyBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyB0aGFuIEFjdGl2ZVBlcmwgdGhhdCB1c2luZyBvbmUgb2YgdGhlc2UgUGVybAorIG1vZHVsZXMgdHJpZ2dlcnMgYSAiRnJlZSB0byB3cm9uZyBwb29sIiBjcmFzaC4gVGhpcyByZWdyZXNzaW9uIHdhcworIGNhdXNlZCBieSBjb21taXQgM2IxNGM1OWNmODI3OGQ0MTAyMDdmZjQyZGViZGEyNjM2NDI2YTQ2OCAodGhlCisgbmV0c25tcF9mcmVlKCkgaW50byBTTk1QX0ZSRUUoKSBjaGFuZ2VzIGluIHRoZSAqLnhzIGZpbGVzKS4KKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgZTEwOTUzOTkzMDcwM2NiMzA1MmQ1MjQxYjE4YWM2ZmMwNjJmYWFjYSBNZXJnZTogMGM5YjZjYgorCisgZTQ2YjE3MCBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIE1vbiBBdWcKKyA4IDE4OjM0OjExIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogc25tcGxpYi9taWIuYzogQ0hBTkdFUzogc25tcGxpYjogRml4IGEgY3Jhc2ggdGhhdCBjb3VsZCBiZQorCisgdHJpZ2dlcmVkIGJ5IGNhbGxpbmcgX21pYmluZGV4X2FkZCgpIHdpdGggdGhlIHNlY29uZCBhcmd1bWVudCBub3QKKyBlcXVhbCB0byAtMS4KKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgN2Y0MmQwZDkzMzIwNDg0MTUyMjcxNDI3Y2M5ODA4Y2JkYTQ5YmJkMCBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBNb24gQXVnIDggMDk6NTA6NTEgMjAxMSArMDIwMAorCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAwYzliNmNiZTlkYmUyZWM1MjE3YTk1YjY3ODFmZDdkYzFmNmViZGE3IE1lcmdlOiBmYTZjZWY1CisKKyA5NjMzMjBmIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgTW9uIEF1ZworIDggMTg6MTQ6MzYgMjAxMSArMDIwMAorCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBhM2I4NjU0YTIzMmM1NjNiYzk3Y2M5OTI1Y2Q5ODU5MGEzMGM1YmM1IEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIE1vbiBBdWcgOCAxNzoyNDoxOCAyMDExICswMjAwCisKKzIwMTEtMDgtMDcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGZhNmNlZjVjYTkxZGYzYTBiMDM0NTViNjg1NTlkMmJlZTI0ODEwMWMgTWVyZ2U6IGY1ZmU1MzYKKworIDhhZGQwZGEgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBTdW4gQXVnCisgNyAxMDoxODo1NCAyMDExICswMjAwCisKKzIwMTEtMDgtMDcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGEwZGQzY2FmMjU5MjZlNDM0NjU3MThiZjQxN2E0NjRjMmZiMzYzNjYgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgU3VuIEF1ZyA3IDEwOjE3OjAxIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzogMzIgaXMgdG9vIGxpbWl0ZWQgZm9yCisKKyBiaWdnZXIgdGFibGVzOyBpbmNyZWFzZSB0aGUgbWF4IG1zZyBjb3VudCB0byAxMjgKKworMjAxMS0wOC0wNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBtYWtlIHJvbGx1cCBhbmQgc3luYyBzdXBwb3J0CisKKyAtLXJlYmFzZSBhbmQgY2hhbmdlIHRoZSBkZWZhdWx0IGJhY2sgdG8gbWVyZ2UKKworMjAxMS0wOC0wNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBNZXJnZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoICdvcmlnaW4vVjUtNC1wYXRjaGVzJyBpbnRvCisKKyBWNS00LXBhdGNoZXMKKworMjAxMS0wOC0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogUkVBRE1FLndpbjMyOiBDSEFOR0VTOiBXaW4zMjogRG9jdW1lbnRlZCBob3cgdG8gdXNlIGJ1aWxkLmJhdCB3aXRoCisKKyBPcGVuU1NMIGVuYWJsZWQKKworMjAxMS0wNy0xNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogUkVBRE1FLndpbjMyOiBDSEFOR0VTOiBXaW5kb3dzOiBSZW1vdmUgb3V0ZGF0ZWQgaW5zdHJ1Y3Rpb25zIGFib3V0CisKKyBlZGl0aW5nIHdpbjMyXGxpYnNubXBfZGxsXGxpYnNubXAuZGVmIGZyb20gUkVBRE1FLndpbjMyCisKKzIwMTEtMDctMTUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIFJFQURNRS53aW4zMjogQ0hBTkdFUzogV2luMzI6IERvY3VtZW50IGhvdyB0byBidWlsZCA2NC1iaXQKKworIGV4ZWN1dGFibGVzIGZvciB0aGUgeDY0L2FtZDY0IGFyY2hpdGVjdHVyZQorCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBmNWZlNTM2ZThmZDZjNDhmZTI0M2RlY2QzMWZhYzljZjFjOTJmNGNjIE1lcmdlOiA3ODUwZWExCisKKyA4MDkyOGE4IEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEF1ZworIDUgMTU6MTM6MjcgMjAxMSArMDIwMAorCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA4MDkyOGE4OTA5Y2ZhYjM3ZjAxYjM5YTA3MWEzZThhZDg1OTU2MjIyIE1lcmdlOiBmMTZhMDk0CisKKyAwZGJjODY5IEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEF1ZworIDUgMTM6NTc6MzAgMjAxMSArMDIwMAorCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAwZGJjODY5ZmVjMDdkOGU5MGRiZDFjOTU0OTNlZTdjYmM2MjNjOTVjIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIEZyaSBBdWcgNSAxMjo0MDozMSAyMDExICswMjAwCisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIC5naXRpZ25vcmU6IC5naXRpZ25vcmU6IEFkZAorCisgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUuZGVmIGFuZCBwZXJsL1NOTVAvdAorCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA4NmMxZTJiOTY3OWZlYzJjZDc5OWJhNzYwMDVjM2Q2MGU5ZDQ3NjM0IE1lcmdlOiBiY2Q4NjM1CisKKyBmMTZhMDk0IEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEF1ZworIDUgMTI6MjA6NTAgMjAxMSArMDIwMAorCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAyZjhkNGY1Nzk2Y2JjMWM3ZTk2N2FjZGFhODAxOWIyNGYxNTIwYTM2IEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIEZyaSBBdWcgNSAxMjowMjo1MSAyMDExICswMjAwCisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHNubXBsaWIvcGFyc2UuYzogVW5icmVhayB0aGUgVjUtNC1wYXRjaGVzIC0gcmV2ZXJ0IGNvbW1pdAorCisgZDJjNDc2OGJkMmVmYjQ4NjY0NDM0YTgzMTQyNWMyZGRhODVkNzEzMyAoQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0gKKyAzMzYyMjMzOiBmcm9tIHlhYmVyYXVuZXlhOiBNdXRlIHVubmVjZXNzYXJ5IGNhbm5vdCBmaW5kIG1vZHVsZQorIG5vaXNlKS4KKworMjAxMS0wOC0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuaDogCisKKyBVbmJyZWFrIHRoZSBWNS00LXBhdGNoZXMgYnJhbmNoIC0gd2FzIGJyb2tlbiBieSBjb21taXQKKyBiZjcxNzhiMGIyMjU4N2Q0M2QxYTgwYzI2OWNkMjE2YmQ1OTMwMjE0IChhZ2VudDogY2hhbmdlIHR5cGUgb2YKKyBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzIHRvIGxvbmcpCisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmg6IFVuYnJlYWsgdGhlIFY1LTQtcGF0Y2hlcworCisgYnJhbmNoIC0gd2FzIGJyb2tlbiBieSBjb21taXQKKyAwZTY4NDJmZTA4MGNlYzg1M2IwOGNkMjMyMzAxNWFiYWJjMzgxY2UxIChDSEFOR0VTOiBzbm1wdHJhcGQ6IFBBVENICisgMzM4MzQ0MTogZnJvbSBzYWNoaW5zdXJlbmRyYW46IEZpeCBjcmFzaCBvbiA1LjQuNCBkdWUgdG8gYWNjZXNzIG9mCisgZnJlZWQgbWVtb3J5KS4KKworMjAxMS0wOC0wNSAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTkVXUzogbWlub3IgTkVXUyBwb2xpc2gKKworCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBiY2Q4NjM1MDcxMzgyMjk2M2QzNzZlZmY1ODJhOTJmNDNlNDI2ZDZjIE1lcmdlOiA5YzgxMGEzCisKKyA3YTIwZjcxIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEF1ZworIDUgMTA6Mjg6NTUgMjAxMSArMDIwMAorCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAzYWE5NDlmYmRmYzFhOTRhODM0MGFkOGJhZjhiMzE0NzU2YTBiYjlkIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIEZyaSBBdWcgNSAxMDoyNjoxNSAyMDExICswMjAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDljODEwYTNiMzdiNjg1NzNjNDAzMzdlMjQ2ZTJmYWYyOTliNzdkMzEgTWVyZ2U6IDcxY2IyZTgKKworIDYxMGQ2M2YgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUaHUgQXVnIDQgMTA6NDI6MDggMjAxMSAtMDcwMAorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA5NDM5MzBlMWUxMjQzODVmZDk0NzM4YjZkY2RhMzdkMjlkYzdhYzdmIEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFRodSBBdWcgNCAxMDo0MTo0MQorIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBNZXJnZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoICdvcmlnaW4vVjUtNC1wYXRjaGVzJyBpbnRvCisKKyBWNS00LXBhdGNoZXMKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgNGVkY2I4OGRhZThiMmU1OWRjNjgzZTgwZDQxNGZhN2VjZWMzNjg4NSBNZXJnZTogNjVmM2VlZgorCisgMmRkOWVkMCBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBBdWcgNCAxMDoyNDoxMSAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogTWVyZ2UgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCAnb3JpZ2luL1Y1LTUtcGF0Y2hlcycgaW50bworCisgVjUtNS1wYXRjaGVzCisKKzIwMTEtMDgtMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGJjNWNhMDNhMDRhYjE5YzYzNGEzNGQwNjBiMGIxNmI3NDg0Y2I1MjAgTWVyZ2U6IDg4ZmRkYjcKKworIDkwYzBlNzUgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUaHUgQXVnCisgNCAxOToxMzowNyAyMDExICswMjAwCisKKzIwMTEtMDgtMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHNubXBsaWIvc25tcF9jbGllbnQuYywgc25tcGxpYi9zbm1wdXNtLmM6IHNubXB1c206IEZpeCByZWNlbnRseQorCisgaW50cm9kdWNlZCBjb21waWxlciB3YXJuaW5ncworCisyMDExLTA4LTA0ICBTdHVhcnQgSGVuZGVyc29uIDx0MGp3MmZ1MGttZ0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9uZXRic2QuYzogQ0hBTkdFUzogb3BlbmJzZDoKKworIFBBVENIIDMzNTc5MzI6IGZyb20gdDBqdzJmdTBrbWc6IENsZWFuaW5nIGluIG1lbW9yeV9uZXRic2QuYyBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgVmxhZGltaXIgS29uZHJhdGlldiA8d3VsZjIwMDFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19nZXRmc3N0YXRzLmM6IENIQU5HRVM6IGFnZW50OgorCisgUEFUQ0ggMzM4NjE0NzogZnJvbSB3dWxmMjAwMTogZml4IFVDRC1TTk1QLU1JQjo6ZHNrVXNlZCBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgNDczZDdlNWNkNGQ0MTFiYmEyMGViODUzNTlkODcyODA2MzMwMWNiZCBNZXJnZTogYTRlOGI2MgorCisgODhmZGRiNyBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBBdWcgNCAwOToyODoyMiAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDIxMDFiYjJkN2FkNmRiMDM4Yzc1NWFhOTE5M2M4YWNlMGRiZDRmNTggQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgVGh1IEF1ZyA0IDA5OjI4OjA2CisgMjAxMSAtMDcwMAorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAuZ2l0aWdub3JlOiBpZ25vcmUgKi5vcmlnIGFuZCAqLnJlagorCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogaGVscCBvdXRwdXQgZGVzY3JpYmVzIHJlYmFzZSB2cworCisgbWVyZ2UgYmV0dGVyCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGYxMjZhMTdjNmEzMDYzNDU1YTUxMTk0MGIwMjMwNDdhYmQ5YjQ4ZWUgTWVyZ2U6IGFkNzY1ZjQKKworIDc3YTQ3ODQgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUaHUgQXVnIDQgMDk6MjU6MTYgMjAxMSAtMDcwMAorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA0NTJlMTcwN2YyMDllYzQ1ZTdjN2YyYTMwNDBlZjU5NWZiOWQxYWY2IE1lcmdlOiBkYzc1NWE2CisKKyBiMzcyZTVhIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVGh1IEF1ZyA0IDA5OjI1OjAzIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wNCAgU3R1YXJ0IEhlbmRlcnNvbiA8dDBqdzJmdTBrbWdAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBNYWtlZmlsZS5pbiwgYWNjb25maWcuaCwgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vb3BlbmJzZC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL29wZW5ic2Q0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vb3BlbmJzZDUuaDogQ0hBTkdFUzogb3BlbmJzZDogUEFUQ0gKKyAgICAgIDMzNTc5Mjc6CisKKyBmcm9tIHQwancyZnUwa21nOiBSZWNvZ25pc2Ugb3BlbmJzZDUgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogZml4IHdoZXJlIGFyZ3VtZW50cyBhcmUgc2V0CisKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBzcGxpdCBuc3NmcGF0Y2hhcHBseSBpbnRvIHR3bworCisgcGFydHM6IGFwcGx5IGFuZCBjb21taXRpbmcKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBwYXRjaCB1c2luZyAtTgorCisKKzIwMTEtMDgtMDQgIERhdmlkIEFybm9sZCA8ZGphQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgbWFuL2RlZmF1bHRfc3RvcmUuMy5ib3QsIG1hbi9lbmNvZGVfa2V5Y2hhbmdlLjEuZGVmLCAKKyAgICAgIG1hbi9maXhwcm9jLjEuZGVmLCBtYW4vbWliMmMuY29uZi41LmluLCBtYW4vbmV0LXNubXAtY29uZmlnLjEuZGVmLAorICAgICAgIG1hbi9uZXRzbm1wX2FnZW50X2FwaS4zLmRlZiwgbWFuL25ldHNubXBfbWliX2FwaS4zLmRlZiwgCisgICAgICBtYW4vc25tcC5jb25mLjUuZGVmLCBtYW4vc25tcGJ1bGtnZXQuMS5kZWYsCisgICAgICBtYW4vc25tcGJ1bGt3YWxrLjEuZGVmLCAgbWFuL3NubXBjbWQuMS5kZWYsIG1hbi9zbm1wY29uZi4xLmRlZiwKKyAgICAgIG1hbi9zbm1wZC44LmRlZiwgIG1hbi9zbm1wZC5jb25mLjUuZGVmLCBtYW4vc25tcGQuZXhhbXBsZXMuNS5kZWYsIAorICAgICAgbWFuL3NubXBkZWx0YS4xLmRlZiwgbWFuL3NubXBkZi4xLmRlZiwgbWFuL3NubXBnZXQuMS5kZWYsIAorICAgICAgbWFuL3NubXBnZXRuZXh0LjEuZGVmLCBtYW4vc25tcG5ldHN0YXQuMS5kZWYsIG1hbi9zbm1wc2V0LjEuZGVmLCAKKyAgICAgIG1hbi9zbm1wc3RhdHVzLjEuZGVmLCBtYW4vc25tcHRhYmxlLjEuZGVmLCBtYW4vc25tcHRlc3QuMS5kZWYsIAorICAgICAgbWFuL3NubXB0cmFuc2xhdGUuMS5kZWYsIG1hbi9zbm1wdHJhcC4xLmRlZiwgbWFuL3NubXB0cmFwZC44LmRlZiwgCisgICAgICBtYW4vc25tcHRyYXBkLmNvbmYuNS5kZWYsIG1hbi9zbm1wdXNtLjEuZGVmLCBtYW4vc25tcHZhY20uMS5kZWYsIAorICAgICAgbWFuL3NubXB3YWxrLjEuZGVmOiBDSEFOR0VTOiBtYW46IFBBVENIIDMzMTI4NjE6IGZyb20gZGphOiBNYW4KKyAgICAgIHBhZ2VzCisKKyBoeXBoZW4tdnMtbWludXMgY2xlYW51cCBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2k6IERldGVjdCAoYW5kIHJlamVjdCkgT3BlblNTTAorCisgMS4wLjAKKworMjAxMS0wOC0wNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2k6IENvbW1hbmQtbGluZSBvcHRpb25zIGZvciBzaWxlbnQKKworIGluc3RhbGwKKworMjAxMS0wOC0wNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2k6IEVuc3VyZSBXaW5kb3dzIHBhY2thZ2UKKworIHVuaW5zdGFsbHMgY29tcGxldGVseS4KKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgODFjNjNmYjVjNWU0YWJiOWMyOWFjYTg5YmY5ZDY5NDQxMDA4NmU5NyBNZXJnZTogNGE2OTIwYQorCisgZGM3NTVhNiBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBBdWcgNCAwODozMzozNCAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9jbGllbnQuYzogYWRkZWQgc3BhY2luZyB0byBtYXRjaCB0aGUgbGF0ZXIgYnJhbmNoZXMKKworCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IG1hbnVhbCBtZXJnZQorCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9jbGllbnQuYzogcmVtb3ZlZCBhY2NpZGVudGlhbGx5IGR1cGxpY2F0ZWQgY29kZQorCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogbWFudWFsIG1lcmdlCisKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBtYW51YWwgbWVyZ2UKKworCisyMDExLTA4LTA0ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvcGFyc2UuYzogQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0ggMzM2MjIzMzogZnJvbQorCisgeWFiZXJhdW5leWE6IE11dGUgdW5uZWNlc3NhcnkgY2Fubm90IGZpbmQgbW9kdWxlIG5vaXNlIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jLCBhZ2VudC9zbm1wX3ZhcnMuYywgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVyczogQ0hBTkdFUzogZnJlZWJzZDogUEFUQ0ggMzM2MzMwODoKKyAgICAgIGZyb20KKworIHlhYmVyYXVuZXlhOiBGaXggY29tcGlsYXRpb24gb24gRnJlZUJTRCA5Lnggd2l0aCByZWNlbnQgaGVhZGVyCisgc2h1ZmZsaW5nIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFsbG93IG5zcm9sbHVwIHRvIHRha2UgYSAtLW1lcmdlCisKKyBmbGFnIGZvciBtZXJnaW5nIGluc3RlYWQgb2YgcmViYXNpbmcKKworMjAxMS0wOC0wNCAgU2FjaGluIFN1cmVuZHJhbiA8c2FjaGluc3VyZW5kcmFuQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCwgc25tcGxpYi9zbm1wX2NsaWVudC5jLCAKKyAgICAgIHNubXBsaWIvc25tcHVzbS5jOiBDSEFOR0VTOiBzbm1wdHJhcGQ6IFBBVENIIDMzODM0NDE6IGZyb20KKworIHNhY2hpbnN1cmVuZHJhbjogRml4IGNyYXNoIG9uIDUuNC40IGR1ZSB0byBhY2Nlc3Mgb2YgZnJlZWQgbWVtb3J5IFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIE1ha2VmaWxlLmluOiBDSEFOR0VTOiBmcmVlYnNkOiBQQVRDSCAzMzYzMzI4OiBmcm9tIHlhYmVyYXVuZXlhOgorCisgQWRkIEZyZWVCU0QgOS54IHRvIHN1cHBvcnRlZCBPU2VzIGxpc3QgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9wYXJzZS5jOiBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzMzYyMjMzOiBmcm9tCisKKyB5YWJlcmF1bmV5YTogTXV0ZSB1bm5lY2Vzc2FyeSBjYW5ub3QgZmluZCBtb2R1bGUgbm9pc2UgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsIGFnZW50L3NubXBfdmFycy5jLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzOiBDSEFOR0VTOiBmcmVlYnNkOiBQQVRDSCAzMzYzMzA4OgorICAgICAgZnJvbQorCisgeWFiZXJhdW5leWE6IEZpeCBjb21waWxhdGlvbiBvbiBGcmVlQlNEIDkueCB3aXRoIHJlY2VudCBoZWFkZXIKKyBzaHVmZmxpbmcgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYWxsb3cgbnNyb2xsdXAgdG8gdGFrZSBhIC0tbWVyZ2UKKworIGZsYWcgZm9yIG1lcmdpbmcgaW5zdGVhZCBvZiByZWJhc2luZworCisyMDExLTA4LTA0ICBTYWNoaW4gU3VyZW5kcmFuIDxzYWNoaW5zdXJlbmRyYW5AdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oLCBzbm1wbGliL3NubXBfY2xpZW50LmMsIAorICAgICAgc25tcGxpYi9zbm1wdXNtLmM6IENIQU5HRVM6IHNubXB0cmFwZDogUEFUQ0ggMzM4MzQ0MTogZnJvbQorCisgc2FjaGluc3VyZW5kcmFuOiBGaXggY3Jhc2ggb24gNS40LjQgZHVlIHRvIGFjY2VzcyBvZiBmcmVlZCBtZW1vcnkgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTWFrZWZpbGUuaW46IENIQU5HRVM6IGZyZWVic2Q6IFBBVENIIDMzNjMzMjg6IGZyb20geWFiZXJhdW5leWE6CisKKyBBZGQgRnJlZUJTRCA5LnggdG8gc3VwcG9ydGVkIE9TZXMgbGlzdCBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3BhcnNlLmM6IENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDMzNjIyMzM6IGZyb20KKworIHlhYmVyYXVuZXlhOiBNdXRlIHVubmVjZXNzYXJ5IGNhbm5vdCBmaW5kIG1vZHVsZSBub2lzZSBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYywgYWdlbnQvc25tcF92YXJzLmMsIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnM6IENIQU5HRVM6IGZyZWVic2Q6IFBBVENIIDMzNjMzMDg6CisgICAgICBmcm9tCisKKyB5YWJlcmF1bmV5YTogRml4IGNvbXBpbGF0aW9uIG9uIEZyZWVCU0QgOS54IHdpdGggcmVjZW50IGhlYWRlcgorIHNodWZmbGluZyBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhbGxvdyBuc3JvbGx1cCB0byB0YWtlIGEgLS1tZXJnZQorCisgZmxhZyBmb3IgbWVyZ2luZyBpbnN0ZWFkIG9mIHJlYmFzaW5nCisKKzIwMTEtMDgtMDQgIFNhY2hpbiBTdXJlbmRyYW4gPHNhY2hpbnN1cmVuZHJhbkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgsIHNubXBsaWIvc25tcF9jbGllbnQuYywgCisgICAgICBzbm1wbGliL3NubXB1c20uYzogQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSCAzMzgzNDQxOiBmcm9tCisKKyBzYWNoaW5zdXJlbmRyYW46IEZpeCBjcmFzaCBvbiA1LjQuNCBkdWUgdG8gYWNjZXNzIG9mIGZyZWVkIG1lbW9yeSBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3BhcnNlLmM6IENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDMzNjIyMzM6IGZyb20KKworIHlhYmVyYXVuZXlhOiBNdXRlIHVubmVjZXNzYXJ5IGNhbm5vdCBmaW5kIG1vZHVsZSBub2lzZSBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhbGxvdyBuc3JvbGx1cCB0byB0YWtlIGEgLS1tZXJnZQorCisgZmxhZyBmb3IgbWVyZ2luZyBpbnN0ZWFkIG9mIHJlYmFzaW5nCisKKzIwMTEtMDgtMDQgIFNhY2hpbiBTdXJlbmRyYW4gPHNhY2hpbnN1cmVuZHJhbkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgsIHNubXBsaWIvc25tcF9jbGllbnQuYywgCisgICAgICBzbm1wbGliL3NubXB1c20uYzogQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSCAzMzgzNDQxOiBmcm9tCisKKyBzYWNoaW5zdXJlbmRyYW46IEZpeCBjcmFzaCBvbiA1LjQuNCBkdWUgdG8gYWNjZXNzIG9mIGZyZWVkIG1lbW9yeSBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9zeXNjdGwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2ZyZWVic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYywgc25tcGxpYi9rZXl0b29scy5jLAorICAgICAgc25tcGxpYi9zY2FwaS5jOgorCisgQ0hBTkdFUzogYnVpbGRpbmc6IFBBVENIIDMzODM5NTE6IGZyb20geWFiZXJhdW5leWE6IEZpeCAtV3VudXNlZAorIGNvbXBpbGUgd2FybmluZ3Mgd2l0aCBGcmVlQlNEL05ldEJTRCBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9zeXNjdGwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2ZyZWVic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYywgc25tcGxpYi9rZXl0b29scy5jLAorICAgICAgc25tcGxpYi9zY2FwaS5jOgorCisgQ0hBTkdFUzogYnVpbGRpbmc6IFBBVENIIDMzODM5NTE6IGZyb20geWFiZXJhdW5leWE6IEZpeCAtV3VudXNlZAorIGNvbXBpbGUgd2FybmluZ3Mgd2l0aCBGcmVlQlNEL05ldEJTRCBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZTg3OGFiYmRiMTgwOGVmODNlMGE4MDc0NTM2ZmI1NGUxMzIxOWE4YiBNZXJnZTogNDAzZGU0MgorCisgODc4ZmJmNCBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBBdWcgNCAwNzo1NTowMCAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDI1MGFmYTA2ODkyZmQ4OTdhYzMxZTM4MzZhN2ZmYzllMmI0Y2Y3YjkgTWVyZ2U6IDJjMTRjMWMKKworIDNhZmM1ZTAgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUaHUgQXVnIDQgMDc6NTE6MzMgMjAxMSAtMDcwMAorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA1NzhjZDdjY2UzNTFhZThkOTA0ZWMzZDgwYmU5YmE2ZDFkNDhhNzEyIE1lcmdlOiAyNTk4OGJlCisKKyBmM2JjNTUxIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVGh1IEF1ZyA0IDA3OjUwOjU2IDIwMTEgLTA3MDAKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBhdXRvY29uZgorCisKKzIwMTEtMDgtMDQgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlLmQvY29uZmlnX29zX3N0cnVjdF9tZW1iZXJzOiBDSEFOR0VTOiBidWlsZGluZzogUEFUQ0gKKworIDMzODM5NDk6IGZyb20geWFiZXJhdW5leWE6IEZpeCBhdXRvY29uZiB0ZXN0cyBmb3Igc3lzL21idWYuaCBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBwcm9tcHQgZm9yIHBhdGNoIGFuZCBhbiBhcmVhLCBhbmQKKworIHVzZSB0aGUgcHJvcGVyIENIQU5HRVMgbGluZSBmb3JtYXQKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBVc2UgZmV0Y2ggLS1hbGwgYW5kIHJlYmFzZSBhcworCisgc3VnZ2VzdGVkIGJ5IEJhcnQgZm9yIHNwZWVkIGltcHJvdmVtZW50cworCisyMDExLTA4LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBkNmExYTg5ZTZmNjQ4OTUxYTliODMxOTMyZDNjYzIzMDgyMWYyZDM3IE1lcmdlOiBkY2I3MTJmCisKKyA4NzJlMDEzIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVGh1IEF1ZworIDQgMTI6MDY6MTggMjAxMSArMDIwMAorCisyMDExLTA4LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA0NDk2OWI0ZTU3YzI3MTk0ZTViZDM1N2JjNDUyNzVmZWI4Njk1ZDIyIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIEZyaSBKdWwgOCAyMDo1MjoyNSAyMDExICswMjAwCisKKzIwMTEtMDctMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFnZW50L21pYmdyb3VwL3dpbkV4dERMTC5jOiBDSEFOR0VTOiBXaW4zMjogd2luRXh0RExMOiBJbnZva2UKKworIFNubXBVdGlsT2lkRnJlZSgpIGJlZm9yZSBTbm1wVXRpbE9pZENweSgpLiBJdCdzIG5vdCBjbGVhciB5ZXQgd2h5CisgdGhlIG9yaWdpbmFsIGNvZGUgZGlkIG5vdCBtYWtlIHNubXB3YWxrIHRyaWdnZXIgYSBtZW1vcnkgbGVhay4KKworMjAxMS0wOC0wNCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgZGNiNzEyZmZjODZiMzM1ODMwMDBlZjRhZTlhNTFjZWQyNWNkMTViZiBNZXJnZTogZTg1Y2ZhNQorCisgOTg2MjNlZiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFRodSBBdWcKKyA0IDExOjM2OjE3IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgOGEwMWVjNjQyM2Q0MDBjNGExM2NjYWM2OGEzNzkxZDAyMThhMDg4NSBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUaHUgQXVnIDQgMTE6MTk6MTcgMjAxMSArMDIwMAorCisyMDExLTA4LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBlODVjZmE1OTliMjNiNzZkOTc5MTNjOTZiNWQ3MDNiZmY2YmE0OTQ0IE1lcmdlOiBiMDU2ZWU2CisKKyBlMjFlZWYyIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVGh1IEF1ZworIDQgMDg6NDQ6NDMgMjAxMSArMDIwMAorCisyMDExLTA4LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmM6IENIQU5HRVM6IGFnZW50OgorCisgQXZvaWQgdGhhdCBhIE1JQiB3YWxrIG9uIHRoZSBob3N0IHJlc291cmNlcyBNSUIgdHJpZ2dlcnMgYSBjcmFzaCBvbgorIEZlZG9yYSAxNQorCisyMDExLTA4LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBiMDU2ZWU2ZWI1MzkwOWFkMDRmMTZlYzI2ZDI2OTBkN2EwODMxOTJhIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFRodSBBdWcgNCAwNzo1OTowNCAyMDExICswMjAwCisKKzIwMTEtMDgtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqICBhZ2VudC9hZ2VudF90cmFwLmMsIGFnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kYXRhX2FjY2Vzcy9kb3Qzc3RhdHNfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjCisgICAgICAgZXNzLmMsIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19zdGF0dXMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZGF0YV9hY2Nlc3MvZXRoZXJzdGF0c19saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MKKyAgICAgICAuYywgYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmMsIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uYywgYWdlbnQvc25tcF9hZ2VudC5jLCAKKyAgICAgIGFwcHMvc25tcGJ1bGtnZXQuYywgYXBwcy9zbm1wdGxzLmMsIGFwcHMvc25tcHRyYXBkX2xvZy5jLCAKKyAgICAgIHBlcmwvU05NUC9TTk1QLnhzLCBzbm1wbGliL2NvbnRhaW5lcl9pdGVyYXRvci5jLCAKKyAgICAgIHNubXBsaWIvZGlyX3V0aWxzLmMsIHNubXBsaWIvc25tcF9hcGkuYywgc25tcGxpYi9zbm1wX2NsaWVudC5jLCAKKyAgICAgIHNubXBsaWIvc25tcF9lbnVtLmMsIHNubXBsaWIvc25tcF9vcGVuc3NsLmMsIHNubXBsaWIvc25tcHVzbS5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmM6IENIQU5HRVM6IHNubXBsaWIsIHNubXBkOgorCisgcGVybDogRWxpbWluYXRlIGRlYWQgdmFyaWFibGVzCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGFlOGUzZWNkMmRmNGNmMzc2MjU5NDRhZGVkMWRmZTQ3MzVkNDRlZWEgTWVyZ2U6IDczMTg3Y2UKKworIDkzMzVlMTkgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBXZWQgQXVnIDMgMTQ6Mzc6MzYgMjAxMSAtMDcwMAorCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA3OTRmOWE2OWQ3ZWI2NDIyNjgyMDBiMGE0YjE5OTE1MWRlZjY2ZWQwIEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFdlZCBBdWcgMyAxNDozNjoyNQorIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhZGRlZCBhIGNvbW1lbnQKKworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGF0IGVuZCBvZiBuc3JvbGx1cCBtZW50aW9uIHRoYXQKKworIG5vdyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byBydW4gbnNzeW5jCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYSBuZXcgbnNzeW5jKCkgZnVuY3Rpb24gZm9yCisKKyBwdXNoL3B1bGxpbmcgYWN0aXZlIGJyYW5jaGVzCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYWRkZWQgYSBjb21tZW50CisKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhdCBlbmQgb2YgbnNyb2xsdXAgbWVudGlvbiB0aGF0CisKKyBub3cgd291bGQgYmUgYSBnb29kIHRpbWUgdG8gcnVuIG5zc3luYworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGEgbmV3IG5zc3luYygpIGZ1bmN0aW9uIGZvcgorCisgcHVzaC9wdWxsaW5nIGFjdGl2ZSBicmFuY2hlcworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGF0IGVuZCBvZiBuc3JvbGx1cCBtZW50aW9uIHRoYXQKKworIG5vdyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byBydW4gbnNzeW5jCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYSBuZXcgbnNzeW5jKCkgZnVuY3Rpb24gZm9yCisKKyBwdXNoL3B1bGxpbmcgYWN0aXZlIGJyYW5jaGVzCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYWRkZWQgYSBjb21tZW50CisKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhdCBlbmQgb2YgbnNyb2xsdXAgbWVudGlvbiB0aGF0CisKKyBub3cgd291bGQgYmUgYSBnb29kIHRpbWUgdG8gcnVuIG5zc3luYworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGEgbmV3IG5zc3luYygpIGZ1bmN0aW9uIGZvcgorCisgcHVzaC9wdWxsaW5nIGFjdGl2ZSBicmFuY2hlcworCisyMDExLTA4LTAzICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIuaDogUmVlbmFibGUgSVAtTUlCOjppcERlZmF1bHRSb3V0ZXJUYWJsZQorICAgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBBIG5ldyBmdW5jdGlvbjogbnNzZnBhdGNoYXBwbHkKKworIHRoYXQgYXV0by1wdWxscyBnaXQgY29tbWFuZCBsaW5lIGluZm8gZnJvbSBTRgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1jdHgtZ2V0Lm0yaTogYWRkZWQgdmFyaWFibGVzIG5hbWVzIHRvCisKKyB0aGUgZ2VuZXJhdGVkIGVycm9yIG1lc3NhZ2VzLgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyYWN0aXZlLXNldHVwLm0yYzogV29yZGluZyBjaGFuZ2VzIHRvCisKKyBoZWxwIGRlc2NyaWJlIGNvbnRleHRzIGJldHRlcgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9NYWtlZmlsZS5pbiwgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtZ2V0LVU2NC5tMmk6IEFkZGVkCisKKyB0aGUgbWlzc2luZyBVNjQgbTJpIGZpbGUKKworMjAxMS0wOC0wMyAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtbWliLmg6IFJlZW5hYmxlIElQLU1JQjo6aXBEZWZhdWx0Um91dGVyVGFibGUKKyAgICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogQSBuZXcgZnVuY3Rpb246IG5zc2ZwYXRjaGFwcGx5CisKKyB0aGF0IGF1dG8tcHVsbHMgZ2l0IGNvbW1hbmQgbGluZSBpbmZvIGZyb20gU0YKKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtY3R4LWdldC5tMmk6IGFkZGVkIHZhcmlhYmxlcyBuYW1lcyB0bworCisgdGhlIGdlbmVyYXRlZCBlcnJvciBtZXNzYWdlcy4KKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmMtY29uZi5kL21mZC1pbnRlcmFjdGl2ZS1zZXR1cC5tMmM6IFdvcmRpbmcgY2hhbmdlcyB0bworCisgaGVscCBkZXNjcmliZSBjb250ZXh0cyBiZXR0ZXIKKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvTWFrZWZpbGUuaW4sIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLWdldC1VNjQubTJpOiBBZGRlZAorCisgdGhlIG1pc3NpbmcgVTY0IG0yaSBmaWxlCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogQSBuZXcgZnVuY3Rpb246IG5zc2ZwYXRjaGFwcGx5CisKKyB0aGF0IGF1dG8tcHVsbHMgZ2l0IGNvbW1hbmQgbGluZSBpbmZvIGZyb20gU0YKKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtY3R4LWdldC5tMmk6IGFkZGVkIHZhcmlhYmxlcyBuYW1lcyB0bworCisgdGhlIGdlbmVyYXRlZCBlcnJvciBtZXNzYWdlcy4KKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmMtY29uZi5kL21mZC1pbnRlcmFjdGl2ZS1zZXR1cC5tMmM6IFdvcmRpbmcgY2hhbmdlcyB0bworCisgaGVscCBkZXNjcmliZSBjb250ZXh0cyBiZXR0ZXIKKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvTWFrZWZpbGUuaW4sIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLWdldC1VNjQubTJpOiBBZGRlZAorCisgdGhlIG1pc3NpbmcgVTY0IG0yaSBmaWxlCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogQSBuZXcgZnVuY3Rpb246IG5zc2ZwYXRjaGFwcGx5CisKKyB0aGF0IGF1dG8tcHVsbHMgZ2l0IGNvbW1hbmQgbGluZSBpbmZvIGZyb20gU0YKKworMjAxMS0wNy0xOCAgSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CisKKyAgICogYWdlbnQvYWdlbnRfdHJhcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jOiBhZ2VudDogY2hhbmdlCisKKyB0eXBlIG9mIHNubXBfZW5hYmxlYXV0aGVudHJhcHMgdG8gbG9uZyBUeXBlIG9mIHNubXBfZW5hYmxlYXV0aGVudHJhcHMgdmFyaWFibGUgaXMgY2hhbmdlZCBmcm9tIGludCB0byBsb25nLgorIFRoaXMgZml4ZXMgdGhlIGJ1ZyB3aXRoIHdyaXRpbmcgdG8gc25tcEVuYWJsZUF1dGhlblRyYXBzIGlmIHNlcnZlcgorIGlzIGNvbXBpbGVkIGZvciA2NGJpdCAoc25tcHNldCByZXBvcnRzIHdyb25nIGxlbmd0aCkuIFRoaXMgYnVnIHdhcworIGludHJvZHVjZWQgYSBsb25nIHRpbWUgYWdvIChieSBmYWVlY2QwIGNvbW1pdCkuICBBY3R1YWxseSB0aGlzIGlzIGEgJ2xlc3MgZWZmb3J0JyB0eXBlIG9mIGZpeCBidXQgSSB3b25kZXIgd2h5IHdlCisgbmVlZCBhIGxvbmcgdG8gc3RvcmUgYW4gSU5URUdFUiBpbiB0aGUgZmlyc3QgcGxhY2U/IFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPiBTaWduZWQtb2ZmLWJ5OiBXZXMKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1jdHgtZ2V0Lm0yaTogYWRkZWQgdmFyaWFibGVzIG5hbWVzIHRvCisKKyB0aGUgZ2VuZXJhdGVkIGVycm9yIG1lc3NhZ2VzLgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyYWN0aXZlLXNldHVwLm0yYzogV29yZGluZyBjaGFuZ2VzIHRvCisKKyBoZWxwIGRlc2NyaWJlIGNvbnRleHRzIGJldHRlcgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9NYWtlZmlsZS5pbiwgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtZ2V0LVU2NC5tMmk6IEFkZGVkCisKKyB0aGUgbWlzc2luZyBVNjQgbTJpIGZpbGUKKworMjAxMS0wOC0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgNmFkN2UyOGZmOWU1ZTRlYmMxMzU4ZWUzOWNjOTc5NmE0NGExYmVlNyBNZXJnZTogZjI4MzJlMworCisgMWUxNTRjZSBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFdlZCBBdWcKKyAzIDE5OjE1OjI0IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgNjFiMTc4ZjFlZTg5NTJhYTAzYWEzYjFiYTUxZjRhNjY1NWU0N2YwMSBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBXZWQgQXVnIDMgMTg6MDk6NDcgMjAxMSArMDIwMAorCisyMDExLTA4LTAzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL3R5cGVzLmg6IFdoaXRlc3BhY2Utb25seSBjaGFuZ2U6IGZpeCBpbmRlbnRhdGlvbgorCisgb2YgYW4gI2luY2x1ZGUgZGlyZWN0aXZlCisKKzIwMTEtMDgtMDIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHBlcmwvTmV0U05NUC54czogQ0hBTkdFUzogUGVybDogUmVtb3ZlIGZpbGUgcGVybC9OZXRTTk1QLnhzCisKKyBiZWNhdXNlIGl0IGJyZWFrcyB0aGUgV2luZG93cyBidWlsZC4gIFRvIFdlczogaWYgeW91IGNhbiB0ZWxsIG1lIGhvdyB0byByZXByb2R1Y2UgdGhlIHByb2JsZW0geW91IG9ic2VydmVkCisgSSdsbCB0cnkgdG8gZmluZCBhIHBvcnRhYmxlIGZpeC4gIFRoaXMgcmV2ZXJ0cyBjb21taXQgZDU0ODcxZjUyOTM2NzVjODA1OGVjY2U4OGZlZDViNjQ2YzgzNjMyMyAoIkFkZGVkCisgYSBib2d1cyBlbXB0eSAueHMgZmlsZSBmb3IgYnVuZGxpbmcgb24gbmV3ZXIgcGVybCB0aGF0IHdhbnRzCisgInNvbWV0aGluZyIiKS4KKworMjAxMS0wOC0wMiAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgMGY0ODliMTk5YWRhYjQ4YjE2MzNlYmNhZjVmZjVhN2MyMmM0Y2I4OSBNZXJnZTogZjRlYWEwMgorCisgNzJhNTliYyBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFR1ZSBBdWcKKyAyIDEwOjExOjUzIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wMiAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgN2ZjYzBiODAzMmY4ZGE1YjdiYzMwMDU5YWYwYmE2NTZlYWU3MTA5MSBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBNb24gQXVnIDEgMTQ6MTE6MjggMjAxMSArMDIwMAorCisyMDExLTA4LTAyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAgICogCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0CisgICAgICAgYV9hY2Nlc3MuYzogRml4IGEgY29tcGlsZXIgd2FybmluZyBpbgorCisKKyBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9hY2Nlc3MuYworCisyMDExLTA4LTAxICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAuZ2l0aWdub3JlOiAuZ2l0aWdub3JlOiBBZGQgZmlsZSBuYW1lcyBhbmQgcGF0dGVybnMgZm9yIG91dHB1dAorCisgZmlsZXMgZ2VuZXJhdGVkIGR1cmluZyB0aGUgV2luZG93cyBidWlsZAorCisyMDExLTA3LTI5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAuZ2l0aWdub3JlOiAuZ2l0aWdub3JlOiBTb3J0IGFscGhhYmV0aWNhbGx5CisKKworMjAxMS0wNy0yOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogLmdpdGlnbm9yZTogLmdpdGlnbm9yZTogQWRkIGFwcHMvc3NodG9zbm1wCisKKworMjAxMS0wOC0wMSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogIC5naXRpZ25vcmUsIHBlcmwvVHJhcFJlY2VpdmVyL2NvbnN0LWMuaW5jLCAKKyAgICAgIHBlcmwvVHJhcFJlY2VpdmVyL2NvbnN0LXhzLmluYzogUmVtb3ZlIHR3byBnZW5lcmF0ZWQgUGVybCBmaWxlcy4KKworCisyMDExLTA4LTAyICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBmNGVhYTAyZDliMDc2YTY3ZDcyNzJkZTdlZWY4ZTlkZmJmMTg5YmJmIE1lcmdlOiA0MDEyNWQ4CisKKyBhZGFkY2I5IEF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVHVlIEF1ZyAyIDAwOjU3OjUxIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wMiAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9uc2ItZnVuY3Rpb25zOiBzdXBwcmVzcyAib2siIHRlc3Qgb3V0cHV0IGluIG5zYgorCisKKzIwMTEtMDgtMDEgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA0MDEyNWQ4NTM5Y2Q4OWY5NTJmYmMyNDU4OGM1ZTgxZTljZDgyMWZlIEF1dGhvcjogSmFuCisKKyBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBNb24gQXVnIDEKKyAxMzo1ODozMyAyMDExICswMjAwCisKKzIwMTEtMDgtMDEgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDVhY2YwZDJjZWIzOTc3OTY0ZWQzOWYwMDMwNzNiYTY0MTM4YzJlYmQgQXV0aG9yOiBUaG9tYXMKKworIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgU3VuIEp1bCAzMSAyMzo1Nzo0MQorIDIwMTEgKzAyMDAKKworMjAxMS0wNy0zMSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgYTc3MjJhODFmOWNiN2FhODY3MGU3YzIzODYwMTM2MmEzMTA4N2FjYyBNZXJnZTogMjQyZTE3OQorCisgYWU5YWM2YyBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFN1biBKdWwKKyAzMSAwOToxMTo0NSAyMDExICswMjAwCisKKzIwMTEtMDctMzEgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFwcHMvc3NodG9zbm1wLmM6IEZpeCBhbiBpbmNvcnJlY3Qgc291cmNlIGNvZGUgY29tbWVudDogdGhlcmUgaXMKKworIG5vIHJlcXVpcmVtZW50IGluIHRoZSBBTlNJIEMgc3RhbmRhcmQgdGhhdCBzdGFjayB2YXJpYWJsZXMgc2hvdWxkIGJlCisgaW5pdGlhbGl6ZWQgdG8gemVyby4KKworMjAxMS0wNy0zMSAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgMjQyZTE3OTdiMjY5NGEwNjg5ODU2YWUzNmQwNWQzNDEzYWFmOGQ3NyBBdXRob3I6IFRob21hcworCisgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBTdW4gSnVsIDMxIDAxOjQ0OjA5CisgMjAxMSArMDIwMAorCisyMDExLTA3LTMwICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3N5c3RlbS5jOiBDSEFOR0VTOiBidWlsZGluZzogYnVpbGQgZml4IGZvciBzeXN0ZW1zIGxhY2tpbmcKKworIGdldGFkZHJpbmZvKCkgYW5kIEVBSV9GQUlMIChlLmcuIEhQLVVYIDEwLjIwLzExLjAwKQorCisyMDExLTA3LTMwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAxOGRmNzU5ZjE5Yjk3NWM0NDlkMDEwYmIwYTE2MjExOWJiNjgzNjBkIE1lcmdlOiA1NGE0NGNiCisKKyA3MDUwNzE4IEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgU2F0IEp1bAorIDMwIDE2OjM5OjEzIDIwMTEgKzAyMDAKKworMjAxMS0wNy0zMCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgODJkNzNmYjExYmUzYWUzMWYzOWM5ZDYxOGQ1Mzg4ZGM5YjEwMDZkNyBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBGcmkgSnVsIDI5IDIwOjUxOjI3IDIwMTEgKzAyMDAKKworMjAxMS0wNy0zMCAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGNvbmZpZ3VyZSwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogYXV0b3JlY29uZgorCisKKzIwMTEtMDctMzAgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBjb25maWd1cmUsIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IGF1dG9yZWNvbmYKKworCisyMDExLTA3LTMwICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCAxMDlmNjY5NGQ3ODhmNDhlYmQ5ZmMwYTFlOTBjNDVhYmMzN2JlYTIwIEF1dGhvcjogVGhvbWFzCisKKyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFNhdCBKdWwgMzAgMTQ6MjI6MTkKKyAyMDExICswMjAwCisKKzIwMTEtMDctMzAgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDdkODEwMGVlZDQ1OWExZmYxYTIwYzA2NzM2NGZhNmNiNDc0OTEzMDkgTWVyZ2U6IDExNmMyNGYKKworIDllNDdhYzQgQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBTYXQgSnVsIDMwIDAwOjIwOjAxIDIwMTEgKzAyMDAKKworMjAxMS0wNy0zMCAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9uc2ItZnVuY3Rpb25zLCBkaXN0L25zYi1uaWdodGx5LCBkaXN0L25zYi1wYWNrYWdlOiBtaW5vciBuc2IKKworIGZpeGVzL2VuaGFuY2VtZW50cyBmcm9tIG15IG9sZCBzdm4gdHJlZQorCisyMDExLTA3LTI5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAxMTZjMjRmMGY3ZmIzZjk5YmE2NDY3MzBmNjFjNTZkMWFlMjNiYTQxIE1lcmdlOiA5ODJmYjdmCisKKyA0ZmMwYjhiIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEp1bAorIDI5IDExOjMxOjIwIDIwMTEgKzAyMDAKKworMjAxMS0wNy0yOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgYzQ4MTczYzA2YTllYWFkYmY4MWU2YjQ5NjJkNTVlZjBhNTRkYjI1MSBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBGcmkgSnVsIDI5IDEwOjI3OjM5IDIwMTEgKzAyMDAKKworMjAxMS0wNy0yOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogY29uZmlndXJlLCBsdG1haW4uc2gsIG00L2xpYnRvb2wubTQ6IFJlcnVuIGF1dG9yZWNvbmYKKworCisyMDExLTA3LTI5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAuZ2l0aWdub3JlOiAuZ2l0aWdub3JlOiBTb3J0IGFscGhhYmV0aWNhbGx5CisKKworMjAxMS0wNy0yOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogLmdpdGlnbm9yZTogLmdpdGlnbm9yZTogQWRkIGFwcHMvc3NodG9zbm1wCisKKworMjAxMS0wNy0yOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJoX3N0b3JhZ2UuYzogRml4IHR3byBmaWxlbmFtZXMgaW4gaG9zdCBtaWIKKworIHNvdXJjZSBjb2RlIGNvbW1lbnRzLgorCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgOTgyZmI3ZmQ4YmFiMjVjNDMyMmFhNjJjNTA0MzcwMzZjZTI5NmUzZSBNZXJnZTogMWVkYTY3NQorCisgMzQ1ODEyOCBBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUaHUgSnVsIDI4IDE2OjI0OjAzIDIwMTEgKzAyMDAKKworMjAxMS0wNy0yOCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYzogRml4IHBvdGVudGlhbAorCisgc2lnc2VndiB3aGVuIGFuIGlmVGFibGUgZW50cnkgaXMgcmVtb3ZlZCBhcyByZXN1bHQgb2YgYm90aAorIGludGVyZmFjZV9yZXBsYWNlX29sZCBhbmQgaW50ZXJmYWNlX2ZhZGVvdXQgYXQgdGhlIHNhbWUgdGltZS4KKworMjAxMS0wNy0yOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYXBwcy9zc2h0b3NubXAuYzogTWFrZSBhcHBzL3NzaHRvc25tcC5jIGJ1aWxkIGFnYWluICh3YXMgYnJva2VuIGJ5CisKKyBjb21taXQgNjEyMjQ3Y2RmMTRjMWU3NDVjMzg0Y2VmZTFmM2ZkZTNlNDQ1YjM0NyB0aGF0IGNoYW5nZWQKKyBNU0dfTk9TSUdOQUwgaW50byBORVRTTk1QX05PU0lHTkFMKQorCisyMDExLTA3LTI4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAxZWRhNjc1M2I3ZmU3ZDNiM2YyMTdjMDkyNTRlYzAyZDBlZTFkMGNlIE1lcmdlOiBkYjhiODYwCisKKyBhMmY5ZWNlIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVGh1IEp1bAorIDI4IDE1OjMyOjI4IDIwMTEgKzAyMDAKKworMjAxMS0wNy0yOCAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMxOiAKKworIENIQU5HRVM6IHNubXBkOiBSZXN0b3JlIHN0b3JhZ2UgdGFibGVzIG9uIExpbnV4CisKKzIwMTEtMDctMjggIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtYW4vc25tcGQuY29uZi41LmRlZjogRG9jdW1lbnQgaW50ZXJmYWNlX3JlcGxhY2Vfb2xkIG9wdGlvbi4KKworCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jOiBDSEFOR0VTOgorCisgc25tcGQ6IGFkZGVkICdpbnRlcmZhY2VfcmVwbGFjZV9vbGQnIG9wdGlvbiB0byByZW1vdmUgb2xkIGVudHJpZXMgaW4KKyBpZlRhYmxlIHdoZW4gYW4gaW50ZXJmYWNlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBhbHJlYWR5IGV4aXNpbmcgb25lCisgYXBwZWFycy4gIEUuZy4gcmVtb3ZlIG9sZCBwcHAwIGludGVyZmFjZSB3aGVuIG5ldyBwcHAwIHNob3dzIHVwLgorCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6IERvY3VtZW50IHRoZSBpbnRlcmZhY2VfZmFkZW91dCBvcHRpb24uCisKKworMjAxMS0wNy0yOCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYzogQWxsb3cgaWZUYWJsZQorCisgZW50cmllcyB0byBiZSBkZWxldGVkIGltbWVkaWF0ZWx5IHdoZW4gYXBwcm9wcmlhdGUgaW50ZXJmYWNlCisgZGlzYXBwZWFycyAoaS5lLiBpbnRlcmZhY2VfZmFkZW91dCA9IDAgd29ya3MgYXMgZXhwZWN0ZWQpLgorCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jOiBDSEFOR0VTOgorCisgc25tcGQ6IGFkZGVkICdpbnRlcmZhY2VfZmFkZW91dCcgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gc2V0CisgbGlmZXRpbWUgb2YgaWZUYWJsZSBlbnRyaWVzIG9mIHJlbW92ZWQgaW50ZXJmYWNlcy4gIFByZXZpb3VzIGxpZmV0aW1lIHdhcyBoYXJkY29kZWQgNSBtaW51dGVzLCBub3cgaXQncyBjb25maWd1cmFibGUuCisKKzIwMTEtMDctMjggIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBkNjJhMGViOTA3MGI0ZDhkOWZlMmJjZmRiNGQ1M2QzN2VmODE0ZjliIEF1dGhvcjogSmFuCisKKyBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBUaHUgSnVsIDI4CisgMTQ6NDk6MDggMjAxMSArMDIwMAorCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jOiBDSEFOR0VTOgorCisgc25tcGQ6IGFkZGVkICdpbnRlcmZhY2VfcmVwbGFjZV9vbGQnIG9wdGlvbiB0byByZW1vdmUgb2xkIGVudHJpZXMgaW4KKyBpZlRhYmxlIHdoZW4gYW4gaW50ZXJmYWNlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBhbHJlYWR5IGV4aXNpbmcgb25lCisgYXBwZWFycy4gIEUuZy4gcmVtb3ZlIG9sZCBwcHAwIGludGVyZmFjZSB3aGVuIG5ldyBwcHAwIHNob3dzIHVwLgorCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6IERvY3VtZW50IHRoZSBpbnRlcmZhY2VfZmFkZW91dCBvcHRpb24uCisKKworMjAxMS0wNy0yOCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYzogQWxsb3cgaWZUYWJsZQorCisgZW50cmllcyB0byBiZSBkZWxldGVkIGltbWVkaWF0ZWx5IHdoZW4gYXBwcm9wcmlhdGUgaW50ZXJmYWNlCisgZGlzYXBwZWFycyAoaS5lLiBpbnRlcmZhY2VfZmFkZW91dCA9IDAgd29ya3MgYXMgZXhwZWN0ZWQpLgorCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jOiBDSEFOR0VTOgorCisgc25tcGQ6IGFkZGVkICdpbnRlcmZhY2VfZmFkZW91dCcgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gc2V0CisgbGlmZXRpbWUgb2YgaWZUYWJsZSBlbnRyaWVzIG9mIHJlbW92ZWQgaW50ZXJmYWNlcy4gIFByZXZpb3VzIGxpZmV0aW1lIHdhcyBoYXJkY29kZWQgNSBtaW51dGVzLCBub3cgaXQncyBjb25maWd1cmFibGUuCisKKzIwMTEtMDctMjggIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhcHBzL3NzaHRvc25tcC5jLCBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmM6IENIQU5HRVM6IGJ1aWxkaW5nOiBidWlsZAorICAgICAgZml4CisKKyBmb3Igc3lzdGVtcyBsYWNraW5nIE1TR19ET05UV0FJVAorCisyMDExLTA3LTI3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYzogQ0hBTkdFUzogc25tcGQ6IE1ha2UKKworIFRDUC1NSUI6OnRjcEN1cnJFc3RhYiB3b3JrIGFnYWluLiBXYXMgYnJva2VuIGluIDUuNyBieSB0aGUKKyBpbnRyb2R1Y3Rpb24gb2YgdGhlICJmZWF0dXJlcyIgZmVhdHVyZS4KKworMjAxMS0wNy0yNyAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGZiODgwNzRmYmJjMjY4YzdmMDUwOTQ5MTUzNWFlYzVmZWNiMDU2ODQgTWVyZ2U6IGE3NDNhZTUKKworIDM4MjEyNzMgQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgV2VkIEp1bCAyNyAxNDo0NzoyNSAyMDExICswMjAwCisKKzIwMTEtMDctMjcgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCAzMWZhMDdjZDlmZmRlNDZkNDFkMmI1ODM4YzNmYzRkMDE1NDhiZmI1IEF1dGhvcjogSmFuCisKKyBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBXZWQgSnVsIDI3CisgMTQ6NDU6NDcgMjAxMSArMDIwMAorCisyMDExLTA3LTI3ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvc25tcGQuYzogQ0hBTkdFUzogc25tcGQ6IHJ1biBzaWduYWwgaGFuZGxlcnMgd2hlbiBzZWxlY3QoKQorCisgaXMgaW50ZXJydXB0ZWQuICBUaGlzIGJlaGF2aW9yIGlzIGluZGljYXRlZCBpbiBjb21tZW50IG9uIGxpbmUgMTI0NCwgYnV0IGl0IHdhcyBub3QKKyBhY3R1YWxseSBkb25lLgorCisyMDExLTA3LTI2ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAyZTk0NjZkN2Y1OWQ2NWQwNTAyNzc3MzVlNGVkOWQzMDcxOWZmNzUyIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFR1ZSBKdWwgMjYgMTM6MTA6MDQgMjAxMSArMDIwMAorCisyMDExLTA3LTI2ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA3NzA4Mjk2NzYwZWFmNWE4MGQ4NTQwNzQ2YzljMjQ5ODI2ZmQxYmZlIE1lcmdlOiBlYTExZTVlCisKKyBjZDZlMzgyIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVHVlIEp1bAorIDI2IDE2OjIxOjQxIDIwMTEgKzAyMDAKKworMjAxMS0wNy0yNiAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogc25tcGxpYi9zbm1wVURQSVB2NkRvbWFpbi5jOiBDbGFyaWZ5IGFuIElQdjYgc291cmNlIGNvZGUgY29tbWVudAorCisKKzIwMTEtMDctMjYgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFnZW50L2FnZW50X2hhbmRsZXIuYywgbWFuL25ldHNubXBfaGFuZGxlci4zOiBTcGVsbGluZyBmaXg6CisKKyBkZWZpbmVkeSAtPiBkZWZpbmVkCisKKzIwMTEtMDctMjYgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFnZW50L2hlbHBlcnMvc3Rhc2hfY2FjaGUuYywgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMzogU3BlbGxpbmcKKworIGZpeDogYWxldmlhdGUgLT4gYWxsZXZpYXRlCisKKzIwMTEtMDctMjYgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBkZDJjNDcxMzM0OTNkNWEwMGRlNmIzY2RiY2ZhYzdlOWQ0NGI2ZmZlIE1lcmdlOiBmOWNjYmM3CisKKyBlYTExZTVlIEF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFR1ZSBKdWwgMjYgMTQ6MjU6MjggMjAxMSArMDIwMAorCisyMDExLTA3LTI2ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgYzVhODQ2NGM0MmE5NGMyNTBlZTJkZmEyYTQ3MzEwOWE3MzQyMDNkOCBBdXRob3I6IEphbgorCisgU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgVHVlIEp1bCAyNgorIDE0OjI0OjU1IDIwMTEgKzAyMDAKKworMjAxMS0wNy0yNSAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGY5Y2NiYzc3MjY2NjEzNGQxZDE3OGI1MDVhZjlkZGNkZDllZDQyNDQgQXV0aG9yOiBKYW4KKworIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIE1vbiBKdWwgMjUKKyAxNTowMjoxNSAyMDExICswMjAwCisKKzIwMTEtMDctMjAgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGIwYzBhMzU1ZDVmNjAxYTExYmU0OTE0ZmJmNzEzNzE2YWJkMzBhMjkgQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgVHVlIEp1bCAxOQorIDE4OjM2OjExIDIwMTEgLTA3MDAKKworMjAxMS0wNy0yMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgYzE0ZmMzODYxNGJhZjEwZDUxNzEzNmYwNDgwOTA3YjdmMDNkOGQ3NCBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBXZWQgSnVsIDIwCisgMTM6NDQ6NTkgMjAxMSAtMDcwMAorCisyMDExLTA3LTE5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC90ZXN0aGFuZGxlci5jOiByZW1vdmUgYnJva2VuIHdoaXRlc3BhY2UgbGluZXMgdGhhdAorCisgbGVhZHMgdG8gcmVhZGluZyBjb25mdXNpb24KKworMjAxMS0wNy0yMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZWJkZDIxNmMwNzRiZjQxY2QzYTA4NGJkMTQ2ODljZjAxYzg4N2IzMSBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBUdWUgSnVsIDE5CisgMTg6MzY6MTEgMjAxMSAtMDcwMAorCisyMDExLTA3LTE5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAuZ2l0aWdub3JlOiB1cGRhdGVkIGdpdGlnbm9yZSB0byBpZ25vcmUgYSBudW1iZXIgb2YgYXV0by1nZW5lcmF0ZWQKKworIGZpbGVzCisKKzIwMTEtMDctMTkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmM6IHJlbW92ZSBicm9rZW4gd2hpdGVzcGFjZSBsaW5lcyB0aGF0CisKKyBsZWFkcyB0byByZWFkaW5nIGNvbmZ1c2lvbgorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBkZjVmNzAwNTVjZjliZTMzZjA1ZmI1MGFiZTJmNWE4MWVhYzA5MmFkIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFR1ZSBKdWwgMTkgMTE6MDc6MTkgMjAxMSArMDIwMAorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBmNTk2ZjE4MjQyZGNkZmQ2Y2Y0OWM4OGRhMWQ4MzZjMTZlMjYwY2FjIE1lcmdlOiAwZjMwOWI0CisKKyA3MGRlZTRiIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVHVlIEp1bAorIDE5IDExOjMzOjI4IDIwMTEgKzAyMDAKKworMjAxMS0wNy0xOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogIGFnZW50L2FnZW50X3RyYXAuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuYzogQ0hBTkdFUzogc25tcGQ6IFBBVENIOgorICAgICAgMzM2OTY4MDoKKworIGZyb20gSWx5YSBZYW5vazogY2hhbmdlIHNubXBfZW5hYmxlYXV0aGVudHJhcHMgZnJvbSBpbnQgdG8gbG9uZyBzdWNoCisgdGhhdCBtb2RpZnlpbmcgdGhlIGNvcnJlc3BvbmRpbmcgTUlCIG9iamVjdCBkb2VzIG5vdCBvdmVyd3JpdGUKKyBtZW1vcnkgaW4gNjQtYml0IGJ1aWxkcy4KKworMjAxMS0wNy0xOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmM6IENIQU5HRVM6IHNubXBkOiBQQVRDSDogMzM3MDY0NToKKworIGZyb20gQmlsbCBGZW5uZXI6IEZpeCBBZ2VudFggc3ViYWdlbnQgZm91ciBieXRlIGxlYWsKKworMjAxMS0wNy0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogVGVzdCBoYXJuZXNzOiBkbworCisgbm90IGludm9rZSBJU1JVTk5JTkcoKSBvbiBNaW5HVy4KKworMjAxMS0wNy0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogVGVzdCBoYXJuZXNzOgorCisgY2xlYW51cCAtIHJlbW92ZSBjb2RlIHRoYXQgYmVjYW1lIHN1cGVyZmx1b3VzLgorCisyMDExLTA3LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBNaW5HVzogRG8gbm90CisKKyBhc3N1bWUgdGhhdCBraWxsLmV4ZSByZXBvcnRzIHZpYSBpdHMgZXhpdCBzdGF0dXMgd2hldGhlciB0aGUKKyBzaWduYWxsZWQgcHJvY2VzcyBzdGlsbCBleGlzdHMuCisKKzIwMTEtMDctMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IENIQU5HRVM6IHRlc3Rpbmc6CisKKyBSZW1vdmUgdGhlIGZ1bmN0aW9uIFdBSVRPUkRJRSgpIGZyb20gc2ltcGxlX2V2YWxfdG9vbHMuc2ggc2luY2UgaXQKKyBpcyBuZXZlciBpbnZva2VkLgorCisyMDExLTA3LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBDSEFOR0VTOiB0ZXN0aW5nOgorCisgU2ltcGxpZnkgV0FJVEZPUigpIGluIHNpbXBsZV9ldmFsX3Rvb2xzLnNoLiBUaGUgY29kZSB0aGF0IGhhbmRsZWQKKyBpbnZvY2F0aW9uIG9mIFdBSVRGT1IoKSB3aXRoIHplcm8gb3Igb25lIGFyZ3VtZW50cyBoYXMgYmVlbiBkcm9wcGVkCisgc2luY2UgV0FJVEZPUigpIGlzIGFsd2F5cyBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50cy4KKworMjAxMS0wNy0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogVGVzdCBoYXJuZXNzOgorCisgbWlub3Igc2ltcGxpZmljYXRpb24uCisKKzIwMTEtMDctMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1OXRyYXBkdHJhcGhhbmRsZV9zaW1wbGU6IENIQU5HRVM6CisKKyB0ZXN0aW5nOiBTa2lwIHRlc3QgNTkgaWYgU0lHSFVQIGlzIG5vdCBzdXBwb3J0ZWQuIE1ha2VzIHRlc3QgNTkgcGFzcworIG9uIE1pbkdXLgorCisyMDExLTA3LTA2ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBNaW5HVyBmaXgKKworCisyMDExLTA3LTA2ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBUZXN0IGZyYW1ld29yaworCisgcmVmYWN0b3Jpbmc6IEludHJvZHVjZSBXQUlURk9STk9UQ09ORCgpLgorCisyMDExLTA3LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBDSEFOR0VTOiB0ZXN0aW5nOgorCisgTWFrZSBTVE9QUFJPRyBzZW5kIFNJR1RFUk0gcmVwZWF0ZWRseS4gVGhpcyBmaXhlcyBhIHJhY2Ugd2hlcmUKKyBTSUdURVJNIGNvdWxkIGJlIHNlbnQgYmVmb3JlIHRoZSBTSUdURVJNIHNpZ25hbCBoYW5kbGVyIHdhcyBzZXQgdXAsCisgZXNwZWNpYWxseSB3aGVuIHJ1bm5pbmcgdGhlIHJlZ3Jlc3Npb24gdGVzdHMgdW5kZXIgVmFsZ3JpbmQuCisgQ0hBTkdFUzogdGVzdGluZzogTWFrZSB0aGUgU05NUF9WRVJCT1NFPTEgb3V0cHV0IGV2ZW4gbW9yZSB2ZXJib3NlLgorCisyMDExLTA3LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBUZXN0IGhhcm5lc3MKKworIHJlZmFjdG9yaW5nOiBpbnRyb2R1Y2UgRUNIT1NFTkRTSUdURVJNKCkgYW5kIEVDSE9TRU5EU0lHS0lMTCgpCisKKzIwMTEtMDctMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IEZpeCBhIGJ1ZyBpbgorCisgdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaCB0aGF0IHdhcyBpbnRyb2R1Y2VkCisgaW4gY29tbWl0IDkzOGQ3NWMuCisKKzIwMTEtMDctMDEgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIC5naXRpZ25vcmU6IC5naXRpZ25vcmU6IElnbm9yZSAqLmV4ZSBmaWxlcyBnZW5lcmF0ZWQgYnkgdGhlIFdpbjMyCisKKyBidWlsZAorCisyMDExLTA3LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBDSEFOR0VTOiB0ZXN0aW5nOgorCisgVGVzdCBvbmx5IG9uY2UgZHVyaW5nIGEgdGVzdCB3aGV0aGVyIHRoZSBzaGVsbCBzdXBwb3J0cyBzdWItc2Vjb25kCisgc2xlZXBpbmcgaW5zdGVhZCBvZiByZXBlYXRlZGx5LgorCisyMDExLTA3LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ydW46IENIQU5HRVM6IHRlc3Rpbmc6IENoYW5nZWQKKworIGRlZmF1bHQgdGltZW91dCBmcm9tIDFzIHRvIDEwcyB3aGVuIHRoZSByZWdyZXNzaW9uIHRlc3RzIGFyZSBydW4KKyB1bmRlciBWYWxncmluZAorCisyMDExLTA3LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBDSEFOR0VTOiB0ZXN0aW5nOgorCisgQWZ0ZXIgaGF2aW5nIHNlbnQgU0lHVEVSTSB0byBzbm1wZCBvciBzbm1wdHJhcGQsIHdhaXQgdW50aWwgdGhlCisgcHJvY2VzcyBoYXMgc3RvcHBlZCBiZWZvcmUgc2VuZGluZyBTSUdLSUxMLiBUaGlzIHJhY2UgY29uZGl0aW9uIHdhcworIGhpdCBtb3N0IGVhc2lseSB3aGVuIHJ1bm5pbmcgdGhlIHJlZ3Jlc3Npb24gdGVzdHMgdW5kZXIgVmFsZ3JpbmQuCisgQ0hBTkdFUzogdGVzdGluZzogQ2hlY2sgUElEIGZpbGUgZXhpc3RlbmNlIGFmdGVyIGhhdmluZyByZWFkIGl0CisgaW5zdGVhZCBvZiBiZWZvcmUuIFRoaXMgZml4ZXMgdGhlIHJhY2UgY29uZGl0aW9uIHdoZXJlIHRoZSBQSUQgZmlsZQorIGRpc2FwcGVhcmVkIGFmdGVyIHRoZSBleGlzdGVuY2UgY2hlY2sgYW5kIGJlZm9yZSBpdCB3YXMgcmVhZC4KKworMjAxMS0wNi0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6IEZpeCBhIGJ1ZyBpbiBhIGRlYnVnIHN0YXRlbWVudAorCisgaW50cm9kdWNlZCBieSBwYXRjaCAzMzEwMjUwIC8gcjIwNDk0OiB1c2UgJWxkIHRvIHByaW50IGEgdmFsdWUgb2YKKyB0eXBlIG9pZCBpbnN0ZWFkIG9mICVkLiAgVGhpcyBwYXRjaCBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgdG8gVjUuNiBTVk4gcGF0Y2hlczogZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDUxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWRnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNTEyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAwZjMwOWI0OTNjMjFkM2M2OTE0NDg3NTE0YjQxNTYwNzU0ZmZjZGY5IEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFR1ZSBKdWwgMTkgMDg6Mzc6NTAgMjAxMSArMDIwMAorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAxYjc0NTRiYzI4MTU2ODQ3MGExMzAwNDc2ZDJlZGI0ZjQxMWU2MDI5IE1lcmdlOiA4ZDlkY2M4CisKKyA2OTBlYTdkIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVHVlIEp1bAorIDE5IDA4OjMxOjI4IDIwMTEgKzAyMDAKKworMjAxMS0wNy0xOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYXBwcy9zbm1wdHJhcGQuYzogQ0hBTkdFUzogc25tcHRyYXBkOiBBZGQgbWlzc2luZyBuZXdsaW5lCisKKyBjaGFyYWN0ZXIgaW4gYSBsb2cgbWVzc2FnZQorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBhcHBzL3NubXB0cmFwZC5jOiBDSEFOR0VTOiBzbm1wdHJhcGQ6IEludm9rZSBzaHV0ZG93bl9wZXJsKCkgd2hlbgorCisgc2h1dHRpbmcgZG93bgorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmM6IFNwZWxsaW5nIGZpeDogYnJhbmtldCAtPiBicmFja2V0CisKKworMjAxMS0wNy0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogY29uZmlndXJlLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiBSdW4gYXV0b3JlY29uZi4KKworIEZpeGVzIGJ1aWxkIGJyZWFrYWdlIGNhdXNlZCBieSBwYXRjaAorIGQ1ODhlYzg1M2JkMDUzMWYyMTJmY2JmNTFiOTYyYjk2YzY4MjhiNTkgKFJQTSA0Ljkgc3VwcG9ydCkKKworMjAxMS0wNy0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgZDYxN2Q4NGY4M2ZhNjllZDlmYTlmOThlZmM0YWZhZjg4MGQxMjFmMiBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUaHUgSnVsIDE0IDE2OjQzOjQ3IDIwMTEgKzAyMDAKKworMjAxMS0wNy0xNCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5jOiBDSEFOR0VTOiBzbm1wbGliOiBNYWtlCisKKyBuZXRzbm1wX2lwdjZfZm10YWRkcigpIHNob3cgdGhlIElQdjYgc2NvcGUgSUQKKworMjAxMS0wNy0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4uYywgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogQ0hBTkdFUzogV2luMzI6IEFkZCBzdXBwb3J0CisgICAgICBmb3IKKworIElQdjYgYWRkcmVzcyBzY29wZSBJRAorCisyMDExLTA3LTE3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBjb25maWd1cmUsIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IFJ1biBhdXRvcmVjb25mCisKKworMjAxMS0wNy0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgYTU2NzIxYTNlNzc1NGUzODlkYWE3ZThhM2Q1NzkyODk5ZWRjOWRlMyBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUaHUgSnVsIDE0IDE2OjE4OjMyIDIwMTEgKzAyMDAKKworMjAxMS0wNy0xNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgODQ0ZDRjZTg2N2JmM2FiZTdiNzUzNmM1ZGJmYmE0MDE5MzdhOGQ0YSBNZXJnZTogZWVkMDE5OAorCisgNjEwMzZhOCBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIEZyaSBKdWwgMTUgMTU6MzM6MTAgMjAxMSAtMDcwMAorCisyMDExLTA3LTE1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA4NTFiY2Y1M2ZjZDEzY2RmMGJhOWYxMmU1ZDYwM2U3M2Y4YmI5NjExIEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIEZyaSBKdWwgMTUKKyAxNTozMjo0OSAyMDExIC0wNzAwCisKKzIwMTEtMDctMTQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jOiBmaXggYSB0eXBvCisKKworMjAxMS0wNy0xMyAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAbG9jYWxob3N0PgorCisgICAqIHNubXBsaWIvcGFyc2UuYzogQ0hBTkdFUzogc25tcGxpYjogIHR3ZWFrIHBhdGNoIDMwNDQ4ODggdG8gcmVzdG9yZQorCisgcHJvcGVyIG5vbi1lcnJvciByZXR1cm4gZHVyaW5nIG1pYiBsb2FkaW5nCisKKzIwMTEtMDctMTEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogYWRkZWQgNS43IHBhdGNoZXMgdG8gdGhlIGJyYW5jaCBsaXN0IGFuZCBmaXggdGhlIHJlbGVhc2UgZmlsZQorCisKKzIwMTEtMDctMTEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogYWRkZWQgNS43IHBhdGNoZXMgdG8gdGhlIGJyYW5jaCBsaXN0CisKKworMjAxMS0wNy0xMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9yZWxlYXNlOiBhIGNvcHkgb2YgdGhlIHJlbGVhc2UgZmlsZSBhcHBsaWVkIHRvIHRoZSBvbGRlcgorCisgYnJhbmNoZXMKKworMjAxMS0wNy0xMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhZGRlZCA1LjcgcGF0Y2hlcworCisKKzIwMTEtMDctMTEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGM0MzEyMzFlOGYwYTM5ZDE5NTBiYzcyYzMyZTM0MDJmOTBmYTgwMzAgTWVyZ2U6IDU2ZmVlNDAKKworIGEyYWMyNGQgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBNb24gSnVsIDExIDE5OjMzOjE3IDIwMTEgLTA3MDAKKworMjAxMS0wNy0xMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhZGRlZCBhIGNvcHkgb2YgdGhlCisKKyBzaGVsbC1mdW5jdGlvbnMgdG8gdGhlIG9sZGVyIGJyYW5jaAorCisyMDExLTA3LTExICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L3JlbGVhc2U6IGEgY29weSBvZiB0aGUgcmVsZWFzZSBmaWxlIGFwcGxpZWQgdG8gdGhlIG9sZGVyCisKKyBicmFuY2hlcworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjcucmMzIC0+IFY1LjcKKworMjAxMS0wNy0wMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43CisKKworMjAxMS0wNy0wMSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRMU0Jhc2VEb21haW4uaCwgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmM6IFJldmVydCAiZml4IGR0bHN1ZHAKKworIHRyYW5zcG9ydCBhZGRyZXNzIGZvcm1hdCBmdW5jdGlvbiIgVGhpcyByZXZlcnRzIGNvbW1pdCAyYWIzYTZlNmYyZmNjMWZmM2U1ZjBmYjVkYzVkMDVlNDk4ODIwZDg5LiAgIC0gZm9yIHNvbWUgcmVhc29uIEkgc2F3ICdyYycgYW5kIG15IGJyYWluIGludGVycHJldGVkIGl0IGFzICAgICdwcmUtcmVsZWFzZScuIFdoYXQgY2FuIEkgc2F5LCBpdCB3YXMgbGF0ZS4gOi0vCisKKzIwMTEtMDctMDEgIFJvYmVydCBTdG9yeSA8cnN0b3J5QGxvY2FsaG9zdD4KKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUTFNCYXNlRG9tYWluLmgsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5jOiBmaXggZHRsc3VkcCB0cmFuc3BvcnQKKworIGFkZHJlc3MgZm9ybWF0IGZ1bmN0aW9uICAtIHVwZGF0ZSBpcHY0IGZtdGFkZHIgdG8gaGFuZGxlIHNvY2thZGRyIGFuZCB0byBjaGVjayAgICBzaXplIGJlZm9yZSBhc3N1bWluZyBkYXRhIGlzIGFkZHIgcGFpciAgLSBtb3ZlIGR0bHN1ZHAgZnVuY3Rpb25zIHRvIGV4dHJhY3QgYWRkcihzKSB0byB0bHNiYXNlCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2UueG1sOiBmaXggdGFnIHB1c2hpbmcKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDaGFuZ2VzOiBWNS43LnJjMiAtPiBWNS43LnJjMworCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLAorCWRpc3QvbmV0LXNubXAuc3BlYzogVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcucmMzCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBkaXN0L21ha2VyZWxlYXNlLnhtbDogcmVtb3ZlIHVubmVlZGVkIGNvbW1lbnQKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGRpc3QvbWFrZXJlbGVhc2UueG1sOiBtaXNjIHB1YmxpY2F0aW9uIGZpeGVzIGZvdW5kIHdoaWxlCisJcHVibGlzaGluZworCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogcmFuIGF1dG9oZWFkZXIgdG8gYWRkIHRoZQorCW1pc3NpbmcgdGVtcGxhdGUgaWZkZWZzCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ2hhbmdlczogVjUuNy5yYzEgLT4gVjUuNy5yYzIKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGRpc3QvbWFrZXJlbGVhc2UueG1sOiB1c2UgdGhlIG5ldyBydW4tYXV0b2NvbmYgc2NyaXB0CisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBkaXN0L3J1bi1hdXRvY29uZjogQSBzY3JpcHQgdG8gaW52b2tlIHRoZSBjb3JyZWN0IHZlcnNpb24gb2YgdGhlCisJYXV0b2NvbmYgdG9vbAorCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogZGlzdC9tYWtlcmVsZWFzZS54bWw6IHJlbWFpbmluZyBjb21tYW5kIGxpbmUgY2hhbmdlcyBmb3Igc3ZuIC0+CisJZ2l0CisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBkaXN0L21ha2VyZWxlYXNlLnhtbDogbWFrZSB0aGUgYnJhbmNoIGVjaG8gb3V0cHV0IGFuZCBzdm4gdXBkYXRlCisJY29udmVydGVkIHRvIGdpdCBlcXVpdmFsZW50cworCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogZGlzdC9tYWtlcmVsZWFzZS54bWw6IHB1bGwgdGhlIGJyYW5jaCBpbmZvIGZyb20gZ2l0CisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBkaXN0L3JlbGVhc2U6IG5vdGVkIHRoYXQgdGhlIG1hc3RlciBicmFuY2ggaXMgaW4gcmMgc3RhdGUKKworMjAxMS0wNi0yOCAgV2VzIEhhcmRha2VyIDxvcGVuc291cmNlQGhhcmRha2Vycy5uZXQ+CisKKwkqIEZBUTogTWVudGlvbiB0aGUgR2l0IHdpa2kgcGFnZQorCisyMDExLTA2LTI4ICBXZXMgSGFyZGFrZXIgPG9wZW5zb3VyY2VAaGFyZGFrZXJzLm5ldD4KKworCSogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiB1c2UgZ2l0IG1lcmdlIHdpdGggdGhlIC0tbG9nCisJb3B0aW9uCisKKzIwMTEtMDYtMjggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisJKiAuZ2l0aWdub3JlOiBBZGQgLmdpdGlnbm9yZQorCisyMDExLTA2LTI4ICBXZXMgSGFyZGFrZXIgPG9wZW5zb3VyY2VAaGFyZGFrZXJzLm5ldD4KKworCSogRkFROiBXZSdyZSBub3cgdXNpbmcgZ2l0IQorCisyMDExLTA2LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiB1c2UgcmViYXNlIHRvIHB1dCBsb2NhbCBjaGFuZ2VzIGF0CisJdGhlIHRvcCBvZiB0aGUgcmVtb3RlIGJyYW5jaGVzIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUzMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYWRkZWQgYSBmZWF0dXJlIHRvIG5vdCByb2xsCisJYnJhbmNoZXMgY3VycmVubHkgaW4gcmMgcGhhc2UgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTMyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhZGRlZCBhIG5zcm9sbHVwIGZ1bmN0aW9uIGZvcgorCXJvbGxpbmcgYnJhbmNoZXMgdXB3YXJkLiAgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTMxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBjcmVhdGVkIGFuIG5zcGF0Y2hhcHBseSBmdW5jdGlvbgorCXRvIGFwcGx5IGEgcHJldmlvdXNseSB0ZXN0ZWQgcGF0Y2ggZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTMwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhZGRlZCBhIG5zdHJ5cGF0Y2ggZnVuY3Rpb24gdG8KKwl0ZXN0IHBhdGNoIGFwcGxpY2F0aW9uIGFnYWluc3QgdmFyaW91cyBicmFuY2hlcyBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA1MjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFkZGVkIHZlcmJvc2Ugb3V0cHV0IGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUyOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogbW9yZSBwcmVmaXggY2hhbmdlcyBhbmQgYmV0dGVyCisJc2V0dGluZyBvZiBkZWZhdWx0IHZhbHVlcyBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA1MjcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IHVzZSBucyBwcmVmaXhlcyBpbnN0ZWFkIG9mIGdlbmVyaWMKKwlzbm1wIHByZWZpeGVzIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUyNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogQ2hhbmdlTG9nOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTI0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogCisJTWlzc2luZyBjaGVjayBmb3IgcnBtdHMuaCBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTIzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBjb25maWd1cmU6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTIyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLAorCW1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywKKwltYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLAorCW1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywKKwltYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsCisJbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLAorCW1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywKKwltYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLAorCW1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsCisJbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsCisJbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywKKwltYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsCisJbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsCisJbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLAorCW1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLAorCW1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsCisJbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLAorCW1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLAorCW1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLAorCW1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywKKwltYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywKKwltYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsCisJbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsIG1hbi9uZXRzbm1wX29sZF9hcGkuMywKKwltYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywKKwltYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsCisJbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLAorCW1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLAorCW1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLAorCW1hbi9uZXRzbm1wX3NubXBfcGR1LjMsIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLAorCW1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywKKwltYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLAorCW1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsCisJbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsCisJbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLAorCW1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywKKwltYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsIG1hbi9uZXRzbm1wX3V0aWwuMywKKwltYW4vbmV0c25tcF91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zLAorCW1hbi9uZXRzbm1wX3dhdGNoZXIuMzogZG9jdW1lbnRhdGlvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUyMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkaXN0L25ldC1zbm1wLnNwZWMsCisJc25tcGxpYi9zbm1wX3ZlcnNpb24uYzogVmVyc2lvbiBudW1iZXIgdXBkYXRlIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjMgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLAorCWluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IFR3ZWFrIFJQTSBoYW5kbGluZyB0byB3b3JrCisJd2l0aCBsaWJyYXJ5IHZlcnNpb24gNC45IEJhc2VkIG9uIGEgcGF0Y2ggYnkgSmFuIFNhZnJhbmVrIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjIgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmM6IFByb3ZpZGUgYSBmcmFtZXdvcmsgZm9yIHJlYWRpbmcKKwlSUE0gcGFja2FnZSBpbmZvcm1hdGlvbiBmcm9tIGEgY2FjaGUgZGlyZWN0b3J5IChyYXRoZXIgdGhhbiBxdWVyeWluZworCXRoZSBSUE1kYiBkaXJlY3RseSkuICBNeSBhcG9sb2dpZXMgdG8gSmVmZiBKb2huc29uIGZvciB0aGUgZGVsYXkgaW4gYWRkaW5nIHRoaXMKKwlmdW5jdGlvbmFsaXR5LiAgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUxOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yMiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogQ2hhbmdlTG9nOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNTE2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTIyICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBjb25maWd1cmU6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNTE1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTIyICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywKKwlzbm1wbGliL3NubXBfdmVyc2lvbi5jOiBWZXJzaW9uIG51bWJlciB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDUxNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yMSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuaCwKKwlhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmM6IFByb3ZpZGUgYQorCWZyYW1ld29yayBmb3IgcmVhZGluZyBSUE0gcGFja2FnZSBpbmZvcm1hdGlvbiBmcm9tIGEgY2FjaGUgZGlyZWN0b3J5CisJKHJhdGhlciB0aGFuIHF1ZXJ5aW5nIHRoZSBSUE1kYiBkaXJlY3RseSkuICBNeSBhcG9sb2dpZXMgdG8gSmVmZiBKb2huc29uIGZvciB0aGUgZGVsYXkgaW4gYWRkaW5nIHRoaXMKKwlmdW5jdGlvbmFsaXR5LiAgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDUxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yMSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuaCwKKwlhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmM6IFByb3ZpZGUgYQorCWZyYW1ld29yayBmb3IgcmVhZGluZyBSUE0gcGFja2FnZSBpbmZvcm1hdGlvbiBmcm9tIGEgY2FjaGUgZGlyZWN0b3J5CisJKHJhdGhlciB0aGFuIHF1ZXJ5aW5nIHRoZSBSUE1kYiBkaXJlY3RseSkuICBNeSBhcG9sb2dpZXMgdG8gSmVmZiBKb2huc29uIGZvciB0aGUgZGVsYXkgaW4gYWRkaW5nIHRoaXMKKwlmdW5jdGlvbmFsaXR5LiAgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDUxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yMSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuaCwKKwlhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmM6IFByb3ZpZGUgYQorCWZyYW1ld29yayBmb3IgcmVhZGluZyBSUE0gcGFja2FnZSBpbmZvcm1hdGlvbiBmcm9tIGEgY2FjaGUgZGlyZWN0b3J5CisJKHJhdGhlciB0aGFuIHF1ZXJ5aW5nIHRoZSBSUE1kYiBkaXJlY3RseSkuICBNeSBhcG9sb2dpZXMgdG8gSmVmZiBKb2huc29uIGZvciB0aGUgZGVsYXkgaW4gYWRkaW5nIHRoaXMKKwlmdW5jdGlvbmFsaXR5LiAgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6IEZvbGxvdy11cCBmb3IgcjIwNTExOiByZWFsbHkgdXNlCisJdGhlIHByb3BlciBmb3JtYXQgc3BlY2lmaWNhdGlvbi4gIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA1MTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMTkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYzogRm9sbG93LXVwIGZvciByMjA1MTE6IHJlYWxseSB1c2UKKwl0aGUgcHJvcGVyIGZvcm1hdCBzcGVjaWZpY2F0aW9uLiAgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDUxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jOiBGaXggYSBidWcgaW4gYSBkZWJ1ZyBzdGF0ZW1lbnQKKwlpbnRyb2R1Y2VkIGJ5IHBhdGNoIDMzMTAyNTAgLyByMjA0OTQ6IHVzZSAlbGQgdG8gcHJpbnQgYSB2YWx1ZSBvZgorCXR5cGUgb2lkIGluc3RlYWQgb2YgJWQuICBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNTExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTE3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6IEZpeCBhIGJ1ZyBpbiBhIGRlYnVnIHN0YXRlbWVudAorCWludHJvZHVjZWQgYnkgcGF0Y2ggMzMxMDI1MCAvIHIyMDQ5NDogdXNlICVsZCB0byBwcmludCBhIHZhbHVlIG9mCisJdHlwZSBvaWQgaW5zdGVhZCBvZiAlZC4gIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA1MTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMTcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYzogVXNlICVwIHRvIHByaW50IGEgcG9pbnRlciBpbnN0ZWFkCisJb2YgJWxkIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMTcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYzogVXNlICVwIHRvIHByaW50IGEgcG9pbnRlciBpbnN0ZWFkCisJb2YgJWxkIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA1MTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ2hhbmdlczogVjUuNy5wcmUyIC0+IFY1LjcucmMxCisKKzIwMTEtMDYtMTMgMTY6MTEgIGhhcmRha2VyCiAKICAgICogY29uZmlndXJlOgogCi0gICBhdXRvY29uZiB1c2luZyB0aGUgcmlnaHQgdmVyc2lvbgorICAgcnVuIGNvcnJlY3QgdmVyc2lvbiBvZiBhdXRvY29uZgogCi0yMDEwLTEyLTI5IDAxOjQwICBoYXJkYWtlcgorMjAxMS0wNi0xMyAxNjoxMCAgaGFyZGFrZXIKIAogICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAgIAogICAgICAgZGlzdC9uZXQtc25tcC5zcGVjOgogCiAgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKIAorMjAxMS0wNi0xMyAxNjowNCAgaGFyZGFrZXIKKworICAgKiBjb25maWd1cmU6CisKKyAgIHJhbiBhdXRvY29uZgorCisyMDExLTA2LTEwIDA2OjAzICBuYmEKKworICAgKiBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19zZWN1cml0eV9tb2R1bGVzOgorCisgICBGaXggYnVpbGQgb2Ygc25tcHVzbSB3aGVuIGFkZGl0aW9uYWwgc2VjIG1vZHVsZXMgcmVxdWVzdGVkCisKKzIwMTEtMDYtMDkgMjE6MTMgIG5iYQorCisgICAqIHNubXBsaWIvY2VydF91dGlsLmM6CisKKyAgIEluY2x1ZGUgc3Rk4KWG4KSGhuClhuCkhYXgpYbgpIWG4KWG4KSGhuClhuCkhYWHaWIuaCB0byBtYWtlIGRtYWxsb2MgaGFwcHkKKworMjAxMS0wNi0wOSAxNDozNSAgcnN0b3J5CisKKyAgICogc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jOgorCisgICBDSEFOR0VTOiBCVUc6IDMxNTE4NDU6IGZpeCBtdWx0aXBsZSByZWdpc3RyYXRpb25zIG9mIHNubXAKKyAgIHRyYW5zcG9ydCBoYW5kbGVyCisKKzIwMTEtMDYtMDggMTY6MzQgIHJzdG9yeQorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oLCBzbm1wbGliL3NubXBfYXBpLmMsICAgCisgICAgICBzbm1wbGliL3N5c3RlbS5jOgorCisgICBtb3JlIGRuc3NlYyB0d2Vha3MKKyAgIAorICAgLSBjcmVhdGUgYW4gYXBwLWdsb2JhbCB2YWxpZGF0b3IgY29udGV4dCBmb3IgdXNlIHdpdGggYWxsCisgICB2YWxpZGF0aW9uIHJvdXRpbmVzLiBtYWlubHkgdXNlZnVsIGZvciBsb25nLWxpdmVkIGFwcHMuCisgICAtIHVzZSB0aGUgYXBwdHlwZSBhcyB0aGUgdmFsaWRhdG9yICdzY29wZScsIGFsbG93aW5nCisgICBmb3IgYXBwLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb2YgdmFsaWRhdGlvbiB2aWEgbGlidmFsJ3MKKyAgIGRuc3ZhbC5jb25mCisKKzIwMTEtMDYtMDcgMTY6NDggIHJzdG9yeQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmg6CisKKyAgIGFkZCBhIG1heCBkZWZpbmUgZm9yIGVhY2ggZGVmYXVsdCBzdG9yZSB0eXBlCisgICAKKyAgIG5vdCBhY3R1YWxseSB1c2VkLCBqdXN0IGEgaGVscGZ1bCByZW1pbmRlciBmb3IgdGhvc2UgYWRkaW5nCisgICBuZXcgaWRzIHdobyBtaWdodCBub3QgdGhpbmsgdG8gY2hlY2sgTkVUU05NUF9EU19NQVhfU1VCSURTLgorICAgKHRoZSBib29sIGxpc3QgaXMgcmFwaWRseSBhcHByb2FjaGluZyB0aGUgY3VycmVudCBsaW1pdC4pCisKKzIwMTEtMDYtMDcgMTY6NDYgIHJzdG9yeQorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX3J1bjoKKworICAgbWVudGlvbiBidWlsZGRpciB3aGVuIGNvbXBsYWluaW5nIGFib3V0IG5vdCBiZWluZyBydW4gZnJvbSBzb3VyY2UKKyAgIHRyZWUKKworMjAxMS0wNi0wMSAyMjoyNCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IHBhdGNoIDMzMTAyNTA6IGZyb20gZmVubmVyOiBtaXNjIGZpeGVzIGZvcgorICAgZGVidWdnaW5nIG91dHB1dCBvZiBhZ2VudHgKKworCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ2hhbmdlczogVjUuNiAtPiBWNS43LnByZTIKKworMjAxMS0wNS0xMCAwMDoyMCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCwgYXBwcy9NYWtlZmlsZS5kZXBlbmQsICAgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6CisKKyAgIG1ha2UgZGVwZW5kCisKKzIwMTEtMDUtMTAgMDA6MjAgIGhhcmRha2VyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmM6CisKKyAgIEMrKyAtPiBDIGNvbW1lbnRzCisKKzIwMTEtMDUtMTAgMDA6MTcgIGhhcmRha2VyCisKKyAgICogTkVXUzoKKworICAgTkVXUyB1cGRhdGUgZm9yIDUuNworCisyMDExLTA1LTA5IDIzOjE0ICBoYXJkYWtlcgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaDoKKworICAgcmV2ZXJ0IHRoZSBvaWQgdHlwZWRlZiByZXNpemluZyBmcm9tIHIxNzgwOSBiZWNhdXNlIGl0IGJyb2tlCisgICBiYWNrd2FyZHMgY29tcGF0LCBhcyBwb2ludGVkIG91dCBieSB1c2VycyBvbiB0aGUgLWNvZGVycyBsaXN0CisKKzIwMTEtMDUtMDkgMjI6NTEgIGhhcmRha2VyCisKKyAgICogY29uZmlndXJlOgorCisgICB1c2UgcHJvcGVyIGF1dG9jb25mIHZlcnNpb24KKworMjAxMS0wNS0wOSAyMjozOCAgaGFyZGFrZXIKKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAgIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjLCBwZXJsL0FTTi9BU04ucG0sICAgCisgICAgICBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLCBwZXJsL09JRC9PSUQucG0sIHBlcmwvU05NUC9TTk1QLnBtLCAKKyAgICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtLAorICAgICAgcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0sICAgIHBlcmwvYWdlbnQvYWdlbnQucG0sCisgICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwgICAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtOgorCisgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKKworMjAxMS0wNS0wOSAyMjozOCAgaGFyZGFrZXIKKworICAgKiBNYWtlZmlsZS50b3A6CisKKyAgIHZlcnNpb24gdXBkYXRlCisKKzIwMTEtMDUtMDkgMjI6MTAgIGhhcmRha2VyCisKKyAgICogbWlicy9VQ0QtU05NUC1NSUIudHh0OgorCisgICBhZGRlZCBhIG1pc3NpbmcgMCBpbiB0aGUgcmV2aXNpb24gZGF0ZQorCisyMDExLTA1LTA5IDIwOjUyICBuYmEKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmM6CisKKyAgIFVzZSBzeW1ib2xpYyBuYW1lZCBmb3IgaWZUeXBlIHZhbHVlcworCisyMDExLTA1LTA5IDIwOjQzICBuYmEKKworICAgKiBtaWJzL3JmY21pYnMuZGlmZjoKKworICAgSUFOQSBoYXMgZml4ZWQgdGhlIElBTkEtSVBQTS1NRVRSSUNTLVJFR0lTVFJZLU1JQgorCisyMDExLTA1LTA5IDE1OjI0ICBoYXJkYWtlcgorCisgICAqIG1pYnMvVUNELVNOTVAtTUlCLnR4dDoKKworICAgYWRkZWQgYSBuZXcgUkVWSVNJT04gY2xhdXNlIHRvIGxpc3QgdGhlIGNoYW5nZXMgaW4gdGhlIHRoZSByZWNlbnQKKyAgIHVwZGF0ZQorCisyMDExLTA1LTA5IDE0OjE5ICBoYXJkYWtlcgorCisgICAqIE5FV1M6CisKKyAgIGFkZGVkIHBpbmcvdHJhY2Vyb3V0ZSBtaWJzIG5vdGUKKworMjAxMS0wNS0wOSAxNDoxOSAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jOgorCisgICB3ZSBhY3R1YWxseSB3YW50IHRvIHVzZSB0aGUgYmFzZSBPSUQgYXMgdGhlIHN0YXJ0aW5nIHBvaW50LCBub3QKKyAgIHRoZSByZWcgT0lELgorCisyMDExLTA1LTA5IDE0OjE4ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmM6CisKKyAgIGZpeGVkIHRoZSBwcm94eSBzdXBwb3J0IHRvIGRvIGEgcHJvcGVyIE9JRCBsZXNzIHRoYW4gT0lEIGNvbXBhcmUuCisgICBXZSBhY3R1YWxseSBkb24ndCBjYXJlIGFib3V0IHRoZSBsZW5ndGggb2YgdGhlIG9yaWdpbmFsIHJlcXVlc3QsCisgICBvbmx5CisgICB0aGF0IGl0IHdhcyBiZWZvcmUgdGhlIHJlZ2lzdGVyZWQgcmViYXNlCisKKzIwMTEtMDUtMDkgMTQ6MTggIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYzoKKworICAgQ0hBTkdFUzogcGF0Y2ggMzE0MDgzMzogZnJvbSBqc2FmcmFuZWs6IGZpeCBwcm94eSBHRVRORVhUCisgICByZXF1ZXN0cworICAgV2hlbiBPSURzIHJlcXVlc3RlZCBhcmUgYmVsb3cgdGhlIHByb3h5IHJlcXVlc3QgcmVtYXAsIHdlIG5lZWQgdG8KKyAgIG5vdAorICAgaW5jbHVkZSBhbnkgT0lEcyB0aGF0IG1pZ2h0IGJlIGluIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBvcmlnaW5hbAorICAgT0lECisgICBhbmQgdGhlIHJlbWFwcGVkIE9JRC4gVGhpcyBwYXRjaCBmdWRnZXMgdGhlIHJlcXVlc3Qgc28gdGhhdCBpdAorICAgZml4ZXMKKyAgIHRoZSByZXF1ZXN0IE9JRCBzbyBpdCdzIGp1c3QgYmVmb3JlIHRoZSByZW1hcHBlZCBwcm94eSByYW5nZS4KKworMjAxMS0wNS0wOSAxNDoxOCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvY3B1LmgsIG1pYnMvVUNELVNOTVAtTUlCLnR4dDoKKworICAgTkVXUzogUEFUQ0ggMzE2NzMyNTogZnJvbSBrcmlzenRvZm9ybzogVUNELVNOTVAvU3lzdGVtU3RhdHM6IGFkZAorICAgdmFyaWFibGVzCisgICB0byByZXBvcnQgY3B1c3RlYWwsIGNwdWd1ZXN0LCBjcHVndWVzdG5pY2UKKworMjAxMS0wNS0wOSAxNDoxNyAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmM6CisKKyAgIENIQU5HRVM6IHBhdGNoIDMxODQwMjY6IGZyb20gZWl2bmFlczogQXZvaWQgY29uc3RhbnQgcmVmcmVzaCBvZgorICAgaW50ZXJmYWNlIHN0YXRpc3RpY3MKKworMjAxMS0wNS0wOSAxMDo0NCAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvc25tcF9hZ2VudC5jLCBhcHBzL3NubXBkZWx0YS5jLCBzbm1wbGliL3NjYXBpLmMsICAgCisgICAgICBzbm1wbGliL3NubXBfYXBpLmMsIHNubXBsaWIvc3lzdGVtLmMsIHNubXBsaWIvdG9vbHMuYzoKKworICAgRml4ZWQgc2V2ZXJhbCBjb21waWxlciB3YXJuaW5ncyByZXBvcnRlZCBieSB0aGUgTVNWQyBjb21waWxlci4KKworMjAxMS0wNS0wOSAxMDozNSAgYnZhc3NjaGUKKworICAgKiBzbm1wbGliL2dldHRpbWVvZmRheS5jOgorCisgICBXaW4zMi9NU1ZDOiBGaXhlZCBhIGNvbXBpbGVyIHdhcm5pbmcuCisKKzIwMTEtMDUtMDkgMTA6MzMgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmM6CisKKyAgIENIQU5HRVM6IGFnZW50OiBGaXhlZCBhIHllYXItMjAzOCBidWcgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mCisgICBpcFJvdXRlVGFibGUuCisKKzIwMTEtMDUtMDggMjA6MDEgIG5iYQorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Byb2JlSGlzdG9yeVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUmVzdWx0c1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUhvcHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLmM6CisKKyAgIEZpeCB3YXJuaW5ncyBhbmQgZGF0YSBmb3JtYXQgZm9yIERhdGVBbmRUaW1lIG9iamVjdHMuCisgICBUaGVzZSBtb2R1bGVzIHdvcmssIGJ1dDoKKyAgIC0gVGhleSBhcmUgTGludXggb25seQorICAgLSBSb3dzIG11c3QgYmUgY3JlYXRlZCB3aXRoIHJvd1N0YXR1cyBjcmVhdGVBbmRXYWl0IGJlZm9yZSB0aGV5CisgICBhcmUgcG9wdWxhdGVkCisgICAtIEFnZW50IG11c3QgcnVuIGFzIHJvb3QKKyAgIC0gQWdlbnQgaXMgYmxvY2tlZCB3aGlsZSB0ZXN0cyBydW4KKyAgIC0gRGF0YSBmb3JtYXQgZm9yIEluZXRBZGRyZXNzIG9iamVjdHMgaXMgd3JvbmcuIEl0IGlzIEFTQ0lJLCBub3QKKyAgIGJpbmFyeQorICAgKG1ha2luZyBpdCBlYXNpZXIgdG8gdXNlIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgYnV0IC4uLikKKworMjAxMS0wNS0wNyAxNToyMiAgYnZhc3NjaGUKKworICAgKiBwZXJsL1NOTVAvU05NUC54czoKKworICAgUmVtb3ZlZCBhbiB1bnVzZWQgbGFiZWwgZnJvbSBwZXJsL1NOTVAvU05NUC54cy4KKworMjAxMS0wNS0wNyAxNDo0OCAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvYWdlbnRfcmVnaXN0cnkuYywgYWdlbnQvaGVscGVycy9vbGRfYXBpLmMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaDoKKworICAgQ0hBTkdFUzogc25tcGQ6IERlY2xhcmUgdGhlIE9JRCBhcmd1bWVudCB0eXBlIG9mIE1JQiByZWdpc3RyYXRpb24KKyAgIGZ1bmN0aW9ucyBhcyAnY29uc3Qgb2lkIConIGluc3RlYWQgb2YgJ29pZCAqJyBzaW5jZSB0aGVzZQorICAgZnVuY3Rpb25zIGRvIG5vdCBtb2RpZnkgdGhlIE9JRC4KKworMjAxMS0wNS0wNyAxNDo0NCAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9uZXRsaW5rLmMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2FycC5oOgorCisgICBVc2UgdGhlIGNvcnJlY3QgZGF0YSB0eXBlIGZvciB0aGUgJ2NhY2hlIGV4cGlyZWQnIHZhcmlhYmxlOiBjaGFyCisgICBpbnN0ZWFkIG9mIGludC4KKworMjAxMS0wNS0wNyAxNDo0MyAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jOgorCisgICBGaXhlZCBhIGNvbXBpbGVyIHdhcm5pbmcgdGhhdCB3YXMgaW50cm9kdWNlZCBpbiByMjAxNTEuCisKKzIwMTEtMDUtMDcgMTM6MTUgIGJ2YXNzY2hlCisKKyAgICogc25tcGxpYi93aW5zZXJ2aWNlLmM6CisKKyAgIFdpbjMyOiBpbXByb3ZlZCBzb3VyY2UgY29kZSBjb25zaXN0ZW5jeSBieSB1c2luZyBMUENUU1RSIGluc3RlYWQKKyAgIG9mIExQQ1NUUi4gTm90ZTogdGhpcyBkb2VzIG5vdCBtZWFuIHRoYXQgVW5pY29kZSBidWlsZHMgYXJlCisgICBzdXBwb3J0ZWQuCisKKzIwMTEtMDUtMDcgMTM6MTQgIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbmV0bGluay5jOgorCisgICBBZGQgZmlsZSBmb3Jnb3R0ZW4gaW4gcjIwMzUzCisKKzIwMTEtMDUtMDYgMjM6MzIgIGhhcmRha2VyCisKKyAgICogIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9jb21tb24uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuaCwgIAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvYXJwLmg6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSCAzMTI1OTY6IGZyb20gZmFibGVkODA6IGxpc3RlbiBmb3IgbmV0bGluaworICAgY2hhbmdlIGV2ZW50cyBmb3IgdGhlIGFycC1yZWxhdGVkIHRhYmxlcworCisyMDExLTA1LTA2IDE4OjM2ICByc3RvcnkKKworICAgKiBzbm1wbGliL3N5c3RlbS5jOgorCisgICBORVdTOiBzbm1wbGliOiBhZGQgb3B0aW9uYWwgc3VwcG9ydCBmb3IgbG9jYWwgRE5TU0VDIHZhbGlkYXRpb24KKyAgIG9mIGhvc3RuYW1lcworICAgCisgICAtIG9wdGlvbmFsIGF0IGNvbmZpZ3VyZSB0aW1lOiAtLXdpdGgtbG9jYWwtZG5zc2VjLXZhbGlkYXRpb24KKyAgIC0gcmVxdWlyZXMgRE5TU0VDLVRvb2wgdmFsaWRhdGlvbiBsaWJyYXJpZXMKKyAgIC0gaW5pdGlhbCBzdXBwb3J0LCBmb3Igc3lzdGVtcyB3aXRoIGdldGFkZHJpbmZvLiBzdXBwb3J0IGZvcgorICAgYWRkaXRpb25hbAorICAgcmVzb2x2ZXIgaW50ZXJmYWNlcyBjb21pbmcgc29vbi4KKyAgIC0gYWxzbyBUT0RPOiBmbGFnIGZvciBpZ25vcmluZyB2YWxpZGF0b2luIGVycm9ycyAobG9nICYgY29udGludWUpCisKKzIwMTEtMDUtMDYgMTg6MzYgIHJzdG9yeQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oOgorCisgICBtb3ZlIHVudXNlZCAoYW5kIHRvbyBnZW5lcmljKSB0b2tlbiB3aXRoaW4gVUNEX0NPTVBBVElCTEUgaWZkZWYKKyAgIAorICAgLSBNQVhMQUJFTCBjb25mbGljdHMgd2l0aCA8YXJwYS9uYW1lc2VyLmg+CisgICAtIGFkZGVkIE5FVFNOTVBfTUFYTEFCRUwKKworMjAxMS0wNS0wNiAxODozNiAgcnN0b3J5CisKKyAgICogIGFnZW50L01ha2VmaWxlLmluLCBhcHBzL01ha2VmaWxlLmluLCAgIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbiwgY29uZmlndXJlLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MyLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGUsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICB1cGRhdGUgY29uZmlndXJlL01ha2VmaWxlcyBmb3IgRE5TU0VDIGxvY2FsIHZhbGlkYXRpb24gb3B0aW9uCisKKzIwMTEtMDUtMDYgMTQ6MzggIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zeXNjdGwuYzoKKworICAgcmVtb3ZlZCB0aGUgYWNjaWRlbnRhbCBicm9rZW4gZmVhdHVyZSByZXF1aXJlIGxpbmUgdGhhdCBnb3QgaGFsZgorICAgaW5zZXJ0ZWQKKworMjAxMS0wNS0wNiAxMzo1MCAgZHRzMTIKKworICAgKiB3aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2k6CisKKyAgIEZpeCBpbmNvbXBsZXRlIHVuaW5zdGFsbCBjb25maWd1cmF0aW9uOgorICAgLSBicm9rZW4gcmVtb3ZhbCBvZiBNaWNyb3NvZnQgRExMCisgICAtIHJlbW92ZSBhc3NvcnRlZCBuZXcgTUlCcyBhbmQgaGVhZGVyIGZpbGVzCisKKzIwMTEtMDUtMDYgMTI6NTggIGR0czEyCisKKyAgICogd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGw6CisKKyAgIFN1cHBvcnQgVGFyL0daaXAgY29tbWFuZCBwYXRocyBjb250YWluaW5nIHNwYWNlcworCisyMDExLTA1LTA2IDEyOjU3ICBkdHMxMgorCisgICAqIHdpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LnBsOgorCisgICBSZXBvcnQgR1ppcCBjb21tYW5kIGNvcnJlY3RseQorCisyMDExLTA1LTA1IDIxOjQ4ICBuYmEKKworICAgKiAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5jOgorCisgICBGaXggZm9yIERyYWdvbkZseSBCU0QgKGRvZXMgbm90IGRlZmluZSBJUF9TRU5EU1JDQUREUikKKworMjAxMS0wNS0wNSAyMDoyOSAgbmJhCisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oOgorCisgICBGaXggc3BlbGxpbmcgb2YgU09fUkVDVkRTVEFERFIKKworMjAxMS0wNS0wNSAxODo1NCAgcnN0b3J5CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgsIG1hbi9zbm1wLmNvbmYuNS5kZWYsICAgCisgICAgICBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIE5FV1M6IGFwcHM6IGFkZCBzbm1wLmNvbmYgdG9rZW5zIGZvciB0aW1lb3V0cyBhbmQgcmV0cmllcworCisyMDExLTA1LTA1IDA2OjA3ICBidmFzc2NoZQorCisgICAqIHNubXBsaWIvdG9vbHMuYywgdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfVEVTVENPTkYuc2g6CisKKyAgIENIQU5HRVM6IE1pbkdXOiBNYWRlIHJlZ3Jlc3Npb24gdGVzdCBvdXRwdXQgaW5kZXBlbmRlbnQgb2YgdGhlCisgICBOZXQtU05NUCB2YXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeS4gU29tZSB0ZXN0cworICAgdGhhdCBmYWlsZWQgcHJldmlvdXNseSBhZnRlciB0aGUgTmV0LVNOTVAgYmluYXJpZXMgKE1TVkMgYnVpbGQpCisgICBoYWQgYmVlbiBpbnN0YWxsZWQgZG8gbm93IHBhc3MuCisKKzIwMTEtMDUtMDUgMDU6NTcgIGJ2YXNzY2hlCisKKyAgICogIHdpbjMyL2VuY29kZV9rZXljaGFuZ2UvZW5jb2RlX2tleWNoYW5nZS52Y3Byb2osICAgCisgICAgICB3aW4zMi9saWJhZ2VudC9saWJhZ2VudC52Y3Byb2osICAgCisgICAgICB3aW4zMi9saWJuZXRzbm1wdHJhcGQvbGlibmV0c25tcHRyYXBkLnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL2xpYnNubXAvbGlic25tcC52Y3Byb2osICAgCisgICAgICB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC52Y3Byb2osICAgCisgICAgICB3aW4zMi9uZXRzbm1wbWlicy9uZXRzbm1wbWlicy52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wYnVsa2dldC9zbm1wYnVsa2dldC52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wYnVsa3dhbGsvc25tcGJ1bGt3YWxrLnZjcHJvaiwgd2luMzIvc25tcGQvc25tcGQudmNwcm9qLCAKKyAgICAgICAgd2luMzIvc25tcGRlbHRhL3NubXBkZWx0YS52Y3Byb2osIHdpbjMyL3NubXBkZi9zbm1wZGYudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcGdldC9zbm1wZ2V0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBuZXRzdGF0L3NubXBuZXRzdGF0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBzZXQvc25tcHNldC52Y3Byb2osIHdpbjMyL3NubXBzdGF0dXMvc25tcHN0YXR1cy52Y3Byb2osIAorICAgICAgICB3aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLnZjcHJvaiwKKyAgICAgIHdpbjMyL3NubXB0ZXN0L3NubXB0ZXN0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXB0cmFuc2xhdGUvc25tcHRyYW5zbGF0ZS52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC52Y3Byb2osIHdpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQudmNwcm9qLCAKKyAgICAgICAgd2luMzIvc25tcHVzbS9zbm1wdXNtLnZjcHJvaiwgd2luMzIvc25tcHZhY20vc25tcHZhY20udmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcHdhbGsvc25tcHdhbGsudmNwcm9qLCB3aW4zMi93aW4zMi5zbG4sICAgCisgICAgICB3aW4zMi93aW4zMmRsbC5zbG46CisKKyAgIFJlbW92ZWQgVmlzdWFsIFN0dWRpbyAyMDA1IHNvbHV0aW9uIGFuZCBwcm9qZWN0IGZpbGVzIGFnYWluIHNpbmNlCisgICBWaXN1YWwgU3R1ZGlvIDIwMTAgcmVmdXNlcyB0byBsb2FkIHRoZXNlLgorCisyMDExLTA1LTA0IDIzOjQzICBoYXJkYWtlcgorCisgICAqIE1ha2VmaWxlLmluOgorCisgICBjbGVhbiB0aGUgcGVybC9weXRob24gZmVhdHVyZSBsZWZ0b3ZlcnMKKworMjAxMS0wNS0wNCAyMzo0MiAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czoKKworICAgZml4IG1pYiBtb2R1bGUgaW52b2NhdGlvbgorCisyMDExLTA1LTA0IDIwOjU3ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYzoKKworICAgZml4IGlmZGVmIHR5cG8KKworMjAxMS0wNS0wNCAyMDo1NiAgaGFyZGFrZXIKKworICAgKiBNYWtlZmlsZS5pbjoKKworICAgZml4IHBlcmwvcHl0aG9uIGZlYXR1cmUgZGVwZW5kZW5jaWVzCisKKzIwMTEtMDUtMDQgMjA6NTYgIGhhcmRha2VyCisKKyAgICogYWdlbnQvYXV0b19ubGlzdC5jOgorCisgICByZXZlcnRlZCBhdXRvX25saXN0IG1hY3JvIHVzYWdlOyB0aGUgZnVuY3Rpb24gaXMgdXNlZCBpbiBoZWFkZXJzCisKKzIwMTEtMDUtMDQgMjA6NTYgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6CisKKyAgIEFkZCBhIC1UIG9wdGlvbiB0byBydW4gJ21ha2UgdGVzdCcKKworMjAxMS0wNS0wNCAyMDo1NiAgaGFyZGFrZXIKKworICAgKiBhcHBzL01ha2VmaWxlLmluOgorCisgICBmaXggdGhlIGVuY29kZV9rZXljaGFuZ2UgLmZ0IGZpbGVuYW1lCisKKzIwMTEtMDUtMDQgMTY6MjAgIGhhcmRha2VyCisKKyAgICogcGVybC9UcmFwUmVjZWl2ZXIvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgsIHNubXBsaWIvdG9vbHMuYzoKKworICAgZml4IHRoZSBmZWF0dXJlcyByZXF1aXJlZCBieSB0aGUgVHJhcFJlY2VpdmVyIG1vZHVsZQorCisyMDExLTA1LTA0IDE2OjIwICBoYXJkYWtlcgorCisgICAqIE1ha2VmaWxlLmluOgorCisgICBBZGQgdGhlIFRyYXBSZWNlaXZlciB0byB0aGUgbGlzdCBvZiBwZXJsIG1vZHVsZXMKKworMjAxMS0wNS0wNCAxNDo0MiAgaGFyZGFrZXIKKworICAgKiBwZXJsL1NOTVAvU05NUC54czoKKworICAgdXNlIHRoZSBuZXdlciBOZXQtU05NUCBBUElzLCByYXRoZXIgdGhhbiB0aGUgb2xkZXIgVUNEIG9uZXMKKworMjAxMS0wNS0wNCAxNDo0MSAgaGFyZGFrZXIKKworICAgKiBwZXJsL1NOTVAvU05NUC54czoKKworICAgcmVtb3ZlIFNFVCBjb2RlIHdoZW4gdW5kZXIgLS1yZWFkLW9ubHkgbW9kZQorCisyMDExLTA1LTA0IDE0OjQxICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuYzoKKworICAgcmVxdWlyZSBjaGVja192Yl91aW50CisKKzIwMTEtMDUtMDQgMTQ6NDEgIGhhcmRha2VyCisKKyAgICogCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9zdWJhZ2VudC5jLAorICAgICAgICAgYWdlbnQvc25tcF9hZ2VudC5jLCBsb2NhbC9taWIyYy1jb25mLmQvc3ViYWdlbnQubTJjLCAgIAorICAgICAgcHl0aG9uL25ldHNubXAvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgsICAgCisgICAgICBzbm1wbGliL3NubXBfbG9nZ2luZy5jOgorCisgICBsYXN0IG9mIHRoZSBwZXJsLXVzZWQgZmVhdHVyZSBmdW5jdGlvbnMKKworMjAxMS0wNS0wNCAxNDo0MCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvUm1vbi9ldmVudC5jLCBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlX3N1YmFnZW50LmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYywgYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYywgICAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9zdWJhZ2VudC5tMmMsIHNubXBsaWIvbWliLmMsIHNubXBsaWIvcGFyc2UuYzoKKworICAgc3RhcnRlZCB0aGUgZmluYWwgc2V0IG9mIGZ1bmN0aW9uIHJlbW92YWxzIGZvciBmZWF0dXJlcyByZXF1aXJlZAorICAgYnkgcGVybC9weXRob24KKworMjAxMS0wNS0wNCAxNDozOSAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1zb3VyY2UtaW5jbHVkZXMubTJpOgorCisgICBhZGRlZCB0aGUgbmV0LXNubXAtZmVhdHVyZXMuaCBoZWFkZXIKKworMjAxMS0wNS0wNCAxNDozOSAgaGFyZGFrZXIKKworICAgKiAgcGVybC9PSUQvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgsICAgCisgICAgICBwZXJsL1NOTVAvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgsICAgCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCwgICAKKyAgICAgIHBlcmwvYWdlbnQvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmg6CisKKyAgIEFkZGVkIHBlcmwgZmVhdHVyZSByZXF1aXJlbWVudHMKKworMjAxMS0wNS0wNCAxNDozOSAgaGFyZGFrZXIKKworICAgKiAgTWFrZWZpbGUuaW4sIE1ha2VmaWxlLnJ1bGVzLCBjb25maWd1cmUsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wZXJsX3B5dGhvbiwgICAKKyAgICAgIHBlcmwvQVNOL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oLCAgIAorICAgICAgcGVybC9PSUQvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgsICAgCisgICAgICBwZXJsL1NOTVAvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgsICAgCisgICAgICBwZXJsL2FnZW50L25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oLCAgIAorICAgICAgcGVybC9kZWZhdWx0X3N0b3JlL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oOgorCisgICBob3BlZnVsbHkgd29ya2luZyBydWxlcyB0byBhcHBseSBmZWF0dXJlIHJlcXVpcmVtZW50cyB0byBwZXJsIGFuZAorICAgcHl0aG9uCisKKzIwMTEtMDUtMDQgMTQ6MzggIGhhcmRha2VyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfaW9jdGwuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX3NvbGFyaXMyLmMsICAgCisgICAgICBhZ2VudC9zbm1wX2FnZW50LmM6CisKKyAgIG1vcmUgY2hhbmdlcyB0byByZW1vdmUgdW5uZWVkZWQgZnVuY3Rpb25zIHByaW1hcmlseSB3aGVuIHdyaXRlCisgICBtb2RlIGlzIHR1cm5lZCBvZmYKKworMjAxMS0wNS0wNCAxNDozNyAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3NubXBfbG9nZ2luZy5jOgorCisgICBjaGFuZ2UgdGhlIHdhbnQgaW52b2NhdGlvbiB0byBvbmx5IGRlZmF1bHQgdG8gZXhjbHVkZSBleHRlcm5hbAorICAgaG9va3MKKworMjAxMS0wNS0wNCAxNDozNyAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZpbmQtdW51c2VkLWNvZGU6CisKKyAgIHNlYXJjaCB0aHJvdWdoIC54cyBmaWxlcyBmb3IgZnVuY3Rpb24gaW52b2NhdGlvbnMKKworMjAxMS0wNS0wNCAxNDozNyAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9hdXRvX25saXN0LmM6CisKKyAgIGZvcmdvdCBhIHNlbWljb2xvbgorCisyMDExLTA1LTA0IDE0OjM3ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uVGFibGUuYzoKKworICAgaXF1ZXJ5IHBkdSBzZXNzaW9ucyBhcmUgb25seSBuZWVkZWQgaW4gd3JpdGUgbW9kZS4KKworMjAxMS0wNS0wNCAxNDozNiAgaGFyZGFrZXIKKworICAgKiBhcHBzL01ha2VmaWxlLmluOgorCisgICBmaXggZmVhdHVyZSBkZXRlY3Rpb24gb2Ygc29tZXRpbWVzLWJ1aWx0IGFwcGxpY2F0aW9ucworCisyMDExLTA1LTA0IDE0OjM2ICBoYXJkYWtlcgorCisgICAqIGFnZW50L2F1dG9fbmxpc3QuYzoKKworICAgdXNlIHRoZSBmZWF0dXJlX3VudXNlZCBtYWNybyBmb3IgbWFraW5nIGFuIGVtcHR5IGZpbGUgZm9yCisgICBjb25zaXN0ZW5jeQorCisyMDExLTA1LTA0IDE0OjM2ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywgYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmMsICAKKyAgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvaHdfZnN5cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX29wZW5ic2QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc29sYXJpczIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc3lzY3RsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5jLCBhcHBzL3NubXB0bHMuYywgICAKKyAgICAgIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvbWliLmMsIHNubXBsaWIvc25tcF9vcGVuc3NsLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzoKKworICAgQW5vdGhlciBzd2VlcCBmb3IgdW51c2VkIGZ1bmN0aW9ucyB3aGVuIHJlYWRfb25seSBtb2RlIGlzIHR1cm5lZAorICAgb24KKworMjAxMS0wNS0wNCAxNDozNCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvaGVscGVycy90YWJsZV90ZGF0YS5jLCBhZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jLCBhZ2VudC9taWJncm91cC9hZ2VudC9uc0xvZ2dpbmcuYywgIAorICAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJEZWx0YVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFeHByZXNzaW9uVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cE9iamVjdFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc3lzY3RsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWJfNV81LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQWRkclRhYmxlL3NubXBUbHN0bUFkZHJUYWJsZS5jLCAKKyAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1QYXJhbXNUYWJsZS9zbm1wVGxzdG1QYXJhbXNUYWJsZS5jLAorICAgICAgICAgc25tcGxpYi9jaGVja192YXJiaW5kLmM6CisKKyAgIG1hcmsgYSBzbGV3IG9mIGZ1bmN0aW9ucyBhcyBmZWF0dXJlcyB0aGF0IGFyZSBvbmx5IG5lZWRlZCB3aXRoCisgICB3cml0ZV9zdXBwb3J0CisKKzIwMTEtMDUtMDQgMTQ6MzIgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9maW5kLXVudXNlZC1jb2RlOgorCisgICBydW4gZ3JlcCB3aXRoIC1uCisKKzIwMTEtMDUtMDQgMTQ6MzIgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jLCBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzoKKworICAgZmVhdHVyaXplIG5ldHNubXBfc29ja2FkZHJfc2l6ZQorCisyMDExLTA1LTA0IDE0OjMyICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYzoKKworICAgcmVtb3ZlIGEgZmVhdHVyZV9yZXF1aXJlIG5vdCBhY3R1YWxseSBuZWVkZWQuCisKKzIwMTEtMDUtMDQgMTQ6MzEgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9jZXJ0X3V0aWwuYywgc25tcGxpYi9jb250YWluZXIuYzoKKworICAgbWFyayBTVUJDT05UQUlORVJfRklORCBhcyBhIGZlYXR1cmUKKworMjAxMS0wNS0wNCAxNDozMSAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3NubXBfY2xpZW50LmMsIHNubXBsaWIvc25tcHRzbS5jOgorCisgICB0aGUgcm93IGNyZWF0aW9uIEFQSSBpcyBvbmx5IHVzZWQgaW4gdGhlIFRTTSBpbXBsZW1lbnRhdGlvbgorCisyMDExLTA1LTA0IDE0OjMxICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYywgc25tcGxpYi9zbm1wdHNtLmM6CisKKyAgIHRoZSBuZXdlciBjb250ZXh0IGVuZ2luZUlEIHByb2JpbmcgaXMgb25seSBuZWVkZWQgaWZmIFRTTSBpcyBpbgorICAgdXNlCisKKzIwMTEtMDUtMDQgMTQ6MzAgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9kaXJfdXRpbHMuYzoKKworICAgZml4IGFuIGlmZGVmIHR5cG8KKworMjAxMS0wNS0wNCAxNDozMCAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3NubXBfb3BlbnNzbC5jOgorCisgICBtb3ZlZCBmZXRhdXJlIGNoaWxkX29mIHN0YXRlbWVudHMgdG8gdGhlIHRvcCBvZiB0aGUgZmlsZQorCisyMDExLTA1LTA0IDE0OjMwICBoYXJkYWtlcgorCisgICAqICBzbm1wbGliL2NlcnRfdXRpbC5jLCBzbm1wbGliL2NvbnRhaW5lci5jLCBzbm1wbGliL2Rpcl91dGlscy5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wX29wZW5zc2wuYzoKKworICAgbWFya2VkIGEgY291cGxlIG9mIHJhcmVseSB1c2VkIGNvbnRhaW5lciBmdW5jdGlvbnMuCisKKzIwMTEtMDUtMDQgMTQ6MjkgIGhhcmRha2VyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYzoKKworICAgc3BsaXQgb3V0IHRoZSBwcmVmaXhfaW5mbyBmZWF0dXJlIGludG8gc3ViLWZlYXR1cmVzCisKKzIwMTEtMDUtMDQgMTQ6MjkgIGhhcmRha2VyCisKKyAgICogCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfaW50ZXJmYWNlLmM6CisKKyAgIG1hcmsgdGhlIGFjY2Vzc29yIGZ1bmN0aW9ucyBhcyB1bm5lZWRlZAorCisyMDExLTA1LTA0IDE0OjI5ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmM6CisKKyAgIGZpeCBhIGNoaWxkX29mIHN0YXRlbWVudCB3aXRoIGEgY29weS9wYXN0ZSBlcnJvcgorCisyMDExLTA1LTA0IDE0OjI4ICBoYXJkYWtlcgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYzoKKworICAgdGhlIGNvbnRhaW5lciByb3ctcmVtb3ZlIGlzIG9ubHkgbmVlZGVkIGlmIHRoZSB0ZGF0YSByZW1vdmVfcm93CisgICBpcyBuZWVkZWQKKworMjAxMS0wNS0wNCAxNDoyOCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvaGVscGVycy90YWJsZV90ZGF0YS5jLCBhZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1BZGRyVGFibGUvc25tcFRsc3RtQWRkclRhYmxlLmMsIAorICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bVBhcmFtc1RhYmxlL3NubXBUbHN0bVBhcmFtc1RhYmxlLmM6CisKKyAgIGZlYXR1cmUgbWFya2luZyBvZiB1bnVzZWQgdGRhdGEgZnVuY3Rpb25zCisgICB0YWJsZV90ZGF0YV9kZWxldGVfdGFibGUKKyAgIHRhYmxlX3RkYXRhX2V4dHJhY3RfdGFibGUKKyAgIHRhYmxlX3RkYXRhX3JlbW92ZV9yb3cKKworMjAxMS0wNS0wNCAxNDoyNyAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZUV2ZW50VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RhdGFfc2V0LmM6CisKKyAgIHJlbW92YWwgb2Ygc29tZSByYXJlbHkgdXNlZCBmdW5jdGlvbnMKKyAgIHRhYmxlX3NldF9tdWx0aV9hZGRfZGVmYXVsdF9yb3cKKyAgIHRhYmxlX2RhdGFzZXRfdW5yZWdpc3Rlcl9hdXRvX2RhdGFfdGFibGUKKworMjAxMS0wNS0wNCAxNDoyNyAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czoKKworICAgQWRkZWQgYSBkZWZpbml0aW9uIHRvIGluY29ycG9yYXRlIHJlYWRfb25seS9ub3RpZnlfb25seQorCisyMDExLTA1LTA0IDE0OjI3ICBoYXJkYWtlcgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jOgorCisgICBhZGRlZCBhIG1pc3NpbmcgZmVhdHVyZSBkZWZpbml0aW9uIGxpbmUKKworMjAxMS0wNS0wNCAxNDoyNiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9NYWtlZmlsZS5pbjoKKworICAgYWRkZWQgYmFjayBpbiBtaXNzaW5nIG1pYmdyb3VwIGZlYXR1cmUgZGVmaW5pdGlvbiBsaXN0CisKKzIwMTEtMDUtMDQgMTQ6MjYgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6CisKKyAgIEluY2x1ZGUgdGhlIG9yaWdpbmFsIGJhc2UgZmxhZ3MgdG8gZW5zdXJlIC0td2l0aC1kZWZhdWx0cyBnZXRzCisgICBwaWNrZWQgdXAKKworMjAxMS0wNS0wNCAxNDoyNiAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czoKKworICAgZml4IHVzYWdlCisKKzIwMTEtMDUtMDQgMTQ6MjYgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6CisKKyAgIEFkZGVkIGEgLWIgZmxhZyBmb3IgYmFzZSBhcmd1bWVudHMgdG8gc3RhcnQgZnJvbQorCisyMDExLTA1LTA0IDE0OjI1ICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOgorCisgICBkZWZhdWx0IHRvIGEgbGluZWFyIHNlYWNoIG9mIHNpemUgdGVzdHMsIHJhdGhlciB0aGFuIGV4cG9uZW50aWFsCisKKzIwMTEtMDUtMDMgMTg6NTUgIGJ2YXNzY2hlCisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaCwgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4uYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogR3VhcmQgbmV0c25tcF91ZHBfcmVjdmZyb20oKSBldGMuIGRlY2xhcmF0aW9ucworICAgY29uc2lzdGVudGx5LgorICAgQ0hBTkdFUzogV2luMzI6IEJ1aWxkcyB3aXRoIFZpc3VhbCBTdHVkaW8gMjAxMC4KKworMjAxMS0wNS0wMyAxNToyOSAgYnZhc3NjaGUKKworICAgKiBzbm1wbGliL3dpbnNlcnZpY2UuYzoKKworICAgQ0hBTkdFUzogV2luMzI6IFBBVENIOiAzMjkzODQyOiBFbGltaW5hdGUgcmVnaXN0cnkgYXJndW1lbnQgbGltaXQKKyAgIG9mIDEyNyBjaGFyYWN0ZXJzICh0aGlzIGxpbWl0YXRpb24gd2FzIHJlcG9ydGVkIGJ5IFN5bHZhaW4gRGVyeSkuCisKKzIwMTEtMDUtMDIgMTE6MjIgIGJ2YXNzY2hlCisKKyAgICogIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIENIQU5HRVM6IFdpbjMyOiBoZWFkZXIgZmlsZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhbiBub3cKKyAgIGJlIHVzZWQgaW4gdGhlIE1pbkdXIGVudmlyb25tZW50LgorCisyMDExLTA0LTI5IDExOjE3ICBidmFzc2NoZQorCisgICAqIHNubXBsaWIvd2luc2VydmljZS5jOgorCisgICBTcGVsbGluZyBhbmQgZ3JhbW1hciBmaXhlcyBmb3IgdGhlIHNvdXJjZSBjb2RlIGNvbW1lbnRzIGluCisgICBzbm1wbGliL3dpbnNlcnZpY2UuYy4KKworMjAxMS0wNC0yOSAwMDoyMyAgaGFyZGFrZXIKKworICAgKiBORVdTOgorCisgICBhZGRlZCBub3RlIGFib3V0IHRoZSBuZXcgdGltaW5nIGZ1bmN0aW9uCisKKzIwMTEtMDQtMjkgMDA6MTQgIGhhcmRha2VyCisKKyAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6CisKKyAgIFVwZGF0ZSB0aGUgbWFudWFsIHBhZ2UgdG8gcmVmbGVjdCB0aGUgbmV3IHRpbWluZyBvcHRpb25zCisKKzIwMTEtMDQtMjkgMDA6MTQgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi90b29scy5jOgorCisgICBiZXR0ZXIgZG9jdW1lbnRhdGlvbgorCisyMDExLTA0LTI5IDAwOjE0ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29uZi5jOgorCisgICB1c2UgdGhlIG5ldHNubXBfc3RyaW5nX3RpbWVfdG9fc2VjcygpIGZvciBwYXJzaW5nCisgICBmcmVxdWVuY2llcy90aW1lCisKKzIwMTEtMDQtMjkgMDA6MTMgIGhhcmRha2VyCisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMTAycGR1X2J1aWxkX2NsaWIuYzoKKworICAgZml4IHBkdSBidWlsZGluZyB0ZXN0cyB1bmRlciB2YXJpb3VzIGRpc2FibGVkIG1vZGVzCisKKzIwMTEtMDQtMjkgMDA6MTMgIGhhcmRha2VyCisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMTAycGR1X2J1aWxkX2NsaWIuYzoKKworICAgZG9uJ3QgdHJ5IHRvIGJ1aWxkIHRoZSBHRVQgcGR1IHVuZGVyIG5vdGlmeV9vbmx5CisKKzIwMTEtMDQtMjkgMDA6MTIgIGhhcmRha2VyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgsIHNubXBsaWIvdG9vbHMuYzoKKworICAgZml4IGEgYnVnIHdpdGggbm8tc3VmZml4IHN0cmluZ3MgYW5kIHVzZSBhIGNvbnN0IGlucHV0IHN0cmluZworCisyMDExLTA0LTI5IDAwOjEyICBoYXJkYWtlcgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAxMG5ldHNubXBfc3RyaW5nX3RpbWVfdG9fc2Vjc19jbGliLmM6CisKKyAgIEEgbmV3IHVuaXQgdGVzdCBmb3IgdGhlIHRpbWUgY29udmVyc2lvbiByb3V0aW5lCisKKzIwMTEtMDQtMjkgMDA6MTIgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzoKKworICAgdXNlIHRoZSBuZXRzbm1wX3N0cmluZ190aW1lX3RvX3NlY3MoKSBmdW5jdGlvbiBmb3IgY29tcHV0aW5nCisgICBpbnRlcnZhbCBwZXJpb2RzCisKKzIwMTEtMDQtMjkgMDA6MTEgIGhhcmRha2VyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgsIHNubXBsaWIvdG9vbHMuYzoKKworICAgQWRkZWQgYSBuZXRzbm1wX3N0cmluZ190aW1lX3RvX3NlY3MoKSBmdW5jdGlvbnMgdG8gY29udmVydCwgZS5nLiwKKyAgIDFoIHRvIDM2MDAKKworMjAxMS0wNC0yOSAwMDoxMSAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIHJlbW92ZSBjb2RlIHRvIGJ1aWxkL3BhcnNlIEdFVC9ldGMgcmVxdWVzdHMgd2hlbiBOT1RJRllfT05MWSBpcworICAgdHVybmVkIG9uLgorCisyMDExLTA0LTI3IDIxOjMzICBoYXJkYWtlcgorCisgICAqIE5FV1M6CisKKyAgIHVwZGF0ZSB0aGUgTkVXUyB0byByZWZsZWN0IHRoZSBuZXcgLS1lbmFibGUtcmVhZC1vbmx5IGFuZAorICAgLS1lbmFibGUtbm90aWZ5LW9ubHkKKworMjAxMS0wNC0yNyAyMTozMyAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYzoKKworICAgbWlub3IgaW1wcm92ZW1lbnRzIGZvciByb25seSB2cyByd3JpdGUgaGFuZGxpbmcKKworMjAxMS0wNC0yNyAyMTozMiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jOgorCisgICBzdGlsbCBlbmFibGUgUk9OTFkgd2hlbiBSV1JJVEUgaXNuJ3QgcG9zc2libGUKKworMjAxMS0wNC0yNyAyMTozMiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYzoKKworICAgZml4IEdFVCBzdXBwb3J0IHdoZW4gbm9fd3JpdGUgaXMgZW5hYmxlZAorCisyMDExLTA0LTI3IDIxOjMyICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6CisKKyAgIG1hcmsgYSBmdXR1cmUgbW9kaWZpY2F0aW9uIG5lZWQgaW4gYSBjb21tZW50CisKKzIwMTEtMDQtMjcgMjE6MzEgIGhhcmRha2VyCisKKyAgICogYWdlbnQvaGVscGVycy9vbGRfYXBpLmM6CisKKyAgIGZpeCBoYW5kbGluZyBvZiBub193cml0ZSBzdXBwb3J0CisKKzIwMTEtMDQtMjcgMjE6MzEgIGhhcmRha2VyCisKKyAgICogYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYywgYWdlbnQvc25tcF9hZ2VudC5jLCBhZ2VudC9zbm1wZC5jOgorCisgICBkb24ndCBvcGVuIGFueSBsaXN0ZW5pbmcgdHJhbnNwb3J0cyB3aGVuIG5vdGlmeS1vbmx5IGlzIHNwZWNpZmllZAorCisyMDExLTA0LTI3IDIxOjMxICBoYXJkYWtlcgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGU6CisKKyAgIHNldCB0aGUgbm8tbGlzdGVuIGFuZCByZWFkLW9ubHkgZmxhZ3Mgd2hlbiAtLWVuYWJsZS1ub3RpZnktb25seQorICAgaXMgc2V0CisKKzIwMTEtMDQtMjcgMjE6MzAgIGhhcmRha2VyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgcmFuIGF1dG9oZWFkZXIKKworMjAxMS0wNC0yNyAyMTozMCAgaGFyZGFrZXIKKworICAgKiAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVBYRG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVENQSVB2NkRvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmM6CisKKyAgIGltcGxlbWVudCB0aGUgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCBpbiB0aGVzZSB0cmFuc3BvcnRzCisKKzIwMTEtMDQtMjcgMjE6MzAgIGhhcmRha2VyCisKKyAgICogY29uZmlndXJlOgorCisgICBydW4gYXV0b2NvbmYKKworMjAxMS0wNC0yNyAyMToyOSAgaGFyZGFrZXIKKworICAgKiBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZToKKworICAgbW92ZSB0aGUgcmVhZC1vbmx5IGZsYWcgZGVmaW5pdGlvbiBiZWxvdyB0aGUgbm90aWZ5LW9ubHksIHNpbmNlCisgICBub3RpZnktb25seSBuZWVkcyB0byBpbXBseSByZWFkLW9ubHkKKworMjAxMS0wNC0yNyAyMToyOSAgaGFyZGFrZXIKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlOgorCisgICBEZWZpbmVkIGEgbmV3IC0tZW5hYmxlLW5vdGlmeS1vbmx5IGZsYWcgZm9yIGJ1aWxkaW5nIGEgdG9vbHNldAorICAgdGhhdCBvbmx5IGFsbG93cyBmb3Igbm90aWZpY2F0aW9ucyB3aXRoIG5vIHJlYWQvd3JpdGUgc3VwcG9ydAorCisyMDExLTA0LTI3IDIxOjI5ICBoYXJkYWtlcgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGU6CisKKyAgIERlZmluZWQgYSBuZXcgLS1uby1saXN0ZW4gZmxhZyB0byByZW1vdmUgbGlzdGVuaW5nIHN1cHBvcnQKKworMjAxMS0wNC0yNyAyMToyOCAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kZWZhdWx0X21vZHVsZXMuaDoKKworICAgdGhlIGRpc21hbiBzY2hlZHVsZSBtaWIgaXMgb25seSB1c2VmdWwgd2hlbiBTRVRzIGFyZSB0dXJuZWQgb24KKworMjAxMS0wNC0yNyAyMToyOCAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4uaDoKKworICAgdGhlIGRpc21hbiBzY2hlZHVsZSBtaWIgaXMgb25seSB1c2VmdWwgd2hlbiBTRVRzIGFyZSB0dXJuZWQgb24KKworMjAxMS0wNC0yNyAyMToyOCAgaGFyZGFrZXIKKworICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuYywgIAorICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2ludGVyZmFjZS5jOgorCisgICBmaW5pc2hlZCBub193cml0ZSBzdXBwb3J0IGZvciBjb21tb24gaW5jbHVkZWQgdGFibGVzCisKKzIwMTEtMDQtMjcgMjE6MjcgIGhhcmRha2VyCisKKyAgICogYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmM6CisKKyAgIEFkZCBiYWNrIGluICduZXRzbm1wX3NldF9yb3dfY29sdW1uJyB3aGVuIG5vX3dyaXRlIHN1cHBvcnQgaXMKKyAgIGVuYWJsZWQKKyAgIFRoaXMgZnVuY3Rpb24gaXMgYSBnZW5lcmljIGRhdGEgbWFuaXB1bGF0aW9uIGZ1bmN0aW9uLCBub3QgU0VUCisgICBzcGVjaWZpYworCisyMDExLTA0LTI3IDIxOjI3ICBoYXJkYWtlcgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jOgorCisgICBkb24ndCB1c2UgbWFya19yb3dfY29sdW1uX3dyaXRhYmxlIHdoZW4gcmVhZC1vbmx5IHN1cHBvcnQgaXMKKyAgIGVuYWJsZWQKKworMjAxMS0wNC0yNyAyMToyNiAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5jLCBhZ2VudC9taWJncm91cC9hZ2VudC9uc0RlYnVnLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc0xvZ2dpbmcuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcF9zY2FsYXJzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jLCBhZ2VudC9taWJncm91cC9taWJJSS91ZHBUYWJsZS5jLCAKKyAgICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5jOgorCisgICBmaXggbm9fd3JpdGUgc3VwcG9ydAorCisyMDExLTA0LTI3IDIxOjI2ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jOgorCisgICBmaXggbm9fd3JpdGUgc3VwcG9ydAorCisyMDExLTA0LTI3IDIxOjE2ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYzoKKworICAgRG9uJ3QgZnJlZSB0aGUgaWZYVGFibGUgcm93IGZvdW5kIG9uIGxvYWQgZmFpbHVyZSBhcyB3ZSBkb24ndCBvd24KKyAgIGl0CisKKzIwMTEtMDQtMjYgMTg6MTYgIGhhcmRha2VyCisKKyAgICogbG9jYWwvZ2l0dG9vbHMsIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczoKKworICAgZ2l0IGJhc2gtc2hlbGwgZnVuY3Rpb25zIHRvIGVuYWJsZSBicmFuY2ggc3dpdGNoaW5nIGFuZCBleHRlcm5hbAorICAgYnVpbGRpbmcKKyAgIFRoZXNlIGxvY2FsIHNoZWxsIGZ1bmN0aW9ucyAoc25tcGNvbmZpZ3VyZSBhbmQgc25tcG1ha2UpIGxldCB5b3UKKyAgIGNvbmZpZ3VyZSBhbmQgYnVpbGQgdGhlIE5ldC1TTk1QIHNvdXJjZSBjb2RlIGluIGV4dGVybmFsCisgICBkaXJlY3RvcmllcworICAgdGhhdCBhcmUgYXV0by1jYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSBleGlzdGluZyBicmFuY2ggbmFtZSAod2l0aAorICAgYW4KKyAgIG9wdGlvbmFsIHN1ZmZpeCkuIFRoaXMgbGV0cyB5b3UgcnVuICdzbm1wbWFrZScgZnJvbSB3aXRoaW4gdGhlCisgICBzb3VyY2UKKyAgIGRpcmVjdG9yeSBhbmQgaGF2ZSBpdCBhY3R1YWxseSBleHRlcm5hbGx5IGtlZXAgdHJhY2sgb2YgbW9kaWZpZWQKKyAgIGZpbGVzLCBldGMsIHNvIGJ1aWxkaW5nIGluIG11bHRpcGxlIGJyYW5jaGVzIGNhbiBiZSBkb25lIGZyb20gYQorICAgc2luZ2xlCisgICBnaXQgY2hlY2tvdXQuCisKKzIwMTEtMDQtMjUgMjA6NTcgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzoKKworICAgY2xlYW4gdXAgdGhlIGl0ZXJhdG9ycworCisyMDExLTA0LTI1IDIwOjU3ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6CisKKyAgIGZyZWUgdmFyYmluZHMgYWZ0ZXIgc2VuZGluZworCisyMDExLTA0LTI1IDE4OjQ4ICBidmFzc2NoZQorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jOgorCisgICBDb21tZW50ZWQgb3V0IGFuIHVudXNlZCBmdW5jdGlvbiBiZWNhdXNlIHRoZSBjb21waWxlciBjb21wbGFpbmVkCisgICBhYm91dCBpdC4KKworMjAxMS0wNC0yNSAxODo0NiAgYnZhc3NjaGUKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzoKKworICAgRml4ZWQgdHdvIGNvbXBpbGVyIHdhcm5pbmdzLgorCisyMDExLTA0LTIzIDE0OjMxICBtYWdmcgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jOgorCisgICBSZW1vdmUgdW5uZWNlc3NhcnkgbnVsbCBjaGVjaworCisyMDExLTA0LTIzIDE0OjA1ICBtYWdmcgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmM6CisKKyAgIE1vdmUgcG9pbnRlciBkZXJlZmVyZW5jZSB0byBhZnRlciB0aGUgY2hlY2sgZm9yIHN1Y2Nlc3NmdWwKKyAgIGFsbG9jYXRpb24gb2YgdGhlIHBvaW50ZXIKKworMjAxMS0wNC0yMyAwODoyMCAgbWFnZnIKKworICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOgorCisgICBSZWR1Y2UgdmFyaWFibGUgc2NvcGUKKworMjAxMS0wNC0yMyAwODoxNiAgbWFnZnIKKworICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOgorCisgICBSZW1vdmUgYW4gdW51c2VkIHZhcmlhYmxlCisKKzIwMTEtMDQtMjMgMDg6MDYgIG1hZ2ZyCisKKyAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYzoKKworICAgUmVkdWNlIHZhcmlhYmxlIHNjb3BlCisKKzIwMTEtMDQtMjMgMDc6NTUgIG1hZ2ZyCisKKyAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYzoKKworICAgUmVkdWNlIHZhcmlhYmxlIHNjb3BlCisKKzIwMTEtMDQtMjIgMTk6MzUgIG1hZ2ZyCisKKyAgICogYWdlbnQvYWdlbnRfdHJhcC5jOgorCisgICBSZWR1Y2UgdmFyaWFibGUgc2NvcGUKKworMjAxMS0wNC0yMiAxOTozMCAgbWFnZnIKKworICAgKiBhZ2VudC9hZ2VudF90cmFwLmM6CisKKyAgIFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKKworMjAxMS0wNC0yMiAxNzoyOSAgaGFyZGFrZXIKKworICAgKiBtYW4vc25tcGQuY29uZi41LmRlZjoKKworICAgbWVudGlvbiB3aGljaCBtb2R1bGUgaXMgcmVxdWlyZWQgd2hlbiBidWlsZGluZyB0byBnZXQgdGhlIGRlbGl2ZXIKKyAgIHN1cHBvcnQKKworMjAxMS0wNC0yMiAxNjozMyAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOgorCisgICBkZWxldGVkIGFuIHVubmVlZGVkIGRlYnVnZ2luZyBzdGF0ZW1lbnQKKworMjAxMS0wNC0yMiAxNjozMyAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOgorCisgICBwcm9wZXJseSB1cGRhdGUgdGhlIG1heCBjb3VudCBpbiB0aGUgb3V0Z29pbmcgbm90aWZpY2F0aW9ucworCisyMDExLTA0LTIyIDE2OjMyICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6CisKKyAgIGJldHRlciBwYWNrZXQgZXN0aW1hdGlvbiB0byBlbnN1cmUgd2UgZG9uJ3Qgb3ZlcnJ1bi4KKworMjAxMS0wNC0yMiAxNjozMiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOgorCisgICBlc3RpbWF0ZSB0aGUgcGFja2V0IHNpemUgYW5kIGJyZWFrIHRoZSBub3RpZmljYXRpb24gdXAgYmFzZWQgb24KKyAgIGl0CisKKzIwMTEtMDQtMjIgMTY6MzEgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzoKKworICAgdHJhbnNmb3JtIHRoZSBub3RpZmljYXRpb24gc2VuZGluZyBpbnRvIGEgbGFyZ2VyIGxvb3AgZm9yIGxhdGVyCisgICBtdWx0aS1ub3RpZnMKKworMjAxMS0wNC0yMiAxNjozMSAgaGFyZGFrZXIKKworICAgKiBORVdTOgorCisgICBmdXJ0aGVyIGluZm9ybWF0aW9uIGFib3V0IGZlYXR1cmUgbWFya2luZy9zZWxlY3Rpb24KKworMjAxMS0wNC0yMiAxNjozMSAgaGFyZGFrZXIKKworICAgKiBORVdTOgorCisgICBtZW50aW9uIHRoZSBuZXcgZGVsaXZlcnkgYnkgbm90aWZpY2F0aW9ucworCisyMDExLTA0LTIyIDE2OjMxICBoYXJkYWtlcgorCisgICAqIE5FV1M6CisKKyAgIGRvY3VtZW50IHRoZSBtaW5pbWFsaXN0IHN1cHBvcnQKKworMjAxMS0wNC0yMiAxNjozMCAgaGFyZGFrZXIKKworICAgKiBtYW4vc25tcGQuY29uZi41LmRlZjoKKworICAgZG9jdW1lbnQgdGhlIG5ldyBkZWxpdmVyQnlOb3RpZnkgY29uZmlnIHRva2VucworCisyMDExLTA0LTIyIDE2OjMwICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6CisKKyAgIGFsbG93IHJ1biB0aW1lIG1vZGlmaWNhdGlvbnMgb2YgdGhlIE9JRHMgdG8gdXNlCisKKzIwMTEtMDQtMjIgMTY6MzAgIGhhcmRha2VyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5oOgorCisgICBhZGQgY29uZmlnIGZsYWdzIHRvIG5vdCBpbmNsdWRlIHRoZSBwZXJpb2QgY29uZmlnIGFuZCBtc2cgY291bnQKKyAgIHZhbHVlcworCisyMDExLTA0LTIyIDE2OjI5ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6CisKKyAgIGluY2x1ZGUgdGhlIHBlcmlvZGljIGNvdW50LCB0aGUgbWVzc2FnZSBudW1iZXIgYW5kIHRoZSBtYXgKKyAgIG1lc3NhZ2UgbnVtYmVyCisKKzIwMTEtMDQtMjIgMTY6MjkgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzoKKworICAgZGVsZXRlZCBkZWJ1Z2dpbmcgY29tbWVudAorCisyMDExLTA0LTIyIDE2OjI5ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jLCAgIAorICAgICAgbWlicy9ORVQtU05NUC1QRVJJT0RJQy1OT1RJRlktTUlCLnR4dDoKKworICAgTW92ZSB0aGUgbm90aWZpY2F0aW9uIGRlZmluaXRpb24gdG8gd2l0aGluIHRoZSBzdWItbWliCisKKzIwMTEtMDQtMjIgMTY6MjggIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzoKKworICAgZGVsZXRlIGFuIHVudXNlZCB2YXJpYWJsZQorCisyMDExLTA0LTIyIDE2OjI4ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5Lmg6CisKKyAgIGxvYWQgdGhlIE1JQiBpbnRvIHRoZSBkZWZhdWx0IHNldAorCisyMDExLTA0LTIyIDE2OjI4ICBoYXJkYWtlcgorCisgICAqIG1pYnMvTkVULVNOTVAtUEVSSU9ESUMtTk9USUZZLU1JQi50eHQ6CisKKyAgIEEgbmV3IG1pYiB0byBob2xkIHRoZSBwZXJpb2RpYyBub3RpZnkgb2JqZWN0cworCisyMDExLTA0LTIyIDE2OjI4ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6CisKKyAgIGZpbGwgb3V0IHRoZSBjb25maWcgZnJlZSByb3V0aW5lCisKKzIwMTEtMDQtMjIgMTY6MjcgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzoKKworICAgcHJvcGVybHkgbW9uaXRvciB0aGUgd2hvbGUgY29udGFpbmVyCisKKzIwMTEtMDQtMjIgMTY6MjcgIGhhcmRha2VyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5oOgorCisgICBwYXJzZSB0aGUgY29uZiBmaWxlcyBhbmQgY3JlYXRlIGFuZCBpbnNlcnQgb2JqZWN0cyBpbnRvIHRoZQorICAgY29udGFpbmVyCisKKzIwMTEtMDQtMjIgMTY6MjcgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzoKKworICAgZGVmaW5lZCBhIGNvbnRhaW5lciB0byBzdG9yZSBhIGxpc3Qgb2YgZGVsaXZlciBvYmplY3RzIGluCisKKzIwMTEtMDQtMjIgMTY6MjcgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaDoKKworICAgYWRkZWQgYSBuZXh0X3J1biB0aW1lc3RhbXAKKworMjAxMS0wNC0yMiAxNjoyNiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOgorCisgICBhY3R1YWxseSBzZW5kIGEgbm90aWZpY2F0aW9uIHdpdGggdGhlIHJlc3VsdHMKKworMjAxMS0wNC0yMiAxNjoyNiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOgorCisgICBtYWtlIHRoZSB3YWxrIG9uIHRoZSB0ZXN0IG9iamVjdCBmdW5jdGlvbi4KKworMjAxMS0wNC0yMiAxNjoyNiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOgorCisgICBjcmVhdGUgYSBtYXggcGFja2V0IHNpemUgY29uZmlnIHRva2VuIGFuZCBwYXJzZSBpdAorCisyMDExLTA0LTIyIDE2OjI1ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaDoKKworICAgbWluaW1hbCBzdGFydGluZyB0ZXN0IG9iamVjdAorCisyMDExLTA0LTIyIDE2OjI1ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaDoKKworICAgYWRkZWQgYSBmdW5jdGlvbiB0byBjYWxjdWxhdGUgdGhlIHRpbWUgdW50aWwgdGhlIG5leHQgcnVuCisKKzIwMTEtMDQtMjIgMTY6MjUgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzoKKworICAgcmVtb3ZlIGxlZnQgaW4gdGVtcGxhdGUgbGluZQorCisyMDExLTA0LTIyIDE2OjI1ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaDoKKworICAgdXNlIGFuIGFsYXJtIGNhbGxiYWNrIHByb3RvdHlwZSBmb3IgZXhlY3V0ZQorCisyMDExLTA0LTIyIDE2OjI0ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWxpdmVyLCBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jLCAKKyAgICAgICAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaDoKKworICAgYmVnaW5uaW5nIHRlbXBsYXRlIGNvZGUgZm9yIGRlbGl2ZXJ5IG9mIGRhdGEgYnkgbm90aWZpY2F0aW9ucworCisyMDExLTA0LTIyIDA5OjEzICBtYWdmcgorCisgICAqIGFnZW50L3NubXBfYWdlbnQuYzoKKworICAgUmVkdWNlIHZhcmlhYmxlIHNjb3BlCisKKzIwMTEtMDQtMjIgMDk6MDcgIG1hZ2ZyCisKKyAgICogYWdlbnQvc25tcF9hZ2VudC5jOgorCisgICBSZWR1Y2UgdmFyaWFibGUgc2NvcGVzCisKKzIwMTEtMDQtMjIgMDk6MDMgIG1hZ2ZyCisKKyAgICogYWdlbnQvc25tcF9hZ2VudC5jOgorCisgICBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCisKKzIwMTEtMDQtMTkgMDg6MzggIGJ2YXNzY2hlCisKKyAgICogd2luMzIvbGlic25tcC9saWJzbm1wLnZjcHJvaiwgd2luMzIvd2luMzIuc2xuOgorCisgICBBZGRlZCBWaXN1YWwgU3R1ZGlvIDIwMDUgcHJvamVjdCBhbmQgc29sdXRpb24gZmlsZSBmb3IgYnVpbGRpbmcKKyAgIHRoZSBOZXQtU05NUCBsaWJyYXJ5IGFzIGEgc3RhdGljIGxpYnJhcnkuIEJvdGggdGhlIFdpbjMyIGFuZCB0aGUKKyAgIHg2NCBjb25maWd1cmF0aW9ucyBhcmUgaW5jbHVkZWQuCisKKzIwMTEtMDQtMTkgMDc6NTcgIGJ2YXNzY2hlCisKKyAgICogd2luMzIvbGlic25tcDoKKworICAgVXBkYXRlZCBTdWJ2ZXJzaW9uIGlnbm9yZSBsaXN0LgorCisyMDExLTA0LTE5IDA3OjM5ICBidmFzc2NoZQorCisgICAqICB3aW4zMi9lbmNvZGVfa2V5Y2hhbmdlL2VuY29kZV9rZXljaGFuZ2UudmNwcm9qLCAgIAorICAgICAgd2luMzIvbGliYWdlbnQvbGliYWdlbnQudmNwcm9qLCAgIAorICAgICAgd2luMzIvbGlibmV0c25tcHRyYXBkL2xpYm5ldHNubXB0cmFwZC52Y3Byb2osICAgCisgICAgICB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC52Y3Byb2osICAgCisgICAgICB3aW4zMi9uZXRzbm1wbWlicy9uZXRzbm1wbWlicy52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wYnVsa2dldC9zbm1wYnVsa2dldC52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wYnVsa3dhbGsvc25tcGJ1bGt3YWxrLnZjcHJvaiwgd2luMzIvc25tcGQvc25tcGQudmNwcm9qLCAKKyAgICAgICAgd2luMzIvc25tcGRlbHRhL3NubXBkZWx0YS52Y3Byb2osIHdpbjMyL3NubXBkZi9zbm1wZGYudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcGdldC9zbm1wZ2V0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBuZXRzdGF0L3NubXBuZXRzdGF0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBzZXQvc25tcHNldC52Y3Byb2osIHdpbjMyL3NubXBzdGF0dXMvc25tcHN0YXR1cy52Y3Byb2osIAorICAgICAgICB3aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLnZjcHJvaiwKKyAgICAgIHdpbjMyL3NubXB0ZXN0L3NubXB0ZXN0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXB0cmFuc2xhdGUvc25tcHRyYW5zbGF0ZS52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC52Y3Byb2osIHdpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQudmNwcm9qLCAKKyAgICAgICAgd2luMzIvc25tcHVzbS9zbm1wdXNtLnZjcHJvaiwgd2luMzIvc25tcHZhY20vc25tcHZhY20udmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcHdhbGsvc25tcHdhbGsudmNwcm9qOgorCisgICBNb3JlIFZpc3VhbCBTdHVkaW8gMjAwNSBwcm9qZWN0IGZpbGUgY2xlYW51cC4KKworMjAxMS0wNC0xOSAwNjo1NyAgYnZhc3NjaGUKKworICAgKiB3aW4zMi9iaW46CisKKyAgIFVwZGF0ZWQgU3VidmVyc2lvbiBpZ25vcmUgbGlzdC4KKworMjAxMS0wNC0xOCAxNTozNCAgYnZhc3NjaGUKKworICAgKiAgd2luMzIvZW5jb2RlX2tleWNoYW5nZS9lbmNvZGVfa2V5Y2hhbmdlLnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBidWxrZ2V0L3NubXBidWxrZ2V0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBidWxrd2Fsay9zbm1wYnVsa3dhbGsudmNwcm9qLCB3aW4zMi9zbm1wZC9zbm1wZC52Y3Byb2osIAorICAgICAgICB3aW4zMi9zbm1wZGVsdGEvc25tcGRlbHRhLnZjcHJvaiwgd2luMzIvc25tcGRmL3NubXBkZi52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wZ2V0L3NubXBnZXQudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcGdldG5leHQvc25tcGdldG5leHQudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcG5ldHN0YXQvc25tcG5ldHN0YXQudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcHNldC9zbm1wc2V0LnZjcHJvaiwgd2luMzIvc25tcHN0YXR1cy9zbm1wc3RhdHVzLnZjcHJvaiwgCisgICAgICAgIHdpbjMyL3NubXB0YWJsZS9zbm1wdGFibGUudmNwcm9qLAorICAgICAgd2luMzIvc25tcHRlc3Qvc25tcHRlc3QudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcHRyYW5zbGF0ZS9zbm1wdHJhbnNsYXRlLnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXB0cmFwL3NubXB0cmFwLnZjcHJvaiwgd2luMzIvc25tcHRyYXBkL3NubXB0cmFwZC52Y3Byb2osIAorICAgICAgICB3aW4zMi9zbm1wdXNtL3NubXB1c20udmNwcm9qLCB3aW4zMi9zbm1wdmFjbS9zbm1wdmFjbS52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wd2Fsay9zbm1wd2Fsay52Y3Byb2o6CisKKyAgIENsZWFuZWQgdXAgV2luMzIgVlMyMDA1IHByb2plY3QgZmlsZXMgLSByZW1vdmVkIHN1cGVyZmx1b3VzCisgICBsaWJyYXJ5IHJlZmVyZW5jZXMuCisKKzIwMTEtMDQtMTggMTU6MjUgIGJ2YXNzY2hlCisKKyAgICogIHdpbjMyL2VuY29kZV9rZXljaGFuZ2UvZW5jb2RlX2tleWNoYW5nZS52Y3Byb2osICAgCisgICAgICB3aW4zMi9saWJhZ2VudC9saWJhZ2VudC52Y3Byb2osICAgCisgICAgICB3aW4zMi9saWJuZXRzbm1wdHJhcGQvbGlibmV0c25tcHRyYXBkLnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXBfZGxsLnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL25ldHNubXBtaWJzL25ldHNubXBtaWJzLnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBidWxrZ2V0L3NubXBidWxrZ2V0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBidWxrd2Fsay9zbm1wYnVsa3dhbGsudmNwcm9qLCB3aW4zMi9zbm1wZC9zbm1wZC52Y3Byb2osIAorICAgICAgICB3aW4zMi9zbm1wZGVsdGEvc25tcGRlbHRhLnZjcHJvaiwgd2luMzIvc25tcGRmL3NubXBkZi52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wZ2V0L3NubXBnZXQudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcGdldG5leHQvc25tcGdldG5leHQudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcG5ldHN0YXQvc25tcG5ldHN0YXQudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcHNldC9zbm1wc2V0LnZjcHJvaiwgd2luMzIvc25tcHN0YXR1cy9zbm1wc3RhdHVzLnZjcHJvaiwgCisgICAgICAgIHdpbjMyL3NubXB0YWJsZS9zbm1wdGFibGUudmNwcm9qLAorICAgICAgd2luMzIvc25tcHRlc3Qvc25tcHRlc3QudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcHRyYW5zbGF0ZS9zbm1wdHJhbnNsYXRlLnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXB0cmFwL3NubXB0cmFwLnZjcHJvaiwgd2luMzIvc25tcHRyYXBkL3NubXB0cmFwZC52Y3Byb2osIAorICAgICAgICB3aW4zMi9zbm1wdXNtL3NubXB1c20udmNwcm9qLCB3aW4zMi9zbm1wdmFjbS9zbm1wdmFjbS52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wd2Fsay9zbm1wd2Fsay52Y3Byb2osIHdpbjMyL3dpbjMyZGxsLnNsbjoKKworICAgQWRkZWQgeDY0IGNvbmZpZ3VyYXRpb25zLgorCisyMDExLTA0LTE4IDE1OjE0ICBidmFzc2NoZQorCisgICAqIHdpbjMyL2xpYjoKKworICAgQW5vdGhlciBXaW4zMi1yZWxhdGVkIFN1YnZlcnNpb24gaWdub3JlIGxpc3QgdXBkYXRlLgorCisyMDExLTA0LTE4IDE1OjEzICBidmFzc2NoZQorCisgICAqICB3aW4zMi9lbmNvZGVfa2V5Y2hhbmdlL2VuY29kZV9rZXljaGFuZ2UudmNwcm9qLCAgIAorICAgICAgd2luMzIvbGliYWdlbnQvbGliYWdlbnQudmNwcm9qLCAgIAorICAgICAgd2luMzIvbGlibmV0c25tcHRyYXBkL2xpYm5ldHNubXB0cmFwZC52Y3Byb2osICAgCisgICAgICB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC52Y3Byb2osICAgCisgICAgICB3aW4zMi9uZXRzbm1wbWlicy9uZXRzbm1wbWlicy52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wYnVsa2dldC9zbm1wYnVsa2dldC52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wYnVsa3dhbGsvc25tcGJ1bGt3YWxrLnZjcHJvaiwgd2luMzIvc25tcGQvc25tcGQudmNwcm9qLCAKKyAgICAgICAgd2luMzIvc25tcGRlbHRhL3NubXBkZWx0YS52Y3Byb2osIHdpbjMyL3NubXBkZi9zbm1wZGYudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcGdldC9zbm1wZ2V0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBuZXRzdGF0L3NubXBuZXRzdGF0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBzZXQvc25tcHNldC52Y3Byb2osIHdpbjMyL3NubXBzdGF0dXMvc25tcHN0YXR1cy52Y3Byb2osIAorICAgICAgICB3aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLnZjcHJvaiwKKyAgICAgIHdpbjMyL3NubXB0ZXN0L3NubXB0ZXN0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXB0cmFuc2xhdGUvc25tcHRyYW5zbGF0ZS52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC52Y3Byb2osIHdpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQudmNwcm9qLCAKKyAgICAgICAgd2luMzIvc25tcHVzbS9zbm1wdXNtLnZjcHJvaiwgd2luMzIvc25tcHZhY20vc25tcHZhY20udmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcHdhbGsvc25tcHdhbGsudmNwcm9qLCB3aW4zMi93aW4zMmRsbC5zbG46CisKKyAgIEFkZGVkIHdpbjMyZGxsLXJlbGF0ZWQgVmlzdWFsIFN0dWRpbyAyMDA1IHByb2plY3QgYW5kIHNvbHV0aW9uCisgICBmaWxlcy4KKworMjAxMS0wNC0xOCAxMzozNyAgYnZhc3NjaGUKKworICAgKiAgd2luMzIsIHdpbjMyL2VuY29kZV9rZXljaGFuZ2UsIHdpbjMyL2xpYiwgd2luMzIvbGliYWdlbnQsICAgCisgICAgICB3aW4zMi9saWJuZXRzbm1wdHJhcGQsIHdpbjMyL2xpYnNubXAsIHdpbjMyL2xpYnNubXBfZGxsLCAgIAorICAgICAgd2luMzIvbGlidWNkbWlicywgd2luMzIvbmV0LXNubXAsIHdpbjMyL25ldHNubXBtaWJzLCAgIAorICAgICAgd2luMzIvc25tcGJ1bGtnZXQsIHdpbjMyL3NubXBidWxrd2Fsaywgd2luMzIvc25tcGQsICAgCisgICAgICB3aW4zMi9zbm1wZGVsdGEsIHdpbjMyL3NubXBkZiwgd2luMzIvc25tcGdldCwgd2luMzIvc25tcGdldG5leHQsICAKKyAgICAgICB3aW4zMi9zbm1wbmV0c3RhdCwgd2luMzIvc25tcHNldCwgd2luMzIvc25tcHN0YXR1cywgICAKKyAgICAgIHdpbjMyL3NubXB0YWJsZSwgd2luMzIvc25tcHRlc3QsIHdpbjMyL3NubXB0cmFuc2xhdGUsICAgCisgICAgICB3aW4zMi9zbm1wdHJhcCwgd2luMzIvc25tcHRyYXBkLCB3aW4zMi9zbm1wdXNtLCB3aW4zMi9zbm1wdmFjbSwgICAKKyAgICAgIHdpbjMyL3NubXB3YWxrOgorCisgICBBZGRlZCAqLnZjcHJvai4qLnVzZXIgYW5kIHg2NCB0byB0aGUgd2luMzIgU3VidmVyc2lvbiBpZ25vcmUKKyAgIGxpc3RzLiBSYW4gdGhlc2UgdGhyb3VnaCBMQ19BTEw9QyBzb3J0IC1mdSB0b28uCisKKzIwMTEtMDQtMTggMTI6MTAgIGJ2YXNzY2hlCisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaDoKKworICAgV2luMzIgRExMIGJ1aWxkIGZpeGVzLgorCisyMDExLTA0LTE3IDIwOjU2ICBkdHMxMgorCisgICAqICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAzMTc1NjQwOiBVc2UgSVBfUkVDVkRTVEFERFIgc29ja29wdAorICAgd2hlcmUgYXZhaWxhYmxlICgqQlNEKQorCisyMDExLTA0LTE1IDEzOjQyICBkdHMxMgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzE4MzAwMDogRml4IGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQKKyAgIHByZWZpeCBsZW5ndGgKKyAgIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6IDMxODI5ODU6IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lECisgICBwcmVmaXggbGVuZ3RoCisKKzIwMTEtMDQtMTUgMTM6MTcgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jLCBhcHBzL3NubXB0cmFwZF9kcy5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oLCBtYW4vc25tcGQuY29uZi41LmRlZjoKKworICAgQ0hBTkdFUzogTGludXg6IFBBVENIRVM6IDMyMDU4MTE6IE9wdGlvbiB0byBza2lwIGZkL2xvb3AvcmFtCisgICBkZXZpY2VzIGluIGRpc2tJT1RhYmxlCisKKzIwMTEtMDQtMTQgMjE6MzEgIGR0czEyCisKKyAgICogcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzoKKworICAgQ0hBTkdFUzogcHl0aG9uOiBQQVRDSEVTOiAzMTg1MDg1OiBGaXggc2VnZmF1bHQgb24gNjQtYml0IHN5c3RlbXMKKworMjAxMS0wNC0xNCAyMToxMCAgZHRzMTIKKworICAgKiBsb2NhbC9taWIyYzoKKworICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMxNzUzMjM6IEZpeCBoYW5kbGluZyBvZiAnd2hpbGUgKGZhbHNlKScKKyAgIGJsb2NrcworCisyMDExLTA0LTE0IDIwOjUyICBkdHMxMgorCisgICAqIGxvY2FsL21pYjJjOgorCisgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzIwNDg4MzogRml4IGhhbmRsaW5nIG9mIG5vbi10YWJsZQorICAgb2JqZWN0cyBuYW1lZCBmb29UYWJsZQorCisyMDExLTA0LTE0IDIwOjQ0ICBkdHMxMgorCisgICAqIGxvY2FsL21pYjJjOgorCisgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzIxMTQ4NDogU3VwcG9ydCBlbnVtZXJhdGlvbnMgaW4KKyAgIG5vdGlmaWNhdGlvbiB2YXJiaW5kcworCisyMDExLTA0LTEyIDIwOjAxICBuYmEKKworICAgKiBtaWJzL1VDRC1TTk1QLU1JQi50eHQ6CisKKyAgIEFkZCBtaXNzaW5nIHN5c3RlbSBvaWRzIHRvIG1pYgorCisyMDExLTA0LTEyIDE5OjUzICBuYmEKKworICAgKiBhcHBzL3NubXB0YWJsZS5jOgorCisgICBGaXggZm9yIGdhcmJhZ2Ugb3V0cHV0IHdoZW4gYWdlbnQgcHJlc2VudHMgbW9yZSBjb2x1bW5zIGluIGJ1bGsKKyAgIHJlc3BvbnNlIHRoYW4gb3VyIGxvY2FsIE1JQiBmaWxlIHNwZWNpZmllZC4KKworMjAxMS0wNC0xMiAxOTo1MCAgbmJhCisKKyAgICogbWFuL3NubXB0cmFwZC44LmRlZjoKKworICAgRml4IHdyb25nIG5hbWUgZm9yIGNvbmZpZyB0b2tlbiAnZG9Ob3RSZXRhaW5Ob3RpZmljYXRpb25Mb2dzJworCisyMDExLTA0LTA5IDIxOjU5ICBuYmEKKworICAgKiBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmM6CisKKyAgIFJlbW92ZSBib2d1cyAoTGludXgpIGRlZmluZXMKKworMjAxMS0wNC0wOSAyMTo1NiAgbmJhCisKKyAgICogc25tcGxpYi9zbm1wLXRjLmM6CisKKyAgIEhBVkVfVE1fVE1fR01UT0ZGIGlzIEhBVkVfU1RSVUNUX1RNX1RNX0dNVE9GRgorCisyMDExLTA0LTA5IDIwOjA4ICBuYmEKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmgsIGNvbmZpZ3VyZSwgCisgICAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIEJpbGwgRmVubmVycyBwYXRjaCB0byBtYWtlIERJU01BTiBQSU5HIGFuZCBUUkFDRVJPVVRFIE1JQlMKKyAgIGNvbXBpbGUgdW5kZXIgTGludXgKKworMjAxMS0wNC0wOSAyMDowNCAgbmJhCisKKyAgICogIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYywgYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmM6CisKKyAgIFNvbGFyaXMgc3VwcG9ydCBmb3IgU0NUUC1NSUIKKworMjAxMS0wNC0wOSAxOTo1MCAgbmJhCisKKyAgICogc25tcGxpYi9zbm1wLXRjLmM6CisKKyAgIFRaIGlzIG9uZSBob3VyIG9mZiBpZiBIQVZFX1RNX1RNX0dNVE9GRiBhbmQgU1lTViAoc3VjaCBpcyBMaW51eCkKKworMjAxMS0wNC0wMSAwMToxMSAgcnN0b3J5CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IGR0bHM6IG92ZXJoYXVsIG9mIGRlYnVnCisgICAKKyAgIC0gZHJhc3RpYyByZWR1Y3Rpb24gaW4gbnVtYmVyIG9mIG1lc3NhZ2VzIGFuZCBtc2cgY29tcGxleGl0eQorICAgZm9yIGJhc2ljIGR0bHN1ZHAgdG9rZW4KKyAgIC0gcHJldmlvdXMgbGV2ZWwgb2YgZGV0YWlsIGF2YWlsYWJsZSBieSBhZGRpbmcgOTpkdGxzZHVwIHRva2VuCisKKzIwMTEtMDQtMDEgMDA6NTMgIHJzdG9yeQorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBkdGxzOiBjbGVhbiB1cCBjbG9zZTsgY2F0Y2gKKyAgICdjb25uZWN0Jy8nZGlzY29ubmVjdCcKKyAgIAorICAgY29ubmVjdCA9IHdlIGdldCBzdWNjZXNzZnVsbHkgZGVjb2RlZCBzbm1wIGRhdGEKKyAgIGRpc2Nvbm5lY3QgPSAwIGJ5dGUgcmVhZCwgc3NoIHNodXRkb3duIGZsYWcgc2V0CisgICBhZGQgYmlvX2NhY2hlIGZsYWdzIGZvciBjb25uZWN0ZWQvZGlzY29ubmVjdGVkCisgICBjaGVjayBmb3IgbnVsbCBwdHIgYmVmb3JlIGRlcmVmZXJlbmNpbmcKKyAgIGNsb3NlIGhhbmRsaW5nOgorICAgLSBvbmx5IHNlbmQgcXVldWVkIGRhdGEgaWYgd2UgZ290IHRvIGNvbm5lY3RlZCBzdGF0ZQorICAgLSBzZXJpb3VzbHkgcmVkdWNlIHRpbWVvdXQgdG8gd2FpdCBmb3IganVuayByZWFkLiBpIHRoaW5rCisgICB3ZSBzaG91bGRuJ3QgZXZlbiBib3RoZXIKKyAgIC0gcmV0dXJuIGVhcmx5IGlmIGNhY2hlcCBpcyBOVUxMLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHRlc3QgaXQKKyAgIHJlcGVhdGVkbHkKKyAgIC0gdXNlIGNvcnJlY3QgbmZkcyB2YWx1ZSBpbiBzZWxlY3QgY2FsbAorCisyMDExLTAzLTMxIDA1OjE3ICByc3RvcnkKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzoKKworICAgbWFrZSB0cnVuayBhbmQgdjUtNi1wYXRjaGVzIGNsb3NlbHkgYWxpZ25lZAorICAgCisgICBtb3N0bHkgY2hhbmdlcyBpbiBkZWJ1ZywgY29va2llIHRyYWNraW5nCisKKzIwMTEtMDMtMjcgMTE6MDggIG1hZ2ZyCisKKyAgICogc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmM6CisKKyAgIFNpbXBsaWZ5IGFycmF5IHJlc2l6aW5nIHNvbWV3aGF0IGZ1cnRoZXIKKworMjAxMS0wMy0yNyAxMDoyMSAgbWFnZnIKKworICAgKiBzbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYzoKKworICAgRG8gbm90IGFzc2lnbiBuZXdfZGF0YSBpZiB0aGUgdmFsdWUgd29uJ3QgYmUgdXNlZC4KKyAgIFJlZHVjZSB2YXJpYWJsZSBzY29wZXMuCisKKzIwMTEtMDMtMjcgMTA6MTQgIG1hZ2ZyCisKKyAgICogc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmM6CisKKyAgIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY2xlYXIgYSBjaHVuayBvZiBtZW1vcnkgaWYgdGhlIG5leHQgYWN0aW9uCisgICBvbiBpdCBpcyB0bworICAgZmlsbCBpdCBzbyB1c2UgbWFsbG9jIGluc3RlYWQgb2YgY2FsbG9jLgorCisyMDExLTAzLTI3IDEwOjA5ICBtYWdmcgorCisgICAqIHNubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jOgorCisgICBDb250YWluZXJCaW5hcnlBcnJheSByZWFsbHkgY2FuJ3QgaG9sZCBhbnl0aG5nIGJ1dCBwb2ludGVycyBhbmQKKyAgIHRoYXQgbWVhbnMgdGhlCisgICBkYXRhX3NpemUgZmllbGQgaXMgdW5uZWNlc3Nhcnkgc28gSSByZW1vdmVkIGl0LgorCisyMDExLTAzLTI2IDE5OjU1ICBtYWdmcgorCisgICAqICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvaHdfbWVtLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYywgYXBwcy9zbm1wdHJhcGQuYywgICAKKyAgICAgIHNubXBsaWIvaW50NjQuYywgc25tcGxpYi9zbm1wX29wZW5zc2wuYywgc25tcGxpYi9zbm1wX3NlY21vZC5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wdjMuYzoKKworICAgQWRkIG1pc3NpbmcgaW5jbHVkZQorCisyMDExLTAzLTI2IDA4OjA3ICBtYWdmcgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOgorCisgICBVc2UgdGhlIHJpZ2h0IGZlYXR1cmUgbWFjcm8gaW4gb3JkZXIgdG8gbWFrZSBidWlsZHMgd2l0aAorICAgLS1lbmFibGUtaXB2NiAtLXdpdGgtb3V0LXRyYW5zcG9ydHM9VURQSVB2NiBzdWNjZWVkLgorCisyMDExLTAzLTI2IDA4OjAyICBtYWdmcgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOgorCisgICBSZW1vdmUgZHVwbGljYXRlIGNvcGllcyBvZiBmdW5jdGlvbnMKKworMjAxMS0wMy0yNSAyMDozNSAgcnN0b3J5CisKKyAgICogbG9jYWwvbmV0LXNubXAtY2VydDoKKworICAgdHdlYWsgZGVidWcgbWVzc2FnZQorCisyMDExLTAzLTI1IDIwOjMyICByc3RvcnkKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogdXBkYXRlIGNlcnQgdG9rZW4gaGFuZGxpbmcKKyAgIAorICAgLSByZW1vdmUgZGVmWDUwOSBjZXJ0IHRva2VucyAoc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIGJlZm9yZQorICAgNS42KQorICAgLSB3YXJuaW5ncyBmb3Igb3VyL3RoZWlyIHRva2VucywgcmVjb21tZW5kIHVzaW5nIGxvY2FsL3BlZXIKKworMjAxMS0wMy0yNSAyMDozMSAgcnN0b3J5CisKKyAgICogIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmM6CisKKyAgIG1lcmdlIG5ldHNubXBfZHRsc3VkcDYgaW50byBuZXRzbm1wX2R0bHN1ZHAKKyAgIAorICAgdXNlIGFkZHIgc2l6ZSB0byB0ZWxsIHRoZW0gYXBhcnQKKworMjAxMS0wMy0yNSAyMDozMSAgcnN0b3J5CisKKyAgICogc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jOgorCisgICBsb2cgKG9uY2UpIHdhcm5pbmcgd2hlbiBkZXByZWNhdGVkIGZfY3JlYXRlX2Zyb21fdHN0cmluZworICAgdHJhbnNwb3J0IGZ1bmN0aW9uIHVzZWQKKworMjAxMS0wMy0yNSAyMDozMCAgcnN0b3J5CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4uYzoKKworICAgcmVkdWNlIGNhc3Rpbmc7IG1ha2Ugc3VyZSB0byBmcmVlIHRoZSByaWdodCBwb2ludGVyCisKKzIwMTEtMDMtMjUgMjA6MjkgIHJzdG9yeQorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jOgorCisgICByZWR1Y2UgY2FzdGluZworCisyMDExLTAzLTI0IDA2OjE5ICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmM6CisKKyAgIFJlcGxhY2UgYSB2YXJpYWJsZSB3aXRoIGEgY29uc3RhbnQuIE1ha2Ugb25lIG1vcmUgb2lkIGNvbnN0LgorCisyMDExLTAzLTE3IDIxOjA5ICBuYmEKKworICAgKiBtYW4vc25tcGRlbHRhLjEuZGVmOgorCisgICBGb3JtYXR0aW5nIGJvdGNoCisKKzIwMTEtMDMtMTcgMjE6MDcgIG5iYQorCisgICAqIG1pYnMvTWFrZWZpbGUuaW46CisKKyAgIEluc3RhbGwgcmVxdWlyZWQgbWlicworCisyMDExLTAzLTE3IDIxOjA1ICBuYmEKKworICAgKiBtaWJzL3JmY2xpc3Q6CisKKyAgIE5ldyBSRkMgbWlicworCisyMDExLTAzLTE1IDEwOjMxICBidmFzc2NoZQorCisgICAqIHNubXBsaWIvY2VydF91dGlsLmM6CisKKyAgIFNwZWxsaW5nIGZpeDogcmVnaW5lcmF0ZWQgLT4gcmVnZW5lcmF0ZWQuCisKKzIwMTEtMDMtMTUgMTA6MTkgIGJ2YXNzY2hlCisKKyAgICogc25tcGxpYi9jZXJ0X3V0aWwuYzoKKworICAgU2ltcGxpZmllZCByMTk1OTQgKGxlYWstYXQtZXhpdCBmaXgpLgorCisyMDExLTAzLTE1IDA5OjU5ICBidmFzc2NoZQorCisgICAqIHNubXBsaWIvc25tcF9vcGVuc3NsLmM6CisKKyAgIEZpeGVkIGEgY29tcGlsZXIgd2FybmluZyB0aGF0IHdhcyBpbnRyb2R1Y2VkIGluIHIyMDExMy4KKworMjAxMS0wMy0xNCAwOTozMSAgZHRzMTIKKworICAgKiBhZ2VudC9zbm1wZC5jOgorCisgICBGaXggbWFpbiBhZ2VudCBzZWxlY3QgY2FsbCB0byB1c2UgdGhlIHJlbmFtZWQgQVBJIHJvdXRpbmUuCisKKzIwMTEtMDMtMTMgMjA6MDkgIGR0czEyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oLCBzbm1wbGliL2xhcmdlX2ZkX3NldC5jOgorCisgICBCcmluZyB0aGUgbmFtaW5nIG9mIHRoZSBsYXJnZV9mZF9zZXQgc2VsZWN0IGNhbGwgaW50bworICAgbGluZSB3aXRoIHRoZSByZXN0IG9mIHRoZSBBUEkuCisKKzIwMTEtMDMtMTIgMDY6NTkgIHJzdG9yeQorCisgICAqIHNubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiByZWFsbG9jK2luaXQgaW5zdGVhZCBvZiBjYWxsb2MKKyAgIAorICAgaW5zcGlyZWQgYnkgcGF0Y2ggMzE5NTUzMiBmcm9tIFN0ZXBoZW4gSGVtbWluZ2VyCisKKzIwMTEtMDMtMTIgMDU6NDcgIHJzdG9yeQorCisgICAqICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9jb21tb24uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IG9wdGltaXphdGlvbnMgZm9yIGxhcmdlIHJvdXRlIHRhYmxlcyBmcm9tCisgICBTdGVwaGVuIEhlbW1pbmdlcgorICAgCisgICBhcHBsaWVkIHBhcnRzIDEtMyBvZiA0IGZyb20gaGltIChtc2dzIHRvIGNvZGVycyBvbiAyLzI4LzExOworICAgc3ViamVjdAorICAgaXAtZm9yd2FyZC1taWIgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzOyBwYXJ0IDQgbmVlZHMgbW9yZSB3b3JrCisKKzIwMTEtMDMtMTEgMTQ6NDMgIHJzdG9yeQorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBhZGQgbW9yZSBvcGVuc3NsIGVycm9yIGNhc2VzIHdoZXJlIHdlIGNoZWNrIGZvcgorICAgbG9jYWwgY2VydAorCisyMDExLTAzLTExIDEyOjAxICBidmFzc2NoZQorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYzoKKworICAgTWluR1c6IGRza1RhYmxlOiBSZXBvcnQgemVybyBmb3IgdW5pbXBsZW1lbnRlZCBmaWVsZHMgaW5zdGVhZCBvZgorICAgcmFuZG9tIGRhdGEuCisKKzIwMTEtMDMtMTEgMDg6NDIgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogQnVpbGRzIHdpdGggbW9zdCByZWNlbnQgTWluR1cgKGhhdmluZyAjZGVmaW5lCisgICBsb2NhbHRpbWVfcikuCisKKzIwMTEtMDMtMTEgMDM6MDggIHJzdG9yeQorCisgICAqIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvc25tcF9vcGVuc3NsLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IHJlZmluZSBjZXJ0IGRlYnVnZ2luZzsgcmVtb3ZlIHVudXNlZCBmdW5jdGlvbgorCisyMDExLTAzLTEwIDIxOjIxICByc3RvcnkKKworICAgKiBzbm1wbGliL2NlcnRfdXRpbC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzMjA1NzY1OiBoYW5kbGUgcmVjb25maWcgZm9yIGNlcnRTZWNOYW1lCisgICB0b2tlbgorCisyMDExLTAzLTEwIDIwOjAxICBidmFzc2NoZQorCisgICAqIGFnZW50L3NubXBkLmM6CisKKyAgIFNwZWxsaW5nIGZpeCBpbiBhIHNvdXJjZSBjb2RlIGNvbW1lbnQ6IG1lc3NnZXMgLT4gbWVzc2FnZXMuCisKKzIwMTEtMDMtMTAgMTk6NTUgIGJ2YXNzY2hlCisKKyAgICogc25tcGxpYi9sYXJnZV9mZF9zZXQuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDMyMDM4MDY6IE1pbm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbgorICAgb2YgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKCkuCisKKzIwMTEtMDMtMTAgMTk6NDggIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvc25tcGQuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAzMjAzODA2OiBBdm9pZCB0aGF0IHRoZSBtYWluIGFnZW50CisgICBwcm9jZXNzaW5nIGxvb3AgLSB3aGVuIHVzaW5nIG1vcmUgdGhhbiBGRF9TRVRTSVpFIGZpbGUKKyAgIGRlc2NyaXB0b3JzIC0gY2FuIGNhdXNlIG1lbW9yeSBjb3JydXB0aW9uIGJ5IGludm9raW5nIHNlbGVjdCgpLgorCisyMDExLTAzLTEwIDE5OjQzICBidmFzc2NoZQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaCwgc25tcGxpYi9sYXJnZV9mZF9zZXQuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDMyMDM4MDY6IEFkZCB0aGUgZnVuY3Rpb24KKyAgIG5ldHNubXBfbGFyZ2Vfc2VsZWN0KCkuCisKKzIwMTEtMDMtMTAgMTg6NTUgIGJ2YXNzY2hlCisKKyAgICogIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvY2xpYl9idWlsZCwgICAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwOWxhcmdlX2ZkX3NldF9jbGliLmM6CisKKyAgIEFkZGVkIGEgbWluaW1hbCB1bml0IHRlc3QgZm9yIG5ldHNubXBfbGFyZ2VfZmRfc2V0LgorCisyMDExLTAzLTEwIDE4OjUyICBidmFzc2NoZQorCisgICAqIHNubXBsaWIvbGFyZ2VfZmRfc2V0LmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAzMjAzODA2OiBNYWtlCisgICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKSBjbGVhciBhbGwgcmVsZXZhbnQgZmlsZQorICAgZGVzY3JpcHRvcnMuCisKKzIwMTEtMDMtMTAgMTU6NTEgIGR0czEyCisKKyAgICogc25tcGxpYi9zbm1wLXRjLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDMxNzgzODk6IEZpeCBpbmNvbnNpc3RlbnQgaGFuZGxpbmcgb2YgVFoKKyAgIG9mZnNldHMKKworMjAxMS0wMy0xMCAxNTo0MCAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZSwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZToKKworICAgSWdub3JlIG9iamVjdCBmaWxlcyBhbmQgbGlicmFyaWVzCisKKzIwMTEtMDMtMTAgMTU6MDUgIGR0czEyCisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzOgorCisgICBJZ25vcmUgb2JqZWN0IGZpbGVzIGFuZCBsaWJyYXJpZXMKKworMjAxMS0wMy0xMCAxNDozMiAgaGFyZGFrZXIKKworICAgKiBhcHBzL01ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMjoKKworICAgbWFrZSB2YXJpYWJsZSBuYW1lcyBtYXRjaAorCisyMDExLTAzLTEwIDE0OjI4ICBidmFzc2NoZQorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5jOgorCisgICBGaXhlZCB0d28gY29tcGlsZXIgd2FybmluZ3MuCisKKzIwMTEtMDMtMTAgMTQ6MjQgIGhhcmRha2VyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczI6CisKKyAgIGZpeGVkIGluc3RhbGxhdGlvbiB2YXJpYWJsZXMgZm9yIHRoZSBvcHRpb25hbCBTRVQgcHJvZ3JhbXMKKworMjAxMS0wMy0wOCAwMDo1MyAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3JlbW92ZS11bm5lZWRlZC1tb2R1bGVzOgorCisgICBjaG1vZCBhK3gKKworMjAxMS0wMy0wOCAwMDoxNSAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3JlbW92ZWlmZGVmY29kZS5wbDoKKworICAgcHJpbnQgYW4gZXJyb3IgaWYgdGhlIGVuZCBvZiBhIGZpbGUgd2FzIHJlYWNoZWQgYW5kIHdlJ3JlIG5vdAorICAgYmFjaworICAgaW50byB0aGUgc3RhdGUgd2UgY2FuIHdyaXRlOyBvdGhlcndpc2UgYSBjbG9zaW5nICNpZmRlZiBpcworICAgbWlzc2luZy4KKworMjAxMS0wMy0wOCAwMDoxNSAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4uYzoKKworICAgZml4IGVuZGlmIGNvbW1lbnQgdG8gbWF0Y2ggdGhlIG9wZW5pbmcgaWZkZWYKKworMjAxMS0wMy0wOCAwMDoxNSAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3JlbW92ZWlmZGVmY29kZS5wbDoKKworICAgcmVzZXQgdGhlIGNhbndyaXRlIGZsYWcgZm9yIGV2ZXJ5IGZpbGUKKworMjAxMS0wMy0wOCAwMDoxNSAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3JlbW92ZS11bm5lZWRlZC1tb2R1bGVzOgorCisgICB0ZW1wb3JhcmlseSBsZWF2ZSBpbiBoZWFkZXIgZmlsZXMKKworMjAxMS0wMy0wOCAwMDoxNCAgaGFyZGFrZXIKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKKworICAgY2hhbmdlIHRoZSB1bmlxdWUgZmlsZSBjaGVjayB0byBvbmUgdGhhdCBpcyBub3QgaW4gdGhlIG1pYmdyb3VwCisgICBkaXJlY3RvcnkKKworMjAxMS0wMy0wOCAwMDoxNCAgaGFyZGFrZXIKKworICAgKiAgdGVzdGluZy9mdWxsdGVzdHMvcmVhZC1vbmx5LCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvcmVhZC1vbmx5L1QwMTQxc25tcHYyY3NldGZhaWxfc2ltcGxlOgorCisgICBhIHRlc3QgZm9yIGVuc3VyaW5nIHRoZSBhZ2VudCByZWplY3RzIFNFVCByZXF1ZXN0cyB3aXRoCisgICAtLWVuYWJsZS1yZWFkLW9ubHkKKworMjAxMS0wMy0wOCAwMDoxNCAgaGFyZGFrZXIKKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMTQxc25tcHYyY3NldF9zaW1wbGU6CisKKyAgIGFkZCBiYWNrIGluIHRoZSBzdG9wYWdlbnQgY29tbWFuZAorCisyMDExLTAzLTA4IDAwOjE0ICBoYXJkYWtlcgorCisgICAqICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QxMDFwZHVfdHlwZV9jbGliLmMsICAgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QxMDJwZHVfYnVpbGRfY2xpYi5jLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMTAzcGR1X3BhcnNlX2NsaWIuYzoKKworICAgdW5pdCB0ZXN0cyB3cml0ZW4gZm9yIHRoZSByZWFkLW9ubHkgc3VwcG9ydCBjb252ZXJ0ZWQgdG8gd29yaworICAgd2l0aCBvciB3aXRob3V0IHJlYWQtb25seQorCisyMDExLTAzLTA4IDAwOjEzICBoYXJkYWtlcgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAxNDFzbm1wdjJjc2V0X3NpbXBsZToKKworICAgZG9uJ3QgcnVuIHRoZSBzZXQgdGVzdCBpZiBub193cml0ZV9zdXBwb3J0IGlzIHR1cm5lZCBvbgorCisyMDExLTAzLTA4IDAwOjEzICBoYXJkYWtlcgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAzMHNubXB2M3VzZXJjcmVhdGlvbl9zaW1wbGU6CisKKyAgIHNraXAgaWYgbm9fd3JpdGVfc3VwcG9ydAorCisyMDExLTAzLTA4IDAwOjEzICBoYXJkYWtlcgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAxNDFzbm1wdjJjc2V0X3NpbXBsZToKKworICAgQSBuZXcgdGVzdCB0byBjaGVjayB3aGV0aGVyIFNOTVB2MmMgU0VUcyB0byBzeXNDb250YWN0IHdvcmsgYXMKKyAgIGV4cGVjdGVkCisKKzIwMTEtMDMtMDggMDA6MTMgIGhhcmRha2VyCisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9TdmFueWNvbmZpZzoKKworICAgYWxsb3cgZm9yIHYyYyBTRVQgc3VwcG9ydCB0ZXN0aW5nCisKKzIwMTEtMDMtMDggMDA6MTIgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmM6CisKKyAgIEFsbG93IGZvciBzaW5nbGUgcXVvdGVzIGZvciB2YWNtIGNvbnRleHQgbmFtZSBxdW90aW5nIHRvbworCisyMDExLTAzLTA3IDE5OjE5ICBoYXJkYWtlcgorCisgICAqIGNvbmZpZ3VyZToKKworICAgZml4IHRoZSBjb25maWd1cmUgdGVzdHMgdG8gaW5jbHVkZSB0aGUgd29yZCB0ZXN0IGluIHRoZSB0ZXN0CisKKzIwMTEtMDMtMDcgMTk6MTggIGhhcmRha2VyCisKKyAgICogY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyOgorCisgICBmaXggdGhlIGNvbmZpZ3VyZSB0ZXN0cyB0byBpbmNsdWRlIHRoZSB3b3JkIHRlc3QgaW4gdGhlIHRlc3QKKworMjAxMS0wMy0wNyAxOToxOCAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3JlbW92ZS11bm5lZWRlZC1tb2R1bGVzOgorCisgICBBZGRlZCBhbiBhbm5veWluZ2x5IGxvbmcgbGlzdCBvZiBleGNlcHRpb25zIHRoYXQgbmVlZHMgdG8gYmUKKyAgIGF1dG9tYXRlZAorCisyMDExLTAzLTA3IDE5OjE4ICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvcmVtb3ZlLXVubmVlZGVkLW1vZHVsZXM6CisKKyAgIEEgcXVpY2sgcGVybCBzY3JpcHQgdG8gcmVtb3ZlIHVubmVlZGVkIGNvZGUgbW9kdWxlcyBmcm9tIHRoZQorICAgbW9kdWxlcyBkaXJlY3RvcnkKKworMjAxMS0wMy0wNyAxOToxOCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUFkZHJUYWJsZS9zbm1wVGxzdG1BZGRyVGFibGUuYywgCisgICAgICAgIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvc25tcHVzbS5jLCBzbm1wbGliL3ZhY20uYzoKKworICAgbW9yZSBpbXByb3ZlbWVudHMgKHJlbW92ZW1lbnRzKSBmb3IgZmVhdHVyaXphdGlvbiBhbmQgcmVhZC1vbmx5CisgICBzdXBwb3J0CisKKzIwMTEtMDMtMDcgMTc6MTkgIGJ2YXNzY2hlCisKKyAgICogc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAzMTk1NTM3OiBNaW5vciBiaW5hcnlfYXJyYXkgY29udGFpbmVyCisgICBzb3J0IG9wdGltaXphdGlvbgorCisyMDExLTAzLTA2IDE5OjQ3ICBuYmEKKworICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYzoKKworICAgVGFicyB0byBzcGFjZXMKKworMjAxMS0wMy0wNiAxMToyOCAgbmJhCisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9uczoKKworICAgQ29uZmlndXJlIGNoZWNrIGZvciBnZXRob3N0bmFtZTIKKyAgIFVzZSBnZXRhZGRyaW5mbyBpZiBhdmFpbGFibGUuIE5vdyB3b3JrcyBmb3IgU29sYXJpcyAoYW5kCisgICBXaW5kb3dzPykKKworMjAxMS0wMy0wNSAxOToxNiAgbWFnZnIKKworICAgKiBhcHBzL3NubXB0ZXN0LmM6CisKKyAgIEFkZCBkcm9wcGVkIHx8J3MgZnJvbSByMjAwNzIKKworMjAxMS0wMy0wNSAxMjo1MCAgbmJhCisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwUmVzdWx0c1RhYmxlLmM6CisKKyAgIENsZWFuIHVwLCBhbmQgY29zb2xpZGF0ZSByZXN1bHQgdGFibGUgcm93IGNyZWF0aW9uIGludG8gYSBuZXcKKyAgIGZ1bmN0aW9uLgorICAgU2F2ZXMgMjAwIGxpbmVzIG9mIGNvZGUsIHdpdGggKGhvcGVmdWxseSkgbm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2UKKworMjAxMS0wMy0wNSAwNjoxNyAgaGFyZGFrZXIKKworICAgKiAgYXBwcy9NYWtlZmlsZS5pbiwgYXBwcy9zbm1wdGVzdC5jLCBjb25maWd1cmUsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczI6CisKKyAgIGRvbid0IGJ1aWxkIFNFVCByZWxhdGVkIGFwcHMgd2l0aCAtLWVuYWJsZS1yZWFkLW9ubHkKKworMjAxMS0wMy0wNSAwNjoxNiAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvaGVscGVycy9iYWJ5X3N0ZXBzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jLCBhZ2VudC9taWJncm91cC9taWJJSS91cGRhdGVzLmMsICAKKyAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0LmMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oLCBzbm1wbGliL3NubXBfY2xpZW50LmM6CisKKyAgIGZpeCBpc3N1ZXMgd2l0aCBjb21iaW5pbmcgLS1lbmFibGUtbWluaW1hbGlzdCBhbmQKKyAgIC0tZW5hYmxlLXJlYWQtb25seQorCisyMDExLTAzLTA1IDA2OjE2ICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmluZC11bnVzZWQtY29kZToKKworICAgYmV0dGVyIG91dHB1dCBmb3IgZmluZGluZyBvYmplY3Qgc3ltYm9scy4KKworMjAxMS0wMy0wNCAyMTo1NiAgYmFlcm0KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3JlbW92ZWlmZGVmY29kZS5wbDoKKworICAgbGFzdCBjb21taXQ6IGNoYW5nZXMgdG8gYWxsb3cgcGFyc2luZyBvZiBmZWF0dWVycyBmaWxlcyB0byBnZXQKKyAgIGFsbCBtaW5pbWFsaXN0IHRhZ3Mgd2hpY2ggYXJlIHRoZW4gcHJvY2Vzc2VkIGZvciByZW1vdmFsCisgICAKKyAgIHRoaXMgY29tbWl0OiBjaGFuZ2VkIGNvbW1lbnRzL3doaXRlIHNwYWNlCisKKzIwMTEtMDMtMDQgMTk6MjcgIGJhZXJtCisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmM6CisKKyAgIGFkZGVkIG5vX3dyaXRlIHN1cHBvcnQgdG8gZXh0ZW5kLmMKKworMjAxMS0wMy0wNCAxOToyNiAgYmFlcm0KKworICAgKiBhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmM6CisKKyAgIEFkZGVkIG1pc3NpbmcgI2VuZGlmIGNvbW1lbnQgZm9yIHJlbW92ZSBpZmRlZiBjb2RlIHN1cHBvcnQKKworMjAxMS0wMy0wNCAxOToyNCAgYmFlcm0KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3JlbW92ZWlmZGVmY29kZS5wbDoKKworICAgYWRkZWQgY2hhbmdlcyB0byBhbGxvdyBjb2RlIHJlbW92YWwgaW4tcGxhY2UKKyAgIChpLmUuIGRvZXMgbm90IHJlcXVpcmUgY3JlYXRpbmcgYSBuZXcgZmlsZSkKKworMjAxMS0wMy0wNCAxOToyMyAgYmFlcm0KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2lnbm9yZS5yZWdleHA6CisKKyAgIGFkZGluZyBhIGlnbm9yZS5yZWdleHAgZmlsZSB0aGF0IGNhbiBiZSB1c2VkIHdpdGgKKyAgIHJlbW92ZWlmZGVmY29kZS5wbAorCisyMDExLTAzLTA0IDE5OjIwICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1tYWtlZG9jczoKKworICAgYWRkIGEgb3V0Z29pbmcgbGluayB0byB0aGUgcGFyZW50IG1hcmtpbmcgcGFnZQorCisyMDExLTAzLTA0IDE5OjE5ICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1tYWtlZG9jczoKKworICAgQWRkZWQgYSB3aWtpIG91dHB1dCBtb2RlCisKKzIwMTEtMDMtMDQgMTk6MTkgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzOgorCisgICBOb3RlIHRoYXQgdGhlIG9yZyBvdXRwdXQgaXMgdGhlIGRlZmF1bHQgaW4gdGhlIGhlbHAgb3V0cHV0CisKKzIwMTEtMDMtMDQgMTU6MDkgIGpzYWZyYW5laworCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgJ3RydW5jYXRpbmcgaW50ZWdlciB2YWx1ZSA+IDMyIGJpdHMnIGluCisgICBVQ0QtU05NUC1NSUI6OnN5c3RlbVN0YXRzIG9uIExpbnV4CisKKzIwMTEtMDMtMDQgMTQ6NDkgIGhhcmRha2VyCisKKyAgICogIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsIGFnZW50L2hlbHBlcnMvd2F0Y2hlci5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jLCBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYywgCisgICAgICAgIGFnZW50L21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmMsIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuYywgc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICByZWNsYXNzaWZpY2F0aW9uIG9mIHRoZSByZW1haW5pbmcgZmVhdHVyZXMgaW50byBhIGhpZXJhcmNoeQorCisyMDExLTAzLTA0IDE0OjQ5ICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIvc25tcF9vcGVuc3NsLmM6CisKKyAgIGRvbid0IGRvdWJsZS1kZWNsYXJlIGNlcnRfdXRpbHMKKworMjAxMS0wMy0wNCAxNDo0OSAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmM6CisKKyAgIHRoZSBpcGFkZHJlc3NfbGludXggd2FzIGluY29ycmVjdGx5IG1hcmtlZCBhcyBuZWVkaW5nCisgICBjZXJ0X2ZpbmdlcnByaW50cworCisyMDExLTAzLTA0IDE0OjQ4ICBoYXJkYWtlcgorCisgICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmM6CisKKyAgIHB1dCB0aGUgYWdlbnRfcmVnaXN0cnkgZmVhdHVyZSBpbiBsaWJuZXRzbm1wYWdlbnQuCisKKzIwMTEtMDMtMDMgMTA6NTYgIGJ2YXNzY2hlCisKKyAgICogd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWY6CisKKyAgIENIQU5HRVM6IFdpbjMyOiBEZXByZWNhdGVkIGxpYnNubXAuZGVmIC0gYWRkIE5FVFNOTVBfSU1QT1JUIHRvCisgICBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaW5zdGVhZCB0byBleHBvcnQgYSBmdW5jdGlvbiBmcm9tCisgICBuZXRzbm1wLmRsbC4KKworMjAxMS0wMy0wMyAxMDo0OCAgYnZhc3NjaGUKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaDoKKworICAgQWRkZWQgbWlzc2luZyBORVRTTk1QX0lNUE9SVCBkZWNsYXJhdGlvbnMuCisKKzIwMTEtMDMtMDMgMTA6MjQgIGJ2YXNzY2hlCisKKyAgICogd2luMzIvbGliYWdlbnQvbGliYWdlbnQuZGVmLCB3aW4zMi9saWJ1Y2RtaWJzL2xpYnVjZG1pYnMuZGVmOgorCisgICBSZW1vdmVkIHR3byBvYnNvbGV0ZSBXaW4zMiBmaWxlcy4KKworMjAxMS0wMy0wMyAxMDowOSAgYnZhc3NjaGUKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmM6CisKKyAgIFRyaXZpYWwgY29tbWVudCBmaXg6IHNubXBJUHY2QmFzZURvbWFpbi5jIGNvbnRhaW5zIElQdjYgYmFzZQorICAgdHJhbnNwb3J0IHN1cHBvcnQgZnVuY3Rpb25zIGluc3RlYWQgb2YgSVB2NC4KKworMjAxMS0wMy0wMiAxOToxMCAgYnZhc3NjaGUKKworICAgKiBzbm1wbGliOgorCisgICBBZGRlZCBzbm1wc21fc2h1dGRvd24uaCB0byB0aGUgU3VidmVyc2lvbiBpZ25vcmUgbGlzdCBiZWNhdXNlCisgICBpdCdzIGEgZ2VuZXJhdGVkIGZpbGUuCisKKzIwMTEtMDMtMDIgMTU6NTggIGJ2YXNzY2hlCisKKyAgICogd2luMzIvY29uZmlnLmg6CisKKyAgIFJlbW92ZWQgYW4gb2Jzb2xldGUgZmlsZS4KKworMjAxMS0wMy0wMiAxNTo1MiAgYnZhc3NjaGUKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgsIHdpbjMyL3NubXBzbV9zaHV0ZG93bi5oLCAgCisgICAgICAgd2luMzIvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmg6CisKKyAgIEJ1aWxkcyBhZ2FpbiB3aXRoIFZpc3VhbCBTdHVkaW8gYWZ0ZXIgdGhlIGludHJvZHVjdGlvbiBvZiB0aGUKKyAgICJmZWF0dXJlIiBmZWF0dXJlLgorCisyMDExLTAzLTAyIDE1OjQ4ICBidmFzc2NoZQorCisgICAqIHdpbjMyL3NubXBzbV9pbml0Lmg6CisKKyAgIFJlbW92ZWQgYSBtaXNsZWFkaW5nIGNvbW1lbnQuCisKKzIwMTEtMDMtMDIgMDg6NDAgIG1hZ2ZyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczI6CisKKyAgIENvcnJlY3QgdGhlIGNoZWNrIG9mIHdldGhlciB1c20gc2VjdXJpdHkgaXMgZW5hYmxlZC4KKyAgIFJlZ2VuZXJhdGUgY29uZmlndXJlLgorCisyMDExLTAzLTAyIDA4OjM5ICBtYWdmcgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIFJlZ2VuZXJhdGUKKworMjAxMS0wMy0wMiAwODoyMSAgbWFnZnIKKworICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXRhX2FjY2Vzcy5jOgorCisgICBBZGQgbWlzc2luZyBkZXBlbmRlbmNpZXMKKworMjAxMS0wMy0wMiAwNzoxOSAgbWFnZnIKKworICAgKiBzbm1wbGliL3NubXB1c20uYzoKKworICAgSWdub3JlIHRoZSByZXR1cm4gdmFsdWUgZnJvbSBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMKKworMjAxMS0wMy0wMiAwNzoxOSAgbWFnZnIKKworICAgKiBzbm1wbGliL2NvbnRhaW5lci5jOgorCisgICBTcGxpdCB0aGUgY29udGFpbmVyX2NvbXBhcmVfZnVuY3Rpb25zIGZlYXR1cmUgaW50bworICAgY29udGFpbmVyX2NvbXBhcmVfbWVtLAorICAgY29udGFpbmVyX2NvbXBhcmVfbG9uZywgY29udGFpbmVyX2NvbXBhcmVfdWxvbmcsCisgICBjb250YWluZXJfY29tcGFyZV9pbnQzMiBhbmQKKyAgIGNvbnRhaW5lcl9jb21wYXJlX3VpbnQzMgorICAgVW5pZnkgdGhlIHN0cnVjdHVyZSBvZiB0aGUgY29tcGFyZSBmdW5jdGlvbnMgZnVydGhlci4KKworMjAxMS0wMy0wMiAwNzoxOSAgbWFnZnIKKworICAgKiBzbm1wbGliL2NvbnRhaW5lci5jOgorCisgICBDaGFuZ2UgdGhlIHNwZWxsaW5nIG9mIHRoZSBjb250YWluZXJfY29tcGFyZV9jc3RyaW5nIGZlYXR1cmUgdG8KKyAgIGNvbnRhaW5lcl9uY29tcGFyZV9jc3RyaW5nIGFzIHRoYXQgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgaXMKKyAgIGd1YXJkZWQgYnkgdGhhdAorICAgYXR0cmlidXRlLgorCisyMDExLTAzLTAyIDA3OjE3ICBtYWdmcgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oOgorCisgICBBZGQgdGhlIG1pc3NpbmcgcmVwbGFjZW1lbnQgbWFjcm8gZm9yIHNubXBfaW5pdF9zdGF0aXN0aWNzCisKKzIwMTEtMDMtMDIgMDc6MTYgIG1hZ2ZyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg6CisKKyAgIHNubXBfaW5jcmVtZW50X3N0YXRpc3RpY19ieSB0YWtlcyB0d28gYXJndW1lbnRzIHNvIGxldCB0aGUKKyAgIHJlcGxhY2VtZW50IG1hY3JvCisgICB0YWtlIHR3byBhcmd1bWVudHMgYXMgd2VsbC4KKworMjAxMS0wMi0yNyAxMzo1NSAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmM6CisKKyAgIEZpeCB0eXBvIGluIHIxOTk5MAorCisyMDExLTAyLTI2IDEwOjUzICBtYWdmcgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1jaGVjazoKKworICAgUmVtb3ZlIGxpbmVzIHN0YXJ0aW5nIHdpdGggI2RlZmluZSBpbiB0aGUgb3V0cHV0IG9mIHRoZQorICAgcHJlcHJvY2Vzc29yCisgICBXaGVuIGdjYyAtRSBpcyBjYWxsZWQgd2l0aCAtZ2dkYjMgKG9yIC1kRCkgdGhlbiBhbGwgdGhlIG1hY3JvCisgICBkZWZpbml0aW9ucyBhcmUKKyAgIHBhc3NlZCB0aHJvdWdoIHRoZSBwcmVwcm9jZXNzb3IgYW5kIHRoYXQgbWVzc2VzIHVwIG91cgorICAgcHJvY2Vzc2luZy4KKworMjAxMS0wMi0yNiAxMDo1MiAgbWFnZnIKKworICAgKiBNYWtlZmlsZS5ydWxlczoKKworICAgUHV0IHRoZSBnZW5lcmF0ZWQgZmlsZSBpbiB0aGUgYnVpbGQgdHJlZSwgbm90IHRoZSBzb3VyY2UgdHJlZS4KKworMjAxMS0wMi0yNiAwMToyMyAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvYWdlbnRfdHJhcC5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvcmUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9od19tZW0uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMsICAKKyAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL3RzbS1taWIvc25tcFRzbVN0YXRzL3NubXBUc21TdGF0cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfc29sYXJpczIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2ludGVyZmFjZS5jOgorCisgICBtb3ZlZCBhIGJ1bmNoIG9mIGZlYXR1cmVzIGludG8gdGhlIGxpYm5ldHNubXBtaWJzIGZlYXR1cmUgc2V0LgorCisyMDExLTAyLTI2IDAxOjIyICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9hZ2VudF9oYW5kbGVyLmMsIGFnZW50L2FnZW50X2luZGV4LmMsICAgCisgICAgICBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCBhZ2VudC9hZ2VudF90cmFwLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL2FsbF9oZWxwZXJzLmMsIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy90YWJsZS5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYywgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmMsIGFnZW50L2hlbHBlcnMvdGFibGVfcm93LmMsICAgCisgICAgICBhZ2VudC9zbm1wX2FnZW50LmMsIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzLCBzbm1wbGliL21pYi5jOgorCisgICBjbGFzc2lmaWVkIGxpYm5ldHNubXBhZ2VudCBmZWF0dXJlcworCisyMDExLTAyLTI2IDAxOjIxICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOgorCisgICByZXZlcnNlIHRoZSBvcmRlciBvZiB0aGUgbGlicmFyaWVzIChzbm1wbGliIGZpcnN0KQorCisyMDExLTAyLTI2IDAxOjIxICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOgorCisgICBvdXRwdXQgY2xlYW51cCBhbmQgYWRkZWQgYWdlbnQtbWlicyBhbmQgbG9nZ2luZyBvcHRpb25zCisKKzIwMTEtMDItMjYgMDE6MjEgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6CisKKyAgIGFkZCBhIGRlZmF1bHQgc2V0IG9mIGFyZ3VtZW50cworICAgY2FsY3VsYXRlIHJlc3VsdGluZyBzaXplcworCisyMDExLTAyLTI2IDAxOjIxICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIvZGlyX3V0aWxzLmM6CisKKyAgIEFkZGVkIGEgbWlzc2luZyA7CisKKzIwMTEtMDItMjYgMDE6MjAgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6CisKKyAgIHByZWZpeCB0aGUgb3V0cHV0IGZpbGVzIHdpdGggYSBudW1iZXIgdG8gaW5kaWNhdGUgb3JkZXIKKworMjAxMS0wMi0yNiAwMToyMCAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czoKKworICAgc2F2ZSB0aGUgcmVzdWx0cyBvZiB0aGUgc3lzdGVtIGV4ZWN1dGlvbnMKKworMjAxMS0wMi0yNiAwMToyMCAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czoKKworICAgZW5hYmxlIGJ1aWxkaW5nIG9mIHRoZSByZXN1bHRpbmcgY29tYmluYXRpb25zCisgICBBZGQgYSAtbiBmbGFnIGZvciBkcnktcnVucworCisyMDExLTAyLTI2IDAxOjIwICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOgorCisgICBlbmFibGUgdGhlIC10IHRhZyBmb3IgbGltaXRpbmcgdHlwZXMKKworMjAxMS0wMi0yNiAwMToxOSAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czoKKworICAgQWRkZWQgYXJndW1lbnQgcGFyc2luZyBhbmQgYXJndW1lbnRzIGZvciBzZWxlY3RpbmcgYW5kIGxpc3RpbmcKKyAgIHR5cGVzCisKKzIwMTEtMDItMjYgMDE6MTkgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6CisKKyAgIGdlbmVyYXRlIGNvbmZpZ3VyZSBzY3JpcHQgYXJndW1lbnRzIGZyb20gc3BlY3MKKworMjAxMS0wMi0yNiAwMToxOSAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czoKKworICAgYWRkZWQgYSBidW5jaCBvZiBuZXcgZmVhdHVyZSBvcHRpb25zIGFuZCBjbGVhbmVkIHVwIGEgYml0CisKKzIwMTEtMDItMjYgMDE6MTkgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6CisKKyAgIGFkZGVkIGEgbmV3IChub3QgeWV0IHdvcmtpbmcpIHNjcmlwdCB0byB0ZXN0IHNpemluZyBvZiB2YXJpb3VzCisgICBhcmd1bWVudCBzZXRzCisKKzIwMTEtMDItMjYgMDA6MjYgIG1hZ2ZyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYzoKKworICAgU2ltcGxpZnkgdGhlIGNvZGUuIFVuaWZ5IHNvbWUgZGVidWcgbG9ncy4KKworMjAxMS0wMi0yNiAwMDoxOSAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jOgorCisgICBSZWR1Y2UgdGhlIHNjb3BlIG9mIGEgZmV3IHZhcmlhYmxlcworCisyMDExLTAyLTI2IDAwOjE2ICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmM6CisKKyAgIFJlbW92ZSBzb21lIHVudXNlZCBpbmNsdWRlcy4KKworMjAxMS0wMi0yNiAwMDoxNSAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jOgorCisgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGluaXRpYWxpemUvdW5pbml0aWFsaXplIG1vZHVsZXMgd2l0aCA2NAorICAgY2hhcmFjdGVyIG5hbWVzIGFuZCBub3Qgc3VmZmVyIHdpbGQgd3JpdGVzLgorCisyMDExLTAyLTI2IDAwOjEyICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmM6CisKKyAgIENvZGUgcmVzdHJ1Y3R1cmluZyAtIHB1dCB0aGUgbWFuYWdlZCByb3V0aW5lcyBiZWZvcmUgdGhlCisgICBtYW5hZ21lbnQgY29kZS4KKworMjAxMS0wMi0yNiAwMDoxMSAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5oOgorCisgICBDSEFOR0VTOiBsaWJuZXRzbm1wbWliczogTWFrZSBhbGwgZnVuY3Rpb25zIGluIHRoZSBkbG1vZCBtb2R1bGUKKyAgIHRoYXQgZG9uJ3QgaGF2ZSB0byBiZSBwdWJsaWMgc3RhdGljCisKKzIwMTEtMDItMjYgMDA6MDcgIG1hZ2ZyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYzoKKworICAgUmVuYW1lIGRlaW5pdF9kbG1vZCB0byBzaHV0ZG93bl9kbG1vZCBhcyB0aGF0IGlzIHdoYXQgaXQgcmVhbGx5CisgICBpcyBhYm91dC4KKworMjAxMS0wMi0yNSAxODoyNCAgYmFlcm0KKworICAgKiBhZ2VudC9taWJncm91cC9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5jOgorCisgICBhZGRpbmcgbWluaW1hbGlzdCBpZmRlZnMgdG8gbmV0LXNubXAtdmFjbSBtaWIKKworMjAxMS0wMi0yNSAxNjowOSAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtbWFrZWRvY3M6CisKKyAgIHByb3Blcmx5IGhhbmRsZSB0d2luIGNoaWxkcmVuOyBhbHNvIHNvcnQgdGhlIGNoaWxkIGxpc3QKKyAgIGFscGhhYmV0aWNhbGx5LgorCisyMDExLTAyLTI1IDE2OjA5ICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIvc25tcF9sb2dnaW5nLmM6CisKKyAgIEkgc3VwcG9zZSBsb2dnaW5nIHNob3VsZCBwcm9iYWJseSBkZWZhdWx0IHRvIGJlaW5nIGEgd2FudGVkCisgICBvcHRpb24gOi0pCisKKzIwMTEtMDItMjUgMTY6MDkgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzOgorCisgICBvcmctbGluayB0aGUgZmlsZXMgaW4gdGhlIG91dHB1dAorCisyMDExLTAyLTI1IDE2OjA4ICBoYXJkYWtlcgorCisgICAqICBNYWtlZmlsZS5ydWxlcywgYWdlbnQvTWFrZWZpbGUuaW4sIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmluLCAgIAorICAgICAgYXBwcy9NYWtlZmlsZS5pbiwgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbiwgICAKKyAgICAgIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1jaGVjaywgc25tcGxpYi9NYWtlZmlsZS5pbjoKKworICAgbWFrZSB0aGUgZmVhdHVyZXMtY2hlY2sgc2NyaXB0IHRyYWNrIHRoZSBmdWxsIHNvdXJjZSBwYXRoCisKKzIwMTEtMDItMjUgMTY6MDggIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzOgorCisgICBjaGFuZ2UgdGhlIGZ1bmN0aW9uIG5hbWVzIHRvIG1hdGNoIHRoYXQgaXQncyBwcmludGluZyB0byBvcmctbW9kZQorICAgYXQgdGhlIG1vbWVudC4KKworMjAxMS0wMi0yNSAxNjowOCAgaGFyZGFrZXIKKworICAgKiAgc25tcGxpYi9maWxlX3V0aWxzLmMsIHNubXBsaWIvbWliLmMsIHNubXBsaWIvb2lkX3N0YXNoLmMsICAgCisgICAgICBzbm1wbGliL3NubXBfYXBpLmMsIHNubXBsaWIvc25tcF9sb2dnaW5nLmMsIHNubXBsaWIvdG9vbHMuYzoKKworICAgbGFzdCBvZiB0aGUgZmVhdHVyZSBjbGFzc2lmaWNhdGlvbiBpbiBsaWJuZXRzbm1wCisKKzIwMTEtMDItMjUgMTY6MDcgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9rZXl0b29scy5jLCBzbm1wbGliL2xjZF90aW1lLmMsIHNubXBsaWIvc2NhcGkuYzoKKworICAgbWFrZSB0aGUgdXNtX3N1cHBvcnQgdXRpbGl0aWVzIHNlbGYtZGVjbGFyZSB0aGVtc2VsdmVzIGFzCisgICBjaGlsZHJlbiB0bworICAgbWFrZSBzdXJlIHRoZXkncmUgcHJvcGVybHkgaW5jbHVkZWQgZHVyaW5nIGRlcGVuZGVuY3kgb3JkZXJpbmcKKworMjAxMS0wMi0yNSAxNjowNyAgaGFyZGFrZXIKKworICAgKiAgc25tcGxpYi9jYWxsYmFjay5jLCBzbm1wbGliL2NlcnRfdXRpbC5jLCBzbm1wbGliL2NoZWNrX3ZhcmJpbmQuYywgCisgICAgICAgIHNubXBsaWIvY29udGFpbmVyLmMsIHNubXBsaWIvZGF0YV9saXN0LmMsICAgCisgICAgICBzbm1wbGliL2RlZmF1bHRfc3RvcmUuYywgc25tcGxpYi9mZF9ldmVudF9tYW5hZ2VyLmMsICAgCisgICAgICBzbm1wbGliL2ZpbGVfdXRpbHMuYywgc25tcGxpYi9rZXl0b29scy5jLCBzbm1wbGliL3NubXB1c20uYzoKKworICAgc3VwZXJzdHJ1Y3R1cmFsaXphdGlvbml6aW5nIHRoZSBmZWF0dXJlcworCisyMDExLTAyLTI1IDE2OjA3ICBoYXJkYWtlcgorCisgICAqICBzbm1wbGliL3JlYWRfY29uZmlnLmMsIHNubXBsaWIvc25tcC10Yy5jLCBzbm1wbGliL3NubXBfY2xpZW50LmMsICAKKyAgICAgICBzbm1wbGliL3NubXBfZW51bS5jLCBzbm1wbGliL3NubXBfdHJhbnNwb3J0LmMsIHNubXBsaWIvc3lzdGVtLmMsIAorICAgICAgICBzbm1wbGliL3RleHRfdXRpbHMuYywgc25tcGxpYi90b29scy5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmMsIHNubXBsaWIvdWNkX2NvbXBhdC5jOgorCisgICBzaWduaWZpY2FudCBwYXJlbnQvY2hpbGQgZmVhdHVyZSBjbGFzc2lmaWNhdGlvbgorCisyMDExLTAyLTI1IDE2OjA2ICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYywgc25tcGxpYi9zbm1wdXNtLmM6CisKKyAgIGNsYXNzaWZ5IGEgZmV3IGNvbXBvbmVudHMgaW50byBhIHRvcC1sZXZlbCBsaWJuZXRzbm1wIGNvbXBvbmVudAorCisyMDExLTAyLTI1IDE2OjA2ICBoYXJkYWtlcgorCisgICAqICBzbm1wbGliL2tleXRvb2xzLmMsIHNubXBsaWIvbGNkX3RpbWUuYywgc25tcGxpYi9zY2FwaS5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wdXNtLmM6CisKKyAgIHN0cnVjdHVyaXplIHRoZSB1c20gZmVhdHVyZXMKKworMjAxMS0wMi0yNSAxNjowNiAgaGFyZGFrZXIKKworICAgKiAgc25tcGxpYi9jb250YWluZXIuYywgc25tcGxpYi9jb250YWluZXJfaXRlcmF0b3IuYywgICAKKyAgICAgIHNubXBsaWIvY29udGFpbmVyX2xpc3Rfc3NsbC5jLCBzbm1wbGliL2NvbnRhaW5lcl9udWxsLmMsICAgCisgICAgICBzbm1wbGliL2Rpcl91dGlscy5jOgorCisgICBzdHJ1Y3R1cmUgdGhlIGNvbnRhaW5lciBmZWF0dXJlcyBpbnRvIGEgaGllcmFyY2h5CisKKzIwMTEtMDItMjUgMTY6MDUgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9zbm1wX2xvZ2dpbmcuYzoKKworICAgZ3JvdXAgdGhlIGxvZ2dpbmcgaGFuZGxlcnMgdW5kZXIgYSBwYXJlbnQgZmVhdHVyZQorCisyMDExLTAyLTI1IDE2OjA1ICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1tYWtlZG9jczoKKworICAgZml4IHRoZSBleHBlY3QgYXJndW1lbnQgY291bnQKKworMjAxMS0wMi0yNSAxNjowNSAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtbWFrZWRvY3M6CisKKyAgIGZpeCB0aGUgbmFtZSBvZiB0aGUgZXhwZWN0ZWQgaW5wdXQgZmlsZQorCisyMDExLTAyLTI1IDE2OjA1ICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1tYWtlZG9jczoKKworICAgYXJndW1lbnQgcGFyc2luZyBhbmQgdXNhZ2UoKSBvdXRwdXQKKworMjAxMS0wMi0yNSAxNjowNCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jLCBhZ2VudC9oZWxwZXJzL3N0YXNoX3RvX25leHQuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZS5jLCBzbm1wbGliL29pZF9zdGFzaC5jOgorCisgICAtIGFkZGVkIHR3byBvaWRfc3Rhc2ggZnVuY3Rpb25zIGFzIGluZGl2aWR1YWwgZmVhdHVyZXMKKyAgIC0gY2xlYW5lZCB1cCBzb21lIHdhcm5pbmdzIGluIHRoZSB0YWJsZV9pdGVyYXRvciBjb2RlCisKKzIwMTEtMDItMjUgMTI6NTUgIGR0czEyCisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CisKKyAgIEZpeCB0aGUgY29tbWFuZCB0byBjcmVhdGUgYSBuZXcgU1ZOIHRhZyBsaW5lCisgICAKKyAgIChIYXZpbmcgYnJvdWdodCB0aGUgc3RydWN0dXJlIG9mIHRoZSA1LjUueCBicmFuY2gKKyAgIGludG8gbGluZSB3aXRoIHRoZSBvdGhlciBicmFuY2hlcywgdGhlIHByZXZpb3VzCisgICBjb21tYW5kIGlzIG5vdyB3cm9uZyBmb3IgKmFsbCogYnJhbmNoZXMsIHJhdGhlcgorICAgdGhhbiBqdXN0IG1vc3Qgb2YgdGhlbSEpCisKKzIwMTEtMDItMjUgMTE6MTAgIGR0czEyCisKKyAgICogc25tcGxpYi9zbm1wdjMuYzoKKworICAgQXZvaWQgYSBwb3NzaWJsZSBjcmFzaCBpZiB0aGUgZW5naW5lSUQgaXMgbm90IGF2YWlsYWJsZSBvciBzZXQuCisKKzIwMTEtMDItMjUgMDA6NDAgIGJhZXJtCisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckRlbHRhVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5oOgorCisgICBhZGRpbmcgaWZkZWYgY29kZSBmb3IgbWluaW1hbGlzdCBzdXBwb3J0IG9mIGRpZmZtYW4gbWliCisKKzIwMTEtMDItMjQgMTk6MjEgIGJhZXJtCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5jLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5oOgorCisgICBBZGRpbmcgbWluaW1hbGlzdCBpZmRlZnMgdG8gaG9zdCByZXNvdXJjZSBtaWIKKworMjAxMS0wMi0yNCAwNTo0NiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmMsIHNubXBsaWIvZGF0YV9saXN0LmM6CisKKyAgIG1hcmsgdGhlIGRhdGFfbGlzdCBmdW5jdGlvbiB0aGF0J3Mgb25seSB1c2VkIGluIHN0YWNoX2NhY2hpbmcgYXMKKyAgIGEgZmVhdHVyZQorCisyMDExLTAyLTI0IDA1OjQ2ICBoYXJkYWtlcgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYzoKKworICAgd2hvb3BzLgorCisyMDExLTAyLTI0IDA1OjQ2ICBoYXJkYWtlcgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYzoKKworICAgbW9yZSBtaXNzaW5nIHN0YXNoIHJlZmVyZW5jZXMKKworMjAxMS0wMi0yNCAwNTo0NSAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmM6CisKKyAgIGlmZGVmZWQvZmVhdHVyZWQgb3V0IGEgbWlzc2luZyBzdGFzaF9jYWNoZSBzZWN0aW9uCisKKzIwMTEtMDItMjQgMDU6NDUgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jOgorCisgICBtYWtlIHRoZSBwcmVmaXhfaW5mbyBtb3JlIGhpZXJhcmNoaWNhbCBhbmQgc3ViLWZlYXR1cmUgdGhlIHVudXNlZAorICAgb25lCisKKzIwMTEtMDItMjQgMDU6NDUgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9maW5kLXVudXNlZC1jb2RlOgorCisgICBkbyBpbmNsdWRlIHRoZSBwZXJsL3B5dGhvbiBjb2RlIHdoZW4gc2VhcmNoaW5nIGZvciBmaWxlcworCisyMDExLTAyLTI0IDA1OjQ1ICBoYXJkYWtlcgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYzoKKworICAgbWFrZSB0aGUgc2VtaS11c2VkIHRhYmxlX3RkYXRhIGZ1bmN0aW9ucyBjaGlsZHJlbiBvZgorICAgdGFibGVfdGRhdGFfYWxsCisgICBpbnN0ZWFkIG9mIGp1c3QgdGFibGVfdGRhdGEKKworMjAxMS0wMi0yMyAyMjowMCAgbWFnZnIKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX3RkYXRhLmM6CisKKyAgIENvcnJlY3QgdHlwbworCisyMDExLTAyLTIzIDIxOjU0ICBtYWdmcgorCisgICAqIHNubXBsaWIvcGFyc2UuYzoKKworICAgQ29ycmVjdCB0eXBvCisKKzIwMTEtMDItMjMgMjE6MTAgIG5iYQorCisgICAqIGFnZW50L3NubXBfdmFycy5jOgorCisgICBwcm9wZXIgaW5jbHVkZSBvZiBwcm90b3R5cGUKKworMjAxMS0wMi0yMyAyMTowNyAgaGFyZGFrZXIKKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19hZ2VudCwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX3RyYW5zcG9ydHMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZToKKworICAgY29tcGF0IHNvbWUgZmVhdHVyZSBoZWFkZXIgY2hpY2tlbiBhbmQgZWdnIHByb2JsZW1zCisKKzIwMTEtMDItMjMgMTU6MjcgIG5iYQorCisgICAqIHNubXBsaWIvc25tcHVzbS5jOgorCisgICB1bnNpZ25lZCBqdWdnbGluZyB0byByZW1vdmUgd2FybmluZ3MKKworMjAxMS0wMi0yMyAxNToyMyAgbmJhCisKKyAgICogIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5oLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jOgorCisgICB1bnNpZ25lZCBqdWdnbGluZyB0byByZW1vdmUgd2FybmluZ3MKKworMjAxMS0wMi0yMyAxNToyMCAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliLmg6CisKKyAgIEVuYWJsZSAocHJvYmFibHkgZm9yZ290dGVuKSBpcEFkZHJlc3NQcmVmaXhUYWJsZQorCisyMDExLTAyLTIzIDE0OjMwICBoYXJkYWtlcgorCisgICAqICBsb2NhbC9taW5pbWFsaXN0LCBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtY2hlY2ssICAgCisgICAgICBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtbWFrZWRvY3MsICAgCisgICAgICBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtcmVtb3ZlLCAgIAorICAgICAgbG9jYWwvbWluaW1hbGlzdC9maW5kLXVudXNlZC1jb2RlLCAgIAorICAgICAgbG9jYWwvbWluaW1hbGlzdC9yZW1vdmVpZmRlZmNvZGUucGw6CisKKyAgIGFkZGVkIG90aGVyIG1pc3NpbmcgJ25ldycgZmlsZXMgbm90IGluY2x1ZGVkIGluIHRoZSBtaW5pbWFsaXN0CisgICBwYXRjaCBmaWxlCisKKzIwMTEtMDItMjMgMDk6NTQgIG5iYQorCisgICAqICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fZnJlZWJzZDQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9uZXRic2QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9vcGVuYnNkLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9mcmVlYnNkNC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbmV0YnNkLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9vcGVuYnNkLmM6CisKKyAgIExvYWRpbmcgSVB2NiBkYXRhIGlzIGEgbm8tbm8gd2hlbiBJUHY2IG5vdCBlbmFibGVkCisKKzIwMTEtMDItMjMgMDk6MzYgIG5iYQorCisgICAqIGFwcHMvc25tcHRhYmxlLmM6CisKKyAgIEZpeCBidWcgMzExODYzMTogc25tcHRhYmxlIHNlZ2ZhdWx0cyBpZiBpbmRleCBjb250YWlucyA6CisgICBjaGFyYWN0ZXIKKworMjAxMS0wMi0yMyAwOTozMCAgbmJhCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZnJlZWJzZDguaDoKKworICAgRnJlZUJTRCA4IHN1cHBvcnQKKworMjAxMS0wMi0yMyAwMTo0OCAgaGFyZGFrZXIKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg6CisKKyAgIGFkZGVkIG1pc3NpbmcgbmV0LXNubXAtZmVhdHVyZXMuaAorCisyMDExLTAyLTIzIDAwOjAxICBoYXJkYWtlcgorCisgICAqICBNYWtlZmlsZS5pbiwgTWFrZWZpbGUucnVsZXMsIE1ha2VmaWxlLnRvcCwgYWdlbnQvTWFrZWZpbGUuaW4sICAgCisgICAgICBhZ2VudC9hZ2VudF9oYW5kbGVyLmMsIGFnZW50L2FnZW50X2luZGV4LmMsICAgCisgICAgICBhZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jLCBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCAgIAorICAgICAgYWdlbnQvYWdlbnRfdHJhcC5jLCBhZ2VudC9oZWxwZXJzL2FsbF9oZWxwZXJzLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL2JhYnlfc3RlcHMuYywgYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmMsIGFnZW50L2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy9tdWx0aXBsZXhlci5jLCBhZ2VudC9oZWxwZXJzL29sZF9hcGkuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvcmVhZF9vbmx5LmMsIGFnZW50L2hlbHBlcnMvcm93X21lcmdlLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL3NjYWxhci5jLCBhZ2VudC9oZWxwZXJzL3NjYWxhcl9ncm91cC5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy9zbm1wX2dldF9zdGF0aXN0aWMuYywgYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jLCAgCisgICAgICAgYWdlbnQvaGVscGVycy9zdGFzaF90b19uZXh0LmMsIGFnZW50L2hlbHBlcnMvdGFibGUuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYywgYWdlbnQvaGVscGVycy90YWJsZV9jb250YWluZXIuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYywgYWdlbnQvaGVscGVycy90YWJsZV9yb3cuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYywgYWdlbnQvaGVscGVycy93YXRjaGVyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5pbiwgYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5jLCBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Q29uZi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFNldFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckNvbmYuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXJyb3JUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbkNvbmYuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0Q29uZi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEV4cHJlc3Npb25UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVFdmVudFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb25mLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb3JlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RhdGFfc2V0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL3NjYWxhcl9pbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfa2luZm8uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbmxpc3QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfcGVyZnN0YXQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvaHdfbWVtLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X2Rhcndpbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcGtnaW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcnBtLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmMsIAorICAgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9jb25zdGFudHMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMsICAKKyAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuYywgIAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcF9zY2FsYXJzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcHY2LmMsIGFnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5jLCAKKyAgICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc2V0U2VyaWFsTm8uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliXzVfNS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jLCBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbnRleHQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VyS2V5VGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0c181XzUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzXzVfNS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYywgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuaCwgCisgICAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2M21pYnMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9jb21tb24uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX3NvbGFyaXMyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC90ZXN0aGFuZGxlci5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUFkZHJUYWJsZS9zbm1wVGxzdG1BZGRyVGFibGUuYywgCisgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtUGFyYW1zVGFibGUvc25tcFRsc3RtUGFyYW1zVGFibGUuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL3RzbS1taWIvc25tcFRzbVN0YXRzL3NubXBUc21TdGF0cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtU2Vuc29ycy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm9jLmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmMsICAKKyAgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9jb21tb24uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9zb2xhcmlzMi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMsIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL3dpbkV4dERMTC5jLCBhZ2VudC9zbm1wX2FnZW50LmMsICAgCisgICAgICBhZ2VudC9zbm1wX3ZhcnMuYywgYWdlbnQvc25tcGQuYywgYXBwcy9NYWtlZmlsZS5pbiwgICAKKyAgICAgIGFwcHMvYWdlbnR4dHJhcC5jLCBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmluLCAgIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9tYWluLmMsIGFwcHMvc25tcG5ldHN0YXQvbmV0c3RhdC5oLCAgIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9yb3V0ZS5jLCBhcHBzL3NubXB0ZXN0LmMsIGFwcHMvc25tcHRyYW5zbGF0ZS5jLCAgCisgICAgICAgYXBwcy9zbm1wdHJhcGQuYywgYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYywgICAKKyAgICAgIGFwcHMvc25tcHRyYXBkX3NxbC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50LCBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19saWIsIAorICAgICAgICBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19zZWN1cml0eV9tb2R1bGVzLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfdHJhbnNwb3J0cywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMiwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BlcmxfcHl0aG9uLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGUsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9saWJzbm1wLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBrc20uaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgcGVybC9PSUQvT0lELnhzLCAgIAorICAgICAgcGVybC9TTk1QL1NOTVAueHMsIHBlcmwvYWdlbnQvYWdlbnQueHMsIHNubXBsaWIvTWFrZWZpbGUuaW4sICAgCisgICAgICBzbm1wbGliL2NhbGxiYWNrLmMsIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvY2hlY2tfdmFyYmluZC5jLCAKKyAgICAgICAgc25tcGxpYi9jb250YWluZXIuYywgc25tcGxpYi9jb250YWluZXJfaXRlcmF0b3IuYywgICAKKyAgICAgIHNubXBsaWIvY29udGFpbmVyX2xpc3Rfc3NsbC5jLCBzbm1wbGliL2NvbnRhaW5lcl9udWxsLmMsICAgCisgICAgICBzbm1wbGliL2RhdGFfbGlzdC5jLCBzbm1wbGliL2RlZmF1bHRfc3RvcmUuYywgICAKKyAgICAgIHNubXBsaWIvZGlyX3V0aWxzLmMsIHNubXBsaWIvZmRfZXZlbnRfbWFuYWdlci5jLCAgIAorICAgICAgc25tcGxpYi9maWxlX3V0aWxzLmMsIHNubXBsaWIvaW50NjQuYywgc25tcGxpYi9rZXl0b29scy5jLCAgIAorICAgICAgc25tcGxpYi9sY2RfdGltZS5jLCBzbm1wbGliL21pYi5jLCBzbm1wbGliL29pZF9zdGFzaC5jLCAgIAorICAgICAgc25tcGxpYi9wYXJzZS5jLCBzbm1wbGliL3JlYWRfY29uZmlnLmMsIHNubXBsaWIvc2NhcGkuYywgICAKKyAgICAgIHNubXBsaWIvc25tcC10Yy5jLCBzbm1wbGliL3NubXBfYXBpLmMsIHNubXBsaWIvc25tcF9jbGllbnQuYywgICAKKyAgICAgIHNubXBsaWIvc25tcF9lbnVtLmMsIHNubXBsaWIvc25tcF9sb2dnaW5nLmMsICAgCisgICAgICBzbm1wbGliL3NubXBfb3BlbnNzbC5jLCBzbm1wbGliL3NubXBfcGFyc2VfYXJncy5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wX3NlY21vZC5jLCBzbm1wbGliL3NubXBfdHJhbnNwb3J0LmMsICAgCisgICAgICBzbm1wbGliL3NubXBrc20uYywgc25tcGxpYi9zbm1wdHNtLmMsIHNubXBsaWIvc25tcHVzbS5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wdjMuYywgc25tcGxpYi9zeXN0ZW0uYywgc25tcGxpYi90ZXh0X3V0aWxzLmMsICAgCisgICAgICBzbm1wbGliL3Rvb2xzLmMsIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5jLCBzbm1wbGliL3VjZF9jb21wYXQuYywgICAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3YzY29uZmlnLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9TdjN1c21jb25maWdiYXNlLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9TdjN2YWNtY29uZmlnLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDQ5c25tcHYzaW5mb3JtX3NpbXBsZSwgICAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA0OXNubXB2M2luZm9ybWF1dGhfc2ltcGxlLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdDJfc2ltcGxlLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdDNfc2ltcGxlLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdF9zaW1wbGUsICAgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNjB0cmFwZHBlcmxfc2ltcGxlLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDYxYWdlbnRwZXJsX3NpbXBsZSwgICAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDExM2FnZW50eHRyYXBfc2ltcGxlLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTE0YWdlbnR4YWdlbnR4dHJhcF9zaW1wbGU6CisKKyAgIE5FV1M6IHBhY2thZ2luZzogRW5hYmxlIG1pY3JvLWFuZC1tYWNyby1mZWF0dXJlIG1hbmFnZW1lbnQgd2l0aGluCisgICBOZXQtU05NUDsgdGhpcyBhZGRzIGEgbnVtYmVyIG9mIG5ldyBmbGFncyB0byBjb25maWd1cmUKKyAgICgtLWVuYWJsZS1taW5pbWFsaXN0IGFuZCAtLWVuYWJsZS1yZWFkLW9ubHkpLiBUaGVzZSBjaGFuZ2VzIGFyZQorICAgZGVzaWduZWQgdG8gcmVtb3ZlIG11Y2ggb2YgdGhlIGlubGluZSBjb2RlIHRoYXQgaXNuJ3QgYWx3YXlzCisgICBuZWNlc3Nhcnkgb3IgZGVzaXJlZC4gU2NyaXB0cyBleGlzdCAoYW5kIHdpbGwgYmUgaW1wcm92ZWQpIHRvCisgICBzdGlwIG91dCB1bnVzZWQgY29tcG9uZW50cyBmcm9tIHRoZSBjb2RlIGVudGlyZWx5IHRvIGVuYWJsZSBhCisgICBzaG9ydGVyIHJldmlldyBwcm9jZXNzIGZvciB1cGdyYWRpbmcgdG8gbmV3IHJlbGVhc2VzLiBUaGlzIHdvcmsKKyAgIHdhcyBkb25lIGJ5IFdlcyBIYXJkYWtlciBhbmQgTWljaGFlbCBCYWVyIGZyb20gU1BBUlRBLCBJbmMuIGJ1dAorICAgaXMgYmVpbmcgY2hlY2tlZCBpbiBhcyBhIGxhcmdlIHBhdGNoIHNpbmNlIGNvbnZlcnRpbmcgdGhlIG1pY3JvCisgICBwYXRjaGVzIGZyb20gZ2l0IHRvIHN2biB0dXJlbmQgb3V0IHRvIGJlIGltcG9zc2libGUKKworMjAxMS0wMi0yMiAyMzo1NSAgaGFyZGFrZXIKKworICAgKiBGQVE6CisKKyAgIHVzZSB0aGUgd2lraSBVUkwgaW5zdGVhZCBvZiB0aGUgdHV0b3JpYWwtNSBVUkwgZm9yIHRoZSBzbm1wdHJhcAorICAgdHV0b3JpYWwKKworMjAxMS0wMi0yMSAyMjo0MCAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9raW5mby5jOgorCisgICBwcm9wZXIgcHJvY2VzcyBzdGF0dXMgdmFsdWVzIGZvciBuZXRic2QKKworMjAxMS0wMi0yMSAyMjozOSAgbmJhCisKKyAgICogc25tcGxpYi9zY2FwaS5jOgorCisgICBjb25kaXRpb25hbGl6ZSB2YXJpYWJsZQorCisyMDExLTAyLTIxIDIyOjIwICBuYmEKKworICAgKiBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm4uaDoKKworICAgdGNwLW1pYi91ZHAtbWliIHN1cHBvcnQgZm9yIHRoZSAqYnNkcworCisyMDExLTAyLTIxIDIyOjE2ICBuYmEKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9mcmVlYnNkNC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX25ldGJzZC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX29wZW5ic2QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9mcmVlYnNkNC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbmV0YnNkLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9vcGVuYnNkLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuYzoKKworICAgdGNwLW1pYi91ZHAtbWliIHN1cHBvcnQgZm9yIHRoZSAqYnNkcworCisyMDExLTAyLTIxIDIyOjA1ICBuYmEKKworICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2FjY2Vzcy5jOgorCisgICBQcm9wZXJseSBlbmQgZGVidWcgbWVzc2FnZSB3aXRoIG5ld2xpbmUKKworMjAxMS0wMi0yMSAyMjowNCAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2xpbnV4LmM6CisKKyAgIHJlbW92ZSB2YXIgdGhhdCBzaGFkb3dzIHRoZSB1c2VmdWwgb25lCisKKzIwMTEtMDItMjEgMjI6MDIgIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYzoKKworICAgbWFqb3IgZmlkZGxpbmcgdG8gZ2V0IHRoaW5ncyB3b3JraW5nIGZvciBvcGVuYnNkIHRvby4gVGhpcyBzaG91bGQKKyAgIHJlYWxseSBiZSByZXdvcmtlZCB0byB1c2UgdGhlIHRjcC1taWIvdWRwLW1pYi9kYXRhX2FjY2VzcworCisyMDExLTAyLTIxIDIxOjU5ICBuYmEKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jOgorCisgICBmaXggdGNwIHN0YXRlcyBmb3IgZHJhZ29uZmx5YnNkCisKKzIwMTEtMDItMjEgMjE6NTcgIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJLmg6CisKKyAgIGVuYWJsZSBuZXcgdGNwL3VkcCBtaWJzIGZvciBzb2xhcmlzCisKKzIwMTEtMDItMjEgMjE6NTMgIG1hZ2ZyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjMuYzoKKworICAgRG8gbm90IHVzZSBjOTkKKworMjAxMS0wMi0yMSAxOTowOCAgaGFyZGFrZXIKKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDoKKworICAgVXBkYXRlZCBjb21tZW50IGFib3V0IHdoZXJlIG1ha2VyZWxlYXNlIGNvbWVzIGZyb20gKG5vdyBnaXRodWIpCisKKzIwMTEtMDItMjAgMDk6MjQgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvc25tcF9hZ2VudC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzMTg1NTI4OiBzaHV0ZG93bl9tYXN0ZXJfYWdlbnQgZG9lc24ndCBjbG9zZQorICAgVURQIHNvY2tldAorICAgKEZpeGVzIGEgYnVnIGludHJvZHVjZWQgaW4gcjE5NTExLikKKworMjAxMS0wMi0xOCAxNDo0MyAganNhZnJhbmVrCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19nZXRmc3N0YXRzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50Y3RsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50ZW50LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2h3X2ZzeXMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJoX3N0b3JhZ2UuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvZnN5cy5oLCBtYW4vc25tcGQuY29uZi41LmRlZjoKKworICAgQ0hBTkdFUzogc25tcGQ6IHJld29ya2VkIGhyU3RvcmFnZVRhYmxlIHRvIHN1cHBvcnQgbGFyZ2UKKyAgIGZpbGVzeXN0ZW1zLgorICAgCisgICBUaGUgaHJTdG9yYWdlQWxsb2NhdGlvblVuaXRzIGRvZXMgbm90IHJlcG9ydCByZWFsIGFsbG9jYXRpb24gdW5pdAorICAgc2l6ZSwKKyAgIGJ1dCBzb21lIGNhbGN1bGF0ZWQgdmFsdWUgc28gaHJTdG9yYWdlQWxsb2NhdGlvblVuaXRzICoKKyAgIGhyU3RvcmFnZVNpemUKKyAgIGdpdmVzIHJlYWwgc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbS4KKyAgIAorICAgVGhpcyBjYWxjdWxhdGlvbiBoYXBwZW5zIG9ubHkgd2hlbiBoclN0b3JhZ2VTaXplIGlzIHRvbyBzbWFsbAorICAgKDMyYml0cykKKyAgIGZvciBmaWxlc3lzdGVtIHNpemUsIGUuZy4gZmlsZXN5c3RlbXMgbGFyZ2VyIHRoYW4gOFRCIHdpdGggNDA5NgorICAgYnl0ZXMKKyAgIGJsb2NrIHNpemUuCisgICAKKyAgIFRoaXMgY2FsY3VsYXRpb24gY2FuIGJlIHR1cm5lZCBvZmYgYnkgJ3JlYWxTdG9yYWdlVW5pdHMnIGNvbmZpZworICAgb3B0aW9uLgorCisyMDExLTAyLTE4IDE0OjI5ICBqc2FmcmFuZWsKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX21udGVudC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9tbnR0eXBlcy5oOgorCisgICBBZGQgSkZTIGFuZCBYRlMgdG8gbGlzdCBvZiBrbm93biBmaWxlc3VzdGVtcworCisyMDExLTAyLTE3IDExOjI4ICBqc2FmcmFuZWsKKworICAgKiBsb2NhbC9zbm1wLWJyaWRnZS1taWI6CisKKyAgIEZpeGVkIHNubXAtYnJpZGdlLW1pYiBpbiBzdGFuZGFsb25lIChhZ2VudHgpIHZlcnNpb24uCisgICBEb24ndCBkZWNsYXJlIGxvY2FsIHZhcmlhYmxlcyBpbnNpZGUgYmxvY2suIFBhdGNoIHByb3ZpZGVkIGJ5CisgICBKZW5zIE9zdGVya2FtcC4KKworMjAxMS0wMi0xNiAxNDo1NiAganNhZnJhbmVrCisKKyAgICogbG9jYWwvc25tcC1icmlkZ2UtbWliOgorCisgICBGaXhlZCBzbm1wLWJyaWRnZS1taWIgd2hlbiB3b3JraW5nIGluIHRoZSBlbWJlZGRlZCBwZXJsLgorCisyMDExLTAyLTE2IDEzOjE2ICBqc2FmcmFuZWsKKworICAgKiBsb2NhbC9zbm1wLWJyaWRnZS1taWI6CisKKyAgIEZpeGVkIEdFVE5FWFQgcHJvY2Vzc2luZyBpbiBzbm1wLWJyaWRnZS1taWIuCisKKzIwMTEtMDItMTUgMjI6MjQgIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmM6CisKKyAgIFByb3Blcmx5IHNhdmUgZW50cmllcyBmb3IgTmV0QlNEIGFuZCBEcmFnb25GbHkKKworMjAxMS0wMi0xNSAyMjoxOCAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmM6CisKKyAgIHJlbW92ZSByZWR1bmRhbnQgaW5jbHVkZXMKKworMjAxMS0wMi0xNSAyMTo0NiAgbmJhCisKKyAgICogY29uZmlndXJlOgorCisgICByZXJ1biBhdXRvaGVhZGVyL2F1dG9jb25mCisKKzIwMTEtMDItMTUgMjE6MzMgIG5iYQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oOgorCisgICBpbmNsdWRlIHN5cy90eXBlcy5oIGJlZm9yZSBzeXMvc29ja2V0LmgKKworMjAxMS0wMi0xNSAyMToyNiAgbmJhCisKKyAgICogbTQvbmV0c25tcF9zZWFyY2hfbGlicy5tNDoKKworICAgVG9vIG11Y2ggcXVvdGluZyBpcyBiYWQKKworMjAxMS0wMi0xNSAyMToxMSAgbmJhCisKKyAgICogIGFnZW50L21pYmdyb3VwL21pYklJLmgsIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuaDoKKworICAgRml4IElQdjYgVENQIGFuZCBVRFAgdGFibGVzLCAqQlNEIHN1cHBvcnQKKworMjAxMS0wMi0xNSAyMDo0NSAgbmJhCisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdENvbmYuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cFZhbHVlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwUmVzdWx0c1RhYmxlLmM6CisKKyAgIEtpbGwgY29tcGlsZXIgd2FybmluZ3MKKworMjAxMS0wMi0xNSAyMDo0NCAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYzoKKworICAgRmlsdGVyIElQdjYgZW50cmllcyBmcm9tIElQdjQgdGFibGUKKworMjAxMS0wMi0xNSAyMDo0MiAgbmJhCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fa2luZm8uYzoKKworICAgUHJvcGVyIHVzZSBvZiBnZXRwcm9jMiBhbmQgZHJhZ29uZmx5IHN1cHBvcnQKKworMjAxMS0wMi0xNSAyMDo0MSAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX2dldGZzc3RhdHMuYzoKKworICAgZ2V0dmZzc3RhdCBpcyBvbmx5IGZvciBOZXRCU0QKKworMjAxMS0wMi0xNSAyMDozOSAgbmJhCisKKyAgICogY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMxLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczI6CisKKyAgIERldGVjdCBuZWVkIGZvciAtbGt2bSBpbiBwcm9wZXIgdGltZQorCisyMDExLTAyLTE1IDE5OjQyICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIvc25tcF9sb2dnaW5nLmM6CisKKyAgIHJlbW92ZSB0aGUgc3RhdGVtZW50IGFib3V0IGVuYWJsaW5nIHN0ZGVyciBieSBkZWZhdWx0LgorCisyMDExLTAyLTE1IDE5OjQyICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jOgorCisgICByZW1vdmUgMyBmdW5jdGlvbnMgdGhhdCBhcyBmYXIgYXMgSSBjYW4gdGVsbCBoYXZlIHBvc3NpYmx5IG5ldmVyCisgICBiZWVuIHVzZWQKKworMjAxMS0wMi0xNCAxNDozOCAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9zbm1wZC5jOgorCisgICBGaXhlZCBhIE1pbkdXLXNwZWNpZmljIGNvbXBpbGVyIHdhcm5pbmcuCisKKzIwMTEtMDItMTMgMTY6MjggIG1hZ2ZyCisKKyAgICogbmV0LXNubXAtY29uZmlnLmluOgorCisgICBDSEFOR0VTOiBNYWtlIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIHN0YXRpYyBhcHBsaWNhdGlvbnMgdXNpbmcKKyAgIG5ldC1zbm1wLWNvbmZpZyBhbmQgdGhlIC0qbGlicyBmbGFncyBvbmNlIG1vcmUuCisKKzIwMTEtMDItMTAgMTU6MTMgIGR0czEyCisKKyAgICogc25tcGxpYi9taWIuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzE2NTg3ODogQ2F0Y2ggYnVmZmVyIG92ZXJydW4gb24KKyAgIDY0LWJpdCBzeXN0ZW1zCisKKzIwMTEtMDItMTAgMTU6MDYgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzE1MjQxMjogSGFuZGxlIChhbmQgcmVwb3J0KSBwcm9ibGVtcworICAgcmVhZGluZyAvcHJvYy92bXN0YXQKKworMjAxMS0wMi0wOSAwNzozNCAgYnZhc3NjaGUKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg6CisKKyAgIEJ1aWxkaW5nIERMTCBhbmQgUGVybCBtb2R1bGVzIHdpdGggd2luMzIvYnVpbGQuYmF0IHdvcmtzIGFnYWluLgorCisyMDExLTAyLTA4IDE5OjM4ICBoYXJkYWtlcgorCisgICAqIGFnZW50L2hlbHBlcnMvaW5zdGFuY2UuYywgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oOgorCisgICBSZW1vdmUgdGhlIGZ1bmN0aW9ucyBtYXJrZWQgYXMgZGVwcmVjYXRlZCBhbmQgc2FmZSBmb3IgcmVtb3ZhbCBpbgorICAgNS42LgorCisyMDExLTAyLTA4IDE3OjQxICBoYXJkYWtlcgorCisgICAqIHBlcmwvU05NUC9TTk1QLnhzLCBwZXJsL2FnZW50L2FnZW50LnBtOgorCisgICBDSEFOR0VTOiBwZXJsOiBwYXRjaCBmcm9tIE1hcnRpbiBCdWNrOiBkb24ndCBhbHdheXMgb3BlbiBzdGRlcnIKKyAgIGFzIHRoZSBjYWxscyB0byBzbm1wX2xvZyBhbHJlYWR5IGRvIHRoaXMgYW5kIGl0IG1lc3NlcyB1cCB0aGUKKyAgIGFnZW50IHdoZW4gZW1iZWRkZWQKKworMjAxMS0wMi0wOCAxNzozNyAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBGaXggYSBzdHJsZW4gY2FsY3VsYXRpb24gYXMgcG9pbnRlZCBvdXQgYnkKKyAgIEtvbnN0YW50aW4gQmF5ZGFyb3YKKworMjAxMS0wMi0wNyAyMDowNyAgaGFyZGFrZXIKKworICAgKiBtYW4vc25tcC5jb25mLjUuZGVmOgorCisgICBkb2N1bWVudCB0aGUgMyBuZXcgU1NIIGNvbmZpZyB0b2tlbnMKKworMjAxMS0wMi0wNyAyMDowNyAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5jOgorCisgICBDSEFOR0VTOiBsaWJuZXRzbm1wOiBtYWRlIHRoZSBTU0ggdHJhbnNwb3J0IGNvbmZpZ3VyYWJsZSBhcyBpdAorICAgc2hvdWxkIGJlLgorCisyMDExLTAyLTA3IDIwOjA3ICBoYXJkYWtlcgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmg6CisKKyAgIEFkZGVkIGRlZmF1bHRfc3RvcmUgc3RyaW5ncyBmb3Igc3NoOiB1c2VybmFtZSwgcHVia2V5LCBwcml2a2V5CisKKzIwMTEtMDItMDYgMDY6MzQgIG1hZ2ZyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jOgorCisgICBTaW1wbGlmeSB0aGUgY29udHJvbCBmbG93IHRvIGFsbG93IGZvciBtb3JlIG9wdGltaXphdGlvbi4KKworMjAxMS0wMi0wMyAyMjo0MiAgdGFuZGVycworCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzMTcxODc4OiBVc2luZyBTTk1QdjMgY29udGV4dCBkb2VzIG5vdAorICAgd29yaworCisyMDExLTAyLTAyIDA3OjA5ICBtYWdmcgorCisgICAqIGFnZW50L3NubXBkLmM6CisKKyAgIEluY2x1ZGUgdGhlIFVTSU5HXyB2YXJpYWJsZXMgZnJvbSB0aGUgYWdlbnQgbGlicmFyeSBhcyB3ZWxsLCBpbgorICAgcGFydGljdWxhciB0aGUKKyAgIFVTSU5HX0FHRU5UWF8qIHZhcmlhYmxlcy4KKworMjAxMS0wMi0wMSAxMzowNyAganNhZnJhbmVrCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2NvbW1vbi5jOgorCisgICBEb24ndCBjaGVjayBmb3IgMzIvNjRiaXQgd3JhcCBpbiBjYWxjdWxhdGVkIGVudHJpZXMuCisKKzIwMTEtMDItMDEgMDk6NDEgIGpzYWZyYW5laworCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19jb21tb24uYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkIHRoZSBhZ2VudCB3cml0aW5nICdsb29rcyBsaWtlIGEgNjRiaXQgd3JhcCwKKyAgIGJ1dCBwcmV2IT1uZXcnIGluIHN5c2xvZyB3aGVuIGNvbXB1dGluZyBpcFN5c3RlbVN0YXRzCisgICAKKyAgIFdpdGhvdXQgdGhlIG1lbWNweSwgcHJldl92YWxzLT5zdGF0cyBhbmQgbmV3X3ZhbHMtPnN0YXRzIGNvdWxkCisgICBnZXQgZGlmZmVyZW50LAorICAgd2hpY2ggY291bGQgbXVjaCBtdWNoIGxhdGVyICh3aGVuIGEgY291bnRlciBnZXRzIGJpZ2dlciB0aGFuIDMyCisgICBiaXRzKSByZXN1bHQKKyAgIGluICdwcmV2IT1uZXcnIG1lc3NhZ2UgaW4gc3lzbG9nLiBUeXBpY2FsbHkgdGhpcyBoYXBwZW5zIGFmdGVyCisgICBsb25nIHRpbWUgb2YKKyAgIHVwdGltZSBhbmQgaXQgaXMgdmVyeSBoYXJkIHRvIHJlcHJvZHVjZS4KKworMjAxMS0wMi0wMSAwNzoxOSAgbWFnZnIKKworICAgKiBhZ2VudC9zbm1wZC5jOgorCisgICBSZW1vdmUgc29tZSB1bnVzZWQgaW5jbHVkZXMKKworMjAxMS0wMS0zMSAyMjozOSAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmM6CisKKyAgIGFkZHByb3RvdHlwZXMgYW5kIHJlbW92ZSB1bnVzZWQgdmFycworCisyMDExLTAxLTMxIDIyOjM3ICBuYmEKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbi5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3QuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cFZhbHVlVGFibGUuYywgICAKKyAgICAgIGFwcHMvc25tcG5ldHN0YXQvaW5ldDYuYzoKKworICAgY29uc3QganVnZ2xpbmcgdG8gcmVtb3ZlIHdhcm5pbmdzCisKKzIwMTEtMDEtMzEgMjI6MzAgIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jOgorCisgICBkaXNraW8gZm9yIGRyYWdvbmZseQorCisyMDExLTAxLTMxIDIyOjI4ICBuYmEKKworICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2tpbmZvLmM6CisKKyAgIHByb3Blcmx5IG5hbWUgaW5pdGFsaXplciBmdW5jdGlvbiBmb3IgY3B1X2tpbmZvCisKKzIwMTEtMDEtMzAgMTU6MjEgIG1hZ2ZyCisKKyAgICogYXBwcy9hZ2VudHh0cmFwLmM6CisKKyAgIFJlZHVjZSB0aGUgbnVtYmVyIG9mIHVzZWQgaW5jbHVkZSBmaWxlcy4KKworMjAxMS0wMS0zMCAwOTozNSAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmg6CisKKyAgIENIQU5HRVM6IHNubXBkOiBBZGQgbWlzc2luZyBmdW5jdGlvbiBkZWNsYXJhdGlvbgorCisyMDExLTAxLTMwIDAxOjA2ICB0YW5kZXJzCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDMxNTE4OTc6IGZkIGxlYWsgdy8gL3Byb2MvcGFydGl0aW9ucworICAgcmVhZCBpbiBkaXNraW8KKworMjAxMS0wMS0yOSAyMzozNiAgdGFuZGVycworCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmM6CisKKyAgIE5FV1M6IHNubXBkOiBCVUc6IDMxNjY1Njg6IGhyU3lzdGVtUHJvY2Vzc2VzIG1pc3NpbmcgaW4gNS42LzUuNi4xCisKKzIwMTEtMDEtMjcgMDk6MzUgIGR0czEyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgQWZ0ZXIgdGVuIHllYXJzIGludGVuc2l2ZSB1c2UsIGFuICJleHBlcmltZW50YWwiCisgICBmZWF0dXJlIGNhbiBwcm9iYWJseSBiZSByZWxlYXNlZCBmb3IgZ2VuZXJhbCB1c2UuCisKKzIwMTEtMDEtMjYgMTY6NTAgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWliMmM6CisKKyAgIENIQU5HRVM6IG1pYjJjOiBtYWtlIHRoZSBtaWIyYyBmb3JlYWNoIHJhbmdlcyB3b3JrIGFzIGFkdmVydGlzZWQKKyAgIGluIHRoZSBjb21tZW50cy4KKworMjAxMS0wMS0yNiAxNjo0OSAgaGFyZGFrZXIKKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMjdzbm1wdjNEZWZhdWx0c19zaW1wbGU6CisKKyAgIGEgdGVzdCB0byBlbnN1cmUgdjMvVVNNIHNubXAuY29uZiBzZXR0aW5ncyB3b3JrCisKKzIwMTEtMDEtMjYgMTY6NDkgIGhhcmRha2VyCisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CisKKyAgIHJlbW92ZSB0ZXN0b3B0cworCisyMDExLTAxLTI2IDA5OjEyICBqc2FmcmFuZWsKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm9jLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCByYXJlIHJhY2UgY29uZGl0aW9uIHdoZW4gY291bnRpbmcgcHJvY2Vzc2VzCisgICBmb3IgVUNELVNOTVAtTUlCOjpwclRhYmxlCisgICAKKyAgIFRoZSBYWCBwcm9jZXNzIGNhbiBleGl0IGFmdGVyIGZvcGVuKC9wcm9jL1hYL3N0YXR1cykgYW5kIGJlZm9yZQorICAgZmdldHMoKSBmcm9tIGl0LiBzbm1wZCBzaG91bGQgY29udGludWUgd2l0aCBvdGhlciBwcm9jZXNzZXMgYW5kCisgICBub3QgdG8gc3RvcC4KKworMjAxMS0wMS0xOSAxMzo1NyAganNhZnJhbmVrCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczE6CisKKyAgIE1ha2UgdXMgY29tcGF0aWJsZSB3aXRoIHJwbS00LjksIHJwbUdldEZpbGVzeXN0ZW1MaXN0IGRvZXMgbm90CisgICBleGlzdCBhbnltb3JlLCBzbyB0aGUgY29uZmlndXJlIHNjcmlwdCBzaG91bGQgbm90IGNoZWNrIGl0LgorCisyMDExLTAxLTE5IDA2OjMxICBuYmEKKworICAgKiBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczE6CisKKyAgIGRpc2tJT0xBeCByZXF1aXJlcyBleHAgd2hpY2ggbWF5IHJlcXVpcmUgLWxtCisKKzIwMTEtMDEtMTggMjI6MzkgIG5iYQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIGF1dG9oZWFkZXIKKworMjAxMS0wMS0xOCAyMjozNyAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oOgorCisgICBGaW5kIHByb3BlciBpZi1taWIgaW50ZXJmYWNlIGZvciBOZXRCU0QKKworMjAxMS0wMS0xOCAyMjozNiAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOgorCisgICB0eXBvCisKKzIwMTEtMDEtMTggMjI6MzUgIG5iYQorCisgICAqIGFjY29uZmlnLmg6CisKKyAgIGRlZmluZSBkcmFnb25mbHlpZAorCisyMDExLTAxLTE0IDEzOjI0ICBqc2FmcmFuZWsKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2RhdGFfYWNjZXNzLmM6CisKKyAgIEFkZCBJUHY2IHN1cHBvcnQgZm9yIGNyZWF0aW5nIHJvd3MgaW4gaXBBZGRyZXNzdGFibGUuCisgICAKKyAgIFVzaW5nIFNOTVAgU0VULCBpdCBpcyBub3cgcG9zc2libGUgdG8gY3JlYXRlIGFuZCBkZXN0cm95IElQdjYKKyAgIGFkZHJlc3NlcyBvbiBhbiBpbnRlcmZhY2UuCisKKzIwMTEtMDEtMTQgMTI6MjggIGpzYWZyYW5laworCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogZnJvbSBSb2JlcnQgU3Rvcnk6IGZpeGVkIGFkZGluZyBuZXcgYWRkcmVzc2VzIHRvCisgICBpcEFkZHJlc3NUYWJsZQorICAgCisgICBMb25nIHRpbWUgYWdvLCB0aGVyZSB3YXMgYSBidWdyZXBvcnRbMV0gcmVnYXJkaW5nIGlwQWRkcmVzc1RhYmxlCisgICBvbgorICAgbmV0LXNubXAtY29kZXJzIGxpc3QgYW5kIHJzdG9yeSdzIGV4cGVyaW1lbnRhbCBwYXRjaCB3aXRob3V0IGFueQorICAgZmVlZGJhY2suCisgICBOb3cgSSd2ZSBnb3QgZmV3IGNvbXBsYWludHMgdGhhdCBTTk1QIFNFVCBvbiBpcEFkZHJlc3NUYWJsZQorICAgcHJvZHVjZXMgdGhlCisgICBzYW1lIGVycm9ycyBhbmQgZ3Vlc3Mgd2hhdCwgdGhlIHBhdGNoIGZpeGVzIHRoZW0uCisgICAKKyAgIFsxXToKKyAgIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvbWFpbGFyY2hpdmUvZm9ydW0ucGhwP3RocmVhZF9uYW1lPTIwMDYwOTIwMTM0OTM1LjM1YjM2ZWQ2JTQwZGV2LmZ1dHoub3JnJmZvcnVtX25hbWU9bmV0LXNubXAtY29kZXJzCisKKzIwMTEtMDEtMTQgMDY6MjUgIHJzdG9yeQorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jOgorCisgICByZW1vdmUgY29tcGxldGVseSB1c2VsZXNzIGFuZCBub25zZW5zaWNhbCBjb2RlCisKKzIwMTEtMDEtMTMgMTc6MjQgIHJzdG9yeQorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOgorCisgICBhbGxvY2F0ZSBzcGFjZSBmb3IgYXJyYXkgTlVMTCB0ZXJtaW5hdGlvbgorCisyMDExLTAxLTEzIDE1OjU2ICBkdHMxMgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2UueG1sOgorCisgICBFbnN1cmUgcmVsZWFzZXMgYXJlIGluc3RhbGxlZCB0byB0aGUgY29ycmVjdCBwYXRoIHdpdGhpbiB0aGUKKyAgIC90YWdzIFNWTiB0cmVlCisKKzIwMTEtMDEtMTMgMTU6MTUgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX25ldGJzZC5jOgorCisgICBSZW1vdmUgQysrIGNvbW1lbnRzCisKKzIwMTEtMDEtMTMgMTM6MTcgIGR0czEyCisKKyAgICogYWdlbnQvYXV0b19ubGlzdC5jOgorCisgICBGaXggYnJva2VuIHBhdGNoCisKKzIwMTEtMDEtMTMgMTI6MTQgIGR0czEyCisKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczE6CisKKyAgIENvbmZpZ3VyZSBmaXhlcyBmb3IgRHJhZ29uRmx5IHN1cHBvcnQKKworMjAxMS0wMS0xMyAxMjowNCAgZHRzMTIKKworICAgKiAgYWdlbnQvYXV0b19ubGlzdC5jLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYywgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZHJhZ29uZmx5Lmg6CisKKyAgIENvZGUgZml4ZXMgZm9yIERyYWdvbkZseSBzdXBwb3J0CisKKzIwMTEtMDEtMTMgMTE6MzMgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9uZXRic2QuYzoKKworICAgRml4IHR5cG8KKworMjAxMS0wMS0xMiAyMToyMyAgcnN0b3J5CisKKyAgICogYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jOgorCisgICBtZXJnZSBkdXBsaWNhdGVkIHNodXRkb3duIGZ1bmN0aW9ucworCisyMDExLTAxLTEyIDIwOjExICBidmFzc2NoZQorCisgICAqICBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmg6CisKKyAgIFJlaW1wbGVtZW50IG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IyKCkgYnkgYWRkaW5nIHRoZSBmbGFnCisgICBORVRTTk1QX0lURVJBVE9SX09XTlNfSUlORk8gZm9yCisgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8uIFJlbW92ZQorICAgbmV0c25tcF9nZXRfdGFibGVfaXRlcmF0b3JfaGFuZGxlcjIoKSBiZWNhdXNlIGl0IGlzIG5vdworICAgc3VwZXJmbHVvdXMuCisKKzIwMTEtMDEtMTIgMTk6MjIgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvc25tcF92YXJzLmM6CisKKyAgIEF2b2lkIHRoYXQgdGhlIGNvbXBpbGVyIGNvbXBsYWlucyBhYm91dCBhIG1pc3NpbmcgZGVjbGFyYXRpb24gZm9yCisgICBuZXRzbm1wX2NlcnRzX2FnZW50X2luaXQoKS4KKworMjAxMS0wMS0xMiAxOToyMCAgYnZhc3NjaGUKKworICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIUGFyYW1ldGVycy91c21ESFBhcmFtZXRlcnMuYzoKKworICAgR2V0IHJpZCBvZiBhIGNvbXBpbGVyIHdhcm5pbmcgaW4KKyAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIUGFyYW1ldGVycy91c21ESFBhcmFtZXRlcnMuYy4KKworMjAxMS0wMS0xMiAxOTowNCAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYzoKKworICAgRml4ZWQgYSBjb21waWxlciB3YXJuaW5nIChmb3JtYXQgc3BlY2lmaWNhdGlvbiBtaXNtYXRjaCkgdGhhdCB3YXMKKyAgIGludHJvZHVjZWQKKyAgIGluIHIxOTgwOCAoInNubXBkOiBQQVRDSEVTOiAyOTc1MjU0OiBBdm9pZCBjYWxsYmFjayByZS11c2Ugb2YKKyAgIGNsb3NlZCBzZXNzaW9ucyIpLgorCisyMDExLTAxLTEyIDE1OjAzICByc3RvcnkKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jOgorCisgICBDSEFOR0VTOiBzbm1wOiBwYXRjaDogMzA5NjcyNTogc3lzT1JUYWJsZSByZWdpc3RhdGlvbiBmb3IKKyAgIG5vdGlmaWNhdGlvbiBsb2cgbWliCisgICAKKyAgIG9yaWdpbmFsIHBhdGNoIGZpeGVkIHNldmVyYWwgaXNzdWVzLCBvdGhlciBwYXJ0cyBhcHBsaWVkIGVhcmxpZXIKKworMjAxMS0wMS0xMSAxNzoyNyAgcnN0b3J5CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0Lmg6CisKKyAgIGRvIG5vdCBpbmNsdWRlIGlwdjYgc3RydWN0IGlmIGlwdjYgaXMgbm90IGVuYWJsZWQKKworMjAxMS0wMS0xMSAxNjowNCAgZHRzMTIKKworICAgKiBvdi9VQ0QtZmllbGRzLCBvdi9vaWRfdG9fc3ltLmluLCBvdi9vaWRfdG9fdHlwZS5pbjoKKworICAgUmVjb2duaXNlIEFnZW50IE9JRCBmb3IgRHJhZ29uRmx5IHN5c3RlbXMgKGFuZCBnZW5lcmFsIHRpZHlpbmcKKyAgIHVwKQorICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCisgICAKKyAgIFFuOiBTaG91bGQgdGhlc2UgYmUgdXBkYXRlZCB0byByZWZlciB0byBOZXQtU05NUCAocmF0aGVyIHRoYW4KKyAgIFVDRCk/CisKKzIwMTEtMDEtMTEgMTY6MDEgIGR0czEyCisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIG1pYnMvTkVULVNOTVAtVEMudHh0LCAgIAorICAgICAgbWlicy9VQ0QtU05NUC1NSUIudHh0LCBzZWRzY3JpcHQuaW46CisKKyAgIERlZmluZSBBZ2VudCBPSUQgZm9yIERyYWdvbkZseSBzeXN0ZW1zCisgICAoYW5kIGdlbmVyYWwgdGlkeWluZyB1cCkKKyAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQorCisyMDExLTAxLTExIDE1OjI3ICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmM6CisKKyAgIE5ldEJTRCBEcmFnb25GbHkgc3VwcG9ydCBmb3IgVURQICYgVENQIHRhYmxlcworICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMTEgMTQ6NDEgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9raW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9raW5mby5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIuYzoKKworICAgQ0hBTkdFUzogTmV0QlNEOiBEcmFnb25GbHkgc3VwcG9ydAorICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMTEgMTQ6MzYgIGR0czEyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnM6CisKKyAgIE5ldEJTRC9EcmFnb25GbHkgJ3N0cnVjdCBpZm5ldCcgcmVxdWlyZXMgS0VSTkVMLCBidXQgbm90IF9LRVJORUwKKyAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQorICAgKEkgaG9wZSBJJ3ZlIGdvdCB0aGlzIG9uZSByaWdodCEpCisKKzIwMTEtMDEtMTEgMTM6MzQgIGpzYWZyYW5laworCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBmcm9tIEJpbGwgRmVubmVyOiBmaXggc2VuZGluZyBvZiBVRFAgcmVzcG9uc2VzCisgICBmcm9tIG11bHRpaG9tZWQgYWdlbnRzLgorICAgCisgICBUcnkgdG8gc2VuZCB0aGUgcmVzcG9uc2UgYXMgaXQgd2FzIGJlZm9yZSBOZXQtU05NUCA1LjYgKGFzc3VtaW5nCisgICB0aGUgYXBwcm9wcmlhdGUgcmVxdWVzdCB3YXMgdW5pY2FzdCkgYW5kIG9ubHkgaWYgaXQgZmFpbHMgdHJ5IHRvCisgICBzZXQgaWZfaW5kZXggKHRoZSByZXF1ZXN0IG11c3QgYmUgYnJvYWRjYXN0KS4KKworMjAxMS0wMS0xMSAxMzoyMiAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmM6CisKKyAgIFJlYWxseSBoYW5kbGUgc3lzdGVtcyB3aXRoICdzdHJ1Y3QgdGltZXNwZWMgaWZuZXQuaWZfbGFzdGNoYW5nZScKKyAgIChtaXNzaW5nIGVsZW1lbnQgZnJvbSBTVk4gcmV2aXNpb24gMTk4NDEpCisKKzIwMTEtMDEtMTEgMTI6MjQgIGR0czEyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVyczoKKworICAgQWRkaXRpb25hbCBoZWFkZXJzIHdoZW4gdGVzdGluZyBmb3IgSVB2NiBoZWFkZXJzCisgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KKworMjAxMS0wMS0xMSAxMjoxNCAgZHRzMTIKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYzoKKworICAgTWlzc2luZyB0eXBlIHVuZGVyIGRhcndpbgorICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMTEgMTI6MTAgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmM6CisKKyAgIE5ldEJTRCBzdXBwb3J0IGZvciBEaXNrIEkvTyBzdGF0cworICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMTEgMTI6MDEgIGR0czEyCisKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX3N0cnVjdF9tZW1iZXJzLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgSGFuZGxlIHN5c3RlbXMgd2l0aCAnc3RydWN0IHRpbWVzcGVjIGlmbmV0LmlmX2xhc3RjaGFuZ2UnIChyYXRoZXIKKyAgIHRoYW4gc3RydWN0IHRpbWV2YWwpCisgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KKworMjAxMS0wMS0xMSAxMToyNyAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5oLCBhZ2VudC9taWJncm91cC9taWJJSS9pcC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmgsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5oOgorCisgICBQdWxsIGluIGtlcm5lbF9uZXRic2QgbW9kdWxlIHdoZW4gcmVxdWlyZWQKKyAgIFtCYXNlZCBvbiBmaXggZnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KKworMjAxMS0wMS0xMSAxMDozNiAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS9pcC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX25ldGJzZC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX25ldGJzZC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvbWliSUlfY29tbW9uLmgsIGFnZW50L21pYmdyb3VwL21pYklJL3RjcC5jLCAgCisgICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmMsIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL25ldGJzZC5oOgorCisgICBDSEFOR0VTOiBOZXRCU0Q6IFJldHJpZXZlIE1JQi1JSSBuZXR3b3JrIHN0YXRpc3RpY3MgdmlhIHN5c2N0bAorICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMTEgMDc6MDQgIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYzoKKworICAgRml4IGZvciBwY2lfbG9va3VwX25hbWUgYW5kIFJIRUw0CisKKzIwMTEtMDEtMTAgMTY6NTYgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvcm91dGVfd3JpdGUuYzoKKworICAgQWRkIHN1cHBvcnQgZm9yIGRhcndpbgorICAgKFRoZSBwYXRjaCBmcm9tIHRoZSBOZXRCU0QgYXJjaGl2ZSBhcHBlYXJzIHRvIGJlIGVzc2VudGlhbGx5IHRoZQorICAgc2FtZSBhcyB0aGUgZXF1aXZhbGVudCBjb2RlIGZyb20gdGhlIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZSkKKworMjAxMS0wMS0xMCAxNjo1NCAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX25ldHdvcmsuYzoKKworICAgQWRkIHN1cHBvcnQgZm9yIGRhcndpbgorICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMTAgMTQ6NTUgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X25ldGJzZC5jOgorCisgICBDSEFOR0VTOiBOZXRCU0Q6IFVwZGF0ZSBtZW1vcnkgYW5kIENQVSBzdGF0aXN0aWNzIGhhbmRsaW5nCisgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KKworMjAxMS0wMS0xMCAxNDoyMiAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuYzoKKworICAgRml4IGRpdmlkZS1ieS16ZXJvIGVycm9yIGluIENQVSBwZXJmb3JtYW5jZSBzdGF0aXN0aWNzCisgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KKworMjAxMS0wMS0wOSAyMjo1NCAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9raW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jLCBjb25maWd1cmUsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczI6CisKKyAgIENIQU5HRVM6IE9wZW5CU0Q6IFVwZGF0ZSBTV1J1biBjb2RlIHRvIHVzZSBrdm1fZ2V0cHJvYzIKKyAgIFtGcm9tIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KKworMjAxMS0wMS0wOSAyMTozMCAgZHRzMTIKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzOgorCisgICBDSEFOR0VTOiBidWlsZDogT3BlbkJTRDogRml4IG9yZGVyIG9mIGhlYWRlcnMgd2hlbiBjaGVja2luZworICAgPG5ldGluZXQvaW5fcGNiLmg+CisgICBbRnJvbSBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMDkgMTk6NDQgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9zeXNjdGwuYzoKKworICAgQW1lbmQgaG93IG11bHRpLUNQVSBzdGF0aXN0aWNzIGFyZSByZXRyZWl2ZWQgdXNpbmcgc3lzY3RsIG9uCisgICBPcGVuQlNEIHN5c3RlbXMKKyAgIChpZiB0aGlzIGJsb2NrIHdhcyBhY3RpdmUsIHdoaWNoIGl0IGlzbid0LCBidXQgdGhhdCdzIG5vdAorICAgaW1wb3J0YW50IHJpZ2h0IG5vdCkKKyAgIFtCYXNlZCBvbiBPcGVuQlNEIHBhdGNoIGFyY2hpdmUsIGFtZW5kZWQgKHByb2JhYmx5IHdyb25nbHkpIGJ5CisgICBEVFNdCisKKzIwMTEtMDEtMDkgMTg6MTMgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uYywgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jLCAKKyAgICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2JzZGk0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5jOgorCisgICBzeXNjdGwgdGFrZXMgYSAnc2l6ZV90JyB2YXJpYWJsZSBmb3IgdGhlIHNpemUgcGFyYW1ldGVyCisKKzIwMTEtMDEtMDkgMTg6MTEgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbmxpc3QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X25ldGJzZC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9raW5mby5jOgorCisgICBzeXNjdGwgdGFrZXMgYSAnc2l6ZV90JyB2YXJpYWJsZSBmb3IgdGhlIHNpemUgcGFyYW1ldGVyCisKKzIwMTEtMDEtMDggMDg6MzAgIG1hZ2ZyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19zZWN1cml0eV9tb2R1bGVzOgorCisgICBDSEFOR0VTOiBidWlsZGluZzogRml4IC0td2l0aC1zZWN1cml0eS1tb2R1bGVzIGhhbmRsaW5nCisgICBBbGxvdyByZXBlYXRlZCBtb2R1bGVzICh0c20sdHNtKSBhcyB3ZWxsIGFzIGRlZmFpbHQgbW9kdWxlcyAodXNtKQorICAgTW92ZSB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgZmlsZXMgYWZ0ZXIgdGhlIGNoZWNraW5nCisKKzIwMTEtMDEtMDggMDA6NDcgIG1hZ2ZyCisKKyAgICogYWNjb25maWcuaCwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgVXBkYXRlIGFjY29uZmlnLmggd2l0aCBjaGFuZ2VzIGZyb20gcjE5ODE5LgorICAgUmVydW4gYXV0b2hlYWRlci4KKworMjAxMS0wMS0wNyAyMDo1NiAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV93cml0ZS5jOgorCisgICBDSEFOR0VTOiBPcGVuQlNEOiBTdXBwb3J0IHVwZGF0aW5nIHRoZSByb3V0aW5nIHRhYmxlCisgICBbRnJvbSBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMDcgMjA6MjkgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYzoKKworICAgU2V0ICduZXh0JyBmaWVsZCBmb3IgdWRwIGVudHJ5IGxpbmtlZCBsaXN0IG9uIE9wZW5CU0Q0CisgICBbRnJvbSBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCisgICAKKyAgIFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIHNldCBpbiA8bmV0LXNubXAvc3lzdGVtL29wZW5ic2QuaD4KKworMjAxMS0wMS0wNyAyMDoxMiAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9tdGFfc2VuZG1haWwuYzoKKworICAgVXNlIGEgc3VpdGFibGUgY29uc3RhbnQgZm9yIENXRCBidWZmZXIgc2l6ZQorICAgW0Jhc2VkIG9uIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KKworMjAxMS0wMS0wNyAyMDowNyAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmM6CisKKyAgIE1vdmUgZ2xvYmFsIHZhcmlhYmxlIGludG8gdGhlIG1ldGhvZCB3aGVyZSBpdCdzIHVzZWQuCisgICBbRnJvbSBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMDcgMTY6NDggIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zeXNjdGwuYzoKKworICAgSGFuZGxlIHN5c3RlbXMgd2l0aG91dCBJRk1fVE9LRU4KKyAgIFtGcm9tIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KKworMjAxMS0wMS0wNyAxNDozOCAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2ZyZWVic2QuYzoKKworICAgVXBkYXRlIHJldHJpZXZhbCBvZiBjYWNoZSB1c2FnZSBzdGF0aXN0aWNzIG9uIEZyZWVCU0QKKyAgIFtGcm9tIEZyZWVCU0QgcGF0Y2ggYXJjaGl2ZV0KKworMjAxMS0wMS0wNyAxNDoyMCAgZHRzMTIKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBJbmNyZWFzZSBtYXhpbXVtIHNpemUgb2YgZXhlY3V0ZSBvdXRwdXQgY2FjaGUKKyAgIFtGcm9tIEZyZWVCU0QgcGF0Y2ggYXJjaGl2ZV0KKworMjAxMS0wMS0wNyAxNDowOSAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmM6CisKKyAgIFJlbW92ZSBkdXBsaWNhdGUgaW5jbHVkZSBkaXJlY3RpdmVzCisgICBbRnJvbSBGcmVlQlNEIHBhdGNoZXMgYXJjaGl2ZV0KKworMjAxMS0wMS0wNyAxMzo0NyAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9hdC5jOgorCisgICBIYW5kbGUgc3lzdGVtcyB3aGVyZSBSVEZfTExJTkZPIGlzIG5vdCBkZWZpbmVkCisgICBbRnJvbSBGcmVlQlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMDcgMTM6NDAgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOgorCisgICBJbmNsdWRlIHpmcyBtb3VudCBwb2ludHMgZm9yIGRpc2sgcmVwb3J0cyB1bmRlciBGcmVlQlNECisgICBbRnJvbSBGcmVlQlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMDcgMTM6MzQgIGR0czEyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oOgorCisgICBQcm90ZWN0IGFnYWluc3QgbXVsdGlwbGUtaW5jbHVzaW9uCisgICBbRnJvbSBGcmVlQlNEIHBhdGNoZXMgYXJjaGl2ZV0KKworMjAxMS0wMS0wNyAxMzoyNCAgZHRzMTIKKworICAgKiAgc25tcGxpYi9jYWxsYmFjay5jLCBzbm1wbGliL2RlZmF1bHRfc3RvcmUuYywgc25tcGxpYi9rZXl0b29scy5jLCAgCisgICAgICAgc25tcGxpYi9sY2RfdGltZS5jLCBzbm1wbGliL21pYi5jLCBzbm1wbGliL3BhcnNlLmMsICAgCisgICAgICBzbm1wbGliL3NjYXBpLmMsIHNubXBsaWIvc25tcF9hdXRoLmMsIHNubXBsaWIvc25tcF9kZWJ1Zy5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wX2xvZ2dpbmcuYywgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wdXNtLmMsIHNubXBsaWIvdG9vbHMuYzoKKworICAgSW5jbHVkZSA8dW5pc3RkLmg+CisgICBbRnJvbSBCU0QgcGF0Y2hlcyBhcmNoaXZlXQorCisyMDExLTAxLTA3IDEzOjIxICBkdHMxMgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgQXZvaWQgY2FsbGJhY2sgcmUtdXNlIG9mIGNsb3NlZCBzZXNzaW9ucy4KKyAgIChQYXJ0IG9mIHBhdGNoICMyOTc1MjU0IC0gc2VlIFNWTiByZXZpc2lvbiAxOTgwOCkKKworMjAxMS0wMS0wNyAxMjo1NSAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmM6CisKKyAgIEZyZWVCU0QgdXNlcyBhIHNsaWdodGx5IGRpZmZlcmVudCBuYW1pbmcgc2NoZW1lIGZvciBzdHJ1Y3QgaWZyZXEKKyAgIFtGcm9tIEZyZWVCU0QgcGF0Y2hlcyBhcmNoaXZlXQorCisyMDExLTAxLTA3IDEyOjIyICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmM6CisKKyAgIEVuc3VyZSBUQ1AgdGFibGUgaW5mb3JtYXRpb24gaXMgbG9hZGVkIGJlZm9yZSBjb3VudGluZworICAgY29ubmVjdGlvbnMKKyAgIFtGcm9tIEZyZWVCU0QgcGF0Y2ggYXJjaGl2ZV0KKworMjAxMS0wMS0wNiAxOTozNSAgaGFyZGFrZXIKKworICAgKiBwZXJsL2FnZW50L2FnZW50LnBtOgorCisgICBGaXggZG9jdW1lbnRhdGlvbiBidWcgcG9pbnRlZCBvdXQgaW4gY3BhbiBidWcgIzUyNjE4CisKKzIwMTEtMDEtMDYgMTQ6MTEgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAyOTc1MjU0OiBBdm9pZCBjYWxsYmFjayByZS11c2Ugb2YgY2xvc2VkCisgICBzZXNzaW9ucworICAgCisgICBRbjogU2hvdWxkIHRoaXMgYWxzbyBiZSBhcHBsaWVkIHdoZW4gbWFpbiBzZXNzaW9uIGlzIE5VTEw/CisKKzIwMTEtMDEtMDYgMTM6MjEgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmM6CisKKyAgIEZpeCBtaXNsZWFkaW5nIGluZGVudGF0aW9uCisgICAKKyAgIFFuOiBTaG91bGQgdGhpcyBjYWxsICdzdWJhZ2VudF9zdGFydHVwJyByYXRoZXIgdGhhbgorICAgJ2FnZW50eF9yZW9wZW5fc2Vzc2lvbic/CisgICBRbjogV2h5IGRvZXNuJ3QgdGhpcyBhdHRlbXB0IHRvIHJlLW9wZW4gdGhlIHNlc3Npb24gaWYgaXQgd2FzCisgICBvcmlnaW5hbGx5IE5VTEw/CisKKzIwMTEtMDEtMDYgMTI6NDYgIGR0czEyCisKKyAgICogYWdlbnQvc25tcF9hZ2VudC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMjk0MTgxMTogSGFuZGxlIHN1Y2Nlc3NmdWwgcmVxdWVzdHMgd2l0aAorICAgcmVxSUQgMAorCisyMDExLTAxLTA2IDA5OjM4ICBidmFzc2NoZQorCisgICAqICBhZ2VudC9taWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUuYzoKKworICAgU3BlbGxpbmcgZml4OiBJbml0aWFsemllcyAtPiBJbml0aWFsaXplcy4KKworMjAxMS0wMS0wNiAwOTozNSAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jLCBhZ2VudC9taWJncm91cC9hZ2VudC9uc0NhY2hlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc0RlYnVnLmMsIGFnZW50L21pYmdyb3VwL2FnZW50L25zTG9nZ2luZy5jLCAKKyAgICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNNb2R1bGVUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQ2lkclJvdXRlVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmMsIAorICAgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbnRleHQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oOgorCisgICBDSEFOR0VTOiBhZ2VudDogQWRkZWQgbmV0c25tcF9nZXRfdGFibGVfaXRlcmF0b3IyKCkuCisgICBDSEFOR0VTOiBhZ2VudDogQWRkZWQgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcjIoKS4KKyAgIENIQU5HRVM6IGFnZW50OiBBZGRlZCBuZXRzbm1wX2hhbmRsZXJfb3duc19pdGVyYXRvcl9pbmZvKCkuCisgICBDSEFOR0VTOiBhZ2VudDogRml4ZWQgbGVhay1hdC1leGl0IHRyaWdnZXJlZCBieSBzbm1wTm90aWZ5VGFibGUuCisgICBDSEFOR0VTOiBhZ2VudDogRml4ZWQgbGVhay1hdC1leGl0IHRyaWdnZXJlZCBieQorICAgc25tcFRhcmdldEFkZHJUYWJsZS4KKyAgIEFsc28sIHJlc3RvcmVkIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IG9mCisgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yKCkuCisKKzIwMTEtMDEtMDYgMDQ6NDUgIHJzdG9yeQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oOgorCisgICBpbmNsdWRlIHN5cy9zb2NrZXQuaCBpZiBhdmFpbGFibGUKKworMjAxMS0wMS0wNSAxNDowNiAgZHRzMTIKKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6IDMxMzQzMjM6IEZpeCBjcmFzaCB3aGVuIGNvbXBhcmluZyBpbnZhbGlkCisgICBPSURzCisKKzIwMTEtMDEtMDUgMTQ6MDQgIGR0czEyCisKKyAgICogYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYzoKKworICAgQ0hBTkdFUzogc25tcHRyYXBkOiBCVUdTOiAzMTUxMjU0OiBGaXggY3Jhc2ggd2l0aCBpbnZhbGlkCisgICB0cmFwaGFuZGxlIGRpcmVjdGl2ZQorCisyMDExLTAxLTA1IDA5OjU1ICBkdHMxMgorCisgICAqIGFwcHMvc25tcHdhbGsuYzoKKworICAgRXhwYW5kIHRhYiBjaGFyYWN0ZXJzCisKKzIwMTEtMDEtMDQgMjI6MDYgIG1hZ2ZyCisKKyAgICogc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBDaGVjayB0aGF0IHRoZSBhcmd1bWVudCB0bworICAgbmV0c25tcF90cmFuc3BvcnRfY29weSBpcyBub24tTlVMTAorCisyMDExLTAxLTA0IDE4OjI0ICBoYXJkYWtlcgorCisgICAqIENPUFlJTkc6CisKKyAgIENvcHlyaWdodCB1cGRhdGUgZm9yIDIwMTEKKworMjAxMS0wMS0wNCAxMjowMSAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYzoKKworICAgRml4IGNvbXBpbGVyIHdhcm5pbmdzIHRyaWdnZXJlZCBieSB0aGUgV2luMzIgTUlCLUlJCisgICBpbXBsZW1lbnRhdGlvbi4KKworMjAxMS0wMS0wMyAxOTo0OCAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFycy5jOgorCisgICBSZW1vdmVkIHR3byB1bnVzZWQgdmFyaWFibGVzLgorCisyMDExLTAxLTAzIDE5OjQ3ICBidmFzc2NoZQorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYzoKKworICAgRml4ZWQgYSByZWNlbnRseSBpbnRyb2R1Y2VkIG1pc21hdGNoIGJldHdlZW4gZm9ybWF0IHNwZWNpZmljYXRpb24KKyAgIGFuZCBhcmd1bWVudCBsaXN0LgorCisyMDExLTAxLTAzIDE5OjQ3ICBidmFzc2NoZQorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5jOgorCisgICBHZXQgcmlkIG9mIHJlY2VudGx5IGludHJvZHVjZWQgY29tcGlsZXIgd2FybmluZ3MgYnkgYWRkaW5nIHR3bworICAgI2luY2x1ZGUgZGlyZWN0aXZlcyBhbmQgY29tbWVudGluZyBvdXQgdHdvIHVudXNlZCBmdW5jdGlvbnMuCisKKzIwMTEtMDEtMDIgMDU6NDggIHJzdG9yeQorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmM6CisKKyAgIGRvbid0IGZyZWUgY2FsbGVycyBwdHIKKworMjAxMS0wMS0wMiAwNTo0OCAgcnN0b3J5CisKKyAgICogIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmMsIGFnZW50L2hlbHBlcnMvdGFibGUuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jLCBhZ2VudC9zbm1wX2FnZW50LmMsICAgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L2lmLmMsIHNubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jLCAgIAorICAgICAgc25tcGxpYi9rZXl0b29scy5jLCBzbm1wbGliL21pYi5jLCBzbm1wbGliL3NubXBfYXBpLmMsICAgCisgICAgICBzbm1wbGliL3NubXB2My5jLCBzbm1wbGliL3Rvb2xzLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmMsICAgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9zbm1wdjMvVDA0MGtleW1hbmFnZXRlc3RfY2FwcC5jOgorCisgICBjbGVhbiB1cCBTTk1QX0ZSRUUgdXNhZ2UKKworMjAxMS0wMS0wMiAwNTo0NyAgcnN0b3J5CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5jOgorCisgICBmaXggY3V0LW4tcGFzdGUgZXJyb3IgaW4gZGVidWcgdG9rZW4KKworMjAxMS0wMS0wMiAwNTo0NyAgcnN0b3J5CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmg6CisKKyAgIGZpeCBmdW5jdGlvbiBuYW1lIGluIHByb3RvdHlwZQorCisyMDExLTAxLTAyIDA1OjQ2ICByc3RvcnkKKworICAgKiBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYzoKKworICAgZml4IGNvbXBpbGVyIHdhcm5pbmcKKworMjAxMS0wMS0wMiAwNTo0NiAgcnN0b3J5CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oLCBzbm1wbGliL2NvbnRhaW5lci5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiByZW1vdmUgaW5saW5lIHZlcnNpb25zIG9mIGNvbnRhaW5lciBmdW5jcworCisyMDExLTAxLTAyIDA1OjQ2ICByc3RvcnkKKworICAgKiBzbm1wbGliL2NlcnRfdXRpbC5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBkb250IHJldHVybiBlbXB0eSBhcnJheQorCisyMDExLTAxLTAyIDA1OjQ2ICByc3RvcnkKKworICAgKiBtYW4vc25tcGQuY29uZi41LmRlZiwgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmM6CisKKyAgIGZpeCB0eXBvcy9ncmFtbWFyIGluIG1hbiBwYWdlcy9jb21tZW50cyAobm8gY29kZSBjaGFuZ2VzKQorCisyMDExLTAxLTAyIDA1OjQ1ICByc3RvcnkKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jLCBweXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmM6CisKKyAgIE5FV1M6IHNubXBsaWI6IGFkZCBuZXcgdHJhbnNwb3J0IGNvbmZpZyB0b2tlbnMKKyAgIGxvY2FsQ2VydC9wZWVyQ2VydCwKKyAgIGRlcHJlY2F0ZSBvdXJfaWRlbnRpdHksIHRoZWlyX2lkZW50aXR5CisKKzIwMTEtMDEtMDIgMDU6NDUgIHJzdG9yeQorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oLCBtYW4vc25tcGNtZC4xLmRlZiwgICAKKyAgICAgIG1hbi9zbm1wZC5jb25mLjUuZGVmLCBzbm1wbGliL2NlcnRfdXRpbC5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmM6CisKKyAgIE5FV1M6IHNubXBsaWI6IGludHJvZHVjZSBuZXcgbG9jYWxDZXJ0L3BlZXJDZXJ0LCBkZXByZWNhdGUKKyAgIHNlcnZlckNlcnQsIGNsaWVudENlcnQsIGRlZlg1MDlTZXJ2ZXJQdWIsIGRlZlg1MDlDbGllbnRQdWIKKworMjAxMS0wMS0wMiAwNTo0NCAgcnN0b3J5CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVExTQmFzZURvbWFpbi5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgsICAgCisgICAgICBzbm1wbGliL3NubXBfdHJhbnNwb3J0LmMsIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jLCAKKyAgICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUQ1BJUHY2RG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU1RDUERvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYzoKKworICAgTkVXUzogc25tcGxpYjogYWRkIElQdjYgc3VwcG9ydCB0byBEVExTVURQIHRyYW5zcG9ydAorICAgQ0hBTkdFUzogc25tcGxpYjogdXNlIG5ldyBuZXRzbm1wX3NvY2thZGRyX3N0b3JhZ2UgaW4KKyAgIG5ldHNubXBfYWRkcl9wYWlyCisgICBDSEFOR0VTOiBzbm1wbGliOiBhZGQgYmFzZV90cmFuc3BvcnQgcHRyIGZvciB0dW5uZWxlZCB0cmFuc3BvcnRzCisKKzIwMTEtMDEtMDIgMDU6NDIgIHJzdG9yeQorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IHNraXAgbm9uLUFGX0lORVQgaW50ZXJmYWNlcyB3aGVuIGxvYWRpbmcgaXB2NAorICAgYWRkcnMKKwogMjAxMC0xMi0yOSAwMTozNyAgaGFyZGFrZXIKIAogICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYzoKQEAgLTkzOTcsMzcgKzMzODc0LDYgQEAKIAogICAgTkVXUzogc25tcGQ6IFBhdGNoIGZyb20gTmllbHMgdG8gZml4IFZBQ00gcGVyc2lzdGFudCBzdG9yYWdlLgogCi0yMDEwLTEyLTIxIDE2OjMzICBoYXJkYWtlcgotCi0gICAqIENIQU5HRVM6Ci0KLSAgIGZpeGVkIHRoZSBORVdTIGZpbGUgdG8gbWVudGlvbiA1LjYuMSBpbnN0ZWFkIG9mIDUuNwotCi0yMDEwLTEyLTIxIDE2OjMyICBoYXJkYWtlcgotCi0gICAqIE5FV1M6Ci0KLSAgIGZpeGVkIHRoZSBORVdTIGZpbGUgdG8gbWVudGlvbiA1LjYuMSBpbnN0ZWFkIG9mIDUuNwotCi0yMDEwLTEyLTIxIDE1OjUwICBoYXJkYWtlcgotCi0gICAqIENIQU5HRVM6Ci0KLSAgIHZlcnNpb24gdXBkYXRlCi0KLTIwMTAtMTItMjEgMTU6MDggIGhhcmRha2VyCi0KLSAgICogY29uZmlndXJlOgotCi0gICBmaXhlZCBhdXRvY29uZiB2ZXJzaW9uCi0KLTIwMTAtMTItMjEgMTU6MDcgIGhhcmRha2VyCi0KLSAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgICAKLSAgICAgIGRpc3QvbmV0LXNubXAuc3BlYzoKLQotICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCi0KIDIwMTAtMTItMjEgMTE6MjkgIGR0czEyCiAKICAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CkBAIC05NDYxLDEyICszMzkwNyw2IEBACiAgICBDSEFOR0VTOiBzbm1wZDogUGF0Y2ggZnJvbSBDbGF1cyBLbGVpbiB0byBmaXggZW5naW5laWQgZ2VuZXJhdGlvbgogICAgb24gb3V0Z29pbmcgdjMgdHJhcHMgZnJvbSB0aGUgYWdlbnQKIAotMjAxMC0xMi0xMCAwNToxOSAgaGFyZGFrZXIKLQotICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDoKLQotICAgZml4IG1ha2UgdGVzdCBvcHRpb25zCi0KIDIwMTAtMTItMDggMTM6MTcgIGpzYWZyYW5lawogCiAgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYzoKQEAgLTk0ODAsMjUgKzMzOTIwLDYgQEAKICAgIHRoZSBsb2FkaW5nCiAgICBvZiB0aGUgbGlzdCBhIGJpdC4KIAotMjAxMC0xMi0wOCAwNjoxNyAgaGFyZGFrZXIKLQotICAgKiBDSEFOR0VTLCBDaGFuZ2VMb2c6Ci0KLSAgIHVwZGF0ZSBmb3IgNS42LjEucHJlMgotCi0yMDEwLTEyLTA4IDA2OjAxICBoYXJkYWtlcgotCi0gICAqIGNvbmZpZ3VyZToKLQotICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCi0KLTIwMTAtMTItMDYgMjM6MjcgIGhhcmRha2VyCi0KLSAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgICAKLSAgICAgIGRpc3QvbmV0LXNubXAuc3BlYzoKLQotICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCi0KIDIwMTAtMTItMDYgMjM6MjMgIGhhcmRha2VyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kYXRhX2FjY2Vzcy9kb3Qzc3RhdHNfbGludXguYzoKQEAgLTk1MjcsMTggKzMzOTQ4LDE3IEBACiAgICBmaXggY29udGV4dEVuZ2luZUlEcyBmb3Igb3V0Z29pbmcgaW5mb3JtcyBmcm9tIHNubXBpbmZvcm0gdG8gYmUKICAgIHRoZSBsb2NhbCBlbmdpbmVJRAogCi0yMDEwLTEyLTAxIDE0OjMwICBoYXJkYWtlcgorMjAxMC0xMi0wMSAyMToxOCAgbmJhCiAKLSAgICogY29uZmlndXJlOgorICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmM6CiAKLSAgIGdlbmVyYXRlIHdpdGggdGhlIHByb3BlciBhdXRvY29uZgorICAgRml4IGNvbmZsaWN0aW5nIGRlY2xhcmF0aW9ucwogCi0yMDEwLTEyLTAxIDAxOjA2ICBoYXJkYWtlcgorMjAxMC0xMi0wMSAwMToyMyAgaGFyZGFrZXIKIAotICAgKiAgYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsICAgCi0gICAgICBhcHBzL01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6CisgICAqIGFnZW50L3NubXBfdmFycy5jOgogCi0gICBtYWtlIGRlcGVuZAorICAgUGF0Y2ggZnJvbSBtYWdmciB0byBmaXggYnVpbGRpbmcgd2l0aG91dCBvcGVuc3NsCiAKIDIwMTAtMTItMDEgMDE6MDYgIGhhcmRha2VyCiAKQEAgLTk1NDYsMjMgKzMzOTY2LDEyIEBACiAKICAgIHVzZSBuZXRzbm1wX2Fzc2VydCBpbnN0ZWFkIG9mIGFzc2VydAogCi0yMDEwLTEyLTAxIDAwOjQ2ICBoYXJkYWtlcgorMjAxMC0xMS0zMCAyMzo0MyAgaGFyZGFrZXIKIAotICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAgIAotICAgICAgZGlzdC9uZXQtc25tcC5zcGVjLCBwZXJsL0FTTi9BU04ucG0sICAgCi0gICAgICBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLCBwZXJsL09JRC9PSUQucG0sIHBlcmwvU05NUC9TTk1QLnBtLCAKLSAgICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtLAotICAgICAgcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0sICAgIHBlcmwvYWdlbnQvYWdlbnQucG0sCi0gICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwgICAKLSAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtOgorICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzoKIAotICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCi0KLTIwMTAtMTItMDEgMDA6NDYgIGhhcmRha2VyCi0KLSAgICogTWFrZWZpbGUudG9wOgotCi0gICB2ZXJzaW9uIHVwZGF0ZQorICAgaW1wbGVtZW50IERUTFMgY29va2llcyBzZW1pLXByb3Blcmx5IChzdGF0ZSBpcyBzdGlsbCBzYXZlZCwgd2hpY2gKKyAgIHN0aWxsIG5lZWRzIHRvIGNoYW5nZSkKIAogMjAxMC0xMS0zMCAyMzoyNyAgaGFyZGFrZXIKIApAQCAtOTU4Nyw2ICszMzk5NiwxNCBAQAogICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAzMDUzNDM2OiBmcm9tOiB0YWtldm9zOiBmaXg6CiAgICB0Y3BMaXN0ZW5lclRhYmxlX2RhdGFfYWNjZXNzIGludmFsaWQgbWVtb3J5IGFjY2VzcwogCisyMDEwLTExLTMwIDIyOjE4ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsIGNvbmZpZ3VyZSwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVycywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIHJldmVydGVkIDE5NzAxIChldGh0b29sKSBhcyBpdCBicm9rZSB0aGluZ3MKKwogMjAxMC0xMS0zMCAyMTowOCAgbmJhCiAKICAgICogYXBwcy9zbm1wdGxzLmMsIGFwcHMvc25tcHRyYXBkX3NxbC5jOgpAQCAtOTYwNSw2ICszNDAyMiwxMyBAQAogCiAgICBlcnJvciBjaGVjayB0aGUgcmlnaHQgcG9pbnRlciBhZnRlciBhdHRlbXB0aW5nIGFsbG9jYXRpb24KIAorMjAxMC0xMS0zMCAwNTo1OCAgaGFyZGFrZXIKKworICAgKiBhcHBzL3NubXB3YWxrLmM6CisKKyAgIE5FV1M6IGFwcHM6IFBBVENIIDMwNTQ4MTc6IGZyb20gbmlnaHRjb2Rpbmc6IEFkZHMgcGVyLXZhcmlhYmxlCisgICB0aW1lZCBvdXRwdXQgc3VwcG9ydCB0byBzbm1wd2FsayB1c2luZyAtQ1QKKwogMjAxMC0xMS0zMCAwNTo1NiAgaGFyZGFrZXIKIAogICAgKiAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jLCBjb25maWd1cmUsICAgCkBAIC05NjE0LDYgKzM0MDM4LDE1IEBACiAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDMwNTcwOTA6IGZyb20gc2hlbW1pbmdlcjogbWFrZSBldGh0b29sCiAgICBzdXBwb3J0IG9uIGxpbnV4IHVzZSB0aGUgaGlnaCBzcGVlZCBzdHJ1Y3QgaW5mbyBmb3IgMTAwRysuCiAKKzIwMTAtMTEtMzAgMDU6NDcgIGhhcmRha2VyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYywgY29uZmlndXJlLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgTkVXUzogc25tcGQ6IFBBVENIIDMwNTcwOTM6IGZyb20gc2hlbW1pbmdlcjogYWxsb3cgbGludXggdG8gdXNlCisgICBsaWJwY2kgZm9yIGNyZWF0aW5nIHVzZWZ1bCBpZkRlc2NyIHN0cmluZ3MKKwogMjAxMC0xMS0zMCAwNDo1OCAgaGFyZGFrZXIKIAogICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXguYzoKQEAgLTk2NDQsMTggKzM0MDc3LDYgQEAKICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IGVuZm9yY2UgbWF4IGxlbmd0aCBvbiBUTFMgc2VjTmFtZSBtYXBzCiAgICBDSEFOR0VTOiBzbm1wZDogYWRkIHByaW9yaXR5IHRvIHNlY25hbWUgZGVidWdnaW5nCiAKLTIwMTAtMTEtMzAgMDQ6MDQgIHJzdG9yeQotCi0gICAqICBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFycy5jOgotCi0gICBDSEFOR0VTOiBhZ2VudDogZG9uJ3Qgc2Vjb25kLWd1ZXNzIGNhY2hlIGhhbmRsZXIKLSAgIAotICAgKHdhdmVzIGhhbmQpIHRoaXMgaXMgbm90IHRoZSBmdW5jdGlvbiB5b3UgYXJlIGxvb2tpbmcgZm9yLgotICAgCi0gICBuZXRzbm1wX2NhY2hlX2lzX3ZhbGlkKCkgaXMgbm90IG1lYW50IGZvciBtaWIgbW9kdWxlcwotCiAyMDEwLTExLTI5IDIyOjIwICByc3RvcnkKIAogICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYzoKQEAgLTk2NjMsNyArMzQwODQsNyBAQAogICAgQ0hBTkdFUzogc25tcGQ6IGFkZCBkZWJ1ZyBmb3Igc3NsIGNpcGhlcnMsIGNsYXJpZnkgZmluZ2VycHJpbnQKICAgIG1hdGNoIGRlYnVnCiAKLTIwMTAtMTEtMjkgMjI6MTQgIHJzdG9yeQorMjAxMC0xMS0yOSAyMjoxOCAgcnN0b3J5CiAKICAgICogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6CiAKQEAgLTk2ODAsMjEgKzM0MTAxLDI0IEBACiAgICBjaGFuZ2VzIHRvIGEKICAgIHBhdGNoIGFuZCB0aGVuIGNvbW1pdCBpdCB3aXRob3V0IHRlc3RpbmcgOi0oCiAKLTIwMTAtMTEtMTggMTA6NTUgIGJ2YXNzY2hlCisyMDEwLTExLTE4IDExOjA0ICBidmFzc2NoZQogCi0gICAqICAuLCBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRMU0Jhc2VEb21haW4uaCwgICAKLSAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5jOgotCi0gICBDb21waWxlciB3YXJuaW5nIGZpeGVzIGZvciB0aGUgVExTIHRyYW5zcG9ydCBjb2RlOiBiYWNrcG9ydGVkCi0gICByMTk1NDYgZnJvbSB0aGUgdHJ1bmsuCi0KLTIwMTAtMTEtMTggMTA6NTMgIGJ2YXNzY2hlCi0KLSAgICogCisgICAqICAuLCAgIAogICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5jOgogCi0gICBGaXhlZCB3aGF0IHdhcyBicm9rZW4gYnkgcjE5Njg1OiBkaXZpZGluZyB0aGUgcmV0dXJuIHZhbHVlIG9mCi0gICBzbm1wX2xvZygpIGRvZXMgbm90IG1ha2Ugc2Vuc2UuCisgICBBcHBsaWVkIHIxOTY4OCBvbiB0aGUgdHJ1bmsgdG9vIChmb2xsb3ctdXAgZm9yIHIxOTY4NSkuCisKKzIwMTAtMTEtMTggMDM6NDkgIHJzdG9yeQorCisgICAqICBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFycy5jOgorCisgICBDSEFOR0VTOiBhZ2VudDogZG9uJ3Qgc2Vjb25kLWd1ZXNzIGNhY2hlIGhhbmRsZXIKKyAgIAorICAgKHdhdmVzIGhhbmQpIHRoaXMgaXMgbm90IHRoZSBmdW5jdGlvbiB5b3UgYXJlIGxvb2tpbmcgZm9yLgorICAgCisgICBuZXRzbm1wX2NhY2hlX2lzX3ZhbGlkKCkgaXMgbm90IG1lYW50IGZvciBtaWIgbW9kdWxlcwogCiAyMDEwLTExLTE3IDE5OjU5ICBuYmEKIApAQCAtOTczMywyOCArMzQxNTcsNiBAQAogCiAgICBDSEFOR0VTOiBzbm1wZDogZml4IGRvdWJsZSBmcmVlIGluIFRMUyBlcnJvciBoYW5kbGluZwogCi0yMDEwLTExLTE2IDEyOjQzICBidmFzc2NoZQotCi0gICAqIHdpbjMyL01ha2VmaWxlLWFwcHMuaW46Ci0KLSAgIEZvbGxvdy11cCBmb3IgcjE5NDIyLgotCi0yMDEwLTExLTE2IDEyOjM4ICBidmFzc2NoZQotCi0gICAqIHdpbjMyL21pYl9tb2R1bGVfc2h1dGRvd24uaDoKLQotICAgQ0hBTkdFUzogV2luMzI6IHNodXRkb3duX3NubXBOb3RpZnlGaWx0ZXJUYWJsZSgpIGFuZAotICAgc2h1dGRvd25fd2luRXh0RExMKCkgYXJlIG5vdyBpbnZva2VkIHdoZW4gdGhlIE5ldC1TTk1QIHNlcnZpY2UgaXMKLSAgIHN0b3BwZWQuCi0gICAoUGFydGlhbGx5IGJhY2twb3J0ZWQgcjE5NTE1IGZyb20gdGhlIHRydW5rLikKLQotMjAxMC0xMS0xNiAxMDo0MSAgYnZhc3NjaGUKLQotICAgKiAgdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfVEVTVENPTkYuc2gsICAgCi0gICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOgotCi0gICBCYWNrcG9ydGVkIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgY2hhbmdlcyBmcm9tIHRoZSB0cnVuay4KLQogMjAxMC0xMS0xNiAxMDozOSAgYnZhc3NjaGUKIAogICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNjVhZ2VudGV4dGVuZF9zaW1wbGU6CkBAIC05NzcxLDM5ICszNDE3Myw2IEBACiAgICBzdWNoIGluZm9ybWF0aW9uIChOVURfTk9BUlApLCBlLmcuIHR1bm5lbHMuIFJlcG9ydGVkIGJ5IFN0ZXBoZW4KICAgIEhlbW1pbmdlci4gU2VlIGFsc28gcGF0Y2ggIzMxMDcwMDMuCiAKLTIwMTAtMTEtMTYgMDg6NDkgIGJ2YXNzY2hlCi0KLSAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zOgotCi0gICBNaW5HVzogQmFja3BvcnRlZCByMTk2NTIgZnJvbSB0aGUgdHJ1bmsuCi0KLTIwMTAtMTEtMTYgMDg6MDEgIGJ2YXNzY2hlCi0KLSAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgICAKLSAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19wcm9nczoKLQotICAgQ0hBTkdFUzogTWluR1c6IGNvbmZpZ3VyZTogRGV0ZWN0aW9uIG9mIHRoZSBmdW5jdGlvbnMKLSAgIGdhaV9zdHJlcnJvcigpLCBnZXRhZGRyaW5mbygpLCBnZXRob3N0bmFtZSgpIGFuZCBnZXRob3N0bmFtZSgpCi0gICBkb2VzIG5vdyBzdWNjZWVkLgotICAgKEJhY2twb3J0ZWQgcjE5NjQ2IGZyb20gdGhlIHRydW5rLikKLQotMjAxMC0xMS0xNiAwNzo1NSAgYnZhc3NjaGUKLQotICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYzoKLQotICAgQ0hBTkdFUzogYWdlbnQ6IGNvbTJzZWM2IGRpcmVjdGl2ZTogSWYgY29uZmlndXJlIGhhcyBub3QgZm91bmQKLSAgIGdldGFkZHJpbmZvKCksIG5vbi1udW1lcmljIElQdjYgYWRkcmVzc2VzIGRvIG5vdyB0cmlnZ2VyIGFuIGVycm9yCi0gICBtZXNzYWdlLgotICAgKEJhY2twb3J0ZWQgcjE5NjUwLikKLQotMjAxMC0xMS0xNiAwNzo1MSAgYnZhc3NjaGUKLQotICAgKiBpbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaCwgc25tcGxpYi9zbm1wX2RlYnVnLmM6Ci0KLSAgIENIQU5HRVM6IHNubXBsaWI6IENoYW5nZWQgdGhlIGFyZ3VtZW50IHR5cGUgb2YKLSAgIGRlYnVnX3JlZ2lzdGVyX3Rva2VucygpIGZyb20gY2hhciAqIGludG8gY29uc3QgY2hhciAqLgotICAgKEJhY2twb3J0ZWQgcjE5NjY1IGFuZCByMTk2NjYgZnJvbSB0aGUgdHJ1bmsuKQotCiAyMDEwLTExLTE1IDE0OjE1ICBidmFzc2NoZQogCiAgICAqIHNubXBsaWIvYXNuMS5jOgpAQCAtOTgxMywxOCArMzQxODIsMzggQEAKICAgIGFzbl9idWlsZF9zaWduZWRfaW50NjQoKS4gTW9zdCBidXQgbm90IGFsbCBvZiB0aGVzZSBidWdzIHdlcmUKICAgIHNwZWNpZmljIHRvIDY0LWJpdCBzeXN0ZW1zLiBGaXhlcyBidWcgIzMwOTMxOTkuCiAKLTIwMTAtMTEtMTUgMTQ6MDkgIGJ2YXNzY2hlCisyMDEwLTExLTE1IDEzOjMyICBidmFzc2NoZQogCi0gICAqICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDdpbmV0X3B0b25fY2xpYi5jLCAgIAotICAgICAgdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA4YXNuMV9jbGliLmM6CisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwOGFzbjFfY2xpYi5jOgogCi0gICBDb3BpZWQgdHdvIHVuaXQtdGVzdHMgZnJvbSB0aGUgdHJ1bmsuCisgICBBdm9pZCB0cmlnZ2VyaW5nIHRydW5jYXRpb24gd2FybmluZ3MuCiAKLTIwMTAtMTEtMTUgMTQ6MDkgIGJ2YXNzY2hlCisyMDEwLTExLTE1IDEzOjE2ICBidmFzc2NoZQogCi0gICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvY2xpYl9idWlsZDoKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA4YXNuMV9jbGliLmM6CiAKLSAgIE1lcmdlZCByZWNlbnQgY2xpYl9idWlsZCBjaGFuZ2VzIGZyb20gdGhlIHRydW5rLgorICAgUmVzdHJpY3RlZCBhbGwgY29uc3RhbnRzIHRvIDMyIGJpdHMuCisKKzIwMTAtMTEtMTUgMTI6MzUgIGJ2YXNzY2hlCisKKyAgICogc25tcGxpYi9zbm1wX2RlYnVnLmM6CisKKyAgIEZvbGxvdy11cCBmb3IgcjE5NjY1LgorCisyMDEwLTExLTE1IDEyOjMzICBidmFzc2NoZQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oLCBzbm1wbGliL3NubXBfZGVidWcuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogQ2hhbmdlZCB0aGUgYXJndW1lbnQgdHlwZSBvZgorICAgZGVidWdfcmVnaXN0ZXJfdG9rZW5zKCkgZnJvbSBjaGFyICogaW50byBjb25zdCBjaGFyICouCisKKzIwMTAtMTEtMTUgMTA6NTYgIGJ2YXNzY2hlCisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA4YXNuMV9jbGliLmM6CisKKyAgIEFkZGVkIHVuaXQgdGVzdCBmb3IgQVNOLjEgZW5jb2RpbmcgYW5kIGRlY29kaW5nIChvbmx5IDMyLWJpdCBhbmQKKyAgIDY0LWJpdAorICAgaW50ZWdlcnMgc28gZmFyKS4KIAogMjAxMC0xMS0xMSAyMjo0OCAgbmJhCiAKQEAgLTk4NDEsNiArMzQyMzAsMzAgQEAKICAgIENsZWFudXA6IFJlbW92ZWQgc3VwZXJmbHVvdXMgcmVmZXJlbmNlcyB0byB0aGUgUE9TSVggdGhyZWFkcwogICAgbGlicmFyeS4KIAorMjAxMC0xMS0xMSAwODoyMCAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmg6CisKKyAgIEZvbGxvdy11cCBmb3IgcjE5NjYwOiBVc2UgcGlkX3QgY29uc2lzdGVudGx5LgorCisyMDEwLTExLTEwIDE2OjM2ICBidmFzc2NoZQorCisgICAqICBhZ2VudC9taWJncm91cC9zdHJ1Y3QuaCwgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmMsICAKKyAgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMsIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvdHlwZXMuaDoKKworICAgQ0hBTkdFUzogYWdlbnQ6IEludHJvZHVjZWQgbmV0c25tcF9waWRfdC4KKyAgIENIQU5HRVM6IFdpbjMyOiBFbGltaW5hdGVkIGNhc3RzIGJldHdlZW4gaW50IGFuZCBIQU5ETEUgaW4KKyAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYyBhbmQKKyAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jLgorCisyMDEwLTExLTEwIDE1OjQ5ICBidmFzc2NoZQorCisgICAqICB3aW4zMi9saWJzbm1wL01ha2VmaWxlLmluLCB3aW4zMi9saWJzbm1wL2xpYnNubXAuZHNwLCAgIAorICAgICAgd2luMzIvbGlic25tcF9kbGwvTWFrZWZpbGUuaW4sIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXBfZGxsLmRzcDoKKworICAgRm9sbG93LXVwIGZvciByMTk2MDY6IGNtdV9jb21wYXQgcmVtb3ZhbC4KKwogMjAxMC0xMS0xMCAxMjozMSAgYnZhc3NjaGUKIAogICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19wcm9nczoKQEAgLTk4NjYsNyArMzQyNzksMTMgQEAKIAogICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxNjBzbm1wbmV0c3RhdF9zaW1wbGU6CiAKLSAgIEJhY2twb3J0ZWQgcjE5NjUzLgorICAgUGFzc2VzIG5vdyBvbiBNaW5HVyB0b28uCisKKzIwMTAtMTEtMDkgMTE6MzEgIGJ2YXNzY2hlCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zOgorCisgICBGb2xsb3ctdXAgZm9yIHIxOTY0Ni4KIAogMjAxMC0xMS0wOSAxMTozMCAgYnZhc3NjaGUKIApAQCAtOTg3NSwxMyArMzQyOTQsNDggQEAKICAgIENIQU5HRVM6IE1pbkdXOiB0ZXN0aW5nOiBJZiB0aGUgYWdlbnQgaGFzIGJlZW4gYXNrZWQgdG8gc3RvcCwKICAgIHdhaXQgdW50aWwgdGhlIHNubXBkIHByb2Nlc3MgZGlzYXBwZWFyZWQgYmVmb3JlIHByb2NlZWRpbmcuCiAKLTIwMTAtMTEtMDggMTU6MzkgIGJ2YXNzY2hlCisyMDEwLTExLTA5IDEwOjAyICBidmFzc2NoZQorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5jOgorCisgICBDSEFOR0VTOiBhZ2VudDogY29tMnNlYzYgZGlyZWN0aXZlOiBJZiBjb25maWd1cmUgaGFzIG5vdCBmb3VuZAorICAgZ2V0YWRkcmluZm8oKSwgbm9uLW51bWVyaWMgSVB2NiBhZGRyZXNzZXMgZG8gbm93IHRyaWdnZXIgYW4gZXJyb3IKKyAgIG1lc3NhZ2UuCisKKzIwMTAtMTEtMDggMTU6MzYgIGJ2YXNzY2hlCiAKICAgICogdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDcxY29tMnNlYzZfc2ltcGxlOgogCiAgICBDSEFOR0VTOiB0ZXN0aW5nOiBUZXN0IDcxIChjb20yc2VjNl9zaW1wbGUpIGRvZXMgbm93IHN1Y2NlZWQgZXZlbgogICAgaWYgSVB2NiBETlMgcmVzb2x1dGlvbiBpcyBub3QgYXZhaWxhYmxlLgotICAgKEJhY2twb3J0ZWQgcjE5NjQ4LikKKworMjAxMC0xMS0wOCAxNTowMiAgYnZhc3NjaGUKKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L2NsaWJfYnVpbGQ6CisKKyAgIE1pbkdXLCB0ZXN0aW5nOiBjbGliIHRlc3RzIGJ1aWxkIGFnYWluIHdpdGhvdXQgd2FybmluZ3MuCisKKzIwMTAtMTEtMDggMTQ6NTIgIGJ2YXNzY2hlCisKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19wcm9nczoKKworICAgQ0hBTkdFUzogTWluR1c6IGNvbmZpZ3VyZTogRGV0ZWN0aW9uIG9mIHRoZSBmdW5jdGlvbnMKKyAgIGdhaV9zdHJlcnJvcigpLCBnZXRhZGRyaW5mbygpLCBnZXRob3N0YnluYW1lKCkgYW5kIGdldGhvc3RuYW1lKCkKKyAgIGRvZXMgbm93IHN1Y2NlZWQuCisKKzIwMTAtMTEtMDggMTQ6NDggIGJ2YXNzY2hlCisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA3aW5ldF9wdG9uX2NsaWIuYzoKKworICAgQ0hBTkdFUzogdGVzdGluZzogQWRkZWQgaW5ldF9udG9wKCkgYW5kIGluZXRfcHRvbigpIHVuaXQgdGVzdC4KKworMjAxMC0xMS0wOCAxNDo0NyAgYnZhc3NjaGUKKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L2NsaWJfYnVpbGQ6CisKKyAgIHRlc3Rpbmc6IGNsaWJfYnVpbGQ6IEFkZGVkICNpbmNsdWRlIGRpcmVjdGl2ZXMgKDxhcnBhL2luZXQuaD4gYW5kCisgICA8bmV0aW5ldC9pcDYuaD4pLgogCiAyMDEwLTExLTA4IDA4OjQ2ICBidmFzc2NoZQogCkBAIC05ODg5LDYgKzM0MzQzLDIxIEBACiAKICAgIFdpbjMyOiBhZ2VudDogZWxpbWluYXRlZCBjYXN0cyBmcm9tL3RvIGludCBmb3IgdGhyZWFkIGhhbmRsZXMuCiAKKzIwMTAtMTEtMDggMDc6NTggIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6CisKKyAgIFJlbW92ZWQgTkVUU05NUF9TVEFUSUNfSU5MSU5FIGZyb20gdGhlIGRlY2xhcmF0aW9uIG9mCisgICBfYnVpbGRfY2FjaGVfbmFtZSAtIGF0IGxlYXN0IGdjYyBpcyBiZXR0ZXIgdGhhbiBhIGh1bWFuIGF0CisgICBkZWNpZGluZyB3aGljaCBmdW5jdGlvbnMgc2hvdWxkIGJlIGlubGluZWQgYW5kIHdoaWNoIG9uZXMgbm90LgorCisyMDEwLTExLTA4IDA3OjU2ICBidmFzc2NoZQorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jOgorCisgICBuZXRzbm1wX3RhYmxlX2RhdGFfY2xvbmVfcm93KCk6IEFkZGVkIG1pc3NpbmcgZnJlZSgpIHN0YXRlbWVudCBpbgorICAgYW4gZXJyb3IgcGF0aC4KKwogMjAxMC0xMS0wNyAyMToxNSAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuYzoKQEAgLTk5MzcsNDAgKzM0NDA2LDI5IEBACiAKICAgIE1hZGUgc3VyZSB0aGF0IHJwbUdldFBhdGgoKSBjYW4gYmUgZm91bmQgYnkgY29uZmlndXJlLgogCi0yMDEwLTExLTA1IDE0OjU4ICBidmFzc2NoZQorMjAxMC0xMS0wNSAxNDo1MCAgYnZhc3NjaGUKIAotICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMjoKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczE6CiAKLSAgIFJlbW92ZWQgbW9yZSBjb2RlIHRoYXQgd2FzIGFjY2lkZW50aWFsbHkgaW5zZXJ0ZWQgYnkgdGhlIHBhdGNoCi0gICB0b29sLgorICAgUmVtb3ZlZCBzdXBlcmZsdW91cyAtSS91c3IvaW5jbHVkZS9ycG0uCiAKLTIwMTAtMTEtMDUgMTQ6NTcgIGJ2YXNzY2hlCi0KLSAgICogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKLQotICAgUmV2ZXJ0ZWQgcjE5NjIyLgotCi0yMDEwLTExLTA1IDE0OjUyICBidmFzc2NoZQotCi0gICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMSwgICAKLSAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMjoKLQotICAgQ2xlYW5lZCB1cCByMTk2MjQ6IHJlbW92ZWQgZ2FyYmFnZSBhZGRlZCBieSB0aGUgcGF0Y2ggdG9vbC4KLQotMjAxMC0xMS0wNSAxMzo1NSAgYnZhc3NjaGUKKzIwMTAtMTEtMDUgMTI6MTggIGJ2YXNzY2hlCiAKICAgICogIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgICAKICAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGlicywgICAKICAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMSwgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyOgogCi0gICBDSEFOR0VTOiBhZ2VudDogRml4ZWQgb3JkZXIgb2YgcnBtbGliIGRldGVjdGlvbiBhbmQgYWdlbnQgbW9kdWxlCi0gICBjb25maWd1cmF0aW9uIChiYWNrcG9ydGVkIHIxOTYyMSBmcm9tIHRydW5rKS4KKyAgIENIQU5HRVM6IGFnZW50OiBGaW5kIG91dCB3aGV0aGVyIGxpYnJwbSBpcyBhdmFpbGFibGUgYmVmb3JlCisgICBjb25maWd1cmluZyB0aGUgYWdlbnQgbW9kdWxlcyBiZWNhdXNlIGhvc3QvZGF0YS9hY2Nlc3Mvc3dpbnN0CisgICBuZWVkcyBzeW1ib2wgSEFWRV9MSUJSUE0uIEFzIGEgcmVzdWx0LCBjb25maWd1cmUgaGFzIHRvIGJlIHJ1bgorICAgb25seSBvbmNlIGluc3RlYWQgb2YgdHdpY2UgdG8gZW5hYmxlIHRoZSBoclNXSW5zdGFsbGVkIHRhYmxlIG9uCisgICBzeXN0ZW1zIHRoYXQgaGF2ZSBsaWJycG0uCiAKLTIwMTAtMTEtMDUgMTM6MzcgIGJ2YXNzY2hlCisyMDEwLTExLTA1IDEyOjExICBidmFzc2NoZQogCi0gICAqIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisgICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEVycm9yVGFibGUuYzoKIAotICAgUmVnZW5lcmF0ZWQgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbi4KKyAgIFN1cHByZXNzIGEgY29tcGlsZXIgd2FybmluZy4KIAogMjAxMC0xMS0wNSAxMDowMCAgYnZhc3NjaGUKIApAQCAtOTk4OCwxMiArMzQ0NDYsMzUgQEAKICAgIENIQU5HRVM6IGFnZW50OiBob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9ycG06IExvZyBhbiBlcnJvciBtZXNzYWdlCiAgICBpZiBycG1kYk9wZW4oKSBmYWlscy4KIAorMjAxMC0xMS0wNSAwODo1MCAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmMsIGFnZW50L21pYmdyb3VwL1Jtb24vZXZlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL1Jtb24vaGlzdG9yeS5jLCBhZ2VudC9taWJncm91cC9SbW9uL3Jvd19hcGkuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL1Jtb24vcm93cy5jLCBhZ2VudC9taWJncm91cC9SbW9uL3N0YXRpc3RpY3MuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEV4cHJlc3Npb25UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwT2JqZWN0VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cFZhbHVlVGFibGUuYzoKKworICAgUm1vbiAvIGRpc21hbiBjb21waWxlciB3YXJuaW5nIGZpeGVzLgorCiAyMDEwLTExLTA1IDA4OjQ4ICBidmFzc2NoZQogCiAgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oOgogCiAgICBDSEFOR0VTOiBzbm1wbGliOiBBZGRlZCBtYWNybyBuZXRzbm1wX3N0YXRpY19hc3NlcnQoKS4KIAorMjAxMC0xMS0wNSAwODo0MCAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYzoKKworICAgRm9sbG93LXVwIGZvciByMTk1NjYuCisKKzIwMTAtMTEtMDUgMDg6MzcgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuaDoKKworICAgUmVtb3ZlZCBhIChoYXJtbGVzcyA/KSBjaXJjdWxhciByZWZlcmVuY2UuCisKIDIwMTAtMTEtMDQgMTM6MDkgIGR0czEyCiAKICAgICogZGlzdC9uZXQtc25tcC5zcGVjOgpAQCAtMTAwMDEsMjAgKzM0NDgyLDI0IEBACiAgICBDSEFOR0VTOiBMaW51eDogUEFUQ0hFUzogMzA4MzAyNzogRml4IFJQTSBzcGVjIGZpbGUgdG8gc3VwcG9ydAogICAgQ2VudE9TCiAKLTIwMTAtMTEtMDQgMTI6NDUgIGJ2YXNzY2hlCi0KLSAgICogYWdlbnQvc25tcGQuYzoKLQotICAgUmV2ZXJ0ZWQgcjE5NjAxIGFuZCB0aGVyZWJ5IHJlZW5hYmxlZCB0aGUgaW52b2NhdGlvbiBvZgotICAgc2h1dGRvd25fbWFzdGVyX2FnZW50KCkgYW5kIHNodXRkb3duX2FnZW50KCkgZHVyaW5nCi0gICBzbm1wX3NodXRkb3duKCkuCi0KIDIwMTAtMTEtMDMgMTM6MjIgIHJzdG9yeQogCiAgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3Rscy9UMjAwVGxzSXB2Nl9zaW1wbGU6CiAKICAgIHNraXAgdGxzaXB2NiB0ZXN0IGlmIG5vdCB0bHN0Y3AvdGNwaXB2NiBkb21haW5zCiAKKzIwMTAtMTEtMDEgMjM6MDMgIG1hZ2ZyCisKKyAgICogIGFjY29uZmlnLmgsIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jbXVfY29tcGF0LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGlic25tcC5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaCwgc25tcGxpYi9NYWtlZmlsZS5pbiwgICAKKyAgICAgIHNubXBsaWIvY211X2NvbXBhdC5jLCBzbm1wbGliL21pYi5jLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg6CisKKyAgIE5FV1M6IHNubXBsaWI6IFJlbW92ZSB0aGUgc3VwcG9ydCBmb3IgQ01VIGNvbXBhdGliaWxpdHkgc2luY2UKKyAgIHRoZXJlIGlzIG5vIHdheSB0byBlbmFibGUgaXQgYW5kIG5vYm9keSBoYXZlIG1pc3NlZCBpdC4KKwogMjAxMC0xMS0wMSAxNjo1MCAgZHRzMTIKIAogICAgKiBtYW4vdmFyaWFibGVzLjUuZGVmOgpAQCAtMTAwMjgsODAgKzM0NTEzLDYgQEAKIAogICAgRG9jdW1lbnQgLUNmIGluIHRoZSB0d28gbWFuIHBhZ2VzIHNlcGFyYXRlbHkuCiAKLTIwMTAtMTEtMDEgMTY6MzAgIGR0czEyCi0KLSAgICogIG1hbi9uZXRzbm1wX3Nlc3Npb25fYXBpLjMuZGVmLCBtYW4vc25tcGJ1bGt3YWxrLjEuZGVmLCAgIAotICAgICAgbWFuL3NubXBnZXQuMS5kZWYsIG1hbi9zbm1wZ2V0bmV4dC4xLmRlZiwgbWFuL3NubXBzZXQuMS5kZWYsICAgCi0gICAgICBtYW4vc25tcHRyYXAuMS5kZWYsIG1hbi9zbm1wdHJhcGQuOC5kZWYsIG1hbi9zbm1wd2Fsay4xLmRlZjoKLQotICAgUmVtb3ZlIENNVSBjb3B5cmlnaHQgbm90aWNlIGZyb20gbWFuIHBhZ2VzIHRoYXQKLSAgIHdlcmUgbm90IGluaGVyaXRlZCBmcm9tIENNVS1TTk1QCi0gICAoYW5kIHF1YWxpZnkgdGhlIGNvcHlyaWdodCBmb3IgdGhvc2UgdGhhdCB3ZXJlKS4KLQotMjAxMC0xMS0wMSAxNjoyMyAgYnZhc3NjaGUKLQotICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlLmM6Ci0KLSAgIFBhcnRpYWxseSByZXZlcnRlZCByMTk0ODUgYmVjYXVzZSBpdCB0cmlnZ2VyZWQgZG91YmxlIGZyZWVzCi0gICBkdXJpbmcgc25tcGQgZXhpdCAodGhpcyBjaGFuZ2UgaXMgYWxyZWFkeSBwcmVzZW50IG9uIHRoZSB0cnVuaykuCi0gICBBbiBleGFtcGxlOgotICAgCi0gICA9PTE4NzA5PT0gSW52YWxpZCByZWFkIG9mIHNpemUgOAotICAgPT0xODcwOT09IGF0IDB4NEU3NkQ1NDogbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlCi0gICAodGFibGUuYzoxMDA4KQotICAgPT0xODcwOT09IGJ5IDB4NTBEQkVCMjogc2h1dGRvd25fc3lzT1JUYWJsZSAoc3lzT1JUYWJsZS5jOjI4NikKLSAgID09MTg3MDk9PSBieSAweDUxOEUzN0M6IF9zaHV0ZG93bl9taWJfbW9kdWxlcwotICAgKG1pYl9tb2R1bGVfc2h1dGRvd24uaDozKQotICAgPT0xODcwOT09IGJ5IDB4NjAzQ0E3Qzogc25tcF9jYWxsX2NhbGxiYWNrcyAoY2FsbGJhY2suYzozMzgpCi0gICA9PTE4NzA5PT0gYnkgMHg2MDBFQUU0OiBzbm1wX3NodXRkb3duIChzbm1wX2FwaS5jOjg5OCkKLSAgID09MTg3MDk9PSBieSAweDQwNTE3RjogbWFpbiAoc25tcGQuYzoxMDY2KQotICAgPT0xODcwOT09IEFkZHJlc3MgMHg3MzIyOTYwIGlzIDAgYnl0ZXMgaW5zaWRlIGEgYmxvY2sgb2Ygc2l6ZSAzMgotICAgZnJlZSdkCi0gICA9PTE4NzA5PT0gYXQgMHg0QzI2NDk2OiBmcmVlICh2Z19yZXBsYWNlX21hbGxvYy5jOjM2NikKLSAgID09MTg3MDk9PSBieSAweDRFNzY3Qzc6Ci0gICBuZXRzbm1wX2ZyZWVfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAodGFibGUuYzo3NCkKLSAgID09MTg3MDk9PSBieSAweDRFNDQxNkI6IG5ldHNubXBfaGFuZGxlcl9mcmVlCi0gICAoYWdlbnRfaGFuZGxlci5jOjY4NSkKLSAgID09MTg3MDk9PSBieSAweDRFNDQxNEY6IG5ldHNubXBfaGFuZGxlcl9mcmVlCi0gICAoYWdlbnRfaGFuZGxlci5jOjY4MCkKLSAgID09MTg3MDk9PSBieSAweDRFNDQyQUY6IG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZQotICAgKGFnZW50X2hhbmRsZXIuYzo3NDIpCi0gICA9PTE4NzA5PT0gYnkgMHg0RTQ2RjdDOiBuZXRzbm1wX3N1YnRyZWVfZnJlZQotICAgKGFnZW50X3JlZ2lzdHJ5LmM6NDY4KQotICAgPT0xODcwOT09IGJ5IDB4NEU0ODZCOTogdW5yZWdpc3Rlcl9taWJfY29udGV4dAotICAgKGFnZW50X3JlZ2lzdHJ5LmM6MTc0NSkKLSAgID09MTg3MDk9PSBieSAweDRFNDMwRkM6IG5ldHNubXBfdW5yZWdpc3Rlcl9oYW5kbGVyCi0gICAoYWdlbnRfaGFuZGxlci5jOjMyNikKLSAgID09MTg3MDk9PSBieSAweDRFNzY4OTE6IG5ldHNubXBfdW5yZWdpc3Rlcl90YWJsZSAodGFibGUuYzoxMzcpCi0gICA9PTE4NzA5PT0gYnkgMHg0RTdCMTI0OiBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV91bnJlZ2lzdGVyCi0gICAodGFibGVfY29udGFpbmVyLmM6MzM0KQotICAgPT0xODcwOT09IGJ5IDB4NTBEQkU5MDogc2h1dGRvd25fc3lzT1JUYWJsZSAoc3lzT1JUYWJsZS5jOjI4MykKLSAgID09MTg3MDk9PSBieSAweDUxOEUzN0M6IF9zaHV0ZG93bl9taWJfbW9kdWxlcwotICAgKG1pYl9tb2R1bGVfc2h1dGRvd24uaDozKQotCi0yMDEwLTExLTAxIDE1OjI3ICBidmFzc2NoZQotCi0gICAqIGFnZW50L3NubXBkLmM6Ci0KLSAgIFBhcnRpYWxseSByZXZlcnRlZCByMTk1MTE6IGRpc2FibGVkIGludm9jYXRpb24gb2YKLSAgIHNodXRkb3duX21hc3Rlcl9hZ2VudCgpIGFuZCBzaHV0ZG93bl9hZ2VudCgpIGR1cmluZwotICAgc25tcF9zaHV0ZG93bigpIGFnYWluLgotCi0yMDEwLTExLTAxIDEzOjU1ICBkdHMxMgotCi0gICAqIG1hbi90a21pYi4xLmRlZjoKLQotICAgU3VwcHJlc3MgZm9yY2luZyBvZiAiQmVya2VsZXkgRGlzdHJpYnV0aW9uIiBmb290ZXIKLSAgIChBbGxvd3MgTmV0LVNOTVAgdmVyc2lvbiBpbmZvcm1hdGlvbiB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIG1hbgotICAgcGFnZSkKLQotMjAxMC0xMS0wMSAxMzo0MiAgZHRzMTIKLQotICAgKiBtYW4vc25tcHRhYmxlLjEuZGVmLCBtYW4vc25tcHRlc3QuMS5kZWY6Ci0KLSAgIFVwZGF0ZSBtYW4gcGFnZSBkYXRlc3RhbXBzIHRvIG1hdGNoIHRoZSBsYXRlc3QgKG5vbi10cml2aWFsKQotICAgY29udGVudCBjaGFuZ2UuCi0KIDIwMTAtMTAtMjkgMjI6MzEgIHJzdG9yeQogCiAgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOgpAQCAtMTAxMDksMTcgKzM0NTIwLDE3NyBAQAogICAgbnVsbCBvdXQgYmlvIHBvaW50ZXJzIGFmdGVyIGJlaW5nIGZyZWVkOyBiYWlsIG9uIGNvbm5lY3Rpb24KICAgIHdpdGggbm8gc3NsIHBvaW50ZXIKIAorMjAxMC0xMC0yOSAxNDozNSAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmM6CisKKyAgIFJldmVydGVkIGluY29ycmVjdCBjaGFuZ2VzIGZyb20gcjE5NTc1LgorCisyMDEwLTEwLTI5IDE0OjIxICBidmFzc2NoZQorCisgICAqIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jOgorCisgICBGaXhlZCBhIGJ1ZyB0aGF0IHdhcyBpbnRyb2R1Y2VkIGluIHIxOTUxNS4KKworMjAxMC0xMC0yOSAxNDowMCAgYnZhc3NjaGUKKworICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuYywgIAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5jLCAgCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuYzoKKworICAgUmV2ZXJ0ZWQgdGhlIGluY29ycmVjdCBjaGFuZ2VzIGZyb20gcjE5NTkzLgorCisyMDEwLTEwLTI5IDEzOjM4ICBidmFzc2NoZQorCisgICAqIHNubXBsaWIvY2VydF91dGlsLmM6CisKKyAgIFJlZHVjZWQgbnVtYmVyIG9mIGxlYWstYXQtZXhpdCBjb21wbGFpbnRzIHRyaWdnZXJlZCBieQorICAgc25tcGxpYi9jZXJ0X3V0aWwuYy4KKworMjAxMC0xMC0yOSAxMzozNyAgYnZhc3NjaGUKKworICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuYywgIAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5jLCAgCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2ludGVyZmFjZS5jOgorCisgICBNb3JlIGxlYWstYXQtZXhpdCBmaXhlcy4KKworMjAxMC0xMC0yOSAxMzozNSAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmg6CisKKyAgIE1vcmUgbGVhay1hdC1leGl0IGZpeGVzLgorCiAyMDEwLTEwLTI5IDEyOjE4ICBidmFzc2NoZQogCiAgICAqIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jOgogCiAgICBTcGVsbGluZyBmaXggaW4gbG9nIHRleHRzOiBjb250YWludGVyIC0+IGNvbnRhaW5lci4KIAotMjAxMC0xMC0yOSAxMTozNCAgYnZhc3NjaGUKKzIwMTAtMTAtMjkgMDk6NTggIGJ2YXNzY2hlCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jOgogCi0gICBCYWNrcG9ydGVkIHIxOTU4OCBhbmQgcjE5NTg5IGZyb20gdGhlIHRydW5rLgorICAgUmFuIGZpbGx1cF9lbnRyeV9pbmZvKCkgdGhyb3VnaCBpbmRlbnQuCisKKzIwMTAtMTAtMjkgMDk6NTYgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jOgorCisgICBOZXRsaW5rIElQdjYgcHJlZml4IHByb2Nlc3Npbmc6IEFkZGVkIG1vcmUgZGVidWcgc3RhdGVtZW50cy4KKworMjAxMC0xMC0yOSAwOTo1NCAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlLmM6CisKKyAgIE1hZGUgYXJndW1lbnQgY2hlY2tpbmcgb2YgbmV0c25tcF9oYW5kbGVyX293bnNfdGFibGVfaW5mbygpIG1vcmUKKyAgIHN0cmljdC4KKworMjAxMC0xMC0yOSAwOTo1MiAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFNldFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJCb29sZWFuVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5QZXJmVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5oOgorCisgICBNb3JlIE1JQi1zcGVjaWZpYyBsZWFrLWF0LWV4aXQgZml4ZXMuCiAKIDIwMTAtMTAtMjkgMDc6NTYgIGJ2YXNzY2hlCiAKQEAgLTEwMTc4LDYgKzM0NzQ5LDM4IEBACiAgICBVbnRhbmdsZSBwaWNsIGZyb20ga3N0YXQgYWNjZXNzIHNvIGl0IGNvbXBpbGVzIG9uIHg4NiBTb2xyYWlzCiAgICAxMC9PcGVuU29sYXJpcwogCisyMDEwLTEwLTI4IDE1OjE1ICBidmFzc2NoZQorCisgICAqICBhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmMsIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmMsICAKKyAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUFkZHJUYWJsZS9zbm1wVGxzdG1BZGRyVGFibGUuYywgCisgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtUGFyYW1zVGFibGUvc25tcFRsc3RtUGFyYW1zVGFibGUuYzoKKworICAgTW9yZSBsZWFrLWF0LWV4aXQgZml4ZXMuCisKKzIwMTAtMTAtMjggMTU6MTMgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvaGVscGVycy93YXRjaGVyLmMsIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oOgorCisgICBDSEFOR0VTOiBhZ2VudDogQWRkZWQgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlMigpLAorICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcjIoKSwgbmV0c25tcF9jbG9uZV93YXRjaGVyX2luZm8oKQorICAgYW5kIG5ldHNubXBfb3duc193YXRjaGVyX2luZm8oKS4gU2VlIGFsc28gdGhlIERveHlnZW4gY29tbWVudHMKKyAgIGZvciBtb3JlIGluZm8uCisKIDIwMTAtMTAtMjggMTQ6MDIgIGR0czEyCiAKICAgICogbG9jYWwvbWliMmMuY2hlY2tfdmFsdWVzLmNvbmY6CkBAIC0xMDE5OSw2ICszNDgwMiwxMyBAQAogICAgRml4ZWQgYSBjb21waWxlciB3YXJuaW5nIChtaXNtYXRjaCBiZXR3ZWVuIGZvcm1hdCBzcGVjaWZpY2F0aW9uCiAgICBhbmQgYXJndW1lbnQpIHRoYXQgd2FzIGludHJvZHVjZWQgaW4gcjY1NjIuCiAKKzIwMTAtMTAtMjggMTE6NDMgIGJ2YXNzY2hlCisKKyAgICogIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmM6CisKKyAgIEdldCByaWQgb2YgcmVjZW50bHkgaW50cm9kdWNlZCBtZW1kdXAoKSBjb21waWxlciB3YXJuaW5ncy4KKwogMjAxMC0xMC0yOCAxMTo0MSAgYnZhc3NjaGUKIAogICAgKiBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYzoKQEAgLTEwMjEyLDYgKzM0ODIyLDIzIEBACiAgICBSZXZlcnRlZCByMTk1NjUgYmVjYXVzZSBpdCBjYXVzZWQgZ2NjIHRvIHJlcG9ydCBtb3JlIHdhcm5pbmdzCiAgICBpbnN0ZWFkIG9mIGxlc3MuCiAKKzIwMTAtMTAtMjggMTE6MTggIGJ2YXNzY2hlCisKKyAgICogCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYzoKKworICAgRml4ZWQgYSBjb21waWxlciB3YXJuaW5nIHRoYXQgd2FzIGludHJvZHVjZWQgaW4gcjE5NTY2LgorCisyMDEwLTEwLTI4IDEwOjQwICBidmFzc2NoZQorCisgICAqICBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgsIHNubXBsaWIvY2FsbGJhY2suYzoKKworICAgUGFydGlhbGx5IHJldmVydGVkIHIxOTUxNTogcmVtb3ZlZCB0aGUgbmV3bHkgaW50cm9kdWNlZCBmdW5jdGlvbnMKKyAgIGFuZCBkYXRhIG1lbWJlcnMgYWdhaW4sIGJ1dCB3aXRob3V0IHJlaW50cm9kdWNpbmcgdGhlCisgICBsZWFrLWF0LWV4aXQuCisKIDIwMTAtMTAtMjggMTA6MzIgIGJ2YXNzY2hlCiAKICAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgsIHNubXBsaWIvdG9vbHMuYzoKQEAgLTEwMjI2LDYgKzM0ODUzLDEzIEBACiAKICAgIEZpeGVkIHlldCBhbm90aGVyIGNyYXNoIGluIG5ldHNubXBfY2FjaGVfcmVtb3ZlKCkuCiAKKzIwMTAtMTAtMjggMDg6NDQgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvc25tcGQuYzoKKworICAgTWFkZSBpdCBlYXNpZXIgdG8gZW5hYmxlIHRoZSBtZW1vcnkgbGVhayBjaGVja2VyIGJ1aWx0LWluIGluCisgICBNU1ZDJ3MgQyBydW50aW1lIGxpYnJhcnkuCisKIDIwMTAtMTAtMjcgMjA6MzcgIG5iYQogCiAgICAqIGFnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1BZGRyVGFibGUvc25tcFRsc3RtQWRkclRhYmxlLmM6CkBAIC0xMDM0NCwxMSArMzQ5NzgsMTQgQEAKICAgIENIQU5HRVM6IGFnZW50OiBQQVRDSDogMjk1OTgxMTogZnJvbSBKYW4gU2FmcmFuZWs6IFJlaW1wbGVtZW50CiAgICBMaW51eCBOZXRsaW5rIElQdjYgcHJlZml4IGxpc3RlbmVyLgogCi0yMDEwLTEwLTI1IDA3OjQyICBidmFzc2NoZQorMjAxMC0xMC0yNSAwNzoxNSAgYnZhc3NjaGUKIAotICAgKiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUTFNCYXNlRG9tYWluLmgsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYzoKIAotICAgUmVnZW5lcmF0ZWQgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbi4KKyAgIEF2b2lkIHRoYXQgdGhlIGNvbXBpbGVyIGNvbXBsYWlucyBhYm91dCBjYXN0aW5nIGF3YXkgdGhlICdjb25zdCcKKyAgIGF0dHJpYnV0ZSBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIHNzbGN0eF9jbGllbnRfc2V0dXAoKSBhbmQKKyAgIHNzbGN0eF9zZXJ2ZXJfc2V0dXAoKS4KIAogMjAxMC0xMC0yNSAwNjoyOCAgbmJhCiAKQEAgLTEwMzk1LDYgKzM1MDMyLDE0IEBACiAKICAgIGNvbnN0LWp1Z2dsaW5nIC0gd2UgZG9udCBsaWtlIHdhcm5pbmdzCiAKKzIwMTAtMTAtMjMgMTE6NTYgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6CisKKyAgIFJlZW5hYmxlZCBjYWNoZSByZW1vdmFsIGFuZCBmcmVlaW5nIC8gbW92ZWQgY2FjaGUgcmVmY291bnQKKyAgIGluY3JlbWVudGluZyB0byBuZXRzbm1wX2NhY2hlX293bnNfY2FjaGUoKSAvIGNvbnZlcnRlZCB0YWJzIHRvCisgICBzcGFjZXMuCisKIDIwMTAtMTAtMjMgMTE6MDQgIGJ2YXNzY2hlCiAKICAgICogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6CkBAIC0xMDQwOCwyMSArMzUwNTMsMjAxIEBACiAgICBDSEFOR0VTOiBhZ2VudDogUmVtb3ZpbmcgdGhlIGxhc3QgY2FjaGUgdmlhCiAgICBuZXRzbm1wX2NhY2hlX3JlbW92ZSgpIGRvZXMgbm8gbG9uZ2VyIHRyaWdnZXIgYSBjcmFzaC4KIAotMjAxMC0xMC0yMiAwOToyMCAgYnZhc3NjaGUKKzIwMTAtMTAtMjMgMTA6NTcgIGJ2YXNzY2hlCisKKyAgICogCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDZzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NhZ2VudGxpYi5jOgorCisgICBUMDA2c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jYWdlbnRsaWI6IEludHJvZHVjZWQKKyAgIG5ldHNubXBfY2FjaGVfY3JlYXRlKCkuCisKKzIwMTAtMTAtMjIgMTU6MjQgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6CisKKyAgIERpc2FibGVkIGNhY2hlIGRlYWxsb2NhdGlvbiBiZWNhdXNlIGl0IG1ha2VzIHR3byB1bml0IHRlc3RzIGZhaWwKKyAgIC0gdG8gYmUgYW5hbHl6ZWQgZnVydGhlci4KKworMjAxMC0xMC0yMiAxNTowMyAgYnZhc3NjaGUKKworICAgKiAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwNnNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY2FnZW50bGliLmM6CisKKyAgIEJ1aWxkcyBhZ2Fpbi4KKworMjAxMC0xMC0yMiAxNDo0OSAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZS5jLCAgCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlLmM6CisKKyAgIENIQU5HRVM6IGFnZW50OiBNSUItc3BlY2lmaWMgbGVhay1hdC1leGl0IGZpeGVzLgorCisyMDEwLTEwLTIyIDE0OjQyICBidmFzc2NoZQorCisgICAqICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9kYXRhX3NldC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZGF0YV9zZXQuaDoKKworICAgQ0hBTkdFUzogYWdlbnQ6IGV4YW1wbGUgTUlCOiBBZGRlZCBzaHV0ZG93biBmdW5jdGlvbiB0aGF0IGZyZWVzCisgICBhbGwgbWVtb3J5IG93bmVkIGJ5IHRoaXMgTUlCIGltcGxlbWVudGF0aW9uLgorCisyMDEwLTEwLTIyIDE0OjQwICBidmFzc2NoZQorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmM6CisKKyAgIENIQU5HRVM6IGFnZW50OiBBdXRvbWF0aWNhbGx5IGZyZWUgdGhlIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUKKyAgIGFsbG9jYXRlZCBieSBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9oYW5kbGVyX2dldCgpLgorCisyMDEwLTEwLTIyIDE0OjM4ICBidmFzc2NoZQorCisgICAqICBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oOgorCisgICBDSEFOR0VTOiBhZ2VudDogQ291bnQgdGhlIG51bWJlciBvZiB1c2VycyBvZiBhIG5ldHNubXBfY2FjaGUgZGF0YQorICAgc3RydWN0dXJlIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgaXQuCisKKzIwMTAtMTAtMjIgMTQ6MzYgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvaGVscGVycy9iYWJ5X3N0ZXBzLmMsIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oOgorCisgICBDSEFOR0VTOiBhZ2VudDogQWRkZWQgcmVmZXJlbmNlIGNvdW50IGluIHRoZQorICAgbmV0c25tcF9iYWJ5X3N0ZXBzX21vZGVzIGRhdGEgc3RydWN0dXJlIGFuZCBtYWRlIHN1cmUgdGhhdCB0aGlzCisgICBkYXRhIHN0cnVjdHVyZSBpcyBhdXRvbWF0aWNhbGx5IGZyZWVkIHdoZW4gdGhlIGhhbmRsZXIgdGhhdCBvd25zCisgICBpdCBpcyB1bnJlZ2lzdGVyZWQuCisKKzIwMTAtMTAtMjIgMTQ6MzQgIGJ2YXNzY2hlCisKKyAgICogIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0Lmg6CisKKyAgIENIQU5HRVM6IGFnZW50OiBBZGRlZCBuZXRzbm1wX3VucmVnaXN0ZXJfYXV0b19kYXRhX3RhYmxlKCkuCisKKzIwMTAtMTAtMjIgMDg6NTEgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYzoKKworICAgRm9sbG93LXVwIGZvciByMTk1MTE6IG1hZGUgc3VyZSB0aGF0IGNsZWFuX3N1YnRyZWUoKSBkZWFsbG9jYXRlcworICAgYWxsIGNvbnRleHQgY2FjaGUgbm9kZXMuCisKKzIwMTAtMTAtMjIgMDg6NDkgIGJ2YXNzY2hlCiAKICAgICogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6CiAKICAgIENIQU5HRVM6IGFnZW50OiBuZXRzbm1wX2NhY2hlX2ZyZWUoKTogQSBtb3JlIGRldGFpbGVkIG1lc3NhZ2UgaXMKICAgIG5vdyBsb2dnZWQgd2hlbiBhdHRlbXB0aW5nIHRvIGZyZWUgYSBjYWNoZSB0aGF0IGlzIHN0aWxsIGluIHRoZQogICAgY2FjaGUgbGlzdC4KLSAgIChCYWNrcG9ydGVkIHIxOTUyNC4pCiAKLTIwMTAtMTAtMjIgMDk6MTkgIGJ2YXNzY2hlCisyMDEwLTEwLTIyIDA2OjM5ICBidmFzc2NoZQogCi0gICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmM6CisgICAqIGx0bWFpbi5zaDoKIAotICAgQmFja3BvcnRlZCByMTk1MjU6IG1hZGUgc3VyZSB0aGF0IGNsZWFuX3N1YnRyZWUoKSBkZWFsbG9jYXRlcyBhbGwKLSAgIGNvbnRleHQgY2FjaGUgbm9kZXMuCisgICBSZXZlcnRlZCBsdG1haW4uc2ggY2hhbmdlcyBmcm9tIHIxOTUyMi4KKworMjAxMC0xMC0yMiAwNjozNCAgYnZhc3NjaGUKKworICAgKiBjb25maWd1cmUsIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIGx0bWFpbi5zaDoKKworICAgUmVnZW5lcmF0ZWQgYXV0b2NvbmYvYXV0b21ha2UvbGlidG9vbC1nZW5lcmF0ZWQgZmlsZXMgYnkgcnVubmluZworICAgYXV0b3JlY29uZiAtZi4KKworMjAxMC0xMC0yMSAwNzo1MSAgYnZhc3NjaGUKKworICAgKiBsdG1haW4uc2g6CisKKyAgIFJlYXBwbGllZCByMTg3MjYrcjE4NzY2OiBtYWtlIGxpYnRvb2wgc3VwcG9ydCAtZnN0YWNrLXByb3RlY3RvciouCisgICBTZWUgYWxzbworICAgaHR0cDovL2Jsb2cuZ21hbmUub3JnL2dtYW5lLmNvbXAuZ251LmxpYnRvb2wuYnVncy9tb250aD0yMDEwMDYwMQorICAgZm9yIHRoZSBjb25maXJtYXRpb24gdGhhdCB0aGlzIGlzIGEgbGlidG9vbCBidWcuCisKKzIwMTAtMTAtMjAgMjA6MTYgIGJ2YXNzY2hlCisKKyAgICogc25tcGxpYi90b29scy5jOgorCisgICBBdm9pZCB0aGF0IG5ldHNubXBfY2hlY2tfZGVmaW5lZG5lc3MoKSB0cmlnZ2VycyBhIGJ1aWxkIGZhaWx1cmUKKyAgIHdoZW4gY29tcGlsZWQgYWdhaW5zdCBvbGQgVmFsZ3JpbmQgaGVhZGVycy4gTm90ZTogdGhlIGludHJvZHVjZWQKKyAgIGNoZWNrIGlzIHN0cmljdGVyIHRoYW4gbmVjZXNzYXJ5IC0gVkFMR1JJTkRfUFJJTlRGX0JBQ0tUUkFDRSgpCisgICB3YXMgaW50cm9kdWNlZCBpbiBWYWxncmluZCAzLjUuMCBvciBiZWZvcmUgKG5vdCBzdXJlIHdoaWNoCisgICB2ZXJzaW9uKS4KKworMjAxMC0xMC0yMCAxNzoxMyAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3Rvb2xzLmM6CisKKyAgIGFkZGVkIGEgY29tbWVudCBpbiBjb2RlIG5vdGUgdGhhdCB0aGlzIHJlcXVpcmVzIGEgZmFpcmx5IHJlY2VudAorICAgdmFsZ3JpbmQKKworMjAxMC0xMC0yMCAxNzowMCAgaGFyZGFrZXIKKworICAgKiBjb25maWd1cmU6CisKKyAgIHJlcmFuIGF1dG9jb25mIGFmdGVyIHVwZGF0aW5nIGxpYnRvb2wKKworMjAxMC0xMC0yMCAxNjo1OSAgaGFyZGFrZXIKKworICAgKiAgY29uZmlnLmd1ZXNzLCBjb25maWcuc3ViLCBpbnN0YWxsLXNoLCBsdG1haW4uc2gsIG00L2xpYnRvb2wubTQsICAgCisgICAgICBtNC9sdG9wdGlvbnMubTQsIG00L2x0dmVyc2lvbi5tNCwgbTQvbHR+b2Jzb2xldGUubTQ6CisKKyAgIHVwZGF0ZSB0byBsaWJ0b29sIDIuNAorCisyMDEwLTEwLTIwIDE2OjU5ICBoYXJkYWtlcgorCisgICAqIGNvbmZpZ3VyZSwgZGlzdC9hdXRvY29uZi12ZXJzaW9uOgorCisgICB1cGRhdGVkIHRvIGF1dG9jb25mIDIuNjgKKworMjAxMC0xMC0yMCAxNDoyNiAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmMsIGFnZW50L2hlbHBlcnMvb2xkX2FwaS5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jLCBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgsIHNubXBsaWIvY2FsbGJhY2suYywgICAKKyAgICAgIHdpbjMyL21pYl9tb2R1bGVfc2h1dGRvd24uaDoKKworICAgQ0hBTkdFUzogYWdlbnQ6IEFkZGVkIHRoZSBmdW5jdGlvbnMgbmV0c25tcF9kdXBsaWNhdGVfdmFyaWFibGUoKQorICAgYW5kIG5ldHNubXBfY2FjaGVfaGFuZGxlcl9vd25zX2NhY2hlKCkuCisgICBDSEFOR0VTOiBhZ2VudDogTWVtb3J5IGFsbG9jYXRlZCBieSBuZXRzbm1wX3JlZ2lzdGVyX29sZF9hcGkoKQorICAgZm9yIHN0b3JpbmcgU05NUCB2YXJpYWJsZXMgaXMgbm93IGZyZWVkIHdoZW4gdGhlIGFzc29jaWF0ZWQKKyAgIGhhbmRsZXIgaXMgdW5yZWdpc3RlcmVkLgorICAgQ0hBTkdFUzogYWdlbnQ6IENhbGxiYWNrIGZ1bmN0aW9uIGRhdGEgZGVhbGxvY2F0aW9uIGRvZXMgbm8KKyAgIGxvbmdlciBmcmVlIHRoZSBtZW1vcnkgYWxsb2NhdGVkIGZvciB0aGUgQWdlbnRYIHNlc3Npb24gLSB0aGUKKyAgIG1lbW9yeSB0aGF0IHdhcyBhbGxvY2F0ZWQgZm9yIEFnZW50WCBzZXNzaW9ucyBpcyBub3cgZGVhbGxvY2F0ZWQKKyAgIGp1c3QgYXMgdGhhdCBmb3IgYW55IG90aGVyIHNlc3Npb24uIFRoaXMgZml4ZXMgYSBsZWFrLWF0LWV4aXQuCisgICBDSEFOR0VTOiBhZ2VudDogTm90aWZ5IGZpbHRlciB0YWJsZTogQ2FsbGJhY2sgZnVuY3Rpb24gZGF0YQorICAgZGVhbGxvY2F0aW9uIGRvZXMgbm8gbG9uZ2VyIGZyZWUgdGhlIGRhdGEgaW4KKyAgICogICAgICpzbm1wTm90aWZ5RmlsdGVyVGFibGVfaWZfY3R4LmNvbnRhaW5lciAtIHRoaXMgaXMgbm93IGRvbmUgYnkgIAorICAgICAgIHNodXRkb3duX3NubXBOb3RpZnlGaWx0ZXJUYWJsZSgpLiAgICBDSEFOR0VTOiBXaW4zMjoKKyAgICAgIHNodXRkb3duX3NubXBOb3RpZnlGaWx0ZXJUYWJsZSgpIGFuZAorCisgICBzaHV0ZG93bl93aW5FeHRETEwoKSBhcmUgbm93IGludm9rZWQgd2hlbiB0aGUgTmV0LVNOTVAgc2VydmljZSBpcworICAgc3RvcHBlZC4KKworMjAxMC0xMC0yMCAxMzo0NyAgYnZhc3NjaGUKKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDV0YWJsZV9kYXRhc2V0X2NhZ2VudGxpYi5jOgorCisgICBVbml0LXRlc3RpbmcsIFQwMDV0YWJsZV9kYXRhc2V0X2NhZ2VudGxpYjogYWRkZWQgaW5pdF9hZ2VudCgpIGFuZAorICAgc2h1dGRvd25fYWdlbnQoKSBjYWxscy4KIAogMjAxMC0xMC0yMCAxMzoxMiAgbmJhCiAKQEAgLTEwNDMwLDYgKzM1MjU1LDEyIEBACiAKICAgIEZpeCBub24tQU5TSSBmdW5jdGlvbiBoZWFkaW5nCiAKKzIwMTAtMTAtMjAgMTI6NTEgIHJzdG9yeQorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2xpbnV4LmM6CisKKyAgIGZpeCBpcENpZHJSb3V0ZVRhYmxlIChtYXNrKSBmb3IgbGl0dGxlIGVuZGlhbiBzeXN0ZW1zCisKIDIwMTAtMTAtMjAgMTA6MzQgIGJ2YXNzY2hlCiAKICAgICogIGFnZW50L2FnZW50X2hhbmRsZXIuYywgYWdlbnQvYWdlbnRfcmVnaXN0cnkuYywgICAKQEAgLTEwNDUwLDYgKzM1MjgxLDI3IEBACiAgICBpcyBmb3IgdGhpcyBjaGFuZ2UgdGhhdCBpdCB3YXMgbmVjZXNzYXJ5IHRvIGludHJvZHVjZSB0aGUgbmV3CiAgICBmdW5jdGlvbiBzbm1wX3Nlc3Nfc2Vzc2lvbl9sb29rdXAoKS4KIAorMjAxMC0xMC0xOSAyMzo0OSAgbWFnZnIKKworICAgKiAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDE2c25tcHYyY2dldGZhaWxfc2ltcGxlLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDUxc25tcHYyY3RyYXBfc2ltcGxlLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDUyc25tcHYyY2luZm9ybV9zaW1wbGUsICAgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxNDFzbm1wdjJjdmFjbWdldGZhaWxfc2ltcGxlOgorCisgICBDSEFOR0VTOiB0ZXN0aW5nOiBBZGQgbWlzc2luZyBwcmVjb25kaXRpb25zCisKKzIwMTAtMTAtMTkgMjI6MTEgIGhhcmRha2VyCisKKyAgICogZGlzdC9wYXRtZToKKworICAgZG9uJ3QgZGVmYXVsdCB0byBhcHBseWluZyB0byA1LjIKKworMjAxMC0xMC0xOSAyMjoxMCAgaGFyZGFrZXIKKworICAgKiBkaXN0L3BhdG1lOgorCisgICBhZGRlZCB0aGUgNS42IGJyYW5jaAorCiAyMDEwLTEwLTE5IDIxOjEzICBuYmEKIAogICAgKiBzbm1wbGliL3BhcnNlLmM6CkBAIC0xMDUyMiwxMSArMzUzNzQsNTcgQEAKICAgIHJlZGVmaW5pdGlvbiBvZiB0aGUgbWFsbG9jKCkgbWFjcm8gZHVyaW5nIGJ1aWxkaW5nIHRoZSBOZXQtU05NUAogICAgc291cmNlIGNvZGUuCiAKLTIwMTAtMTAtMTggMTA6MzUgIGJ2YXNzY2hlCisyMDEwLTEwLTE5IDA3OjA0ICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlZmF1bHRfbW9kdWxlcy5oOgorCisgICBDSEFOR0VTOiBhZ2VudDogRmFjdG9yIG91dCBjb21tb24gY29uZmlnX2FkZF9taWIgc3RhdG1lbnRzCisKKzIwMTAtMTAtMTggMTQ6MjIgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmM6CisKKyAgIE1hcmsgdGhlIHByb3BlciBoYW5kbGVyIHRoYXQgb3ducyB0aGUgdGFibGUgcmVnaXN0cmF0aW9uCisgICBpbmZvcm1hdGlvbi4KKworMjAxMC0xMC0xOCAxMDo1NCAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvaGVscGVycy90YWJsZS5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckRlbHRhVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaDoKKworICAgQ0hBTkdFUzogYWdlbnQ6IEFkZGVkIGZ1bmN0aW9ucyBuZXRzbm1wX2hhbmRsZXJfb3duc190YWJyZXEoKSwKKyAgIG5ldHNubXBfcmVnaXN0cmF0aW9uX293bnNfdGFicmVxKCksIG5ldHNubXBfaXRlcmF0b3JfY2xvbmUoKS4KKyAgIEV4cG9ydGVkIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fY2xvbmUoKS4KKyAgIENIQU5HRVM6IGFnZW50OiBNb2RpZmllZCBuZXRzbm1wX2l0ZXJhdG9yX2RlbGV0ZV90YWJsZSgpIHN1Y2gKKyAgIHRoYXQgaXQgZnJlZXMgdGhlIHRhYmxlIHJlZ2lzdHJhdGlvbiBpbmZvcm1hdGlvbiBzdG9yZWQgaW4gYQorICAgdGFibGUgaXRlcmF0b3IgdG9vLgorICAgQ0hBTkdFUzogYWdlbnQ6IE1vZGlmaWVkIG5ldHNubXBfZ2V0X3RhYmxlX2l0ZXJhdG9yX2hhbmRsZXIoKQorICAgc3VjaCB0aGF0IHRoZSB0YWJsZSBpdGVyYXRvciBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbiBpcyBmcmVlZAorICAgd2hlbiB0aGUgYXNzb2NpYXRlZCBoYW5kbGVyIGlzIGZyZWVkLgorICAgCisgICBSZXN0b3JlZCB0aGUgYmVoYXZpb3Igb2YgbmV0c25tcF9nZXRfdGFibGVfaGFuZGxlcigpIHRvIHRoYXQgb2YKKyAgIHIxOTQ0OSwgdGhhdCBpcywgbm90IHNldHRpbmcgdXAgdGhlIGRhdGFfZnJlZSBwb2ludGVyIGJlY2F1c2Ugbm90CisgICBhbGwgY2FsbGVycyBvZiBuZXRzbm1wX2dldF90YWJsZV9oYW5kbGVyKCkgZXhwZWN0IHRoYXQgdGFibGUKKyAgIHJlZ2lzdHJhdGlvbiBpbmZvcm1hdGlvbiBpcyBmcmVlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIGhhbmRsZXIgaXMKKyAgIGZyZWVkLgorCisyMDEwLTEwLTE4IDEwOjM0ICBidmFzc2NoZQogCiAgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmM6CiAKLSAgIEJhY2twb3J0ZWQgcjE5NDkxIHRvIHRoZSBWNS42IGJyYW5jaCAoY29tcGlsZXIgd2FybmluZyBmaXgpLgorICAgRml4ZWQgYSBjb21waWxlciB3YXJuaW5nIGFib3V0IGNhc3RpbmcgYXdheSBjb25zdG5lc3MuCiAKIDIwMTAtMTAtMTggMDg6NTIgIGJ2YXNzY2hlCiAKQEAgLTEwNjI5LDYgKzM1NTI3LDE0IEBACiAgICBDSEFOR0VTOiB0ZXN0aW5nOiBJdCBpcyBhZ2FpbiBwb3NzaWJsZSB0byBydW4gYW4gaW5kaXZpZHVhbCB0ZXN0CiAgICB2aWEgdGhlIHNjcmlwdCB0ZXN0aW5nL1JVTlRFU1RTLgogCisyMDEwLTEwLTE3IDE0OjI4ICBidmFzc2NoZQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oLCBzbm1wbGliL3Rvb2xzLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IEFkZGVkIHRoZSBmdW5jdGlvbiBuZXRzbm1wX2NoZWNrX2RlZmluZWRuZXNzKCksCisgICB3aGljaCBoZWxwcyB0byBmaW5kIHRoZSBjYXVzZSBvZiB1bmRlZmluZWQgdmFsdWUgZXJyb3JzIGFzCisgICByZXBvcnRlZCBieSBWYWxncmluZC4KKwogMjAxMC0xMC0xNyAxNDoyNCAgYnZhc3NjaGUKIAogICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuaDoKQEAgLTEwNjM2LDYgKzM1NTQyLDEzIEBACiAgICBSZW1vdmVkIGFuIG9ic29sZXRlIGRlY2xhcmF0aW9uOiB0aGUgZnVuY3Rpb24gYWdlbnR4X2J1aWxkKCkgaGFzCiAgICBiZWVuIHJlbW92ZWQgYSBsb25nIHRpbWUgYWdvLgogCisyMDEwLTEwLTE3IDE0OjA1ICBidmFzc2NoZQorCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQWRkZWQgY29uZmlndXJlIHRlc3QgZm9yIHRoZSBWYWxncmluZCBoZWFkZXIgZmlsZXMuCisKIDIwMTAtMTAtMTcgMTI6MDEgIGJ2YXNzY2hlCiAKICAgICogc25tcGxpYi9zbm1wX29wZW5zc2wuYzoKQEAgLTEwNjUxLDcgKzM1NTY0LDggQEAKIAogMjAxMC0xMC0xNyAwOTozNiAgYnZhc3NjaGUKIAotICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUTFNCYXNlRG9tYWluLmgsICAgCisgICAqICBhZ2VudC9oZWxwZXJzL3NjYWxhcl9ncm91cC5jLCBhZ2VudC9oZWxwZXJzL3dhdGNoZXIuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVExTQmFzZURvbWFpbi5oLCAgIAogICAgICAgc25tcGxpYi9zbm1wX29wZW5zc2wuYywgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmM6CiAKICAgIEZpeGVkIGEgZmV3IGNvbXBpbGVyIHdhcm5pbmdzIGJ5IGluc2VydGluZyBhcHByb3ByaWF0ZSBjYXN0cy4KQEAgLTEwNjY0LDYgKzM1NTc4LDU2IEBACiAKICAgIE5FVFNOTVBfUkVNT1ZFX0NPTlNUKCktcmVsYXRlZCBjbGVhbnVwLgogCisyMDEwLTEwLTE3IDAxOjQxICBtYWdmcgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWZhdWx0X21vZHVsZXMuaCwgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oLCAgIAorICAgICAgYWdlbnQvc25tcGQuYzoKKworICAgTkVXUzogc25tcGQ6IFJlbW92ZSB1dGlsX2Z1bmNzL0V4aXQgZnJvbSB0aGUgcmVxdWlyZW1lbnQgc2V0cyBvZgorICAgdXRpbF9mdW5jcyBhbmQgZGVmYXVsdF9tb2R1bGVzLgorICAgTkVXUzogc25tcGQ6IE5ldmVyIHVzZSBFeGl0IHRvIHRlcm1pbmF0ZSB0aGUgYWdlbnQuCisKKzIwMTAtMTAtMTYgMjI6MzIgIG1hZ2ZyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2RlZmF1bHRfbW9kdWxlcy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmgsIGFnZW50L3NubXBkLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBNYWtlIHRoZSBzZXR0aW5nIG9mIHRoZSBhcmd2cmVzdGFydCogdmFyaWFibGVzCisgICBvcHRpb25hbCBvbiBVU0lOR19VVElMX0ZVTkNTX1JFU1RBUlRfTU9EVUxFLgorICAgTkVXUzogc25tcGQ6IFJlbW92ZSB1dGlsX2Z1bmNzL3Jlc3RhcnQgZnJvbSB0aGUgcmVxdWlyZW1lbnQgc2V0cworICAgb2YgdXRpbF9mdW5jcyBhbmQgZGVmYXVsdF9tb2R1bGVzLgorICAgQ0hBTkdFUzogc25tcGQ6IEFkZCB1dGlsX2Z1bmNzL3Jlc3RhcnQgdG8gdGhlIHJlcXVpcmVtZW50IHNldCBvZgorICAgdWNkLXNubXAvdmVyc2lvbmluZm8uCisKKzIwMTAtMTAtMTYgMjI6MDUgIG1hZ2ZyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmg6CisKKyAgIENIQU5HRVM6IHNubXBkOiBFeHRlbmQgdGhlIGRvY3VtZW50YXRpb24gZm9yIGRhdGFfY2xvbmUgYW5kCisgICBkYXRhX2ZyZWUKKworMjAxMC0xMC0xNiAyMjowMyAgbWFnZnIKKworICAgKiBhZ2VudC9oZWxwZXJzL3dhdGNoZXIuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IE1ha2UgaXQgcG9zc2libGUgdG8gY29weSB3YXRjaGVkIGRhdGEgaXRlbXMKKyAgIHdpdGhvdXQgbWVtb3J5IGxlYWtzLgorCisyMDEwLTEwLTE2IDIyOjAxICBtYWdmcgorCisgICAqIGFnZW50L2hlbHBlcnMvd2F0Y2hlci5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBjbXAKKworMjAxMC0xMC0xNiAxOTo0NCAgbWFnZnIKKworICAgKiBhZ2VudC9oZWxwZXJzL3NjYWxhcl9ncm91cC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogRG8gbm90IGxlYWsgdGhlIGxpbWl0cyBvZiBzY2FsYXJfZ3JvdXAgb2JqZWN0cyBvbgorICAgc2h1dGRvd24uCisKIDIwMTAtMTAtMTYgMDg6MzcgIGJ2YXNzY2hlCiAKICAgICogIGFnZW50L2FnZW50X2hhbmRsZXIuYywgY29uZmlndXJlLCAgIApAQCAtMTA2NzEsMTAgKzM1NjM1LDI2IEBACiAKICAgIFNwZWxsaW5nIGZpeDogZHVscGljYXRlIC0+IGR1cGxpY2F0ZS4KIAorMjAxMC0xMC0xNiAwODozNCAgYnZhc3NjaGUKKworICAgKiAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwNnNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY2FnZW50bGliLmM6CisKKyAgIEFkZGVkIG1vcmUgdGVzdCBjb2RlLgorCisyMDEwLTEwLTE2IDA4OjMzICBidmFzc2NoZQorCisgICAqICBhZ2VudC9hZ2VudF9oYW5kbGVyLmMsIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy90YWJsZS5jOgorCisgICBGb2xsb3ctdXAgZm9yIHIxOTQ2NTogaGFuZGxlIG91dC1vZi1tZW1vcnkgcHJvcGVybHkgLyByZW1vdmVkIGEKKyAgIGR1cGxpY2F0ZSBmdW5jdGlvbi4KKwogMjAxMC0xMC0xNSAxOToxNyAgYnZhc3NjaGUKIAogICAgKiAgdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9jYWdlbnRsaWJfYnVpbGQsICAgCiAgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L2NhZ2VudGxpYl9ydW4sICAgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L2NsaWJfYnVpbGQsICAgCiAgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDV0YWJsZV9kYXRhc2V0X2NhZ2VudGxpYi5jLCAgIAogICAgICAgdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA1dGFibGVfZGF0YXNldF9jbGliLmMsICAgCiAgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDZzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NhZ2VudGxpYi5jLApAQCAtMTA2ODQsMzYgKzM1NjY0LDMyIEBACiAgICBDSEFOR0VTOiB0ZXN0aW5nOiBJbnRyb2R1Y2VkIG5ldyB0ZXN0IHR5cGUgbmV4dCB0byBjYXBwIGFuZCBjbGliOgogICAgY2FnZW50bGliLgogCisyMDEwLTEwLTE1IDE4OjU2ICBidmFzc2NoZQorCisgICAqICBhZ2VudC9hZ2VudF9oYW5kbGVyLmMsIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA2c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jbGliLmM6CisKKyAgIE5FV1M6IHNubXBsaWI6IEFkZGVkIG5ldHNubXBfbWliX2hhbmRsZXIuZGF0YV9jbG9uZSwgYSBmdW5jdGlvbgorICAgcG9pbnRlciB0aGF0IGRlZmluZXMgaG93IHRvIGNsb25lIG5ldHNubXBfbWliX2hhbmRsZXIubXl2b2lkLgorICAgTXVzdCBiZSBkZWZpbmVkIGlmIGFuZCBvbmx5IGlmIGRhdGFfZnJlZSBpcyBzZXQuIFRoZSBmdW5jdGlvbgorICAgbmV0c25tcF9oYW5kbGVyX2R1cCgpIGRvZXMgbm93IGNsb25lIE1JQiBoYW5kbGVyIHByaXZhdGUgZGF0YSBpZgorICAgZGF0YV9jbG9uZSgpIGlzIHNldC4gUHJldmlvdXNseSBhZnRlciBkdXBsaWNhdGluZyBhIE1JQiBoYW5kbGVyCisgICBhbmQgdW5yZWdpc3RlcmluZyBvbmUgb2YgdGhlIHR3byBNSUIgaGFuZGxlcnMsIHRoZSBwcml2YXRlIGRhdGEKKyAgIHBvaW50ZXIgKG15dm9pZCkgb2YgdGhlIG90aGVyIGJlY2FtZSBhIGRhbmdsaW5nIHBvaW50ZXIuIE5vdGU6CisgICBhZGRpdGlvbiBvZiBuZXRzbm1wX21pYl9oYW5kbGVyLmRhdGFfY2xvbmUgaXMgYW4gQUJJIGNoYW5nZS4KKyAgIENIQU5HRVM6IHRlc3Rpbmc6IGFkZGVkIG1vcmUgdGVzdCBjYXNlcyB0byB0aGUgaGFuZGxlcgorICAgcmVnaXN0cmF0aW9uIHRlc3QuCisKIDIwMTAtMTAtMTUgMTg6MzIgIGJ2YXNzY2hlCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5jOgogCiAgICBGaXhlZCBhIGNvbXBpbGVyIHdhcm5pbmcuCiAKLTIwMTAtMTAtMTUgMTI6NTQgIGJ2YXNzY2hlCi0KLSAgICogIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvY2xpYl9idWlsZCwgICAKLSAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwNXRhYmxlX2RhdGFzZXRfY2xpYi5jOgotCi0gICBDSEFOR0VTOiB0ZXN0aW5nOiBVbml0IHRlc3RzIGNhbiBub3cgaW52b2tlIGZ1bmN0aW9ucyBmcm9tCi0gICBsaWJhZ2VudC4KLSAgIENIQU5HRVM6IHRlc3Rpbmc6IEFkZGVkIHVuaXQgdGVzdCBmb3IgdGFibGVfZGF0YXNldC4KLSAgIChCYWNrcG9ydGVkIGZyb20gcjE5NDUwIGZyb20gdGhlIHRydW5rLikKLQotMjAxMC0xMC0xNSAxMjo1MyAgYnZhc3NjaGUKLQotICAgKiAgYWdlbnQvaGVscGVycy90YWJsZS5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYywgICAKLSAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jLCAgIAotICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgsICAgCi0gICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaDoKLQotICAgQ0hBTkdFUzogc25tcGxpYjogQWRkZWQgZnVuY3Rpb24gbmV0c25tcF9kZWxldGVfdGFibGVfZGF0YV9zZXQoKS4KLSAgIENIQU5HRVM6IHNubXBsaWI6IEFkZGVkIGRlY2xhcmF0aW9uIGZvciB0aGUgZnVuY3Rpb24KLSAgIG5ldHNubXBfdGFibGVfZGF0YV9kZWxldGVfdGFibGUoKSBpbiBhIHB1YmxpYyBhZ2VudCBoZWFkZXIgZmlsZS4KLSAgIENIQU5HRVM6IHNubXBsaWI6IEZpeGVkIG1lbW9yeSBsZWFrIGluCi0gICBuZXRzbm1wX3RhYmxlX2RhdGFfZGVsZXRlX3RhYmxlKCkuCi0gICAoQmFja3BvcnRlZCByMTk0NTAgYW5kIHIxOTQ1NCBmcm9tIHRydW5rLikKLQogMjAxMC0xMC0xNSAxMjozMCAgYnZhc3NjaGUKIAogICAgKiAgYWdlbnQvYWdlbnRfaGFuZGxlci5jLCAgIApAQCAtMTA3NDgsNiArMzU3MjQsMzAgQEAKICAgIENIQU5HRVM6IFdpbjMyOiBidWlsZGluZzogQnVpbGRzIG5vdyBjb3JyZWN0bHkgd2l0aCBhIDY0LWJpdAogICAgY29tcGlsZXIuCiAKKzIwMTAtMTAtMTUgMDk6NDUgIGJ2YXNzY2hlCisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBzbm1wX3NodXRkb3duKCk6IGFkZGVkIGNhbGwgdG8KKyAgIG5ldHNubXBfY2VydHNfc2h1dGRvd24oKS4KKworMjAxMC0xMC0xNSAwNjo0NSAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYzoKKworICAgRm9sbG93LXVwIGZvciByMTk0NTA6IGxldCBuZXRzbm1wX2RlbGV0ZV90YWJsZV9kYXRhX3NldCgpIGZyZWUKKyAgIGFsbCB0YWJsZV9kYXRhc2V0LXJlbGF0ZWQgbWVtb3J5LgorCisyMDEwLTEwLTE0IDIzOjE1ICBtYWdmcgorCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50LCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfdHJhbnNwb3J0cywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnM6CisKKyAgIENIQU5HRVM6IGJ1aWxkaW5nOiBNYWtlIGl0IHBvc3NpYmxlIHRvIHJlZ2VuZXJhdGUgdXNpbmcgYXV0b2NvbmYKKyAgIDIuNjguCisKIDIwMTAtMTAtMTQgMjM6MDEgIG1hZ2ZyCiAKICAgICogIHNubXBsaWIvc25tcF9sb2dnaW5nLmMsIHNubXBsaWIvc25tcF90cmFuc3BvcnQuYywgICAKQEAgLTEwNzU1LDEyICszNTc1NSwyNSBAQAogCiAgICBDSEFOR0VTOiBzbm1wbGliOiBCZSBjb25zdCBjb3JyZWN0IG92ZXIgY2FsbHMgdG8gc3RyKiBmdW5jdGlvbnMuCiAKLTIwMTAtMTAtMTQgMjI6NTcgIG1hZ2ZyCisyMDEwLTEwLTE0IDE1OjE5ICBidmFzc2NoZQogCi0gICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvY2xpYl9idWlsZDoKKyAgICogIGFnZW50L2hlbHBlcnMvdGFibGUuYywgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgsICAgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L2NsaWJfYnVpbGQsICAgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDV0YWJsZV9kYXRhc2V0X2NsaWIuYzoKIAotICAgQ0hBTkdFUzogdGVzdGluZzogR2VuZXJhdGUgYSBub3JtYWwgI2xpbmUgZGlyZWN0aXZlIGFzIHBlciBDOTkKLSAgIGluc3RlYWQgb2YgdGhlIGNvbXBpbGVyLXNwZWNpZmljICM8bj4tZGlyZWN0aXZlLgorICAgQ0hBTkdFUzogc25tcGxpYjogQWRkZWQgZnVuY3Rpb24gbmV0c25tcF9kZWxldGVfdGFibGVfZGF0YV9zZXQoKS4KKyAgIENIQU5HRVM6IHNubXBsaWI6IEFkZGVkIGRlY2xhcmF0aW9uIGZvciB0aGUgZnVuY3Rpb24KKyAgIG5ldHNubXBfdGFibGVfZGF0YV9kZWxldGVfdGFibGUoKSBpbiBhIHB1YmxpYyBhZ2VudCBoZWFkZXIgZmlsZS4KKyAgIENIQU5HRVM6IHNubXBsaWI6IEZpeGVkIG1lbW9yeSBsZWFrIGluCisgICBuZXRzbm1wX3RhYmxlX2RhdGFfZGVsZXRlX3RhYmxlKCkuCisgICBDSEFOR0VTOiBzbm1wbGliOiBGaXhlZCBtZW1vcnkgbGVhayB0cmlnZ2VyZWQgYnkgdW5yZWdpc3RlcmluZyBhCisgICB0YWJsZSBoYW5kbGVyLgorICAgQ0hBTkdFUzogdGVzdGluZzogVW5pdCB0ZXN0cyBjYW4gbm93IGludm9rZSBmdW5jdGlvbnMgZnJvbQorICAgbGliYWdlbnQuCisgICBDSEFOR0VTOiB0ZXN0aW5nOiBBZGRlZCB1bml0IHRlc3QgZm9yIHRhYmxlX2RhdGFzZXQuCiAKIDIwMTAtMTAtMTQgMTQ6MDUgIGJ2YXNzY2hlCiAKQEAgLTEwODIxLDEyICszNTgzNCw2MCBAQAogICAgTWFkZSBzdXJlIHRoYXQgdGhlIHZhcmlhYmxlICRTTk1QX0JBU0VESVIgaXMgYXZhaWxhYmxlIGluIHRoZQogICAgVDAwMGNvbmZpZ3VyZSB0ZXN0LgogCisyMDEwLTEwLTE0IDA2OjE5ICBtYWdmcgorCisgICAqIGNvbmZpZ3VyZSwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgUmVnZW5lcmF0ZWQKKwogMjAxMC0xMC0xNCAwNTozNiAgbmJhCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1TZW5zb3JzLmM6CiAKICAgIFF1ZWxsIHdhcm5pbmdzCiAKKzIwMTAtMTAtMTQgMDM6NTAgIHJzdG9yeQorCisgICAqICBjb25maWd1cmUuZC9jb25maWdfb3NfbGlicywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4uaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjEwLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW43LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW44LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW45LmgsIHNubXBsaWIvc25tcF9vcGVuc3NsLmM6CisKKyAgIHRlc3QgZm9yIG9wZW5zc2wgc2hhIDIyNC8yNTYvMzg1LzUxMiBzdXBwb3J0IGluc3RlYWQgb2YKKyAgIGhhcmRjb2RpbmcKKworMjAxMC0xMC0xNCAwMzo1MCAgcnN0b3J5CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDoKKworICAgYWRkIE9VVFBVVEVOVlZBUlMgdG8gc2F2ZSBpbXBvcnRhbnQgZW52aXJvbm1lbnQgdmFyaWFibGVzOyB3aGVuCisgICBTTk1QX1ZFUkJPU0UKKyAgIGlzIHNldCwgc2F2ZSBlbnYgdmFycyBhbmQgY29tbWFuZCB0byBpbmRpdmlkdWFsIGludm9rZWQgZmlsZSBmb3IKKyAgIGVhY2ggdGVzdDsKKyAgIHNhdmUgZW52IHZhcnMgYW5kIGNvbW1hbmQgZm9yIGVhY2ggU1RBUlRQUk9HCisKKzIwMTAtMTAtMTQgMDM6NTAgIHJzdG9yeQorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX1RFU1RDT05GLnNoOgorCisgICBDSEFOR0VTOiB0ZXN0aW5nOiBhdXRvLWNyZWF0ZSB1c2VyIHNwZWNpZmllZCBTTk1QX1RNUERJUiBhbmQKKyAgIFNOTVBfVE1QX1BFUlNJU1RFTlRESVIgdG9vOyBkZWZhdWx0IFNOTVBfVE1QX1BFUlNJU1RFTkRJUiBiYXNlZAorICAgb24gU05NUF9UTVBESVIKKyAgIGZvciB1c2VyIHNwZWNpZmllZCBTTk1QX1RNUERJUgorCisyMDEwLTEwLTE0IDAzOjQ5ICByc3RvcnkKKworICAgKiAgYWNjb25maWcuaCwgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2M0LCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luMTAuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjguaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjkuaDoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IGNoZWNrIGZvciAvZGV2L2ttZW0gaW5zdGVhZCBvZiBhc3N1bWluZyBpdAorICAgZXhpc3RzIGFuZCBoYXJkY29kaW5nIHdoZW4gaXQgaXMgbm90IHRoZXJlCisKIDIwMTAtMTAtMTQgMDM6MjggIHJzdG9yeQogCiAgICAqICBzbm1wbGliL3NubXB0c20uYywgc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmMsICAgCkBAIC0xMDg3MSw3ICszNTkzMiwxNCBAQAogCiAgICBjaGVjayBmb3IgbnVsbCBiZWZvcmUgZGVyZWYKIAotMjAxMC0xMC0xMyAxNjo1NSAgaGFyZGFrZXIKKzIwMTAtMTAtMTMgMjA6MTIgIG1hZ2ZyCisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9jbGliX2J1aWxkOgorCisgICBDSEFOR0VTOiB0ZXN0aW5nOiBHZW5lcmF0ZSBhIG5vcm1hbCAjbGluZSBkaXJlY3RpdmUgYXMgcGVyIEM5OQorICAgaW5zdGVhZCBvZiB0aGUgY29tcGlsZXItc3BlY2lmaWMgIzxuPi1kaXJlY3RpdmUuCisKKzIwMTAtMTAtMTMgMTY6NTMgIGhhcmRha2VyCiAKICAgICogZGlzdC9hdXRvY29uZi12ZXJzaW9uLCB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMDBjb25maWd1cmU6CiAKQEAgLTEwODk1LDggKzM1OTYzLDkgQEAKIAogMjAxMC0xMC0xMyAxMTo1MyAgYnZhc3NjaGUKIAotICAgKiAgd2luMzIvbGlic25tcF9kbGwvTWFrZWZpbGUuaW4sIHdpbjMyL3NubXBkL01ha2VmaWxlLmluLCAgIAotICAgICAgd2luMzIvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sIHdpbjMyL3NubXB0cmFwZC9NYWtlZmlsZS5pbjoKKyAgICogIHdpbjMyL01ha2VmaWxlLWFwcHMuaW4sIHdpbjMyL2xpYnNubXBfZGxsL01ha2VmaWxlLmluLCAgIAorICAgICAgd2luMzIvc25tcGQvTWFrZWZpbGUuaW4sIHdpbjMyL3NubXBuZXRzdGF0L01ha2VmaWxlLmluLCAgIAorICAgICAgd2luMzIvc25tcHRyYXBkL01ha2VmaWxlLmluOgogCiAgICBDSEFOR0VTOiBXaW4zMjogYnVpbGRpbmc6IGJhdGNoIGJ1aWxkIHdpdGggT3BlblNTTCBlbmFibGVkIGFuZAogICAgd2l0aCByZWNlbnQgT3BlblNTTCBkZXZlbG9wbWVudCBmaWxlcyB3b3JrcyBhZ2Fpbi4KQEAgLTExMDU1LDEyICszNjEyNCw2IEBACiAgICBzdXBwb3J0IHRoZSAtRSBmbGFnIHRvIGdyZXAsIHVzZSBhdXRvY29uZiB0byBmaW5kIHRoZSByaWdodCBlZ3JlcAogICAgYXQgYWxsIHRpbWVzLgogCi0yMDEwLTEwLTExIDE0OjExICBoYXJkYWtlcgotCi0gICAqIC46Ci0KLSAgIGNyZWF0ZSBwYXRjaCBicmFuY2ggY29weQotCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIENoYW5nZXM6IFY1LjYuUkMzIC0+IFY1LjYKQEAgLTI0MjgxLDcgKzQ5MzQ0LDcgQEAKIAogICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfY29tbW9uLmM6CiAKLSAgIENIQU5HRVM6IHNubXBkOiBmcm9tICJNYXJjdXMgUsO8Y2tlcnQiOiBmaXggcG9zc2libGUgY3Jhc2ggd2hlbgorICAgQ0hBTkdFUzogc25tcGQ6IGZyb20gIk1hcmN1cyBS4KWG4KSGhuClhuCkhYXgpYbgpIWG4KWG4KSGhuClhuCkhYWeY2tlcnQiOiBmaXggcG9zc2libGUgY3Jhc2ggd2hlbgogICAgNjQtYml0IGNvdW50ZXJzIGluIGlwU3lzdGVtU3RhdHNUYWJsZSBnZXQgYmlnZ2VyIHRoYW4gMl4zMgogCiAyMDA5LTA4LTAzIDE5OjI3ICBtYWdmcgpAQCAtMzc4NzQsNyArNjI5MzcsNyBAQAogCiAgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19jb21tb24uYzoKIAotICAgQ0hBTkdFUzogc25tcGQ6IGZyb20gIk1hcmN1cyBSw7xja2VydCI6IGZpeCBwb3NzaWJsZSBjcmFzaCB3aGVuCisgICBDSEFOR0VTOiBzbm1wZDogZnJvbSAiTWFyY3VzIFLgpYbgpIaG4KWG4KSFheClhuCkhYbgpYbgpIaG4KWG4KSFhZ5ja2VydCI6IGZpeCBwb3NzaWJsZSBjcmFzaCB3aGVuCiAgICA2NC1iaXQgY291bnRlcnMgaW4gaXBTeXN0ZW1TdGF0c1RhYmxlIGdldCBiaWdnZXIgdGhhbiAyXjMyCiAKIDIwMDktMDgtMDMgMTk6MjcgIG1hZ2ZyCkBAIC00MDMzNCwxNCArNjUzOTcsMTQgQEAKICAgICogc25tcGxpYi9zbm1wVURQRG9tYWluLmM6CiAKICAgIEZpeCBzcmMvZHN0IGNvbmZ1c2lvbgotICAgUGF0Y2ggcHJvdmlkZWQgYnkgS3J6eXN6dG9mIE9sxJlkemtpCisgICBQYXRjaCBwcm92aWRlZCBieSBLcnp5c3p0b2YgT2zgpYbgpIaG4KWG4KSFheClhuCkhYeZZHpraQogCiAyMDA5LTAxLTI4IDA5OjI5ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jOgogCiAgICBDSEFOR0VTOiBGaXggdHdvIGJ1Z3Mgd2l0aCBzbXV4IHBhc3N3b3JkIHN1cHBvcnQuCi0gICBQYXRjaCBzdXBwbGllZCBieSBLcnp5c3p0b2YgT2zEmWR6a2kKKyAgIFBhdGNoIHN1cHBsaWVkIGJ5IEtyenlzenRvZiBPbOClhuCkhobgpYbgpIWF4KWG4KSFh5lkemtpCiAKIDIwMDktMDEtMjMgMTQ6NTMgIGpzYWZyYW5lawogCkBAIC01NDI1NCw3ICs3OTMxNyw3IEBACiAKICAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jOgogCi0gICBIYW5kbGUgZnVsbC1sZW5ndGggSVB2NiBhZGRyZXNzZXMuICBGaXggc3VwcGxpZWQgYnkgUmFkZWsgVm9rw6FsCisgICBIYW5kbGUgZnVsbC1sZW5ndGggSVB2NiBhZGRyZXNzZXMuICBGaXggc3VwcGxpZWQgYnkgUmFkZWsgVm9r4KWG4KSGhuClhuCkhYXgpYbgpIWG4KWG4KSGhuClhuCkhYWBbAogCiAyMDA2LTAxLTMwIDAxOjUyICBkdHMxMgogCkBAIC01NDMwMSw3ICs3OTM2NCw3IEBACiAsIHNubXBsaWIvc25tcF9hcGkuYywgcGVybC9TTk1QL1NOTVAucG06CiAKICAgIEhhbmRsZSBub24taW5jcmVhc2luZyBPSURzIGR1cmluZyBhIChwZXJsKSBidWxrd2Fsay4KLSAgIFBhdGNoICMxMzY0NjUwIGZyb20gT2xlIEJqw7hybiBIZXNzZW4KKyAgIFBhdGNoICMxMzY0NjUwIGZyb20gT2xlIEJq4KWG4KSGhuClhuCkhYXgpYbgpIWG4KWG4KSGhuClhuCkhYWacm4gSGVzc2VuCiAKIDIwMDYtMDEtMjcgMDM6MDcgIGR0czEyCiAKQEAgLTcwMDQwLDcgKzk1MTAzLDcgQEAKIAogICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6CiAKLSAgIGZpeCBmbG9hdCBjYWxjIGluIHZhcl9leHRlbnNpYmxlX2Rpc2sgcGVyIEhhcmFsZCBTdHJh32JlcmdlciA8aHNAc3lzbG9nLmF0PgorICAgZml4IGZsb2F0IGNhbGMgaW4gdmFyX2V4dGVuc2libGVfZGlzayBwZXIgSGFyYWxkIFN0cmHgpYbgpIaG4KWG4KSFhoNiZXJnZXIgPGhzQHN5c2xvZy5hdD4KIAogMjAwNC0wOC0zMSAxNDowMiAgaGFyZGFrZXIKIApAQCAtNzI2MjcsNyArOTc2OTAsNyBAQAogICAgKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZToKIAogICAgRml4IGhhbmRsaW5nIG9mIC0tZW5hYmxlLWxvY2FsLXNtdXggb3B0aW9uCi0gICAoUGF0Y2ggIzk0OTgwOCBmcm9tIEVyaWsgxG5nZ+VyZCkKKyAgIChQYXRjaCAjOTQ5ODA4IGZyb20gRXJpayDgpYbgpIaG4KWG4KSFheClhuCkhYduZ2fgpYbgpIaG4KWG4KSFhotyZCkKIAogMjAwNC0wNi0xOCAwNjo0NiAgZHRzMTIKIApAQCAtMTAzNTkzLDcgKzEyODY1Niw3IEBACiAgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvOiBocl9zd3J1bi5jIChWNC0yLXBhdGNoZXMuNSksIGhyX3N3cnVuLmMKIDoKIAotICAgRml4IExpbnV4IGZpbGUgZGVzY3JpcHRvciBsZWFrIChyZXBvcnRlZCBieSBPbGl2ZXIgRuRuZ2VyKQorICAgRml4IExpbnV4IGZpbGUgZGVzY3JpcHRvciBsZWFrIChyZXBvcnRlZCBieSBPbGl2ZXIgRuClhuCkhobgpYbgpIWGim5nZXIpCiAgICAKIDIwMDEtMDMtMTQgMDU6MjIgIGpicG4KIApAQCAtMTA4MTE4LDcgKzEzMzE4MSw3IEBACiAKICAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5LmM6CiAKLSAgIC0gKG1lbW9yeS5jKTogUGF0Y2ggZnJvbSBSYWduYXIgS2r4cnN0YWQ6CisgICAtIChtZW1vcnkuYyk6IFBhdGNoIGZyb20gUmFnbmFyIEtq4KWG4KSGhuClhuCkhYbgpYbgpIWQcnN0YWQ6CiAgICAgIC0gZml4ZWQgbGludXggcHJvYmxlbTogd3JvbmcgcGFyYW1zIGdldHRpbmcgcmV0dXJuZWQuCiAgICAKIDIwMDAtMDUtMjUgMDU6MzggIG1zbGlmY2FrCkBAIC0xMDk4OTgsNyArMTM0OTYxLDcgQEAKIAogICAgLSAoY29uZmlndXJlKiB1Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuYyk6CiAgICAgIC0gUHJvdmlkZSBtaXNzaW5nICdnZXRwYWdlc2l6ZScgcm91dGluZSBmb3IgU29sYXJpcyAyLjQKLSAgICAgICAoVGhhbmtzIHRvIFJhZ25hciBLavhyc3RhZCkKKyAgICAgICAoVGhhbmtzIHRvIFJhZ25hciBLauClhuCkhobgpYbgpIWG4KWG4KSFkHJzdGFkKQogICAgCiAyMDAwLTAyLTE2IDIwOjE3ICBtc2xpZmNhawogCkBAIC0xMTcyMjYsNyArMTQyMjg5LDcgQEAKICAgICAgbG9hZGF2ZS5jLCBtZW1vcnlfc29sYXJpczIuYywgcGFzcy5jLCBwYXNzX3BlcnNpc3QuYywgcHJvYy5jLAogICAgICB2ZXJzaW9uaW5mby5jLCBhbGFybS5jLCBldmVudC5jLCBNYWtlZmlsZS5pbiwgcGFyc2UuYywgc25tcC5jLAogICAgICBzbm1wX2RlYnVnLmMsIHNubXBfbG9nZ2luZy5jLCBzbm1wX2xvZ2dpbmcuaCk6IFBhdGNoIGZyb20gUmFnbmFyCi0gICAgIEtq+HJzdGFkOgorICAgICBLauClhuCkhobgpYbgpIWG4KWG4KSFkHJzdGFkOgogICAgICAtIGRvIGZpbGUsIHN0ZGVyciwgYW5kIHN5c2xvZyBzdXBwb3J0LgogICAgCiAxOTk5LTA3LTE1IDA4OjQ1ICBoYXJkYWtlcgpAQCAtMTE3MzY5LDcgKzE0MjQzMiw3IEBACiAKICAgICogYWdlbnQvc25tcGQuYzoKIAotICAgLSAoc25tcGQuYyk6IFBhdGNoIGZyb20gUmFnbmFyIEtq+HJzdGFkOgorICAgLSAoc25tcGQuYyk6IFBhdGNoIGZyb20gUmFnbmFyIEtq4KWG4KSGhuClhuCkhYbgpYbgpIWQcnN0YWQ6CiAgICAgIC0gQWRkIG9wdGlvbnMgZm9yIHN3aXRjaGluZyB0byBhIGdpdmVuIHVpZCBhbmQgZ2lkLgogICAgCiAxOTk5LTA3LTA4IDE1OjE2ICBoYXJkYWtlcgpAQCAtMTM0MTM4LDcgKzE1OTIwMSw3IEBACiAKICAgICogc25tcGxpYi9taWIuYzoKIAotICAgRml4IGEgQyBwcmVjZWRlbmNlIGJvdGNoLXVwLCB0aGFua3MgdG8gRmFicu1jaW8gTGFzIENhc2FzIDxGYWJyaWNpb0BhdGFuLmNvbS5icj4KKyAgIEZpeCBhIEMgcHJlY2VkZW5jZSBib3RjaC11cCwgdGhhbmtzIHRvIEZhYnLgpYbgpIbgpI6AgYxjaW8gTGFzIENhc2FzIDxGYWJyaWNpb0BhdGFuLmNvbS5icj4KICAgIAogMjAwMy0wMi0yNiAxNDoxNCAgbmJhCiAKQEAgLTE1MDkyMSw3ICsxNzU5ODQsNyBAQAogCiAgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvOiBocl9zd3J1bi5jIChWNC0yLXBhdGNoZXMuNSksIGhyX3N3cnVuLmM6CiAKLSAgIEZpeCBMaW51eCBmaWxlIGRlc2NyaXB0b3IgbGVhayAocmVwb3J0ZWQgYnkgT2xpdmVyIEbkbmdlcikKKyAgIEZpeCBMaW51eCBmaWxlIGRlc2NyaXB0b3IgbGVhayAocmVwb3J0ZWQgYnkgT2xpdmVyIEbgpYbgpIaG4KWG4KSFhopuZ2VyKQogICAgCiAyMDAxLTAzLTE0IDA1OjIyICBqYnBuCiAKQEAgLTE1NTE2Niw3ICsxODAyMjksNyBAQAogCiAgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzoKIAotICAgRml4IExpbnV4IGZpbGUgZGVzY3JpcHRvciBsZWFrIChyZXBvcnRlZCBieSBPbGl2ZXIgRuRuZ2VyKQorICAgRml4IExpbnV4IGZpbGUgZGVzY3JpcHRvciBsZWFrIChyZXBvcnRlZCBieSBPbGl2ZXIgRuClhuCkhobgpYbgpIWGim5nZXIpCiAgICAKIDIwMDEtMDMtMTMgMTM6MjAgIGhhcmRha2VyCiAKQEAgLTE1ODQxMiw3ICsxODM0NzUsNyBAQAogCQogMjAwMC0wNS0yNSAxMDowNyAgaGFyZGFrZXIKIAotCS0gKG1lbW9yeS5jKTogUGF0Y2ggZnJvbSBSYWduYXIgS2r4cnN0YWQ6CisJLSAobWVtb3J5LmMpOiBQYXRjaCBmcm9tIFJhZ25hciBLauClhuCkhobgpYbgpIWG4KWG4KSFkHJzdGFkOgogCSAgLSBmaXhlZCBsaW51eCBwcm9ibGVtOiB3cm9uZyBwYXJhbXMgZ2V0dGluZyByZXR1cm5lZC4KIAkKIDIwMDAtMDUtMjUgMDU6MzggIG1zbGlmY2FrCkBAIC0xNTk2MDEsNyArMTg0NjY0LDcgQEAKIAogCS0gKGNvbmZpZ3VyZSogdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmMpOgogCSAgLSBQcm92aWRlIG1pc3NpbmcgJ2dldHBhZ2VzaXplJyByb3V0aW5lIGZvciBTb2xhcmlzIDIuNAotCSAgICAoVGhhbmtzIHRvIFJhZ25hciBLavhyc3RhZCkKKwkgICAgKFRoYW5rcyB0byBSYWduYXIgS2rgpYbgpIaG4KWG4KSFhuClhuCkhZByc3RhZCkKIAkKIDIwMDAtMDItMTYgMjA6MTcgIG1zbGlmY2FrCiAKQEAgLTE2NDkzNSw3ICsxODk5OTgsNyBAQAogICAgIC0gKHNubXBkZWx0YS5jLCBpbnQ2NC5jLCBpbnQ2NC5oKTogbWluaW1hbCBjNjQgc3VwcG9ydCBmb3Igc25tcGRlbHRhLiBVbnRlc3RlZC4KIAogaGFyZGFrZXIgIDggSnVsIDk5IDE2OjAyOjU4Ci0gICAgLSAoc25tcGQuYyk6IFBhdGNoIGZyb20gUmFnbmFyIEtq+HJzdGFkOgorICAgIC0gKHNubXBkLmMpOiBQYXRjaCBmcm9tIFJhZ25hciBLauClhuCkhobgpYbgpIWG4KWG4KSFkHJzdGFkOgogICAgICAgLSBBZGQgb3B0aW9ucyBmb3Igc3dpdGNoaW5nIHRvIGEgZ2l2ZW4gdWlkIGFuZCBnaWQuCiAKIGRhdmVzICA5IEp1bCA5OSAwMTo0OTo0OQpAQCAtMTY0OTgyLDcgKzE5MDA0NSw3IEBACiAgICAgICBsb2FkYXZlLmMsIG1lbW9yeV9zb2xhcmlzMi5jLCBwYXNzLmMsIHBhc3NfcGVyc2lzdC5jLCBwcm9jLmMsCiAgICAgICB2ZXJzaW9uaW5mby5jLCBhbGFybS5jLCBldmVudC5jLCBNYWtlZmlsZS5pbiwgcGFyc2UuYywgc25tcC5jLAogICAgICAgc25tcF9kZWJ1Zy5jLCBzbm1wX2xvZ2dpbmcuYywgc25tcF9sb2dnaW5nLmgpOiBQYXRjaCBmcm9tIFJhZ25hcgotICAgICAgS2r4cnN0YWQ6CisgICAgICBLauClhuCkhobgpYbgpIWG4KWG4KSFkHJzdGFkOgogICAgICAgLSBkbyBmaWxlLCBzdGRlcnIsIGFuZCBzeXNsb2cgc3VwcG9ydC4KIAogaGFyZGFrZXIgMjAgSnVsIDk5IDE3OjA2OjUzCmRpZmYgLS1naXQgYS9GQVEgYi9GQVEKaW5kZXggYTJiZDY4YS4uMTFhNDJlNiAxMDA2NDQKLS0tIGEvRkFRCisrKyBiL0ZBUQpAQCAtMSw3ICsxLDcgQEAKICAgICAgIEZyZXF1ZW50bHkgQXNrZWQgUXVlc3Rpb25zIChGQVEpIGZvciB0aGUgVUNEL05ldC1TTk1QIHBhY2thZ2UKICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAkJICAgICAgIEZBUSBBdXRob3I6IERhdmUgU2hpZWxkCi0JCQlOZXQtU05NUCBWZXJzaW9uOiA1LjYuMgorCQkJTmV0LVNOTVAgVmVyc2lvbjogNS43LjMucHJlMwogCSAgICBOZXQtU05NUC9VQ0QtU05NUCBQcm9qZWN0IExlYWRlcjogV2VzIEhhcmRha2VyCiAJICAgICBFbWFpbDogbmV0LXNubXAtY29kZXJzQGxpc3RzLnNvdXJjZWZvcmdlLm5ldAogCkBAIC0xMzE0LDcgKzEzMTQsNyBAQAogICBjb3ZlcmVkIGluIHRoZSBBR0VOVCBhbmQgQ09ESU5HIHNlY3Rpb25zLgogCiAgIFlvdSBzaG91bGQgYWxzbyByZWFkIHRoZSBzbm1wdHJhcCB0dXRvcmlhbCBhdAotCWh0dHA6Ly93d3cubmV0LXNubXAub3JnL3R1dG9yaWFsLTUvY29tbWFuZHMvc25tcHRyYXAuaHRtbAorICAgICAgICBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy93aWtpL2luZGV4LnBocC9UVVQ6c25tcHRyYXAKICAgd2hpY2ggd2lsbCBoZWxwIHlvdSB1bmRlcnN0YW5kIGV2ZXJ5dGhpbmcgeW91IG5lZWQgdG8ga25vdyBhYm91dCB0cmFwcy4KIAogCkBAIC0xMzUxLDcgKzEzNTEsNyBAQAogICAgICAgICBmb3J3YXJkIGRlZmF1bHQgICAgICAgICAgICAgICAgICAxMC4wLjAuMgogCiAgIFRoZXJlJ3MgYSB0dXRvcmlhbCB3aXRoIG1vcmUgZGV0YWlscyBvbiB0aGUgd2ViIHNpdGUgYXQKLQlodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy90dXRvcmlhbC01L2NvbW1hbmRzL3NubXB0cmFwLmh0bWwKKyAgICAgICAgaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvd2lraS9pbmRleC5waHAvVFVUOnNubXB0cmFwCiAKIAogCmRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCmluZGV4IDE3NGQ2MWMuLmNmY2RmNzMgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLmluCisrKyBiL01ha2VmaWxlLmluCkBAIC03LDYgKzcsNyBAQAogVlBBVEgJCT0gQHNyY2RpckAKIAogU1VCRElSUwkJPSBzbm1wbGliIEBNQUlOU1VCU0AKK0ZUU1VCRElSUwk9IEBGVE1BSU5TVUJTQCBzbm1wbGliCiBURVNURElSUwk9IHRlc3RpbmcKIAogQ1BQCQk9IEBDUFBAIAkJCQkJICAgICAgICBcCkBAIC0xNCw3ICsxNSw3IEBACiAJCS1ERE9OVF9JTkNfU1RSVUNUUyAtREJJTkRJUj0kKGJpbmRpcikgCQkgICAgICAgIFwKIAkJJChFWFRSQUNQUEZMQUdTKQogCi1JTlNUQUxMSEVBREVSUz12ZXJzaW9uLmgKK0lOU1RBTExIRUFERVJTPXZlcnNpb24uaCBuZXQtc25tcC1mZWF0dXJlcy5oCiBJTkNMVURFU1VCRElSPXN5c3RlbQogSU5DTFVERVNVQkRJUkhFQURFUlM9IGFpeC5oIGJzZC5oIGJzZGkzLmggYnNkaTQuaCBic2RpLmggY3lnd2luLmggXAogCWRhcndpbi5oIGRhcndpbjcuaCBkYXJ3aW44LmggZGFyd2luOS5oIGRhcndpbjEwLmggZHJhZ29uZmx5LmggZHluaXguaCBcCkBAIC0yOSw2ICszMCw3IEBACiBJTkNMVURFU1VCRElSMj1tYWNoaW5lCiBJTkNMVURFU1VCRElSSEVBREVSUzI9Z2VuZXJpYy5oCiBJTlNUQUxMQlVJTFRIRUFERVJTPWluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKK0lOU1RBTExCVUlMVElOQ0xVREVIRUFERVJTPUBGRUFUVVJFSEVBREVSU0AKIElOU1RBTExCSU5TQ1JJUFRTPW5ldC1zbm1wLWNvbmZpZyBuZXQtc25tcC1jcmVhdGUtdjMtdXNlcgogSU5TVEFMTFVDREhFQURFUlM9dWNkLXNubXAtY29uZmlnLmggdmVyc2lvbi5oIG1pYl9tb2R1bGVfY29uZmlnLmgKIApAQCAtNDUsMTMgKzQ3LDIwIEBACiAjIHBlcmwgc3BlY2lmaWMKICMKICMgeWVzLCBvcmRlciBtYXR0ZXJzIGhlcmUuICBkZWZhdWx0X3N0b3JlIG11c3Qgb2NjdXIgYmVmb3JlIGFueXRoaW5nIGVsc2UKLVBFUkxNT0RVTEVTPWRlZmF1bHRfc3RvcmUgU05NUCBBU04gT0lEIGFnZW50CitQRVJMTU9EVUxFUz1kZWZhdWx0X3N0b3JlIFNOTVAgQVNOIE9JRCBhZ2VudCBUcmFwUmVjZWl2ZXIKK1BFUkxNT0RVTEVGVFM9cGVybC9kZWZhdWx0X3N0b3JlL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5mdCBcCisJcGVybC9TTk1QL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5mdCBcCisJcGVybC9BU04vbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmZ0IFwKKwlwZXJsL09JRC9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuZnQgXAorCXBlcmwvYWdlbnQvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmZ0IFwKKwlwZXJsL1RyYXBSZWNlaXZlci9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuZnQKIFBFUkxBUkdTPUBQRVJMQVJHU0AKIAogIwogIyBweXRob24gc3BlY2lmaWMKICMKIFBZVEhPTkFSR1M9QFBZVEhPTkFSR1NACitQWVRIT05NT0RVTEVGVFM9cHl0aG9uL25ldHNubXAvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmZ0CiAKICMKICMgbGlidG9vbApAQCAtNTksOSArNjgsMTQgQEAKIExJQlRPT0xfREVQUyA9IEBMSUJUT09MX0RFUFNACiAKICMKKyMgZmVhdHVyZSBjaGVja3MgZm9yIG9wdGlvbmFsIGNvbXBvbmVudHMKKyMKK0ZUT1RIRVJUQVJHUz1AUEVSTEZFQVRVUkVTQCBAUFlUSE9ORkVBVFVSRVNACisKKyMKICMgdGFyZ2V0cwogIwotYWxsOiAgICBzZWRzY3JpcHQgRVhBTVBMRS5jb25mIHN0YW5kYXJkYWxsIG5ldC1zbm1wLWNvbmZpZy14IG5ldC1zbm1wLWNyZWF0ZS12My11c2VyIEBQRVJMVEFSR1NAIEBQWVRIT05UQVJHU0AKK2FsbDogICAgc2Vkc2NyaXB0IEVYQU1QTEUuY29uZiAgQEZFQVRVUkVUQVJHU0Agc3RhbmRhcmRhbGwgbmV0LXNubXAtY29uZmlnLXggbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIgQFBFUkxUQVJHU0AgQFBZVEhPTlRBUkdTQAogCiBzdGFydC1mbGFnOgogCUB0b3VjaCBidWlsZC1pbi1wcm9ncmVzcy1mbGFnCkBAIC03MywyMyArODcsMjMgQEAKIAkkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgLS1yZWNoZWNrCiAKIAotc25tcGxpYjoKK3NubXBsaWI6IEBGRUFUVVJFVEFSR1NACiAJQChjZCBzbm1wbGliOyAkKE1BS0UpICkKIAotYWdlbnQ6CithZ2VudDogQEZFQVRVUkVUQVJHU0AKIAlAKGNkIHNubXBsaWI7ICQoTUFLRSkgKQogCUAoY2QgYWdlbnQ7ICQoTUFLRSkgKQogCi1hcHBzOgorYXBwczogQEZFQVRVUkVUQVJHU0AKIAlAKGNkIHNubXBsaWI7ICQoTUFLRSkgKQogCUAoY2QgYWdlbnQ7ICQoTUFLRSkgbGlicykKIAlAKGNkIGFwcHM7ICQoTUFLRSkgKQogCi1zbm1wZ2V0IHNubXBidWxrZ2V0IHNubXB3YWxrIHNubXBidWxrd2FsayBzbm1wdHJhbnNsYXRlIHNubXBzdGF0dXMgc25tcGRlbHRhIHNubXB0YWJsZSBzbm1wdGVzdCBzbm1wc2V0IHNubXB1c20gc25tcHZhY20gc25tcGdldG5leHQgZW5jb2RlX2tleWNoYW5nZSBzbm1wZGYgc25tcHRyYXAgc25tcHRsczoKK3NubXBnZXQgc25tcGJ1bGtnZXQgc25tcHdhbGsgc25tcGJ1bGt3YWxrIHNubXB0cmFuc2xhdGUgc25tcHN0YXR1cyBzbm1wZGVsdGEgc25tcHRhYmxlIHNubXB0ZXN0IHNubXBzZXQgc25tcHVzbSBzbm1wdmFjbSBzbm1wZ2V0bmV4dCBlbmNvZGVfa2V5Y2hhbmdlIHNubXBkZiBzbm1wdHJhcCBzbm1wdGxzOiBARkVBVFVSRVRBUkdTQAogCUAoY2Qgc25tcGxpYjsgJChNQUtFKSApCiAJQChjZCBhcHBzOyAkKE1BS0UpICRAICkKIAotYWdlbnR4dHJhcCBzbm1wdHJhcGQ6CithZ2VudHh0cmFwIHNubXB0cmFwZDogQEZFQVRVUkVUQVJHU0AKIAlAKGNkIHNubXBsaWI7ICQoTUFLRSkgKQogCUAoY2QgYWdlbnQ7ICQoTUFLRSkgbGlicykKIAlAKGNkIGFwcHM7ICQoTUFLRSkgJEAgKQpAQCAtMTUwLDcgKzE2NCw3IEBACiBkaXN0YWxsOiAke3NyY2Rpcn0vY29uZmlndXJlICR7c3JjZGlyfS9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIAogCiBPVEhFUkNMRUFOVEFSR0VUUz1FWEFNUExFLmNvbmYgc2Vkc2NyaXB0Ci1PVEhFUkNMRUFOVE9ET1M9cGVybGNsZWFuIEBQWVRIT05DTEVBTlRBUkdTQAorT1RIRVJDTEVBTlRPRE9TPXBlcmxjbGVhbiBAUFlUSE9OQ0xFQU5UQVJHU0AgY2xlYW5mZWF0dXJlcyBwZXJsY2xlYW5mZWF0dXJlcyBweXRob25jbGVhbmZlYXR1cmVzCiAKICMKICMgcGVybCBzcGVjaWZpYyBidWlsZCBydWxlcwpAQCAtMTkxLDEzICsyMDUsMjEgQEAKIAlAaWYgdGVzdCAtZiBwZXJsL01ha2VmaWxlOyB0aGVuIFwKIAkgICAoIGNkIHBlcmwgOyAkKE1BS0UpIGNsZWFuICkgOyBcCiAJZmkKKwogcGVybHJlYWxjbGVhbjoKIAlAaWYgdGVzdCAtZiBwZXJsL01ha2VmaWxlOyB0aGVuIFwKIAkgICAoIGNkIHBlcmwgOyAkKE1BS0UpIHJlYWxjbGVhbiApIDsgXAogCWZpCiAKKy5oLmZ0OgorCSQoRkVBVFVSRUNIRUNLKSAtLWZlYXR1cmUtZ2xvYmFsICQodG9wX2J1aWxkZGlyKS9pbmNsdWRlL25ldC1zbm1wL2ZlYXR1cmUtZGV0YWlscy5oIGBkaXJuYW1lICQ8YCAkPCAkQCAkKENDKSAtSSAkKHRvcF9idWlsZGRpcikvaW5jbHVkZSAtSSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUgLUUgJChDUFBGTEFHUykgJChDRkxBR1MpIC1jCiAKLSMKK3BlcmxmZWF0dXJlczogJChQRVJMTU9EVUxFRlRTKQorCitwZXJsY2xlYW5mZWF0dXJlczoKKwkkKFJNKSAkKFBFUkxNT0RVTEVGVFMpCisKKwogIyBweXRob24gc3BlY2lmaWMgYnVpbGQgcnVsZXMKICMKIFBZTUFLRT0kKFBZVEhPTikgc2V0dXAucHkgJChQWVRIT05BUkdTKQpAQCAtMjI1LDYgKzI0NywxMCBAQAogcHl0aG9uY2xlYW46CiAJQChkaXI9YHB3ZGA7IGNkIHB5dGhvbjsgJChQWU1BS0UpIGNsZWFuIC0tYmFzZWRpcj0kJGRpcikKIAorcHl0aG9uZmVhdHVyZXM6ICQoUFlUSE9OTU9EVUxFRlRTKQorCitweXRob25jbGVhbmZlYXR1cmVzOgorCSQoUk0pICQoUFlUSE9OTU9EVUxFRlRTKQogCiAjCiAjIG1ha2UgZGlzdGNsZWFuIGNvbXBsZXRlbHkgcmVtb3ZlcyBhbGwgdHJhY2VzIG9mIGJ1aWxkaW5nIGluY2x1ZGluZwpAQCAtMjQ5LDcgKzI3NSw4IEBACiAJcm0gLWYgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCQlcCiAJCWluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCQlcCiAJCWluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaCBcCi0JCXNubXBsaWIvc25tcHNtX2luaXQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJCWluY2x1ZGUvbmV0LXNubXAvZmVhdHVyZS1kZXRhaWxzLmggICAgICAgICAgICAgICAgICBcCisJCXNubXBsaWIvc25tcHNtX2luaXQuaCBzbm1wbGliL3NubXBzbV9zaHV0ZG93bi5oICAgICBcCiAgICAgICAgICAgICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBfdHJhbnNwb3J0X2luaXRzLmggICAgICAgICAgIFwKIAkJYWdlbnQvbWliZ3JvdXAvYWdlbnRfbW9kdWxlX2luY2x1ZGVzLmggCVwKIAkJYWdlbnQvbWliZ3JvdXAvYWdlbnRfbW9kdWxlX2luaXRzLmggCVwKQEAgLTI1OCw3ICsyODUsOCBAQAogCQlhZ2VudC9taWJncm91cC9taWJfbW9kdWxlX2luY2x1ZGVzLmggCVwKIAkJYWdlbnQvbWliZ3JvdXAvbWliX21vZHVsZV9pbml0cy5oIAlcCiAJCWFnZW50L21pYmdyb3VwL21pYl9tb2R1bGVfc2h1dGRvd24uaCAJXAotCQlhZ2VudC9taWJncm91cC9taWJfbW9kdWxlX2RvdF9jb25mLmgKKwkJYWdlbnQvbWliZ3JvdXAvbWliX21vZHVsZV9kb3RfY29uZi5oICAgIFwKKwkJbG9jYWwvc25tcGNvbmYKIAlybSAtcmYgbWsKIAlybSAtZiAqLmNvcmUKIApAQCAtNDMwLDMgKzQ1OCw0IEBACiAJc25tcGdldCBzbm1wYnVsa2dldCBzbm1wd2FsayBzbm1wYnVsa3dhbGsgc25tcHRyYW5zbGF0ZSBzbm1wc3RhdHVzIFwKIAlzbm1wZGVsdGEgc25tcHRhYmxlIHNubXB0ZXN0IHNubXBzZXQgc25tcHVzbSBzbm1wdmFjbSBzbm1wZ2V0bmV4dCBcCiAJZW5jb2RlX2tleWNoYW5nZSBzbm1wZGYgc25tcHRyYXAgc25tcHRyYXBkCisuUEhPTlk6IHBlcmxmZWF0dXJlcyBweXRob25mZWF0dXJlcwpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUucnVsZXMgYi9NYWtlZmlsZS5ydWxlcwppbmRleCA2NTY4N2VmLi45ZTllOTAwIDEwMDY0NAotLS0gYS9NYWtlZmlsZS5ydWxlcworKysgYi9NYWtlZmlsZS5ydWxlcwpAQCAtMTQsNiArMTQsNjIgQEAKIAogb2JqczogJHtPQkpTfSAke0xPQkpTfQogCisjIGZlYXR1cmVzIHJlcXVpcmUgdGhhdCBzdWJkaXJzIGJlIG1hZGUgKmZpcnN0KiB0byBnZXQgZGVwZW5kZW5jeQorIyBjb2xsZWN0aW9uIHByb2Nlc3NlZCBpbiB0aGUgcmlnaHQgb3JkZXIKKy5QSE9OWTogZmVhdHVyZXMgZnRvYmpzIGZ0c3ViZGlycworZmVhdHVyZXM6ICQoRlRPVEhFUlRBUkdTKSBmdHN1YmRpcnMgZnRvYmpzICQoRkVBVFVSRUZJTEUpCitmdG9ianM6ICQoRlRPQkpTKQorJChGRUFUVVJFRklMRSk6ICQoRlRPQkpTKSAkKHRvcF9idWlsZGRpcikvaW5jbHVkZS9uZXQtc25tcC9mZWF0dXJlLWRldGFpbHMuaAorCWNhdCAkKEZUT0JKUykgPiAkKEZFQVRVUkVGSUxFKS5pbgorCSQoRkVBVFVSRVBST0NFU1MpICQoRkVBVFVSRUZJTEUpICQodG9wX2J1aWxkZGlyKS9pbmNsdWRlL25ldC1zbm1wL2ZlYXR1cmUtZGV0YWlscy5oIEBGRUFUVVJFX1JFTU9WRV9GTEFHU0AgQEZFQVRVUkVfQUREX0ZMQUdTQAorZnRzdWJkaXJzOgorCUBpZiB0ZXN0ICIkKEZUU1VCRElSUykiICE9ICIiOyB0aGVuIFwKKwkgICAgU1VCRElSUz0iJChGVFNVQkRJUlMpIiA7ICAgICAgICBcCisgICAgICAgIGVsc2UgCQkJIAkgICAgXAorICAgICAgICAgICAgU1VCRElSUz0iJChTVUJESVJTKSIgOyAgICAgICAgICBcCisgICAgICAgIGZpIDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwlpZiB0ZXN0ICIkJFNVQkRJUlMiICE9ICIiOyB0aGVuIFwKKwkJaXQ9IiQkU1VCRElSUyIgOyBcCisJCWZvciBpIGluICQkaXQgOyBkbyBcCisJCQllY2hvICJtYWtpbmcgZmVhdHVyZXMgaW4gYHB3ZGAvJCRpIjsgXAorCQkJKCBjZCAkJGkgOyAkKE1BS0UpIGZlYXR1cmVzICkgOyBcCisJCQlpZiB0ZXN0ICQkPyAhPSAwIDsgdGhlbiBcCisJCQkJZXhpdCAxIDsgXAorCQkJZmkgIFwKKwkJZG9uZSBcCisJZmkKKworLlBIT05ZOiBjbGVhbmZlYXR1cmVzIGNsZWFuZmVhdHVyZXNzdWJkaXJzCitjbGVhbmZlYXR1cmVzOiBjbGVhbmZlYXR1cmVzc3ViZGlycworCSAgICAgICBybSAtZiAkKEZUT0JKUykKKwkgICAgICAgcm0gLWYgJChGRUFUVVJFRklMRSkKKwkgICAgICAgcm0gLWYgJCh0b3BfYnVpbGRkaXIpL2luY2x1ZGUvbmV0LXNubXAvZmVhdHVyZS1kZXRhaWxzLmgKKworY2xlYW5mZWF0dXJlc3N1YmRpcnM6CisJQGlmIHRlc3QgIiQoRlRTVUJESVJTKSIgIT0gIiI7IHRoZW4gXAorCSAgICBTVUJESVJTPSIkKEZUU1VCRElSUykiIDsgICAgICAgIFwKKyAgICAgICAgZWxzZSAJCQkgCSAgICBcCisgICAgICAgICAgICBTVUJESVJTPSIkKFNVQkRJUlMpIiA7ICAgICAgICAgIFwKKyAgICAgICAgZmkgOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCWlmIHRlc3QgIiQkU1VCRElSUyIgIT0gIiI7IHRoZW4gXAorCQlpdD0iJCRTVUJESVJTIiA7IFwKKwkJZm9yIGkgaW4gJCRpdCA7IGRvIFwKKwkJCWVjaG8gIm1ha2luZyBjbGVhbmZlYXR1cmVzIGluIGBwd2RgLyQkaSI7IFwKKwkJCSggY2QgJCRpIDsgJChNQUtFKSBjbGVhbmZlYXR1cmVzICkgOyBcCisJCQlpZiB0ZXN0ICQkPyAhPSAwIDsgdGhlbiBcCisJCQkJZXhpdCAxIDsgXAorCQkJZmkgIFwKKwkJZG9uZSBcCisJZmkKKworIyBmZWF0dXJlLWNoZWNrIGRlZmluaXRpb25zCisuU1VGRklYRVM6IC5mdAorLmMuZnQ6CisJQHRlc3QgLWYgJCh0b3BfYnVpbGRkaXIpL2luY2x1ZGUvbmV0LXNubXAvZmVhdHVyZS1kZXRhaWxzLmggfHwgXAorCSAgICBlY2hvICIvKiBHZW5lcmF0ZWQgYnkgbWFrZS4gRG8gbm90IG1vZGlmeSBkaXJlY3RseSAqLyIgXAorCQk+ICQodG9wX2J1aWxkZGlyKS9pbmNsdWRlL25ldC1zbm1wL2ZlYXR1cmUtZGV0YWlscy5oCisJJChGRUFUVVJFQ0hFQ0spIC0tZmVhdHVyZS1nbG9iYWwgJCh0b3BfYnVpbGRkaXIpL2luY2x1ZGUvbmV0LXNubXAvZmVhdHVyZS1kZXRhaWxzLmggJChteXN1YmRpcikgJDwgJEAgJChDQykgLUUgJChDUFBGTEFHUykgJChDRkxBR1MpIC1jCisKIHN1YmRpcnM6CiAJQGlmIHRlc3QgIiQoU1VCRElSUykiICE9ICIiOyB0aGVuIFwKIAkJaXQ9IiQoU1VCRElSUykiIDsgXApAQCAtNDIsNiArOTgsNyBAQAogIyBoZWFkZXJzCiAjCiAjIHNldCBJTlNUQUxMSEVBREVSUyB0byBhIGxpc3Qgb2YgdGhpbmdzIHRvIGluc3RhbGwgaW4gZWFjaCBtYWtlZmlsZS4KKyMgc2V0IElOU1RBTExCVUlMVElOQ0xVREVIRUFERVJTIGEgbGlzdCBidWlsdCBhbmQgcGxhY2VkIGludG8gaW5jbHVkZS9uZXQtc25tcC8KICMgc2V0IElOU1RBTExCVUlMVEhFQURFUlMgdG8gYSBsaXN0IG9mIHRoaW5ncyB0byBpbnN0YWxsIGZyb20gYnVpbGRkaXIKICMgc2V0IElOU1RBTExTVUJESVJIRUFERVJTIGFuZCBJTlNUQUxMU1VCRElSIHRvIHN1YmRpcmVjdG9yeSBoZWFkZXJzCiAjIHNldCBJTlNUQUxMU1VCRElSSEVBREVSUzIgYW5kIElOU1RBTExTVUJESVIyIHRvIG1vcmUgc3ViZGlyZWN0b3J5IGhlYWRlcnMKQEAgLTUwLDYgKzEwNywxNiBAQAogaW5zdGFsbGhlYWRlcnM6IGluc3RhbGxsb2NhbGhlYWRlcnMgQGluc3RhbGx1Y2RoZWFkZXJzQCBpbnN0YWxsc3ViZGlyaGVhZGVycwogCiBpbnN0YWxsbG9jYWxoZWFkZXJzOgorCUBpZiB0ZXN0ICIkKElOU1RBTExCVUlMVElOQ0xVREVIRUFERVJTKSIgIT0gIiIgOyB0aGVuIFwKKwkJZWNobyBjcmVhdGluZyBkaXJlY3RvcnkgJChJTlNUQUxMX1BSRUZJWCkkKGluY2x1ZGVkaXIpIDsgXAorCQlpdD0iJChJTlNUQUxMQlVJTFRJTkNMVURFSEVBREVSUykiIDsgXAorCQkkKFNIRUxMKSAkKHRvcF9zcmNkaXIpL21raW5zdGFsbGRpcnMgJChJTlNUQUxMX1BSRUZJWCkkKGluY2x1ZGVkaXIpL2xpYnJhcnkgOyBcCisJCSQoU0hFTEwpICQodG9wX3NyY2RpcikvbWtpbnN0YWxsZGlycyAkKElOU1RBTExfUFJFRklYKSQoaW5jbHVkZWRpcikvYWdlbnQgOyBcCisJCWZvciBpIGluICQkaXQgOyBkbyBcCisJCQkkKElOU1RBTExfREFUQSkgaW5jbHVkZS9uZXQtc25tcC8kJGkgJChJTlNUQUxMX1BSRUZJWCkkKGluY2x1ZGVkaXIpLyQkaSA7IFwKKwkJCWVjaG8gImluc3RhbGxpbmcgJCRpIGluICQoSU5TVEFMTF9QUkVGSVgpJChpbmNsdWRlZGlyKS8kJGkiIDsgXAorCQlkb25lIFwKKwlmaQogCUBpZiB0ZXN0ICIkKElOU1RBTExIRUFERVJTKSIgIT0gIiIgOyB0aGVuIFwKIAkJZWNobyBjcmVhdGluZyBkaXJlY3RvcnkgJChJTlNUQUxMX1BSRUZJWCkkKGluY2x1ZGVkaXIpIDsgXAogCQlpdD0iJChJTlNUQUxMSEVBREVSUykiIDsgXApAQCAtMzI3LDcgKzM5NCw3IEBACiAjIGNsZWFuaW5nIHRhcmdldHMKICMKIGNsZWFuOiBjbGVhbnN1YmRpcnMgJChPVEhFUkNMRUFOVE9ET1MpCi0JJChMSUJUT09MQ0xFQU4pICR7T0JKU30gJHtMT0JKU30gY29yZSAkKFNUQU5EQVJEQ0xFQU5UQVJHRVRTKSAkKE9USEVSQ0xFQU5UQVJHRVRTKQorCSQoTElCVE9PTENMRUFOKSAke09CSlN9ICR7TE9CSlN9ICAke0ZUT0JKU30gY29yZSAkKFNUQU5EQVJEQ0xFQU5UQVJHRVRTKSAkKE9USEVSQ0xFQU5UQVJHRVRTKQogCiBjbGVhbnN1YmRpcnM6CiAJQGlmIHRlc3QgIiQoU1VCRElSUykiICE9ICIiOyB0aGVuIFwKQEAgLTQwNCw1ICs0NzEsNSBAQAogLlBIT05ZOiBjbGVhbiBjbGVhbnN1YmRpcnMgbGludCBcCiAJaW5zdGFsbCBpbnN0YWxscHJvZ3MgaW5zdGFsbGhlYWRlcnMgaW5zdGFsbGxpYnMgXAogCWluc3RhbGxiaW4gaW5zdGFsbHNiaW4gaW5zdGFsbHN1YmRpcnMgXAotCWFsbCBzdWJkaXJzIHN0YW5kYXJkYWxsIG9ianMgXAorCWFsbCBzdWJkaXJzIHN0YW5kYXJkYWxsIG9ianMgZmVhdHVyZXMgXAogCWRlcGVuZCBub3N5c2RlcGVuZCBkaXN0ZGVwZW5kIGRlcGVuZGRpcnMgbm9zeXNkZXBlbmRkaXJzIGRpc3RkZXBlbmRkaXJzCmRpZmYgLS1naXQgYS9NYWtlZmlsZS50b3AgYi9NYWtlZmlsZS50b3AKaW5kZXggMzM0ZmJiOC4uZDBjZDYyZSAxMDA2NDQKLS0tIGEvTWFrZWZpbGUudG9wCisrKyBiL01ha2VmaWxlLnRvcApAQCAtMzYsNiArMzYsOCBAQAogSU5TVEFMTAkJPSAkKExJQlRPT0wpIC0tbW9kZT1pbnN0YWxsIEBJTlNUQUxMQAogVU5JTlNUQUxMCT0gJChMSUJUT09MKSAtLW1vZGU9dW5pbnN0YWxsIHJtIC1mCiBMSUJUT09MQ0xFQU4JPSAkKExJQlRPT0wpIC0tbW9kZT1jbGVhbiBybSAtZgorRkVBVFVSRUNIRUNLCT0gJCh0b3Bfc3JjZGlyKS9sb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtY2hlY2sKK0ZFQVRVUkVQUk9DRVNTCT0gJCh0b3Bfc3JjZGlyKS9sb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtcmVtb3ZlCiBJTlNUQUxMX0RBVEEgICAgPSBASU5TVEFMTF9EQVRBQAogU0VECQk9IEBTRURACiBMTl9TCQk9IEBMTl9TQApAQCAtNzcsMTQgKzc5LDE0IEBACiAjIDUuMyB3YXMgYXQgMTAsIDUuNCBpcyBhdCAxNSwgLi4uICBUaGlzIGxlYXZlcyBzb21lIHJvb20gZm9yIG5lZWRlZAogIyBjaGFuZ2VzIGZvciBwYXN0IHJlbGVhc2VzIGlmIGFic29sdXRlbHkgbmVjZXNzYXJ5LgogIwotTElCQ1VSUkVOVCAgPSAyNQorTElCQ1VSUkVOVCAgPSAzMAogTElCQUdFICAgICAgPSAwCi1MSUJSRVZJU0lPTiA9IDIKK0xJQlJFVklTSU9OID0gMwogCiBMSUJfTERfQ01EICAgICAgPSAkKExJQlRPT0wpIC0tbW9kZT1saW5rICQoTElOS0NDKSAkKENGTEFHUykgLXJwYXRoICQobGliZGlyKSAtdmVyc2lvbi1pbmZvICQoTElCQ1VSUkVOVCk6JChMSUJSRVZJU0lPTik6JChMSUJBR0UpIC1vCiBMSUJfRVhURU5TSU9OICAgPSBsYQogTElCX1ZFUlNJT04gICAgID0KLUxJQl9MRENPTkZJR19DTUQgPSAkKExJQlRPT0wpIC0tbW9kZT1maW5pc2ggJChsaWJkaXIpCitMSUJfTERDT05GSUdfQ01EID0gJChMSUJUT09MKSAtLW1vZGU9ZmluaXNoICQoSU5TVEFMTF9QUkVGSVgpJChsaWJkaXIpCiBMSU5LCQk9ICQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJChMSU5LQ0MpCiAjIFJBTkxJQiAJPSBAUkFOTElCQAogUkFOTElCCQk9IDoKZGlmZiAtLWdpdCBhL05FV1MgYi9ORVdTCmluZGV4IGJhYWNlMjEuLjkzOTZhZWUgMTAwNjQ0Ci0tLSBhL05FV1MKKysrIGIvTkVXUwpAQCAtMywzMCArMywxMzIgQEAKIHRoYXQgaGF2ZSBiZWVuIGZpeGVkL2FwcGxpZWQsIGFuZCB0aGUgQ2hhbmdlTG9nIGZpbGUgZm9yIGEgY29tcHJlaGVuc2l2ZQogbGlzdGluZyBvZiBhbGwgY2hhbmdlcyBtYWRlIHRvIHRoZSBjb2RlLgogCi0qNS42LjIqCisqNS43LjMqCisgICAgTWFueSBtYW55IGJ1ZyBmaXhlcyBhbmQgbWlub3IgaW1wcm92ZW1lbnRzCisKKyAgICBzbm1wZCwgc25tcHRyYXBkIGFuZCBhcHBzOgorICAgICAgLSBQYXRjaCAyNTI1OiBmcm9tIFJ5YW4gU3RlaW5tZXR6OiBGaXggYXJndW1lbnQgbGVuZ3RoIHBhcnNpbmcgb2YgdGhlCisJaG9zdCByZXNvdXJjZXMgbWliCisgICAgICAtIE1ha2UgRU5WX1NFUEFSQVRPUl9DSEFSIGNvbmZpZ3VyYWJsZQorICAgICAgLSBTRUNVUklUWTogYSBkZW5pYWwgb2Ygc2VydmljZSBhdHRhY2sgdmVjdG9yIHdhcyBkaXNjb3ZlcmVkIG9uCisgICAgICAgIHRoZSBsaW51eCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSUNNUC1NSUIuICBUaGlzIHJlbGVhc2UgZml4ZXMKKyAgICAgICAgdGhpcyBidWcgYW5kIGFsbCB1c2VycyBhcmUgZW5jb3VyYWdlZCB0byB1cGRhdGUgdGhlaXIgU05NUAorICAgICAgICBhZ2VudCBpZiB0aGV5IG1ha2UgdXNlIG9mIHRoZSBJQ01QLU1JQiB0YWJsZSBvYmplY3RzLgorCisgICAgcGVybDoKKyAgICAgIC0gQlVHOiAyNDAyOiBBZGQgc3VwcG9ydCBmb3IgU05NUHYzIHRyYXBzCisKKyAgICBXaW5kb3dzOgorICAgICAgLSBQb3J0IGJhdGNoIGJ1aWxkIGluZnJhc3RydWN0dXJlIHRvIFZpc3VhbCBTdHVkaW8gMjAxMCBhbmQgbGF0ZXIKKwlGcm9tIFZpc3VhbCBTdHVkaW8gMjAxMCBvbiBpdCBpcyBubyBsb25nZXIgcG9zc2libGUgdG8gc3BlY2lmeQorCWluY2x1ZGUgb3IgbGlicmFyeSBkaXJlY3RvcmllcyBnbG9iYWxseSAtIHRoZXNlIGhhdmUgdG8gYmUKKwlzcGVjaWZpZWQgcGVyIHByb2plY3QuIEhlbmNlIHR3byBhZGRpdGlvbmFsIG1lbnUgZW50cmllcyBpbgorCWJ1aWxkLmJhdCB0aGF0IGFsbG93IHRvIHNwZWNpZnkgdGhlc2UgZGlyZWN0b3JpZXMuCisKKyo1LjcuMioKKyAgICBzbm1wOgorICAgICAgLSBCVUc6IDM1MjY1NDk6IENWRS0yMDEyLTIxNDEgQXJyYXkgaW5kZXggZXJyb3IgbGVhZGluZyB0byBjcmFzaAogCiAgICAgc25tcGQ6Ci0gICAgICAtIFtQQVRDSCAzMTk4NzgxXTogRml4IGNvbXBpbGF0aW9uIG9mIGRpc21hbi97cGluZyx0cmFjZXJvdXRlfSBtb2R1bGVzCi0gICAgICAtIFtCVUcgMzE2NjU2OF06IEZpeCBtaXNzaW5nIGhyU3lzdGVtUHJvY2Vzc2VzIHZhbHVlcwotICAgICAgLSBbQlVHIDM1MjY1NDldOiBDVkUtMjAxMi0yMTQxIEFycmF5IGluZGV4IGVycm9yIGxlYWRpbmcgdG8gY3Jhc2gKLSAgICAgIC0gW0JVRyAzNTMyMDkwXTogRml4IGhpZ2ggaWZJbmRleCB2YWx1ZXMgY3Jhc2hpbmcgaHJEZXZpY2VEZXNjcgotICAgICAgICAgICAgICBOb3RlIHRoYXQgdGhpcyB3aWxsIGFmZmVjdCB0aGUgaW5kZXhpbmcgb2YgKmFsbCogZW50cmllcyBpbgotICAgICAgICAgICAgICB0aGUgaHJEZXZpY2VUYWJsZS4gIEFzc3VtcHRpb25zIGFzIHRvIHdoYXQgaW5kZXggYSBnaXZlbiBkZXZpY2UKLSAgICAgICAgICAgICAgd2lsbCB1c2UsIGFyZSBubyBsb25nZXIgdmFsaWQuCisgICAgICAtIEJVRzogMzUzMjA5MDogRml4IGhpZ2ggaWZJbmRleCB2YWx1ZXMgY3Jhc2hpbmcgaHJEZXZpY2VEZXNjcgogCiAgICAgYnVpbGRpbmc6Ci0gICAgICAtIFtQQVRDSCAyMDkxMTU2XTogRml4IHBhcmFsbGVsIGJ1aWxkcyAodXNpbmcgJ21ha2UgLWogPE4+JykKKyAgICAgIC0gUEFUQ0g6IDIwOTExNTY6IGNvcnJlY3RseSBkZWNsYXJlIGRlcGVuZGVuY2llcyBpbiBNYWtlZmlsZS4gJ21ha2UKKyAgICAgICAgLWogPE4+JyBzaG91bGQgd29yayBub3cuIEJhY2twb3J0IHRoaXMgdG8gVjUtNCBhcyBpdCBpcyBuZWVkZWQgZm9yCisgICAgICAgIGNvcnJlY3Qgb3BlcmF0aW9uIGluIHRoZSBzaW5nbGUgdGhyZWFkZWQgY2FzZSBvZiBtYWtlIG1pYmxpYiBhcworICAgICAgICB3ZWxsLgogCi0qNS42LjEqCisgICAgTWFueSBvdGhlciBtaXNjZWxsYW5lb3VzIG1pbm9yIGJ1ZyBmaXhlcwogCi0gICAgR2VuZXJhbDoKLSAgICAgIC0gVGhlIERUTFMgYW5kIFRMUyB0cmFuc3BvcnRzIGFuZCB0aGUgVFNNIHNlY3VyaXR5IG1vZGVsIGFyZSBubwotICAgICAgICBsb25nZXIgImJldGEiICh0aGV5J3ZlIHVuZGVyZ29uZSByaWdvcm91cyBpbnRlcm9wZXJhYmlsaXR5IHRlc3RpbmcpLgotICAgICAgLSBNYW55IEJ1ZyBGaXhlcyAoc2VlIHRoZSBDSEFOR0VTIGFuZCBDaGFuZ2VMb2cgZmlsZXMgZm9yIGZ1bGwgZGV0YWlscykKKyo1LjcuMSoKIAotICAgIHNubXBkOgotICAgICAgLSBbUEFUQ0ggMzE0MTQ2Ml06IEZpeCBtdWx0aS1vcGJqZWN0IEFnZW50WCBzdWJhZ2VudCByZXF1ZXN0cwotICAgICAgLSBGaXggVkFDTSBwZXJzaXN0YW50IHN0b3JhZ2UuCisgIGxpYm5ldHNubXA6CisgICAgICAtIEZpeGVkIHRoZSBtaWItcGFyc2luZy1idWcgaW50cm9kdWNlZCBzaG9ydGx5IGJlZm9yZSA1LjcKKworICBhZ2VudDoKKyAgICAgIC0gZml4ZWQgcm91bmRpbmcgZXJyb3JzIGZvciBkaXNrIHBlcmNlbnRhZ2UgY2FsY3VsYXRpb25zCisKKyAgb3BlbmJzZDoKKyAgICAgIC0gYmV0dGVyIHN1cHBvcnQgZm9yIHJlY2VudCBvcGVuYnNkIHJlbGVhc2VzCisKKyAgZmVhdHVyZXM6CisgICAgICAtIGJ1ZyBmaXhlcyB3aXRoIG1pbmltYWxpc3Qgc3VwcG9ydCBhZnRlciBhZGRpdGlvbmFsIHVzZXIgZmVlZGJhY2sKKworICBNYW55IG90aGVyIG1pc2NlbGxhbmVvdXMgbWlub3IgYnVnIGZpeGVzCisKKyo1LjcqCisKKyAgc25tcGQ6CisgICAgICAtIERlbGl2ZXJ5IG9mIGRhdGEgdmlhIHJlZ3VsYXJpbHkgc2NoZWR1bGVkIG5vdGlmaWNhdGlvbnMuCisgICAgICAgIChzZWUgIkRhdGEgRGVsaXZlcnkgdmlhIE5vdGZpY2F0aW9ucyIgaW4gc25tcGQuY29uZikKKyAgICAgIC0gTWFueSB0aW1lLWJhc2VkIGNvbmZpZyBvcHRpb25zIGNhbiB0YWtlIChtKWlucywgKGgpb3VycywgLi4uIGFyZ3VtZW50cworICAgICAgICAoc2VlIHRoZSBzbm1wZC5jb25mIG1hbnVhbCBwYWdlKQorICAgICAgLSBUaGUgUElORyBhbmQgVFJBQ0VST1VURSBNSUJzIG5vdyBjb21waWxlIGFuZCB3b3JrLWlzaCBvbiBsaW51eAorICAgICAgICBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy93aWtpL2luZGV4LnBocC9ESVNNQU4KKyAgICAgIC0gTWliIGhhbmRsZXJzIGNhbiBub3cgaW1wbGVtZW50IGEgZGF0YV9jbG9uZSBmdW5jdGlvbiBmb3IKKyAgICAgICAgY2xvbmluZyB0aGUgbXl2b2lkIHN0cnVjdHVyZSB2YXJpYWJsZSB0byBhdm9pZCBkYW5nbGluZyBwb2ludGVycworICAgICAgLSBGaXhlZCBwZXJzaXN0ZW50IHN0b3JhZ2Ugb2YgVkFDTSBNSUIgY29uZmlndXJhdGlvbgorICAgICAgLSBNdWx0aS1ob21lZCBhZ2VudHMgc2VuZCBVRFAgcmVzcG9uc2VzIGZyb20gdGhlIHByb3BlciBJUCBhZGRyZXNzCisgICAgICAtIFRoZSBoclN0b3JhZ2VUYWJsZSBpbXBsZW1lbnRhdGlvbiBub3cgc3VwcG9ydHMgbGFyZ2UgZmlsZXN5c3RlbXMgYmV0dGVyCisgICAgICAtIG9wdGltaXphdGlvbnMgZm9yIGxhcmdlIHJvdXRlIHRhYmxlcworICAgICAgLSBBZGRlZCBhIGRlbGl2ZXJ5QnlOb3RpZnkgY29uZmlnIHRva2VuIGZvciByZWd1bGFyIGRhdGEgZGVsaXZlcnkKKyAgICAgICAgKHNlZSB0aGUgc25tcGQuY29uZiBtYW51YWwgcGFnZSBhbmQgdGhlIE5FVC1TTk1QLVBFUklPRElDLU5PVElGWS1NSUIpCisgICAgICAtIFtQQVRDSCAzMTQxNDYyXTogZml4IGFnZW50eCBzdWJhZ2VudCBpc3N1ZXMgd2l0aCBtdWx0aXBsZS1vYmplY3QgcmVxdWVzdHMKKyAgICAgIC0gW1BBVENIIDMwNTcwOTNdOiBsaW51eCB1c2VzIGxpYnBjaSBmb3IgY3JlYXRpbmcgdXNlZnVsIGlmRGVzY3Igc3RyaW5ncworICAgICAgLSBbUEFUQ0ggMzEzMTM5N106IGh1Z2Ugc3BlZWR1cHMgb2YgdGhlIFRDUC9VRFAgVGFibGVzCisKKyAgbGlibmV0c25tcDoKKyAgICAgIC0gUmVtb3ZlZCB0aGUgb2xkZXIgQ01VIGNvbXBhdGliaWxpdHkgc3VwcG9ydAorICAgICAgLSBUaGUgU1NIIHRyYW5zcG9ydCBpcyBub3cgY29uZmlndXJhYmxlCisKKyAgVExTL0RUTFMgc3VwcG9ydDoKKyAgICAgIC0gVGhlIFNOTVAgb3ZlciBEVExTIHRyYW5zcG9ydCBub3cgcHJvcGVybHkgc3VwcG9ydHMgSVB2NgorICAgICAgLSBJbnRyb2R1Y2VkIG5ldyBjb25maWd1cmF0aW9uIHRva2VuczogbG9jYWxDZXJ0L3BlZXJDZXJ0CisgICAgICAgIChkZXByZWNhdGluZyBzZXJ2ZXJDZXJ0LCBjbGllbnRDZXJ0LCBkZWZYNTA5U2VydmVyUHViLCBkZWZYNTA5Q2xpZW50UHViKQorICAgICAgLSBWYXJpb3VzIGZpeGVzIGZvciB0aGUgVExTL0RUTFMgdHJhbnNwb3J0cworCisgIGFwcHM6CisgICAgICAtIEFkZGVkIGEgcGVyLXZhcmlhYmxlIHRpbWVkIG91dHB1dCBzdXBwb3J0IHRvIHNubXB3YWxrIHVzaW5nIC1DVAorICAgICAgLSBzbm1waW5mb3JtIG5vdyBjb3JyZWN0bHkgdXNlcyB0aGUgbG9jYWwgZW5naW5lSUQgZm9yIGluZm9ybXMKKyAgICAgIC0gQSBudW1iZXIgb2YgbWliMmMgYnVnIGZpeGVzCisgICAgICAtIE5ldyBzbm1wLmNvbmYgdG9rZW5zIGZvciB0aW1lb3V0cyBhbmQgcmV0cmllcworCisgIGJ1aWxkaW5nOgorICAgICAgLSBOZXcgZmxhZ3MgdG8gcmVkdWNlIHRoZSBhbW91bnQgb2YgY29tcGlsZWQgY29kZSB0byBiYXJlIG1pbmltdW1zLgorICAgICAgICBUaGlzIGlzIHByb3ZpZGVkIGJ5IGEgbmV3IGdlbmVyaWMgZmVhdHVyZSBtYXJraW5nL3NlbGVjdGlvbiBtZWNoYW5pc20uCisgICAgICAgIGh0dHA6Ly93d3cubmV0LXNubXAub3JnL3dpa2kvaW5kZXgucGhwL0ZlYXR1cmVfTWFya2luZ19hbmRfU2VsZWN0aW9uCisgICAgICAtIEl0J3Mgbm93IHBvc3NpYmxlIHRvIGJ1aWxkIHdpdGhvdXQgU05NUHYzL1VTTQorICAgICAgICAoZS5nLiwgaWYgeW91IG9ubHkgd2FudCBUTFMvRFRMUyB3aXRoIFNOTVB2My9UU00pCisgICAgICAtIEl0J3MgcG9zc2libGUgdG8gYnVpbGQgdGhlIHN1aXRlIHdpdGggbm8gU0VUIHN1cHBvcnQKKyAgICAgICAgY29uZmlndXJlIHVzaW5nIC0tZW5hYmxlLXJlYWQtb25seQorICAgICAgLSBJdCdzIHBvc3NpYmxlIHRvIGJ1aWxkIHRoZSBhZ2VudCBhcyBhIG5vdGlmeS1vbmx5IGFnZW50CisgICAgICAgIGNvbmZpZ3VyZSB1c2luZyAtLWVuYWJsZS1ub3RpZnktb25seQorICAgICAgLSBBZGRlZCBhIHNjcmlwdCB0byB0ZXN0IG1lbW9yeSB1c2FnZSB3aXRoIHZhcmlvdXMgY29uZmlnIG9wdGlvbnMKKyAgICAgICAgKHNlZSB0aGUgbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHMgc2NyaXB0KQorICAgICAgLSBOZXQtU05NUCBjYW4gbm93IGJlIGJ1aWx0IHRvIHBlcmZvcm0gbG9jYWwgRE5TU0VDIHZhbGlkYXRpb24KKyAgICAgICAgKGluc3RhbGwgRE5TU0VDLVRvb2xzJyBsaWJ2YWwgYW5kIHVzZSAtLXdpdGgtbG9jYWwtZG5zc2VjLXZhbGlkYXRpb24pCisKKyAgdGVzdGluZzoKKyAgICAgIC0gYSBudW1iZXIgb2YgbmV3IEFQSSB1bml0LXRlc3RzIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgc3VpdGUKKyAgICAgICAgKHRvIHJ1biB0aGUgdGVzdHM6IGNkIHRlc3RpbmcgJiYgLi9SVU5GVUxMVEVTVFMgLWcgdW5pdC10ZXN0cykKKyAgICAgIC0gVGhlIHVuaXQgdGVzdHMgY2FuIGJlIG1vcmUgZWFzaWx5IHJ1biB1bmRlciB2YWxncmluZAorICAgICAgICAoU2VlIGh0dHA6Ly9iaXQubHkvanNnUm52IGZvciBkZXRhaWxzKQorCisgIG9wZW5ic2Q6CisgICAgICAtIFN1cHBvcnQgZm9yIHVwZGF0aW5nIHRoZSByb3V0aW5nIHRhYmxlIHZpYSBTTk1QCisKKyAgd2luMzI6CisgICAgICAtIFRoZSB0ZXN0aW5nIHN1aXRlIHdvcmtzIGJldHRlciB1bmRlciB3aW4zMiBlbnZpcm9ubWVudHMKKyAgICAgIC0gTWFueSBidWlsZGluZyBmaXhlcyBmb3IgdGhlIHdpbjMyIGVudmlyb25tZW50KHMpCisKKyAgc29sYXJpczoKKyAgICAgIC0gTmV0LVNOTVAgbm93IHN1cHBvcnRzIHRoZSBTQ1RQLU1JQgorCisgIERyYWdvbkZseUJTRCwgRnJlZUJTRDg6CisgICAgICAtIE5ldC1TTk1QIHNob3VsZCBub3cgd29yayBvbiBEcmFnb25GbHlCU0QgYW5kIEZyZWVCU0Q4CisKKyAgQW5kIG9mIGNvdXJzZToKKyAgICAgIC0gTWFueSBvdGhlciBidWcgZml4ZXMuICBTZWUgdGhlIENIQU5HRVMgYW5kIENoYW5nZUxvZyBmb3IgZGV0YWlscy4KIAogKjUuNioKIApkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCmluZGV4IDI4YjY2NmIuLmE0YzhjMTkgMTAwNjQ0Ci0tLSBhL1JFQURNRQorKysgYi9SRUFETUUKQEAgLTEsNCArMSw0IEBACi0JICAgICAgIFJFQURNRSBmaWxlIGZvciBuZXQtc25tcCBWZXJzaW9uOiA1LjYuMgorCSAgICAgICBSRUFETUUgZmlsZSBmb3IgbmV0LXNubXAgVmVyc2lvbjogNS43LjMucHJlMwogCiBESVNDTEFJTUVSCiAKQEAgLTM1Miw2ICszNTIsOCBAQAogICAgIEFuZGVycyBQZXJzc29uIDxhcGVyc3NvbkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiAgICAgUm9qZXIgPHJvamVyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KICAgICBCYXJ0IFZhbiBBc3NjaGUgPGJhcnQudmFuYXNzY2hlQGdtYWlsLmNvbT4KKyAgICBQYWJsbyBDYXJib25pIDxwY2FyYm9uaUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisgICAgQmlsbCBGZW5uZXIgPGZlbm5lckBnbWFpbC5jb20+CiAKICAgV2UndmUgcHJvYmFibHkgZm9yZ290dGVuIHBlb3BsZSBvbiB0aGlzIGxpc3QuICBMZXQgdXMga25vdyBpZiB5b3UndmUKICAgY29udHJpYnV0ZWQgY29kZSBhbmQgd2UndmUgbGVmdCB5b3Ugb3V0LgpkaWZmIC0tZ2l0IGEvUkVBRE1FLndpbjMyIGIvUkVBRE1FLndpbjMyCmluZGV4IGE4YjZiZjAuLmU0OTI0M2IgMTAwNjQ0Ci0tLSBhL1JFQURNRS53aW4zMgorKysgYi9SRUFETUUud2luMzIKQEAgLTQsMTIgKzQsMTEgQEAKICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCi1UaGlzIGd1aWRlIGRlc2NyaWJlcyBidWlsZGluZyB3aXRoIE1pY3Jvc29mdCBWaXN1YWwgQysrIDYuMCBhbmQgaGlnaGVyLCB3aXRoCi10aGUgZ2NjIGNvbXBpbGVyIGZyb20gTWluR1cgLyBNU1lTLCBhbmQgd2l0aCB0aGUgZ2NjIGNvbXBpbGVyIGZyb20gQ3lnd2luLgotQXMgZGV2ZWxvcGVycyBidWlsZCB3aXRoIG90aGVyIFdpbjMyIGVudmlyb25tZW50cywgdGhlaXIgbm90ZXMgd2lsbCBiZSAKLWluY2x1ZGVkIGhlcmUuCitUaGlzIGd1aWRlIGRlc2NyaWJlcyBob3cgdG8gYnVpbGQgTmV0LVNOTVAgd2l0aCBNaWNyb3NvZnQgVmlzdWFsIEMrKywgdGhlCitNaW5HVyBnY2MgY29tcGlsZXIgb3IgdGhlIEN5Z3dpbiBnY2MgY29tcGlsZXIuICBBcyBkZXZlbG9wZXJzIGJ1aWxkIHdpdGggb3RoZXIKK1dpbjMyIGVudmlyb25tZW50cywgdGhlaXIgbm90ZXMgd2lsbCBiZSBpbmNsdWRlZCBoZXJlLgogCi1UaGUgcmVtYWluZGVyIG9mIHRoaXMgZ3VpZGUgaGFzIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgOgorVGhlIHNlY3Rpb25zIGluIHRoaXMgZ3VpZGUgYXJlOgogCiBDdXJyZW50IFN0YXR1cyBmb3IgV2luMzIgcGxhdGZvcm1zCiBJbnRlcmFjdGlvbnMgd2l0aCBPdGhlciBWZW5kb3IncyBQcm9kdWN0cwpAQCAtMzksMTMgKzM4LDE0IEBACiAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgotKiBTdGF0dXMgYXMgb2YgMjEtU2VwLTIwMTAgZm9yIFdpbjMyIHBsYXRmb3JtcworKiBOZXQtU05NUCBzdGF0dXMgZm9yIFdpbjMyIHBsYXRmb3JtcwogKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKIEFsbCBhcHBsaWNhdGlvbnMgYnVpbGQgd2l0aCBNaWNyb3NvZnQgVmlzdWFsIEMrKyA2LjAsIE1pY3Jvc29mdCBEZXZlbG9wbWVudAogRW52aXJvbm1lbnQgMjAwMyAoTVNWQyA3LjAvNy4xKSwgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gMjAwNSwgTWljcm9zb2Z0Ci1WaXN1YWwgU3R1ZGlvIDIwMDgsIGdjYyB1bmRlciBDeWd3aW4gYW5kIGdjYyB1bmRlciBNaW5HVy4gIAorVmlzdWFsIFN0dWRpbyAyMDA4LCBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyAyMDEwLCBnY2MgdW5kZXIgQ3lnd2luIGFuZCBnY2MKK3VuZGVyIE1pbkdXLgogCiAgIC0gIEFsbCBvZiB0aGUgYXBwbGljYXRpb25zIHdvcmsgKHNubXB3YWxrLCBzbm1wZ2V0LCBzbm1wc2V0LCBzbm1wdHJhcCwgLi4uKS4KICAgLSAgVGhlIHN5c3RlbSwgc25tcCwgaXAsIHRjcCwgdWRwIGFuZCBpY21wIE1JQi1ncm91cHMgd29yayAocmVxdWlyZXMgdGhlCkBAIC04MCw2ICs4MCwxMSBAQAogICAtICBCb3RoIGJ1aWxkaW5nIHZpYSB0aGUgaW50ZXJhY3RpdmUgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgYW5kIHZpYSB0aGUKICAgICAgY29tbWFuZCBsaW5lIChubWFrZSkgaXMgc3VwcG9ydGVkLgogCisgIC0gIFdpdGggVmlzdWFsIFN0dWRpbyAyMDA1IGFuZCBsYXRlciwgdGhlIE5ldC1TTk1QIHNvdXJjZSBjb2RlIGNhbiBiZQorICAgICBjb21waWxlZCBpbnRvIGVpdGhlciAzMi1iaXQgb3IgNjQtYml0IGV4ZWN1dGFibGVzICh0aGUgYW1kNjQveDY0CisgICAgIGFyY2hpdGVjdHVyZSkuIFByZXZpb3VzIFZpc3VhbCBTdHVkaW8gdmVyc2lvbnMgc3VwcG9ydCAzMi1iaXQgZXhlY3V0YWJsZXMKKyAgICAgb25seS4KKwogCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoKQEAgLTQ3Myw4ICs0NzgsOCBAQAogdGhlIERlYnVnIGFuZCBSZWxlYXNlIHZlcnNpb25zIG9mIGFuIGFwcGxpY2F0aW9uIGNhbiBiZSBidWlsdCBhbmQgdGVzdGVkCiBzZXBhcmF0ZWx5LgogCi1WQysrIDYuMCwgNy4xLCA4LjAgKDIwMDUpIGFuZCA5LjAgKDIwMDgpIGhhdmUgYmVlbiB0ZXN0ZWQuICBCdWlsZGluZyB3aXRoCi1lYXJsaWVyIE1pY3Jvc29mdCBjb21waWxlciB2ZXJzaW9ucyBpcyBubyBsb25nZXIgc3VwcG9ydGVkLgorVkMrKyA2LjAsIDcuMSwgOC4wICgyMDA1KSwgOS4wICgyMDA4KSBhbmQgMTAuMCAoMjAxMCkgaGF2ZSBiZWVuIHRlc3RlZC4KK0J1aWxkaW5nIHdpdGggZWFybGllciBNaWNyb3NvZnQgY29tcGlsZXIgdmVyc2lvbnMgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4KIAogTm90ZTogaWYgeW91IHdhbnQgdG8gZGlzdHJpYnV0ZSB0aGUgZ2VuZXJhdGVkIGV4ZWN1dGFibGUsIHlvdSB3aWxsIGFsc28gbmVlZAogdG8gZGlzdHJpYnV0ZSB0aGUgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gUmVkaXN0cmlidXRhYmxlIFBhY2thZ2UuIENoZWNrIHRoZQpAQCAtNTMyLDEyICs1MzcsMjIgQEAKIAogMS4gIE9wZW4gYSBjb21tYW5kIHByb21wdAogCi0yLiAgSW5pdGlhbGl6ZSB0aGUgVmlzdWFsIFN0dWRpbyBidWlsZCBlbnZpcm9ubWVudCBieSBydW5uaW5nIFZDVkFSUzMyLmJhdAorMi4gIFdoZW4gYnVpbGRpbmcgd2l0aCBPcGVuU1NMLCBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBJTkNMVURFIGFuZCBMSUIKKyAgICBzdWNoIHRoYXQgdGhlc2UgcG9pbnQgYXQgdGhlIHByb3BlciBPcGVuU1NMIGRpcmVjdG9yaWVzLiBBbiBleGFtcGxlOgorCisgICAgc2V0IElOQ0xVREU9QzpcT3BlblNTTC1XaW4zMlxpbmNsdWRlCisgICAgc2V0IExJQj1DOlxPcGVuU1NMLVdpbjMyXGxpYlxWQ1xzdGF0aWMKKworMy4gIEluaXRpYWxpemUgdGhlIFZpc3VhbCBTdHVkaW8gYnVpbGQgZW52aXJvbm1lbnQgYnkgcnVubmluZyB2Y3ZhcnNhbGwuYmF0CiAgICAgd2hpY2ggY2FuIGJlIGZvdW5kIGluIHRoZSBiaW4gZm9sZGVyIG9mIHlvdXIgVmlzdWFsIFN0dWRpbyBpbnN0YWxsIGZvbGRlci4KKyAgICBJZiB5b3Ugd2FudCB0byBnZW5lcmF0ZSA2NC1iaXQgYmluYXJpZXMgaW5zdGVhZCBvZiAzMi1iaXQgYmluYXJpZXMsIHJ1bgorICAgIHZjdmFyc2FsbC5iYXQgd2l0aCB0aGUgYW1kNjQgYXJndW1lbnQuIFNlZSBhbHNvICJIb3cgdG86IEVuYWJsZSBhIDY0LUJpdAorICAgIFZpc3VhbCBDKysgVG9vbHNldCBhdCB0aGUgQ29tbWFuZCBMaW5lIiBmb3IgbW9yZSBpbmZvcm1hdGlvbgorICAgIChodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkveDRkMmMwOXMlMjh2PXZzLjgwJTI5LmFzcHgpLgogCi0zLiAgUnVuIHdpbjMyXGJ1aWxkLmJhdAorNC4gIFJ1biB3aW4zMlxidWlsZC5iYXQKIAotNC4gIFRoZSBmb2xsb3dpbmcgc2NyZWVuIHdpbGwgYXBwZWFyOgorNS4gIFRoZSBmb2xsb3dpbmcgc2NyZWVuIHdpbGwgYXBwZWFyOgogCiAgICAgTmV0LVNOTVAgYnVpbGQgYW5kIGluc3RhbGwgb3B0aW9ucwogICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTU2Niw3ICs1ODEsNyBAQAogCiAgICAgU2VsZWN0IG9wdGlvbiB0byBzZXQgLyB0b2dnbGU6ICAKIAotNS4gIFRvZ2dsZSB0aGUgb3B0aW9ucyBvbiBhbmQgb2ZmIGFzIGRlc2lyZWQgYnkgdHlwaW5nIHRoZSBsaW5lIG51bWJlciAKKzYuICBUb2dnbGUgdGhlIG9wdGlvbnMgb24gYW5kIG9mZiBhcyBkZXNpcmVkIGJ5IHR5cGluZyB0aGUgbGluZSBudW1iZXIgCiAgICAgZm9sbG93ZWQgYnkgPGVudGVyPi4gIAogCiAgICAgVG8gY29tcGlsZSB3aXRoIE9wZW5TU0wsIHRoZSBPcGVuU1NMIGxpYnJhcnkgYW5kIGhlYWRlciBmaWxlcyBtdXN0IApAQCAtNTg2LDcgKzYwMSw3IEBACiAKICAgICBXaGVuIHlvdSBhcmUgcmVhZHkgdG8gYnVpbGQsIHR5cGUgZiA8ZW50ZXI+CiAKLTYuICBCdWlsZGluZyB3aWxsIGJlZ2luLiAgRm9sbG93aW5nIGlzIGEgc2FtcGxlIHNjcmVlbiBzaG90IG9mIGEgcXVpZXQgYnVpbGQ6Cis3LiAgQnVpbGRpbmcgd2lsbCBiZWdpbi4gIEZvbGxvd2luZyBpcyBhIHNhbXBsZSBzY3JlZW4gc2hvdCBvZiBhIHF1aWV0IGJ1aWxkOgogCiAgICAgQnVpbGRpbmcuLi4KICAgICAKQEAgLTYwOCw3ICs2MjMsNyBAQAogICAgIAogICAgIERvbmUhCiAKLTcuICBJZiB0aGUgZm9sZGVyIHRoYXQgTmV0LVNOTVAgd2FzIGluc3RhbGxlZCB0byBpcyBldmVyIGNoYW5nZWQsIG1vZGlmeSB0aGUgCis4LiAgSWYgdGhlIGZvbGRlciB0aGF0IE5ldC1TTk1QIHdhcyBpbnN0YWxsZWQgdG8gaXMgZXZlciBjaGFuZ2VkLCBtb2RpZnkgdGhlIAogICAgIHN5c3RlbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb3IgcmVnaXN0cnkga2V5cyBhcyBleHBsYWluZWQgaW4gdGhlIAogICAgICdDb25maWd1cmF0aW9uX092ZXJ2aWV3Lmh0bWwnIGZpbGUgbG9jYXRlZCBpbiB3aW4zMi9kaXN0L2h0bWxoZWxwLgogCkBAIC03MjgsMTAgKzc0MywxMiBAQAogNS4gQnVpbGQgdGhlIGFnZW50IGFuZCB0aGUgYXBwbGljYXRpb25zCiAKICAgIGEuIE9wZW4gd2luMzIuZHN3IChzdGF0aWMgYnVpbGQpIG9yIHdpbjMyZGxsLmRzdyAoZHluYW1pYyBidWlsZCkuCi0gICBiLiBDbGljayAiQnVpbGQtPkJhdGNoIEJ1aWxkLi4uIiAgCi0gICBjLiBTZWxlY3QgdGhlIHByb2plY3RzIGFuZCBjb25maWd1cmF0aW9ucyB5b3Ugd2FudCB0byBidWlsZC4KLSAgIGQuIENsaWNrICJSZUJ1aWxkIEFsbCIuCi0gICBlLiBXaGVuIGJ1aWxkaW5nIGlzIGRvbmUsIFZpZXcgdGhlIE91dHB1dCB3aW5kb3csIGNsaXAgYW5kCisgICBiLiBJZiB5b3Ugd2FudCB0byBnZW5lcmF0ZSA2NC1iaXQgYmluYXJpZXMgaW5zdGVhZCBvZiAzMi1iaXQgYmluYXJpZXMsCisgICAgICBzZWxlY3QgIkJ1aWxkL0NvbmZpZ3VyYXRpb24gTWFuYWdlciIgYW5kIGFkZCB0aGUgIng2NCIgcGxhdGZvcm0uCisgICBjLiBTZWxlY3QgIkJ1aWxkL0JhdGNoIEJ1aWxkLi4uIiAgCisgICBkLiBTZWxlY3QgdGhlIHByb2plY3RzIGFuZCBjb25maWd1cmF0aW9ucyB5b3Ugd2FudCB0byBidWlsZC4KKyAgIGUuIENsaWNrICJSZUJ1aWxkIEFsbCIuCisgICBmLiBXaGVuIGJ1aWxkaW5nIGlzIGRvbmUsIFZpZXcgdGhlIE91dHB1dCB3aW5kb3csIGNsaXAgYW5kCiAgICAgICBzYXZlIHRvIGEgdGV4dCBmaWxlIGlmIHRoZXJlIGlzIHNvbWUgaW5mb3JtYXRpb24gdG8gc2hhcmUuCiAKIDYuICBJZiB0aGUgUGVybCBtb2R1bGVzIGFyZSByZXF1aXJlZCwgY29udGludWUgd2l0aCB0aGUgbmV4dCBzZWN0aW9uOgpAQCAtOTE4LDE2ICs5MzUsMTAgQEAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCiBUaGUgZGVmYXVsdCBidWlsZCBjb25maWd1cmF0aW9uIHN1cHBvcnRzIFNOTVAgb3ZlciBJUHY0LWJhc2VkIHRyYW5zcG9ydHMuCi1Ib3dldmVyLCBXaW5kb3dzIFhQIGFuZCBXaW5kb3dzIDIwMDAgaW5jbHVkZSBhbiBJUHY2LWNhcGFibGUgc3RhY2ssIHdoaWNoCitIb3dldmVyIFdpbmRvd3MgMjAwMCBhbmQgbGF0ZXIgaW5jbHVkZSBhbiBJUHY2LWNhcGFibGUgc3RhY2sgd2hpY2gKIGNhbiBiZSB1c2VkIHRvIHByb3ZpZGUgU05NUCBvdmVyIElQdjYuICBUbyBlbmFibGUgSVB2NiwgdGhlIE1pY3Jvc29mdCBQU0RLIAotaXMgcmVxdWlyZWQgYW5kIHRoZSBmb2xsb3dpbmcgY2hhbmdlcyB0byB0aGUgTmV0LVNOTVAgd2luMzIgVmlzdWFsIEMrKyAKLWNvbmZpZ3VyYXRpb24gYXJlIG5lZWRlZDoKLQotUHJvamVjdCBjaGFuZ2VzCi09PT09PT09PT09PT09PT0KLQotIDEuIEVkaXQgdGhlIHdpbjMyXG5ldC1zbm1wXG5ldC1zbm1wLWNvbmZpZy5oIGhlYWRlciBmaWxlLiAgQ2hhbmdlCi0gICAgdGhlIHNpbmdsZSBJTkVUNiBsaW5lIGZyb206CitpcyByZXF1aXJlZCBhbmQgTkVUU05NUF9FTkFCTEVfSVBWNiBoYXMgdG8gYmUgZW5hYmxlZCBpbgord2luMzJcbmV0LXNubXBcbmV0LXNubXAtY29uZmlnLmguIENoYW5nZSB0aGUgZm9sbG93aW5nIHNpbmdsZSBsaW5lIGZyb206CiAKICAgICAgICAgLyogI3VuZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYgKi8KIApAQCAtOTM1LDIwICs5NDYsNyBAQAogCiAgICAgICAgCSNkZWZpbmUgTkVUU05NUF9FTkFCTEVfSVBWNiAxCiAKLSAyLiBFZGl0IHRoZSB3aW4zMlxsaWJzbm1wX2RsbFxsaWJzbm1wLmRlZiBmaWxlLiAgQWxsIHRoZSBJUHY2IGZ1bmN0aW9ucyB3aWxsCi0gICAgYmUgY29tbWVudGVkIG91dCBhbmQgd2lsbCBuZWVkIHRvIGJlIGVuYWJsZWQgYnkgcmVtb3ZpbmcgJztJUHY2JyBmcm9tIHRoZQotICAgIGJlZ2lubmluZyBvZiBlYWNoIGxpbmUuICAKLQotICAgIEZvciBleGFtcGxlLCBjaGFuZ2U6Ci0KLQotICAgICAgICA7SVB2NiAgICAgICAgbmV0c25tcF91ZHA2X3BhcnNlX3NlY3VyaXR5Ci0KLSAgICB0bzoKLQotICAgICAgICAgICAgICAgIG5ldHNubXBfdWRwNl9wYXJzZV9zZWN1cml0eQotCi0gMy4gQ29udGludWUgd2l0aCB0aGUgc2VjdGlvbiAnTWljcm9zb2Z0IFZpc3VhbCBDKysgLSBCdWlsZGluZyIKK05leHQsIGNvbnRpbnVlIHdpdGggdGhlIHNlY3Rpb24gJ01pY3Jvc29mdCBWaXN1YWwgQysrIC0gQnVpbGRpbmciCiAKIAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0xMDI3LDkgKzEwMjUsNyBAQAogZm9yIFdpbmRvd3MgYmFzZWQgc3lzdGVtcy4gVGhlIGN5Z3dpbjEuZGxsIHByb3ZpZGVzIGEgUE9TSVggZW11bGF0aW9uIGxheWVyIAogdGhhdCBzaW1wbGlmaWVzIHBvcnRpbmcgVW5peCAvIExpbnV4IGFwcGxpY2F0aW9ucyB0byBXaW5kb3dzLiBUaGUgQ3lnd2luIGRsbHMKIGFyZSByZXF1aXJlZCBpZiBhbiBhcHBsaWNhdGlvbiBpcyB0byBiZSBkaXN0cmlidXRlZC4gVGhlIGRlcGVuZGVuY3kgb24gdGhlIAotQ3lnd2luIGRsbHMgY2FuIGJlIGVsaW1pbmF0ZWQgd2l0aCB0aGUgLS1tbm8tY3lnd2luIGNvbXBpbGVyIGZsYWcsIHdoaWNoIHVzZXMKLU1pbkdXIHRvIGNvbXBpbGUgYSBuYXRpdmUgV2luZG93cyBiaW5hcnksIGJ1dCB0aGUgYmVuZWZpdCBvZiB0aGUgUE9TSVggZW11bGF0aW9uCi1pcyBsb3N0LiBUaGUgQ3lnd2luIHRvb2wgY2hhaW4gYW5kIGRvY3VtZW50YXRpb24gY2FuIGJlIGZvdW5kIGF0OgorVGhlIEN5Z3dpbiB0b29sIGNoYWluIGFuZCBkb2N1bWVudGF0aW9uIGNhbiBiZSBmb3VuZCBhdDoKIAogaHR0cDovL3NvdXJjZXMucmVkaGF0LmNvbS9jeWd3aW4vCiAKQEAgLTEwNTksNiArMTA1NSw3IEBACiBBcyBhbiBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyZSBvcHRpb25zIGNyZWF0ZSBhIHdvcmtpbmcgc2V0IG9mCiBwcm9ncmFtczoKIAorRU5WX1NFUEFSQVRPUj0iOiIgXAogLi9jb25maWd1cmUgXAogCS0td2l0aC1taWItbW9kdWxlcz0iaG9zdCBhZ2VudHggZGlzbWFuL2V2ZW50LW1pYiBleGFtcGxlcy9leGFtcGxlIiBcCiAJLS13aXRoLW91dC1taWItbW9kdWxlcz1ob3N0L2hyX25ldHdvcmsgXApkaWZmIC0tZ2l0IGEvYWNjb25maWcuaCBiL2FjY29uZmlnLmgKaW5kZXggZjNmN2JmZS4uMTJmODVjNiAxMDA2NDQKLS0tIGEvYWNjb25maWcuaAorKysgYi9hY2NvbmZpZy5oCkBAIC0yNywxNSArMjcsNiBAQAogICovCiAjaWZuZGVmIE5FVFNOTVBfTk9fQVVUT0NPTkZfREVGSU5JVElPTlMKIAotCi0jaWYgZGVmaW5lZCAoV0lOMzIpIHx8IGRlZmluZWQgKG1pbmd3MzIpIHx8IGRlZmluZWQgKGN5Z3dpbikKLSNkZWZpbmUgRU5WX1NFUEFSQVRPUiAiOyIKLSNkZWZpbmUgRU5WX1NFUEFSQVRPUl9DSEFSICc7JwotI2Vsc2UKLSNkZWZpbmUgRU5WX1NFUEFSQVRPUiAiOiIKLSNkZWZpbmUgRU5WX1NFUEFSQVRPUl9DSEFSICc6JwotI2VuZGlmCi0KIC8qIGRlZmluaXRpb25zIGFkZGVkIGJ5IGNvbmZpZ3VyZSBvbi10aGUtZmx5ICovCiBAVE9QQAogQEJPVFRPTUAKQEAgLTQ5NCwxMSArNDg1LDggQEAKICAgIGFuZCBhcmUgbm90IHVzaW5nIHRoZSBVQy1EYXZpcyBTTk1QIGxpYnJhcnkuICovCiAjZGVmaW5lIFVDRF9TTk1QX0xJQlJBUlkgMQogCi0vKiBhZGQgaW4gcmVjZW50IENNVSBsaWJyYXJ5IGV4dGVuc2lvbnMgKG5vdCBjb21wbGV0ZSkgKi8KLSN1bmRlZiBDTVVfQ09NUEFUSUJMRQotCiAvKiBmaW5hbCBjb25jbHVzaW9uIG9uIG5saXN0IHVzYWdlICovCi0jaWYgZGVmaW5lZChIQVZFX05MSVNUKSAmJiBkZWZpbmVkKEhBVkVfU1RSVUNUX05MSVNUX05fVkFMVUUpICYmICFkZWZpbmVkKE5FVFNOTVBfRE9OVF9VU0VfTkxJU1QpICYmICFkZWZpbmVkKE5FVFNOTVBfTk9fS01FTV9VU0FHRSkKKyNpZiBkZWZpbmVkKEhBVkVfTkxJU1QpICYmIGRlZmluZWQoSEFWRV9TVFJVQ1RfTkxJU1RfTl9WQUxVRSkgJiYgIWRlZmluZWQoTkVUU05NUF9ET05UX1VTRV9OTElTVCkgJiYgZGVmaW5lZChIQVZFX0tNRU0pICYmICFkZWZpbmVkKE5FVFNOTVBfTk9fS01FTV9VU0FHRSkKICNkZWZpbmUgTkVUU05NUF9DQU5fVVNFX05MSVNUCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvYWdlbnQvTWFrZWZpbGUuZGVwZW5kIGIvYWdlbnQvTWFrZWZpbGUuZGVwZW5kCmluZGV4IGJhNDJjNWMuLmZjNzIwZTQgMTAwNjQ0Ci0tLSBhL2FnZW50L01ha2VmaWxlLmRlcGVuZAorKysgYi9hZ2VudC9NYWtlZmlsZS5kZXBlbmQKQEAgLTUsNiArNSw3IEBACiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTczLDYgKzc0LDcgQEAKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMTIsNiArMTE0LDcgQEAKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTE3OSw2ICsxODIsNyBAQAogLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0yMjIsNiArMjI2LDcgQEAKIC4vYWdlbnRfaW5kZXgubG86IG1pYmdyb3VwL3N0cnVjdC5oIC4uL2FnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9hZ2VudC9taWJncm91cC9hZ2VudHgvY2xpZW50LmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMjg5LDYgKzI5NCw3IEBACiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTMzNCw3ICszNDAsOCBAQAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvc25tcHYzL3VzbUNvbmYuaCBtaWJncm91cC9taWJJSS92YWNtX2NvbmYuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vYWdlbnQvbWliZ3JvdXAvbWliX21vZHVsZV9pbmNsdWRlcy5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9leGFtcGxlcy9leGFtcGxlLmggbWliZ3JvdXAvdGVzdGhhbmRsZXIuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmggbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2hvc3QvaHJoX3N0b3JhZ2UuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaG9zdC9ocmhfZmlsZXN5cy5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9ob3N0L2hyX3N5c3RlbS5oIG1pYmdyb3VwL2hvc3QvaHJfZGV2aWNlLmgKQEAgLTM0NSwxMiArMzUyLDE4IEBACiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9leGFtcGxlcy93YXRjaGVkLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2V4YW1wbGVzL2RhdGFfc2V0LmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdHNtLW1pYi9zbm1wVHNtQ29uZmlndXJhdGlvblVzZVByZWZpeC5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9SbW9uL3Jvd3MuaCBtaWJncm91cC9SbW9uL2FndXRpbC5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9SbW9uL3N0YXRpc3RpY3MuaCBtaWJncm91cC9SbW9uL2FsYXJtVGFibGUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmggbWliZ3JvdXAvUm1vbi9ldmVudC5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtU2Vzc2lvbi9zbm1wVGxzdG1TZXNzaW9uLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1BZGRyVGFibGUvc25tcFRsc3RtQWRkclRhYmxlLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtUGFyYW1zVGFibGUvc25tcFRsc3RtUGFyYW1zVGFibGUuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdHNtLW1pYi9zbm1wVHNtU3RhdHMvc25tcFRzbVN0YXRzLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVTY2FsYXJzLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuaApAQCAtMzgwLDggKzM5Myw4IEBACiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9taWJJSS90Y3AuaCBtaWJncm91cC9taWJJSS9pY21wLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL21pYklJL3VkcC5oIG1pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9taWJJSS9zZXRTZXJpYWxOby5oIG1pYmdyb3VwL21pYklJL2lwdjYuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdWNkLXNubXAvZGlzay5oIC4uL2FnZW50L21pYmdyb3VwL21pYmRlZnMuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC91Y2Qtc25tcC9kaXNrX2h3LmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2FnZW50L21pYmdyb3VwL21pYmRlZnMuaCBtaWJncm91cC91Y2Qtc25tcC9wcm9jLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmgKQEAgLTQwNiw2ICs0MTksNyBAQAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9od19tZW0uaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9od19mc3lzLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9taWJJSS92YXJfcm91dGUuaCBtaWJncm91cC9taWJJSS90Y3BUYWJsZS5oCkBAIC01MDcsNiArNTIxLDcgQEAKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2FnZW50L21pYmdyb3VwL2FnZW50X21vZHVsZV9kb3RfY29uZi5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9hZ2VudC9taWJncm91cC9taWJfbW9kdWxlX2RvdF9jb25mLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNTc0LDYgKzU4OSw3IEBACiAuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTY0OSw2ICs2NjUsNyBAQAogLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTY4Myw2ICs3MDAsNyBAQAogLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTcyNSw2ICs3NDMsNyBAQAogLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3N5c09SVGFibGUuaAogLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKQEAgLTc5MSw2ICs4MTAsNyBAQAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTg2OSw2ICs4ODksNyBAQAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC05MDMsNiArOTI0LDcgQEAKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCkBAIC05NDAsMTEgKzk2MiwxMCBAQAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oIG0ybS5oCi0uL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9zdHJ1Y3QuaCAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVzLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2FnZW50L21pYmdyb3VwL21pYl9tb2R1bGVfaW5jbHVkZXMuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5oIG1pYmdyb3VwL3Rlc3RoYW5kbGVyLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oIG1pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9ob3N0L2hyaF9zdG9yYWdlLmggbWliZ3JvdXAvaG9zdC9ocmhfZmlsZXN5cy5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5oIG1pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2hvc3QvaHJfZGV2aWNlLmggbWliZ3JvdXAvaG9zdC9ocl9vdGhlci5oCkBAIC05NTIsMTIgKzk3MywxOSBAQAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaG9zdC9ocl9wcmludC5oIG1pYmdyb3VwL2hvc3QvaHJfZGlzay5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9ob3N0L2hyX3BhcnRpdGlvbi5oIG1pYmdyb3VwL2V4YW1wbGVzL3NjYWxhcl9pbnQuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZXhhbXBsZXMvd2F0Y2hlZC5oIG1pYmdyb3VwL2V4YW1wbGVzL2RhdGFfc2V0LmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UuaCBtaWJncm91cC9SbW9uL3Jvd3MuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvUm1vbi9hZ3V0aWwuaCBtaWJncm91cC9SbW9uL3N0YXRpc3RpY3MuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmggbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL1Jtb24vZXZlbnQuaCBtaWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3RzbS1taWIvc25tcFRzbUNvbmZpZ3VyYXRpb25Vc2VQcmVmaXguaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvUm1vbi9yb3dzLmggbWliZ3JvdXAvUm1vbi9hZ3V0aWwuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvUm1vbi9zdGF0aXN0aWNzLmggbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL1Jtb24vaGlzdG9yeS5oIG1pYmdyb3VwL1Jtb24vZXZlbnQuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9ob3N0L2hyU1dSdW5QZXJmVGFibGUuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bVNlc3Npb24vc25tcFRsc3RtU2Vzc2lvbi5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQWRkclRhYmxlL3NubXBUbHN0bUFkZHJUYWJsZS5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bVBhcmFtc1RhYmxlL3NubXBUbHN0bVBhcmFtc1RhYmxlLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3RzbS1taWIvc25tcFRzbVN0YXRzL3NubXBUc21TdGF0cy5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlU2NhbGFycy5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmgKQEAgLTk4NCw3ICsxMDEyLDcgQEAKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL21pYklJL2F0LmggbWliZ3JvdXAvbWliSUkvdGNwLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL21pYklJL2ljbXAuaCBtaWJncm91cC9taWJJSS91ZHAuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmggbWliZ3JvdXAvbWliSUkvc2V0U2VyaWFsTm8uaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvbWliSUkvaXB2Ni5oIG1pYmdyb3VwL3VjZC1zbm1wL2Rpc2suaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvbWliSUkvaXB2Ni5oIG1pYmdyb3VwL3VjZC1zbm1wL2Rpc2tfaHcuaAogLi9taWJfbW9kdWxlcy5sbzogLi4vYWdlbnQvbWliZ3JvdXAvbWliZGVmcy5oIG1pYmdyb3VwL3VjZC1zbm1wL3Byb2MuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uaCBtaWJncm91cC91Y2Qtc25tcC9wYXNzLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5oCkBAIC0xMDA4LDYgKzEwMzYsNyBAQAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9od19tZW0uaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9od19mc3lzLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9taWJJSS92YXJfcm91dGUuaCBtaWJncm91cC9taWJJSS90Y3BUYWJsZS5oCkBAIC0xMDE5LDYgKzEwNDgsNyBAQAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3MuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2NvbnN0YW50cy5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmgKQEAgLTExNDAsNiArMTE3MCw3IEBACiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTExNzQsNiArMTIwNSw3IEBACiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEyMTQsNiArMTI0Niw3IEBACiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29iamVjdF9tb25pdG9yLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTEyODEsNiArMTMxNCw3IEBACiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTMyMSw5ICsxMzU1LDEwIEBACiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmggc25tcGQuaAogLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVzLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmgKLS4vc25tcF9hZ2VudC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5oCiAuL3NubXBfYWdlbnQubG86IC4uL2FnZW50L21pYmdyb3VwL3NtdXgvc211eC5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaApAQCAtMTM4Nyw2ICsxNDIyLDcgQEAKIC4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTQyNiwxNzEgKzE0NjIsNyBAQAogLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oIG0ybS5oIHNubXBkLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3N0cnVjdC5oIC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZXMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdXRpbF9mdW5jcy5oIG1pYmdyb3VwL3V0aWxfZnVuY3MvRXhpdC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91dGlsX2Z1bmNzL3Jlc3RhcnQuaCBtaWJncm91cC9zdHJ1Y3QuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCi0uL3NubXBkLmxvOiAuLi9hZ2VudC9taWJncm91cC9taWJfbW9kdWxlX2luY2x1ZGVzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuaCBtaWJncm91cC90ZXN0aGFuZGxlci5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuaCBtaWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuaCBtaWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ob3N0L2hyX3N5c3RlbS5oIG1pYmdyb3VwL2hvc3QvaHJfZGV2aWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2hvc3QvaHJfb3RoZXIuaCBtaWJncm91cC9ob3N0L2hyX3Byb2MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmggbWliZ3JvdXAvaG9zdC9ocl9wcmludC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ob3N0L2hyX2Rpc2suaCBtaWJncm91cC9ob3N0L2hyX3BhcnRpdGlvbi5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9leGFtcGxlcy9zY2FsYXJfaW50LmggbWliZ3JvdXAvZXhhbXBsZXMvd2F0Y2hlZC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9leGFtcGxlcy9kYXRhX3NldC5oIG1pYmdyb3VwL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvUm1vbi9yb3dzLmggbWliZ3JvdXAvUm1vbi9hZ3V0aWwuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvUm1vbi9zdGF0aXN0aWNzLmggbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL1Jtb24vaGlzdG9yeS5oIG1pYmdyb3VwL1Jtb24vZXZlbnQuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ob3N0L2hyU1dSdW5QZXJmVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVNjYWxhcnMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckRlbHRhVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQ29uZi5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnQuaAotLi9zbm1wZC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Q29uZi5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzQ29uZi5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5oIG1pYmdyb3VwL3NubXB2My91c21TdGF0c181XzUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuaCBtaWJncm91cC9zbm1wdjMvdXNtVXNlci5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuaCBtaWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL21pYklJL3N5c09SVGFibGUuaCBtaWJncm91cC9taWJJSS9hdC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS9pcC5oIG1pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS9yb3V0ZV93cml0ZS5oIG1pYmdyb3VwL21pYklJL2F0LmgKLS4vc25tcGQubG86IG1pYmdyb3VwL21pYklJL3RjcC5oIG1pYmdyb3VwL21pYklJL2ljbXAuaCBtaWJncm91cC9taWJJSS91ZHAuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmggbWliZ3JvdXAvbWliSUkvc2V0U2VyaWFsTm8uaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvbWliSUkvaXB2Ni5oIG1pYmdyb3VwL3VjZC1zbm1wL2Rpc2suaAotLi9zbm1wZC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvbWliZGVmcy5oIG1pYmdyb3VwL3VjZC1zbm1wL3Byb2MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uaCBtaWJncm91cC91Y2Qtc25tcC9wYXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5oIG1pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmggbWliZ3JvdXAvdWNkLXNubXAvZXJyb3JtaWIuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdWNkLXNubXAvZmlsZS5oIG1pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmggbWliZ3JvdXAvdWNkLXNubXAvbG9nbWF0Y2guaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5LmggbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0LmgKLS4vc25tcGQubG86IG1pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmggbWliZ3JvdXAvYWdlbnQvbnNEZWJ1Zy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9hZ2VudC9uc0NhY2hlLmggbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvcmUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29uZi5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91dGlsaXRpZXMvb3ZlcnJpZGUuaCBtaWJncm91cC9oYXJkd2FyZS9tZW1vcnkvaHdfbWVtLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuaCBtaWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmgKLS4vc25tcGQubG86IG1pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oIG1pYmdyb3VwL21pYklJL3RjcFRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL21pYklJL3VkcFRhYmxlLmggbWliZ3JvdXAvbWliSUkvdmFjbV9jb250ZXh0LmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcF9zY2FsYXJzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2NvbnN0YW50cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2NvbnN0YW50cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmgKLS4vc25tcGQubG86IC4uL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2NvbnN0YW50cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfZGF0YV9hY2Nlc3MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9jb25zdGFudHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2ludGVyZmFjZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfY29uc3RhbnRzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXRhX2FjY2Vzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9vaWRzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9lbnVtcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9hY2Nlc3MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfZ2V0LmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9hcnAuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9jb25zdGFudHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBzdGF0cy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2NvbnN0YW50cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc2NvcGV6b25lLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWRzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9lbnVtcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YV9hY2Nlc3MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9vaWRzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9lbnVtcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3JvdXRlLmgKLS4vc25tcGQubG86IC4uL2FnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX2hlYWRlcnMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2NvbnN0YW50cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfZGF0YV9hY2Nlc3MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnN0YW50cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfZGF0YV9hY2Nlc3MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvdGNwQ29ubi5oCi0uL3NubXBkLmxvOiBtaWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfY29uc3RhbnRzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2FjY2Vzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9jb25zdGFudHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2NvbnN0YW50cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfZGF0YV9hY2Nlc3MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oIG1pYmdyb3VwL3NtdXgvc211eC5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVzLmggbWliZ3JvdXAvc211eC9zbXV4LmgKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTYyNCw2ICsxNDk2LDcgQEAKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE2NTgsNiArMTUzMSw3IEBACiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNzMwLDYgKzE2MDQsNyBAQAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTc2NCw2ICsxNjM5LDcgQEAKIC4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE4MTIsNiArMTY4OCw3IEBACiAuL3NubXBfdmFycy5sbzogbWliZ3JvdXAvc25tcHYzL3VzbUNvbmYuaCBtaWJncm91cC9taWJJSS92YWNtX2NvbmYuaAogLi9zbm1wX3ZhcnMubG86IHNubXBfcGVybC5oIC4uL2FnZW50L21pYmdyb3VwL2FnZW50X21vZHVsZV9pbml0cy5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xODc5LDYgKzE3NTYsNyBAQAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE5MTksNiArMTc5Nyw3IEBACiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oCiAuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTk4Niw2ICsxODY1LDcgQEAKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTIwNTgsNiArMTkzOCw3IEBACiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTIwOTIsNiArMTk3Myw3IEBACiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTIxMzEsNiArMjAxMyw3IEBACiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMjE5OCw2ICsyMDgxLDcgQEAKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTIyNzAsNiArMjE1NCw3IEBACiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0yMzA0LDYgKzIxODksNyBAQAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMjM0Myw2ICsyMjI5LDcgQEAKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMjQxMCw2ICsyMjk3LDcgQEAKIC4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0yNDQ5LDYgKzIzMzcsNyBAQAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0yNTE2LDYgKzI0MDUsNyBAQAogLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMjU4OCw2ICsyNDc4LDcgQEAKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0yNjIyLDYgKzI1MTMsNyBAQAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTI2OTQsNiArMjU4Niw3IEBACiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0yNzI4LDYgKzI2MjEsNyBAQAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMjgwMCw2ICsyNjk0LDcgQEAKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTI4MzQsNiArMjcyOSw3IEBACiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0yOTA3LDYgKzI4MDMsNyBAQAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0yOTQxLDYgKzI4MzgsNyBAQAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0yOTgwLDYgKzI4NzgsNyBAQAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0zMDQ3LDYgKzI5NDYsNyBAQAogLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0zMTE5LDYgKzMwMTksNyBAQAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zMTUzLDYgKzMwNTQsNyBAQAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0zMjI1LDYgKzMxMjcsNyBAQAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zMjU5LDYgKzMxNjIsNyBAQAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0zMzMxLDYgKzMyMzUsNyBAQAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zMzY1LDYgKzMyNzAsNyBAQAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0zNDA0LDYgKzMzMTAsNyBAQAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0zNDcxLDYgKzMzNzgsNyBAQAogLi9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaGVscGVycy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaGVscGVycy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaGVscGVycy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaGVscGVycy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0zNTEwLDYgKzM0MTgsNyBAQAogLi9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMzU3Nyw2ICszNDg2LDcgQEAKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0zNjE1LDkgKzM1MjUsMTAgQEAKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAotLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF90b19uZXh0LmgKKy4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oCiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMzY4NSw2ICszNTk2LDcgQEAKIC4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTM3MjYsNiArMzYzOCw3IEBACiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF90b19uZXh0LmgKIC4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKIC4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTM3OTMsNiArMzcwNiw3IEBACiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMzgzMiw2ICszNzQ2LDcgQEAKIC4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0zODk5LDYgKzM4MTQsNyBAQAogLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTM5MzgsNiArMzg1NCw3IEBACiAuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC00MDA1LDYgKzM5MjIsNyBAQAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC00MDQ0LDYgKzM5NjIsNyBAQAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTQxMTEsNiArNDAzMCw3IEBACiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC00MTUwLDYgKzQwNzAsNyBAQAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNDIxNyw2ICs0MTM4LDcgQEAKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTQyNTYsNiArNDE3OCw3IEBACiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTQzMjMsNiArNDI0Niw3IEBACiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNDM2Myw2ICs0Mjg3LDcgQEAKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNDQzMCw2ICs0MzU1LDcgQEAKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNDQ2OSw2ICs0Mzk1LDcgQEAKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTQ1MzYsNiArNDQ2Myw3IEBACiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNDU3NSw2ICs0NTAzLDcgQEAKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNDY0Miw2ICs0NTcxLDcgQEAKIC4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTQ3MTQsNiArNDY0NCw3IEBACiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTQ3NDgsNiArNDY3OSw3IEBACiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTQ3ODksNiArNDcyMSw3IEBACiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmgKIC4vbWliZ3JvdXAva2VybmVsX3N1bm9zNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC00ODU2LDYgKzQ3ODksNyBAQAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC00ODk2LDYgKzQ4MzAsNyBAQAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi9taWJncm91cC90ZXN0aGFuZGxlci5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC00OTYzLDYgKzQ4OTgsNyBAQAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTUwMDEsMTQgKzQ5MzcsMTEgQEAKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiBtaWJncm91cC9zdHJ1Y3QuaCAuL21pYmdyb3VwL3V0aWxfZnVuY3MuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiBtaWJncm91cC91dGlsX2Z1bmNzL0V4aXQuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiBtaWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogbWliZ3JvdXAvdXRpbF9mdW5jcy9yZXN0YXJ0LmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogbWliZ3JvdXAvdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4vbWliZ3JvdXAvc3RydWN0LmggLi9taWJncm91cC91dGlsX2Z1bmNzLmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi9taWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi9taWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuL21pYmdyb3VwL3V0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuL21pYmdyb3VwL3V0aWxpdGllcy9leGVjdXRlLmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi9taWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2FnZW50L21pYmdyb3VwL21pYmRlZnMuaAogLi9taWJncm91cC93aW5FeHRETEwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vbWliZ3JvdXAvd2luRXh0RExMLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliZ3JvdXAvd2luRXh0RExMLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKZGlmZiAtLWdpdCBhL2FnZW50L01ha2VmaWxlLmluIGIvYWdlbnQvTWFrZWZpbGUuaW4KaW5kZXggZmE1MTBhOS4uNzQ4YjAxYyAxMDA2NDQKLS0tIGEvYWdlbnQvTWFrZWZpbGUuaW4KKysrIGIvYWdlbnQvTWFrZWZpbGUuaW4KQEAgLTMsNiArMyw3IEBACiAjCiAKIHRvcF9idWlsZGRpcgk9IC4uCitteXN1YmRpcj1hZ2VudAogCiAjIHVzZSBHTlUgdnBhdGgsIGlmIGF2YWlsYWJsZSwgdG8gb25seSBzZXQgYSBwYXRoIGZvciBzb3VyY2UgYW5kIGhlYWRlcnMKICMgVlBBVEggd2lsbCBwaWNrIHVwIG9iamVjdHMgdG9vLCB3aGljaCBpcyBiYWQgaWYgeW91IGFyZSBzaGFyaW5nIGEKQEAgLTE2LDYgKzE3LDcgQEAKICMgd2hhdCB0byBpbnN0YWxsCiAjCiBTVUJESVJTPWhlbHBlcnMgbWliZ3JvdXAKK0ZUU1VCRElSUz1taWJncm91cCBoZWxwZXJzCiAKIElOU1RBTExTQklOUFJPR1M9IEBTTk1QREAKIElOU1RBTExMSUJTCT0gbGlibmV0c25tcGFnZW50LiQoTElCX0VYVEVOU0lPTikkKExJQl9WRVJTSU9OKQpAQCAtNzYsOCArNzgsNyBAQAogCiBJTkNMVURFTUlCR1JPVVBESVI9YWdlbnQvbWliZ3JvdXAKIElOQ0xVREVNSUJHUk9VUERJUkhFQURFUlM9c3RydWN0LmggdXRpbF9mdW5jcy5oIHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCBcCi0JdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oIFwKLQl1dGlsX2Z1bmNzL0V4aXQuaCB1dGlsX2Z1bmNzL3Jlc3RhcnQuaAorCXV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAogCiBPVEhFUklOU1RBTEw9aW5zdGFsbG1pYmdyb3VwaGVhZGVycyBARU1CRURQRVJMSU5TVEFMTEAKIE9USEVSVU5JTlNUQUxMPUBFTUJFRFBFUkxVTklOU1RBTExACkBAIC0xMTYsOSArMTE3LDEwIEBACiAKIExBR0VOVExJQlMJPSBATEFHRU5UTElCU0AKIExNSUJMSUJTCT0gQExNSUJMSUJTQAorVkFMX0xJQlMJPSBAVkFMX0xJQlNACiBQRVJMTERPUFRTX0ZPUl9BUFBTID0gQFBFUkxMRE9QVFNfRk9SX0FQUFNACiBQRVJMTERPUFRTX0ZPUl9MSUJTID0gQFBFUkxMRE9QVFNfRk9SX0xJQlNACi1MSUJTCQk9ICQoVVNFTElCUykgQEFHRU5UTElCU0AgJChQRVJMTERPUFRTX0ZPUl9BUFBTKQorTElCUwkJPSAkKFVTRUxJQlMpIEBBR0VOVExJQlNAICQoUEVSTExET1BUU19GT1JfQVBQUykgJChWQUxfTElCUykKIE9VUl9BR0VOVF9MSUJTCT0gJChBR0VOVExJQikgJChNSUJMSUIpICQoTElCUykgQERMTElCU0AKIENQUEZMQUdTCT0gJChUT1BfSU5DTFVERVMpIC1JLiAkKEFHRU5UX0lOQ0xVREVTKSAkKE1JQkdST1VQX0lOQ0xVREVTKSBcCiAJCSAgJChTTk1QTElCX0lOQ0xVREVTKSBAQ1BQRkxBR1NAIApAQCAtMTMwLDI1ICsxMzIsMTcgQEAKIAogIyBsaWJuZXRzbm1wbWlicyBvYmplY3RzLgogQG1pYmdyb3VwX2xpc3RfbG9ACitAbWliZ3JvdXBfbGlzdF9mdEAKIEBtaWJncm91cF9saXN0X29ACiBAYWdlbnRncm91cF9saXN0X2xvQAorQGFnZW50Z3JvdXBfbGlzdF9mdEAKIEBhZ2VudGdyb3VwX2xpc3Rfb0AKK0ZUTUlCT0JKUwk9ICQobWliZ3JvdXBfbGlzdF9mdCkgbWliX21vZHVsZXMuZnQgYXV0b19ubGlzdC5mdAogTE1JQk9CSlMJPSAkKG1pYmdyb3VwX2xpc3RfbG8pIG1pYl9tb2R1bGVzLmxvIGF1dG9fbmxpc3QubG8KIE1JQk9CSlMJCT0gJChtaWJncm91cF9saXN0X28pIG1pYl9tb2R1bGVzLm8gYXV0b19ubGlzdC5vCiAKICMgbGlibmV0c25tcGFnZW50IG9iamVjdHMKIExJQkFHRU5UT0JKUz0gXAotCWFnZW50X2hhbmRsZXIubyBcCi0JYWdlbnRfaW5kZXgubyBcCi0JYWdlbnRfcmVhZF9jb25maWcubyBcCi0JYWdlbnRfcmVnaXN0cnkubyBcCi0JYWdlbnRfc3lzT1JUYWJsZS5vIFwKLQlhZ2VudF90cmFwLm8gXAotCWtlcm5lbC5vIFwKLQlzbm1wX2FnZW50Lm8gXAotCXNubXBfdmFycy5vIFwKLQkkKGFnZW50Z3JvdXBfbGlzdF9vKSBcCi0JQE9USEVSQUdFTlRMSUJPQkpTQCBcCiAJaGVscGVycy9hbGxfaGVscGVycy5vIFwKIAloZWxwZXJzL2JhYnlfc3RlcHMubyBcCiAJaGVscGVycy9idWxrX3RvX25leHQubyBcCkBAIC0xNzUsMjAgKzE2OSwyMCBAQAogCWhlbHBlcnMvdGFibGVfaXRlcmF0b3IubyBcCiAJaGVscGVycy90YWJsZV9yb3cubyBcCiAJaGVscGVycy90YWJsZV90ZGF0YS5vIFwKLQloZWxwZXJzL3dhdGNoZXIubworCWhlbHBlcnMvd2F0Y2hlci5vIFwKKwlhZ2VudF9oYW5kbGVyLm8gXAorCWFnZW50X2luZGV4Lm8gXAorCWFnZW50X3JlYWRfY29uZmlnLm8gXAorCWFnZW50X3JlZ2lzdHJ5Lm8gXAorCWFnZW50X3N5c09SVGFibGUubyBcCisJYWdlbnRfdHJhcC5vIFwKKwlrZXJuZWwubyBcCisJc25tcF9hZ2VudC5vIFwKKwlzbm1wX3ZhcnMubyBcCisJJChhZ2VudGdyb3VwX2xpc3RfbykgXAorCUBPVEhFUkFHRU5UTElCT0JKU0AKIAogTExJQkFHRU5UT0JKUz0gXAotCWFnZW50X2hhbmRsZXIubG8gXAotCWFnZW50X2luZGV4LmxvIFwKLQlhZ2VudF9yZWFkX2NvbmZpZy5sbyBcCi0JYWdlbnRfcmVnaXN0cnkubG8gXAotCWFnZW50X3N5c09SVGFibGUubG8gXAotCWFnZW50X3RyYXAubG8gXAotCWtlcm5lbC5sbyBcCi0Jc25tcF9hZ2VudC5sbyBcCi0Jc25tcF92YXJzLmxvIFwKLQkkKGFnZW50Z3JvdXBfbGlzdF9sbykgXAotCUBPVEhFUkFHRU5UTElCTE9CSlNAIFwKIAloZWxwZXJzL2FsbF9oZWxwZXJzLmxvIFwKIAloZWxwZXJzL2JhYnlfc3RlcHMubG8gXAogCWhlbHBlcnMvYnVsa190b19uZXh0LmxvIFwKQEAgLTIxNSwxOCArMjA5LDcyIEBACiAJaGVscGVycy90YWJsZV9pdGVyYXRvci5sbyBcCiAJaGVscGVycy90YWJsZV9yb3cubG8gXAogCWhlbHBlcnMvdGFibGVfdGRhdGEubG8gXAotCWhlbHBlcnMvd2F0Y2hlci5sbworCWhlbHBlcnMvd2F0Y2hlci5sbyBcCisJYWdlbnRfaGFuZGxlci5sbyBcCisJYWdlbnRfaW5kZXgubG8gXAorCWFnZW50X3JlYWRfY29uZmlnLmxvIFwKKwlhZ2VudF9yZWdpc3RyeS5sbyBcCisJYWdlbnRfc3lzT1JUYWJsZS5sbyBcCisJYWdlbnRfdHJhcC5sbyBcCisJa2VybmVsLmxvIFwKKwlzbm1wX2FnZW50LmxvIFwKKwlzbm1wX3ZhcnMubG8gXAorCSQoYWdlbnRncm91cF9saXN0X2xvKSBcCisJQE9USEVSQUdFTlRMSUJMT0JKU0AKKworTExJQkFHRU5URlRTPSBcCisJaGVscGVycy9hbGxfaGVscGVycy5mdCBcCisJaGVscGVycy9iYWJ5X3N0ZXBzLmZ0IFwKKwloZWxwZXJzL2J1bGtfdG9fbmV4dC5mdCBcCisJaGVscGVycy9jYWNoZV9oYW5kbGVyLmZ0IFwKKwloZWxwZXJzL2RlYnVnX2hhbmRsZXIuZnQgXAorCWhlbHBlcnMvaW5zdGFuY2UuZnQgXAorCWhlbHBlcnMvbW9kZV9lbmRfY2FsbC5mdCBcCisJaGVscGVycy9tdWx0aXBsZXhlci5mdCBcCisJaGVscGVycy9udWxsLmZ0IFwKKwloZWxwZXJzL29sZF9hcGkuZnQgXAorCWhlbHBlcnMvcmVhZF9vbmx5LmZ0IFwKKwloZWxwZXJzL3Jvd19tZXJnZS5mdCBcCisJaGVscGVycy9zY2FsYXIuZnQgXAorCWhlbHBlcnMvc2NhbGFyX2dyb3VwLmZ0IFwKKwloZWxwZXJzL3NlcmlhbGl6ZS5mdCBcCisJaGVscGVycy9zbm1wX2dldF9zdGF0aXN0aWMuZnQgXAorCWhlbHBlcnMvc3Rhc2hfY2FjaGUuZnQgXAorCWhlbHBlcnMvc3Rhc2hfdG9fbmV4dC5mdCBcCisJaGVscGVycy90YWJsZS5mdCBcCisJaGVscGVycy90YWJsZV9hcnJheS5mdCBcCisJaGVscGVycy90YWJsZV9jb250YWluZXIuZnQgXAorCWhlbHBlcnMvdGFibGVfZGF0YS5mdCBcCisJaGVscGVycy90YWJsZV9kYXRhc2V0LmZ0IFwKKwloZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmZ0IFwKKwloZWxwZXJzL3RhYmxlX3Jvdy5mdCBcCisJaGVscGVycy90YWJsZV90ZGF0YS5mdCBcCisJaGVscGVycy93YXRjaGVyLmZ0IFwKKwlhZ2VudF9oYW5kbGVyLmZ0IFwKKwlhZ2VudF9pbmRleC5mdCBcCisJYWdlbnRfcmVhZF9jb25maWcuZnQgXAorCWFnZW50X3JlZ2lzdHJ5LmZ0IFwKKwlhZ2VudF9zeXNPUlRhYmxlLmZ0IFwKKwlhZ2VudF90cmFwLmZ0IFwKKwlrZXJuZWwuZnQgXAorCXNubXBfYWdlbnQuZnQgXAorCXNubXBfdmFycy5mdCBcCisJJChhZ2VudGdyb3VwX2xpc3RfZnQpIFwKKwlAT1RIRVJBR0VOVExJQkxGVFNACiAKICMgVGhlIGFnZW50IG9iamVjdHMuCiBBR0VOVE9CSlM9c25tcGQubyBAb3RoZXJfYWdlbnRvYmpzQAogTEFHRU5UT0JKUz1zbm1wZC5sbyBAb3RoZXJfbGFnZW50b2Jqc0AKK0ZUQUdFTlRPQkpTPXNubXBkLmZ0IEBvdGhlcl9mdGFnZW50b2Jqc0AKIAogIwogIyBEZWZpbmUgT0JKUyBhbmQgTE9CSlMgZm9yIGNsZWFuIHRhcmdldCAoanVzdCB0aGlzIGRpcmVjdG9yeSkKICMKIE9CSlMJCT0gJChMSUJBR0VOVE9CSlMpICAkKEFHRU5UT0JKUykgIG1pYl9tb2R1bGVzLm8gIGF1dG9fbmxpc3QubwogTE9CSlMJCT0gJChMTElCQUdFTlRPQkpTKSAkKExBR0VOVE9CSlMpIG1pYl9tb2R1bGVzLmxvIGF1dG9fbmxpc3QubG8KK0ZUT0JKUwkJPSAkKExMSUJBR0VOVEZUUykgJChGVEFHRU5UT0JKUykgbWliX21vZHVsZXMuZnQgYXV0b19ubGlzdC5mdAogCitGRUFUVVJFRklMRSAgICAgPSAkKHRvcF9idWlsZGRpcikvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9mZWF0dXJlcy5oCiAKIGFsbDogYWdlbnRsaWIgc3ViZGlycyBtaWJsaWIgJChJTlNUQUxMQklOUFJPR1MpICQoSU5TVEFMTFNCSU5QUk9HUykKIApkaWZmIC0tZ2l0IGEvYWdlbnQvYWdlbnRfaGFuZGxlci5jIGIvYWdlbnQvYWdlbnRfaGFuZGxlci5jCmluZGV4IGNhNmFlNGMuLjU5ZTk2MTMgMTAwNjQ0Ci0tLSBhL2FnZW50L2FnZW50X2hhbmRsZXIuYworKysgYi9hZ2VudC9hZ2VudF9oYW5kbGVyLmMKQEAgLTksNiArOSw3IEBACiAgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogCkBAIC0yMSw2ICsyMiw5IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGFnZW50X2hhbmRsZXIsIGxpYm5ldHNubXBhZ2VudCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGhhbmRsZXJfbWFya19yZXF1ZXN0c19hc19kZWxlZ2F0ZWQsIGFnZW50X2hhbmRsZXIpCiAKIHN0YXRpYyBuZXRzbm1wX21pYl9oYW5kbGVyICpfY2xvbmVfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICppdCk7CiAKQEAgLTU3Niw2ICs1ODAsNyBAQAogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7ICAgIC8qIGxlZ2FsICovCiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKICAgICBjYXNlIE1PREVfU0VUX0FDVElPTjoKQEAgLTU5MCw2ICs1OTUsNyBAQAogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICBkZWZhdWx0OgogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidW5rbm93biBtb2RlIGluIG5ldHNubXBfY2FsbF9oYW5kbGVycyEgYnVnIVxuIik7CkBAIC02NDEsNiArNjQ3LDggQEAKICAqCiAgKiAgQHJldHVybiBSZXR1cm5zIFNOTVBFUlJfU1VDQ0VTUyBvciBTTk1QX0VSUl8qIGVycm9yIGNvZGUuCiAgKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihuZXRzbm1wX2NhbGxfbmV4dF9oYW5kbGVyX29uZV9yZXF1ZXN0LG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX05FVFNOTVBfQ0FMTF9ORVhUX0hBTkRMRVJfT05FX1JFUVVFU1QKIE5FVFNOTVBfSU5MSU5FIGludAogbmV0c25tcF9jYWxsX25leHRfaGFuZGxlcl9vbmVfcmVxdWVzdChuZXRzbm1wX21pYl9oYW5kbGVyICpjdXJyZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLApAQCAtNjYyLDYgKzY3MCw3IEBACiAgICAgcmVxdWVzdHMtPm5leHQgPSByZXF1ZXN0OwogICAgIHJldHVybiByZXQ7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ORVRTTk1QX0NBTExfTkVYVF9IQU5ETEVSX09ORV9SRVFVRVNUICovCiAKIC8qKiBEZWFsbG9jYXRlcyByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gaGFuZGxlci4KICAqICBUaGUgaGFuZGxlciBpcyByZW1vdmVkIGZyb20gY2hhaW4gYW5kIHRoZW4gZnJlZWQuCkBAIC03MDQsMjcgKzcxMyw0MSBAQAogewogICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKmggPSBOVUxMOwogCi0gICAgaWYgKGhhbmRsZXIgPT0gTlVMTCkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgaWYgKCFoYW5kbGVyKQorICAgICAgICBnb3RvIGVycjsKIAogICAgIGggPSBfY2xvbmVfaGFuZGxlcihoYW5kbGVyKTsKKyAgICBpZiAoIWgpCisgICAgICAgIGdvdG8gZXJyOwogCi0gICAgaWYgKGggIT0gTlVMTCkgeworICAgIC8qCisgICAgICogUHJvdmlkaW5nIGEgY2xvbmUgZnVuY3Rpb24gd2l0aG91dCBhIGZyZWUgZnVuY3Rpb24gaXMgYXNraW5nIGZvcgorICAgICAqIG1lbW9yeSBsZWFrcywgYW5kIHByb3ZpZGluZyBhIGZyZWUgZnVuY3Rpb24gd2l0aG91dCBjbG9uZSBmdW5jdGlvbgorICAgICAqIGlzIGFza2luZyBmb3IgbWVtb3J5IGNvcnJ1cHRpb24uIEhlbmNlIHRoZSBsb2cgc3RhdGVtZW50IGJlbG93LgorICAgICAqLworICAgIGlmICghIWhhbmRsZXItPmRhdGFfY2xvbmUgIT0gISFoYW5kbGVyLT5kYXRhX2ZyZWUpCisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkYXRhX2Nsb25lIC8gZGF0YV9mcmVlIGluY29uc2lzdGVudCAoJXMpXG4iLAorICAgICAgICAgICAgICAgICBoYW5kbGVyLT5oYW5kbGVyX25hbWUpOworICAgIGlmIChoYW5kbGVyLT5teXZvaWQgJiYgaGFuZGxlci0+ZGF0YV9jbG9uZSkgeworICAgICAgICBoLT5teXZvaWQgPSBoYW5kbGVyLT5kYXRhX2Nsb25lKGhhbmRsZXItPm15dm9pZCk7CisgICAgICAgIGlmICghaC0+bXl2b2lkKQorICAgICAgICAgICAgZ290byBlcnI7CisgICAgfSBlbHNlCiAgICAgICAgIGgtPm15dm9pZCA9IGhhbmRsZXItPm15dm9pZDsKLSAgICAgICAgaC0+ZGF0YV9mcmVlID0gaGFuZGxlci0+ZGF0YV9mcmVlOworICAgIGgtPmRhdGFfY2xvbmUgPSBoYW5kbGVyLT5kYXRhX2Nsb25lOworICAgIGgtPmRhdGFfZnJlZSA9IGhhbmRsZXItPmRhdGFfZnJlZTsKIAotICAgICAgICBpZiAoaGFuZGxlci0+bmV4dCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBoLT5uZXh0ID0gbmV0c25tcF9oYW5kbGVyX2R1cChoYW5kbGVyLT5uZXh0KTsKLSAgICAgICAgICAgIGlmIChoLT5uZXh0ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfZnJlZShoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGgtPm5leHQtPnByZXYgPSBoOwotICAgICAgICB9Ci0gICAgICAgIGgtPnByZXYgPSBOVUxMOwotICAgICAgICByZXR1cm4gaDsKKyAgICBpZiAoaGFuZGxlci0+bmV4dCAhPSBOVUxMKSB7CisgICAgICAgIGgtPm5leHQgPSBuZXRzbm1wX2hhbmRsZXJfZHVwKGhhbmRsZXItPm5leHQpOworICAgICAgICBpZiAoIWgtPm5leHQpCisgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgaC0+bmV4dC0+cHJldiA9IGg7CiAgICAgfQorICAgIGgtPnByZXYgPSBOVUxMOworICAgIHJldHVybiBoOworCitlcnI6CisgICAgbmV0c25tcF9oYW5kbGVyX2ZyZWUoaCk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTg5NCw5ICs5MTcsMTAgQEAKIH0KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSEFORExFUl9NQVJLX1JFUVVFU1RTX0FTX0RFTEVHQVRFRAogLyoqIFNldHMgYSBsaXN0IG9mIHJlcXVlc3RzIGFzIGRlbGVnYXRlZCBvciBub3QgZGVsZWdhdGVkLgogICogIFN3ZWVwcyB0aHJvdWdoIGdpdmVuIGNoYWluIG9mIHJlcXVlc3RzIGFuZCBzZXRzICdkZWxlZ2F0ZWQnCi0gKiAgZmxhZyBhY2NvcmRpbmdseSB0byB0aGUgaXNkZWxlZ2F0ZWQgcGFyYW1ldGVyLgorICogIGZsYWcgYWNjb3JkaW5nbHkgdG8gdGhlIGlzZGVsZWdhZGVkIHBhcmFtZXRlci4KICAqCiAgKiAgQHBhcmFtIHJlcXVlc3RzIFJlcXVlc3QgbGlzdC4KICAqICBAcGFyYW0gaXNkZWxlZ2F0ZWQgTmV3IHZhbHVlIG9mIHRoZSAnZGVsZWdhdGVkJyBmbGFnLgpAQCAtOTEwLDYgKzkzNCw3IEBACiAgICAgICAgIHJlcXVlc3RzID0gcmVxdWVzdHMtPm5leHQ7CiAgICAgfQogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSEFORExFUl9NQVJLX1JFUVVFU1RTX0FTX0RFTEVHQVRFRCAqLwogCiAvKiogQWRkcyBkYXRhIGZyb20gbm9kZSBsaXN0IHRvIHRoZSByZXF1ZXN0IGluZm9ybWF0aW9uIHN0cnVjdHVyZS4KICAqICBEYXRhIGluIHRoZSByZXF1ZXN0IGNhbiBiZSBsYXRlciBleHRyYWN0ZWQgYW5kIHVzZWQgYnkgc3VibW9kdWxlcy4KQEAgLTEyNDcsNiArMTI3Miw3IEBACiAgICAgc2VfYWRkX3BhaXJfdG9fc2xpc3QoImFnZW50X21vZGUiLCBzdHJkdXAoIkdFVCIpLCBNT0RFX0dFVCk7CiAgICAgc2VfYWRkX3BhaXJfdG9fc2xpc3QoImFnZW50X21vZGUiLCBzdHJkdXAoIkdFVE5FWFQiKSwgTU9ERV9HRVRORVhUKTsKICAgICBzZV9hZGRfcGFpcl90b19zbGlzdCgiYWdlbnRfbW9kZSIsIHN0cmR1cCgiR0VUQlVMSyIpLCBNT0RFX0dFVEJVTEspOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBzZV9hZGRfcGFpcl90b19zbGlzdCgiYWdlbnRfbW9kZSIsIHN0cmR1cCgiU0VUX0JFR0lOIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgTU9ERV9TRVRfQkVHSU4pOwogICAgIHNlX2FkZF9wYWlyX3RvX3NsaXN0KCJhZ2VudF9tb2RlIiwgc3RyZHVwKCJTRVRfUkVTRVJWRTEiKSwKQEAgLTEyODcsNiArMTMxMyw3IEBACiAgICAgc2VfYWRkX3BhaXJfdG9fc2xpc3QoImJhYnlzdGVwX21vZGUiLCBzdHJkdXAoInBvc3RfcmVxdWVzdCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIE1PREVfQlNURVBfUE9TVF9SRVFVRVNUKTsKICAgICBzZV9hZGRfcGFpcl90b19zbGlzdCgiYmFieXN0ZXBfbW9kZSIsIHN0cmR1cCgib3JpZ2luYWwiKSwgMHhmZmZmKTsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIC8qCiAgICAgICogeHh4LXJrczogaG1tbS4uIHdpbGwgdGhpcyB3b3JrIGZvciBtb2RlcyB3aGljaCBhcmUgb3InZCB0b2dldGhlcj8KZGlmZiAtLWdpdCBhL2FnZW50L2FnZW50X2luZGV4LmMgYi9hZ2VudC9hZ2VudF9pbmRleC5jCmluZGV4IDRhODlmODkuLjAxMjkyMTcgMTAwNjQ0Ci0tLSBhL2FnZW50L2FnZW50X2luZGV4LmMKKysrIGIvYWdlbnQvYWdlbnRfaW5kZXguYwpAQCAtOCw2ICs4LDcgQEAKIAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxzaWduYWwuaD4KICNpZiBIQVZFX1NUUklOR19ICiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC00Nyw2ICs0OCwxMCBAQAogI2luY2x1ZGUgImFnZW50eC9jbGllbnQuaCIKICNlbmRpZgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoYWdlbnRfaW5kZXhfYWxsLCBsaWJuZXRzbm1wYWdlbnQpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZW1vdmVfaW5kZXgsIGFnZW50X2luZGV4X2FsbCkKKwogICAgICAgICAvKgogICAgICAgICAgKiBJbml0aWFsIHN1cHBvcnQgZm9yIGluZGV4IGFsbG9jYXRpb24KICAgICAgICAgICovCkBAIC00NTAsMTIgKzQ1NSwxNiBAQAogICAgICAgICAgKiBSZWxlYXNlIGFuIGFsbG9jYXRlZCBpbmRleCwKICAgICAgICAgICogICB0byBhbGxvdyBpdCB0byBiZSB1c2VkIGVsc2V3aGVyZQogICAgICAgICAgKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWxlYXNlX2luZGV4LG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFTEVBU0VfSU5ERVgKIGludAogcmVsZWFzZV9pbmRleChuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXJiaW5kKQogewogICAgIHJldHVybiAodW5yZWdpc3Rlcl9pbmRleCh2YXJiaW5kLCBUUlVFLCBOVUxMKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUxFQVNFX0lOREVYICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRU1PVkVfSU5ERVgKICAgICAgICAgLyoKICAgICAgICAgICogQ29tcGxldGVseSByZW1vdmUgYW4gYWxsb2NhdGVkIGluZGV4LAogICAgICAgICAgKiAgIGR1ZSB0byBlcnJvcnMgaW4gdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLgpAQCAtNDY1LDYgKzQ3NCw3IEBACiB7CiAgICAgcmV0dXJuICh1bnJlZ2lzdGVyX2luZGV4KHZhcmJpbmQsIEZBTFNFLCBzcykpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVNT1ZFX0lOREVYICovCiAKIHZvaWQKIHVucmVnaXN0ZXJfaW5kZXhfYnlfc2Vzc2lvbihuZXRzbm1wX3Nlc3Npb24gKiBzcykKQEAgLTU4OCw2ICs1OTgsOCBAQAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodW5yZWdpc3Rlcl9pbmRleGVzLG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VOUkVHSVNURVJfSU5ERVhFUwogaW50CiB1bnJlZ2lzdGVyX3N0cmluZ19pbmRleChvaWQgKiBuYW1lLCBzaXplX3QgbmFtZV9sZW4sIGNoYXIgKmNwKQogewpAQCAtNjI3LDYgKzYzOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2xlbiAqIHNpemVvZihvaWQpKTsKICAgICByZXR1cm4gKHVucmVnaXN0ZXJfaW5kZXgoJnZhcmJpbmQsIEZBTFNFLCBtYWluX3Nlc3Npb24pKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VOUkVHSVNURVJfSU5ERVhFUyAqLwogCiB2b2lkCiBkdW1wX2lkeF9yZWdpc3RyeSh2b2lkKQpAQCAtNjkyLDYgKzcwNSw4IEBACiAgICAgfQogfQogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY291bnRfaW5kZXhlcywgbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVU5VU0VECiB1bnNpZ25lZCBsb25nCiBjb3VudF9pbmRleGVzKG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lbGVuLCBpbnQgaW5jbHVkZV91bmFsbG9jYXRlZCkKIHsKQEAgLTcxMSw3ICs3MjYsNyBAQAogICAgIH0KICAgICByZXR1cm4gbjsKIH0KLQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVU5VU0VEICovCiAKICNpZmRlZiBURVNUSU5HCiBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgdmFyYmluZDsKZGlmZiAtLWdpdCBhL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmMgYi9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jCmluZGV4IDYxZDY2NjcuLmY5ZWYxYWYgMTAwNjQ0Ci0tLSBhL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmMKKysrIGIvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYwpAQCAtMyw2ICszLDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2lmIEhBVkVfU1lTX1BBUkFNX0gKICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KQEAgLTEwNiwxNyArMTA3LDE4IEBACiAjaW5jbHVkZSAiYWdlbnRfbW9kdWxlX2luY2x1ZGVzLmgiCiAjaW5jbHVkZSAibWliX21vZHVsZV9pbmNsdWRlcy5oIgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoYWdlbnRfcmVhZF9jb25maWdfYWxsLCBsaWJuZXRzbm1wYWdlbnQpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzbm1wZF91bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyLCBhZ2VudF9yZWFkX2NvbmZpZ19hbGwpCisKICNpZmRlZiBIQVZFX1VOSVNURF9ICiB2b2lkCiBzbm1wZF9zZXRfYWdlbnRfdXNlcihjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKIHsKLSNpZiBkZWZpbmVkKEhBVkVfR0VUUFdOQU0pICYmIGRlZmluZWQoSEFWRV9QV0RfSCkKLSAgICBzdHJ1Y3QgcGFzc3dkICAqaW5mbzsKLSNlbmRpZgotCiAgICAgaWYgKGNwdHJbMF0gPT0gJyMnKSB7CiAgICAgICAgIGNoYXIgICAgICAgICAgICplY3A7CiAgICAgICAgIGludCAgICAgICAgICAgICB1aWQ7CisKICAgICAgICAgdWlkID0gc3RydG91bChjcHRyICsgMSwgJmVjcCwgMTApOwogICAgICAgICBpZiAoKmVjcCAhPSAwKSB7CiAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJCYWQgbnVtYmVyIik7CkBAIC0xMjQsNDcgKzEyNiw1MSBAQAogCSAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCiAJCQkgICAgICAgTkVUU05NUF9EU19BR0VOVF9VU0VSSUQsIHVpZCk7CiAJfQotICAgIH0KICNpZiBkZWZpbmVkKEhBVkVfR0VUUFdOQU0pICYmIGRlZmluZWQoSEFWRV9QV0RfSCkKLSAgICBlbHNlIGlmICgoaW5mbyA9IGdldHB3bmFtKGNwdHIpKSAhPSBOVUxMKSB7Ci0gICAgICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKLQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfVVNFUklELCBpbmZvLT5wd191aWQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGNvbmZpZ19wZXJyb3IoIlVzZXIgbm90IGZvdW5kIGluIHBhc3N3ZCBkYXRhYmFzZSIpOwotICAgIH0KLSAgICBlbmRwd2VudCgpOworICAgICAgICBzdHJ1Y3QgcGFzc3dkICAqaW5mbzsKKworICAgICAgICBpbmZvID0gZ2V0cHduYW0oY3B0cik7CisgICAgICAgIGlmIChpbmZvKQorICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfVVNFUklELCBpbmZvLT5wd191aWQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25maWdfcGVycm9yKCJVc2VyIG5vdCBmb3VuZCBpbiBwYXNzd2QgZGF0YWJhc2UiKTsKKyAgICAgICAgZW5kcHdlbnQoKTsKICNlbmRpZgorICAgIH0KIH0KIAogdm9pZAogc25tcGRfc2V0X2FnZW50X2dyb3VwKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQogewotI2lmIGRlZmluZWQoSEFWRV9HRVRHUk5BTSkgJiYgZGVmaW5lZChIQVZFX0dSUF9IKQotICAgIHN0cnVjdCBncm91cCAgICppbmZvOwotI2VuZGlmCi0KICAgICBpZiAoY3B0clswXSA9PSAnIycpIHsKICAgICAgICAgY2hhciAgICAgICAgICAgKmVjcDsKICAgICAgICAgaW50ICAgICAgICAgICAgIGdpZCA9IHN0cnRvdWwoY3B0ciArIDEsICZlY3AsIDEwKTsKKwogICAgICAgICBpZiAoKmVjcCAhPSAwKSB7CiAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJCYWQgbnVtYmVyIik7CiAJfSBlbHNlIHsKICAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKIAkJCSAgICAgICBORVRTTk1QX0RTX0FHRU5UX0dST1VQSUQsIGdpZCk7CiAJfQotICAgIH0KICNpZiBkZWZpbmVkKEhBVkVfR0VUR1JOQU0pICYmIGRlZmluZWQoSEFWRV9HUlBfSCkKLSAgICBlbHNlIGlmICgoaW5mbyA9IGdldGdybmFtKGNwdHIpKSAhPSBOVUxMKSB7Ci0gICAgICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKLQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfR1JPVVBJRCwgaW5mby0+Z3JfZ2lkKTsKICAgICB9IGVsc2UgewotICAgICAgICBjb25maWdfcGVycm9yKCJHcm91cCBub3QgZm91bmQgaW4gZ3JvdXAgZGF0YWJhc2UiKTsKLSAgICB9Ci0gICAgZW5kcHdlbnQoKTsKKyAgICAgICAgc3RydWN0IGdyb3VwICAgKmluZm87CisKKyAgICAgICAgaW5mbyA9IGdldGdybmFtKGNwdHIpOworICAgICAgICBpZiAoaW5mbykKKyAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX0dST1VQSUQsIGluZm8tPmdyX2dpZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIkdyb3VwIG5vdCBmb3VuZCBpbiBncm91cCBkYXRhYmFzZSIpOworICAgICAgICBlbmRncmVudCgpOwogI2VuZGlmCisgICAgfQogfQogI2VuZGlmCiAKKyNpZm5kZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAogdm9pZAogc25tcGRfc2V0X2FnZW50X2FkZHJlc3MoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmNwdHIpCiB7CkBAIC0xOTEsNiArMTk3LDcgQEAKICAgICBuZXRzbm1wX2RzX3NldF9zdHJpbmcoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCiAJCQkgIE5FVFNOTVBfRFNfQUdFTlRfUE9SVFMsIGJ1Zik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLwogCiB2b2lkCiBpbml0X2FnZW50X3JlYWRfY29uZmlnKGNvbnN0IGNoYXIgKmFwcCkKQEAgLTI0OCw5ICsyNTUsMTEgQEAKICAgICByZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIoImFnZW50Z3JvdXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wZF9zZXRfYWdlbnRfZ3JvdXAsIE5VTEwsICJncm91cGlkIik7CiAjZW5kaWYKKyNpZm5kZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAogICAgIHJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcigiYWdlbnRhZGRyZXNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcGRfc2V0X2FnZW50X2FkZHJlc3MsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTTk1QIGJpbmQgYWRkcmVzcyIpOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KICAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fQk9PTEVBTiwgYXBwLCAicXVpdCIsIAogCQkJICAgICAgIE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCiAJCQkgICAgICAgTkVUU05NUF9EU19BR0VOVF9RVUlUX0lNTUVESUFURUxZKTsKQEAgLTMwNiwxMSArMzE1LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VyLCBoZWxwKTsKIH0KIAorI2lmZGVmIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX1NOTVBEX1VOUkVHSVNURVJfQ09ORklHX0hBTkRMRVIKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHVucmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyKQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX1NOTVBEX1VOUkVHSVNURVJfQ09ORklHX0hBTkRMRVIgKi8KKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBEX1VOUkVHSVNURVJfQ09ORklHX0hBTkRMRVIKIHZvaWQKIHNubXBkX3VucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoY29uc3QgY2hhciAqdG9rZW4pCiB7CiAgICAgdW5yZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIodG9rZW4pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUERfVU5SRUdJU1RFUl9DT05GSUdfSEFORExFUiAqLwogCiAvKgogICogdGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIGJ5IG1pYi1tb2R1bGVzIHRvIHN0b3JlIHBlcm1lbmFudApkaWZmIC0tZ2l0IGEvYWdlbnQvYWdlbnRfcmVnaXN0cnkuYyBiL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmMKaW5kZXggZGJhYTQ4Yy4uMGRkNmM0MiAxMDA2NDQKLS0tIGEvYWdlbnQvYWdlbnRfcmVnaXN0cnkuYworKysgYi9hZ2VudC9hZ2VudF9yZWdpc3RyeS5jCkBAIC0yMiw2ICsyMiw4IEBACiAjZGVmaW5lIElOX1NOTVBfVkFSU19DCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorCiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtNjQsNiArNjYsMTAgQEAKICNpbmNsdWRlICJhZ2VudHgvY2xpZW50LmgiCiAjZW5kaWYKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGFnZW50X3JlZ2lzdHJ5X2FsbCwgbGlibmV0c25tcGFnZW50KQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodW5yZWdpc3Rlcl9taWJfdGFibGVfcm93LCBhZ2VudF9yZWdpc3RyeV9hbGwpCisKIC8qKiBAZGVmZ3JvdXAgYWdlbnRfbG9va3VwX2NhY2hlIExvb2t1cCBjYWNoZSwgc3RvcmluZyB0aGUgcmVnaXN0ZXJlZCBPSURzLgogICogICAgIE1haW50YWluIHRoZSBjYWNoZSB1c2VkIGZvciBsb2NhdGluZyBzdWItdHJlZXMgYW5kIE9JRHMuCiAgKiAgIEBpbmdyb3VwIGFnZW50X3JlZ2lzdHJ5CkBAIC0yMTMsNyArMjE5LDcgQEAKICAqICBAc2VlIHNubXBfb2lkX2NvbXBhcmUoKQogICovCiBORVRTTk1QX1NUQVRJQ19JTkxJTkUgbG9va3VwX2NhY2hlICoKLWxvb2t1cF9jYWNoZV9maW5kKGNvbnN0IGNoYXIgKmNvbnRleHQsIG9pZCAqbmFtZSwgc2l6ZV90IG5hbWVfbGVuLAorbG9va3VwX2NhY2hlX2ZpbmQoY29uc3QgY2hhciAqY29udGV4dCwgY29uc3Qgb2lkICpuYW1lLCBzaXplX3QgbmFtZV9sZW4sCiAgICAgICAgICAgICAgICAgICBpbnQgKnJldGNtcCkgewogICAgIGxvb2t1cF9jYWNoZV9jb250ZXh0ICpjcHRyOwogICAgIGxvb2t1cF9jYWNoZSAqcmV0ID0gTlVMTDsKQEAgLTU0OCw2ICs1NTQsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwdHItPm9pZF9vZmYpOwogfQogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobmV0c25tcF9zdWJ0cmVlX2NvbXBhcmUsbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTkVUU05NUF9TVUJUUkVFX0NPTVBBUkUKIC8qKiBDb21wYXJlcyBPSURzIG9mIGdpdmVuIHN1YnRyZWVzLgogICoKICAqICBAcGFyYW0gYXAsYnAgUG9pbnRlcnMgdG8gdGhlIHN1YnRyZWVzIHRvIGJlIGNvbXBhcmVkLgpAQCAtNTYxLDYgKzU2OSw3IEBACiB7CiAgICAgcmV0dXJuIHNubXBfb2lkX2NvbXBhcmUoYXAtPm5hbWVfYSwgYXAtPm5hbWVsZW4sIGJwLT5uYW1lX2EsIGJwLT5uYW1lbGVuKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX05FVFNOTVBfU1VCVFJFRV9DT01QQVJFICovCiAKIC8qKiBKb2lucyB0aGUgZ2l2ZW4gc3VidHJlZSB3aXRoIHRoZSBjdXJyZW50IHRyZWUuCiAgKiAgVHJlZXMgYXJlIGpvaW5lZCBhbmQgdGhlIG9uZSBzdXBwbGllZCBhcyBwYXJhbWV0ZXIgaXMgZnJlZWQuCkBAIC03NDEsOSArNzUwLDggQEAKIGludAogbmV0c25tcF9zdWJ0cmVlX2xvYWQobmV0c25tcF9zdWJ0cmVlICpuZXdfc3ViLCBjb25zdCBjaGFyICpjb250ZXh0X25hbWUpCiB7Ci0gICAgbmV0c25tcF9zdWJ0cmVlICp0cmVlMSwgKnRyZWUyLCAqbmV3MjsKKyAgICBuZXRzbm1wX3N1YnRyZWUgKnRyZWUxLCAqdHJlZTI7CiAgICAgbmV0c25tcF9zdWJ0cmVlICpwcmV2LCAqbmV4dDsKLSAgICBpbnQgICAgICAgICAgICAgcmVzLCByYyA9IDA7CiAKICAgICBpZiAobmV3X3N1YiA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBNSUJfUkVHSVNURVJFRF9PSzsgICAgICAgLyogRGVnZW5lcmF0ZSBjYXNlICovCkBAIC03ODUsNyArNzkzLDcgQEAKICAgICAvKiAgSGFuZGxlIG5ldyBzdWJ0cmVlcyB0aGF0IHN0YXJ0IGluIHZpcmdpbiB0ZXJyaXRvcnkuICAqLwogCiAgICAgaWYgKHRyZWUxID09IE5VTEwpIHsKLQluZXcyID0gTlVMTDsKKyAgICAgICAgbmV0c25tcF9zdWJ0cmVlICpuZXcyID0gTlVMTDsKIAkvKiAgSXMgdGhlcmUgYW55IG92ZXJsYXAgd2l0aCBsYXRlciBzdWJ0cmVlcz8gICovCiAJaWYgKHRyZWUyICYmIHNubXBfb2lkX2NvbXBhcmUobmV3X3N1Yi0+ZW5kX2EsIG5ld19zdWItPmVuZF9sZW4sCiAJCQkJICAgICAgdHJlZTItPnN0YXJ0X2EsIHRyZWUyLT5zdGFydF9sZW4pID4gMCkgewpAQCAtODQ0LDEwICs4NTIsOCBAQAogCSAgICBJZiB0aGUgbmV3IHN1YnRyZWUgZXh0ZW5kcyBiZXlvbmQgdGhpcyBleGlzdGluZyByZWdpb24sCiAJICAgICAgICAgICAgc3BsaXQgaXQsIGFuZCByZWN1cnNlIHRvIG1lcmdlIHRoZSB0d28gcGFydHMuICAqLwogCi0JcmMgPSBzbm1wX29pZF9jb21wYXJlKG5ld19zdWItPmVuZF9hLCBuZXdfc3ViLT5lbmRfbGVuLCAKLQkJCSAgICAgIHRyZWUxLT5lbmRfYSwgdHJlZTEtPmVuZF9sZW4pOwotCi0gICAgICAgIHN3aXRjaCAocmMpIHsKKwlzd2l0Y2ggKHNubXBfb2lkX2NvbXBhcmUobmV3X3N1Yi0+ZW5kX2EsIG5ld19zdWItPmVuZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmVlMS0+ZW5kX2EsIHRyZWUxLT5lbmRfbGVuKSkgewogCiAJY2FzZSAtMToKIAkgICAgLyogIEV4aXN0aW5nIHN1YnRyZWUgY29udGFpbnMgbmV3IG9uZS4gICovCkBAIC05MTgsMTUgKzkyNCwxOCBAQAogCiAJY2FzZSAgMToKIAkgICAgLyogIE5ldyBzdWJ0cmVlIGNvbnRhaW5zIHRoZSBleGlzdGluZyBvbmUuICAqLwotCSAgICBuZXcyID0gbmV0c25tcF9zdWJ0cmVlX3NwbGl0KG5ld19zdWIsIHRyZWUxLT5lbmRfYSx0cmVlMS0+ZW5kX2xlbik7Ci0JICAgIHJlcyA9IG5ldHNubXBfc3VidHJlZV9sb2FkKG5ld19zdWIsIGNvbnRleHRfbmFtZSk7Ci0JICAgIGlmIChyZXMgIT0gTUlCX1JFR0lTVEVSRURfT0spIHsKLSAgICAgICAgICAgICAgICBuZXRzbm1wX3JlbW92ZV9zdWJ0cmVlKG5ldzIpOwotCQluZXRzbm1wX3N1YnRyZWVfZnJlZShuZXcyKTsKLQkJcmV0dXJuIHJlczsKLQkgICAgfQotCSAgICByZXR1cm4gbmV0c25tcF9zdWJ0cmVlX2xvYWQobmV3MiwgY29udGV4dF9uYW1lKTsKLQl9CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbmV0c25tcF9zdWJ0cmVlICpuZXcyID0KKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zdWJ0cmVlX3NwbGl0KG5ld19zdWIsIHRyZWUxLT5lbmRfYSx0cmVlMS0+ZW5kX2xlbik7CisgICAgICAgICAgICAgICAgaW50IHJlcyA9IG5ldHNubXBfc3VidHJlZV9sb2FkKG5ld19zdWIsIGNvbnRleHRfbmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSBNSUJfUkVHSVNURVJFRF9PSykgeworICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlbW92ZV9zdWJ0cmVlKG5ldzIpOworICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3N1YnRyZWVfZnJlZShuZXcyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldHNubXBfc3VidHJlZV9sb2FkKG5ldzIsIGNvbnRleHRfbmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CkBAIC05NTQsNyArOTYzLDcgQEAKIH0KIAogbmV0c25tcF9zdWJ0cmVlICoKLW5ldHNubXBfc3VidHJlZV9maW5kX3ByZXYob2lkICpuYW1lLCBzaXplX3QgbGVuLCBuZXRzbm1wX3N1YnRyZWUgKnN1YnRyZWUsCituZXRzbm1wX3N1YnRyZWVfZmluZF9wcmV2KGNvbnN0IG9pZCAqbmFtZSwgc2l6ZV90IGxlbiwgbmV0c25tcF9zdWJ0cmVlICpzdWJ0cmVlLAogCQkJICBjb25zdCBjaGFyICpjb250ZXh0X25hbWUpCiB7CiAgICAgbG9va3VwX2NhY2hlICpsb29rdXBfY2FjaGUgPSBOVUxMOwpAQCAtMTAyNSw3ICsxMDM0LDcgQEAKIH0KIAogbmV0c25tcF9zdWJ0cmVlICoKLW5ldHNubXBfc3VidHJlZV9maW5kX25leHQob2lkICpuYW1lLCBzaXplX3QgbGVuLAorbmV0c25tcF9zdWJ0cmVlX2ZpbmRfbmV4dChjb25zdCBvaWQgKm5hbWUsIHNpemVfdCBsZW4sCiAJCQkgIG5ldHNubXBfc3VidHJlZSAqc3VidHJlZSwgY29uc3QgY2hhciAqY29udGV4dF9uYW1lKQogewogICAgIG5ldHNubXBfc3VidHJlZSAqbXlwdHIgPSBOVUxMOwpAQCAtMTA0OCw3ICsxMDU3LDcgQEAKIH0KIAogbmV0c25tcF9zdWJ0cmVlICoKLW5ldHNubXBfc3VidHJlZV9maW5kKG9pZCAqbmFtZSwgc2l6ZV90IGxlbiwgbmV0c25tcF9zdWJ0cmVlICpzdWJ0cmVlLCAKK25ldHNubXBfc3VidHJlZV9maW5kKGNvbnN0IG9pZCAqbmFtZSwgc2l6ZV90IGxlbiwgbmV0c25tcF9zdWJ0cmVlICpzdWJ0cmVlLCAKIAkJICAgICBjb25zdCBjaGFyICpjb250ZXh0X25hbWUpCiB7CiAgICAgbmV0c25tcF9zdWJ0cmVlICpteXB0cjsKQEAgLTExMTYsNyArMTEyNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICBpbnQgcGVyZm9ybV9jYWxsYmFjaykKIHsKICAgICBuZXRzbm1wX3N1YnRyZWUgKnN1YnRyZWUsICpzdWIyOwotICAgIGludCAgICAgICAgICAgICByZXMsIGk7CisgICAgaW50ICAgICAgICAgICAgIHJlczsKICAgICBzdHJ1Y3QgcmVnaXN0ZXJfcGFyYW1ldGVycyByZWdfcGFybXM7CiAgICAgaW50IG9sZF9sb29rdXBfY2FjaGVfdmFsID0gbmV0c25tcF9nZXRfbG9va3VwX2NhY2hlX3NpemUoKTsKIApAQCAtMTE5Nyw2ICsxMjA2LDcgQEAKIAlyZXN0IG9mIHRoZSByYW5nZS4gICovCiAKICAgICBpZiAocmVzID09IE1JQl9SRUdJU1RFUkVEX09LICYmIHJhbmdlX3N1YmlkICE9IDApIHsKKyAgICAgICAgaW50IGk7CiAJZm9yIChpID0gbWlibG9jW3JhbmdlX3N1YmlkIC0gMV0gKyAxOyBpIDw9IChpbnQpcmFuZ2VfdWJvdW5kOyBpKyspIHsKIAkgICAgc3ViMiA9IG5ldHNubXBfc3VidHJlZV9kZWVwY29weShzdWJ0cmVlKTsKIApAQCAtMTM5Miw3ICsxNDAyLDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgSWYgcmFuZ2Vfc3ViaWQgaXMgemVybywgdGhlbiB0aGlzIHBhcmFtZXRlciBpcyBpZ25vcmVkLgogICoKICAqICBAcGFyYW0gc3MgCi0gKiAgQHBhcmFtIGNvbnRleHQgCisgKiAgQHBhcmFtIGNvbnRleHQKICAqICBAcGFyYW0gdGltZW91dCAKICAqICBAcGFyYW0gZmxhZ3MgCiAgKgpAQCAtMTQwNSwxMCArMTQxNSwxMCBAQAogICovCiBpbnQKIHJlZ2lzdGVyX21pYl9jb250ZXh0KGNvbnN0IGNoYXIgKm1vZHVsZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmFyaWFibGUgKnZhciwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB2YXJpYWJsZSAqdmFyLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHZhcnNpemUsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtdmFycywKLSAgICAgICAgICAgICAgICAgICAgIG9pZCAqIG1pYmxvYywKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG1pYmxvYywKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtaWJsb2NsZW4sCiAgICAgICAgICAgICAgICAgICAgICBpbnQgcHJpb3JpdHksCiAgICAgICAgICAgICAgICAgICAgICBpbnQgcmFuZ2Vfc3ViaWQsCkBAIC0xNDcwLDEwICsxNDgwLDEwIEBACiAgKi8KIGludAogcmVnaXN0ZXJfbWliX3JhbmdlKGNvbnN0IGNoYXIgKm1vZHVsZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgc3RydWN0IHZhcmlhYmxlICp2YXIsCisgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHZhcmlhYmxlICp2YXIsCiAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHZhcnNpemUsCiAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bXZhcnMsCi0gICAgICAgICAgICAgICAgICAgb2lkICogbWlibG9jLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG1pYmxvYywKICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWlibG9jbGVuLAogICAgICAgICAgICAgICAgICAgIGludCBwcmlvcml0eSwKICAgICAgICAgICAgICAgICAgICBpbnQgcmFuZ2Vfc3ViaWQsIG9pZCByYW5nZV91Ym91bmQsIG5ldHNubXBfc2Vzc2lvbiAqIHNzKQpAQCAtMTUxOSwxMCArMTUyOSwxMCBAQAogICovCiBpbnQKIHJlZ2lzdGVyX21pYl9wcmlvcml0eShjb25zdCBjaGFyICptb2R1bGVOYW1lLAotICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2YXJpYWJsZSAqdmFyLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB2YXJpYWJsZSAqdmFyLAogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB2YXJzaXplLAogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW12YXJzLAotICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIG1pYmxvYywgc2l6ZV90IG1pYmxvY2xlbiwgaW50IHByaW9yaXR5KQorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG1pYmxvYywgc2l6ZV90IG1pYmxvY2xlbiwgaW50IHByaW9yaXR5KQogewogICAgIHJldHVybiByZWdpc3Rlcl9taWJfcmFuZ2UobW9kdWxlTmFtZSwgdmFyLCB2YXJzaXplLCBudW12YXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlibG9jLCBtaWJsb2NsZW4sIHByaW9yaXR5LCAwLCAwLCBOVUxMKTsKQEAgLTE1NTksOSArMTU2OSw5IEBACiAgKi8KIGludAogcmVnaXN0ZXJfbWliKGNvbnN0IGNoYXIgKm1vZHVsZU5hbWUsCi0gICAgICAgICAgICAgc3RydWN0IHZhcmlhYmxlICp2YXIsCisgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHZhcmlhYmxlICp2YXIsCiAgICAgICAgICAgICAgc2l6ZV90IHZhcnNpemUsCi0gICAgICAgICAgICAgc2l6ZV90IG51bXZhcnMsIG9pZCAqIG1pYmxvYywgc2l6ZV90IG1pYmxvY2xlbikKKyAgICAgICAgICAgICBzaXplX3QgbnVtdmFycywgY29uc3Qgb2lkICogbWlibG9jLCBzaXplX3QgbWlibG9jbGVuKQogewogICAgIHJldHVybiByZWdpc3Rlcl9taWJfcHJpb3JpdHkobW9kdWxlTmFtZSwgdmFyLCB2YXJzaXplLCBudW12YXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlibG9jLCBtaWJsb2NsZW4sIERFRkFVTFRfTUlCX1BSSU9SSVRZKTsKQEAgLTE3NjMsNiArMTc3Myw3IEBACiAgICAgcmV0dXJuIE1JQl9VTlJFR0lTVEVSRURfT0s7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VTlJFR0lTVEVSX01JQl9UQUJMRV9ST1cKIGludAogbmV0c25tcF91bnJlZ2lzdGVyX21pYl90YWJsZV9yb3cob2lkICogbmFtZSwgc2l6ZV90IGxlbiwgaW50IHByaW9yaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhcl9zdWJpZCwgb2lkIHJhbmdlX3Vib3VuZCwKQEAgLTE4NDEsNiArMTg1Miw3IEBACiAKICAgICByZXR1cm4gMDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VOUkVHSVNURVJfTUlCX1RBQkxFX1JPVyAqLwogCiAvKioKICAqIFVucmVnaXN0ZXJzIGEgbW9kdWxlIHJlZ2lzdGVyZWQgYWdhaW5zdCBhIGdpdmVuIE9JRCAob3IgcmFuZ2UpIGluIHRoZSBkZWZhdWx0IGNvbnRleHQuIApAQCAtMjEzOSw5ICsyMTUxLDEwIEBACiAgICAgcmV0dXJuIDE7CiB9CiAKLQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGdldF9zZXNzaW9uX2Zvcl9vaWQsbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfR0VUX1NFU1NJT05fRk9SX09JRAogbmV0c25tcF9zZXNzaW9uICoKLWdldF9zZXNzaW9uX2Zvcl9vaWQob2lkICpuYW1lLCBzaXplX3QgbGVuLCBjb25zdCBjaGFyICpjb250ZXh0X25hbWUpCitnZXRfc2Vzc2lvbl9mb3Jfb2lkKGNvbnN0IG9pZCAqbmFtZSwgc2l6ZV90IGxlbiwgY29uc3QgY2hhciAqY29udGV4dF9uYW1lKQogewogICAgIG5ldHNubXBfc3VidHJlZSAqbXlwdHI7CiAKQEAgLTIxNTksNiArMjE3Miw3IEBACiAgICAgICAgIHJldHVybiBteXB0ci0+c2Vzc2lvbjsKICAgICB9CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9HRVRfU0VTU0lPTl9GT1JfT0lEICovCiAKIHZvaWQKIHNldHVwX3RyZWUodm9pZCkKQEAgLTIyOTQsMTUgKzIzMDgsOSBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHMgIT0gTlVMTCkgewotICAgICAgICBTTk1QX0ZSRUUocyk7Ci0gICAgfQotICAgIGlmIChlICE9IE5VTEwpIHsKLSAgICAgICAgU05NUF9GUkVFKGUpOwotICAgIH0KLSAgICBpZiAodiAhPSBOVUxMKSB7Ci0gICAgICAgIFNOTVBfRlJFRSh2KTsKLSAgICB9CisgICAgU05NUF9GUkVFKHMpOworICAgIFNOTVBfRlJFRShlKTsKKyAgICBTTk1QX0ZSRUUodik7CiAKICAgICBkdW1wX2lkeF9yZWdpc3RyeSgpOwogfQpAQCAtMjMxMSw2ICsyMzE5LDkgQEAKIC8qIEVuZCBvZiBNSUIgcmVnaXN0cmF0aW9uIGNvZGUgKi8KIAogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVnaXN0ZXJfc2lnbmFsLCBuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9TSUdOQUwKKwogLyoqIEBkZWZncm91cCBhZ2VudF9zaWduYWxzIFBPU0lYIHNpZ25hbHMgc3VwcG9ydCBmb3IgYWdlbnRzLgogICogICAgIFJlZ2lzdGVyaW5nIGFuZCB1bnJlZ2lzdGVyaW5nIHNpZ25hbCBoYW5kbGVycy4KICAqICAgQGluZ3JvdXAgYWdlbnRfcmVnaXN0cnkKQEAgLTI0MDgsNSArMjQxOSw3IEBACiAvKiogIEB9ICovCiAvKiBFbmQgb2Ygc2lnbmFscyBzdXBwb3J0IGNvZGUgKi8KIAorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfU0lHTkFMICovCisKIC8qKiAgQH0gKi8KIApkaWZmIC0tZ2l0IGEvYWdlbnQvYWdlbnRfdHJhcC5jIGIvYWdlbnQvYWdlbnRfdHJhcC5jCmluZGV4IGY1ZGJjY2EuLjA4MGI4YmYgMTAwNjQ0Ci0tLSBhL2FnZW50L2FnZW50X3RyYXAuYworKysgYi9hZ2VudC9hZ2VudF90cmFwLmMKQEAgLTE4LDYgKzE4LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2lmIEhBVkVfVU5JU1REX0gKICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTY0LDYgKzY1LDE0IEBACiAjaW5jbHVkZSAiYWdlbnR4L3Byb3RvY29sLmgiCiAjZW5kaWYKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGFnZW50X3RyYXBfYWxsLCBsaWJuZXRzbm1wYWdlbnQpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0cmFwX3ZhcnNfd2l0aF9jb250ZXh0LCBhZ2VudF90cmFwX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZW1vdmVfdHJhcF9zZXNzaW9uLCBhZ2VudF90cmFwX2FsbCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNlbmRfdjN0cmFwLG5ldHNubXBfdW51c2VkKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNlbmRfdHJhcF9wZHUsbmV0c25tcF91bnVzZWQpCisKIHN0cnVjdCB0cmFwX3NpbmsgewogICAgIG5ldHNubXBfc2Vzc2lvbiAqc2VzcDsKICAgICBzdHJ1Y3QgdHJhcF9zaW5rICpuZXh0OwpAQCAtMTc1LDYgKzE4NCw3IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRU1PVkVfVFJBUF9TRVNTSU9OCiBpbnQKIHJlbW92ZV90cmFwX3Nlc3Npb24obmV0c25tcF9zZXNzaW9uICogc3MpCiB7CkBAIC0yMDcsNiArMjE3LDcgQEAKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRU1PVkVfVFJBUF9TRVNTSU9OICovCiAKICNpZiAhZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU05NUFYxKSB8fCAhZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU05NUFYyQykKIHN0YXRpYyBpbnQKQEAgLTg5Myw4ICs5MDQsNiBAQAogewogICAgIG5ldHNubXBfcGR1ICAgICpwZHU7CiAgICAgaW50ICAgICAgICAgICAgcmVzdWx0OwotICAgIGludCAgICAgICAgICAgIGxlbjsKLQogCiAgICAgaWYgKCFzZXNzIHx8ICF0ZW1wbGF0ZV9wZHUpCiAgICAgICAgIHJldHVybjsKQEAgLTkyOCw3ICs5MzcsNyBAQAogICAgICAgICAgICAgICAgIChzZXNzLT5zZWN1cml0eUVuZ2luZUlETGVuID09IDApKSB7CiAgICAgICAgICAgICB1X2NoYXIgICAgICAgICAgdG1wW1NQUklOVF9NQVhfTEVOXTsKIAotICAgICAgICAgICAgbGVuID0gc25tcHYzX2dldF9lbmdpbmVJRCh0bXAsIHNpemVvZih0bXApKTsKKyAgICAgICAgICAgIGludCBsZW4gPSBzbm1wdjNfZ2V0X2VuZ2luZUlEKHRtcCwgc2l6ZW9mKHRtcCkpOwogICAgICAgICAgICAgcGR1LT5zZWN1cml0eUVuZ2luZUlEID0gbmV0c25tcF9tZW1kdXAodG1wLCBsZW4pOwogICAgICAgICAgICAgcGR1LT5zZWN1cml0eUVuZ2luZUlETGVuID0gbGVuOwogICAgICAgICB9CkBAIC05NTYsNiArOTY1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPSURfTEVOR1RIKHRyYXBfdmVyc2lvbl9pZCksIHZhcnMpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVFJBUF9WQVJTX1dJVEhfQ09OVEVYVAogLyogU2VuZCBhIHRyYXAgdW5kZXIgYSBjb250ZXh0ICovCiB2b2lkIHNlbmRfdHJhcF92YXJzX3dpdGhfY29udGV4dChpbnQgdHJhcCwgaW50IHNwZWNpZmljLCAKICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzLCBjb25zdCBjaGFyICpjb250ZXh0KQpAQCAtOTcwLDYgKzk4MCw3IEBACiAJCQkJCQkJCSAgY29udGV4dCwgMCk7CiAgICAgCQogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVFJBUF9WQVJTX1dJVEhfQ09OVEVYVCAqLwogCiAvKioKICAqIFNlbmRzIGFuIFNOTVB2MSB0cmFwIChvciB0aGUgU05NUHYyIGVxdWl2YWxlbnQpIHRvIHRoZSBsaXN0IG9mICAKQEAgLTEwNDEsMTggKzEwNTIsMjIgQEAKICAqCiAgKiBAc2VlIHNlbmRfdjJ0cmFwCiAgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TRU5EX1YzVFJBUAogdm9pZCBzZW5kX3YzdHJhcChuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcnMsIGNvbnN0IGNoYXIgKmNvbnRleHQpCiB7CiAgICAgbmV0c25tcF9zZW5kX3RyYXBzKC0xLCAtMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIHRyYXBfdmVyc2lvbl9pZCwgT0lEX0xFTkdUSCh0cmFwX3ZlcnNpb25faWQpLAogICAgICAgICAgICAgICAgICAgICAgICB2YXJzLCBjb250ZXh0LCAwKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NFTkRfVjNUUkFQICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TRU5EX1RSQVBfUERVCiB2b2lkCiBzZW5kX3RyYXBfcGR1KG5ldHNubXBfcGR1ICpwZHUpCiB7CiAgICAgc2VuZF90cmFwX3ZhcnMoLTEsIC0xLCBwZHUtPnZhcmlhYmxlcyk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TRU5EX1RSQVBfUERVICovCiAKIAogCmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCBiL2FnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kCmluZGV4IDgzZmJkMjcuLmM2NTEyOWIgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kCisrKyBiL2FnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kCkBAIC01LDYgKzUsNyBAQAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMjQsMTEgKzI1LDggQEAKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC03Myw2ICs3MSw3IEBACiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTExMyw2ICsxMTIsNyBAQAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oCiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xMzIsMTEgKzEzMiw4IEBACiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTgwLDYgKzE3Nyw3IEBACiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMjM4LDExICsyMzYsOCBAQAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTI1Miw2ICsyNDcsNyBAQAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjg2LDYgKzI4Miw3IEBACiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0zMjUsNiArMzIyLDcgQEAKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMzQ0LDExICszNDIsOCBAQAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTM5Miw2ICszODcsNyBAQAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTQ1MCwxMSArNDQ2LDggQEAKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC00NjQsNiArNDU3LDcgQEAKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC00OTgsNiArNDkyLDcgQEAKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC01MzcsNiArNTMyLDcgQEAKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTU1NiwxMSArNTUyLDggQEAKIC4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC02MDQsNiArNTk3LDcgQEAKIC4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNjQzLDYgKzYzNyw3IEBACiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC02NjIsMTEgKzY1Nyw4IEBACiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtNzEwLDYgKzcwMiw3IEBACiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNzY4LDExICs3NjEsOCBAQAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTc4Miw2ICs3NzIsNyBAQAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC04MTYsNiArODA3LDcgQEAKIC4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtODc0LDExICs4NjYsOCBAQAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTg4OCw2ICs4NzcsNyBAQAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTkyMiw2ICs5MTIsNyBAQAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTk4MCwxMSArOTcxLDggQEAKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC05OTQsNiArOTgyLDcgQEAKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMDI4LDYgKzEwMTcsNyBAQAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEwODcsMTEgKzEwNzcsOCBAQAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTExMDEsNiArMTA4OCw3IEBACiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMTM1LDYgKzExMjMsNyBAQAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTE3NCw2ICsxMTYzLDcgQEAKIC4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTExOTMsMTEgKzExODMsOCBAQAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTEyNDEsNiArMTIyOCw3IEBACiAuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMjk5LDExICsxMjg3LDggQEAKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xMzEzLDYgKzEyOTgsNyBAQAogLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTM0Nyw2ICsxMzMzLDcgQEAKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE0MDUsMTEgKzEzOTIsOCBAQAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTE0MTksNiArMTQwMyw3IEBACiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNDUzLDYgKzE0MzgsNyBAQAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTUxMSwxMSArMTQ5Nyw4IEBACiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTUyNSw2ICsxNTA4LDcgQEAKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE1NTksNiArMTU0Myw3IEBACiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNTk4LDYgKzE1ODMsNyBAQAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTYxNywxMSArMTYwMyw4IEBACiAuL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTY2NSw2ICsxNjQ4LDcgQEAKIC4vc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE3MDQsNiArMTY4OCw3IEBACiAuL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTcyMywxMSArMTcwOCw4IEBACiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTc3MSw2ICsxNzUzLDcgQEAKIC4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTgwOSw5ICsxNzkyLDEwIEBACiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKLS4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3Rhc2hfY2FjaGUuaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF90b19uZXh0LmgKKy4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3Rhc2hfY2FjaGUuaAogLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTgzMSwxMSArMTgxNSw4IEBACiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTg3OSw2ICsxODYwLDcgQEAKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xOTIwLDYgKzE5MDIsNyBAQAogLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX3RvX25leHQuaAogLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTkzOSwxMSArMTkyMiw4IEBACiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTk4Nyw2ICsxOTY3LDcgQEAKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMjAyNiw2ICsyMDA3LDcgQEAKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMjA0NSwxMSArMjAyNyw4IEBACiAuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjA5Myw2ICsyMDcyLDcgQEAKIC4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMjEzMiw2ICsyMTEyLDcgQEAKIC4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0yMTUxLDExICsyMTMyLDggQEAKIC4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0yMTk5LDYgKzIxNzcsNyBAQAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMjIzOCw2ICsyMjE3LDcgQEAKIC4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMjI1NywxMSArMjIzNyw4IEBACiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjMwNSw2ICsyMjgyLDcgQEAKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0yMzQ0LDYgKzIzMjIsNyBAQAogLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTIzNjMsMTEgKzIzNDIsOCBAQAogLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTI0MTEsNiArMjM4Nyw3IEBACiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMjQ1MCw2ICsyNDI3LDcgQEAKIC4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTI0NjksMTEgKzI0NDcsOCBAQAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTI1MTcsNiArMjQ5Miw3IEBACiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTI1NTcsNiArMjUzMyw3IEBACiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKIC4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0yNTc2LDExICsyNTUzLDggQEAKIC4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0yNjI0LDYgKzI1OTgsNyBAQAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMjY2Myw2ICsyNjM4LDcgQEAKIC4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0yNjgyLDExICsyNjU4LDggQEAKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0yNzMwLDYgKzI3MDMsNyBAQAogLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0yNzY5LDYgKzI3NDMsNyBAQAogLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMjc4OCwxMSArMjc2Myw4IEBACiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjgzNiw2ICsyODA4LDcgQEAKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL2FsbF9oZWxwZXJzLmMgYi9hZ2VudC9oZWxwZXJzL2FsbF9oZWxwZXJzLmMKaW5kZXggMWVkMTA4YS4uZTFlMWI3OCAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9hbGxfaGVscGVycy5jCisrKyBiL2FnZW50L2hlbHBlcnMvYWxsX2hlbHBlcnMuYwpAQCAtMiw2ICsyLDcgQEAKICAqICBAeyAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTEyLDYgKzEzLDkgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0Lmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3Rhc2hfY2FjaGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG1pYl9oZWxwZXJzLCBsaWJuZXRzbm1wYWdlbnQpCisKKwogLyoqIGNhbGwgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGZvciBhbGwgaGFuZGxlcnMgd2l0aCBpbml0XyByb3V0aW5lcy4gKi8KIHZvaWQKIG5ldHNubXBfaW5pdF9oZWxwZXJzKHZvaWQpCkBAIC0yMCw4ICsyNCwxNiBAQAogICAgIG5ldHNubXBfaW5pdF9zZXJpYWxpemUoKTsKICAgICBuZXRzbm1wX2luaXRfcmVhZF9vbmx5X2hlbHBlcigpOwogICAgIG5ldHNubXBfaW5pdF9idWxrX3RvX25leHRfaGVscGVyKCk7CisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQVNFVAogICAgIG5ldHNubXBfaW5pdF90YWJsZV9kYXRhc2V0KCk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBU0VUICovCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ST1dfTUVSR0UKKyAgICBuZXRzbm1wX2luaXRfcm93X21lcmdlKCk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ST1dfTUVSR0UgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVEFTSF9DQUNIRQogICAgIG5ldHNubXBfaW5pdF9zdGFzaF9jYWNoZV9oZWxwZXIoKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVNIX0NBQ0hFICovCiB9CiAKIC8qKiBAZGVmZ3JvdXAgdXRpbGl0aWVzIHV0aWxpdHlfaGFuZGxlcnMKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvYmFieV9zdGVwcy5jIGIvYWdlbnQvaGVscGVycy9iYWJ5X3N0ZXBzLmMKaW5kZXggODUxNWRlYS4uZDc5YWNiYyAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9iYWJ5X3N0ZXBzLmMKKysrIGIvYWdlbnQvaGVscGVycy9iYWJ5X3N0ZXBzLmMKQEAgLTMsOSArMywxOSBAQAogICogJElkJAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKK25ldHNubXBfZmVhdHVyZV9wcm92aWRlKGJhYnlfc3RlcHMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoYmFieV9zdGVwcywgbWliX2hlbHBlcnMpCisKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9CQUJZX1NURVBTCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19yZXF1ZXN0c19lcnJvcikKKyNlbmRpZgorCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQkFCWV9TVEVQUworCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oPgogCiAjZGVmaW5lIEJBQllfU1RFUFNfUEVSX01PREVfTUFYICAgICA0CkBAIC0xNCw2ICsyNCw3IEBACiBzdGF0aWMgdV9zaG9ydCBnZXRfbW9kZV9tYXBbQkFCWV9TVEVQU19QRVJfTU9ERV9NQVhdID0gewogICAgIE1PREVfQlNURVBfUFJFX1JFUVVFU1QsIE1PREVfQlNURVBfT0JKRUNUX0xPT0tVUCwgQlNURVBfVVNFX09SSUdJTkFMLCBNT0RFX0JTVEVQX1BPU1RfUkVRVUVTVCB9OwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogc3RhdGljIHVfc2hvcnQgc2V0X21vZGVfbWFwW1NOTVBfTVNHX0lOVEVSTkFMX1NFVF9NQVhdW0JBQllfU1RFUFNfUEVSX01PREVfTUFYXSA9IHsKICAgICAvKlIxKi8KICAgICB7IE1PREVfQlNURVBfUFJFX1JFUVVFU1QsIE1PREVfQlNURVBfT0JKRUNUX0xPT0tVUCwgTU9ERV9CU1RFUF9ST1dfQ1JFQVRFLApAQCAtMzMsNiArNDQsNyBAQAogICAgIHsgTU9ERV9CU1RFUF9VTkRPX0NPTU1JVCwgTU9ERV9CU1RFUF9VTkRPX1NFVCwgTU9ERV9CU1RFUF9VTkRPX0NMRUFOVVAsCiAgICAgICBNT0RFX0JTVEVQX1BPU1RfUkVRVUVTVH0KIH07CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIHN0YXRpYyBpbnQKIF9iYWJ5X3N0ZXBzX2hlbHBlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLApAQCAtNTEsNiArNjMsMjAgQEAKICAqICBAewogICovCiAKK3N0YXRpYyBuZXRzbm1wX2JhYnlfc3RlcHNfbW9kZXMgKgorbmV0c25tcF9iYWJ5X3N0ZXBzX21vZGVzX3JlZihuZXRzbm1wX2JhYnlfc3RlcHNfbW9kZXMgKm1kKQoreworICAgIG1kLT5yZWZjbnQrKzsKKyAgICByZXR1cm4gbWQ7Cit9CisKK3N0YXRpYyB2b2lkCituZXRzbm1wX2JhYnlfc3RlcHNfbW9kZXNfZGVyZWYobmV0c25tcF9iYWJ5X3N0ZXBzX21vZGVzICptZCkKK3sKKyAgICBpZiAoLS1tZC0+cmVmY250ID09IDApCisJZnJlZShtZCk7Cit9CisKIC8qKiByZXR1cm5zIGEgYmFieV9zdGVwcyBoYW5kbGVyIHRoYXQgY2FuIGJlIGluamVjdGVkIGludG8gYSBnaXZlbgogICogIGhhbmRsZXIgY2hhaW4uCiAgKi8KQEAgLTcxLDcgKzk3LDEwIEBACiAgICAgICAgIG1oID0gTlVMTDsKICAgICB9CiAgICAgZWxzZSB7CisJbWQtPnJlZmNudCA9IDE7CiAgICAgICAgIG1oLT5teXZvaWQgPSBtZDsKKwltaC0+ZGF0YV9jbG9uZSA9ICh2b2lkICooKikodm9pZCAqKSluZXRzbm1wX2JhYnlfc3RlcHNfbW9kZXNfcmVmOworCW1oLT5kYXRhX2ZyZWUgPSAodm9pZCAoKikodm9pZCAqKSluZXRzbm1wX2JhYnlfc3RlcHNfbW9kZXNfZGVyZWY7CiAgICAgICAgIGlmICgwID09IG1vZGVzKQogICAgICAgICAgICAgbW9kZXMgPSBCQUJZX1NURVBfQUxMOwogICAgICAgICBtZC0+cmVnaXN0ZXJlZCA9IG1vZGVzOwpAQCAtMTA0LDYgKzEzMyw3IEBACiAKICAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgICAgICAvKgogICAgICAgICAgKiBjbGVhciBjb21wbGV0ZWQgbW9kZXMKQEAgLTEyMSw2ICsxNTEsNyBAQAogICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKICAgICAgICAgbW9kZV9tYXBfcHRyID0gc2V0X21vZGVfbWFwW3JlcWluZm8tPm1vZGVdOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgICAgIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIC8qCkBAIC0yMjIsNiArMjUzLDcgQEAKICAgICAgICAgaWYgKEJTVEVQX1VTRV9PUklHSU5BTCAhPSBtb2RlX21hcF9wdHJbaV0pIHsKICAgICAgICAgICAgIHVfaW50ICAgIG1vZGVfZmxhZzsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBza2lwIHVuZG8gY29tbWl0IGlmIGNvbW1pdCB3YXNuJ3QgaGl0LCBhbmQKICAgICAgICAgICAgICAqIHVuZG9fY2xlYW51cCBpZiB1bmRvX3NldHVwIHdhc24ndCBoaXQuCkBAIC0yNDAsNiArMjcyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgc2tpcHBpbmcgdW5kbyBjbGVhbnVwIChubyB1bmRvIHNldHVwKVxuIikpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgICAgICAgICByZXFpbmZvLT5tb2RlID0gbW9kZV9tYXBfcHRyW2ldOwogICAgICAgICAgICAgbW9kZV9mbGFnID0gbmV0c25tcF9iYWJ5X3N0ZXBfbW9kZTJmbGFnKCBtb2RlX21hcF9wdHJbaV0gKTsKQEAgLTI5Myw3ICszMjYsMTAgQEAKICAgICAgICAgICogaW4gY29tbWl0LCBmcmVlIG9yIHVuZG8uKQogICAgICAgICAgKi8KICAgICAgICAgaWYgKE1PREVfSVNfR0VUKHNhdmVfbW9kZSkKLSAgICAgICAgICAgIHx8IChzYXZlX21vZGUgPCBTTk1QX01TR19JTlRFUk5BTF9TRVRfQ09NTUlUKSkgeworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKKyAgICAgICAgICAgIHx8IChzYXZlX21vZGUgPCBTTk1QX01TR19JTlRFUk5BTF9TRVRfQ09NTUlUKQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICByYyA9IG5ldHNubXBfY2hlY2tfcmVxdWVzdHNfZXJyb3IocmVxdWVzdHMpOwogICAgICAgICAgICAgaWYocmMpIHsKICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiYmFieV9zdGVwcyIsICIgICBFUlJPUjpyZXF1ZXN0IGVycm9yXG4iKSk7CkBAIC0zMTUsMTIgKzM1MSwxNSBAQAogICogIGhhbmRsZXIgYXMgYSBydW4tdGltZSBpbmplY3RhYmxlIGhhbmRsZXIgZm9yIGNvbmZpZ3VyYXRpb24gZmlsZQogICogIHVzZS4KICAqLworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG5ldHNubXBfYmFieV9zdGVwc19oYW5kbGVyX2luaXQsbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTkVUU05NUF9CQUJZX1NURVBTX0hBTkRMRVJfSU5JVAogdm9pZAogbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfaW5pdCh2b2lkKQogewogICAgIG5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlcl9ieV9uYW1lKCJiYWJ5X3N0ZXBzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQoQkFCWV9TVEVQX0FMTCkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTkVUU05NUF9CQUJZX1NURVBTX0hBTkRMRVJfSU5JVCAqLwogCiAvKiogQH0gKi8KIApAQCAtMzkxLDYgKzQzMCw3IEBACiAgICAgICAgICAgICBtZXRob2QgPSBhY2Nlc3NfbWV0aG9kcy0+Z2V0X3ZhbHVlczsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfQlNURVBfQ0hFQ0tfVkFMVUU6CiAgICAgICAgIGlmKCBhY2Nlc3NfbWV0aG9kcy0+b2JqZWN0X3N5bnRheF9jaGVja3MgKQogICAgICAgICAgICAgbWV0aG9kID0gYWNjZXNzX21ldGhvZHMtPm9iamVjdF9zeW50YXhfY2hlY2tzOwpAQCAtNDQwLDYgKzQ4MCw3IEBACiAgICAgICAgIGlmKCBhY2Nlc3NfbWV0aG9kcy0+dW5kb19jbGVhbnVwICkKICAgICAgICAgICAgIG1ldGhvZCA9IGFjY2Vzc19tZXRob2RzLT51bmRvX2NsZWFudXA7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAKICAgICBjYXNlIE1PREVfQlNURVBfUE9TVF9SRVFVRVNUOgogICAgICAgICBpZiggYWNjZXNzX21ldGhvZHMtPnBvc3RfcmVxdWVzdCApCkBAIC00ODQsNiArNTI1LDcgQEAKICAgICBzd2l0Y2goIG1vZGUgKSB7CiAgICAgICAgIGNhc2UgTU9ERV9CU1RFUF9PQkpFQ1RfTE9PS1VQOgogICAgICAgICAgICAgcmV0dXJuIEJBQllfU1RFUF9PQkpFQ1RfTE9PS1VQOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgY2FzZSBNT0RFX0JTVEVQX1NFVF9WQUxVRToKICAgICAgICAgICAgIHJldHVybiBCQUJZX1NURVBfU0VUX1ZBTFVFOwogICAgICAgICBjYXNlIE1PREVfQlNURVBfSVJSRVZFUlNJQkxFX0NPTU1JVDoKQEAgLTUwOCw2ICs1NTAsNyBAQAogICAgICAgICAgICAgcmV0dXJuIEJBQllfU1RFUF9DT01NSVQ7CiAgICAgICAgIGNhc2UgTU9ERV9CU1RFUF9VTkRPX0NPTU1JVDoKICAgICAgICAgICAgIHJldHVybiBCQUJZX1NURVBfVU5ET19DT01NSVQ7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBuZXRzbm1wX2Fzc2VydCgidW5rbm93biBmbGFnIik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTUxNiwzICs1NTksNyBAQAogfQogLyoqICBAfSAqLwogCisjZWxzZSAgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9CQUJZX1NURVBTICovCituZXRzbm1wX2ZlYXR1cmVfdW51c2VkKGJhYnlfc3RlcHMpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQkFCWV9TVEVQUyAqLworCmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYyBiL2FnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jCmluZGV4IDZiYjMyYTAuLjUyMGE0Y2YgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jCisrKyBiL2FnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jCkBAIC05LDYgKzksNyBAQAogICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpZiBIQVZFX1NUUklOR19ICiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC0yMSw2ICsyMiwxMSBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2FjaGVfaGFuZGxlciwgbWliX2hlbHBlcnMpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjYWNoZV9maW5kX2J5X29pZCwgY2FjaGVfaGFuZGxlcikKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjYWNoZV9nZXRfaGVhZCwgY2FjaGVfaGFuZGxlcikKKwogc3RhdGljIG5ldHNubXBfY2FjaGUgICpjYWNoZV9oZWFkID0gTlVMTDsKIHN0YXRpYyBpbnQgICAgICAgICAgICAgY2FjaGVfb3V0c3RhbmRpbmdfdmFsaWQgPSAwOwogc3RhdGljIGludCAgICAgICAgICAgICBfY2FjaGVfbG9hZCggbmV0c25tcF9jYWNoZSAqY2FjaGUgKTsKQEAgLTc5LDYgKzg1LDE0IEBACiAgKiAgdGhlIGNhY2hlIHdoZW4gaXQgZXhwaXJlcy4gVGhpcyBpcyB1c2VmdWwgZm9yIGtlZXBpbmcgdGhlIGNhY2hlIGZyZXNoLAogICogIGV2ZW4gaW4gdGhlIGFic2VuY2Ugb2YgaW5jb21pbmcgc25tcCByZXF1ZXN0cy4KICAqCisgKiAgSWYgTkVUU05NUF9DQUNIRV9SRVNFVF9USU1FUl9PTl9VU0UgaXMgc2V0LCB0aGUgZXhwaXJ5IHRpbWVyIHdpbGwgYmUKKyAqICByZXNldCBvbiBlYWNoIGNhY2hlIGFjY2Vzcy4gSW4gcHJhY3RpY2UgdGhlICd0aW1lb3V0JyBiZWNvbWVzIGEgdGltZXIKKyAqICB3aGljaCB0cmlnZ2VycyB3aGVuIHRoZSBjYWNoZSBpcyBubyBsb25nZXIgbmVlZGVkLiBUaGlzIGlzIHVzZWZ1bAorICogIGlmIHRoZSBjYWNoZSBpcyBhdXRvbWF0aWNhbGx5IGtlcHQgc3luY2hyb25pemVkOiBlLmcuIGJ5IHJlY2VpdmluZworICogIGNoYW5nZSBub3RpZmljYXRpb25zIGZyb20gTmV0bGluaywgaW5vdGlmeSBvciBzaW1pbGFyLiBUaGlzIHNob3VsZAorICogIG5vdCBiZSB1c2VkIGlmIGNhY2hlIGlzIG5vdCBzeW5jaHJvbml6ZWQgYXV0b21hdGljYWxseSBhcyBpdCB3b3VsZAorICogIHJlc3VsdCBpbiBzdGFsZSBjYWNoZSBpbmZvcm1hdGlvbiB3aGVuIGlmIHBvbGxpbmcgaGFwcGVucyB0b28gZmFzdC4KKyAqCiAgKgogICogIEhlcmUgYXJlIHNvbWUgc3VnZ2VzdGlvbnMgZm9yIHNvbWUgY29tbW9uIHNpdHVhdGlvbnMuCiAgKgpAQCAtMTEwLDEyICsxMjQsMjAgQEAKICAqICAgICAgICAgIE5FVFNOTVBfQ0FDSEVfRE9OVF9BVVRPX1JFTEVBU0UKICAqICAgICAgICAgIE5FVFNOTVBfQ0FDSEVfQVVUT19SRUxPQUQKICAqCisgKiAgRHluYW1pY2FsbHkgdXBkYXRlZCwgdW5sb2FkZWQgYWZ0ZXIgdGltZW91dDoKKyAqICAgICAgSWYgdGhlIGNhY2hlIGlzIGtlcHQgdXAgdG8gZGF0ZSBkeW5hbWljYWxseSBieSBsaXN0ZW5pbmcgZm9yCisgKiAgICAgIGNoYW5nZSBub3RpZmljYXRpb25zIHNvbWVob3csIGJ1dCBpdCBzaG91bGQgbm90IGJlIGluIG1lbW9yeQorICogICAgICBpZiBpdCdzIG5vdCBuZWVkZWQuIFNldCB0aGUgZm9sbG93aW5nIGZsYWc6CisgKgorICogICAgICAgICAgTkVUU05NUF9DQUNIRV9SRVNFVF9USU1FUl9PTl9VU0UKKyAqCiAgKiAgQHsKICAqLwogCiBzdGF0aWMgdm9pZAogX2NhY2hlX2ZyZWUoIG5ldHNubXBfY2FjaGUgKmNhY2hlICk7CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DQUNIRV9HRVRfSEVBRAogLyoqIGdldCBjYWNoZSBoZWFkCiAgKiBAaW50ZXJuYWwKICAqIHVuYWR2ZXJ0aXNlZCBmdW5jdGlvbiB0byBnZXQgY2FjaGUgaGVhZC4gWW91IHJlYWxseSBzaG91bGQgbm90CkBAIC0xMjYsNyArMTQ4LDkgQEAKIHsKICAgICByZXR1cm4gY2FjaGVfaGVhZDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NBQ0hFX0dFVF9IRUFEICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DQUNIRV9GSU5EX0JZX09JRAogLyoqIGZpbmQgZXhpc3RpbmcgY2FjaGUKICAqLwogbmV0c25tcF9jYWNoZSAqCkBAIC0xNDIsNiArMTY2LDcgQEAKICAgICAKICAgICByZXR1cm4gTlVMTDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NBQ0hFX0ZJTkRfQllfT0lEICovCiAKIC8qKiByZXR1cm5zIGEgY2FjaGUKICAqLwpAQCAtMTg2LDYgKzIxMSwyMiBAQAogICAgIHJldHVybiBjYWNoZTsKIH0KIAorc3RhdGljIG5ldHNubXBfY2FjaGUgKgorbmV0c25tcF9jYWNoZV9yZWYobmV0c25tcF9jYWNoZSAqY2FjaGUpCit7CisgICAgY2FjaGUtPnJlZmNudCsrOworICAgIHJldHVybiBjYWNoZTsKK30KKworc3RhdGljIHZvaWQKK25ldHNubXBfY2FjaGVfZGVyZWYobmV0c25tcF9jYWNoZSAqY2FjaGUpCit7CisgICAgaWYgKC0tY2FjaGUtPnJlZmNudCA9PSAwKSB7CisgICAgICAgIG5ldHNubXBfY2FjaGVfcmVtb3ZlKGNhY2hlKTsKKyAgICAgICAgbmV0c25tcF9jYWNoZV9mcmVlKGNhY2hlKTsKKyAgICB9Cit9CisKIC8qKiBmcmVlcyBhIGNhY2hlCiAgKi8KIGludApAQCAtMjA1LDggKzI0Niw4IEBACiAgICAgICAgICAgICBzcHJpbnRfcmVhbGxvY19vYmppZCgodV9jaGFyICoqKSAmYnVmLCAmYnVmX2xlbiwgJm91dF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBwb3MtPnJvb3RvaWQsIHBvcy0+cm9vdG9pZF9sZW4pOwogICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsCi0JCSAgICAgIm5vdCBmcmVlaW5nIGNhY2hlIHdpdGggcm9vdCBPSUQgJXMgKHN0aWxsIGluIGxpc3QpXG4iLAotCQkgICAgIGJ1Zik7CisgICAgICAgICAgICAgICAgICAgICAibm90IGZyZWVpbmcgY2FjaGUgd2l0aCByb290IE9JRCAlcyAoc3RpbGwgaW4gbGlzdClcbiIsCisgICAgICAgICAgICAgICAgICAgICBidWYpOwogICAgICAgICAgICAgZnJlZShidWYpOwogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKICAgICAgICAgfQpAQCAtMjE4LDYgKzI1OSw5IEBACiAgICAgaWYgKGNhY2hlLT52YWxpZCkKICAgICAgICAgX2NhY2hlX2ZyZWUoY2FjaGUpOwogCisgICAgaWYgKGNhY2hlLT50aW1lc3RhbXBNKQorCWZyZWUoY2FjaGUtPnRpbWVzdGFtcE0pOworCiAgICAgaWYgKGNhY2hlLT5yb290b2lkKQogICAgICAgICBmcmVlKGNhY2hlLT5yb290b2lkKTsKIApAQCAtMzUzLDYgKzM5NywxNyBAQAogICAgIHJldHVybiByZXQ7CiB9CiAKKy8qKiBNYWtlcyBzdXJlIHRoYXQgbWVtb3J5IGFsbG9jYXRlZCBmb3IgdGhlIGNhY2hlIGlzIGZyZWVkIHdoZW4gdGhlIGhhbmRsZXIKKyAqICBpcyB1bnJlZ2lzdGVyZWQuCisgKi8KK3ZvaWQgbmV0c25tcF9jYWNoZV9oYW5kbGVyX293bnNfY2FjaGUobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlcikKK3sKKyAgICBuZXRzbm1wX2Fzc2VydChoYW5kbGVyLT5teXZvaWQpOworICAgICgobmV0c25tcF9jYWNoZSAqKWhhbmRsZXItPm15dm9pZCktPnJlZmNudCsrOworICAgIGhhbmRsZXItPmRhdGFfY2xvbmUgPSAodm9pZCAqKCopKHZvaWQgKikpbmV0c25tcF9jYWNoZV9yZWY7CisgICAgaGFuZGxlci0+ZGF0YV9mcmVlID0gKHZvaWQoKikodm9pZCopKW5ldHNubXBfY2FjaGVfZGVyZWY7Cit9CisKIC8qKiByZXR1cm5zIGEgY2FjaGUgaGFuZGxlciB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgZ2l2ZW4gaGFuZGxlciBjaGFpbi4gIAogICovCiBuZXRzbm1wX21pYl9oYW5kbGVyICoKQEAgLTM2OCwxMiArNDIzLDE1IEBACiAgICAgICAgIGNhY2hlID0gbmV0c25tcF9jYWNoZV9jcmVhdGUodGltZW91dCwgbG9hZF9ob29rLCBmcmVlX2hvb2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdG9pZCwgcm9vdG9pZF9sZW4pOwogICAgICAgICByZXQtPm15dm9pZCA9ICh2b2lkICopIGNhY2hlOworICAgICAgICBuZXRzbm1wX2NhY2hlX2hhbmRsZXJfb3duc19jYWNoZShyZXQpOwogICAgIH0KICAgICByZXR1cm4gcmV0OwogfQogCiAvKiogZnVuY3Rpb25hbGx5IHRoZSBzYW1lIGFzIGNhbGxpbmcgbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyKCkgYnV0IGFsc28KICAqIGluamVjdHMgYSBjYWNoZSBoYW5kbGVyIGF0IHRoZSBzYW1lIHRpbWUgZm9yIHlvdS4gKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihuZXRzbm1wX2NhY2hlX2hhbmRsZXJfcmVnaXN0ZXIsbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTkVUU05NUF9DQUNIRV9IQU5ETEVSX1JFR0lTVEVSCiBpbnQKIG5ldHNubXBfY2FjaGVfaGFuZGxlcl9yZWdpc3RlcihuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICogcmVnaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NhY2hlKiBjYWNoZSkKQEAgLTM4NCw5ICs0NDIsMTIgQEAKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOwogICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXIocmVnaW5mbyk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ORVRTTk1QX0NBQ0hFX0hBTkRMRVJfUkVHSVNURVIgKi8KIAogLyoqIGZ1bmN0aW9uYWxseSB0aGUgc2FtZSBhcyBjYWxsaW5nIG5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlcigpIGJ1dCBhbHNvCiAgKiBpbmplY3RzIGEgY2FjaGUgaGFuZGxlciBhdCB0aGUgc2FtZSB0aW1lIGZvciB5b3UuICovCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobmV0c25tcF9yZWdpc3Rlcl9jYWNoZV9oYW5kbGVyLG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX05FVFNOTVBfUkVHSVNURVJfQ0FDSEVfSEFORExFUgogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX2NhY2hlX2hhbmRsZXIobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqIHJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRpbWVvdXQsIE5ldHNubXBDYWNoZUxvYWQgKiBsb2FkX2hvb2ssCkBAIC00MDAsOCArNDYxLDkgQEAKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOwogICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXIocmVnaW5mbyk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ORVRTTk1QX1JFR0lTVEVSX0NBQ0hFX0hBTkRMRVIgKi8KIAotTkVUU05NUF9TVEFUSUNfSU5MSU5FIGNoYXIgKgorc3RhdGljIGNoYXIgKgogX2J1aWxkX2NhY2hlX25hbWUoY29uc3QgY2hhciAqbmFtZSkKIHsKICAgICBjaGFyICpkdXAgPSAoY2hhciopbWFsbG9jKHN0cmxlbihuYW1lKSArIHN0cmxlbihDQUNIRV9OQU1FKSArIDIpOwpAQCAtNDQxLDExICs1MDMsMTQgQEAKIH0KIAogLyoqIEV4dHJhY3QgdGhlIGNhY2hlIGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIHJlcXVlc3QgKFBEVSkgKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihuZXRzbm1wX2V4dHJhY3RfY2FjaGVfaW5mbyxuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ORVRTTk1QX0VYVFJBQ1RfQ0FDSEVfSU5GTwogbmV0c25tcF9jYWNoZSAgKgogbmV0c25tcF9leHRyYWN0X2NhY2hlX2luZm8obmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKiByZXFpbmZvKQogewogICAgIHJldHVybiBuZXRzbm1wX2NhY2hlX3JlcWluZm9fZXh0cmFjdChyZXFpbmZvLCBDQUNIRV9OQU1FKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX05FVFNOTVBfRVhUUkFDVF9DQUNIRV9JTkZPICovCiAKIAogLyoqIENoZWNrIGlmIHRoZSBjYWNoZSB0aW1lb3V0IGhhcyBwYXNzZWQuIFNldHMgYW5kIHJldHVybiB0aGUgZXhwaXJlZCBmbGFnLiAqLwpAQCAtNDU0LDExICs1MTksMTMgQEAKIHsKICAgICBpZihOVUxMID09IGNhY2hlKQogICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBpZighY2FjaGUtPnZhbGlkIHx8IChOVUxMID09IGNhY2hlLT50aW1lc3RhbXApIHx8ICgtMSA9PSBjYWNoZS0+dGltZW91dCkpCisgICAgaWYgKGNhY2hlLT5leHBpcmVkKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZighY2FjaGUtPnZhbGlkIHx8IChOVUxMID09IGNhY2hlLT50aW1lc3RhbXBNKSB8fCAoLTEgPT0gY2FjaGUtPnRpbWVvdXQpKQogICAgICAgICBjYWNoZS0+ZXhwaXJlZCA9IDE7CiAgICAgZWxzZQotICAgICAgICBjYWNoZS0+ZXhwaXJlZCA9IGF0aW1lX3JlYWR5KGNhY2hlLT50aW1lc3RhbXAsIDEwMDAgKiBjYWNoZS0+dGltZW91dCk7CisgICAgICAgIGNhY2hlLT5leHBpcmVkID0gbmV0c25tcF9yZWFkeV9tb25vdG9uaWMoY2FjaGUtPnRpbWVzdGFtcE0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwMCAqIGNhY2hlLT50aW1lb3V0KTsKICAgICAKICAgICByZXR1cm4gY2FjaGUtPmV4cGlyZWQ7CiB9CkBAIC00OTIsMTEgKzU1OSwxNCBAQAogLyoqIElzIHRoZSBjYWNoZSB2YWxpZCBmb3IgYSBnaXZlbiByZXF1ZXN0PwogICogZm9yIGJhY2t3YXJkcyBjb21wYXRhYmlsaXR5LiBuZXRzbm1wX2NhY2hlX2lzX3ZhbGlkKCkgaXMgcHJlZmVycmVkLgogICovCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobmV0c25tcF9pc19jYWNoZV92YWxpZCxuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ORVRTTk1QX0lTX0NBQ0hFX1ZBTElECiBpbnQKIG5ldHNubXBfaXNfY2FjaGVfdmFsaWQobmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKiByZXFpbmZvKQogewogICAgIHJldHVybiBuZXRzbm1wX2NhY2hlX2lzX3ZhbGlkKHJlcWluZm8sIENBQ0hFX05BTUUpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTkVUU05NUF9JU19DQUNIRV9WQUxJRCAqLwogCiAvKiogSW1wbGVtZW50cyB0aGUgY2FjaGUgaGFuZGxlciAqLwogaW50CkBAIC01MjYsNyArNTk2LDcgQEAKICAgICAgICAgICAgICAgICAgICAiY2FjaGUgbm90IGZvdW5kLCBkaXNhYmxlZCBvciBoYWQgbm8gbG9hZCBtZXRob2RcbiIpKTsKICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiAgICAgfQotICAgIHNucHJpbnRmKGFkZHJzdHIsIHNpemVvZihhZGRyc3RyKSwgIiVwIiwgY2FjaGUpOworICAgIHNucHJpbnRmKGFkZHJzdHIsc2l6ZW9mKGFkZHJzdHIpLCAiJWxkIiwgKGxvbmcgaW50KWNhY2hlKTsKICAgICBERUJVR01TR1RMKCgiaGVscGVyOmNhY2hlX2hhbmRsZXIiLCAidXNpbmcgY2FjaGUgJXM6ICIsIGFkZHJzdHIpKTsKICAgICBERUJVR01TR09JRCgoImhlbHBlcjpjYWNoZV9oYW5kbGVyIiwgY2FjaGUtPnJvb3RvaWQsIGNhY2hlLT5yb290b2lkX2xlbikpOwogICAgIERFQlVHTVNHKCgiaGVscGVyOmNhY2hlX2hhbmRsZXIiLCAiXG4iKSk7CkBAIC01NDYsNyArNjE2LDkgQEAKICAgICBjYXNlIE1PREVfR0VUOgogICAgIGNhc2UgTU9ERV9HRVRORVhUOgogICAgIGNhc2UgTU9ERV9HRVRCVUxLOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgICAgICAvKgogICAgICAgICAgKiBvbmx5IHRvdWNoIGNhY2hlIG9uY2UgcGVyIHBkdSByZXF1ZXN0LCB0byBwcmV2ZW50IGEgY2FjaGUKQEAgLTU2OCw2ICs2NDAsNyBAQAogICAgICAgICAvKiogbmV4dCBoYW5kbGVyIGNhbGxlZCBhdXRvbWF0aWNhbGx5IC0gJ0FVVE9fTkVYVCcgKi8KICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKICAgICBjYXNlIE1PREVfU0VUX0ZSRUU6CiAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CkBAIC01ODksNiArNjYyLDcgQEAKICAgICAgICAgfQogICAgICAgICAvKiogbmV4dCBoYW5kbGVyIGNhbGxlZCBhdXRvbWF0aWNhbGx5IC0gJ0FVVE9fTkVYVCcgKi8KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICBkZWZhdWx0OgogICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgImNhY2hlX2hhbmRsZXI6IFVucmVjb2duaXNlZCBtb2RlICglZClcbiIsCkBAIC01OTYsNiArNjcwLDggQEAKICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcl9hbGwocmVxdWVzdHMsIFNOTVBfRVJSX0dFTkVSUik7CiAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgfQorICAgIGlmIChjYWNoZS0+ZmxhZ3MgJiBORVRTTk1QX0NBQ0hFX1JFU0VUX1RJTUVSX09OX1VTRSkKKyAgICAgICAgbmV0c25tcF9zZXRfbW9ub3RvbmljX21hcmtlcigmY2FjaGUtPnRpbWVzdGFtcE0pOwogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCkBAIC02NDAsMTAgKzcxNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgcmVsZWFzZV9jYWNoZWRfcmVzb3VyY2VzLCBOVUxMKTsKICAgICAgICAgY2FjaGVfb3V0c3RhbmRpbmdfdmFsaWQgPSAxOwogICAgIH0KLSAgICBpZiAoY2FjaGUtPnRpbWVzdGFtcCkKLSAgICAgICAgYXRpbWVfc2V0TWFya2VyKGNhY2hlLT50aW1lc3RhbXApOwotICAgIGVsc2UKLSAgICAgICAgY2FjaGUtPnRpbWVzdGFtcCA9IGF0aW1lX25ld01hcmtlcigpOworICAgIG5ldHNubXBfc2V0X21vbm90b25pY19tYXJrZXIoJmNhY2hlLT50aW1lc3RhbXBNKTsKICAgICBERUJVR01TR1QoKCJoZWxwZXI6Y2FjaGVfaGFuZGxlciIsICIgbG9hZGVkICglZClcbiIsIGNhY2hlLT50aW1lb3V0KSk7CiAKICAgICByZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jIGIvYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jCmluZGV4IDJkMDdiNjkuLmE1ZWU4NDEgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvaW5zdGFuY2UuYworKysgYi9hZ2VudC9oZWxwZXJzL2luc3RhbmNlLmMKQEAgLTksNiArOSw3IEBACiAgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KQEAgLTI2LDcgKzI3LDExIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5Lmg+CiAKK25ldHNubXBfZmVhdHVyZV9wcm92aWRlKGluc3RhbmNlKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGluc3RhbmNlLCBtaWJfaGVscGVycykKKwogdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9udW1fZmlsZV9pbnN0YW5jZV9zIHsKKyAgICBpbnQgICByZWZjbnQ7CiAgICAgY2hhciAqZmlsZV9uYW1lOwogICAgIEZJTEUgKmZpbGVwOwogICAgIHVfY2hhciB0eXBlOwpAQCAtMzksNiArNDQsMjIgQEAKICAqICBAewogICovCiAKK3N0YXRpYyBuZXRzbm1wX251bV9maWxlX2luc3RhbmNlICoKK25ldHNubXBfbnVtX2ZpbGVfaW5zdGFuY2VfcmVmKG5ldHNubXBfbnVtX2ZpbGVfaW5zdGFuY2UgKm5maSkKK3sKKyAgICBuZmktPnJlZmNudCsrOworICAgIHJldHVybiBuZmk7Cit9CisKK3N0YXRpYyB2b2lkCituZXRzbm1wX251bV9maWxlX2luc3RhbmNlX2RlcmVmKG5ldHNubXBfbnVtX2ZpbGVfaW5zdGFuY2UgKm5maSkKK3sKKyAgICBpZiAoLS1uZmktPnJlZmNudCA9PSAwKSB7CisJZnJlZShuZmktPmZpbGVfbmFtZSk7CisJZnJlZShuZmkpOworICAgIH0KK30KKwogLyoqCiAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIGhlbHBlciBoYW5kbGVyLCBjYWxscyBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyLCB3aGljaAogICogdGhlbiBjb3VsZCBiZSByZWdpc3RlcmVkLCB1c2luZyBuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXIoKS4KQEAgLTExMSw3ICsxMzIsNyBAQAogZ2V0X3JlZyhjb25zdCBjaGFyICpuYW1lLAogICAgICAgICBjb25zdCBjaGFyICpvdXJuYW1lLAogICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCi0gICAgICAgIHZvaWQgKml0LAorICAgICAgICBuZXRzbm1wX251bV9maWxlX2luc3RhbmNlICppdCwKICAgICAgICAgaW50IG1vZGVzLAogICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHNjYWxhcmgsIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlciwKICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dE5hbWUpCkBAIC0xMjYsNyArMTQ3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19vaWQsIHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZXMpOwogICAgICAgICBteWhhbmRsZXIgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyKG91cm5hbWUsIHNjYWxhcmgpOwotICAgICAgICBteWhhbmRsZXItPm15dm9pZCA9ICh2b2lkICopIGl0OworICAgICAgICBteWhhbmRsZXItPm15dm9pZCA9IGl0OworCW15aGFuZGxlci0+ZGF0YV9jbG9uZSA9ICh2b2lkKigqKSh2b2lkKikpbmV0c25tcF9udW1fZmlsZV9pbnN0YW5jZV9yZWY7CisJbXloYW5kbGVyLT5kYXRhX2ZyZWUgPSAodm9pZCgqKSh2b2lkKikpbmV0c25tcF9udW1fZmlsZV9pbnN0YW5jZV9kZXJlZjsKICAgICAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihteXJlZywgbXloYW5kbGVyKTsKICAgICB9IGVsc2UgewogICAgICAgICBteXJlZyA9CkBAIC0xMzQsNyArMTU3LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsYXJoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX29pZCwgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2Rlcyk7Ci0gICAgICAgIG15cmVnLT5oYW5kbGVyLT5teXZvaWQgPSAodm9pZCAqKSBpdDsKKyAgICAgICAgbXlyZWctPmhhbmRsZXItPm15dm9pZCA9IGl0OworCW15cmVnLT5oYW5kbGVyLT5kYXRhX2Nsb25lCisJICAgID0gKHZvaWQgKigqKSh2b2lkICopKW5ldHNubXBfbnVtX2ZpbGVfaW5zdGFuY2VfcmVmOworCW15cmVnLT5oYW5kbGVyLT5kYXRhX2ZyZWUKKwkgICAgPSAodm9pZCAoKikodm9pZCAqKSluZXRzbm1wX251bV9maWxlX2luc3RhbmNlX2RlcmVmOwogICAgIH0KICAgICBpZiAoY29udGV4dE5hbWUpCiAgICAgICAgIG15cmVnLT5jb250ZXh0TmFtZSA9IHN0cmR1cChjb250ZXh0TmFtZSk7CkBAIC0xNDIsNiArMTY5LDggQEAKIH0KIAogLyogV2F0Y2hlZCAnbG9uZycgaW5zdGFuY2VzIGFyZSB3cml0YWJsZSBvbiBib3RoIDMyLWJpdCBhbmQgNjQtYml0IHN5c3RlbXMgICovCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVhZF9vbmx5X3Vsb25nX2luc3RhbmNlLGluc3RhbmNlKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFQURfT05MWV9VTE9OR19JTlNUQU5DRQogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV91bG9uZ19pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKQEAgLTE0OSwyOCArMTc4LDM0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyKQogewotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZTIoCiAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKICAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUk9OTFkpLAogICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAogICAgICAgICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZih1X2xvbmcpLAogICAgICAgICAgICAgICAgICAgIEFTTl9VTlNJR05FRCwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUFEX09OTFlfVUxPTkdfSU5TVEFOQ0UgKi8KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVsb25nX2luc3RhbmNlLGluc3RhbmNlKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VMT05HX0lOU1RBTkNFCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfdWxvbmdfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKQogewotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZTIoCiAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKICAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUldSSVRFKSwKICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YodV9sb25nKSwKICAgICAgICAgICAgICAgICAgICBBU05fVU5TSUdORUQsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVUxPTkdfSU5TVEFOQ0UgKi8KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlYWRfb25seV9jb3VudGVyMzJfaW5zdGFuY2UsaW5zdGFuY2UpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVBRF9PTkxZX0NPVU5URVIzMl9JTlNUQU5DRQogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9jb3VudGVyMzJfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLApAQCAtMTc5LDE0ICsyMTQsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlcikKIHsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UyKAogICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JPTkxZKSwKICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YodV9sb25nKSwKICAgICAgICAgICAgICAgICAgICBBU05fQ09VTlRFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUFEX09OTFlfQ09VTlRFUjMyX0lOU1RBTkNFICovCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWFkX29ubHlfbG9uZ19pbnN0YW5jZSxpbnN0YW5jZSkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUFEX09OTFlfTE9OR19JTlNUQU5DRQogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9sb25nX2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCkBAIC0xOTQsMjYgKzIzMiwzMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICppdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKQogewotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZTIoCiAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKICAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUk9OTFkpLAogICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAogICAgICAgICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZihsb25nKSwgQVNOX0lOVEVHRVIsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVBRF9PTkxZX0xPTkdfSU5TVEFOQ0UgKi8KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGxvbmdfaW5zdGFuY2UsaW5zdGFuY2UpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9OR19JTlNUQU5DRQogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX2xvbmdfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UyKAogICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JXUklURSksCiAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCiAgICAgICAgICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKGxvbmcpLCBBU05fSU5URUdFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT05HX0lOU1RBTkNFICovCiAKIC8qIFdhdGNoZWQgJ2ludCcgaW5zdGFuY2VzIGFyZSBvbmx5IHdyaXRhYmxlIG9uIDMyLWJpdCBzeXN0ZW1zICAqLworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlYWRfb25seV91aW50X2luc3RhbmNlLGluc3RhbmNlKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFQURfT05MWV9VSU5UX0lOU1RBTkNFCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3VpbnRfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKQEAgLTIyMSw0MiArMjY1LDUxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UyKAogICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JPTkxZKSwKICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YodW5zaWduZWQgaW50KSwKICAgICAgICAgICAgICAgICAgICBBU05fVU5TSUdORUQsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVBRF9PTkxZX1VJTlRfSU5TVEFOQ0UgKi8KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVpbnRfaW5zdGFuY2UsaW5zdGFuY2UpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVUlOVF9JTlNUQU5DRQogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3VpbnRfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKQogewotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZTIoCiAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKICAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUldSSVRFKSwKICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YodW5zaWduZWQgaW50KSwKICAgICAgICAgICAgICAgICAgICBBU05fVU5TSUdORUQsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVUlOVF9JTlNUQU5DRSAqLwogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVhZF9vbmx5X2ludF9pbnN0YW5jZSxpbnN0YW5jZSkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUFEX09OTFlfSU5UX0lOU1RBTkNFCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UyKAogICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JPTkxZKSwKICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YoaW50KSwgQVNOX0lOVEVHRVIsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVBRF9PTkxZX0lOVF9JTlNUQU5DRSAqLwogCiAgIC8qCiAgICAqIENvbXBhdGliaWxpdHkgd2l0aCBlYXJsaWVyIChpbmNvbnNpc3RlbnRseSBuYW1lZCkgcm91dGluZQogICAgKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWdpc3Rlcl9yZWFkX29ubHlfaW50X2luc3RhbmNlLG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX1JFQURfT05MWV9JTlRfSU5TVEFOQ0UKIGludAogcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCkBAIC0yNjYsMTEgKzMxOSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfb2lkLCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQsIHN1YmhhbmRsZXIpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfUkVBRF9PTkxZX0lOVF9JTlNUQU5DRSAqLwogCiAvKgogICogQ29udGV4dCByZWdpc3RyYXRpb25zCiAgKi8KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlZ2lzdGVyX3JlYWRfb25seV91bG9uZ19pbnN0YW5jZV9jb250ZXh0LGluc3RhbmNlKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX1JFQURfT05MWV9VTE9OR19JTlNUQU5DRV9DT05URVhUCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3Vsb25nX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKQEAgLTI4NSwxMSArMzQxLDE0IEBACiAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JPTkxZKTsKICAgICBpZiAobXlyZWcgJiYgY29udGV4dE5hbWUpCiAgICAgICBteXJlZy0+Y29udGV4dE5hbWUgPSBzdHJkdXAoY29udGV4dE5hbWUpOwotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZTIoCiAgICAgICAgIG15cmVnLCBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCiAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YodV9sb25nKSwgQVNOX1VOU0lHTkVELCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX1JFQURfT05MWV9VTE9OR19JTlNUQU5DRV9DT05URVhUICovCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWdpc3Rlcl91bG9uZ19pbnN0YW5jZV9jb250ZXh0LGluc3RhbmNlKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX1VMT05HX0lOU1RBTkNFX0NPTlRFWFQKIGludAogbmV0c25tcF9yZWdpc3Rlcl91bG9uZ19pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLApAQCAtMzAyLDExICszNjEsMTQgQEAKICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUldSSVRFKTsKICAgICBpZiAobXlyZWcgJiYgY29udGV4dE5hbWUpCiAgICAgICBteXJlZy0+Y29udGV4dE5hbWUgPSBzdHJkdXAoY29udGV4dE5hbWUpOwotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZTIoCiAgICAgICAgIG15cmVnLCBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCiAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YodV9sb25nKSwgQVNOX1VOU0lHTkVELCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX1VMT05HX0lOU1RBTkNFX0NPTlRFWFQgKi8KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlZ2lzdGVyX3JlYWRfb25seV9jb3VudGVyMzJfaW5zdGFuY2VfY29udGV4dCxpbnN0YW5jZSkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9SRUFEX09OTFlfQ09VTlRFUjMyX0lOU1RBTkNFX0NPTlRFWFQKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfY291bnRlcjMyX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCkBAIC0zMjEsMTEgKzM4MywxNCBAQAogICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9ST05MWSk7CiAgICAgaWYgKG15cmVnICYmIGNvbnRleHROYW1lKQogICAgICAgbXlyZWctPmNvbnRleHROYW1lID0gc3RyZHVwKGNvbnRleHROYW1lKTsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UyKAogICAgICAgICBteXJlZywgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAogICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKHVfbG9uZyksIEFTTl9DT1VOVEVSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX1JFQURfT05MWV9DT1VOVEVSMzJfSU5TVEFOQ0VfQ09OVEVYVCAqLwogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVnaXN0ZXJfcmVhZF9vbmx5X2xvbmdfaW5zdGFuY2VfY29udGV4dCxpbnN0YW5jZSkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9SRUFEX09OTFlfTE9OR19JTlNUQU5DRV9DT05URVhUCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2xvbmdfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCkBAIC0zNDAsMTEgKzQwNSwxNCBAQAogICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9ST05MWSk7CiAgICAgaWYgKG15cmVnICYmIGNvbnRleHROYW1lKQogICAgICAgbXlyZWctPmNvbnRleHROYW1lID0gc3RyZHVwKGNvbnRleHROYW1lKTsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UyKAogICAgICAgICBteXJlZywgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAogICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKGxvbmcpLCBBU05fSU5URUdFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9SRUFEX09OTFlfTE9OR19JTlNUQU5DRV9DT05URVhUICovCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWdpc3Rlcl9sb25nX2luc3RhbmNlX2NvbnRleHQsaW5zdGFuY2UpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfTE9OR19JTlNUQU5DRV9DT05URVhUCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfbG9uZ19pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCkBAIC0zNTcsMTEgKzQyNSwxNCBAQAogICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9SV1JJVEUpOwogICAgIGlmIChteXJlZyAmJiBjb250ZXh0TmFtZSkKICAgICAgIG15cmVnLT5jb250ZXh0TmFtZSA9IHN0cmR1cChjb250ZXh0TmFtZSk7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlMigKICAgICAgICAgbXlyZWcsIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZihsb25nKSwgQVNOX0lOVEVHRVIsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfTE9OR19JTlNUQU5DRV9DT05URVhUICovCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWdpc3Rlcl9pbnRfaW5zdGFuY2VfY29udGV4dCxpbnN0YW5jZSkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9JTlRfSU5TVEFOQ0VfQ09OVEVYVAogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX2ludF9pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCkBAIC0zNzUsMTEgKzQ0NiwxNCBAQAogICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9SV1JJVEUpOwogICAgIGlmIChteXJlZyAmJiBjb250ZXh0TmFtZSkKICAgICAgIG15cmVnLT5jb250ZXh0TmFtZSA9IHN0cmR1cChjb250ZXh0TmFtZSk7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlMigKICAgICAgICAgbXlyZWcsIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZihpbnQpLCBBU05fSU5URUdFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9JTlRfSU5TVEFOQ0VfQ09OVEVYVCAqLwogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9pbnN0YW5jZV9jb250ZXh0LGluc3RhbmNlKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX1JFQURfT05MWV9JTlRfSU5TVEFOQ0VfQ09OVEVYVAogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnRfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKQEAgLTM5MywxNCArNDY3LDE3IEBACiAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JPTkxZKTsKICAgICBpZiAobXlyZWcgJiYgY29udGV4dE5hbWUpCiAgICAgICBteXJlZy0+Y29udGV4dE5hbWUgPSBzdHJkdXAoY29udGV4dE5hbWUpOwotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZTIoCiAgICAgICAgIG15cmVnLCBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCiAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YoaW50KSwgQVNOX0lOVEVHRVIsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfUkVBRF9PTkxZX0lOVF9JTlNUQU5DRV9DT05URVhUICovCiAKIC8qCiAgKiBDb21wYXRpYmlsaXR5IHdpdGggZWFybGllciAoaW5jb25zaXN0ZW50bHkgbmFtZWQpIHJvdXRpbmUKICAqLworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlYWRfb25seV9pbnRfaW5zdGFuY2VfY29udGV4dCxpbnN0YW5jZSkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUFEX09OTFlfSU5UX0lOU1RBTkNFX0NPTlRFWFQKIGludAogcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLApAQCAtNDEzLDcgKzQ5MCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdCwgc3ViaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dE5hbWUpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVBRF9PTkxZX0lOVF9JTlNUQU5DRV9DT05URVhUICovCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWdpc3Rlcl9udW1fZmlsZV9pbnN0YW5jZSxpbnN0YW5jZSkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9OVU1fRklMRV9JTlNUQU5DRQogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX251bV9maWxlX2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKQEAgLTQzOCwxMSArNTE4LDEyIEBACiAgICAgICAgIHJldHVybiBNSUJfUkVHSVNUUkFUSU9OX0ZBSUxFRDsKICAgICB9CiAKKyAgICBuZmktPnJlZmNudCA9IDE7CiAgICAgbXlyZWcgPSBnZXRfcmVnKG5hbWUsICJmaWxlX251bV9oYW5kbGVyIiwgcmVnX29pZCwgcmVnX29pZF9sZW4sIG5maSwKICAgICAgICAgICAgICAgICAgICAgbW9kZSwgbmV0c25tcF9pbnN0YW5jZV9udW1fZmlsZV9oYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyLCBjb250ZXh0TmFtZSk7CiAgICAgaWYgKE5VTEwgPT0gbXlyZWcpIHsKLSAgICAgICAgZnJlZShuZmkpOyAvKiBTTk1QX0ZSRUUgb3ZlcmtpbGwgb24gbG9jYWwgdmFyICovCisgICAgICAgIG5ldHNubXBfbnVtX2ZpbGVfaW5zdGFuY2VfZGVyZWYobmZpKTsKICAgICAgICAgcmV0dXJuIE1JQl9SRUdJU1RSQVRJT05fRkFJTEVEOwogICAgIH0KIApAQCAtNDUzLDcgKzUzNCwxMCBAQAogCiAgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfaW5zdGFuY2UobXlyZWcpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfTlVNX0ZJTEVfSU5TVEFOQ0UgKi8KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlZ2lzdGVyX2ludF9pbnN0YW5jZSxpbnN0YW5jZSkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9JTlRfSU5TVEFOQ0UKIC8qKgogICogVGhpcyBmdW5jdGlvbiByZWdpc3RlcnMgYW4gaW50IGhlbHBlciBoYW5kbGVyIHRvIGEgc3BlY2lmaWVkIE9JRC4KICAqCkBAIC00NzcsMTIgKzU2MSwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKQogewotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZTIoCiAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKICAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUldSSVRFKSwKICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YoaW50KSwgQVNOX0lOVEVHRVIsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfSU5UX0lOU1RBTkNFICovCiAKICNpZmRlZiBIQVZFX0RNQUxMT0NfSAogc3RhdGljIHZvaWQgZnJlZV93cmFwcGVyKHZvaWQgKiBwKQpAQCAtNDkzLDI5MCArNTc4LDYgQEAKICNkZWZpbmUgZnJlZV93cmFwcGVyIGZyZWUKICNlbmRpZgogCi0jaWZuZGVmIE5FVFNOTVBfTk9fREVQUkVDQVRFRF9GVU5DVElPTlMKLQotLyoqCi0gKiBcZGVwcmVjYXRlZCBUaGlzIGZ1bmN0aW9uIGlzIHVudXNlZCBhbmQgc2NoZWR1bGVkIGZvciByZW1vdmFsIGluIE5ldC1TTk1QIDUuNgotICovCi1pbnQKLW5ldHNubXBfaW5zdGFuY2VfdWxvbmdfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQotewotCi0gICAgdV9sb25nICAgICAgICAgKml0ID0gKHVfbG9uZyAqKSBoYW5kbGVyLT5teXZvaWQ7Ci0gICAgdV9sb25nICAgICAgICAgKml0X3NhdmU7Ci0KLSAgICBERUJVR01TR1RMKCgibmV0c25tcF9pbnN0YW5jZV91bG9uZ19oYW5kbGVyIiwgIkdvdCByZXF1ZXN0OiAgJWRcbiIsCi0gICAgICAgICAgICAgICAgcmVxaW5mby0+bW9kZSkpOwotCi0gICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIGRhdGEgcmVxdWVzdHMgCi0gICAgICAgICAqLwotICAgIGNhc2UgTU9ERV9HRVQ6Ci0gICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0cy0+cmVxdWVzdHZiLCBBU05fVU5TSUdORUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopIGl0LCBzaXplb2YoKml0KSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgICAgIC8qCi0gICAgICAgICAqIFNFVCByZXF1ZXN0cy4gIFNob3VsZCBvbmx5IGdldCBoZXJlIGlmIHJlZ2lzdGVyZWQgUldSSVRFIAotICAgICAgICAgKi8KLSAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgotICAgICAgICBpZiAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dHlwZSAhPSBBU05fVU5TSUdORUQpCi0gICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9XUk9OR1RZUEUpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6Ci0gICAgICAgIC8qCi0gICAgICAgICAqIHN0b3JlIG9sZCBpbmZvIGZvciB1bmRvIGxhdGVyIAotICAgICAgICAgKi8KLSAgICAgICAgaXRfc2F2ZSA9IG5ldHNubXBfbWVtZHVwKGl0LCBzaXplb2YodV9sb25nKSk7Ci0gICAgICAgIGlmIChpdF9zYXZlID09IE5VTEwpIHsKLSAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEUpOwotICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci0gICAgICAgIH0KLSAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2FkZF9saXN0X2RhdGEocmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSU5TVEFOQ0VfSEFORExFUl9OQU1FLCBpdF9zYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZyZWVfd3JhcHBlcikpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgotICAgICAgICAvKgotICAgICAgICAgKiB1cGRhdGUgY3VycmVudCAKLSAgICAgICAgICovCi0gICAgICAgIERFQlVHTVNHVEwoKCJ0ZXN0aGFuZGxlciIsICJ1cGRhdGVkIHVfbG9uZyAlbHUgLT4gJWx1XG4iLCAqaXQsCi0gICAgICAgICAgICAgICAgICAgICoocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXIpKSk7Ci0gICAgICAgICppdCA9ICoocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXIpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKLSAgICAgICAgKml0ID0KLSAgICAgICAgICAgICooKHVfbG9uZyAqKSBuZXRzbm1wX3JlcXVlc3RfZ2V0X2xpc3RfZGF0YShyZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlNUQU5DRV9IQU5ETEVSX05BTUUpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKLSAgICBjYXNlIE1PREVfU0VUX0ZSRUU6Ci0gICAgICAgIC8qCi0gICAgICAgICAqIG5vdGhpbmcgdG8gZG8gCi0gICAgICAgICAqLwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAoaGFuZGxlci0+bmV4dCAmJiBoYW5kbGVyLT5uZXh0LT5hY2Nlc3NfbWV0aG9kKQotICAgICAgICByZXR1cm4gbmV0c25tcF9jYWxsX25leHRfaGFuZGxlcihoYW5kbGVyLCByZWdpbmZvLCByZXFpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cyk7Ci0KLSAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLX0KLQotLyoqCi0gKiBcZGVwcmVjYXRlZCBUaGlzIGZ1bmN0aW9uIGlzIHVudXNlZCBhbmQgc2NoZWR1bGVkIGZvciByZW1vdmFsIGluIE5ldC1TTk1QIDUuNgotICovCi1pbnQKLW5ldHNubXBfaW5zdGFuY2VfY291bnRlcjMyX2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKLXsKLQotICAgIHVfbG9uZyAgICAgICAgICppdCA9ICh1X2xvbmcgKikgaGFuZGxlci0+bXl2b2lkOwotCi0gICAgREVCVUdNU0dUTCgoIm5ldHNubXBfaW5zdGFuY2VfY291bnRlcjMyX2hhbmRsZXIiLAotICAgICAgICAgICAgICAgICJHb3QgcmVxdWVzdDogICVkXG4iLCByZXFpbmZvLT5tb2RlKSk7Ci0KLSAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKLSAgICAgICAgLyoKLSAgICAgICAgICogZGF0YSByZXF1ZXN0cyAKLSAgICAgICAgICovCi0gICAgY2FzZSBNT0RFX0dFVDoKLSAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3RzLT5yZXF1ZXN0dmIsIEFTTl9DT1VOVEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSBpdCwgc2l6ZW9mKCppdCkpOwotICAgICAgICBicmVhazsKLQotICAgICAgICAvKgotICAgICAgICAgKiBTRVQgcmVxdWVzdHMuICBTaG91bGQgb25seSBnZXQgaGVyZSBpZiByZWdpc3RlcmVkIFJXUklURSAKLSAgICAgICAgICovCi0gICAgZGVmYXVsdDoKLSAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKLSAgICAgICAgICAgICAgICAgIm5ldHNubXBfaW5zdGFuY2VfY291bnRlcjMyX2hhbmRsZXI6IGlsbGVnYWwgbW9kZVxuIik7Ci0gICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsIFNOTVBfRVJSX0dFTkVSUik7Ci0gICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotICAgIH0KLSAgICBpZiAoaGFuZGxlci0+bmV4dCAmJiBoYW5kbGVyLT5uZXh0LT5hY2Nlc3NfbWV0aG9kKQotICAgICAgICByZXR1cm4gbmV0c25tcF9jYWxsX25leHRfaGFuZGxlcihoYW5kbGVyLCByZWdpbmZvLCByZXFpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cyk7Ci0gICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci19Ci0KLS8qKgotICogXGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyB1bnVzZWQgYW5kIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBOZXQtU05NUCA1LjYKLSAqLwotaW50Ci1uZXRzbm1wX2luc3RhbmNlX2xvbmdfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQotewotCi0gICAgbG9uZyAgICAgICAgICAgKml0ID0gKGxvbmcgKikgaGFuZGxlci0+bXl2b2lkOwotICAgIGxvbmcgICAgICAgICAgICppdF9zYXZlOwotCi0gICAgREVCVUdNU0dUTCgoIm5ldHNubXBfaW5zdGFuY2VfbG9uZ19oYW5kbGVyIiwgIkdvdCByZXF1ZXN0OiAgJWRcbiIsCi0gICAgICAgICAgICAgICAgcmVxaW5mby0+bW9kZSkpOwotCi0gICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIGRhdGEgcmVxdWVzdHMgCi0gICAgICAgICAqLwotICAgIGNhc2UgTU9ERV9HRVQ6Ci0gICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0cy0+cmVxdWVzdHZiLCBBU05fSU5URUdFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgaXQsIHNpemVvZigqaXQpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgLyoKLSAgICAgICAgICogU0VUIHJlcXVlc3RzLiAgU2hvdWxkIG9ubHkgZ2V0IGhlcmUgaWYgcmVnaXN0ZXJlZCBSV1JJVEUgCi0gICAgICAgICAqLwotICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6Ci0gICAgICAgIGlmIChyZXF1ZXN0cy0+cmVxdWVzdHZiLT50eXBlICE9IEFTTl9JTlRFR0VSKQotICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfV1JPTkdUWVBFKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgotICAgICAgICAvKgotICAgICAgICAgKiBzdG9yZSBvbGQgaW5mbyBmb3IgdW5kbyBsYXRlciAKLSAgICAgICAgICovCi0gICAgICAgIGl0X3NhdmUgPSBuZXRzbm1wX21lbWR1cChpdCwgc2l6ZW9mKGxvbmcpKTsKLSAgICAgICAgaWYgKGl0X3NhdmUgPT0gTlVMTCkgewotICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRSk7Ci0gICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLSAgICAgICAgfQotICAgICAgICBuZXRzbm1wX3JlcXVlc3RfYWRkX2xpc3RfZGF0YShyZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJTlNUQU5DRV9IQU5ETEVSX05BTUUsIGl0X3NhdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZnJlZV93cmFwcGVyKSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046Ci0gICAgICAgIC8qCi0gICAgICAgICAqIHVwZGF0ZSBjdXJyZW50IAotICAgICAgICAgKi8KLSAgICAgICAgREVCVUdNU0dUTCgoInRlc3RoYW5kbGVyIiwgInVwZGF0ZWQgdV9sb25nICVsdSAtPiAlbHVcbiIsICppdCwKLSAgICAgICAgICAgICAgICAgICAgKihyZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcikpKTsKLSAgICAgICAgKml0ID0gKihyZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBNT0RFX1NFVF9VTkRPOgotICAgICAgICAqaXQgPQotICAgICAgICAgICAgKigodV9sb25nICopIG5ldHNubXBfcmVxdWVzdF9nZXRfbGlzdF9kYXRhKHJlcXVlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOU1RBTkNFX0hBTkRMRVJfTkFNRSkpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTU9ERV9TRVRfQ09NTUlUOgotICAgIGNhc2UgTU9ERV9TRVRfRlJFRToKLSAgICAgICAgLyoKLSAgICAgICAgICogbm90aGluZyB0byBkbyAKLSAgICAgICAgICovCi0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAoaGFuZGxlci0+bmV4dCAmJiBoYW5kbGVyLT5uZXh0LT5hY2Nlc3NfbWV0aG9kKQotICAgICAgICByZXR1cm4gbmV0c25tcF9jYWxsX25leHRfaGFuZGxlcihoYW5kbGVyLCByZWdpbmZvLCByZXFpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cyk7Ci0gICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci19Ci0KLS8qKgotICogXGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyB1bnVzZWQgYW5kIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBOZXQtU05NUCA1LjYKLSAqLwotaW50Ci1uZXRzbm1wX2luc3RhbmNlX2ludF9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCi17Ci0KLSAgICBpbnQgKml0ID0gKGludCAqKSBoYW5kbGVyLT5teXZvaWQ7Ci0gICAgaW50ICppdF9zYXZlOwotICAgIGxvbmcgdG1wX2l0OwotICAgIAotICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX2luc3RhbmNlX2ludF9oYW5kbGVyIiwgIkdvdCByZXF1ZXN0OiAgJWRcbiIsCi0gICAgICAgICAgICAgICAgcmVxaW5mby0+bW9kZSkpOwotCi0gICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIGRhdGEgcmVxdWVzdHMgCi0gICAgICAgICAqLwotICAgIGNhc2UgTU9ERV9HRVQ6Ci0JLyoKLQkgKiBVc2UgYSBsb25nIGhlcmUsIG90aGVyd2lzZSBvbiA2NCBiaXQgdXNlIG9mIGFuIGludCB3b3VsZCBmYWlsCi0JICovCi0JdG1wX2l0ID0gKml0OwotICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdHMtPnJlcXVlc3R2YiwgQVNOX0lOVEVHRVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopICZ0bXBfaXQsIHNpemVvZih0bXBfaXQpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgLyoKLSAgICAgICAgICogU0VUIHJlcXVlc3RzLiAgU2hvdWxkIG9ubHkgZ2V0IGhlcmUgaWYgcmVnaXN0ZXJlZCBSV1JJVEUgCi0gICAgICAgICAqLwotICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6Ci0gICAgICAgIGlmIChyZXF1ZXN0cy0+cmVxdWVzdHZiLT50eXBlICE9IEFTTl9JTlRFR0VSKQotICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfV1JPTkdUWVBFKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgotICAgICAgICAvKgotICAgICAgICAgKiBzdG9yZSBvbGQgaW5mbyBmb3IgdW5kbyBsYXRlciAKLSAgICAgICAgICovCi0gICAgICAgIGl0X3NhdmUgPSBuZXRzbm1wX21lbWR1cChpdCwgc2l6ZW9mKGludCkpOwotICAgICAgICBpZiAoaXRfc2F2ZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFKTsKLSAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotICAgICAgICB9Ci0gICAgICAgIG5ldHNubXBfcmVxdWVzdF9hZGRfbGlzdF9kYXRhKHJlcXVlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9kYXRhX2xpc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKElOU1RBTkNFX0hBTkRMRVJfTkFNRSwgaXRfc2F2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmcmVlX3dyYXBwZXIpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIE1PREVfU0VUX0FDVElPTjoKLSAgICAgICAgLyoKLSAgICAgICAgICogdXBkYXRlIGN1cnJlbnQgCi0gICAgICAgICAqLwotICAgICAgICBERUJVR01TR1RMKCgidGVzdGhhbmRsZXIiLCAidXBkYXRlZCBpbnQgJWQgLT4gJWxkXG4iLCAqaXQsCi0gICAgICAgICAgICAgICAgICAgICoocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXIpKSk7Ci0gICAgICAgICppdCA9IChpbnQpICoocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXIpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKLSAgICAgICAgKml0ID0KLSAgICAgICAgICAgICooKHVfaW50ICopIG5ldHNubXBfcmVxdWVzdF9nZXRfbGlzdF9kYXRhKHJlcXVlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5TVEFOQ0VfSEFORExFUl9OQU1FKSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6Ci0gICAgY2FzZSBNT0RFX1NFVF9GUkVFOgotICAgICAgICAvKgotICAgICAgICAgKiBub3RoaW5nIHRvIGRvIAotICAgICAgICAgKi8KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlmIChoYW5kbGVyLT5uZXh0ICYmIGhhbmRsZXItPm5leHQtPmFjY2Vzc19tZXRob2QpCi0gICAgICAgIHJldHVybiBuZXRzbm1wX2NhbGxfbmV4dF9oYW5kbGVyKGhhbmRsZXIsIHJlZ2luZm8sIHJlcWluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzKTsKLSAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLX0KLQotI2VuZGlmIC8qIE5FVFNOTVBfTk9fREVQUkVDQVRFRF9GVU5DVElPTlMgKi8KLQogaW50CiBuZXRzbm1wX2luc3RhbmNlX251bV9maWxlX2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLApAQCAtNzg0LDcgKzU4NSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKIHsKICAgICBuZXRzbm1wX251bV9maWxlX2luc3RhbmNlICpuZmk7Ci0gICAgdV9sb25nIGl0LCAqaXRfc2F2ZTsKKyAgICB1X2xvbmcgaXQ7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorICAgIHVfbG9uZyAqaXRfc2F2ZTsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICBpbnQgcmM7CiAKICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGhhbmRsZXIpOwpAQCAtODI2LDYgKzYzMCw3IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIFNFVCByZXF1ZXN0cy4gIFNob3VsZCBvbmx5IGdldCBoZXJlIGlmIHJlZ2lzdGVyZWQgUldSSVRFIAogICAgICAgICAgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCA9PSBuZmktPmZpbGVwKTsKICAgICAgICAgaWYgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnR5cGUgIT0gbmZpLT50eXBlKQpAQCAtODk4LDYgKzcwMywxMiBAQAogICAgICAgICAgICAgbmZpLT5maWxlcCA9IE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgZGVmYXVsdDoKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgIm5ldHNubXBfaW5zdGFuY2VfbnVtX2ZpbGVfaGFuZGxlcjogaWxsZWdhbCBtb2RlXG4iKTsKKyAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywgU05NUF9FUlJfR0VORVJSKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiAgICAgfQogCiAgICAgaWYgKGhhbmRsZXItPm5leHQgJiYgaGFuZGxlci0+bmV4dC0+YWNjZXNzX21ldGhvZCkKQEAgLTkwNiw5MyArNzE3LDYgQEAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KIAotI2lmbmRlZiBORVRTTk1QX05PX0RFUFJFQ0FURURfRlVOQ1RJT05TCi0KLS8qKgotICogXGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyB1bnVzZWQgYW5kIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBOZXQtU05NUCA1LjYKLSAqLwotaW50Ci1uZXRzbm1wX2luc3RhbmNlX3VpbnRfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQotewotCi0gICAgdW5zaWduZWQgaW50ICppdCA9ICh1bnNpZ25lZCBpbnQgKikgaGFuZGxlci0+bXl2b2lkOwotICAgIHVuc2lnbmVkIGludCAqaXRfc2F2ZTsKLSAgICB1bnNpZ25lZCBsb25nIHRtcF9pdDsKLSAgICAKLSAgICBERUJVR01TR1RMKCgibmV0c25tcF9pbnN0YW5jZV91aW50X2hhbmRsZXIiLCAiR290IHJlcXVlc3Q6ICAlZFxuIiwKLSAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKSk7Ci0KLSAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKLSAgICAgICAgLyoKLSAgICAgICAgICogZGF0YSByZXF1ZXN0cyAKLSAgICAgICAgICovCi0gICAgY2FzZSBNT0RFX0dFVDoKLQkvKgotCSAqIFVzZSBhIGxvbmcgaGVyZSwgb3RoZXJ3aXNlIG9uIDY0IGJpdCB1c2Ugb2YgYW4gaW50IHdvdWxkIGZhaWwKLQkgKi8KLQl0bXBfaXQgPSAqaXQ7Ci0gICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0cy0+cmVxdWVzdHZiLCBBU05fVU5TSUdORUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopICZ0bXBfaXQsIHNpemVvZih1bnNpZ25lZCBsb25nKSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgICAgIC8qCi0gICAgICAgICAqIFNFVCByZXF1ZXN0cy4gIFNob3VsZCBvbmx5IGdldCBoZXJlIGlmIHJlZ2lzdGVyZWQgUldSSVRFIAotICAgICAgICAgKi8KLSAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgotICAgICAgICBpZiAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dHlwZSAhPSBBU05fVU5TSUdORUQpCi0gICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9XUk9OR1RZUEUpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6Ci0gICAgICAgIC8qCi0gICAgICAgICAqIHN0b3JlIG9sZCBpbmZvIGZvciB1bmRvIGxhdGVyIAotICAgICAgICAgKi8KLSAgICAgICAgaXRfc2F2ZSA9IG5ldHNubXBfbWVtZHVwKGl0LCBzaXplb2YodV9pbnQpKTsKLSAgICAgICAgaWYgKGl0X3NhdmUgPT0gTlVMTCkgewotICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRSk7Ci0gICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLSAgICAgICAgfQotICAgICAgICBuZXRzbm1wX3JlcXVlc3RfYWRkX2xpc3RfZGF0YShyZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJTlNUQU5DRV9IQU5ETEVSX05BTUUsIGl0X3NhdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZnJlZV93cmFwcGVyKSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046Ci0gICAgICAgIC8qCi0gICAgICAgICAqIHVwZGF0ZSBjdXJyZW50IAotICAgICAgICAgKi8KLSAgICAgICAgREVCVUdNU0dUTCgoInRlc3RoYW5kbGVyIiwgInVwZGF0ZWQgdWludCAlZCAtPiAlbGRcbiIsICppdCwKLSAgICAgICAgICAgICAgICAgICAgKihyZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcikpKTsKLSAgICAgICAgKml0ID0gKHVuc2lnbmVkIGludCkgKihyZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBNT0RFX1NFVF9VTkRPOgotICAgICAgICAqaXQgPQotICAgICAgICAgICAgKigodV9pbnQgKikgbmV0c25tcF9yZXF1ZXN0X2dldF9saXN0X2RhdGEocmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlNUQU5DRV9IQU5ETEVSX05BTUUpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKLSAgICBjYXNlIE1PREVfU0VUX0ZSRUU6Ci0gICAgICAgIC8qCi0gICAgICAgICAqIG5vdGhpbmcgdG8gZG8gCi0gICAgICAgICAqLwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgaWYgKGhhbmRsZXItPm5leHQgJiYgaGFuZGxlci0+bmV4dC0+YWNjZXNzX21ldGhvZCkKLSAgICAgICAgcmV0dXJuIG5ldHNubXBfY2FsbF9uZXh0X2hhbmRsZXIoaGFuZGxlciwgcmVnaW5mbywgcmVxaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMpOwotICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQotCi0jZW5kaWYgLyogTkVUU05NUF9OT19ERVBSRUNBVEVEX0ZVTkNUSU9OUyAqLwotCiBpbnQKIG5ldHNubXBfaW5zdGFuY2VfaGVscGVyX2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKQEAgLTEwMjUsNiArNzQ5LDcgQEAKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CiAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CkBAIC0xMDQwLDYgKzc2NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cyk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICBjYXNlIE1PREVfR0VUTkVYVDoKICAgICAgICAgaWYgKGNtcCA8IDAgfHwgKGNtcCA9PSAwICYmIHJlcXVlc3RzLT5pbmNsdXNpdmUpKSB7CkBAIC0xMDY1LDYgKzc5MSwxMSBAQAogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgIm5ldHNubXBfaW5zdGFuY2VfaGVscGVyX2hhbmRsZXI6IGlsbGVnYWwgbW9kZVxuIik7CisgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsIFNOTVBfRVJSX0dFTkVSUik7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogICAgIH0KICAgICAvKgogICAgICAqIGdvdCBoZXJlIG9ubHkgaWYgaWxsZWdhbCBtb2RlIGZvdW5kIApkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9tb2RlX2VuZF9jYWxsLmMgYi9hZ2VudC9oZWxwZXJzL21vZGVfZW5kX2NhbGwuYwppbmRleCBkN2RkMzAyLi4wYmZjYzY5IDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL21vZGVfZW5kX2NhbGwuYworKysgYi9hZ2VudC9oZWxwZXJzL21vZGVfZW5kX2NhbGwuYwpAQCAtOSwxMiArOSwxNyBAQAogICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmg+CiAKK25ldHNubXBfZmVhdHVyZV9wcm92aWRlKG1vZGVfZW5kX2NhbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobW9kZV9lbmRfY2FsbCwgbWliX2hlbHBlcnMpCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NT0RFX0VORF9DQUxMCiAvKiogQGRlZmdyb3VwIG1vZGVfZW5kX2NhbGwgbW9kZV9lbmRfY2FsbAogICogIEF0IHRoZSBlbmQgb2YgYSBzZXJpZXMgb2YgcmVxdWVzdHMsIGNhbGwgYW5vdGhlciBoYW5kbGVyIGhvb2suCiAgKiAgSGFuZGxlcnMgdGhhdCB3YW50IHRvIGxvb3AgdGhyb3VnaCBhIHNlcmllcyBvZiByZXF1ZXN0cyBhbmQgdGhlbgpAQCAtMTEzLDUgKzExOCwxMCBAQAogICAgIAogICAgIHJldHVybiByZXQyOwogfQorI2Vsc2UKK25ldHNubXBfZmVhdHVyZV91bnVzZWQobW9kZV9lbmRfY2FsbCk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NT0RFX0VORF9DQUxMICovCisKKwogLyoqICBAfSAqLwogCmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL211bHRpcGxleGVyLmMgYi9hZ2VudC9oZWxwZXJzL211bHRpcGxleGVyLmMKaW5kZXggZTU0M2Y1Ny4uMmE3YTY2NCAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9tdWx0aXBsZXhlci5jCisrKyBiL2FnZW50L2hlbHBlcnMvbXVsdGlwbGV4ZXIuYwpAQCAtODQsNiArODQsNyBAQAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKICAgICBjYXNlIE1PREVfU0VUX0FDVElPTjoKQEAgLTEwMCw2ICsxMDEsNyBAQAogICAgICAgICAvKgogICAgICAgICAgKiBYWFg6IHByb2Nlc3MgU0VUcyBzcGVjaWFsbHksIGFuZCBwb3NzaWJseSBvdGhlcnMgCiAgICAgICAgICAqLworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ1bnN1cHBvcnRlZCBtb2RlIGZvciBtdWx0aXBsZXhlcjogJWRcbiIsCiAgICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9vbGRfYXBpLmMgYi9hZ2VudC9oZWxwZXJzL29sZF9hcGkuYwppbmRleCBmZGM4YmQ2Li5kMmI5OWQ5IDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL29sZF9hcGkuYworKysgYi9hZ2VudC9oZWxwZXJzL29sZF9hcGkuYwpAQCAtMTMsNiArMTMsOCBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmg+CiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKwogI2RlZmluZSBNSUJfQ0xJRU5UU19BUkVfRVZJTCAxCiAKICNpZmRlZiBIQVZFX0RNQUxMT0NfSApAQCAtNDksNiArNTEsMTkgQEAKICAgICByZXR1cm4gbmV0c25tcF9jcmVhdGVfaGFuZGxlcigib2xkX2FwaSIsIG5ldHNubXBfb2xkX2FwaV9oZWxwZXIpOwogfQogCitzdHJ1Y3QgdmFyaWFibGUgKgorbmV0c25tcF9kdXBsaWNhdGVfdmFyaWFibGUoY29uc3Qgc3RydWN0IHZhcmlhYmxlICp2YXIpCit7CisgICAgc3RydWN0IHZhcmlhYmxlICp2YXIyID0gTlVMTDsKKyAgICAKKyAgICBpZiAodmFyKSB7CisgICAgICAgIGNvbnN0IGludCB2YXJzaXplID0gb2Zmc2V0b2Yoc3RydWN0IHZhcmlhYmxlLCBuYW1lKSArIHZhci0+bmFtZWxlbiAqIHNpemVvZih2YXItPm5hbWVbMF0pOworICAgICAgICB2YXIyID0gbWFsbG9jKHZhcnNpemUpOworICAgICAgICBpZiAodmFyMikKKyAgICAgICAgICAgIG1lbWNweSh2YXIyLCB2YXIsIHZhcnNpemUpOworICAgIH0KKyAgICByZXR1cm4gdmFyMjsKK30KIAogLyoqIFJlZ2lzdGVycyBhbiBvbGQgQVBJIHNldCBpbnRvIHRoZSBtaWIgdHJlZS4gIEZ1bmN0aW9uYWxseSB0aGlzCiAgKiBtaW1pY3MgdGhlIG9sZCByZWdpc3Rlcl9taWJfY29udGV4dCgpIGZ1bmN0aW9uIChhbmQgaW4gZmFjdCB0aGUgbmV3CkBAIC01NiwxMCArNzEsMTAgQEAKICAqLwogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX29sZF9hcGkoY29uc3QgY2hhciAqbW9kdWxlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmFyaWFibGUgKnZhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdmFyaWFibGUgKnZhciwKICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdmFyc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtdmFycywKLSAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiBtaWJsb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogbWlibG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtaWJsb2NsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHByaW9yaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCByYW5nZV9zdWJpZCwKQEAgLTgwLDkgKzk1LDggQEAKICAgICAgICAgaWYgKHJlZ2luZm8gPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAKLSAgICAgICAgdnAgPSBuZXRzbm1wX21lbWR1cCgoY29uc3Qgc3RydWN0IHZhcmlhYmxlICopCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChjb25zdCBjaGFyICopIHZhciArIHZhcnNpemUgKiBpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJzaXplKTsKKwl2cCA9IG5ldHNubXBfZHVwbGljYXRlX3ZhcmlhYmxlKChjb25zdCBzdHJ1Y3QgdmFyaWFibGUgKikKKwkJCQkJKChjb25zdCBjaGFyICopIHZhciArIHZhcnNpemUgKiBpKSk7CiAKICAgICAgICAgcmVnaW5mby0+aGFuZGxlciA9IGdldF9vbGRfYXBpX2hhbmRsZXIoKTsKICAgICAgICAgcmVnaW5mby0+aGFuZGxlck5hbWUgPSBzdHJkdXAobW9kdWxlTmFtZSk7CkBAIC0xMDAsNiArMTE0LDkgQEAKICAgICAgICAgbWVtY3B5KHJlZ2luZm8tPnJvb3RvaWQgKyBtaWJsb2NsZW4sIHZwLT5uYW1lLCB2cC0+bmFtZWxlbgogICAgICAgICAgICAgICAgKiBzaXplb2Yob2lkKSk7CiAgICAgICAgIHJlZ2luZm8tPmhhbmRsZXItPm15dm9pZCA9ICh2b2lkICopIHZwOworICAgICAgICByZWdpbmZvLT5oYW5kbGVyLT5kYXRhX2Nsb25lCisJICAgID0gKHZvaWQgKigqKSh2b2lkICopKW5ldHNubXBfZHVwbGljYXRlX3ZhcmlhYmxlOworICAgICAgICByZWdpbmZvLT5oYW5kbGVyLT5kYXRhX2ZyZWUgPSBmcmVlOwogCiAgICAgICAgIHJlZ2luZm8tPnByaW9yaXR5ID0gcHJpb3JpdHk7CiAgICAgICAgIHJlZ2luZm8tPnJhbmdlX3N1YmlkID0gcmFuZ2Vfc3ViaWQ7CkBAIC0xMDcsMTQgKzEyNCwxNSBAQAogICAgICAgICByZWdpbmZvLT5yYW5nZV91Ym91bmQgPSByYW5nZV91Ym91bmQ7CiAgICAgICAgIHJlZ2luZm8tPnRpbWVvdXQgPSB0aW1lb3V0OwogICAgICAgICByZWdpbmZvLT5jb250ZXh0TmFtZSA9IChjb250ZXh0KSA/IHN0cmR1cChjb250ZXh0KSA6IE5VTEw7Ci0gICAgICAgIHJlZ2luZm8tPm1vZGVzID0gSEFORExFUl9DQU5fUldSSVRFOworICAgICAgICByZWdpbmZvLT5tb2RlcyA9IHZwLT5hY2wgPT0gTkVUU05NUF9PTERBUElfUk9OTFkgPyBIQU5ETEVSX0NBTl9ST05MWSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFOwogCiAgICAgICAgIC8qCiAgICAgICAgICAqIHJlZ2lzdGVyIG91cnNlbHZlcyBpbiB0aGUgbWliIHRyZWUgCiAgICAgICAgICAqLwogICAgICAgICBpZiAobmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyKHJlZ2luZm8pICE9IE1JQl9SRUdJU1RFUkVEX09LKSB7CiAgICAgICAgICAgICAvKiogbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9mcmVlKHJlZ2luZm8pOyBhbHJlYWR5IGZyZWVkICovCi0gICAgICAgICAgICBTTk1QX0ZSRUUodnApOworICAgICAgICAgICAgLyogU05NUF9GUkVFKHZwKTsgYWxyZWFkeSBmcmVlZCAqLwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CkBAIC0xMjMsNyArMTQxLDcgQEAKIC8qKiByZWdpc3RlcnMgYSByb3cgd2l0aGluIGEgbWliIHRhYmxlICovCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfbWliX3RhYmxlX3Jvdyhjb25zdCBjaGFyICptb2R1bGVOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2YXJpYWJsZSAqdmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB2YXJpYWJsZSAqdmFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB2YXJzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW12YXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIG1pYmxvYywKQEAgLTEzNyw4ICsxNTUsOCBAQAogICAgIG9pZCAgICAgICAgICAgICB1Ym91bmQgPSAwOwogCiAgICAgZm9yIChpID0gMDsgaSA8IG51bXZhcnM7IGkrKykgewotICAgICAgICBzdHJ1Y3QgdmFyaWFibGUgKnZyID0KLSAgICAgICAgICAgIChzdHJ1Y3QgdmFyaWFibGUgKikgKChjaGFyICopIHZhciArIChpICogdmFyc2l6ZSkpOworICAgICAgICBjb25zdCBzdHJ1Y3QgdmFyaWFibGUgKnZyID0KKyAgICAgICAgICAgIChjb25zdCBzdHJ1Y3QgdmFyaWFibGUgKikgKChjb25zdCBjaGFyICopIHZhciArIChpICogdmFyc2l6ZSkpOwogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyOwogICAgICAgICBpZiAoIHZhcl9zdWJpZCA+IChpbnQpbWlibG9jbGVuICkgewogICAgICAgICAgICAgYnJlYWs7ICAgIC8qIGRvZXNuJ3QgbWFrZSBzZW5zZSAqLwpAQCAtMTc5LDE0ICsxOTcsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgIHItPnJvb3RvaWRfbGVuKSk7CiAgICAgICAgIERFQlVHTVNHKCgibmV0c25tcF9yZWdpc3Rlcl9taWJfdGFibGVfcm93IiwgIiglZClcbiIsCiAgICAgICAgICAgICAgICAgICAgICAodmFyX3N1YmlkIC0gdnItPm5hbWVsZW4pKSk7Ci0gICAgICAgIHItPmhhbmRsZXItPm15dm9pZCA9ICh2b2lkICopIG1hbGxvYyh2YXJzaXplKTsKKyAgICAgICAgci0+aGFuZGxlci0+bXl2b2lkID0gbmV0c25tcF9kdXBsaWNhdGVfdmFyaWFibGUodnIpOworICAgICAgICByLT5oYW5kbGVyLT5kYXRhX2Nsb25lID0gKHZvaWQgKigqKSh2b2lkICopKW5ldHNubXBfZHVwbGljYXRlX3ZhcmlhYmxlOworICAgICAgICByLT5oYW5kbGVyLT5kYXRhX2ZyZWUgPSBmcmVlOwogCiAgICAgICAgIGlmIChyLT5oYW5kbGVyLT5teXZvaWQgPT0gTlVMTCkgewogICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9mcmVlKHIpOwogICAgICAgICAgICAgcmMgPSBNSUJfUkVHSVNUUkFUSU9OX0ZBSUxFRDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIG1lbWNweSgoY2hhciAqKSByLT5oYW5kbGVyLT5teXZvaWQsIHZyLCB2YXJzaXplKTsKIAogICAgICAgICByLT5jb250ZXh0TmFtZSA9IChjb250ZXh0KSA/IHN0cmR1cChjb250ZXh0KSA6IE5VTEw7CiAKQEAgLTI1NiwxMyArMjc1LDEzIEBACiAgICAgaW50ICAgICAgICAgICAgIHN0YXR1czsKIAogICAgIHN0cnVjdCB2YXJpYWJsZSAqdnA7Ci0gICAgV3JpdGVNZXRob2QgICAgKndyaXRlX21ldGhvZCA9IE5VTEw7Ci0gICAgc2l6ZV90ICAgICAgICAgIGxlbjsKLSAgICB1X2NoYXIgICAgICAgICAqYWNjZXNzID0gTlVMTDsKICAgICBuZXRzbm1wX29sZF9hcGlfY2FjaGUgKmNhY2hlcHRyOwogICAgIG5ldHNubXBfYWdlbnRfc2Vzc2lvbiAqb2xkYXNwID0gTlVMTDsKLSAgICBvaWQgICAgICAgICAgICAgdG1wX25hbWVbTUFYX09JRF9MRU5dOworICAgIHVfY2hhciAgICAgICAgICphY2Nlc3MgPSBOVUxMOworICAgIFdyaXRlTWV0aG9kICAgICp3cml0ZV9tZXRob2QgPSBOVUxMOworICAgIHNpemVfdCAgICAgICAgICBsZW47CiAgICAgc2l6ZV90ICAgICAgICAgIHRtcF9sZW47CisgICAgb2lkICAgICAgICAgICAgIHRtcF9uYW1lW01BWF9PSURfTEVOXTsKIAogICAgIHZwID0gKHN0cnVjdCB2YXJpYWJsZSAqKSBoYW5kbGVyLT5teXZvaWQ7CiAKQEAgLTI5Myw3ICszMTIsOSBAQAogICAgICAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKICAgICAgICAgY2FzZSBNT0RFX0dFVDoKICAgICAgICAgY2FzZSBNT0RFX0dFVE5FWFQ6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBBY3R1YWxseSBjYWxsIHRoZSBvbGQgbWliLW1vZHVsZSBmdW5jdGlvbiAKICAgICAgICAgICAgICAqLwpAQCAtMzI0LDcgKzM0NSw5IEBACiAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgKiByZXN1bHQgcmV0dXJuZWQgCiAgICAgICAgICAgICAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAgICAgICAgIGlmIChyZXFpbmZvLT5tb2RlICE9IE1PREVfU0VUX1JFU0VSVkUxKQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3RzLT5yZXF1ZXN0dmIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdnAtPnR5cGUsIGFjY2VzcywgbGVuKTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0zNDksNyArMzcyLDkgQEAKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBBQUE6IGZhbGwgdGhyb3VnaCBmb3IgZXZlcnl0aGluZyB0aGF0IGlzIGEgc2V0IChzZWUgQkJCKSAKICAgICAgICAgICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgICAgIGlmIChyZXFpbmZvLT5tb2RlICE9IE1PREVfU0VUX1JFU0VSVkUxKQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FjaGVwdHIgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfb2xkX2FwaV9jYWNoZSk7CmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL3JlYWRfb25seS5jIGIvYWdlbnQvaGVscGVycy9yZWFkX29ubHkuYwppbmRleCBiODVjZmI1Li4wYjA2ZDRmIDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL3JlYWRfb25seS5jCisrKyBiL2FnZW50L2hlbHBlcnMvcmVhZF9vbmx5LmMKQEAgLTQ0LDYgKzQ0LDcgQEAKIAogICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgewogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKICAgICBjYXNlIE1PREVfU0VUX0FDVElPTjoKQEAgLTUyLDYgKzUzLDcgQEAKICAgICBjYXNlIE1PREVfU0VUX1VORE86CiAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3JfYWxsKHJlcXVlc3RzLCBTTk1QX0VSUl9OT1RXUklUQUJMRSk7CiAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT1RXUklUQUJMRTsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIGNhc2UgTU9ERV9HRVQ6CiAgICAgY2FzZSBNT0RFX0dFVE5FWFQ6CmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL3Jvd19tZXJnZS5jIGIvYWdlbnQvaGVscGVycy9yb3dfbWVyZ2UuYwppbmRleCA5M2QzNTMyLi40YThlNDc2IDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL3Jvd19tZXJnZS5jCisrKyBiL2FnZW50L2hlbHBlcnMvcm93X21lcmdlLmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KQEAgLTExLDYgKzEyLDEyIEBACiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmCiAKK25ldHNubXBfZmVhdHVyZV9wcm92aWRlKHJvd19tZXJnZSkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyb3dfbWVyZ2UsIHJvd19tZXJnZV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yocm93X21lcmdlX2FsbCwgbWliX2hlbHBlcnMpCisKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JPV19NRVJHRQogLyoqIEBkZWZncm91cCByb3dfbWVyZ2Ugcm93X21lcmdlCiAgKiAgQ2FsbHMgc3ViIGhhbmRsZXJzIHdpdGggcmVxdWVzdCBmb3Igb25lIHJvdyBhdCBhIHRpbWUuCiAgKiAgQGluZ3JvdXAgdXRpbGl0aWVzCkBAIC0zOCw2ICs0NSw4IEBACiAKIC8qKiBmdW5jdGlvbmFsbHkgdGhlIHNhbWUgYXMgY2FsbGluZyBuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXIoKSBidXQgYWxzbwogICogaW5qZWN0cyBhIHJvd19tZXJnZSBoYW5kbGVyIGF0IHRoZSBzYW1lIHRpbWUgZm9yIHlvdS4gKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWdpc3Rlcl9yb3dfbWVyZ2UsIHJvd19tZXJnZV9hbGwpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfUk9XX01FUkdFCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfcm93X21lcmdlKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8pCiB7CkBAIC00NSw2ICs1NCw3IEBACiAJCSAgICBuZXRzbm1wX2dldF9yb3dfbWVyZ2VfaGFuZGxlcihyZWdpbmZvLT5yb290b2lkX2xlbisxKSk7CiAgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlcihyZWdpbmZvKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX1JPV19NRVJHRSAqLwogCiBzdGF0aWMgdm9pZAogX3JtX3N0YXR1c19mcmVlKHZvaWQgKm1lbSkKQEAgLTM2Miw1ICszNzIsMTAgQEAKICAgICBuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXJfYnlfbmFtZSgicm93X21lcmdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2dldF9yb3dfbWVyZ2VfaGFuZGxlcigtMSkpOwogfQorI2Vsc2UgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ST1dfTUVSR0UgKi8KK25ldHNubXBfZmVhdHVyZV91bnVzZWQocm93X21lcmdlKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JPV19NRVJHRSAqLworCisKIC8qKiAgQH0gKi8KIApkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9zY2FsYXIuYyBiL2FnZW50L2hlbHBlcnMvc2NhbGFyLmMKaW5kZXggYjczNGMwNC4uN2E0YzllMCAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9zY2FsYXIuYworKysgYi9hZ2VudC9oZWxwZXJzL3NjYWxhci5jCkBAIC0xNjIsNiArMTYyLDcgQEAKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CiAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CkBAIC0xODAsNiArMTgxLDcgQEAKICAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICBjYXNlIE1PREVfR0VUTkVYVDoKICAgICAgICAgcmVnaW5mby0+cm9vdG9pZFtyZWdpbmZvLT5yb290b2lkX2xlbisrXSA9IDA7CmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL3NjYWxhcl9ncm91cC5jIGIvYWdlbnQvaGVscGVycy9zY2FsYXJfZ3JvdXAuYwppbmRleCAwOWNlZTFhLi42YjdmMDk4IDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL3NjYWxhcl9ncm91cC5jCisrKyBiL2FnZW50L2hlbHBlcnMvc2NhbGFyX2dyb3VwLmMKQEAgLTE1LDYgKzE1LDE3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaD4KIAorc3RhdGljIG5ldHNubXBfc2NhbGFyX2dyb3VwKgorY2xvbmVfc2NhbGFyX2dyb3VwKG5ldHNubXBfc2NhbGFyX2dyb3VwKiBzcmMpCit7CisgIG5ldHNubXBfc2NhbGFyX2dyb3VwICp0ID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3NjYWxhcl9ncm91cCk7CisgIGlmKHQgIT0gTlVMTCkgeworICAgIHQtPmxib3VuZCA9IHNyYy0+bGJvdW5kOworICAgIHQtPnVib3VuZCA9IHNyYy0+dWJvdW5kOworICB9CisgIHJldHVybiB0OworfQorCiAvKiogQGRlZmdyb3VwIHNjYWxhcl9ncm91cF9ncm91cCBzY2FsYXJfZ3JvdXAKICAqICBQcm9jZXNzIGdyb3VwcyBvZiBzY2FsYXJzLgogICogIEBpbmdyb3VwIGxlYWYKQEAgLTM4LDYgKzQ5LDggQEAKIAkgICAgc2dyb3VwLT5sYm91bmQgPSBmaXJzdDsKIAkgICAgc2dyb3VwLT51Ym91bmQgPSBsYXN0OwogICAgICAgICAgICAgcmV0LT5teXZvaWQgPSAodm9pZCAqKXNncm91cDsKKyAgICAgICAgICAgIHJldC0+ZGF0YV9mcmVlID0gZnJlZTsKKyAgICAgICAgICAgIHJldC0+ZGF0YV9jbG9uZSA9ICh2b2lkICooKikodm9pZCAqKSljbG9uZV9zY2FsYXJfZ3JvdXA7CiAJfQogICAgIH0KICAgICByZXR1cm4gcmV0OwpAQCAtOTYsMTIgKzEwOSwxNCBAQAogICAgICAgICByZXQgPSBTTk1QX05PU1VDSE9CSkVDVDsKICAgICAgICAgLyogRmFsbHRocm91Z2ggKi8KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CiAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CiAgICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6CiAgICAgY2FzZSBNT0RFX1NFVF9VTkRPOgogICAgIGNhc2UgTU9ERV9TRVRfRlJFRToKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgaWYgKGNtcCAhPSAwIHx8CiAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lX2xlbmd0aCA8PSByZWdpbmZvLT5yb290b2lkX2xlbikgewogCSAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9zbm1wX2dldF9zdGF0aXN0aWMuYyBiL2FnZW50L2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmMKaW5kZXggYjlkYWM3Ni4uZWZhYzJhYyAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9zbm1wX2dldF9zdGF0aXN0aWMuYworKysgYi9hZ2VudC9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5jCkBAIC0xLDkgKzEsMTkgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oPgogCituZXRzbm1wX2ZlYXR1cmVfcHJvdmlkZShoZWxwZXJfc3RhdGlzdGljcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihoZWxwZXJfc3RhdGlzdGljcywgbWliX2hlbHBlcnMpCisKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9IRUxQRVJfU1RBVElTVElDUworLyogaWYgd2UncmUgbm90IG5lZWRlZCwgdGhlbiBuZWl0aGVyIGlzIHRoaXMgKi8KK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHN0YXRpc3RpY3MpCisjZW5kaWYKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0hFTFBFUl9TVEFUSVNUSUNTCiBzdGF0aWMgaW50CiBuZXRzbm1wX2dldF9zdGF0aXN0aWNfaGVscGVyX2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLApAQCAtNDYsMyArNTYsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9nZXRfc3RhdGlzdGljX2hhbmRsZXIoYmVnaW4gLSBzdGFydCkpOwogICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcl9ncm91cChyZWdpbmZvLCBzdGFydCwgc3RhcnQgKyAoZW5kIC0gYmVnaW4pKTsKIH0KKyNlbHNlIC8qICFORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0hFTFBFUl9HRVRfU1RBVElTVElDUyAqLworbmV0c25tcF9mZWF0dXJlX3VudXNlZChoZWxwZXJfc3RhdGlzdGljcyk7CisjZW5kaWYgLyogIU5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSEVMUEVSX0dFVF9TVEFUSVNUSUNTICovCmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL3N0YXNoX2NhY2hlLmMgYi9hZ2VudC9oZWxwZXJzL3N0YXNoX2NhY2hlLmMKaW5kZXggYzk5ODM2My4uNWRhMTc5NiAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jCisrKyBiL2FnZW50L2hlbHBlcnMvc3Rhc2hfY2FjaGUuYwpAQCAtMSwyNCArMSwyNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKLSNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oPgorbmV0c25tcF9mZWF0dXJlX3Byb3ZpZGUoc3Rhc2hfY2FjaGUpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc3Rhc2hfY2FjaGUsIG1pYl9oZWxwZXJzKQorI2lmZGVmIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX1NUQVNIX0NBQ0hFCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShvaWRfc3Rhc2gpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShvaWRfc3Rhc2hfaXRlcmF0ZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKG9pZF9zdGFzaF9nZXRfZGF0YSkKKyNlbmRpZgogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBU0hfQ0FDSEUKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zdGFzaF90b19uZXh0Lmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oPgorCiBleHRlcm4gTmV0c25tcENhY2hlTG9hZCBfbmV0c25tcF9zdGFzaF9jYWNoZV9sb2FkOwogZXh0ZXJuIE5ldHNubXBDYWNoZUZyZWUgX25ldHNubXBfc3Rhc2hfY2FjaGVfZnJlZTsKICAKLSNpZmRlZiBIQVZFX0RNQUxMT0NfSAotc3RhdGljIHZvaWQgZnJlZV93cmFwcGVyKHZvaWQgKiBwKQotewotICAgIGZyZWUocCk7Ci19Ci0jZWxzZQotI2RlZmluZSBmcmVlX3dyYXBwZXIgZnJlZQotI2VuZGlmCi0KIC8qKiBAZGVmZ3JvdXAgc3Rhc2hfY2FjaGUgc3Rhc2hfY2FjaGUKICAqICBBdXRvbWF0aWNhbGx5IGNhY2hlcyBkYXRhIGZvciBjZXJ0YWluIGhhbmRsZXJzLgogICogIFRoaXMgaGFuZGxlciBjYWNoZXMgZGF0YSBpbiBhbiBvcHRpbWl6ZWQgd2F5IHdoaWNoIG1heSBhbGxldmlhdGUKQEAgLTcxLDcgKzcyLDcgQEAKICAgICB9CiAKICAgICBoYW5kbGVyLT5teXZvaWQgPSBjaW5mbzsKLSAgICBoYW5kbGVyLT5kYXRhX2ZyZWUgPSAmZnJlZV93cmFwcGVyOworICAgIG5ldHNubXBfY2FjaGVfaGFuZGxlcl9vd25zX2NhY2hlKGhhbmRsZXIpOwogCiAgICAgcmV0dXJuIGhhbmRsZXI7CiB9CkBAIC0yNDYsMyArMjQ3LDYgQEAKIH0KIC8qKiAgQH0gKi8KIAorI2Vsc2UgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVEFTSF9DQUNIRSAqLworbmV0c25tcF9mZWF0dXJlX3VudXNlZChzdGFzaF9jYWNoZSk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVEFTSF9DQUNIRSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9zdGFzaF90b19uZXh0LmMgYi9hZ2VudC9oZWxwZXJzL3N0YXNoX3RvX25leHQuYwppbmRleCBmNjc5ZTA0Li5kN2JhZmZkIDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL3N0YXNoX3RvX25leHQuYworKysgYi9hZ2VudC9oZWxwZXJzL3N0YXNoX3RvX25leHQuYwpAQCAtMSw4ICsxLDE4IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAorbmV0c25tcF9mZWF0dXJlX3Byb3ZpZGUoc3Rhc2hfdG9fbmV4dCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzdGFzaF90b19uZXh0LCBtaWJfaGVscGVycykKKworI2lmZGVmIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX1NUQVNIX1RPX05FWFQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKG9pZF9zdGFzaCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKG9pZF9zdGFzaF9hZGRfZGF0YSkKKyNlbmRpZgorCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBU0hfVE9fTkVYVAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N0YXNoX3RvX25leHQuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmg+CkBAIC0xMTQsMyArMTI0LDYgQEAKIH0KIC8qKiAgQH0gKi8KIAorI2Vsc2UgIC8qICEgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVEFTSF9UT19ORVhUICovCituZXRzbm1wX2ZlYXR1cmVfdW51c2VkKHN0YXNoX3RvX25leHQpOworI2VuZGlmIC8qICEgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVEFTSF9UT19ORVhUICovCmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL3RhYmxlLmMgYi9hZ2VudC9oZWxwZXJzL3RhYmxlLmMKaW5kZXggOWViMDEzMi4uODgyZTg0YyAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy90YWJsZS5jCisrKyBiL2FnZW50L2hlbHBlcnMvdGFibGUuYwpAQCAtMjEsMTEgKzIxLDE2IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGUuaD4KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKG9pZF9zdGFzaCkKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKICNpZiBIQVZFX1NUUklOR19ICiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjZWxzZQpAQCAtMzQsNiArMzksMTMgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2FsbCwgbWliX2hlbHBlcnMpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9idWlsZF9yZXN1bHQsIHRhYmxlX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9nZXRfb3JfY3JlYXRlX3Jvd19zdGFzaCwgdGFibGVfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlZ2lzdHJhdGlvbl9vd25zX3RhYmxlX2luZm8sIHRhYmxlX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9zcGFyc2UsIHRhYmxlX2FsbCkKKwogc3RhdGljIHZvaWQgICAgIHRhYmxlX2hlbHBlcl9jbGVhbnVwKG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0dXMpOwpAQCAtMTA1LDYgKzExNywzMSBAQAogICAgIHJldHVybiByZXQ7CiB9CiAKKy8qKiBDb25maWd1cmVzIGEgaGFuZGxlciBzdWNoIHRoYXQgdGFibGUgcmVnaXN0cmF0aW9uIGluZm9ybWF0aW9uIGlzIGZyZWVkIGJ5CisgKiAgbmV0c25tcF9oYW5kbGVyX2ZyZWUoKS4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIGhhbmRsZXItPm15dm9pZCBwb2ludHMgdG8KKyAqICBhbiBvYmplY3Qgb2YgdHlwZSBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvLgorICovCit2b2lkIG5ldHNubXBfaGFuZGxlcl9vd25zX3RhYmxlX2luZm8obmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlcikKK3sKKyAgICBuZXRzbm1wX2Fzc2VydChoYW5kbGVyKTsKKyAgICBuZXRzbm1wX2Fzc2VydChoYW5kbGVyLT5teXZvaWQpOworICAgIGhhbmRsZXItPmRhdGFfY2xvbmUKKwk9ICh2b2lkICooKikodm9pZCAqKSkgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19jbG9uZTsKKyAgICBoYW5kbGVyLT5kYXRhX2ZyZWUKKwk9ICh2b2lkICgqKSh2b2lkICopKSBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWU7Cit9CisKKy8qKiBDb25maWd1cmVzIGEgaGFuZGxlciBzdWNoIHRoYXQgdGFibGUgcmVnaXN0cmF0aW9uIGluZm9ybWF0aW9uIGlzIGZyZWVkIGJ5CisgKiAgbmV0c25tcF9oYW5kbGVyX2ZyZWUoKS4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIHJlZy0+aGFuZGxlci0+bXl2b2lkCisgKiAgcG9pbnRzIHRvIGFuIG9iamVjdCBvZiB0eXBlIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8uCisgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RSQVRJT05fT1dOU19UQUJMRV9JTkZPCit2b2lkIG5ldHNubXBfcmVnaXN0cmF0aW9uX293bnNfdGFibGVfaW5mbyhuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWcpCit7CisgICAgaWYgKHJlZykKKyAgICAgICAgbmV0c25tcF9oYW5kbGVyX293bnNfdGFibGVfaW5mbyhyZWctPmhhbmRsZXIpOworfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNUUkFUSU9OX09XTlNfVEFCTEVfSU5GTyAqLwogCiAvKiogY3JlYXRlcyBhIHRhYmxlIGhhbmRsZXIgZ2l2ZW4gdGhlIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gb2JqZWN0LAogICogIGluc2VydHMgaXQgaW50byB0aGUgcmVxdWVzdCBjaGFpbiBhbmQgdGhlbiBjYWxscwpAQCAtMTI2LDcgKzE2Myw2IEBACiB7CiAgICAgLyogTG9jYXRlICJ0aGlzIiByZWdpbmZvICovCiAgICAgLyogU05NUF9GUkVFKHJlZ2luZm8tPm15dm9pZCk7ICovCi0gICAgLyogcmVnaW5mby0+bXl2b2lkID0gTlVMTDsgKi8KICAgICByZXR1cm4gbmV0c25tcF91bnJlZ2lzdGVyX2hhbmRsZXIocmVnaW5mbyk7CiB9CiAKQEAgLTIxMiwxNSArMjQ4LDIwIEBACiAgICAgICogaW4gdGhlIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvLiAKICAgICAgKi8KICAgICBpZiAobmV0c25tcF9hZ2VudF9nZXRfbGlzdF9kYXRhKHJlcWluZm8sIGhhbmRsZXItPm5leHQtPmhhbmRsZXJfbmFtZSkpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIGlmIChNT0RFX0lTX1NFVChyZXFpbmZvLT5tb2RlKSkgewogICAgICAgICAgICAgcmV0dXJuIG5ldHNubXBfY2FsbF9uZXh0X2hhbmRsZXIoaGFuZGxlciwgcmVnaW5mbywgcmVxaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzKTsKICAgICAgICAgfSBlbHNlIHsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIC8qKiBYWFgtcmtzOiBtZW1vcnkgbGVhay4gYWRkIGNsZWFudXAgaGFuZGxlcj8gKi8KICAgICAgICAgICAgIG5ldHNubXBfZnJlZV9hZ2VudF9kYXRhX3NldHMocmVxaW5mbyk7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGlmICggTU9ERV9JU19TRVQocmVxaW5mby0+bW9kZSkgJiYKICAgICAgICAgIChyZXFpbmZvLT5tb2RlICE9IE1PREVfU0VUX1JFU0VSVkUxKSkgewogICAgICAgICAvKgpAQCAtMjM2LDYgKzI3Nyw3IEBACiAgICAgICAgICAgICBuZWVkX3Byb2Nlc3NpbmcgPSAxOwogICAgIH0KICAgICBlbHNlIHsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgLyoKICAgICAgICAgICogZm9yIEdFVFMsIG9ubHkgY29udGludWUgaWYgd2UgaGF2ZSBhdCBsZWFzdCBvbmUgdmFsaWQgcmVxdWVzdC4KICAgICAgICAgICogZm9yIFJFU0VSVkUxLCBvbmx5IGNvbnRpbnVlIGlmIHdlIGhhdmUgaW5kZXhlcyBmb3IgYWxsIHJlcXVlc3RzLgpAQCAtMjcxLDYgKzMxMyw3IEBACiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBpZiAocmVxaW5mby0+bW9kZSA9PSBNT0RFX1NFVF9SRVNFUlZFMSkgewogICAgICAgICAgICAgREVCVUdJRigiaGVscGVyOnRhYmxlOnNldCIpIHsKICAgICAgICAgICAgICAgICB1X2NoYXIgICAgICAgICAqYnVmID0gTlVMTDsKQEAgLTI5OCw2ICszNDEsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgICAgIC8qCiAgICAgICAgICAqIGNoZWNrIHRvIG1ha2Ugc3VyZSBpdHMgaW4gdGFibGUgcmFuZ2UgCkBAIC0zNTMsMTAgKzM5NywxMyBAQAogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqICBSZWplY3QgcmVxdWVzdHMgb2YgdGhlIGZvcm0gJ215VGFibGUuTicgICAoTiAhPSAxKQogICAgICAgICAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAgICAgaWYgKHJlcWluZm8tPm1vZGUgPT0gTU9ERV9TRVRfUkVTRVJWRTEpCiAgICAgICAgICAgICAgICAgdGFibGVfaGVscGVyX2NsZWFudXAocmVxaW5mbywgcmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9OT1RXUklUQUJMRSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfR0VUKQorICAgICAgICAgICAgZWxzZQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgICAgICAgICAgaWYgKHJlcWluZm8tPm1vZGUgPT0gTU9ERV9HRVQpCiAgICAgICAgICAgICAgICAgdGFibGVfaGVscGVyX2NsZWFudXAocmVxaW5mbywgcmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX05PU1VDSE9CSkVDVCk7CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTQyOCwxMCArNDc1LDEyIEBACiAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgKiAgUmVqZWN0IHJlcXVlc3RzIG9mIHRoZSBmb3JtICdteUVudHJ5Lk4nICAgKGludmFsaWQgTikKICAgICAgICAgICAgICAgICAgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICAgICAgICAgaWYgKHJlcWluZm8tPm1vZGUgPT0gTU9ERV9TRVRfUkVTRVJWRTEpCiAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2hlbHBlcl9jbGVhbnVwKHJlcWluZm8sIHJlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX05PVFdSSVRBQkxFKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfR0VUKQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAgICAgICAgICAgICB0YWJsZV9oZWxwZXJfY2xlYW51cChyZXFpbmZvLCByZXF1ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX05PU1VDSE9CSkVDVCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC00OTksOCArNTQ4LDEwIEBACiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfR0VUICkgewogICAgICAgICAgICAgICAgIHRhYmxlX2hlbHBlcl9jbGVhbnVwKHJlcWluZm8sIHJlcXVlc3QsIFNOTVBfTk9TVUNIT0JKRUNUKTsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcWluZm8tPm1vZGUgPT0gTU9ERV9TRVRfUkVTRVJWRTEgKSB7CiAgICAgICAgICAgICAgICAgdGFibGVfaGVscGVyX2NsZWFudXAocmVxaW5mbywgcmVxdWVzdCwgU05NUF9FUlJfTk9UV1JJVEFCTEUpOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTYyMyw2ICs2NzQsNyBAQAogICAgICAgICAgICAgREVCVUdNU0dUTCgoImhlbHBlcjp0YWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBpbmRleChlcykgZm9yIHRhYmxlIC0gc2tpcHBpbmdcbiIpKTsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgICAgIGlmICggTU9ERV9JU19TRVQocmVxaW5mby0+bW9kZSkgKSB7CiAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgKiBubyBwb2ludCBpbiBjb250aW51aW5nIHdpdGhvdXQgaW5kZXhlcyBmb3Igc2V0LgpAQCAtNjM1LDYgKzY4Nyw3IEBACiAgICAgICAgICAgICAgICAgbmVlZF9wcm9jZXNzaW5nID0gMDsgLyogZG9uJ3QgY2FsbCBuZXh0IGhhbmRsZXIgKi8KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgICAgIHRhYmxlX2hlbHBlcl9jbGVhbnVwKHJlcWluZm8sIHJlcXVlc3QsIFNOTVBfTk9TVUNISU5TVEFOQ0UpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTY0Myw3ICs2OTYsOSBAQAogICAgICAgICArK25lZWRfcHJvY2Vzc2luZzsKIAogICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3IgZWFjaCByZXF1ZXN0ICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIH0KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIC8qCiAgICAgICogYmFpbCBpZiB0aGVyZSBpcyBub3RoaW5nIGZvciBvdXIgY2hpbGQgaGFuZGxlcnMKQEAgLTc1Niw2ICs4MTEsNyBAQAogCiAvKiogY3JlYXRlIHNwYXJzZSB0YWJsZSBoYW5kbGVyCiAgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9TUEFSU0UKIG5ldHNubXBfbWliX2hhbmRsZXIgKgogbmV0c25tcF9zcGFyc2VfdGFibGVfaGFuZGxlcl9nZXQodm9pZCkKIHsKQEAgLTgwMiw4ICs4NTgsMTAgQEAKICAgICAvKiogYm90aCBoYW5kbGVycyBub3cgaW4gcmVnaW5mbywgc28gbm90aGluZyB0byBkbyBvbiBlcnJvciAqLwogICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXIocmVnaW5mbyk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9TUEFSU0UgKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfQlVJTERfUkVTVUxUCiAvKiogQnVpbGRzIHRoZSByZXN1bHQgdG8gYmUgcmV0dXJuZWQgdG8gdGhlIGFnZW50IGdpdmVuIHRoZSB0YWJsZSBpbmZvcm1hdGlvbi4KICAqICBVc2UgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4gcmVzdWx0cyBmcm9tIGxvd2VsIGxldmVsIGhhbmRsZXJzIHRvCiAgKiAgdGhlIGFnZW50LiAgSXQgdGFrZXMgY2FyZSBvZiBidWlsZGluZyB0aGUgcHJvcGVyIHJlc3VsdGluZyBvaWQKQEAgLTgzNyw3ICs4OTUsNiBAQAogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CiB9CiAKLQogLyoqIGdpdmVuIGEgcmVnaXN0cmF0aW9uIGluZm8gb2JqZWN0LCBhIHJlcXVlc3Qgb2JqZWN0IGFuZCB0aGUgdGFibGUKICAqICBpbmZvIG9iamVjdCBpdCBidWlsZHMgdGhlIHJlcXVlc3QtPnJlcXVlc3R2Yi0+bmFtZSBvaWQgZnJvbSB0aGUKICAqICBpbmRleCB2YWx1ZXMgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3VuZCBpbiB0aGUgdGFibGVfaW5mbwpAQCAtODc0LDYgKzkzMSw3IEBACiAKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfQlVJTERfUkVTVUxUICovCiAKIC8qKiBnaXZlbiBhIHJlZ2lzdHJhdGlvbiBpbmZvIG9iamVjdCwgYSByZXF1ZXN0IG9iamVjdCBhbmQgdGhlIHRhYmxlCiAgKiAgaW5mbyBvYmplY3QgaXQgYnVpbGRzIHRoZSByZXF1ZXN0LT5yZXF1ZXN0dmItPm5hbWUgb2lkIGZyb20gdGhlCkBAIC05OTIsNiArMTA1MCwyMiBAQAogICAgIHJldHVybiAwOwogfQogCituZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICoKK25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fY2xvbmUobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdHJpKQoreworICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKmNvcHk7CisgICAgY29weSA9IG1hbGxvYyhzaXplb2YoKmNvcHkpKTsKKyAgICBpZiAoY29weSkgeworICAgICAgICAqY29weSA9ICp0cmk7CisgICAgICAgIGNvcHktPmluZGV4ZXMgPSBzbm1wX2Nsb25lX3ZhcmJpbmQodHJpLT5pbmRleGVzKTsKKyAgICAgICAgaWYgKCFjb3B5LT5pbmRleGVzKSB7CisgICAgICAgICAgICBmcmVlKGNvcHkpOworICAgICAgICAgICAgY29weSA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGNvcHk7Cit9CisKIHZvaWQKIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZShuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0cmkpCiB7CkBAIC0xMTUwLDYgKzEyMjQsNyBAQAogICAgIHZhX2VuZChkZWJ1Z2FyZ3MpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogc3RhdGljIHZvaWQKIF9yb3dfc3Rhc2hfZGF0YV9saXN0X2ZyZWUodm9pZCAqcHRyKSB7CiAgICAgbmV0c25tcF9vaWRfc3Rhc2hfbm9kZSAqKnRtcCA9IChuZXRzbm1wX29pZF9zdGFzaF9ub2RlICoqKXB0cjsKQEAgLTExNTcsNiArMTIzMiw3IEBACiAgICAgZnJlZShwdHIpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfR0VUX09SX0NSRUFURV9ST1dfU1RBU0gKIC8qKiByZXR1cm5zIGEgcm93LXdpZGUgcGxhY2UgdG8gc3RvcmUgZGF0YSBpbi4KICAgICBAdG9kbyBUaGlzIGZ1bmN0aW9uIHdpbGwgbGlrZWx5IGNoYW5nZSB0byBhZGQgZnJlZSBwb2ludGVyIGZ1bmN0aW9ucy4gKi8KIG5ldHNubXBfb2lkX3N0YXNoX25vZGUgKioKQEAgLTExODMsNiArMTI1OSw4IEBACiAgICAgfQogICAgIHJldHVybiBzdGFzaHA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9HRVRfT1JfQ1JFQVRFX1JPV19TVEFTSCAqLworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAvKgogICogYWR2YW5jZSB0aGUgdGFibGUgaW5mbyBjb2xudW0gdG8gdGhlIG5leHQgY29sdW1uLCBvciAwIGlmIHRoZXJlIGFyZSBubyBtb3JlCmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmMgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmMKaW5kZXggYjk5ODkyOS4uN2M5OGFhZSAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jCisrKyBiL2FnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYwpAQCAtNCw2ICs0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KQEAgLTIwLDYgKzIxLDE1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0Lmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9hcnJheV9hbGwsIG1pYl9oZWxwZXJzKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfYXJyYXlfcmVnaXN0ZXIsdGFibGVfYXJyYXlfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2FycmF5X2ZpbmRfdGFibGVfYXJyYXlfaGFuZGxlcix0YWJsZV9hcnJheV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfYXJyYXlfZXh0cmFjdF9hcnJheV9jb250ZXh0LHRhYmxlX2FycmF5X2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9hcnJheV9jaGVja19yb3dfc3RhdHVzLHRhYmxlX2FycmF5X2FsbCkKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0NPTlRBSU5FUgorCiAvKgogICogc25tcC5oOiNkZWZpbmUgU05NUF9NU0dfSU5URVJOQUxfU0VUX0JFR0lOICAgICAgICAtMSAKICAqIHNubXAuaDojZGVmaW5lIFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9SRVNFUlZFMSAgICAgMCAKQEAgLTE5NCw2ICsyMDQsNyBAQAogICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlKHJlZ2luZm8sIHRhYnJlZyk7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9BUlJBWV9SRUdJU1RFUgogaW50CiBuZXRzbm1wX3RhYmxlX2FycmF5X3JlZ2lzdGVyKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYnJlZywKQEAgLTIwNyw4ICsyMTgsMTAgQEAKICAgICByZXR1cm4gbmV0c25tcF90YWJsZV9jb250YWluZXJfcmVnaXN0ZXIocmVnaW5mbywgdGFicmVnLCBjYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLCBncm91cF9yb3dzKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0FSUkFZX1JFR0lTVEVSICovCiAKIC8qKiBmaW5kIHRoZSBoYW5kbGVyIGZvciB0aGUgdGFibGVfYXJyYXkgaGVscGVyLiAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0FSUkFZX0ZJTkRfVEFCTEVfQVJSQVlfSEFORExFUgogbmV0c25tcF9taWJfaGFuZGxlciAqCiBuZXRzbm1wX2ZpbmRfdGFibGVfYXJyYXlfaGFuZGxlcihuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvKQogewpAQCAtMjI0LDE1ICsyMzcsMTkgQEAKIAogICAgIHJldHVybiBtaDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0FSUkFZX0ZJTkRfVEFCTEVfQVJSQVlfSEFORExFUiAqLwogCiAvKiogZmluZCB0aGUgY29udGV4dCBkYXRhIHVzZWQgYnkgdGhlIHRhYmxlX2FycmF5IGhlbHBlciAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0FSUkFZX0VYVFJBQ1RfQVJSQVlfQ09OVEVYVAogbmV0c25tcF9jb250YWluZXIgICAgICAqCiBuZXRzbm1wX2V4dHJhY3RfYXJyYXlfY29udGV4dChuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdCkKIHsKICAgICByZXR1cm4gKG5ldHNubXBfY29udGFpbmVyKiluZXRzbm1wX3JlcXVlc3RfZ2V0X2xpc3RfZGF0YShyZXF1ZXN0LCBUQUJMRV9BUlJBWV9OQU1FKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0FSUkFZX0VYVFJBQ1RfQVJSQVlfQ09OVEVYVCAqLwogCiAvKiogdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gdmFsaWRhdGUgUm93U3RhdHVzIHRyYW5zaXRpb25zLiAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0FSUkFZX0NIRUNLX1JPV19TVEFUVVMKIGludAogbmV0c25tcF90YWJsZV9hcnJheV9jaGVja19yb3dfc3RhdHVzKG5ldHNubXBfdGFibGVfYXJyYXlfY2FsbGJhY2tzICpjYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfZ3JvdXAgKmFnLApAQCAtMzExLDYgKzMyOCw3IEBACiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0FSUkFZX0NIRUNLX1JPV19TVEFUVVMgKi8KIAogLyoqIEB9ICovCiAKQEAgLTM0NSwzNyArMzYzLDEzIEBACiAvKgogICogY29udGV4dCBpbmZvIGZvciBTRVQgcmVxdWVzdHMKICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIHR5cGVkZWYgc3RydWN0IHNldF9jb250ZXh0X3MgewogICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbzsKICAgICB0YWJsZV9jb250YWluZXJfZGF0YSAqdGFkOwogICAgIGludCAgICAgICAgICAgICBzdGF0dXM7CiB9IHNldF9jb250ZXh0OwotCi1zdGF0aWMgdm9pZAotcmVsZWFzZV9uZXRzbm1wX3JlcXVlc3RfZ3JvdXAobmV0c25tcF9pbmRleCAqZywgdm9pZCAqdikKLXsKLSAgICBuZXRzbm1wX3JlcXVlc3RfZ3JvdXBfaXRlbSAqdG1wOwotICAgIG5ldHNubXBfcmVxdWVzdF9ncm91cCAqZ3JvdXAgPSAobmV0c25tcF9yZXF1ZXN0X2dyb3VwICopIGc7Ci0KLSAgICBpZiAoIWcpCi0gICAgICAgIHJldHVybjsKLSAgICB3aGlsZSAoZ3JvdXAtPmxpc3QpIHsKLSAgICAgICAgdG1wID0gZ3JvdXAtPmxpc3Q7Ci0gICAgICAgIGdyb3VwLT5saXN0ID0gdG1wLT5uZXh0OwotICAgICAgICBmcmVlKHRtcCk7Ci0gICAgfQotCi0gICAgZnJlZShncm91cCk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1yZWxlYXNlX25ldHNubXBfcmVxdWVzdF9ncm91cHModm9pZCAqdnApCi17Ci0gICAgbmV0c25tcF9jb250YWluZXIgKmMgPSAobmV0c25tcF9jb250YWluZXIqKXZwOwotICAgIENPTlRBSU5FUl9GT1JfRUFDSChjLCAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMqKQotICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlX25ldHNubXBfcmVxdWVzdF9ncm91cCwgTlVMTCk7Ci0gICAgQ09OVEFJTkVSX0ZSRUUoYyk7Ci19CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIHZvaWQKIGJ1aWxkX25ld19vaWQobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKQEAgLTYwMCwxMCArNTk0LDEyIEBACiAgICAgICAgIHJvdyA9IGctPmV4aXN0aW5nX3JvdyA9IChuZXRzbm1wX2luZGV4KilDT05UQUlORVJfRklORCh0YWQtPnRhYmxlLCAmaW5kZXgpOwogICAgICAgICBpZiAoIWctPmV4aXN0aW5nX3JvdykgewogICAgICAgICAgICAgaWYgKCF0YWQtPmNiLT5jcmVhdGVfcm93KSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAgICAgICAgIGlmKE1PREVfSVNfU0VUKGFndHJlcV9pbmZvLT5tb2RlKSkKICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihhZ3RyZXFfaW5mbywgY3VycmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9OT1RXUklUQUJMRSk7CiAgICAgICAgICAgICAgICAgZWxzZQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKGFndHJlcV9pbmZvLCBjdXJyZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfTk9TVUNISU5TVEFOQ0UpOwogICAgICAgICAgICAgICAgIGZyZWUoZyk7CkBAIC02MzIsNiArNjI4LDMzIEBACiAgICAgfSAvKiogZm9yKCBjdXJyZW50IC4uLiApICovCiB9CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCitzdGF0aWMgdm9pZAorcmVsZWFzZV9uZXRzbm1wX3JlcXVlc3RfZ3JvdXAobmV0c25tcF9pbmRleCAqZywgdm9pZCAqdikKK3sKKyAgICBuZXRzbm1wX3JlcXVlc3RfZ3JvdXBfaXRlbSAqdG1wOworICAgIG5ldHNubXBfcmVxdWVzdF9ncm91cCAqZ3JvdXAgPSAobmV0c25tcF9yZXF1ZXN0X2dyb3VwICopIGc7CisKKyAgICBpZiAoIWcpCisgICAgICAgIHJldHVybjsKKyAgICB3aGlsZSAoZ3JvdXAtPmxpc3QpIHsKKyAgICAgICAgdG1wID0gZ3JvdXAtPmxpc3Q7CisgICAgICAgIGdyb3VwLT5saXN0ID0gdG1wLT5uZXh0OworICAgICAgICBmcmVlKHRtcCk7CisgICAgfQorCisgICAgZnJlZShncm91cCk7Cit9CisKK3N0YXRpYyB2b2lkCityZWxlYXNlX25ldHNubXBfcmVxdWVzdF9ncm91cHModm9pZCAqdnApCit7CisgICAgbmV0c25tcF9jb250YWluZXIgKmMgPSAobmV0c25tcF9jb250YWluZXIqKXZwOworICAgIENPTlRBSU5FUl9GT1JfRUFDSChjLCAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMqKQorICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlX25ldHNubXBfcmVxdWVzdF9ncm91cCwgTlVMTCk7CisgICAgQ09OVEFJTkVSX0ZSRUUoYyk7Cit9CisKIHN0YXRpYyB2b2lkCiBwcm9jZXNzX3NldF9ncm91cChuZXRzbm1wX2luZGV4ICpvLCB2b2lkICpjKQogewpAQCAtODI1LDYgKzg0OCw3IEBACiAKICAgICByZXR1cm4gY29udGV4dC5zdGF0dXM7CiB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTg2MCw2ICs4ODQsNyBAQAogICAgICAgICAgICAgICAgICAgICBtb2RlX25hbWVbYWd0cmVxX2luZm8tPm1vZGVdKSk7CiAgICAgfQogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGlmIChNT0RFX0lTX1NFVChhZ3RyZXFfaW5mby0+bW9kZSkpIHsKICAgICAgICAgLyoKICAgICAgICAgICogbmV0c25tcF9tdXRleF9sb2NrKCZ0YWQtPmxvY2spOwpAQCAtODcwLDYgKzg5NSw3IEBACiAgICAgICAgICAqIG5ldHNubXBfbXV0ZXhfdW5sb2NrKCZ0YWQtPmxvY2spOwogICAgICAgICAgKi8KICAgICB9IGVsc2UKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgcmMgPSBwcm9jZXNzX2dldF9yZXF1ZXN0cyhyZWdpbmZvLCBhZ3RyZXFfaW5mbywgcmVxdWVzdHMsIHRhZCk7CiAKICAgICBpZiAocmMgIT0gU05NUF9FUlJfTk9FUlJPUikgewpAQCAtODg5LDQgKzkxNSw1IEBACiAgICAgCiAgICAgcmV0dXJuIHJjOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfQ09OVEFJTkVSICovCiAvKiogQGVuZGNvbmQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmMgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5jCmluZGV4IDgyYzdmMjkuLjA4ZTk3NDEgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmMKKysrIGIvYWdlbnQvaGVscGVycy90YWJsZV9jb250YWluZXIuYwpAQCAtNCw2ICs0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KQEAgLTIwLDYgKzIxLDE3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0Lmg+CiAKK25ldHNubXBfZmVhdHVyZV9wcm92aWRlKHRhYmxlX2NvbnRhaW5lcikKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9jb250YWluZXIsIHRhYmxlX2NvbnRhaW5lcl9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfY29udGFpbmVyX3JlcGxhY2Vfcm93LCB0YWJsZV9jb250YWluZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2NvbnRhaW5lcl9leHRyYWN0LCB0YWJsZV9jb250YWluZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2NvbnRhaW5lcl9tYW5hZ2VtZW50LCB0YWJsZV9jb250YWluZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2NvbnRhaW5lcl9yb3dfcmVtb3ZlLCB0YWJsZV9jb250YWluZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2NvbnRhaW5lcl9yb3dfaW5zZXJ0LCB0YWJsZV9jb250YWluZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2NvbnRhaW5lcl9hbGwsIG1pYl9oZWxwZXJzKQorCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfQ09OVEFJTkVSCisKIC8qCiAgKiBzbm1wLmg6I2RlZmluZSBTTk1QX01TR19JTlRFUk5BTF9TRVRfQkVHSU4gICAgICAgIC0xIAogICogc25tcC5oOiNkZWZpbmUgU05NUF9NU0dfSU5URVJOQUxfU0VUX1JFU0VSVkUxICAgICAwIApAQCAtMzUsNiArNDcsOSBAQAogICovCiB0eXBlZGVmIHN0cnVjdCBjb250YWluZXJfdGFibGVfZGF0YV9zIHsKIAorICAgIC8qKiBOdW1iZXIgb2YgaGFuZGxlcnMgd2hvc2UgbXl2b2lkIHBvaW50ZXIgcG9pbnRzIHRvIHRoaXMgc3RydWN0dXJlLiAqLworICAgIGludCByZWZjbnQ7CisKICAgIC8qKiByZWdpc3RyYXRpb24gaW5mbyBmb3IgdGhlIHRhYmxlICovCiAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGJscmVnX2luZm87CiAKQEAgLTE2MCw2ICsxNzUsNyBAQAogICoKICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0NPTlRBSU5FUl9NQU5BR0VNRU5UCiBjb250YWluZXJfdGFibGVfZGF0YSAqCiBuZXRzbm1wX3Rjb250YWluZXJfY3JlYXRlX3RhYmxlKCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgbG9uZyBmbGFncyApCkBAIC0yMDQsNiArMjIwLDcgQEAKICAgICBTTk1QX0ZSRUUodGFibGUpOwogICAgIHJldHVybjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0NPTlRBSU5FUl9NQU5BR0VNRU5UICovCiAKICAgICAvKgogICAgICAqIFRoZSB2YXJpb3VzIHN0YW5kYWxvbmUgcm93IG9wZXJhdGlvbiByb3V0aW5lcwpAQCAtMjMwLDYgKzI0Nyw3IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9DT05UQUlORVJfUkVQTEFDRV9ST1cKIGludAogbmV0c25tcF90Y29udGFpbmVyX3JlcGxhY2Vfcm93KCBjb250YWluZXJfdGFibGVfZGF0YSAqdGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaW5kZXggKm9sZF9yb3csIG5ldHNubXBfaW5kZXggKm5ld19yb3cgKQpAQCAtMjQwLDYgKzI1OCw3IEBACiAgICAgbmV0c25tcF90Y29udGFpbmVyX2FkZF9yb3coICAgIHRhYmxlLCBuZXdfcm93ICk7CiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9DT05UQUlORVJfUkVQTEFDRV9ST1cgKi8KIAogICAgIC8qIG5ldHNubXBfdGNvbnRhaW5lcl9yZW1vdmVfZGVsZXRlX3JvdygpIHdpbGwgYmUgdGFibGUtc3BlY2lmaWMgdG9vICovCiAKQEAgLTI1MCw2ICsyNjksMjAgQEAKICAqCiAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKK3N0YXRpYyBjb250YWluZXJfdGFibGVfZGF0YSAqCituZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9kYXRhX2Nsb25lKGNvbnRhaW5lcl90YWJsZV9kYXRhICp0YWQpCit7CisgICAgKyt0YWQtPnJlZmNudDsKKyAgICByZXR1cm4gdGFkOworfQorCitzdGF0aWMgdm9pZAorbmV0c25tcF9jb250YWluZXJfdGFibGVfZGF0YV9mcmVlKGNvbnRhaW5lcl90YWJsZV9kYXRhICp0YWQpCit7CisgICAgaWYgKC0tdGFkLT5yZWZjbnQgPT0gMCkKKwlmcmVlKHRhZCk7Cit9CisKIC8qKiByZXR1cm5zIGEgbmV0c25tcF9taWJfaGFuZGxlciBvYmplY3QgZm9yIHRoZSB0YWJsZV9jb250YWluZXIgaGVscGVyICovCiBuZXRzbm1wX21pYl9oYW5kbGVyICoKIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2hhbmRsZXJfZ2V0KG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYnJlZywKQEAgLTI3NCw2ICszMDcsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICB0YWQtPnJlZmNudCA9IDE7CiAgICAgdGFkLT50YmxyZWdfaW5mbyA9IHRhYnJlZzsgIC8qIHdlIG5lZWQgaXQgdG9vLCBidXQgaXQgcmVhbGx5IGlzIG5vdCBvdXJzICovCiAgICAgaWYoa2V5X3R5cGUpCiAgICAgICAgIHRhZC0+a2V5X3R5cGUgPSBrZXlfdHlwZTsKQEAgLTI5MCw2ICszMjQsOCBAQAogICAgICAgICBjb250YWluZXItPm5jb21wYXJlID0gbmV0c25tcF9uY29tcGFyZV9uZXRzbm1wX2luZGV4OwogICAgIAogICAgIGhhbmRsZXItPm15dm9pZCA9ICh2b2lkKil0YWQ7CisgICAgaGFuZGxlci0+ZGF0YV9jbG9uZSA9ICh2b2lkICooKikodm9pZCAqKSluZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9kYXRhX2Nsb25lOworICAgIGhhbmRsZXItPmRhdGFfZnJlZSA9ICh2b2lkICgqKSh2b2lkICopKW5ldHNubXBfY29udGFpbmVyX3RhYmxlX2RhdGFfZnJlZTsKICAgICBoYW5kbGVyLT5mbGFncyB8PSBNSUJfSEFORExFUl9BVVRPX05FWFQ7CiAgICAgCiAgICAgcmV0dXJuIGhhbmRsZXI7CkBAIC0zMjgsMTkgKzM2NCwyMyBAQAogICAgIGlmICh0YWQpIHsKICAgICAgICAgQ09OVEFJTkVSX0ZSRUUoIHRhZC0+dGFibGUgKTsKICAgICAgICAgdGFkLT50YWJsZSA9IE5VTEw7Ci0gICAgICAgIGZyZWUodGFkKTsKLSAgICAgICAgcmVnaW5mby0+aGFuZGxlci0+bXl2b2lkID0gTlVMTDsKKwkvKgorCSAqIE5vdGU6IGRvbid0IGZyZWUgdGhlIG1lbW9yeSB0YWQgcG9pbnRzIGF0IGhlcmUgLSB0aGF0IGlzIGRvbmUKKwkgKiBieSBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9kYXRhX2ZyZWUoKS4KKwkgKi8KICAgICB9CiAgICAgcmV0dXJuIG5ldHNubXBfdW5yZWdpc3Rlcl90YWJsZSggcmVnaW5mbyApOwogfQogCiAvKiogcmV0cmlldmUgdGhlIGNvbnRhaW5lciB1c2VkIGJ5IHRoZSB0YWJsZV9jb250YWluZXIgaGVscGVyICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfQ09OVEFJTkVSX0VYVFJBQ1QKIG5ldHNubXBfY29udGFpbmVyKgogbmV0c25tcF9jb250YWluZXJfdGFibGVfY29udGFpbmVyX2V4dHJhY3QobmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3QpCiB7CiAgICAgcmV0dXJuIChuZXRzbm1wX2NvbnRhaW5lciAqKQogICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2dldF9saXN0X2RhdGEocmVxdWVzdCwgVEFCTEVfQ09OVEFJTkVSX0NPTlRBSU5FUik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9DT05UQUlORVJfRVhUUkFDVCAqLwogCiAjaWZuZGVmIE5FVFNOTVBfVVNFX0lOTElORQogLyoqIGZpbmQgdGhlIGNvbnRleHQgZGF0YSB1c2VkIGJ5IHRoZSB0YWJsZV9jb250YWluZXIgaGVscGVyICovCkBAIC0zNjUsNiArNDA1LDcgQEAKIH0KICNlbmRpZiAvKiBpbmxpbmUgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0NPTlRBSU5FUl9ST1dfSU5TRVJUCiAvKiogaW5zZXJ0cyBhIG5ld2x5IGNyZWF0ZWQgdGFibGVfY29udGFpbmVyIGVudHJ5IGludG8gYSByZXF1ZXN0IGxpc3QgKi8KIHZvaWQKIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19pbnNlcnQobmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3QsCkBAIC00MzIsNyArNDczLDkgQEAKICAgICAgICAgfQogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0NPTlRBSU5FUl9ST1dfSU5TRVJUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9DT05UQUlORVJfUk9XX1JFTU9WRQogLyoqIHJlbW92ZXMgYSB0YWJsZV9jb250YWluZXIgZW50cnkgZnJvbSBhIHJlcXVlc3QgbGlzdCAqLwogdm9pZAogbmV0c25tcF9jb250YWluZXJfdGFibGVfcm93X3JlbW92ZShuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdCwKQEAgLTQ5OSw2ICs1NDIsNyBAQAogICAgICAgICB9CiAgICAgfQogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfQ09OVEFJTkVSX1JPV19SRU1PVkUgKi8KIAogLyoqIEBjb25kICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtNjEwLDExICs2NTQsMTUgQEAKICAgICAgICAgICAgICAqIG5vdCByZXN1bHRzIGZvdW5kLiBGb3IgYSBnZXQsIHRoYXQgaXMgYW4gZXJyb3IKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgREVCVUdNU0dUTCgoInRhYmxlX2NvbnRhaW5lciIsICJubyByb3cgZm91bmRcbiIpKTsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICAgICBpZigoYWd0cmVxX2luZm8tPm1vZGUgIT0gTU9ERV9TRVRfUkVTRVJWRTEpIHx8IC8qIGdldCAqLwogICAgICAgICAgICAgICAgKHJlZ2luZm8tPm1vZGVzICYgSEFORExFUl9DQU5fTk9UX0NSRUFURSkpIHsgLyogbm8gY3JlYXRlICovCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihhZ3RyZXFfaW5mbywgcmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfTk9TVUNISU5TVEFOQ0UpOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgICAgIH0KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgfQogICAgIH0gLyoqIEdFVC9TRVQgKi8KICAgICAKQEAgLTY3Niw3ICs3MjQsMTEgQEAKICAgICAgKiByZWdpc3RyYXRpb24uCiAgICAgICovCiAgICAgb2xkbW9kZSA9IGFndHJlcV9pbmZvLT5tb2RlOwotICAgIGlmKE1PREVfSVNfR0VUKG9sZG1vZGUpIHx8IChNT0RFX1NFVF9SRVNFUlZFMSA9PSBvbGRtb2RlKSkgeworICAgIGlmKE1PREVfSVNfR0VUKG9sZG1vZGUpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorICAgICAgIHx8IChNT0RFX1NFVF9SRVNFUlZFMSA9PSBvbGRtb2RlKQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgICAgICApIHsKICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKmN1cnJfcmVxdWVzdDsKICAgICAgICAgLyoKICAgICAgICAgICogTG9vcCB0aHJvdWdoIGVhY2ggb2YgdGhlIHJlcXVlc3RzLCBhbmQKQEAgLTgxNiw0ICs4NjgsOSBAQAogICoKICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIAorI2Vsc2UgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9DT05UQUlORVIgKi8KK25ldHNubXBfZmVhdHVyZV91bnVzZWQodGFibGVfY29udGFpbmVyKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0NPTlRBSU5FUiAqLwogLyoqIEB9ICovCisKKwpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYwppbmRleCBjM2E3ZjllLi42NTlkOTAzIDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYworKysgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgpAQCAtMTQsNiArMTUsMjcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC90YWJsZS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfZGF0YV9hbGwsIG1pYl9oZWxwZXJzKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfZGF0YSwgdGFibGVfZGF0YV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVnaXN0ZXJfcmVhZF9vbmx5X3RhYmxlX2RhdGEsIHRhYmxlX2RhdGFfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGV4dHJhY3RfdGFibGVfcm93X2RhdGEsIHRhYmxlX2RhdGFfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGluc2VydF90YWJsZV9yb3csIHRhYmxlX2RhdGFfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2RhdGFfZGVsZXRlX3RhYmxlLCB0YWJsZV9kYXRhX2FsbCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2RhdGFfZXh0cmFzLCB0YWJsZV9kYXRhX2FsbCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2RhdGFfY3JlYXRlX3RhYmxlLCB0YWJsZV9kYXRhX2V4dHJhcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9kYXRhX2NyZWF0ZV9yb3csIHRhYmxlX2RhdGFfZXh0cmFzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2RhdGFfY29weV9yb3csIHRhYmxlX2RhdGFfZXh0cmFzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2RhdGFfcmVtb3ZlX2RlbGV0ZV9yb3csIHRhYmxlX2RhdGFfZXh0cmFzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2RhdGFfdW5yZWdpc3RlciwgdGFibGVfZGF0YV9leHRyYXMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfZGF0YV9yb3dfY291bnQsIHRhYmxlX2RhdGFfZXh0cmFzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2RhdGFfcm93X29wZXJhdGlvbnMsIHRhYmxlX2RhdGFfZXh0cmFzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2RhdGFfcm93X2ZpcnN0LCB0YWJsZV9kYXRhX2V4dHJhcykKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEEKKwogLyoqIEBkZWZncm91cCB0YWJsZV9kYXRhIHRhYmxlX2RhdGEKICAqICBIZWxwcyB5b3UgaW1wbGVtZW50IGEgdGFibGUgd2l0aCBkYXRhbWF0dGVkIHN0b3JhZ2UuCiAgKiAgQGluZ3JvdXAgdGFibGUKQEAgLTkwLDYgKzExMiw3IEBACiAgICAgICAgIG5ld3Jvdy0+aW5kZXhfb2lkID0KICAgICAgICAgICAgIHNubXBfZHVwbGljYXRlX29iamlkKHJvdy0+aW5kZXhfb2lkLCByb3ctPmluZGV4X29pZF9sZW4pOwogICAgICAgICBpZiAoIW5ld3Jvdy0+aW5kZXhfb2lkKSB7CisgICAgICAgICAgICBmcmVlKG5ld3Jvdy0+aW5kZXhlcyk7CiAgICAgICAgICAgICBmcmVlKG5ld3Jvdyk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMjg3LDEyICszMTAsMTUgQEAKICAgICAgKiBHZW5lcmljIEFQSSAtIG1vc3RseSByZW5hbWVkIHdyYXBwZXJzCiAgICAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQV9DUkVBVEVfVEFCTEUKIG5ldHNubXBfdGFibGVfZGF0YSAqCiBuZXRzbm1wX3RhYmxlX2RhdGFfY3JlYXRlX3RhYmxlKGNvbnN0IGNoYXIgKm5hbWUsIGxvbmcgZmxhZ3MpCiB7CiAgICAgcmV0dXJuIG5ldHNubXBfY3JlYXRlX3RhYmxlX2RhdGEoIG5hbWUgKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFfQ1JFQVRFX1RBQkxFICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBX0RFTEVURV9UQUJMRQogdm9pZAogbmV0c25tcF90YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSggbmV0c25tcF90YWJsZV9kYXRhICp0YWJsZSApCiB7CkBAIC0zMTIsMTQgKzMzOCwxMyBAQAogICAgIH0KICAgICB0YWJsZS0+Zmlyc3Rfcm93ID0gTlVMTDsKIAotICAgIGlmICh0YWJsZS0+bmFtZSkgewotICAgICAgICBTTk1QX0ZSRUUodGFibGUtPm5hbWUpOwotICAgICAgICB0YWJsZS0+bmFtZSA9IE5VTEw7Ci0gICAgfQorICAgIFNOTVBfRlJFRSh0YWJsZS0+bmFtZSk7CiAgICAgU05NUF9GUkVFKHRhYmxlKTsKICAgICByZXR1cm47CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBX0RFTEVURV9UQUJMRSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQV9DUkVBVEVfUk9XCiBuZXRzbm1wX3RhYmxlX3JvdyAqCiBuZXRzbm1wX3RhYmxlX2RhdGFfY3JlYXRlX3Jvdyggdm9pZCogZW50cnkgKQogewpAQCAtMzI4LDkgKzM1MywxMSBAQAogICAgICAgICByb3ctPmRhdGEgPSBlbnRyeTsKICAgICByZXR1cm4gcm93OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQV9DUkVBVEVfUk9XICovCiAKICAgICAvKiBuZXRzbm1wX3RhYmxlX2RhdGFfY2xvbmVfcm93KCkgZGVmaW5lZCBhYm92ZSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQV9DT1BZX1JPVwogaW50CiBuZXRzbm1wX3RhYmxlX2RhdGFfY29weV9yb3coIG5ldHNubXBfdGFibGVfcm93ICAqb2xkX3JvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9yb3cgICpuZXdfcm93ICkKQEAgLTM0OCw2ICszNzUsNyBAQAogICAgIC8qIFhYWCAtIERvZXNuJ3QgY29weSB0YWJsZS1zcGVjaWZpYyByb3cgc3RydWN0dXJlICovCiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBX0NPUFlfUk9XICovCiAKICAgICAvKgogICAgICAqIG5ldHNubXBfdGFibGVfZGF0YV9kZWxldGVfcm93KCkKQEAgLTM1NywxMiArMzg1LDE0IEBACiAgICAgICogICAgIGFsbCBkZWZpbmVkIGFib3ZlCiAgICAgICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBX1JFTU9WRV9ERUxFVEVfUk9XCiB2b2lkICoKIG5ldHNubXBfdGFibGVfZGF0YV9yZW1vdmVfZGVsZXRlX3JvdyhuZXRzbm1wX3RhYmxlX2RhdGEgKnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdGFibGVfcm93ICpyb3cpCiB7CiAgICAgcmV0dXJuIG5ldHNubXBfdGFibGVfZGF0YV9yZW1vdmVfYW5kX2RlbGV0ZV9yb3codGFibGUsIHJvdyk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBX1JFTU9WRV9ERUxFVEVfUk9XICovCiAKIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtNDA0LDYgKzQzNCw4IEBACiAgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfdGFibGUocmVnaW5mbywgdGFibGVfaW5mbyk7CiB9CiAKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX1JFQURfT05MWV9UQUJMRV9EQVRBCiAvKiogcmVnaXN0ZXJzIGEgaGFuZGxlciBhcyBhIHJlYWQtb25seSBkYXRhIHRhYmxlCiAgKiAgSWYgdGFibGVfaW5mbyAhPSBOVUxMLCBpdCByZWdpc3RlcnMgaXQgYXMgYSBub3JtYWwgdGFibGUgdG9vLiAqLwogaW50CkBAIC00MTQsMTMgKzQ0NiwxNiBAQAogICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgbmV0c25tcF9nZXRfcmVhZF9vbmx5X2hhbmRsZXIoKSk7CiAgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfZGF0YShyZWdpbmZvLCB0YWJsZSwgdGFibGVfaW5mbyk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9SRUFEX09OTFlfVEFCTEVfREFUQSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQV9VTlJFR0lTVEVSCiBpbnQKIG5ldHNubXBfdW5yZWdpc3Rlcl90YWJsZV9kYXRhKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8pCiB7CiAgICAgLyogZnJlZSB0YWJsZTsgKi8KICAgICByZXR1cm4gbmV0c25tcF91bnJlZ2lzdGVyX3RhYmxlKHJlZ2luZm8pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQV9VTlJFR0lTVEVSICovCiAKIC8qCiAgKiBUaGUgaGVscGVyIGhhbmRsZXIgdGhhdCB0YWtlcyBjYXJlIG9mIHBhc3NpbmcgYSBzcGVjaWZpYyByb3cgb2YKQEAgLTQ1Myw3ICs0ODgsOSBAQAogICAgICAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKICAgICAgICAgY2FzZSBNT0RFX0dFVDoKICAgICAgICAgY2FzZSBNT0RFX0dFVE5FWFQ6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2FkZF9saXN0X2RhdGEocmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFCTEVfREFUQV9UQUJMRSwgdGFibGUsIE5VTEwpKTsKQEAgLTUyNyw5ICs1NjQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgICAgICAgICAqIGVxdWFsIG1hdGNoLCByZXR1cm4gdGhlIG5leHQgcm93IAogICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocm93KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93ID0gcm93LT5uZXh0OwotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcm93ID0gcm93LT5uZXh0OwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgLyoKQEAgLTYwNiw2ICs2NDEsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgICAgICAgICB2YWxpZF9yZXF1ZXN0ID0gMTsKICAgICAgICAgICAgIGlmIChOVUxMICE9CkBAIC02MzAsNiArNjY2LDcgQEAKICAgICAgICAgY2FzZSBNT0RFX1NFVF9GUkVFOgogICAgICAgICBjYXNlIE1PREVfU0VUX1VORE86CiAgICAgICAgICAgICB2YWxpZF9yZXF1ZXN0ID0gMTsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgICAgICB9CiAgICAgfQpAQCAtNjcyLDYgKzcwOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUJMRV9EQVRBX1JPVyk7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9FWFRSQUNUX1RBQkxFX1JPV19EQVRBCiAvKiogZXh0cmFjdHMgdGhlIGRhdGEgZnJvbSB0aGUgcm93IGJlaW5nIGFjY2Vzc2VkIHBhc3NlZCBmcm9tIHRoZQogICogdGFibGVfZGF0YSBoZWxwZXIgKi8KIHZvaWQgICAgICAgICAgICoKQEAgLTY4NCw3ICs3MjIsOSBAQAogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIE5VTEw7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9FWFRSQUNUX1RBQkxFX1JPV19EQVRBICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTlNFUlRfVEFCTEVfUk9XCiAvKiogaW5zZXJ0cyBhIG5ld2x5IGNyZWF0ZWQgdGFibGVfZGF0YSByb3cgaW50byBhIHJlcXVlc3QgKi8KIHZvaWQKIG5ldHNubXBfaW5zZXJ0X3RhYmxlX3JvdyhuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdCwKQEAgLTc0OSw2ICs3ODksNyBAQAogICAgICAgICB9CiAgICAgfQogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5TRVJUX1RBQkxFX1JPVyAqLwogCiAvKiBidWlsZHMgYSByZXN1bHQgZ2l2ZW4gYSByb3csIGEgdmFyYmluZCB0byBzZXQgYW5kIHRoZSBkYXRhICovCiBpbnQKQEAgLTg2MCwxMSArOTAxLDEzIEBACiAgICAgICogR2VuZXJpYyBBUEkgLSBtb3N0bHkgcmVuYW1lZCB3cmFwcGVycwogICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFfUk9XX0ZJUlNUCiBuZXRzbm1wX3RhYmxlX3JvdyAqCiBuZXRzbm1wX3RhYmxlX2RhdGFfcm93X2ZpcnN0KG5ldHNubXBfdGFibGVfZGF0YSAqdGFibGUpCiB7CiAgICAgcmV0dXJuIG5ldHNubXBfdGFibGVfZGF0YV9nZXRfZmlyc3Rfcm93KHRhYmxlKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFfUk9XX0ZJUlNUICovCiAKIG5ldHNubXBfdGFibGVfcm93ICoKIG5ldHNubXBfdGFibGVfZGF0YV9yb3dfZ2V0KCAgbmV0c25tcF90YWJsZV9kYXRhICp0YWJsZSwKQEAgLTkyOSwxMSArOTcyLDEzIEBACiAgICAgcmV0dXJuIG5ldHNubXBfdGFibGVfZGF0YV9yb3dfbmV4dF9ieW9pZCh0YWJsZSwgaW5zdGFuY2UsIGxlbik7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBX1JPV19DT1VOVAogaW50CiBuZXRzbm1wX3RhYmxlX2RhdGFfcm93X2NvdW50KG5ldHNubXBfdGFibGVfZGF0YSAqdGFibGUpCiB7CiAgICAgcmV0dXJuIG5ldHNubXBfdGFibGVfZGF0YV9udW1fcm93cyh0YWJsZSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBX1JPV19DT1VOVCAqLwogCiAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTk0Myw2ICs5ODgsNyBAQAogICoKICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFfUk9XX09QRVJBVElPTlMKIHZvaWQgKgogbmV0c25tcF90YWJsZV9kYXRhX2VudHJ5X2ZpcnN0KG5ldHNubXBfdGFibGVfZGF0YSAqdGFibGUpCiB7CkBAIC0xMDAyLDYgKzEwNDgsNyBAQAogICAgICAgICBuZXRzbm1wX3RhYmxlX2RhdGFfcm93X25leHRfYnlvaWQodGFibGUsIGluc3RhbmNlLCBsZW4pOwogICAgIHJldHVybiAocm93ID8gcm93LT5kYXRhIDogTlVMTCApOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQV9ST1dfT1BFUkFUSU9OUyAqLwogCiAgICAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAqIEdlbmVyaWMgQVBJIC0gbW9zdGx5IHJlbmFtZWQgd3JhcHBlcnMKQEAgLTEwMTMsNSArMTA2MCw5IEBACiAgKgogICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogCisjZWxzZSAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEEgKi8KK25ldHNubXBfZmVhdHVyZV91bnVzZWQodGFibGVfZGF0YSk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBICovCisKIC8qKiBAfSAKICAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYwppbmRleCAyNDAzYjJmLi45MzFjMjdhIDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYworKysgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYwpAQCAtMSw1ICsxLDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTExLDYgKzEzLDM0IEBACiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9kYXRhc2V0X2FsbCwgbWliX2hlbHBlcnMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfZGF0YXNldCwgdGFibGVfZGF0YXNldF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfZGF0YXNldF9yZW1vdmVfcm93LCB0YWJsZV9kYXRhc2V0X2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9kYXRhX3NldF9jb2x1bW4sIHRhYmxlX2RhdGFzZXRfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2RhdGFzZXRfZ2V0X25ld3JvdywgdGFibGVfZGF0YXNldF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfc2V0X2FkZF9pbmRleGVzLCB0YWJsZV9kYXRhc2V0X2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihkZWxldGVfdGFibGVfZGF0YV9zZXQsIHRhYmxlX2RhdGFzZXRfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX3NldF9tdWx0aV9hZGRfZGVmYXVsdF9yb3csIHRhYmxlX2RhdGFzZXRfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2RhdGFzZXRfdW5yZWdpc3Rlcl9hdXRvX2RhdGFfdGFibGUsIHRhYmxlX2RhdGFzZXRfYWxsKQorCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfVEFCTEVfREFUQVNFVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfZ2V0X29yX2NyZWF0ZV9yb3dfc3Rhc2gpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2RhdGEpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShvaWRfc3Rhc2hfZ2V0X2RhdGEpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShvaWRfc3Rhc2hfYWRkX2RhdGEpCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfVEFCTEVfREFUQVNFVCAqLworCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQVNFVAorCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUob2lkX3N0YXNoKQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKworI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfTUlCX0xPQURJTkcKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKG1pYl90b19hc25fdHlwZSkKKyNlbmRpZiAvKiBORVRTTk1QX0RJU0FCTEVfTUlCX0xPQURJTkcgKi8KKwogc3RhdGljIG5ldHNubXBfZGF0YV9saXN0ICphdXRvX3RhYmxlczsKIAogdHlwZWRlZiBzdHJ1Y3QgZGF0YV9zZXRfdGFibGVzX3MgewpAQCAtMTM0LDYgKzE2NCw3IEBACiB9CiAKIC8qKiByZW1vdmVzIGEgcm93IGZyb20gdGhlIHRhYmxlLCBidXQgZG9lc24ndCBkZWxldGUvZnJlZSB0aGUgY29sdW1uIHZhbHVlcyAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFTRVRfUkVNT1ZFX1JPVwogTkVUU05NUF9JTkxJTkUgdm9pZAogbmV0c25tcF90YWJsZV9kYXRhc2V0X3JlbW92ZV9yb3cobmV0c25tcF90YWJsZV9kYXRhX3NldCAqdGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX3JvdyAqcm93KQpAQCAtMTQzLDYgKzE3NCw3IEBACiAKICAgICBuZXRzbm1wX3RhYmxlX2RhdGFfcmVtb3ZlX2FuZF9kZWxldGVfcm93KHRhYmxlLT50YWJsZSwgcm93KTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFTRVRfUkVNT1ZFX1JPVyAqLwogCiAvKiogcmVtb3ZlcyBhIHJvdyBmcm9tIHRoZSB0YWJsZSBhbmQgdGhlbiBkZWxldGVzIGl0IChhbmQgYWxsIGl0cyBkYXRhKSAqLwogTkVUU05NUF9JTkxJTkUgdm9pZApAQCAtMTcyLDYgKzIwNCw3IEBACiAgICAgcmV0dXJuIHRhYmxlX3NldDsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RFTEVURV9UQUJMRV9EQVRBX1NFVAogdm9pZCBuZXRzbm1wX2RlbGV0ZV90YWJsZV9kYXRhX3NldChuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICp0YWJsZV9zZXQpCiB7CiAgICAgbmV0c25tcF90YWJsZV9kYXRhX3NldF9zdG9yYWdlICpwdHIsICpuZXh0OwpAQCAtMTkwLDYgKzIyMyw3IEBACiAgICAgbmV0c25tcF90YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSh0YWJsZV9zZXQtPnRhYmxlKTsKICAgICBmcmVlKHRhYmxlX3NldCk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ERUxFVEVfVEFCTEVfREFUQV9TRVQgKi8KIAogLyoqIGNsb25lcyBhIGRhdGFzZXQgcm93LCBpbmNsdWRpbmcgYWxsIGRhdGEuICovCiBuZXRzbm1wX3RhYmxlX3JvdyAqCkBAIC0yNTAsOSArMjg0LDEwIEBACiAgICAgZm9yICg7IGRlZnJvdzsgZGVmcm93ID0gZGVmcm93LT5uZXh0KSB7CiAgICAgICAgIG5ldHNubXBfc2V0X3Jvd19jb2x1bW4ocm93LCBkZWZyb3ctPmNvbHVtbiwgZGVmcm93LT50eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZnJvdy0+ZGF0YS52b2lkcCwgZGVmcm93LT5kYXRhX2xlbik7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBpZiAoZGVmcm93LT53cml0YWJsZSkKICAgICAgICAgICAgIG5ldHNubXBfbWFya19yb3dfY29sdW1uX3dyaXRhYmxlKHJvdywgZGVmcm93LT5jb2x1bW4sIDEpOwotCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KICAgICByZXR1cm4gcm93OwogfQpAQCAtMzI3LDYgKzM2Miw3IEBACiAgKiAgdGhpcyBpcyBhIHdyYXBwZXIgYXJvdW5kIGNhbGxpbmcgbmV0c25tcF90YWJsZV9zZXRfYWRkX2RlZmF1bHRfcm93CiAgKiAgcmVwZWF0ZWRseSBmb3IgeW91LgogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfU0VUX01VTFRJX0FERF9ERUZBVUxUX1JPVwogdm9pZAogbmV0c25tcF90YWJsZV9zZXRfbXVsdGlfYWRkX2RlZmF1bHRfcm93KG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKnRzZXQsIC4uLikKIHsKQEAgLTM0OSw3ICszODUsNyBAQAogCiAgICAgdmFfZW5kKGRlYnVnYXJncyk7CiB9Ci0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX1NFVF9NVUxUSV9BRERfREVGQVVMVF9ST1cgKi8KIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICoKQEAgLTM4OSw2ICs0MjUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICpkYXRhX3NldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbykKIHsKKyAgICBpbnQgcmV0OworCiAgICAgaWYgKE5VTEwgPT0gdGFibGVfaW5mbykgewogICAgICAgICAvKgogICAgICAgICAgKiBhbGxvY2F0ZSB0aGUgdGFibGUgaWYgb25lIHdhc24ndCBhbGxvY2F0ZWQgCkBAIC00MjYsOCArNDY0LDExIEBACiAKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2dldF90YWJsZV9kYXRhX3NldF9oYW5kbGVyKGRhdGFfc2V0KSk7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfZGF0YShyZWdpbmZvLCBkYXRhX3NldC0+dGFibGUsCisgICAgcmV0ID0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9kYXRhKHJlZ2luZm8sIGRhdGFfc2V0LT50YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2luZm8pOworICAgIGlmIChyZXQgPT0gU05NUEVSUl9TVUNDRVNTICYmIHJlZ2luZm8tPmhhbmRsZXIpCisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9vd25zX3RhYmxlX2luZm8ocmVnaW5mby0+aGFuZGxlci0+bmV4dCk7CisgICAgcmV0dXJuIHJldDsKIH0KIAogbmV3cm93X3N0YXNoICAgKgpAQCAtNDg4LDYgKzUyOSw3IEBACiAgICAgICAgIHJvdyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9yb3cocmVxdWVzdCk7CiAgICAgICAgIHRhYmxlX2luZm8gPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KTsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgaWYgKE1PREVfSVNfU0VUKHJlcWluZm8tPm1vZGUpKSB7CiAKICAgICAgICAgICAgIC8qCkBAIC01NTYsMTIgKzU5OCwxNyBAQAogICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUgPT0gTU9ERV9TRVRfUkVTRVJWRTIpCiAgICAgICAgICAgICAgICAgcm93ID0gbmV3cm93OwogICAgICAgICB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAgICAgaWYgKHJvdykKICAgICAgICAgICAgIGRhdGEgPSAobmV0c25tcF90YWJsZV9kYXRhX3NldF9zdG9yYWdlICopIHJvdy0+ZGF0YTsKIAogICAgICAgICBpZiAoIXJvdyB8fCAhdGFibGVfaW5mbyB8fCAhZGF0YSkgewotICAgICAgICAgICAgaWYgKCFNT0RFX0lTX1NFVChyZXFpbmZvLT5tb2RlKSB8fCAhdGFibGVfaW5mbykgeworICAgICAgICAgICAgaWYgKCF0YWJsZV9pbmZvCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorICAgICAgICAgICAgICAgIHx8ICFNT0RFX0lTX1NFVChyZXFpbmZvLT5tb2RlKQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX05PU1VDSElOU1RBTkNFKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTU5Miw2ICs2MzksNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgICAgICAgICBpZiAoZGF0YSkgewogICAgICAgICAgICAgICAgIC8qCkBAIC04MDgsNiArODU2LDEyIEBACiAJCW5ld3JvdyA9IE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICJ0YWJsZV9kYXRhc2V0OiB1bmtub3duIG1vZGUgcGFzc2VkIGludG8gdGhlIGhhbmRsZXJcbiIpOworICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKICAgICAgICAgfQogICAgIH0KIApAQCAtODI4LDYgKzg4Miw3IEBACiAvKioKICAqIGV4dHJhY3RzIGEgbmV0c25tcF90YWJsZV9kYXRhX3NldCBwb2ludGVyIGZyb20gYSBnaXZlbiByZXF1ZXN0CiAgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBX1NFVF9DT0xVTU4KIG5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZSAqCiBuZXRzbm1wX2V4dHJhY3RfdGFibGVfZGF0YV9zZXRfY29sdW1uKG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjb2x1bW4pCkBAIC04MzksNyArODk0LDcgQEAKICAgICB9CiAgICAgcmV0dXJuIGRhdGE7CiB9Ci0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFfU0VUX0NPTFVNTiAqLwogCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgKgpAQCAtODY3LDkgKzkyMiwyMyBAQAogICAgIGlmICghcmVnaXN0cmF0aW9uX25hbWUpIHsKICAgICAgICAgcmVnaXN0cmF0aW9uX25hbWUgPSB0YWJsZV9zZXQtPnRhYmxlLT5uYW1lOwogICAgIH0KLSAgICBuZXRzbm1wX2FkZF9saXN0X2RhdGEoJmF1dG9fdGFibGVzLCBuZXRzbm1wX2NyZWF0ZV9kYXRhX2xpc3QocmVnaXN0cmF0aW9uX25hbWUsIHRhYmxlcywgTlVMTCkpOyAgICAgLyogWFhYICovCisgICAgbmV0c25tcF9hZGRfbGlzdF9kYXRhKCZhdXRvX3RhYmxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0KHJlZ2lzdHJhdGlvbl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVzLCBmcmVlKSk7ICAgICAvKiBYWFggKi8KIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFTRVRfVU5SRUdJU1RFUl9BVVRPX0RBVEFfVEFCTEUKKy8qKiBVbmRvIHRoZSBlZmZlY3Qgb2YgbmV0c25tcF9yZWdpc3Rlcl9hdXRvX2RhdGFfdGFibGUoKS4KKyAqLwordm9pZAorbmV0c25tcF91bnJlZ2lzdGVyX2F1dG9fZGF0YV90YWJsZShuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICp0YWJsZV9zZXQsCisJCQkJICAgY2hhciAqcmVnaXN0cmF0aW9uX25hbWUpCit7CisgICAgbmV0c25tcF9yZW1vdmVfbGlzdF9ub2RlKCZhdXRvX3RhYmxlcywgcmVnaXN0cmF0aW9uX25hbWUKKwkJCSAgICAgPyByZWdpc3RyYXRpb25fbmFtZSA6IHRhYmxlX3NldC0+dGFibGUtPm5hbWUpOworfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQVNFVF9VTlJFR0lTVEVSX0FVVE9fREFUQV9UQUJMRSAqLworCiAjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9NSUJfTE9BRElORwogc3RhdGljIHZvaWQKIF90YWJsZV9zZXRfYWRkX2luZGV4ZXMobmV0c25tcF90YWJsZV9kYXRhX3NldCAqdGFibGVfc2V0LCBzdHJ1Y3QgdHJlZSAqdHApCkBAIC0xMTMyLDggKzEyMDEsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgImFkZGluZyBkYXRhIGF0IGNvbHVtbiAlZCBvZiB0eXBlICVkXG4iLCBkci0+Y29sdW1uLAogICAgICAgICAgICAgICAgICAgICBkci0+dHlwZSkpOwogICAgICAgICBuZXRzbm1wX3NldF9yb3dfY29sdW1uKHJvdywgZHItPmNvbHVtbiwgZHItPnR5cGUsIGJ1ZiwgYnVmX3NpemUpOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgaWYgKGRyLT53cml0YWJsZSkKICAgICAgICAgICAgIG5ldHNubXBfbWFya19yb3dfY29sdW1uX3dyaXRhYmxlKHJvdywgZHItPmNvbHVtbiwgMSk7ICAgICAgIC8qIG1ha2Ugd3JpdGFibGUgKi8KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogICAgIHJjID0gbmV0c25tcF90YWJsZV9kYXRhX2FkZF9yb3codGFibGVzLT50YWJsZV9zZXQtPnRhYmxlLCByb3cpOwogICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0gcmMpIHsKQEAgLTExNDYsNiArMTIxNyw3IEBACiB9CiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIG5ldHNubXBfb2lkX3N0YXNoX25vZGUgKioKIG5ldHNubXBfdGFibGVfZGF0YXNldF9nZXRfb3JfY3JlYXRlX3N0YXNoKG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9kYXRhX3NldCAqZGF0YXRhYmxlLApAQCAtMTE3Niw2ICsxMjQ4LDcgQEAKICAgICByZXR1cm4gc3Rhc2hwOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQVNFVF9HRVRfTkVXUk9XCiBuZXRzbm1wX3RhYmxlX3JvdyAqCiBuZXRzbm1wX3RhYmxlX2RhdGFzZXRfZ2V0X25ld3JvdyhuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLApAQCAtMTE5OSw2ICsxMjcyLDggQEAKIAogICAgIHJldHVybiBuZXdyb3dzdGFzaC0+bmV3cm93OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQVNFVF9HRVRfTkVXUk9XICovCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAqCkBAIC0xMjQ3LDYgKzEzMjIsNyBAQAogICAgIHJldHVybiBzdGFydDsKIH0KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIC8qKgogICogbWFya3MgYSBnaXZlbiBjb2x1bW4gaW4gYSByb3cgYXMgd3JpdGFibGUgb3Igbm90LgogICovCkBAIC0xMjgwLDYgKzEzNTYsNyBAQAogICAgIH0KICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAvKioKICAqIFNldHMgYSBnaXZlbiBjb2x1bW4gaW4gYSByb3cgd2l0aCBkYXRhIGdpdmVuIGEgdHlwZSwgdmFsdWUsCkBAIC0xMzU0LDYgKzE0MzEsNyBAQAogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CiB9CiAKKwogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICoKICAqIERhdGEgU2V0IEFQSTogSW5kZXggb3BlcmF0aW9ucwpAQCAtMTM3MSw2ICsxNDQ5LDcgQEAKIAogLyoqIGFkZHMgbXVsdGlwbGUgaW5kZXhlcyB0byBhIHRhYmxlX2RhdGFzZXQgaGVscGVyIG9iamVjdC4KICAqICBUbyBlbmQgdGhlIGxpc3QsIHVzZSBhIDAgYWZ0ZXIgdGhlIGxpc3Qgb2YgQVNOIGluZGV4IHR5cGVzLiAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX1NFVF9BRERfSU5ERVhFUwogdm9pZAogbmV0c25tcF90YWJsZV9zZXRfYWRkX2luZGV4ZXMobmV0c25tcF90YWJsZV9kYXRhX3NldCAqdHNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikKQEAgLTEzODYsNiArMTQ2NSwxMCBAQAogCiAgICAgdmFfZW5kKGRlYnVnYXJncyk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9TRVRfQUREX0lOREVYRVMgKi8KIAorI2Vsc2UgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBU0VUICovCituZXRzbm1wX2ZlYXR1cmVfdW51c2VkKHRhYmxlX2RhdGFzZXQpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQVNFVCAqLwogLyoqIEB9IAogICovCmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmMgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmMKaW5kZXggODdjNzQxMi4uOGVkNWNkMCAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jCisrKyBiL2FnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYwpAQCAtODQsNiArODQsNyBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtOTksNiArMTAwLDE4IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3Rhc2hfY2FjaGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2l0ZXJhdG9yX2FsbCwgbWliX2hlbHBlcnMpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9pdGVyYXRvcl9pbnNlcnRfY29udGV4dCwgdGFibGVfaXRlcmF0b3JfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2l0ZXJhdG9yX2NyZWF0ZV90YWJsZSwgdGFibGVfaXRlcmF0b3JfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2l0ZXJhdG9yX3Jvd19maXJzdCwgdGFibGVfaXRlcmF0b3JfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2l0ZXJhdG9yX3Jvd19jb3VudCwgdGFibGVfaXRlcmF0b3JfYWxsKQorCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfU1RBU0hfQ0FDSEUKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGRhdGFfbGlzdF9nZXRfbGlzdF9ub2RlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUob2lkX3N0YXNoX2FkZF9kYXRhKQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX1NUQVNIX0NBQ0hFICovCisKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAqCiAgKiBJdGVyYXRvciBBUEk6IFRhYmxlIG1haW50ZW5hbmNlCkBAIC0xMTcsNiArMTMwLDcgQEAKICAgICAgKgogICAgICAqIFRpbWUgd2lsbCBzaG93IHdoZXRoZXIgdGhpcyBpcyBhIHNlbnNpYmxlIGFwcHJvYWNoIG9yIG5vdC4KICAgICAgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9JVEVSQVRPUl9DUkVBVEVfVEFCTEUKIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqCiBuZXRzbm1wX2l0ZXJhdG9yX2NyZWF0ZV90YWJsZSggTmV0c25tcF9GaXJzdF9EYXRhX1BvaW50ICpmaXJzdERQLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTmV4dF9EYXRhX1BvaW50ICAqbmV4dERQLApAQCAtMTM3LDcgKzE1MSw5IEBACiAKICAgICByZXR1cm4gaWluZm87CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9JVEVSQVRPUl9DUkVBVEVfVEFCTEUgKi8KIAorLyoqIEZyZWUgdGhlIG1lbW9yeSB0aGF0IHdhcyBhbGxvY2F0ZWQgZm9yIGEgdGFibGUgaXRlcmF0b3IuICovCiB2b2lkCiBuZXRzbm1wX2l0ZXJhdG9yX2RlbGV0ZV90YWJsZSggbmV0c25tcF9pdGVyYXRvcl9pbmZvICppaW5mbyApCiB7CkBAIC0xNDgsNiArMTY0LDcgQEAKICAgICAgICAgc25tcF9mcmVlX3ZhcmJpbmQoIGlpbmZvLT5pbmRleGVzICk7CiAgICAgICAgIGlpbmZvLT5pbmRleGVzID0gTlVMTDsKICAgICB9CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKGlpbmZvLT50YWJsZV9yZWdpbmZvKTsKICAgICBTTk1QX0ZSRUUoIGlpbmZvICk7CiB9CiAKQEAgLTE2NSw3ICsxODIsMzcgQEAKICAqCiAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKLS8qKiByZXR1cm5zIGEgbmV0c25tcF9taWJfaGFuZGxlciBvYmplY3QgZm9yIHRoZSB0YWJsZV9pdGVyYXRvciBoZWxwZXIgKi8KK3N0YXRpYyBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKgorbmV0c25tcF9pdGVyYXRvcl9yZWYobmV0c25tcF9pdGVyYXRvcl9pbmZvICppaW5mbykKK3sKKyAgICBpaW5mby0+cmVmY250Kys7CisgICAgcmV0dXJuIGlpbmZvOworfQorCitzdGF0aWMgdm9pZAorbmV0c25tcF9pdGVyYXRvcl9kZXJlZihuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKmlpbmZvKQoreworICAgIGlmICgtLWlpbmZvLT5yZWZjbnQgPT0gMCkKKyAgICAgICAgbmV0c25tcF9pdGVyYXRvcl9kZWxldGVfdGFibGUoaWluZm8pOworfQorCit2b2lkIG5ldHNubXBfaGFuZGxlcl9vd25zX2l0ZXJhdG9yX2luZm8obmV0c25tcF9taWJfaGFuZGxlciAqaCkKK3sKKyAgICBuZXRzbm1wX2Fzc2VydChoKTsKKyAgICBuZXRzbm1wX2Fzc2VydChoLT5teXZvaWQpOworICAgICgobmV0c25tcF9pdGVyYXRvcl9pbmZvICopKGgtPm15dm9pZCkpLT5yZWZjbnQrKzsKKyAgICBoLT5kYXRhX2Nsb25lID0gKHZvaWQgKigqKSh2b2lkICopKW5ldHNubXBfaXRlcmF0b3JfcmVmOworICAgIGgtPmRhdGFfZnJlZSAgPSAodm9pZCgqKSh2b2lkICopKW5ldHNubXBfaXRlcmF0b3JfZGVyZWY7Cit9CisKKy8qKgorICogUmV0dXJucyBhIG5ldHNubXBfbWliX2hhbmRsZXIgb2JqZWN0IGZvciB0aGUgdGFibGVfaXRlcmF0b3IgaGVscGVyLgorICoKKyAqIFRoZSBjYWxsZXIgcmVtYWlucyB0aGUgb3duZXIgb2YgdGhlIGl0ZXJhdG9yIGluZm9ybWF0aW9uIG9iamVjdCBpZgorICogdGhlIGZsYWcgTkVUU05NUF9IQU5ETEVSX09XTlNfSUlORk8gaGFzIG5vdCBiZWVuIHNldCwgYW5kIHRoZSBjcmVhdGVkCisgKiBoYW5kbGVyIGJlY29tZXMgdGhlIG93bmVyIG9mIHRoZSBpdGVyYXRvciBpbmZvcm1hdGlvbiBpZiB0aGUgZmxhZworICogTkVUU05NUF9IQU5ETEVSX09XTlNfSUlORk8gaGFzIGJlZW4gc2V0LgorICovCiBuZXRzbm1wX21pYl9oYW5kbGVyICoKIG5ldHNubXBfZ2V0X3RhYmxlX2l0ZXJhdG9yX2hhbmRsZXIobmV0c25tcF9pdGVyYXRvcl9pbmZvICppaW5mbykKIHsKQEAgLTE4Miw2ICsyMjksOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIG1lLT5teXZvaWQgPSBpaW5mbzsKKyAgICBpZiAoaWluZm8tPmZsYWdzICYgTkVUU05NUF9IQU5ETEVSX09XTlNfSUlORk8pCisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9vd25zX2l0ZXJhdG9yX2luZm8obWUpOwogICAgIHJldHVybiBtZTsKIH0KIApAQCAtMTk1LDcgKzI0NCwxMSBAQAogICoKICAqIEBwYXJhbSByZWdpbmZvIGlzIGEgcG9pbnRlciB0byBhIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gc3RydWN0CiAgKgotICogQHBhcmFtIGlpbmZvIGlzIGEgcG9pbnRlciB0byBhIG5ldHNubXBfaXRlcmF0b3JfaW5mbyBzdHJ1Y3QKKyAqIEBwYXJhbSBpaW5mbyBBIHBvaW50ZXIgdG8gYSBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gc3RydWN0LiBJZiB0aGUgZmxhZworICogTkVUU05NUF9IQU5ETEVSX09XTlNfSUlORk8gaXMgbm90IHNldCBpbiBpaW5mby0+ZmxhZ3MsIHRoZSBjYWxsZXIgcmVtYWlucworICogdGhlIG93bmVyIG9mIHRoaXMgc3RydWN0dXJlLiBBbmQgaWYgdGhlIGZsYWcgTkVUU05NUF9IQU5ETEVSX09XTlNfSUlORk8gaXMKKyAqIHNldCBpbiBpaW5mby0+ZmxhZ3MsIG93bmVyc2hpcCBvZiB0aGlzIGRhdGEgc3RydWN0dXJlIGlzIHBhc3NlZCB0byB0aGUKKyAqIGhhbmRsZXIuCiAgKgogICogQHJldHVybiBNSUJfUkVHSVNURVJFRF9PSyBpcyByZXR1cm5lZCBpZiB0aGUgcmVnaXN0cmF0aW9uIHdhcyBhIHN1Y2Nlc3MuCiAgKglGYWlsdXJlcyBhcmUgTUlCX1JFR0lTVFJBVElPTl9GQUlMRUQsIE1JQl9EVVBMSUNBVEVfUkVHSVNUUkFUSU9OLgpAQCAtMjA2LDcgKzI1OSw5IEBACiBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqaWluZm8pCiB7CisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBU0hfQ0FDSEUKICAgICByZWdpbmZvLT5tb2RlcyB8PSBIQU5ETEVSX0NBTl9TVEFTSDsKKyNlbmRpZiAgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVEFTSF9DQUNIRSAqLwogICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZ2V0X3RhYmxlX2l0ZXJhdG9yX2hhbmRsZXIoaWluZm8pKTsKICAgICBpZiAoIWlpbmZvKQpAQCAtMjM3LDYgKzI5Miw3IEBACiAgICAgcmV0dXJuIG5ldHNubXBfcmVxdWVzdF9nZXRfbGlzdF9kYXRhKHJlcXVlc3QsIFRBQkxFX0lURVJBVE9SX05BTUUpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfSVRFUkFUT1JfSU5TRVJUX0NPTlRFWFQKIC8qKiBpbnNlcnRzIHRhYmxlX2l0ZXJhdG9yIHNwZWNpZmljIGRhdGEgZm9yIGEgbmV3bHkKICAqICBjcmVhdGVkIHJvdyBpbnRvIGEgcmVxdWVzdCAqLwogTkVUU05NUF9JTkxJTkUgdm9pZApAQCAtMzAxLDYgKzM1Nyw3IEBACiAgICAgICAgIH0KICAgICB9CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9JVEVSQVRPUl9JTlNFUlRfQ09OVEVYVCAqLwogCiAjZGVmaW5lIFRJX1JFUVVFU1RfQ0FDSEUgInRpX2NhY2hlIgogCkBAIC00MDMsMTIgKzQ2MCwxNCBAQAogICAgIHZvaWQgICAgICAgICAgICpjYWxsYmFja19kYXRhX2NvbnRleHQgPSBOVUxMOwogICAgIHRpX2NhY2hlX2luZm8gICp0aV9pbmZvID0gTlVMTDsKICAgICBpbnQgICAgICAgICAgICAgcmVxdWVzdF9jb3VudCA9IDA7CisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBU0hfQ0FDSEUKICAgICBuZXRzbm1wX29pZF9zdGFzaF9ub2RlICoqY2luZm8gPSBOVUxMOwogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqb2xkX2luZGV4ZXMgPSBOVUxMLCAqdmI7CiAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfcmVnX2luZm8gPSBOVUxMOwogICAgIGludCBpOwogICAgIG5ldHNubXBfZGF0YV9saXN0ICAgICpsZGF0YSA9IE5VTEw7Ci0gICAgCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVEFTSF9DQUNIRSAqLworCiAgICAgaWluZm8gPSAobmV0c25tcF9pdGVyYXRvcl9pbmZvICopIGhhbmRsZXItPm15dm9pZDsKICAgICBpZiAoIWlpbmZvIHx8ICFyZWdpbmZvIHx8ICFyZXFpbmZvKQogICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwpAQCAtNDM0LDYgKzQ5Myw3IEBACiAKICAgICAvKiBwcmVsaW1pbmFyeSBhbmFseXNpcyAqLwogICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgeworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVNIX0NBQ0hFCiAgICAgY2FzZSBNT0RFX0dFVF9TVEFTSDoKICAgICAgICAgY2luZm8gPSBuZXRzbm1wX2V4dHJhY3Rfc3Rhc2hfY2FjaGUocmVxaW5mbyk7CiAgICAgICAgIHRhYmxlX3JlZ19pbmZvID0gbmV0c25tcF9maW5kX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKHJlZ2luZm8pOwpAQCAtNDUyLDYgKzUxMiw3IEBACiAgICAgICAgIC8qIHJlbWVtYmVyIHRoZSBpbmRleGVzIHRoYXQgd2VyZSBvcmlnaW5hbGx5IHBhcnNlZC4gKi8KICAgICAgICAgb2xkX2luZGV4ZXMgPSB0YWJsZV9pbmZvLT5pbmRleGVzOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVNIX0NBQ0hFICovCiAKICAgICBjYXNlIE1PREVfR0VUTkVYVDoKICAgICAgICAgZm9yKHJlcXVlc3QgPSByZXF1ZXN0cyA7IHJlcXVlc3Q7IHJlcXVlc3QgPSByZXF1ZXN0LT5uZXh0KSB7CkBAIC01MDUsOCArNTY2LDExIEBACiAgICAgICovCiAgICAgaWYgKHJlcWluZm8tPm1vZGUgPT0gTU9ERV9HRVQgfHwKICAgICAgICAgcmVxaW5mby0+bW9kZSA9PSBNT0RFX0dFVE5FWFQgfHwKLSAgICAgICAgcmVxaW5mby0+bW9kZSA9PSBNT0RFX0dFVF9TVEFTSCB8fAotICAgICAgICByZXFpbmZvLT5tb2RlID09IE1PREVfU0VUX1JFU0VSVkUxKSB7CisgICAgICAgIHJlcWluZm8tPm1vZGUgPT0gTU9ERV9HRVRfU1RBU0gKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCisgICAgICAgIHx8IHJlcWluZm8tPm1vZGUgPT0gTU9ERV9TRVRfUkVTRVJWRTEKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICAgICAgKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIENvdW50IHRoZSBudW1iZXIgb2YgcmVxdWVzdCBpbiB0aGUgbGlzdCwKICAgICAgICAgICogICBzbyB0aGF0IHdlJ2xsIGtub3cgd2hlbiB3ZSdyZSBmaW5pc2hlZApAQCAtNTk1LDcgKzY1OSw5IEBACiAKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHJlcWluZm8tPm1vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBNT0RFX0dFVDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsb29raW5nIGZvciBleGFjdCBtYXRjaGVzICovCiAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9vaWRfbm9hbGxvYyhteW5hbWUsIE1BWF9PSURfTEVOLCAmbXluYW1lX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9pZCwgY29sb2lkX2xlbiwgaW5kZXhfc2VhcmNoKTsKQEAgLTYzMCw2ICs2OTYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVEFTSF9DQUNIRQogICAgICAgICAgICAgICAgICAgICBjYXNlIE1PREVfR0VUX1NUQVNIOgogICAgICAgICAgICAgICAgICAgICAgICAgLyogY29sbGVjdCBkYXRhIGZvciBlYWNoIGNvbHVtbiBmb3IgZXZlcnkgcm93ICovCiAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9vaWRfbm9hbGxvYyhteW5hbWUsIE1BWF9PSURfTEVOLCAmbXluYW1lX2xlbiwKQEAgLTY4MSw2ICs3NDgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgcmVxaW5mby0+bW9kZSA9IE1PREVfR0VUX1NUQVNIOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYgIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBU0hfQ0FDSEUgKi8KIAogICAgICAgICAgICAgICAgICAgICBjYXNlIE1PREVfR0VUTkVYVDoKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxvb2tpbmcgZm9yICJuZXh0IiBtYXRjaGVzICovCkBAIC03MjAsMTIgKzc4OCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgTU9ERV9TRVRfRlJFRToKICAgICAgICAgICAgICAgICAgICAgY2FzZSBNT0RFX1NFVF9VTkRPOgogICAgICAgICAgICAgICAgICAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5lZWRlZCBwcm9jZXNzaW5nIGFscmVhZHkgZG9uZSBpbiBSRVNFUlZFMSAqLwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCkBAIC03ODgsOCArODU4LDExIEBACiAgICAgfQogCiAgICAgaWYgKHJlcWluZm8tPm1vZGUgPT0gTU9ERV9HRVQgfHwKLSAgICAgICAgcmVxaW5mby0+bW9kZSA9PSBNT0RFX0dFVE5FWFQgfHwKLSAgICAgICAgcmVxaW5mby0+bW9kZSA9PSBNT0RFX1NFVF9SRVNFUlZFMSkgeworICAgICAgICByZXFpbmZvLT5tb2RlID09IE1PREVfR0VUTkVYVAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKKyAgICAgICAgfHwgcmVxaW5mby0+bW9kZSA9PSBNT0RFX1NFVF9SRVNFUlZFMQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgICAgICApIHsKICAgICAgICAgLyogcGVyIHJlcXVlc3QgbGFzdCBtaW51dGUgcHJvY2Vzc2luZyAqLwogICAgICAgICBmb3IocmVxdWVzdCA9IHJlcXVlc3RzIDsgcmVxdWVzdDsgcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQpIHsKICAgICAgICAgICAgIGlmIChyZXF1ZXN0LT5wcm9jZXNzZWQpCkBAIC04MjUsNyArODk4LDkgQEAKICAgICAgICAgICAgICAgICAvKiBGQUxMIFRIUk9VR0ggKi8KIAogICAgICAgICAgICAgY2FzZSBNT0RFX0dFVDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAgICAgICAgIGlmICh0aV9pbmZvLT5kYXRhX2NvbnRleHQpCiAgICAgICAgICAgICAgICAgICAgIC8qIHdlIGRvbid0IGFkZCBhIGZyZWUgcG9pbnRlciwgc2luY2UgaXQncyBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgVElfUkVRVUVTVF9DQUNIRSBpbnN0ZWFkICovCkBAIC04NDgsMTAgKzkyMywxMiBAQAogICAgICAgICBpZiAocmVxaW5mby0+bW9kZSA9PSBNT0RFX0dFVE5FWFQpIHsKICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUgPSBNT0RFX0dFVDsKICAgICAgICAgfQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVNIX0NBQ0hFCiAgICAgfSBlbHNlIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfR0VUX1NUQVNIKSB7CiAgICAgICAgIG5ldHNubXBfZnJlZV9yZXF1ZXN0X2RhdGFfc2V0cyhyZXF0bXApOwogICAgICAgICBTTk1QX0ZSRUUocmVxdG1wKTsKICAgICAgICAgdGFibGVfaW5mby0+aW5kZXhlcyA9IG9sZF9pbmRleGVzOworI2VuZGlmICAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVNIX0NBQ0hFICovCiAgICAgfQogCiAKQEAgLTg4Miw2ICs5NTksNyBAQAogICoKICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0lURVJBVE9SX1JPV19GSVJTVAogdm9pZCAqCiBuZXRzbm1wX2l0ZXJhdG9yX3Jvd19maXJzdCggbmV0c25tcF9pdGVyYXRvcl9pbmZvICppaW5mbyApIHsKICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZwMSwgKnZwMjsKQEAgLTkwMCw2ICs5NzgsNyBAQAogICAgIHNubXBfZnJlZV92YXJiaW5kKCB2cDEgKTsKICAgICByZXR1cm4gY3R4MjsgIC8qIG9yICpjdHgyID8/ICovCiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9JVEVSQVRPUl9ST1dfRklSU1QgKi8KIAogdm9pZCAqCiBuZXRzbm1wX2l0ZXJhdG9yX3Jvd19nZXQoIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqaWluZm8sIHZvaWQgKnJvdyApCkBAIC0xMTA4LDYgKzExODcsNyBAQAogICAgIHJldHVybiAoIHZwMiA/IGN0eDIgOiBOVUxMICk7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9JVEVSQVRPUl9ST1dfQ09VTlQKIGludAogbmV0c25tcF9pdGVyYXRvcl9yb3dfY291bnQoIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqaWluZm8gKQogewpAQCAtMTE0Myw2ICsxMjIzLDcgQEAKICAgICBzbm1wX2ZyZWVfdmFyYmluZCggdnAxICk7CiAgICAgcmV0dXJuIGk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9JVEVSQVRPUl9ST1dfQ09VTlQgKi8KIAogCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL3RhYmxlX3Jvdy5jIGIvYWdlbnQvaGVscGVycy90YWJsZV9yb3cuYwppbmRleCBiYmM0ODRmLi4yYTMzZjIzIDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL3RhYmxlX3Jvdy5jCisrKyBiL2FnZW50L2hlbHBlcnMvdGFibGVfcm93LmMKQEAgLTgsNiArOCw3IEBACiAjZGVmaW5lIFRBQkxFX1JPV19EQVRBICAidGFibGVfcm93IgogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2lmIEhBVkVfU1RSSU5HX0gKICNpbmNsdWRlIDxzdHJpbmcuaD4KQEAgLTIzLDYgKzI0LDExIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0Lmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9yb3dfYWxsLCBtaWJfaGVscGVycykKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX3Jvd19leHRyYWN0LCB0YWJsZV9yb3dfYWxsKQorCisKIC8qCiAgKiBzbm1wLmg6I2RlZmluZSBTTk1QX01TR19JTlRFUk5BTF9TRVRfQkVHSU4gICAgICAgIC0xIAogICogc25tcC5oOiNkZWZpbmUgU05NUF9NU0dfSU5URVJOQUxfU0VUX1JFU0VSVkUxICAgICAwIApAQCAtMTU0LDExICsxNjAsMTMgQEAKIAogCiAvKiogcmV0dXJuIHRoZSByb3cgZGF0YSBzdHJ1Y3R1cmUgc3VwcGxpZWQgdG8gdGhlIHRhYmxlX3JvdyBoZWxwZXIgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9ST1dfRVhUUkFDVAogdm9pZCAqCiBuZXRzbm1wX3RhYmxlX3Jvd19leHRyYWN0KG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0KQogewogICAgIHJldHVybiBuZXRzbm1wX3JlcXVlc3RfZ2V0X2xpc3RfZGF0YShyZXF1ZXN0LCBUQUJMRV9ST1dfREFUQSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9ST1dfRVhUUkFDVCAqLwogLyoqIEBjb25kICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL3RhYmxlX3RkYXRhLmMgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX3RkYXRhLmMKaW5kZXggY2YxNjZlMy4uODg2NTA4NCAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy90YWJsZV90ZGF0YS5jCisrKyBiL2FnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgpAQCAtMTksNiArMjAsMjIgQEAKICNpbmNsdWRlIDxkbWFsbG9jLmg+CiAjZW5kaWYKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX3RkYXRhX2FsbCwgbWliX2hlbHBlcnMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfdGRhdGEsIHRhYmxlX3RkYXRhX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV90ZGF0YV9kZWxldGVfdGFibGUsIHRhYmxlX3RkYXRhX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV90ZGF0YV9leHRyYWN0X3RhYmxlLCB0YWJsZV90ZGF0YV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfdGRhdGFfcmVtb3ZlX3JvdywgdGFibGVfdGRhdGFfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX3RkYXRhX2luc2VydF9yb3csIHRhYmxlX3RkYXRhX2FsbCkKKworI2lmZGVmIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX1RBQkxFX1REQVRBCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9jb250YWluZXJfcm93X2luc2VydCkKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9UQUJMRV9UREFUQV9SRU1PVkVfUk9XCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9jb250YWluZXJfcm93X3JlbW92ZSkKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9UQUJMRV9UREFUQV9SRU1PVkVfUk9XICovCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfVEFCTEVfVERBVEEgKi8KKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX1REQVRBCisKIC8qKiBAZGVmZ3JvdXAgdGRhdGEgdGRhdGEKICAqICBJbXBsZW1lbnQgYSB0YWJsZSB3aXRoIGRhdGFtYXR0ZWQgc3RvcmFnZS4KICAqICBAaW5ncm91cCB0YWJsZQpAQCAtNzIsNiArODksNyBAQAogICAgIHJldHVybiB0YWJsZTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX1REQVRBX0RFTEVURV9UQUJMRQogLyoqIGNyZWF0ZXMgYW5kIHJldHVybnMgYSAndGRhdGEnIHRhYmxlIGRhdGEgc3RydWN0dXJlICovCiB2b2lkCiBuZXRzbm1wX3RkYXRhX2RlbGV0ZV90YWJsZShuZXRzbm1wX3RkYXRhICp0YWJsZSkKQEAgLTg3LDYgKzEwNSw3IEBACiAgICAgU05NUF9GUkVFKHRhYmxlKTsKICAgICByZXR1cm47CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9UREFUQV9ERUxFVEVfVEFCTEUgKi8KIAogLyoqIGNyZWF0ZXMgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIG5ldyByb3cgZGF0YSBzdHJ1Y3R1cmUgKi8KIG5ldHNubXBfdGRhdGFfcm93ICoKQEAgLTk3LDYgKzExNiw4IEBACiB9CiAKIC8qKiBjbG9uZXMgYSAndGRhdGEnIHJvdy4gRE9FUyBOT1QgQ0xPTkUgVEhFIFRBQkxFLVNQRUNJRklDIEVOVFJZIERBVEEuICovCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGRhdGFfY2xvbmVfcm93LCB0YWJsZV90ZGF0YV9hbGwpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVERBVEFfQ0xPTkVfUk9XCiBuZXRzbm1wX3RkYXRhX3JvdyAqCiBuZXRzbm1wX3RkYXRhX2Nsb25lX3JvdyhuZXRzbm1wX3RkYXRhX3JvdyAqcm93KQogewpAQCAtMTI5LDkgKzE1MCwxMiBAQAogCiAgICAgcmV0dXJuIG5ld3JvdzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1REQVRBX0NMT05FX1JPVyAqLwogCiAvKiogY29weSB0aGUgY29udGVudHMgb2YgYSAndGRhdGEnIHJvdy4KICAgICBET0VTIE5PVCBDT1BZIFRIRSBUQUJMRS1TUEVDSUZJQyBFTlRSWSBEQVRBLiAqLworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRkYXRhX2NvcHlfcm93LCB0YWJsZV90ZGF0YV9hbGwpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVERBVEFfQ09QWV9ST1cKIGludAogbmV0c25tcF90ZGF0YV9jb3B5X3JvdyhuZXRzbm1wX3RkYXRhX3JvdyAqZHN0X3JvdywgbmV0c25tcF90ZGF0YV9yb3cgKnNyY19yb3cpCiB7CkBAIC0xNTUsNiArMTc5LDcgQEAKIAogICAgIHJldHVybiAwOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVERBVEFfQ09QWV9ST1cgKi8KIAogLyoqIGRlbGV0ZXMgdGhlIG1lbW9yeSB1c2VkIGJ5IHRoZSBzcGVjaWZpZWQgcm93CiAgKiAgcmV0dXJucyB0aGUgdGFibGUtc3BlY2lmaWMgZW50cnkgZGF0YQpAQCAtMjMxLDYgKzI1Niw4IEBACiB9CiAKIC8qKiBzd2FwcyBvdXQgb3JpZ3JvdyB3aXRoIG5ld3Jvdy4gIFRoaXMgZG9lcyAqbm90KiBkZWxldGUvZnJlZSBhbnl0aGluZyEgKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0ZGF0YV9yZXBsYWNlX3JvdywgdGFibGVfdGRhdGFfYWxsKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1REQVRBX1JFUExBQ0VfUk9XCiB2b2lkCiBuZXRzbm1wX3RkYXRhX3JlcGxhY2Vfcm93KG5ldHNubXBfdGRhdGEgKnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdGRhdGFfcm93ICpvcmlncm93LApAQCAtMjM5LDYgKzI2Niw3IEBACiAgICAgbmV0c25tcF90ZGF0YV9yZW1vdmVfcm93KHRhYmxlLCBvcmlncm93KTsKICAgICBuZXRzbm1wX3RkYXRhX2FkZF9yb3codGFibGUsIG5ld3Jvdyk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UREFUQV9SRVBMQUNFX1JPVyAqLwogCiAvKioKICAqIHJlbW92ZXMgYSByb3cgZnJvbSB0aGUgZ2l2ZW4gdGFibGUgYW5kIHJldHVybnMgaXQgKG5vIGZyZWUncyBjYWxsZWQpCkBAIC0zMzMsNyArMzYxLDkgQEAKICAgICAgICAgbmVlZF9wcm9jZXNzaW5nID0gMDsgLyogb25seSBuZWVkIHByb2Nlc3NpbmcgaWYgc29tZSB2YXJzIGZvdW5kICovCiAgICAgICAgIC8qKiBGYWxsIHRocm91Z2ggKi8KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgICAgIGZvciAocmVxdWVzdCA9IHJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0ID0gcmVxdWVzdC0+bmV4dCkgewogICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCkKQEAgLTM4MCwxMyArNDEwLDE3IEBACiAgICAgICAgICAgICAgICAgICB0YWJsZS0+Y29udGFpbmVyLCBUQUJMRV9DT05UQUlORVJfS0VZX05FVFNOTVBfSU5ERVgpOwogfQogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGRhdGFfdW5yZWdpc3RlciwgdGFibGVfdGRhdGFfYWxsKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1REQVRBX1VOUkVHSVNURVIKIGludAogbmV0c25tcF90ZGF0YV91bnJlZ2lzdGVyKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZ2luZm8pCiB7CiAgICAgLyogZnJlZSB0YWJsZTsgKi8KICAgICByZXR1cm4gbmV0c25tcF9jb250YWluZXJfdGFibGVfdW5yZWdpc3RlcihyZWdpbmZvKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1REQVRBX1VOUkVHSVNURVIgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX1REQVRBX0VYVFJBQ1RfVEFCTEUKIC8qKiBleHRyYWN0cyB0aGUgdGRhdGEgdGFibGUgZnJvbSB0aGUgcmVxdWVzdCBzdHJ1Y3R1cmUgKi8KIG5ldHNubXBfdGRhdGEgKgogbmV0c25tcF90ZGF0YV9leHRyYWN0X3RhYmxlKG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0KQpAQCAtMzk0LDggKzQyOCwxMSBAQAogICAgIHJldHVybiAobmV0c25tcF90ZGF0YSAqKSBuZXRzbm1wX3JlcXVlc3RfZ2V0X2xpc3RfZGF0YShyZXF1ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUJMRV9UREFUQV9UQUJMRSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9UREFUQV9FWFRSQUNUX1RBQkxFICovCiAKIC8qKiBleHRyYWN0cyB0aGUgdGRhdGEgY29udGFpbmVyIGZyb20gdGhlIHJlcXVlc3Qgc3RydWN0dXJlICovCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGRhdGFfZXh0cmFjdF9jb250YWluZXIsIHRhYmxlX3RkYXRhX2FsbCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UREFUQV9FWFRSQUNUX0NPTlRBSU5FUgogbmV0c25tcF9jb250YWluZXIgKgogbmV0c25tcF90ZGF0YV9leHRyYWN0X2NvbnRhaW5lcihuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdCkKIHsKQEAgLTQwMyw2ICs0NDAsNyBAQAogICAgICAgICBuZXRzbm1wX3JlcXVlc3RfZ2V0X2xpc3RfZGF0YShyZXF1ZXN0LCBUQUJMRV9UREFUQV9UQUJMRSk7CiAgICAgcmV0dXJuICggdGRhdGEgPyB0ZGF0YS0+Y29udGFpbmVyIDogTlVMTCApOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVERBVEFfRVhUUkFDVF9DT05UQUlORVIgKi8KIAogLyoqIGV4dHJhY3RzIHRoZSB0ZGF0YSByb3cgYmVpbmcgYWNjZXNzZWQgZnJvbSB0aGUgcmVxdWVzdCBzdHJ1Y3R1cmUgKi8KIG5ldHNubXBfdGRhdGFfcm93ICoKQEAgLTQyNCw2ICs0NjIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX1REQVRBX0lOU0VSVF9ST1cKIC8qKiBpbnNlcnRzIGEgbmV3bHkgY3JlYXRlZCB0ZGF0YSByb3cgaW50byBhIHJlcXVlc3QgKi8KIE5FVFNOTVBfSU5MSU5FIHZvaWQKIG5ldHNubXBfaW5zZXJ0X3RkYXRhX3JvdyhuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdCwKQEAgLTQzMSw3ICs0NzAsOSBAQAogewogICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19pbnNlcnQocmVxdWVzdCwgKG5ldHNubXBfaW5kZXggKilyb3cpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfVERBVEFfSU5TRVJUX1JPVyAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfVERBVEFfUkVNT1ZFX1JPVwogLyoqIGluc2VydHMgYSBuZXdseSBjcmVhdGVkIHRkYXRhIHJvdyBpbnRvIGEgcmVxdWVzdCAqLwogTkVUU05NUF9JTkxJTkUgdm9pZAogbmV0c25tcF9yZW1vdmVfdGRhdGFfcm93KG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0LApAQCAtNDM5LDYgKzQ4MCw3IEBACiB7CiAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfcm93X3JlbW92ZShyZXF1ZXN0LCAobmV0c25tcF9pbmRleCAqKXJvdyk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9UREFUQV9SRU1PVkVfUk9XICovCiAKIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtNTM2LDYgKzU3OCw4IEBACiAgICAgcmV0dXJuIChuZXRzbm1wX3RkYXRhX3JvdyopQ09OVEFJTkVSX05FWFQoIHRhYmxlLT5jb250YWluZXIsICZpbmRleCApOwogfQogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGRhdGFfcm93X2NvdW50LCB0YWJsZV90ZGF0YV9hbGwpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVERBVEFfUk9XX0NPVU5UCiBpbnQKIG5ldHNubXBfdGRhdGFfcm93X2NvdW50KG5ldHNubXBfdGRhdGEgKnRhYmxlKQogewpAQCAtNTQzLDYgKzU4Nyw3IEBACiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBDT05UQUlORVJfU0laRSggdGFibGUtPmNvbnRhaW5lciApOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVERBVEFfUk9XX0NPVU5UICovCiAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAqCkBAIC01NTIsNiArNTk3LDggQEAKIAogCiAvKiogY29tcGFyZSBhIHJvdyB3aXRoIHRoZSBnaXZlbiBpbmRleCB2YWx1ZXMgKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0ZGF0YV9jb21wYXJlX2lkeCwgdGFibGVfdGRhdGFfYWxsKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1REQVRBX0NPTVBBUkVfSURYCiBpbnQKIG5ldHNubXBfdGRhdGFfY29tcGFyZV9pZHgobmV0c25tcF90ZGF0YV9yb3cgICAgICpyb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqaW5kZXhlcykKQEAgLTU2Myw2ICs2MTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZXMpOwogICAgIHJldHVybiBuZXRzbm1wX3RkYXRhX2NvbXBhcmVfb2lkKHJvdywgc2VhcmNoZm9yLCBzZWFyY2hmb3JfbGVuKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1REQVRBX0NPTVBBUkVfSURYICovCiAKIC8qKiBjb21wYXJlIGEgcm93IHdpdGggdGhlIGdpdmVuIGluZGV4IE9JRCAqLwogaW50CkBAIC01OTQsNiArNjQyLDEwIEBACiAgICAgcmV0dXJuIHNubXBfb2lkdHJlZV9jb21wYXJlKCBpbmRleC0+b2lkcywgaW5kZXgtPmxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhcmV0bywgICBjb21wYXJldG9fbGVuKTsKIH0KKyNlbHNlIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfVERBVEEgKi8KK25ldHNubXBfZmVhdHVyZV91bnVzZWQodGFibGVfdGRhdGEpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfVERBVEEgKi8KKwogCiAvKiogQH0gCiAgKi8KZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvd2F0Y2hlci5jIGIvYWdlbnQvaGVscGVycy93YXRjaGVyLmMKaW5kZXggZGU1OTY4MC4uOWIzOTMzYiAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy93YXRjaGVyLmMKKysrIGIvYWdlbnQvaGVscGVycy93YXRjaGVyLmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KQEAgLTE5LDYgKzIwLDE5IEBACiAjZGVmaW5lIGZyZWVfd3JhcHBlciBmcmVlCiAjZW5kaWYKIAorbmV0c25tcF9mZWF0dXJlX3Byb3ZpZGUod2F0Y2hlcl9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yod2F0Y2hlcl9hbGwsIG1pYl9oZWxwZXJzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHdhdGNoZXJfY3JlYXRlX2luZm82LCB3YXRjaGVyX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih3YXRjaGVyX3JlZ2lzdGVyX3RpbWVzdGFtcCwgd2F0Y2hlcl9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yod2F0Y2hlcl91bG9uZ19zY2FsYXIsIHdhdGNoZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHdhdGNoZXJfcmVhZF9vbmx5X3Vsb25nX3NjYWxhciwgd2F0Y2hlcl9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yod2F0Y2hlcl9yZWFkX29ubHlfaW50X3NjYWxhciwgd2F0Y2hlcl9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yod2F0Y2hlcl9sb25nX3NjYWxhciwgd2F0Y2hlcl9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yod2F0Y2hlcl9yZWFkX29ubHlfbG9uZ19zY2FsYXIsIHdhdGNoZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHdhdGNoZXJfaW50X3NjYWxhciwgd2F0Y2hlcl9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVhZF9vbmx5X2NvdW50ZXIzMl9zY2FsYXIsIHdhdGNoZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHdhdGNoZXJfc3BpbmxvY2ssIHdhdGNoZXJfYWxsKQorCiAvKiogQGRlZmdyb3VwIHdhdGNoZXIgd2F0Y2hlcgogICogIFdhdGNoIGEgc3BlY2lmaWVkIHZhcmlhYmxlIGFuZCBwcm9jZXNzIGl0IGFzIGFuIGluc3RhbmNlIG9yIHNjYWxhciBvYmplY3QKICAqICBAaW5ncm91cCBsZWFmCkBAIC01MSw2ICs2NSw3IEBACiAgICAgcmV0dXJuIHdpbmZvOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9DUkVBVEVfSU5GTzYKIG5ldHNubXBfd2F0Y2hlcl9pbmZvICoKIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbzYodm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIHVfY2hhciB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsIHNpemVfdCBtYXhfc2l6ZSwgc2l6ZV90KiBzaXplX3ApCkBAIC02MSw2ICs3Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfcCk7CiAgICAgcmV0dXJuIHdpbmZvOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9DUkVBVEVfSU5GTzYgKi8KIAogbmV0c25tcF93YXRjaGVyX2luZm8gKgogbmV0c25tcF9pbml0X3dhdGNoZXJfaW5mbyhuZXRzbm1wX3dhdGNoZXJfaW5mbyAqd2luZm8sCkBAIC04Miw2ICs5OCwxMSBAQAogICAgIHJldHVybiB3aW5mbzsKIH0KIAorLyoqCisgKiBSZWdpc3RlciBhIHdhdGNoZWQgc2NhbGFyLiBUaGUgY2FsbGVyIHJlbWFpbnMgdGhlIG93bmVyIG9mIHdhdGNoaW5mby4KKyAqCisgKiBAc2VlIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZTIoKQorICovCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZShuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfd2F0Y2hlcl9pbmZvICAgICAgICAgKndhdGNoaW5mbykKQEAgLTk1LDYgKzExNiwzMCBAQAogICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX2luc3RhbmNlKHJlZ2luZm8pOwogfQogCisvKioKKyAqIFJlZ2lzdGVyIGEgd2F0Y2hlZCBzY2FsYXIuIE93bmVyc2hpcCBvZiB3YXRjaGluZm8gaXMgdHJhbnNmZXJyZWQgdG8gdGhlIGhhbmRsZXIuCisgKgorICogQHNlZSBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoKQorICovCitpbnQKK25ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZTIobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKwkJCQkgICBuZXRzbm1wX3dhdGNoZXJfaW5mbyAgICAgICAgICp3YXRjaGluZm8pCit7CisgICAgbmV0c25tcF9taWJfaGFuZGxlciAqd2hhbmRsZXI7CisKKyAgICB3aGFuZGxlciAgICAgICAgID0gbmV0c25tcF9nZXRfd2F0Y2hlcl9oYW5kbGVyKCk7CisgICAgd2hhbmRsZXItPm15dm9pZCA9ICh2b2lkICopd2F0Y2hpbmZvOworICAgIG5ldHNubXBfb3duc193YXRjaGVyX2luZm8od2hhbmRsZXIpOworCisgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCB3aGFuZGxlcik7CisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfaW5zdGFuY2UocmVnaW5mbyk7Cit9CisKKy8qKgorICogUmVnaXN0ZXIgYSB3YXRjaGVkIHNjYWxhci4gVGhlIGNhbGxlciByZW1haW5zIHRoZSBvd25lciBvZiB3YXRjaGluZm8uCisgKgorICogQHNlZSBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyMigpCisgKi8KIGludAogbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcihuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfd2F0Y2hlcl9pbmZvICAgICAgICAgKndhdGNoaW5mbykKQEAgLTEwOCw2ICsxNTMsMzQgQEAKICAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXIocmVnaW5mbyk7CiB9CiAKKy8qKgorICogUmVnaXN0ZXIgYSB3YXRjaGVkIHNjYWxhci4gT3duZXJzaGlwIG9mIHdhdGNoaW5mbyBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgaGFuZGxlci4KKyAqCisgKiBAc2VlIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIoKQorICovCitpbnQKK25ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIyKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF93YXRjaGVyX2luZm8gICAgICAgICAqd2F0Y2hpbmZvKQoreworICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKndoYW5kbGVyOworCisgICAgd2hhbmRsZXIgICAgICAgICA9IG5ldHNubXBfZ2V0X3dhdGNoZXJfaGFuZGxlcigpOworICAgIHdoYW5kbGVyLT5teXZvaWQgPSAodm9pZCAqKXdhdGNoaW5mbzsKKyAgICBuZXRzbm1wX293bnNfd2F0Y2hlcl9pbmZvKHdoYW5kbGVyKTsKKworICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgd2hhbmRsZXIpOworICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcihyZWdpbmZvKTsKK30KKwordm9pZAorbmV0c25tcF9vd25zX3dhdGNoZXJfaW5mbyhuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyKQoreworICAgIG5ldHNubXBfYXNzZXJ0KGhhbmRsZXIpOworICAgIG5ldHNubXBfYXNzZXJ0KGhhbmRsZXItPm15dm9pZCk7CisgICAgaGFuZGxlci0+ZGF0YV9jbG9uZSA9ICh2b2lkICooKikodm9pZCAqKSluZXRzbm1wX2Nsb25lX3dhdGNoZXJfaW5mbzsKKyAgICBoYW5kbGVyLT5kYXRhX2ZyZWUgPSBmcmVlOworfQorCiAvKiogQGNvbmQgKi8KIAogTkVUU05NUF9TVEFUSUNfSU5MSU5FIHNpemVfdApAQCAtMTkxLDYgKzI2NCw3IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIFNFVCByZXF1ZXN0cy4gIFNob3VsZCBvbmx5IGdldCBoZXJlIGlmIHJlZ2lzdGVyZWQgUldSSVRFIAogICAgICAgICAgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICAgICAgaWYgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnR5cGUgIT0gd2luZm8tPnR5cGUpIHsKICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsIFNOTVBfRVJSX1dST05HVFlQRSk7CkBAIC0yNDYsNiArMzIwLDEyIEBACiAKICAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKKyAgICBkZWZhdWx0OgorICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAid2F0Y2hlciBoYW5kbGVyIGNhbGxlZCB3aXRoIGFuIHVua25vd24gbW9kZTogJWRcbiIsCisgICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwogCiAgICAgfQogCkBAIC0yODQsNiArMzY0LDcgQEAKICAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXIocmVnaW5mbyk7ICAgLyogWFhYIC0gb3IgaW5zdGFuY2U/ICovCiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9XQVRDSEVSX1JFR0lTVEVSX1RJTUVTVEFNUAogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfdGltZXN0YW1wKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcl90IHRpbWVzdGFtcCkKQEAgLTI5NCw2ICszNzUsNyBAQAogCiAgICAgcmV0dXJuIG5ldHNubXBfd2F0Y2hlZF90aW1lc3RhbXBfcmVnaXN0ZXIod2hhbmRsZXIsIHJlZ2luZm8sIHRpbWVzdGFtcCk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9XQVRDSEVSX1JFR0lTVEVSX1RJTUVTVEFNUCAqLwogCiAKIGludApAQCAtMzMxLDExICs0MTMsMTMgQEAKICAgICAgICAgICogVGltZXN0YW1wcyBhcmUgaW5oZXJlbnRseSBSZWFkLU9ubHksCiAgICAgICAgICAqICBzbyBkb24ndCBuZWVkIHRvIHN1cHBvcnQgU0VUIHJlcXVlc3RzLgogICAgICAgICAgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9OT1RXUklUQUJMRSk7CiAgICAgICAgIGhhbmRsZXItPmZsYWdzIHw9IE1JQl9IQU5ETEVSX0FVVE9fTkVYVF9PVkVSUklERV9PTkNFOwogICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogCiAgICAgLyogbmV4dCBoYW5kbGVyIGNhbGxlZCBhdXRvbWF0aWNhbGx5IC0gJ0FVVE9fTkVYVCcgKi8KQEAgLTM0OSw2ICs0MzMsOCBAQAogICAgICAqCiAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1dBVENIRVJfU1BJTkxPQ0sKKwogbmV0c25tcF9taWJfaGFuZGxlciAqCiBuZXRzbm1wX2dldF93YXRjaGVkX3NwaW5sb2NrX2hhbmRsZXIodm9pZCkKIHsKQEAgLTM3NCw3ICs0NjAsNyBAQAogICAgIHdpbmZvICAgICAgICAgICAgPSBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oKHZvaWQgKilzcGlubG9jaywKIAkJICAgICAgICAgICBzaXplb2YoaW50KSwgQVNOX0lOVEVHRVIsIFdBVENIRVJfRklYRURfU0laRSk7CiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCB3aGFuZGxlcik7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIocmVnaW5mbywgd2luZm8pOworICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyMihyZWdpbmZvLCB3aW5mbyk7CiB9CiAKIApAQCAtMzk4LDYgKzQ4NCw3IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIEVuc3VyZSB0aGUgYXNzaWduZWQgdmFsdWUgbWF0Y2hlcyB0aGUgY3VycmVudCBvbmUKICAgICAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgICAgIGZvciAocmVxdWVzdD1yZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7CiAgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkKQpAQCAtNDE4LDExICs1MDUsMTMgQEAKICAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKIAkoKnNwaW5sb2NrKSsrOwogCWJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KIAogICAgIC8qIG5leHQgaGFuZGxlciBjYWxsZWQgYXV0b21hdGljYWxseSAtICdBVVRPX05FWFQnICovCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9XQVRDSEVSX1NQSU5MT0NLICovCiAKICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAgICoKQEAgLTQzMSwxMTggKzUyMCwxNDIgQEAKICAgICAgKgogICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKK25ldHNubXBfd2F0Y2hlcl9pbmZvICoKK25ldHNubXBfY2xvbmVfd2F0Y2hlcl9pbmZvKG5ldHNubXBfd2F0Y2hlcl9pbmZvICp3aW5mbykKK3sKKyAgICBuZXRzbm1wX3dhdGNoZXJfaW5mbyAqY29weSA9IG1hbGxvYyhzaXplb2YoKmNvcHkpKTsKKyAgICBpZiAoY29weSkKKwkqY29weSA9ICp3aW5mbzsKKyAgICByZXR1cm4gY29weTsKK30KKworc3RhdGljIGludAorcmVnaXN0ZXJfc2NhbGFyX3dhdGNoZXIoY29uc3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIHVfY2hhciB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyLCBpbnQgbW9kZSkKK3sKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvID0gTlVMTDsKKyAgICBuZXRzbm1wX21pYl9oYW5kbGVyICp3aGFuZGxlciA9IE5VTEw7CisgICAgbmV0c25tcF93YXRjaGVyX2luZm8qIHdhdGNoaW5mbyA9CisgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbyhkYXRhLCBzaXplLCB0eXBlLCBXQVRDSEVSX0ZJWEVEX1NJWkUpOworICAgIGlmICh3YXRjaGluZm8pCisgICAgICAgIHdoYW5kbGVyID0gbmV0c25tcF9nZXRfd2F0Y2hlcl9oYW5kbGVyKCk7CisgICAgaWYgKHdhdGNoaW5mbyAmJiB3aGFuZGxlcikgeworICAgICAgICB3aGFuZGxlci0+bXl2b2lkID0gd2F0Y2hpbmZvOworCW5ldHNubXBfb3duc193YXRjaGVyX2luZm8od2hhbmRsZXIpOworICAgICAgICByZWdpbmZvID0KKyAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBtb2RlKTsKKyAgICB9CisgICAgaWYgKHdhdGNoaW5mbyAmJiB3aGFuZGxlciAmJiByZWdpbmZvKSB7CisgICAgICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgd2hhbmRsZXIpOworICAgICAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXIocmVnaW5mbyk7CisgICAgfQorICAgIGlmICh3aGFuZGxlcikKKyAgICAgICAgbmV0c25tcF9oYW5kbGVyX2ZyZWUod2hhbmRsZXIpOworICAgIGVsc2UgaWYgKHdhdGNoaW5mbykKKyAgICAgICAgZnJlZSh3YXRjaGluZm8pOworICAgIHJldHVybiBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFOworfQorCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9VTE9OR19TQ0FMQVIKIGludAogbmV0c25tcF9yZWdpc3Rlcl91bG9uZ19zY2FsYXIoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKQogewotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKAotICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICByZWdfb2lkLCByZWdfb2lkX2xlbiwKLSAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUgKSwKLSAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKLSAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YoIHVfbG9uZyApLAotICAgICAgICAgICAgICAgICAgIEFTTl9VTlNJR05FRCwgV0FUQ0hFUl9GSVhFRF9TSVpFICkpOworICAgIHJldHVybiByZWdpc3Rlcl9zY2FsYXJfd2F0Y2hlcigKKyAgICAgICAgbmFtZSwgcmVnX29pZCwgcmVnX29pZF9sZW4sCisgICAgICAgICh2b2lkICopaXQsIHNpemVvZiggdV9sb25nICksCisgICAgICAgIEFTTl9VTlNJR05FRCwgc3ViaGFuZGxlciwgSEFORExFUl9DQU5fUldSSVRFKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1dBVENIRVJfVUxPTkdfU0NBTEFSICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9XQVRDSEVSX1JFQURfT05MWV9VTE9OR19TQ0FMQVIKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfdWxvbmdfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcigKLSAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAotICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgcmVnX29pZCwgcmVnX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkgKSwKLSAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKLSAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YoIHVfbG9uZyApLAotICAgICAgICAgICAgICAgICAgIEFTTl9VTlNJR05FRCwgV0FUQ0hFUl9GSVhFRF9TSVpFICkpOworICAgIHJldHVybiByZWdpc3Rlcl9zY2FsYXJfd2F0Y2hlcigKKyAgICAgICAgbmFtZSwgcmVnX29pZCwgcmVnX29pZF9sZW4sCisgICAgICAgICh2b2lkICopaXQsIHNpemVvZiggdV9sb25nICksCisgICAgICAgIEFTTl9VTlNJR05FRCwgc3ViaGFuZGxlciwgSEFORExFUl9DQU5fUk9OTFkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9SRUFEX09OTFlfVUxPTkdfU0NBTEFSICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9XQVRDSEVSX0xPTkdfU0NBTEFSCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfbG9uZ19zY2FsYXIoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcigKLSAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAotICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgcmVnX29pZCwgcmVnX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFICksCi0gICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCi0gICAgICAgICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKCBsb25nICksCi0gICAgICAgICAgICAgICAgICAgQVNOX0lOVEVHRVIsIFdBVENIRVJfRklYRURfU0laRSApKTsKKyAgICByZXR1cm4gcmVnaXN0ZXJfc2NhbGFyX3dhdGNoZXIoCisgICAgICAgIG5hbWUsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLAorICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YoIGxvbmcgKSwKKyAgICAgICAgQVNOX0lOVEVHRVIsIHN1YmhhbmRsZXIsIEhBTkRMRVJfQ0FOX1JXUklURSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9XQVRDSEVSX0xPTkdfU0NBTEFSICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9XQVRDSEVSX1JFQURfT05MWV9MT05HX1NDQUxBUgogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9sb25nX3NjYWxhcihjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKQogewotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKAotICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICByZWdfb2lkLCByZWdfb2lkX2xlbiwKLSAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSApLAotICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAotICAgICAgICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZiggbG9uZyApLAotICAgICAgICAgICAgICAgICAgIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUgKSk7CisgICAgcmV0dXJuIHJlZ2lzdGVyX3NjYWxhcl93YXRjaGVyKAorICAgICAgICBuYW1lLCByZWdfb2lkLCByZWdfb2lkX2xlbiwKKyAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKCBsb25nICksCisgICAgICAgIEFTTl9JTlRFR0VSLCBzdWJoYW5kbGVyLCBIQU5ETEVSX0NBTl9ST05MWSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9XQVRDSEVSX1JFQURfT05MWV9MT05HX1NDQUxBUiAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9XQVRDSEVSX0lOVF9TQ0FMQVIKIGludAogbmV0c25tcF9yZWdpc3Rlcl9pbnRfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcigKLSAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAotICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgcmVnX29pZCwgcmVnX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFICksCi0gICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCi0gICAgICAgICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKCBpbnQgKSwKLSAgICAgICAgICAgICAgICAgICBBU05fSU5URUdFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFICkpOworICAgIHJldHVybiByZWdpc3Rlcl9zY2FsYXJfd2F0Y2hlcigKKyAgICAgICAgbmFtZSwgcmVnX29pZCwgcmVnX29pZF9sZW4sCisgICAgICAgICh2b2lkICopaXQsIHNpemVvZiggaW50ICksCisgICAgICAgIEFTTl9JTlRFR0VSLCBzdWJoYW5kbGVyLCBIQU5ETEVSX0NBTl9SV1JJVEUpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9JTlRfU0NBTEFSICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9XQVRDSEVSX1JFQURfT05MWV9JTlRfU0NBTEFSCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9zY2FsYXIoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKQogewotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKAotICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICByZWdfb2lkLCByZWdfb2lkX2xlbiwKLSAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSApLAotICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAotICAgICAgICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZiggaW50ICksCi0gICAgICAgICAgICAgICAgICAgQVNOX0lOVEVHRVIsIFdBVENIRVJfRklYRURfU0laRSApKTsKKyAgICByZXR1cm4gcmVnaXN0ZXJfc2NhbGFyX3dhdGNoZXIoCisgICAgICAgIG5hbWUsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLAorICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YoIGludCApLAorICAgICAgICBBU05fSU5URUdFUiwgc3ViaGFuZGxlciwgSEFORExFUl9DQU5fUk9OTFkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9SRUFEX09OTFlfSU5UX1NDQUxBUiAqLwogCi0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUFEX09OTFlfQ09VTlRFUjMyX1NDQUxBUgogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9jb3VudGVyMzJfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcigKLSAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAotICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgcmVnX29pZCwgcmVnX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkgKSwKLSAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKLSAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YoIHVfbG9uZyApLAotICAgICAgICAgICAgICAgICAgIEFTTl9DT1VOVEVSLCBXQVRDSEVSX0ZJWEVEX1NJWkUgKSk7CisgICAgcmV0dXJuIHJlZ2lzdGVyX3NjYWxhcl93YXRjaGVyKAorICAgICAgICBuYW1lLCByZWdfb2lkLCByZWdfb2lkX2xlbiwKKyAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKCB1X2xvbmcgKSwKKyAgICAgICAgQVNOX0NPVU5URVIsIHN1YmhhbmRsZXIsIEhBTkRMRVJfQ0FOX1JPTkxZKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFQURfT05MWV9DT1VOVEVSMzJfU0NBTEFSICovCiAvKiogIEB9ICovCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCBiL2FnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZAppbmRleCBkYWJmMGFiLi40NDRlMzkwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQKKysrIGIvYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kCkBAIC0zOCw2ICszOCw3IEBACiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTczLDYgKzc0LDcgQEAKIC4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTE0LDYgKzExNiw3IEBACiAuL2hlYWRlcl9jb21wbGV4LmxvOiBoZWFkZXJfY29tcGxleC5oCiAuL2tlcm5lbF9zdW5vczUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTgxLDYgKzE4NCw3IEBACiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTIyMSw2ICsyMjUsNyBAQAogLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi90ZXN0aGFuZGxlci5sbzogdGVzdGhhbmRsZXIuaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMjg4LDYgKzI5Myw3IEBACiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMzI2LDEzICszMzIsMTQgQEAKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaCBzdHJ1Y3QuaAotLi91dGlsX2Z1bmNzLmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9FeGl0LmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCi0uL3V0aWxfZnVuY3MubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIHV0aWxfZnVuY3MvcmVzdGFydC5oCisuL3V0aWxfZnVuY3MubG86IHV0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKKy4vdXRpbF9mdW5jcy5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKIC4vdXRpbF9mdW5jcy5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oIHV0aWxpdGllcy9leGVjdXRlLmgKLS4vdXRpbF9mdW5jcy5sbzogdWNkLXNubXAvZXJyb3JtaWIuaCBtaWJkZWZzLmgKIC4vd2luRXh0RExMLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3dpbkV4dERMTC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3dpbkV4dERMTC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNDAwLDYgKzQwNyw3IEBACiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC00NDIsNiArNDUwLDcgQEAKIC4vYWdlbnQvZXh0ZW5kLmxvOiBhZ2VudC9leHRlbmQuaCB1dGlsaXRpZXMvZXhlY3V0ZS5oIHN0cnVjdC5oCiAuL2FnZW50L2V4dGVuZC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggbWliZGVmcy5oCiAuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC01MDksNiArNTE4LDcgQEAKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC01ODIsNiArNTkyLDcgQEAKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC02MTYsNiArNjI3LDcgQEAKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC02NTYsNiArNjY4LDcgQEAKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9hZ2VudC9uc0RlYnVnLmxvOiBhZ2VudC9uc0RlYnVnLmgKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC03MjMsNiArNzM2LDcgQEAKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTc2Myw2ICs3NzcsNyBAQAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiBhZ2VudC9uc0xvZ2dpbmcuaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtODMwLDYgKzg0NSw3IEBACiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtODcwLDYgKzg4Niw3IEBACiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmgKIC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC05MzcsNiArOTU0LDcgQEAKIC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTk3Nyw2ICs5OTUsNyBAQAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5oCiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTEwNDQsNiArMTA2Myw3IEBACiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEwODQsNiArMTEwNCw3IEBACiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTE1MSw2ICsxMTcyLDcgQEAKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTE5Miw2ICsxMjE0LDcgQEAKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2FnZW50L3NubXBkLmggYWdlbnR4L2FnZW50eF9jb25maWcuaAogLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogYWdlbnR4L3Byb3RvY29sLmgKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTEyNTksNiArMTI4Miw3IEBACiAuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTMwMCw2ICsxMzI0LDcgQEAKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9pbmRleC5oCiAuL2FnZW50eC9jbGllbnQubG86IGFnZW50eC9wcm90b2NvbC5oIGFnZW50eC9jbGllbnQuaCBhZ2VudHgvc3ViYWdlbnQuaAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTM2Nyw2ICsxMzkyLDcgQEAKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNDExLDYgKzE0MzcsNyBAQAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3N5c09SVGFibGUuaAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuL2FnZW50eC9tYXN0ZXIuaAogLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTQ3OCw2ICsxNTA1LDcgQEAKIC4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNTUyLDYgKzE1ODAsNyBAQAogLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTU4Niw5ICsxNjE1LDExIEBACiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogYWdlbnR4L3Byb3RvY29sLmgKIC4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xNjU2LDYgKzE2ODcsNyBAQAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTcwMCw3ICsxNzMyLDExNyBAQAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9zeXNPUlRhYmxlLmgKIC4vYWdlbnR4L3N1YmFnZW50LmxvOiAuL2FnZW50eC9zdWJhZ2VudC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5oCiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTE3NjgsNiArMTkxMCw3IEBACiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE4MDgsNiArMTk1MSw3IEBACiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmgKIC4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTg3NSw2ICsyMDE5LDcgQEAKIC4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTkxOCw2ICsyMDYzLDcgQEAKIC4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmgKIC4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTE5ODUsNiArMjEzMSw3IEBACiAuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMjA1OSw2ICsyMjA2LDcgQEAKIC4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjA5Myw2ICsyMjQxLDcgQEAKIC4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMjE2OCw2ICsyMzE3LDcgQEAKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTIyMDIsNiArMjM1Miw3IEBACiAuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0yMjc3LDYgKzI0MjgsNyBAQAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTIzMTEsNiArMjQ2Myw3IEBACiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMjM1Myw2ICsyNTA2LDcgQEAKIC4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTI0MjAsNiArMjU3NCw3IEBACiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMjQ5OSw2ICsyNjU0LDcgQEAKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0yNTMzLDYgKzI2ODksNyBAQAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTI2MDgsNiArMjc2NSw3IEBACiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTI2NDIsNiArMjgwMCw3IEBACiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTI3MTQsNiArMjg3Myw3IEBACiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjc0OCw2ICsyOTA4LDcgQEAKIC4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0yODIxLDYgKzI5ODIsNyBAQAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTI4NTUsNiArMzAxNyw3IEBACiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMjkyOCw2ICszMDkxLDcgQEAKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTI5NjIsNiArMzEyNiw3IEBACiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0zMDAzLDYgKzMxNjgsNyBAQAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2VudW1zLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMzA3MCw2ICszMjM2LDcgQEAKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMzExNCw2ICszMjgxLDcgQEAKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0zMTgxLDYgKzMzNDksNyBAQAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5oCkBAIC0zMjE5LDYgKzMzODgsNyBAQAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zMjUzLDYgKzM0MjMsNyBAQAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9lbnVtcy5oCkBAIC0zMjkwLDYgKzM0NjEsNyBAQAogLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMzMyNCw2ICszNDk2LDcgQEAKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTMzNjQsNiArMzUzNyw3IEBACiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IG5vdGlmaWNhdGlvbi5oCiAuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0zNDMxLDYgKzM2MDUsNyBAQAogLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTM1MDMsNiArMzY3OCw3IEBACiAuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMzUzNyw2ICszNzEzLDcgQEAKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0zNjExLDYgKzM3ODgsNyBAQAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTM2NDUsNiArMzgyMyw3IEBACiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMzcxOCw2ICszODk3LDcgQEAKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMzc1Miw2ICszOTMyLDcgQEAKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKQEAgLTM3OTQsNiArMzk3NSw3IEBACiAuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zODI4LDYgKzQwMTAsNyBAQAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCiAuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKQEAgLTM4MzgsNiArNDAyMSw3IEBACiAuL2hvc3QvaHJfZGlzay5sbzogLi9ob3N0L2hyX2Rpc2suaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTM5MDUsNiArNDA4OSw3IEBACiAuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0zOTQ3LDYgKzQxMzIsNyBAQAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IGhvc3RfcmVzLmggLi9ob3N0L2hyX2ZpbGVzeXMuaCAuL2hvc3QvaHJfc3RvcmFnZS5oCiAuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi9ob3N0L2hyX2Rpc2suaAogLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNDAxNCw2ICs0MjAwLDcgQEAKIC4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC00MDkwLDYgKzQyNzcsNyBAQAogLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTQxMjQsNiArNDMxMiw3IEBACiAuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNDE2Nyw2ICs0MzU2LDcgQEAKIC4vaG9zdC9ocmhfc3RvcmFnZS5sbzogaG9zdF9yZXMuaCAuL2hvc3QvaHJoX2ZpbGVzeXMuaCAuL2hvc3QvaHJoX3N0b3JhZ2UuaAogLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuL2hvc3QvaHJfZGlzay5oCiAuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNDIzNCw2ICs0NDI0LDcgQEAKIC4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTQzMDksNiArNDUwMCw3IEBACiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNDM0Myw2ICs0NTM1LDcgQEAKIC4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAogLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaApAQCAtNDM4Niw2ICs0NTc5LDcgQEAKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNDQyMCw2ICs0NjE0LDcgQEAKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAogLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKQEAgLTQ0NjQsNiArNDY1OSw3IEBACiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNDQ5OCw2ICs0Njk0LDcgQEAKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAogLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaApAQCAtNDUwNSw5ICs0NzAyLDkgQEAKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKLS4vaG9zdC9ocl9wcmludC5sbzogLi9ob3N0L2hyX3ByaW50Lmggc3RydWN0LmggdXRpbF9mdW5jcy5oIHV0aWxfZnVuY3MvRXhpdC5oCisuL2hvc3QvaHJfcHJpbnQubG86IC4vaG9zdC9ocl9wcmludC5oIHN0cnVjdC5oIHV0aWxfZnVuY3MuaAogLi9ob3N0L2hyX3ByaW50LmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKLS4vaG9zdC9ocl9wcmludC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggdXRpbF9mdW5jcy9yZXN0YXJ0LmgKKy4vaG9zdC9ocl9wcmludC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKIC4vaG9zdC9ocl9wcmludC5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCiAuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaApAQCAtNDU0Myw2ICs0NzQwLDcgQEAKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTQ1NzcsNiArNDc3NSw3IEBACiAuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC00NjU0LDYgKzQ4NTMsNyBAQAogLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNDY4OCw2ICs0ODg4LDcgQEAKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAogLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCkBAIC00NzYzLDYgKzQ5NjQsNyBAQAogLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC00Nzk3LDYgKzQ5OTksNyBAQAogLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC00ODM4LDYgKzUwNDEsNyBAQAogLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zd2luc3QuaAogLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5oCiAuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaG9zdC9ocl9zd2luc3QubG86IGhvc3RfcmVzLmgKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCkBAIC00OTA2LDYgKzUxMTAsNyBAQAogLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCiAuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaApAQCAtNDk0NSw2ICs1MTUwLDcgQEAKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC00OTgzLDYgKzUxODksNyBAQAogLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCkBAIC01MDI3LDYgKzUyMzQsNyBAQAogLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNTA2MSw2ICs1MjY5LDcgQEAKIC4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTUxMzYsNiArNTM0NSw3IEBACiAuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTUxNzAsNiArNTM4MCw3IEBACiAuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTUyMTEsNiArNTQyMiw3IEBACiAuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmgKIC4vaG9zdC9oclNXUnVuVGFibGUubG86IC4vaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5oIC4vaG9zdC9oclNXUnVuVGFibGUuaAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC01Mjc4LDYgKzU0OTAsNyBAQAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC01MzE5LDYgKzU1MzIsNyBAQAogLi9ob3N0L2hyX3N5c3RlbS5sbzogaG9zdF9yZXMuaCAuL2hvc3QvaHJfc3lzdGVtLmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTUzODYsNiArNTYwMCw3IEBACiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTU0NjIsNiArNTY3Nyw3IEBACiAuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTU0OTYsNiArNTcxMiw3IEBACiAuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTU1NzMsNiArNTc5MCw3IEBACiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNTYwNyw2ICs1ODI1LDcgQEAKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC01NjUwLDYgKzU4NjksNyBAQAogLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oCiAuL21pYklJL2ljbXAubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaCAuL21pYklJL2ljbXAuaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9hZ2VudC9rZXJuZWwuaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCkBAIC01NzE4LDYgKzU5MzgsNyBAQAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTU3NjMsNiArNTk4NCw3IEBACiAuL21pYklJL2ludGVyZmFjZXMubG86IC4vbWliSUkvaW50ZXJmYWNlcy5oIHN0cnVjdC5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAogLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9hZ2VudC9rZXJuZWwuaAogLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaApAQCAtNTgzMSw2ICs2MDUzLDcgQEAKIC4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTU5MDksNiArNjEzMiw3IEBACiAuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTU5NDMsNiArNjE2Nyw3IEBACiAuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTYwMjIsNiArNjI0Nyw3IEBACiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTYwNTYsNiArNjI4Miw3IEBACiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTYwOTcsNiArNjMyNCw3IEBACiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9lbnVtcy5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4vbWliSUkvcm91dGVfaGVhZGVycy5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKQEAgLTYxNjUsNiArNjM5Myw3IEBACiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNjI0Myw2ICs2NDcyLDcgQEAKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC02Mjc3LDEwICs2NTA3LDEyIEBACiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2VudW1zLmgKIC4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTYzNDgsNiArNjU4MCw3IEBACiAuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNjM5MCw2ICs2NjIzLDcgQEAKIC4vbWliSUkvaXB2Ni5sbzogLi4vLi4vYWdlbnQva2VybmVsLmggLi9taWJJSS9pcHY2LmggLi9taWJJSS92YXJfcm91dGUuaAogLi9taWJJSS9pcHY2LmxvOiAuL21pYklJL3JvdXRlX3dyaXRlLmggLi9taWJJSS9hdC5oIC4vbWliSUkvaW50ZXJmYWNlcy5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNjQ1Nyw2ICs2NjkxLDcgQEAKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTY0OTUsNyArNjczMCw3IEBACiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKLS4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuL21pYklJL2tlcm5lbF9saW51eC5oCisuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi9taWJJSS9rZXJuZWxfbGludXguaCAuL21pYklJL2tlcm5lbF9taWIuaAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKQEAgLTY1MzAsNiArNjc2NSw3IEBACiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNjU2NCw2ICs2ODAwLDcgQEAKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC02NjAzLDYgKzY4NDAsMTE1IEBACiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuL21pYklJL2tlcm5lbF9uZXRic2QuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi9taWJJSS9rZXJuZWxfc3lzY3RsLmgKIC4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCkBAIC02NjM3LDYgKzY5ODMsNyBAQAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNjY3MSw2ICs3MDE4LDcgQEAKIC4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTY3NDQsNiArNzA5Miw3IEBACiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTY3NzgsNiArNzEyNyw3IEBACiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTY4MTksNiArNzE2OSw3IEBACiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuL21pYklJL2lwLmggLi9taWJJSS92YXJfcm91dGUuaAogLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi9taWJJSS9yb3V0ZV93cml0ZS5oIC4vbWliSUkvYXQuaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC02ODg2LDYgKzcyMzcsNyBAQAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC02OTI2LDYgKzcyNzgsNyBAQAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi9taWJJSS9zZXRTZXJpYWxOby5oCiAuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNjk5Myw2ICs3MzQ2LDcgQEAKIC4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTcwMzUsNiArNzM4OSw3IEBACiAuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAogLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4vbWliSUkvc25tcF9taWJfNV81LmggLi9taWJJSS91cGRhdGVzLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNzEwMiw2ICs3NDU3LDcgQEAKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNzE3Nyw2ICs3NTMzLDcgQEAKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC03MjExLDYgKzc1NjgsNyBAQAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTcyNTQsNiArNzYxMiw3IEBACiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi9taWJJSS9zeXNPUlRhYmxlLmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTczMjEsNiArNzY4MCw3IEBACiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNzM2MSwxMiArNzcyMSwxMiBAQAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogdXRpbF9mdW5jcy5oIHV0aWxfZnVuY3MvRXhpdC5oCi0uL21pYklJL3N5c3RlbV9taWIubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAotLi9taWJJSS9zeXN0ZW1fbWliLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCB1dGlsX2Z1bmNzL3Jlc3RhcnQuaAotLi9taWJJSS9zeXN0ZW1fbWliLmxvOiBzdHJ1Y3QuaCB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogdXRpbF9mdW5jcy5oIHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCBzdHJ1Y3QuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi9taWJJSS9zeXN0ZW1fbWliLmggLi9taWJJSS91cGRhdGVzLmgKIC4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYklJL3RjcC5sbzogLi9taWJJSS9taWJJSV9jb21tb24uaAogLi9taWJJSS90Y3AubG86IC4uLy4uL2FnZW50L2tlcm5lbC5oCiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCkBAIC03NDM2LDYgKzc3OTYsNyBAQAogLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNzQ4MCw2ICs3ODQxLDcgQEAKIC4vbWliSUkvdGNwLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmggLi9taWJJSS90Y3AuaAogLi9taWJJSS90Y3AubG86IC4vbWliSUkvdGNwVGFibGUuaAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYklJL3RjcFRhYmxlLmxvOiAuL21pYklJL21pYklJX2NvbW1vbi5oCiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9hZ2VudC9rZXJuZWwuaAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCkBAIC03NTQ5LDYgKzc5MTEsNyBAQAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC03NjI1LDYgKzc5ODgsNyBAQAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNzY1OSw2ICs4MDIzLDcgQEAKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTc3MzgsNiArODEwMyw3IEBACiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTc3NzIsNiArODEzOCw3IEBACiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTc4NDYsNiArODIxMyw3IEBACiAuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNzg4MCw2ICs4MjQ4LDcgQEAKIC4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC03OTUyLDYgKzgzMjEsNyBAQAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNzk4Niw2ICs4MzU2LDcgQEAKIC4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTgwNjAsNiArODQzMSw3IEBACiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC04MDk0LDYgKzg0NjYsNyBAQAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtODE2Nyw2ICs4NTQwLDcgQEAKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTgyMDEsNiArODU3NSw3IEBACiAuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC04MjQzLDYgKzg2MTgsNyBAQAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCiAuL21pYklJL3ZhY21fdmFycy5sbzogLi9taWJJSS92YWNtX3ZhcnMuaCB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKIC4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi9taWJJSS9yb3V0ZV9oZWFkZXJzLmgKIC4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKQEAgLTgzMTEsNiArODY4Nyw3IEBACiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC04Mzg4LDYgKzg3NjUsNyBAQAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtODQyMiw2ICs4ODAwLDcgQEAKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTg0NjIsNiArODg0MSw3IEBACiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9taXNjL2lwZndhY2MubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIC4vbWlzYy9pcGZ3YWNjLmgKIC4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTg1MjksNiArODkwOSw3IEBACiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtODU3MSw2ICs4OTUyLDcgQEAKIC4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC04NjM4LDYgKzkwMjAsNyBAQAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC04Njc5LDYgKzkwNjIsNyBAQAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogaGVhZGVyX2NvbXBsZXguaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC04NzQ2LDYgKzkxMzAsNyBAQAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTg4MzIsNiArOTIxNyw3IEBACiAuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTg4NjYsNiArOTI1Miw3IEBACiAuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTg5MzksNiArOTMyNiw3IEBACiAuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtODk3Myw2ICs5MzYxLDcgQEAKIC4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC05MDEzLDYgKzk0MDIsNyBAQAogLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL1Jtb24vYWxhcm0ubG86IC4vUm1vbi9hbGFybS5oIC4vUm1vbi9hZ3V0aWxfYXBpLmggLi9SbW9uL3Jvd19hcGkuaAogLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTkwODAsNiArOTQ3MCw3IEBACiAuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC05MTIwLDYgKzk1MTEsNyBAQAogLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vUm1vbi9hbGFybVRhYmxlLmxvOiB1dGlsaXRpZXMvaXF1ZXJ5LmggLi9SbW9uL2FsYXJtVGFibGUuaAogLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtOTE4Nyw2ICs5NTc5LDcgQEAKIC4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC05MjYwLDYgKzk2NTMsNyBAQAogLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtOTI5NCw2ICs5Njg4LDcgQEAKIC4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTkzNjcsNiArOTc2Miw3IEBACiAuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC05NDAxLDYgKzk3OTcsNyBAQAogLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtOTQ3NCw2ICs5ODcxLDcgQEAKIC4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTk1MDgsNiArOTkwNiw3IEBACiAuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC05NTgyLDYgKzk5ODEsNyBAQAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC05NjE2LDYgKzEwMDE2LDcgQEAKIC4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtOTY5MCw2ICsxMDA5MSw3IEBACiAuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC05NzI0LDYgKzEwMTI2LDcgQEAKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTk3OTgsNiArMTAyMDEsNyBAQAogLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC05ODMyLDYgKzEwMjM2LDcgQEAKIC4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtOTkwNiw2ICsxMDMxMSw3IEBACiAuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC05OTQwLDYgKzEwMzQ2LDcgQEAKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEwMDE0LDYgKzEwNDIxLDcgQEAKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTAwNDgsNiArMTA0NTYsNyBAQAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMDEyMiw2ICsxMDUzMSw3IEBACiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMDE1Niw2ICsxMDU2Niw3IEBACiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMDIzMCw2ICsxMDY0MSw3IEBACiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTAyNjQsNiArMTA2NzYsNyBAQAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEwMzM4LDYgKzEwNzUxLDcgQEAKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMDM3Miw2ICsxMDc4Niw3IEBACiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTA0NDYsNiArMTA4NjEsNyBAQAogLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMDQ4MCw2ICsxMDg5Niw3IEBACiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEwNTU0LDYgKzEwOTcxLDcgQEAKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTEwNTg4LDYgKzExMDA2LDcgQEAKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEwNjYxLDYgKzExMDgwLDcgQEAKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMDY5NSw2ICsxMTExNSw3IEBACiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTA3NjgsNiArMTExODksNyBAQAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMDgwMiw2ICsxMTIyNCw3IEBACiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEwODc1LDYgKzExMjk4LDcgQEAKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTA5MDksNiArMTEzMzMsNyBAQAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMDk1MCw2ICsxMTM3NSw3IEBACiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiBrZXJuZWxfc3Vub3M1LmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTEwMTcsNiArMTE0NDMsNyBAQAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMTA5OCw2ICsxMTUyNSw3IEBACiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMTEzMiw2ICsxMTU2MCw3IEBACiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMTE3NCwxMCArMTE2MDMsOCBAQAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24uaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9FeGl0LmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IHV0aWxfZnVuY3MvcmVzdGFydC5oIHN0cnVjdC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogdXRpbF9mdW5jcy5oIHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIHN0cnVjdC5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCkBAIC0xMTIxMyw2ICsxMTY0MCw3IEBACiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTEyNDcsNiArMTE2NzUsNyBAQAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTExMzI0LDYgKzExNzUzLDcgQEAKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMTM1OCw2ICsxMTc4OCw3IEBACiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTE0MDAsMTMgKzExODMxLDEyIEBACiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24uaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9FeGl0LmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IHV0aWxfZnVuY3MvcmVzdGFydC5oIHN0cnVjdC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IHV0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggc3RydWN0LmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IGtlcm5lbF9zdW5vczUuaAogLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTExNDc0LDYgKzExOTA0LDcgQEAKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTExNTQ3LDYgKzExOTc4LDcgQEAKIC4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMTU4MSw2ICsxMjAxMyw3IEBACiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTE2NTQsNiArMTIwODcsNyBAQAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMTY4OCw2ICsxMjEyMiw3IEBACiAuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTExNzYxLDYgKzEyMTk2LDcgQEAKIC4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTE3OTUsNiArMTIyMzEsNyBAQAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMTgzNSw2ICsxMjI3Miw3IEBACiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oIHNtdXguaAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi9zbXV4L3NubXBfcmlwMi5oCiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTExOTAyLDYgKzEyMzQwLDcgQEAKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTE5NDQsNiArMTIzODMsNyBAQAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIC4vc25tcHYzL3NubXBFbmdpbmUuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xMjAxMSw2ICsxMjQ1MSw3IEBACiAuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEyMDg2LDYgKzEyNTI3LDcgQEAKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMjEyMCw2ICsxMjU2Miw3IEBACiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTIxOTUsNiArMTI2MzgsNyBAQAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMjIyOSw2ICsxMjY3Myw3IEBACiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEyMjY4LDYgKzEyNzEzLDcgQEAKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTEyMzM1LDYgKzEyNzgxLDcgQEAKIC4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMjQxMCw2ICsxMjg1Nyw3IEBACiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMjQ0NCw2ICsxMjg5Miw3IEBACiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMjQ4Niw2ICsxMjkzNSw3IEBACiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCAuL3NubXB2My91c21TdGF0cy5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTEyNTUzLDYgKzEzMDAzLDcgQEAKIC4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTI2MjYsNiArMTMwNzcsNyBAQAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMjY2MCw2ICsxMzExMiw3IEBACiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEyNzM0LDYgKzEzMTg3LDcgQEAKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMjc2OCw2ICsxMzIyMiw3IEBACiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTI4MDgsNiArMTMyNjMsNyBAQAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oCiAuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xMjg3NSw2ICsxMzMzMSw3IEBACiAuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTI5MTYsNiArMTMzNzMsNyBAQAogLi90YXJnZXQvdGFyZ2V0LmxvOiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmgKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmggdGFyZ2V0LmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTI5ODMsNiArMTM0NDEsNyBAQAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMzA1Niw2ICsxMzUxNSw3IEBACiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTMwOTAsNiArMTM1NTAsNyBAQAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEzMTYzLDYgKzEzNjI0LDcgQEAKIC4vdHNtLW1pYi9zbm1wVHNtQ29uZmlndXJhdGlvblVzZVByZWZpeC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdHNtLW1pYi9zbm1wVHNtQ29uZmlndXJhdGlvblVzZVByZWZpeC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdHNtLW1pYi9zbm1wVHNtQ29uZmlndXJhdGlvblVzZVByZWZpeC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RzbS1taWIvc25tcFRzbUNvbmZpZ3VyYXRpb25Vc2VQcmVmaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90c20tbWliL3NubXBUc21Db25maWd1cmF0aW9uVXNlUHJlZml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdHNtLW1pYi9zbm1wVHNtQ29uZmlndXJhdGlvblVzZVByZWZpeC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi90c20tbWliL3NubXBUc21Db25maWd1cmF0aW9uVXNlUHJlZml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMzE5Nyw2ICsxMzY1OSw3IEBACiAuL3RzbS1taWIvc25tcFRzbUNvbmZpZ3VyYXRpb25Vc2VQcmVmaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3RzbS1taWIvc25tcFRzbUNvbmZpZ3VyYXRpb25Vc2VQcmVmaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3RzbS1taWIvc25tcFRzbUNvbmZpZ3VyYXRpb25Vc2VQcmVmaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi90c20tbWliL3NubXBUc21Db25maWd1cmF0aW9uVXNlUHJlZml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3RzbS1taWIvc25tcFRzbUNvbmZpZ3VyYXRpb25Vc2VQcmVmaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdHNtLW1pYi9zbm1wVHNtQ29uZmlndXJhdGlvblVzZVByZWZpeC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3RzbS1taWIvc25tcFRzbUNvbmZpZ3VyYXRpb25Vc2VQcmVmaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTMyNzAsNiArMTM3MzMsNyBAQAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTEzMzA0LDYgKzEzNzY4LDcgQEAKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMzM4NSw2ICsxMzg1MCw3IEBACiAuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTM0MTksNiArMTM4ODUsNyBAQAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEzNDU5LDcgKzEzOTI2LDcgQEAKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaCBzdHJ1Y3QuaAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuL3VjZC1zbm1wL2Rpc2suaCBtaWJkZWZzLmgKLS4vdWNkLXNubXAvZGlzay5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggLi91Y2Qtc25tcC9lcnJvcm1pYi5oCisuL3VjZC1zbm1wL2Rpc2subG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCiAuL3VjZC1zbm1wL2Rpc2tfaHcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvZGlza19ody5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL2Rpc2tfaHcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaApAQCAtMTM0OTQsNiArMTM5NjEsNyBAQAogLi91Y2Qtc25tcC9kaXNrX2h3LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9kaXNrX2h3LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91Y2Qtc25tcC9kaXNrX2h3LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvZGlza19ody5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL2Rpc2tfaHcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91Y2Qtc25tcC9kaXNrX2h3LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL2Rpc2tfaHcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTEzNTI4LDYgKzEzOTk2LDcgQEAKIC4vdWNkLXNubXAvZGlza19ody5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdWNkLXNubXAvZGlza19ody5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvZGlza19ody5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL2Rpc2tfaHcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdWNkLXNubXAvZGlza19ody5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC9kaXNrX2h3LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvZGlza19ody5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMzU2OCw3ICsxNDAzNyw3IEBACiAuL3VjZC1zbm1wL2Rpc2tfaHcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vdWNkLXNubXAvZGlza19ody5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9mc3lzLmggc3RydWN0LmgKIC4vdWNkLXNubXAvZGlza19ody5sbzogLi91Y2Qtc25tcC9kaXNrLmggbWliZGVmcy5oCi0uL3VjZC1zbm1wL2Rpc2tfaHcubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIC4vdWNkLXNubXAvZXJyb3JtaWIuaAorLi91Y2Qtc25tcC9kaXNrX2h3LmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKQEAgLTEzNjAzLDYgKzE0MDcyLDcgQEAKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTEzNjM3LDYgKzE0MTA3LDcgQEAKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEzNjc4LDYgKzE0MTQ5LDcgQEAKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggLi91Y2Qtc25tcC9kaXNraW8uaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xMzc0NSw2ICsxNDIxNyw3IEBACiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEzNzgzLDEwICsxNDI1Niw2IEBACiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKLS4vdWNkLXNubXAvZGxtb2QubG86IHN0cnVjdC5oIHV0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL0V4aXQuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCi0uL3VjZC1zbm1wL2RsbW9kLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCB1dGlsX2Z1bmNzL3Jlc3RhcnQuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuL3VjZC1zbm1wL2RsbW9kLmgKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaApAQCAtMTM4MjIsNiArMTQyOTEsNyBAQAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMzg1Niw2ICsxNDMyNiw3IEBACiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEzODk4LDYgKzE0MzY5LDcgQEAKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4vdWNkLXNubXAvZXJyb3JtaWIuaCBtaWJkZWZzLmgKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTM5NjUsNiArMTQ0MzcsNyBAQAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE0MDA2LDEwICsxNDQ3OSw5IEBACiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogc3RydWN0LmggLi91Y2Qtc25tcC9leHRlbnNpYmxlLmggbWliZGVmcy5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL0V4aXQuaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IHV0aWxfZnVuY3MvcmVzdGFydC5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiB1dGlsaXRpZXMvZXhlY3V0ZS5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKQEAgLTE0MDQ2LDYgKzE0NTE4LDcgQEAKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNDA4MCw2ICsxNDU1Myw3IEBACiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTQxNTQsNiArMTQ2MjgsNyBAQAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE0MTg4LDYgKzE0NjYzLDcgQEAKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNDIyOCw2ICsxNDcwNCw3IEBACiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vdWNkLXNubXAvaHB1eC5sbzogLi91Y2Qtc25tcC9ocHV4LmggbWliZGVmcy5oCiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTQyOTUsNiArMTQ3NzIsNyBAQAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTQzNjksNiArMTQ4NDcsNyBAQAogLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTQ0MDMsNiArMTQ4ODIsNyBAQAogLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTQ0NzgsNiArMTQ5NTgsNyBAQAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE0NTEyLDYgKzE0OTkzLDcgQEAKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNDU4OSw2ICsxNTA3MSw3IEBACiAuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE0NjIzLDYgKzE1MTA2LDcgQEAKIC4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTQ2OTgsNiArMTUxODIsNyBAQAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTQ3MzIsNiArMTUyMTcsNyBAQAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTQ4MDYsNiArMTUyOTIsNyBAQAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNDg0MCw2ICsxNTMyNyw3IEBACiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE0OTE1LDYgKzE1NDAzLDcgQEAKIC4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE0OTQ5LDYgKzE1NDM4LDcgQEAKIC4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE1MDI0LDYgKzE1NTE0LDcgQEAKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE1MDU4LDYgKzE1NTQ5LDcgQEAKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE1MDk3LDEwICsxNTU4OSw4IEBACiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IHV0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL0V4aXQuaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogdXRpbF9mdW5jcy9yZXN0YXJ0Lmggc3RydWN0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggc3RydWN0LmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuL3VjZC1zbm1wL21lbW9yeS5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIuaCBtaWJkZWZzLmgKQEAgLTE1MTM4LDYgKzE1NjI4LDcgQEAKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTUxNzIsNiArMTU2NjMsNyBAQAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNTI0Nyw2ICsxNTczOSw3IEBACiAuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE1MjgxLDYgKzE1Nzc0LDcgQEAKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTUzNTYsNiArMTU4NTAsNyBAQAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTUzOTAsNiArMTU4ODUsNyBAQAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTU0MzMsNiArMTU5MjksNyBAQAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4vdWNkLXNubXAvbWVtb3J5LmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5oIG1pYmRlZnMuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTU1MDAsNiArMTU5OTcsNyBAQAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE1NTQwLDkgKzE2MDM4LDggQEAKIC4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiBzdHJ1Y3QuaCAuL3VjZC1zbm1wL3Bhc3MuaCBtaWJkZWZzLmgKIC4vdWNkLXNubXAvcGFzcy5sbzogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5oIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IHV0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL0V4aXQuaAotLi91Y2Qtc25tcC9wYXNzLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKLS4vdWNkLXNubXAvcGFzcy5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggdXRpbF9mdW5jcy9yZXN0YXJ0LmgKKy4vdWNkLXNubXAvcGFzcy5sbzogdXRpbF9mdW5jcy5oIHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaApAQCAtMTU1NzgsNiArMTYwNzUsNyBAQAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNTYxMiw2ICsxNjExMCw3IEBACiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE1NjUxLDEyICsxNjE1MCwxMiBAQAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiB1dGlsX2Z1bmNzL0V4aXQuaCB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKLS4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiB1dGlsX2Z1bmNzL3Jlc3RhcnQuaCBzdHJ1Y3QuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCBzdHJ1Y3QuaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xNTcyNCw2ICsxNjIyMyw3IEBACiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNTc2NCwxMiArMTYyNjQsMTEgQEAKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogc3RydWN0LmggLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuaCBtaWJkZWZzLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmggLi91Y2Qtc25tcC9leHRlbnNpYmxlLmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9FeGl0LmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiB1dGlsX2Z1bmNzL3Jlc3RhcnQuaAogLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTU4MzcsNiArMTYzMzYsNyBAQAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE1ODc1LDEzICsxNjM3NSwxMiBAQAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCi0uL3VjZC1zbm1wL3Byb2MubG86IHN0cnVjdC5oIC4vdWNkLXNubXAvcHJvYy5oIG1pYmRlZnMuaAotLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmgKLS4vdWNkLXNubXAvcHJvYy5sbzogLi91Y2Qtc25tcC9lcnJvcm1pYi5oIHV0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL0V4aXQuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiBzdHJ1Y3QuaCAuL3VjZC1zbm1wL3Byb2MuaCBtaWJkZWZzLmggdXRpbF9mdW5jcy5oCiAuL3VjZC1zbm1wL3Byb2MubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAotLi91Y2Qtc25tcC9wcm9jLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCB1dGlsX2Z1bmNzL3Jlc3RhcnQuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmggLi4vLi4vYWdlbnQva2VybmVsLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTU5NDksNiArMTY0NDgsNyBAQAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNTk4OSw2ICsxNjQ4OSw3IEBACiAuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3VjZC1zbm1wL3Byb3h5LmxvOiAuL3VjZC1zbm1wL3Byb3h5LmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTYwNTYsNiArMTY1NTcsNyBAQAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNjA5NSwxMCArMTY1OTcsOCBAQAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogc3RydWN0LmggLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5oIG1pYmRlZnMuaAotLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogdXRpbF9mdW5jcy5oIHV0aWxfZnVuY3MvRXhpdC5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKLS4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiB1dGlsX2Z1bmNzL3Jlc3RhcnQuaAorLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIHV0aWxfZnVuY3MvcmVzdGFydC5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAogLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCkBAIC0xNjEzNCw2ICsxNjYzNCw3IEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE2MTY4LDYgKzE2NjY5LDcgQEAKIC4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTYyNDIsNiArMTY3NDQsNyBAQAogLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTYyNzYsNiArMTY3NzksNyBAQAogLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTYzNTEsNiArMTY4NTUsNyBAQAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTYzODUsNiArMTY4OTAsNyBAQAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTY0NjAsNiArMTY5NjYsNyBAQAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNjQ5NCw2ICsxNzAwMSw3IEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE2NTY5LDYgKzE3MDc3LDcgQEAKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE2NjAzLDYgKzE3MTEyLDcgQEAKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE2Njc3LDYgKzE3MTg3LDcgQEAKIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE2NzExLDYgKzE3MjIyLDcgQEAKIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE2Nzg3LDYgKzE3Mjk5LDcgQEAKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTY4MjEsNiArMTczMzQsNyBAQAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNjg2Miw2ICsxNzM3Niw3IEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiBtaWJkZWZzLmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuL3VjZC1zbm1wL3Ztc3RhdC5oIC4vdWNkLXNubXAvdm1zdGF0X2hwdXguaAogLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTE2OTI5LDYgKzE3NDQ0LDcgQEAKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE3MDA1LDYgKzE3NTIxLDcgQEAKIC4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTcwMzksNiArMTc1NTYsNyBAQAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNzExNCw2ICsxNzYzMiw3IEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNzE0OCw2ICsxNzY2Nyw3IEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNzIyMiw2ICsxNzc0Miw3IEBACiAuL3V0aWxfZnVuY3MvRXhpdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdXRpbF9mdW5jcy9FeGl0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91dGlsX2Z1bmNzL0V4aXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91dGlsX2Z1bmNzL0V4aXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91dGlsX2Z1bmNzL0V4aXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91dGlsX2Z1bmNzL0V4aXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdXRpbF9mdW5jcy9FeGl0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNzI1OCw2ICsxNzc3OSw3IEBACiAuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE3Mjk3LDYgKzE3ODE5LDcgQEAKIC4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNzMzMSw2ICsxNzg1NCw3IEBACiAuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTc0MDQsNiArMTc5MjgsNyBAQAogLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTc0MzgsNiArMTc5NjMsNyBAQAogLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTc1MTEsNiArMTgwMzcsNyBAQAogLi91dGlsX2Z1bmNzL3Jlc3RhcnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3V0aWxfZnVuY3MvcmVzdGFydC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdXRpbF9mdW5jcy9yZXN0YXJ0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdXRpbF9mdW5jcy9yZXN0YXJ0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdXRpbF9mdW5jcy9yZXN0YXJ0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdXRpbF9mdW5jcy9yZXN0YXJ0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3V0aWxfZnVuY3MvcmVzdGFydC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTc1NDUsNiArMTgwNzIsNyBAQAogLi91dGlsX2Z1bmNzL3Jlc3RhcnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3V0aWxfZnVuY3MvcmVzdGFydC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdXRpbF9mdW5jcy9yZXN0YXJ0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdXRpbF9mdW5jcy9yZXN0YXJ0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3V0aWxfZnVuY3MvcmVzdGFydC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCkBAIC0xNzU4MCw2ICsxODEwOCw3IEBACiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE3NjE0LDYgKzE4MTQzLDcgQEAKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTc2NTIsOSArMTgxODIsMTAgQEAKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAotLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogdWNkLXNubXAvZXJyb3JtaWIuaCBtaWJkZWZzLmggLi91dGlsaXRpZXMvZXhlY3V0ZS5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuL3VjZC1zbm1wL2Vycm9ybWliLmggbWliZGVmcy5oIC4vdXRpbGl0aWVzL2V4ZWN1dGUuaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogc3RydWN0LmgKIC4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTE3NzIyLDYgKzE4MjUzLDcgQEAKIC4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNzc5NSw2ICsxODMyNyw3IEBACiAuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNzgyOSw2ICsxODM2Miw3IEBACiAuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9NYWtlZmlsZS5pbiBiL2FnZW50L21pYmdyb3VwL01ha2VmaWxlLmluCmluZGV4IGY2NDFhYjcuLjIzNDFhYjQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL01ha2VmaWxlLmluCisrKyBiL2FnZW50L21pYmdyb3VwL01ha2VmaWxlLmluCkBAIC0xLDQgKzEsNiBAQAogdG9wX2J1aWxkZGlyPS4uLy4uCitteXN1YmRpcj1hZ2VudC9taWJncm91cAorCiAjIGN1cnJlbnRseSBhc3N1bWVzIGdjYzogICAgKFhYWDogZml4IHZpYSBjb25maWd1cmUgdGVzdHMpCiBETEZMQUdTPS1mUElDIC1zaGFyZWQKIApAQCAtMTYsNiArMTgsOCBAQAogCiBPVEhFUkNMRUFOVEFSR0VUUz1AZGxsY2xlYW5zQAogCitGRUFUVVJFRklMRT0uLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2ZlYXR1cmVzLW1pYmdyb3Vwcy5oCisKICMgTmVlZCBhIHNwZWNpYWwgLmMgLT4gLm8gZGVmaW5pdGlvbiBoZXJlIHRvIG1ha2Ugc3VyZSB3ZSBwbGFjZSB0aGUKICMgb2JqZWN0IGZpbGVzIGluIHRoZSBzdWIgZGlyZWN0b3J5LgogCkBAIC0yNSwxMCArMjksMTIgQEAKIEBtaWJfbW9kdWxlX2xpc3Rfb0AKIEBtaWJfbW9kdWxlX2xpc3RfbG9ACiBAbWliX21vZHVsZV9saXN0X2NACitAbWliX21vZHVsZV9saXN0X2Z0QAogCi1PQkpTICA9ICQobWliX21vZHVsZV9saXN0X28pCi1MT0JKUyA9ICQobWliX21vZHVsZV9saXN0X2xvKQotU1JDUyAgPSAkKG1pYl9tb2R1bGVfbGlzdF9jKQorT0JKUyAgID0gJChtaWJfbW9kdWxlX2xpc3RfbykKK0xPQkpTICA9ICQobWliX21vZHVsZV9saXN0X2xvKQorU1JDUyAgID0gJChtaWJfbW9kdWxlX2xpc3RfYykKK0ZUT0JKUyA9ICQobWliX21vZHVsZV9saXN0X2Z0KQogCiBhbGw6IHN0YW5kYXJkYWxsICQoTE9CSlMpCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL1Jtb24vYWxhcm1UYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmMKaW5kZXggYzljMmFlYS4uNjE4MTYyOCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmMKQEAgLTEwLDExICsxMCwyMiBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJ1dGlsaXRpZXMvaXF1ZXJ5LmgiCiAjaW5jbHVkZSAiYWxhcm1UYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcXVlcnkpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShxdWVyeV9zZXRfZGVmYXVsdF9zZXNzaW9uKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGEpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90eXBlX2FuZF9tYXhfc2l6ZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhX2V4dHJhY3RfdGFibGUpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGFfaW5zZXJ0X3JvdykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGlxdWVyeV9wZHVfc2Vzc2lvbikKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogLyoqIEluaXRpYWxpemVzIHRoZSBhbGFybVRhYmxlIG1vZHVsZSAqLwogdm9pZAogaW5pdF9hbGFybVRhYmxlKHZvaWQpCkBAIC02Niw3ICs3Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYWxhcm1lZF92YXJfbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgdV9sb25nIHNhbXBsZV90eXBlLAogICAgICAgICAgICAgICAgICAgICAgdV9sb25nIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgdV9sb25nIHRoZV90aHJlc2hvbGQsIGNoYXIgKmFsYXJtX2Rlc2NyKTsKKyAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyB0aGVfdGhyZXNob2xkLCBjb25zdCBjaGFyICphbGFybV9kZXNjcik7CiAKICNkZWZpbmUgQUxBUk1fU1RSMV9MRU4JMzIKIHR5cGVkZWYgZW51bSB7CkBAIC0xODAsOCArMTkxLDggQEAKICAgICAgICAgcmV0dXJuIDsKICAgICB9CiAKLSAgICBERUJVR01TR1RMKCgicm1vbjphbGFybVRhYmxlIiwgImFsYXJtSW5kZXguJWQgbGFzdCB2YWx1ZSAoJWQpXG4iLCBlbnRyeS0+YWxhcm1JbmRleCwgZW50cnktPmxhc3RfYWJzX3ZhbHVlKSk7Ci0gICAgREVCVUdNU0dUTCgoInJtb246YWxhcm1UYWJsZSIsICJhbGFybUluZGV4LiVkIG5ld192YWx1ZSAoJWQpXG4iLCBlbnRyeS0+YWxhcm1JbmRleCwgbmV3X3ZhbHVlKSk7CisgICAgREVCVUdNU0dUTCgoInJtb246YWxhcm1UYWJsZSIsICJhbGFybUluZGV4LiVsZCBsYXN0IHZhbHVlICglbGQpXG4iLCBlbnRyeS0+YWxhcm1JbmRleCwgZW50cnktPmxhc3RfYWJzX3ZhbHVlKSk7CisgICAgREVCVUdNU0dUTCgoInJtb246YWxhcm1UYWJsZSIsICJhbGFybUluZGV4LiVsZCBuZXdfdmFsdWUgKCVsZClcbiIsIGVudHJ5LT5hbGFybUluZGV4LCBuZXdfdmFsdWUpKTsKIAogICAgIGVudHJ5LT5hbGFybVZhbHVlID0gKFNBTVBMRV9UWVBFX0FCU09MVVRFID09IGVudHJ5LT5hbGFybVNhbXBsZVR5cGUpID8KICAgICAgICAgbmV3X3ZhbHVlIDogbmV3X3ZhbHVlIC0gZW50cnktPmxhc3RfYWJzX3ZhbHVlOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvUm1vbi9ldmVudC5jIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9ldmVudC5jCmluZGV4IDhkMmQ0YTEuLmJiODdiZmUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL1Jtb24vZXZlbnQuYworKysgYi9hZ2VudC9taWJncm91cC9SbW9uL2V2ZW50LmMKQEAgLTE5LDYgKzE5LDcgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaWYgSEFWRV9TVERMSUJfSAogI2luY2x1ZGUgPHN0ZGxpYi5oPgpAQCAtNDksNiArNTAsOCBAQAogI2luY2x1ZGUgImFndXRpbF9hcGkuaCIKICNpbmNsdWRlICJyb3dfYXBpLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHNucHJpbnRfb2JqaWQpCisKIC8qCiAgKiBGaWxlIHNjb3BlIGRlZmluaXRpb25zIHNlY3Rpb24gCiAgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL1Jtb24vcm93X2FwaS5oIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9yb3dfYXBpLmgKaW5kZXggMmQzYzgzMi4uOWY1NzZiZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvUm1vbi9yb3dfYXBpLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9yb3dfYXBpLmgKQEAgLTc5LDcgKzc5LDcgQEAKICAqIEFwaSBwcm90b3R5cGVzIAogICovCiB2b2lkICAgICAgICAgICAgUk9XQVBJX2luaXRfdGFibGUoVEFCTEVfREVGSU5USU9OX1QgKiB0YWJsZV9wdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBtYXhfbnVtYmVyX29mX2VudHJpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU5UUllfQ0FMTEJBQ0tfVCAqIENsYmtDcmVhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU5UUllfQ0FMTEJBQ0tfVCAqIENsYmtDbG9uZSwKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL1Jtb24vcm93cy5jIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9yb3dzLmMKaW5kZXggOTI0YTkzYi4uYWMyNmUzMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvUm1vbi9yb3dzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9yb3dzLmMKQEAgLTI1NSw3ICsyNTUsNyBAQAogCiB2b2lkCiBST1dBUElfaW5pdF90YWJsZShUQUJMRV9ERUZJTlRJT05fVCAqIHRhYmxlX3B0ciwKLSAgICAgICAgICAgICAgICAgIGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgdV9sb25nIG1heF9udW1iZXJfb2ZfZW50cmllcywKICAgICAgICAgICAgICAgICAgIEVOVFJZX0NBTExCQUNLX1QgKiBDbGJrQ3JlYXRlLAogICAgICAgICAgICAgICAgICAgRU5UUllfQ0FMTEJBQ0tfVCAqIENsYmtDbG9uZSwKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmMKaW5kZXggMjM5ZWViMy4uNDgzNzlhMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmMKQEAgLTEsNSArMSw2IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC93YXRjaGVyLmg+CkBAIC0xNSw2ICsxNiwxMiBAQAogI2RlZmluZSBTSEVMTENPTU1BTkQgMwogI2VuZGlmCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGV4dHJhY3RfdGFibGVfcm93X2RhdGEpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSkKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpbnNlcnRfdGFibGVfcm93KQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiBvaWQgIG5zX2V4dGVuZF9vaWRbXSAgICA9IHsgMSwgMywgNiwgMSwgNCwgMSwgODA3MiwgMSwgMywgMiB9Owogb2lkICBleHRlbmRfY291bnRfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDgwNzIsIDEsIDMsIDIsIDEgfTsKIG9pZCAgZXh0ZW5kX2NvbmZpZ19vaWRbXSA9IHsgMSwgMywgNiwgMSwgNCwgMSwgODA3MiwgMSwgMywgMiwgMiB9OwpAQCAtMjcsNyArMzQsNyBAQAogICAgIHNpemVfdCAgICAgICAgICAgICAgb2lkX2xlbjsKICAgICBsb25nICAgICAgICAgICAgICAgIG51bV9lbnRyaWVzOwogICAgIG5ldHNubXBfZXh0ZW5kICAgICAqZWhlYWQ7Ci0gICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAgICAqcmVnWzNdOworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgICAgKnJlZ1s0XTsKICAgICBzdHJ1Y3QgZXh0ZW5kX3JlZ2lzdHJhdGlvbl9ibG9ja19zICpuZXh0OwogfSBleHRlbmRfcmVnaXN0cmF0aW9uX2Jsb2NrOwogZXh0ZW5kX3JlZ2lzdHJhdGlvbl9ibG9jayAqZXJlZ19oZWFkID0gTlVMTDsKQEAgLTUwLDYgKzU3LDcgQEAKIFdyaXRlTWV0aG9kIGZpeEV4ZWMyRXJyb3I7CiBGaW5kVmFyTWV0aG9kIHZhcl9leHRlbnNpYmxlX29sZDsKIG9pZCAgb2xkX2V4dGVuc2libGVfdmFyaWFibGVzX29pZFtdID0geyBORVRTTk1QX1VDREFWSVNfTUlCLCBORVRTTk1QX1NIRUxMTUlCTlVNLCAxIH07CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogc3RydWN0IHZhcmlhYmxlMiBvbGRfZXh0ZW5zaWJsZV92YXJpYWJsZXNbXSA9IHsKICAgICB7TUlCSU5ERVgsICAgICBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9ST05MWSwKICAgICAgdmFyX2V4dGVuc2libGVfb2xkLCAxLCB7TUlCSU5ERVh9fSwKQEAgLTY2LDYgKzc0LDI0IEBACiAgICAge0VSUk9SRklYQ01ELCAgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCiAgICAgIHZhcl9leHRlbnNpYmxlX29sZCwgMSwge0VSUk9SRklYQ01EfX0KIH07CisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCitzdHJ1Y3QgdmFyaWFibGUyIG9sZF9leHRlbnNpYmxlX3ZhcmlhYmxlc1tdID0geworICAgIHtNSUJJTkRFWCwgICAgIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9vbGQsIDEsIHtNSUJJTkRFWH19LAorICAgIHtFUlJPUk5BTUUsICAgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9vbGQsIDEsIHtFUlJPUk5BTUV9fSwKKyAgICB7U0hFTExDT01NQU5ELCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4dGVuc2libGVfb2xkLCAxLCB7U0hFTExDT01NQU5EfX0sCisgICAge0VSUk9SRkxBRywgICAgQVNOX0lOVEVHRVIsICAgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9leHRlbnNpYmxlX29sZCwgMSwge0VSUk9SRkxBR319LAorICAgIHtFUlJPUk1TRywgICAgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9vbGQsIDEsIHtFUlJPUk1TR319LAorICAgIHtFUlJPUkZJWCwgICAgIEFTTl9JTlRFR0VSLCAgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9leHRlbnNpYmxlX29sZCwgMSwge0VSUk9SRklYfX0sCisgICAge0VSUk9SRklYQ01ELCAgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9leHRlbnNpYmxlX29sZCwgMSwge0VSUk9SRklYQ01EfX0KK307CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogI2VuZGlmCiAKIApAQCAtOTcsNyArMTIzLDggQEAKICAgICBuZXRzbm1wX3RhYmxlX2RhdGEgICAgICAgICAgICAgICAgKmRpbmZvOwogICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gICAqdGluZm87CiAgICAgbmV0c25tcF93YXRjaGVyX2luZm8gICAgICAgICAgICAgICp3aW5mbzsKLSAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICAgKnJlZzsKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICAgKnJlZyA9IE5VTEw7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYzsKIAogICAgIGZvciAoIGVwdHI9ZXJlZ19oZWFkOyBlcHRyOyBlcHRyPWVwdHItPm5leHQgKSB7CiAgICAgICAgIGlmICghc25tcF9vaWRfY29tcGFyZSggYmFzZSwgbGVuLCBlcHRyLT5yb290X29pZCwgZXB0ci0+b2lkX2xlbikpCkBAIC0xMDUsNiArMTMyLDggQEAKICAgICB9CiAgICAgaWYgKCFlcHRyKSB7CiAgICAgICAgIGVwdHIgPSBTTk1QX01BTExPQ19UWVBFREVGKCBleHRlbmRfcmVnaXN0cmF0aW9uX2Jsb2NrICk7CisgICAgICAgIGlmICghZXB0cikKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBlcHRyLT5yb290X29pZCA9IHNubXBfZHVwbGljYXRlX29iamlkKCBiYXNlLCBsZW4gKTsKICAgICAgICAgZXB0ci0+b2lkX2xlbiAgPSBsZW47CiAgICAgICAgIGVwdHItPm51bV9lbnRyaWVzID0gMDsKQEAgLTEyNSwxMCArMTU0LDIwIEBACiAgICAgdGluZm8tPm1pbl9jb2x1bW4gPSBDT0xVTU5fRVhUQ0ZHX0ZJUlNUX0NPTFVNTjsKICAgICB0aW5mby0+bWF4X2NvbHVtbiA9IENPTFVNTl9FWFRDRkdfTEFTVF9DT0xVTU47CiAgICAgb2lkX2J1ZltsZW5dID0gMjsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgcmVnICAgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKICAgICAgICAgICAgICAgICAibnNFeHRlbmRDb25maWdUYWJsZSIsIGhhbmRsZV9uc0V4dGVuZENvbmZpZ1RhYmxlLCAKICAgICAgICAgICAgICAgICBvaWRfYnVmLCBsZW4rMSwgSEFORExFUl9DQU5fUldSSVRFKTsKLSAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2RhdGEoIHJlZywgZGluZm8sIHRpbmZvICk7CisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgcmVnICAgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICAgICAibnNFeHRlbmRDb25maWdUYWJsZSIsIGhhbmRsZV9uc0V4dGVuZENvbmZpZ1RhYmxlLCAKKyAgICAgICAgICAgICAgICBvaWRfYnVmLCBsZW4rMSwgSEFORExFUl9DQU5fUk9OTFkpOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICByYyA9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfZGF0YSggcmVnLCBkaW5mbywgdGluZm8gKTsKKyAgICBpZiAocmMgIT0gU05NUEVSUl9TVUNDRVNTKSB7CisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CisgICAgbmV0c25tcF9oYW5kbGVyX293bnNfdGFibGVfaW5mbyhyZWctPmhhbmRsZXItPm5leHQpOwogICAgIGVwdHItPnJlZ1swXSA9IHJlZzsKIAogICAgICAgICAvKgpAQCAtMTQ1LDcgKzE4NCwxMCBAQAogICAgIHJlZyAgID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICAgICAgICAgIm5zRXh0ZW5kT3V0MVRhYmxlIiwgaGFuZGxlX25zRXh0ZW5kT3V0cHV0MVRhYmxlLCAKICAgICAgICAgICAgICAgICBvaWRfYnVmLCBsZW4rMSwgSEFORExFUl9DQU5fUk9OTFkpOwotICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfZGF0YSggcmVnLCBkaW5mbywgdGluZm8gKTsKKyAgICByYyA9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfZGF0YSggcmVnLCBkaW5mbywgdGluZm8gKTsKKyAgICBpZiAocmMgIT0gU05NUEVSUl9TVUNDRVNTKQorICAgICAgICBnb3RvIGJhaWw7CisgICAgbmV0c25tcF9oYW5kbGVyX293bnNfdGFibGVfaW5mbyhyZWctPmhhbmRsZXItPm5leHQpOwogICAgIGVwdHItPnJlZ1sxXSA9IHJlZzsKIAogICAgICAgICAvKgpAQCAtMTY0LDcgKzIwNiwxMCBAQAogICAgIHJlZyAgID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICAgICAgICAgIm5zRXh0ZW5kT3V0MlRhYmxlIiwgaGFuZGxlX25zRXh0ZW5kT3V0cHV0MlRhYmxlLCAKICAgICAgICAgICAgICAgICBvaWRfYnVmLCBsZW4rMSwgSEFORExFUl9DQU5fUk9OTFkpOwotICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGUoIHJlZywgdGluZm8gKTsKKyAgICByYyA9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGUoIHJlZywgdGluZm8gKTsKKyAgICBpZiAocmMgIT0gU05NUEVSUl9TVUNDRVNTKQorICAgICAgICBnb3RvIGJhaWw7CisgICAgbmV0c25tcF9oYW5kbGVyX293bnNfdGFibGVfaW5mbyhyZWctPmhhbmRsZXItPm5leHQpOwogICAgIGVwdHItPnJlZ1syXSA9IHJlZzsKIAogICAgICAgICAvKgpAQCAtMTc3LDkgKzIyMiw0NCBAQAogICAgIHdpbmZvID0gbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAogICAgICAgICAgICAgICAgICYoZXB0ci0+bnVtX2VudHJpZXMpLCBzaXplb2YoZXB0ci0+bnVtX2VudHJpZXMpLAogICAgICAgICAgICAgICAgIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpOwotICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIoIHJlZywgd2luZm8gKTsKKyAgICByYyA9IG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIyKCByZWcsIHdpbmZvICk7CisgICAgaWYgKHJjICE9IFNOTVBFUlJfU1VDQ0VTUykKKyAgICAgICAgZ290byBiYWlsOworICAgIGVwdHItPnJlZ1szXSA9IHJlZzsKIAogICAgIHJldHVybiBlcHRyOworCitiYWlsOgorICAgIGlmIChlcHRyLT5yZWdbM10pCisgICAgICAgIG5ldHNubXBfdW5yZWdpc3Rlcl9oYW5kbGVyKGVwdHItPnJlZ1szXSk7CisgICAgaWYgKGVwdHItPnJlZ1syXSkKKyAgICAgICAgbmV0c25tcF91bnJlZ2lzdGVyX2hhbmRsZXIoZXB0ci0+cmVnWzJdKTsKKyAgICBpZiAoZXB0ci0+cmVnWzFdKQorICAgICAgICBuZXRzbm1wX3VucmVnaXN0ZXJfaGFuZGxlcihlcHRyLT5yZWdbMV0pOworICAgIGlmIChlcHRyLT5yZWdbMF0pCisgICAgICAgIG5ldHNubXBfdW5yZWdpc3Rlcl9oYW5kbGVyKGVwdHItPnJlZ1swXSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkCitfdW5yZWdpc3Rlcl9leHRlbmQoZXh0ZW5kX3JlZ2lzdHJhdGlvbl9ibG9jayAqZXB0cikKK3sKKyAgICBleHRlbmRfcmVnaXN0cmF0aW9uX2Jsb2NrICpwcmV2OworCisgICAgbmV0c25tcF9hc3NlcnQoZXB0cik7CisgICAgZm9yIChwcmV2ID0gZXJlZ19oZWFkOyBwcmV2ICYmIHByZXYtPm5leHQgIT0gZXB0cjsgcHJldiA9IHByZXYtPm5leHQpCisJOworICAgIGlmIChwcmV2KSB7CisgICAgICAgIG5ldHNubXBfYXNzZXJ0KGVwdHIgPT0gcHJldi0+bmV4dCk7CisJcHJldi0+bmV4dCA9IGVwdHItPm5leHQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbmV0c25tcF9hc3NlcnQoZXB0ciA9PSBlcmVnX2hlYWQpOworCWVyZWdfaGVhZCA9IGVwdHItPm5leHQ7CisgICAgfQorCisgICAgbmV0c25tcF90YWJsZV9kYXRhX2RlbGV0ZV90YWJsZShlcHRyLT5kaW5mbyk7CisgICAgZnJlZShlcHRyLT5yb290X29pZCk7CisgICAgZnJlZShlcHRyKTsKIH0KIAogaW50CkBAIC0xOTMsNiArMjczLDcgQEAKICAgICAgICAgbmV0c25tcF91bnJlZ2lzdGVyX2hhbmRsZXIoIGVwdHItPnJlZ1swXSApOwogICAgICAgICBuZXRzbm1wX3VucmVnaXN0ZXJfaGFuZGxlciggZXB0ci0+cmVnWzFdICk7CiAgICAgICAgIG5ldHNubXBfdW5yZWdpc3Rlcl9oYW5kbGVyKCBlcHRyLT5yZWdbMl0gKTsKKyAgICAgICAgbmV0c25tcF91bnJlZ2lzdGVyX2hhbmRsZXIoIGVwdHItPnJlZ1szXSApOwogICAgICAgICBTTk1QX0ZSRUUoZXB0cik7CiAgICAgfQogICAgIGVyZWdfaGVhZCA9IE5VTEw7CkBAIC0yMjQsNiArMzA1LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbmRfY2xlYXJfY2FsbGJhY2ssIE5VTEwpOwogfQogCit2b2lkCitzaHV0ZG93bl9leHRlbmQodm9pZCkKK3sKKyNpZm5kZWYgVVNJTkdfVUNEX1NOTVBfRVhURU5TSUJMRV9NT0RVTEUKKyAgICBmcmVlKGNvbXBhdGFiaWxpdHlfZW50cmllcyk7CisgICAgY29tcGF0YWJpbGl0eV9lbnRyaWVzID0gTlVMTDsKKyNlbmRpZgorICAgIHdoaWxlIChlcmVnX2hlYWQpCisJX3VucmVnaXN0ZXJfZXh0ZW5kKGVyZWdfaGVhZCk7Cit9CisKICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioKICAgICAgICAgICoKICAgICAgICAgICogIENhY2hlZC1kYXRhIGhvb2tzCkBAIC00NjUsNiArNTU3LDEwIEBACiAgICAgfQogCiAgICAgZXB0ciAgICAgID0gX3JlZ2lzdGVyX2V4dGVuZCggb2lkX2J1Ziwgb2lkX2xlbiApOworICAgIGlmICghZXB0cikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiRmFpbGVkIHRvIHJlZ2lzdGVyIGV4dGVuZCBlbnRyeSAnJXMnIC0gcG9zc2libHkgZHVwbGljYXRlIG5hbWUuXG4iLCBleGVjX25hbWUgKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBleHRlbnNpb24gPSBfbmV3X2V4dGVuc2lvbiggZXhlY19uYW1lLCBmbGFncywgZXB0ciApOwogICAgIGlmIChleHRlbnNpb24pIHsKICAgICAgICAgZXh0ZW5zaW9uLT5jb21tYW5kICA9IHN0cmR1cCggZXhlY19jb21tYW5kICk7CkBAIC02MjcsNiArNzIzLDcgQEAKICAgICAgICAgICoKICAgICAgICAgICoqKioqKioqKiovCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogVmFsaWRhdGUgdGhlIG5ldyBhc3NpZ25tZW50cwpAQCAtOTUyLDYgKzEwNDksNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8gCiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdCwgU05NUF9FUlJfR0VORVJSKTsKQEAgLTk1OSw2ICsxMDU3LDcgQEAKICAgICAgICAgfQogICAgIH0KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAvKgogICAgICAqIElmIHdlJ3JlIG1hcmtpbmcgYSBnaXZlbiByb3cgYXMgYWN0aXZlLAogICAgICAqICB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgdGhhdCBpdCdzIHJlYWR5LgpAQCAtOTgzLDcgKzEwODIsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCkBAIC0xNDcxLDYgKzE1NzEsNyBAQAogICAgIGlkeCA9IG5hbWVbbmFtZV9sZW4tMV0gLTE7CiAgICAgZXh0ZW4gPSAmY29tcGF0YWJpbGl0eV9lbnRyaWVzWyBpZHggXTsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBzd2l0Y2ggKGFjdGlvbikgewogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgICAgIGlmICh2YXJfdmFsX3R5cGUgIT0gQVNOX0lOVEVHRVIpIHsKQEAgLTE0OTEsNiArMTU5Miw3IEBACiAgICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6CiAgICAgICAgIG5ldHNubXBfY2FjaGVfY2hlY2tfYW5kX3JlbG9hZCggZXh0ZW4tPmVmaXhfZW50cnktPmNhY2hlICk7CiAgICAgfQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIFVTSU5HX1VDRF9TTk1QX0VYVEVOU0lCTEVfTU9EVUxFICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuaCBiL2FnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5oCmluZGV4IDRiMTgxZjkuLjhiNzZjZDQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5oCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5oCkBAIC0yOCw2ICsyOCw3IEBACiB9IG5ldHNubXBfZXh0ZW5kOwogCiB2b2lkICAgICAgICAgICAgICAgICBpbml0X2V4dGVuZCh2b2lkKTsKK3ZvaWQgICAgICAgICAgICAgICAgIHNodXRkb3duX2V4dGVuZCh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIGhhbmRsZV9uc0V4dGVuZENvbmZpZ1RhYmxlOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgaGFuZGxlX25zRXh0ZW5kT3V0cHV0MVRhYmxlOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgaGFuZGxlX25zRXh0ZW5kT3V0cHV0MlRhYmxlOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5jIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5jCmluZGV4IDU4MTVlOTAuLmQzMjI2M2IgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2FnZW50L25zQ2FjaGUuYworKysgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc0NhY2hlLmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc2NhbGFyLmg+CkBAIC0xMiw2ICsxMyw5IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oPgogI2luY2x1ZGUgImFnZW50L25zQ2FjaGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2FjaGVfZ2V0X2hlYWQpCisKKwogLyoKICAqIHVzZSB1bmFkdmVydGlzZWQgZnVuY3Rpb24gdG8gZ2V0IGNhY2hlIGhlYWQuIFlvdSByZWFsbHkgc2hvdWxkIG5vdAogICogZG8gdGhpcywgc2luY2UgdGhlIGludGVybmFsIHN0b3JhZ2UgbWVjaGFuaXNtIG1pZ2h0IGNoYW5nZS4KQEAgLTEwMiw3ICsxMDYsNyBAQAogICAgIC8qCiAgICAgICogLi4uLiBhbmQgcmVnaXN0ZXIgdGhlIHRhYmxlIHdpdGggdGhlIGFnZW50LgogICAgICAqLwotICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IoCisgICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcjIoCiAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgInR6Q2FjaGVUYWJsZSIsIGhhbmRsZV9uc0NhY2hlVGFibGUsCiAgICAgICAgICAgICBuc0NhY2hlVGFibGVfb2lkLCBPSURfTEVOR1RIKG5zQ2FjaGVUYWJsZV9vaWQpLApAQCAtMTM3LDYgKzE0MSw3IEBACiAJYnJlYWs7CiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogCWZvciAocmVxdWVzdCA9IHJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKICAgICAgICAgICAgIGlmICggcmVxdWVzdC0+c3RhdHVzICE9IDAgKSB7CkBAIC0xNTgsNiArMTYzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfQ0FDSEVfVElNRU9VVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICpyZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcik7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKQEAgLTE4Nyw2ICsxOTMsNyBAQAogCWJyZWFrOwogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKIAlmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7CiAgICAgICAgICAgICBpZiAoIHJlcXVlc3QtPnN0YXR1cyAhPSAwICkgewpAQCAtMjExLDYgKzIxOCw3IEBACiAJbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfTk9fQ0FDSElORywgZW5hYmxlZCk7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKQEAgLTI5NSw5ICszMDMsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAJCX0KIAkJc3RhdHVzID0gKGNhY2hlX2VudHJ5LT5lbmFibGVkID8KLQkgICAgICAgICAgICAgICAgICAgKGNhY2hlX2VudHJ5LT50aW1lc3RhbXAgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIWF0aW1lX3JlYWR5KGNhY2hlX2VudHJ5LT50aW1lc3RhbXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAwKmNhY2hlX2VudHJ5LT50aW1lb3V0KSA/CisJICAgICAgICAgICAgICAgICAgIChjYWNoZV9lbnRyeS0+dGltZXN0YW1wTSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYWNoZV9lbnRyeS0+dGltZW91dCA+PSAwICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbmV0c25tcF9yZWFkeV9tb25vdG9uaWMoY2FjaGVfZW50cnktPnRpbWVzdGFtcE0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwMCpjYWNoZV9lbnRyeS0+dGltZW91dCkgPwogCSAgICAgICAgICAgICAgICAgICAgICAgIE5TQ0FDSEVfU1RBVFVTX0FDVElWRToKIAkgICAgICAgICAgICAgICAgICAgICAgICBOU0NBQ0hFX1NUQVRVU19FWFBJUkVEKSA6CiAJICAgICAgICAgICAgICAgICAgICAgIE5TQ0FDSEVfU1RBVFVTX0VNUFRZKSA6CkBAIC0zMTQsNiArMzIzLDcgQEAKIAlicmVhazsKIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgICAgIGZvciAocmVxdWVzdD1yZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7CiAgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkICE9IDApCkBAIC00MDQsMTQgKzQxNCwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAJCSAgICBjYXNlIE5TQ0FDSEVfU1RBVFVTX0VNUFRZOgogICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVfZW50cnktPmZyZWVfY2FjaGUoY2FjaGVfZW50cnksIGNhY2hlX2VudHJ5LT5tYWdpYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmcmVlKGNhY2hlX2VudHJ5LT50aW1lc3RhbXApOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVfZW50cnktPnRpbWVzdGFtcCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICBmcmVlKGNhY2hlX2VudHJ5LT50aW1lc3RhbXBNKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlX2VudHJ5LT50aW1lc3RhbXBNID0gTlVMTDsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCQl9CiAJICAgICAgICBicmVhazsKIAkgICAgfQogCX0KIAlicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudC9uc0RlYnVnLmMgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc0RlYnVnLmMKaW5kZXggNTM0ZDE4Yy4uODlhOTBiMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNEZWJ1Zy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50L25zRGVidWcuYwpAQCAtOTEsNyArOTEsNyBAQAogICAgIC8qCiAgICAgICogLi4uLiBhbmQgcmVnaXN0ZXIgdGhlIHRhYmxlIHdpdGggdGhlIGFnZW50LgogICAgICAqLwotICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IoCisgICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcjIoCiAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgInR6RGVidWdUYWJsZSIsIGhhbmRsZV9uc0RlYnVnVGFibGUsCiAgICAgICAgICAgICBuc0RlYnVnVG9rZW5UYWJsZV9vaWQsIE9JRF9MRU5HVEgobnNEZWJ1Z1Rva2VuVGFibGVfb2lkKSwKQEAgLTEyNCw2ICsxMjQsNyBAQAogCWJyZWFrOwogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKIAlmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7CiAgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkICE9IDApCkBAIC0xNDksNiArMTUwLDcgQEAKIAkgICAgZW5hYmxlZCA9IDA7CiAJc25tcF9zZXRfZG9fZGVidWdnaW5nKCBlbmFibGVkICk7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKQEAgLTE3OSw2ICsxODEsNyBAQAogCWJyZWFrOwogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKIAlmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7CiAgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkICE9IDApCkBAIC0yMDQsNiArMjA3LDcgQEAKIAkgICAgZW5hYmxlZCA9IDA7CiAJc25tcF9zZXRfZG9fZGVidWdnaW5nKCBlbmFibGVkICk7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKQEAgLTIzNSw2ICsyMzksNyBAQAogCWJyZWFrOwogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKIAlmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7CiAgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkICE9IDApCkBAIC0yNjEsNiArMjY2LDcgQEAKIAluZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKIAkgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0RVTVBfUEFDS0VULCBlbmFibGVkKTsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwpAQCAtMzQ1LDYgKzM1MSw3IEBACiAJYnJlYWs7CiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogCWZvciAocmVxdWVzdCA9IHJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKICAgICAgICAgICAgIGlmIChyZXF1ZXN0LT5wcm9jZXNzZWQgIT0gMCkKQEAgLTQ1MSw2ICs0NTgsNyBAQAogCSAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmMgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc0xvZ2dpbmcuYwppbmRleCAzNDRlNTNhLi43ZjIwYmRiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9hZ2VudC9uc0xvZ2dpbmcuYworKysgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc0xvZ2dpbmcuYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zY2FsYXIuaD4KQEAgLTEyLDYgKzEzLDExIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaD4KICNpbmNsdWRlICJhZ2VudC9uc0xvZ2dpbmcuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUobG9nZ2luZ19leHRlcm5hbCkKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9pdGVyYXRvcl9pbnNlcnRfY29udGV4dCkKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogLyoKICAqIE9JRCBhbmQgY29sdW1ucyBmb3IgdGhlIGxvZ2dpbmcgdGFibGUuCiAgKi8KQEAgLTU4LDcgKzY0LDcgQEAKICAgICAvKgogICAgICAqIC4uLi4gYW5kIHJlZ2lzdGVyIHRoZSB0YWJsZSB3aXRoIHRoZSBhZ2VudC4KICAgICAgKi8KLSAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yKAorICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IyKAogICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKICAgICAgICAgICAgICJ0ekxvZ2dpbmdUYWJsZSIsIGhhbmRsZV9uc0xvZ2dpbmdUYWJsZSwKICAgICAgICAgICAgIG5zTG9nZ2luZ1RhYmxlX29pZCwgT0lEX0xFTkdUSChuc0xvZ2dpbmdUYWJsZV9vaWQpLApAQCAtMTg2LDYgKzE5Miw3IEBACiAJYnJlYWs7CiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgewogICAgICAgICAgICAgaWYgKCByZXF1ZXN0LT5zdGF0dXMgIT0gMCApIHsKQEAgLTQ1OCw2ICs0NjUsNyBAQAogCSAgICB9CiAJfQogCWJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2FnZW50L25zTW9kdWxlVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2FnZW50L25zTW9kdWxlVGFibGUuYwppbmRleCAxZDc2M2YzLi44NGJkOGZhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNNb2R1bGVUYWJsZS5jCkBAIC00LDEwICs0LDEzIEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgIm5zTW9kdWxlVGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfZGF0YXNldCkKKwogdm9pZAogbnNNb2R1bGVUYWJsZV9mcmVlKHZvaWQgKmNvbnRleHQsIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqZG9udF9jYXJlKQogewpAQCAtNzIsNyArNzUsNyBAQAogICAgICAqLwogICAgIERFQlVHTVNHVEwoKCJpbml0aWFsaXplX3RhYmxlX25zTW9kdWxlVGFibGUiLAogICAgICAgICAgICAgICAgICJSZWdpc3RlcmluZyB0YWJsZSBuc01vZHVsZVRhYmxlIGFzIGEgdGFibGUgaXRlcmF0b3JcbiIpKTsKLSAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yKG15X2hhbmRsZXIsIGlpbmZvKTsKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yMihteV9oYW5kbGVyLCBpaW5mbyk7CiB9CiAKIC8qKiBJbml0aWFsaXplcyB0aGUgbnNNb2R1bGVUYWJsZSBtb2R1bGUgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmMKaW5kZXggZGMxZjdmYS4uZDdkM2NlOSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmMKQEAgLTMsNiArMyw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC0xMCw2ICsxMSw4IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaD4KICNpbmNsdWRlICJuc1RyYW5zYWN0aW9uVGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfZGF0YXNldCkKKwogLyoqIEluaXRpYWxpemUgdGhlIG5zVHJhbnNhY3Rpb25UYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdCdzIGNvbnRlbnRzCiAgICBhbmQgaG93IGl0J3Mgc3RydWN0dXJlZCAqLwogdm9pZApAQCAtNjEsNyArNjQsNyBAQAogICAgICAqLwogICAgIERFQlVHTVNHVEwoKCJpbml0aWFsaXplX3RhYmxlX25zVHJhbnNhY3Rpb25UYWJsZSIsCiAgICAgICAgICAgICAgICAgIlJlZ2lzdGVyaW5nIHRhYmxlIG5zVHJhbnNhY3Rpb25UYWJsZSBhcyBhIHRhYmxlIGl0ZXJhdG9yXG4iKSk7Ci0gICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcihteV9oYW5kbGVyLCBpaW5mbyk7CisgICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcjIobXlfaGFuZGxlciwgaWluZm8pOwogfQogCiAvKiogSW5pdGlhbGl6ZXMgdGhlIG5zVHJhbnNhY3Rpb25UYWJsZSBtb2R1bGUgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmMgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5jCmluZGV4IDQxMGIwMDIuLjc5ZmE5N2QgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUuYwpAQCAtNCwxMSArNCwxOCBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS92YWNtLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJuc1ZhY21BY2Nlc3NUYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl9zdG9yYWdldHlwZSkKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90eXBlX2FuZF9tYXhfc2l6ZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2l0ZXJhdG9yX2luc2VydF9jb250ZXh0KQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAvKiogSW5pdGlhbGl6ZXMgdGhlIG5zVmFjbUFjY2Vzc1RhYmxlIG1vZHVsZSAqLwogdm9pZAogaW5pdF9yZWdpc3Rlcl9uc1ZhY21fY29udGV4dChjb25zdCBjaGFyICpjb250ZXh0KQpAQCAtMjIsMTAgKzI5LDE3IEBACiAgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICAgICAgICAgICAqaWluZm87CiAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKICAgICAgICAgIm5zVmFjbUFjY2Vzc1RhYmxlIiwgbnNWYWNtQWNjZXNzVGFibGVfaGFuZGxlciwKICAgICAgICAgbnNWYWNtQWNjZXNzVGFibGVfb2lkLCBPSURfTEVOR1RIKG5zVmFjbUFjY2Vzc1RhYmxlX29pZCksCiAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSk7CisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICJuc1ZhY21BY2Nlc3NUYWJsZSIsIG5zVmFjbUFjY2Vzc1RhYmxlX2hhbmRsZXIsCisgICAgICAgIG5zVmFjbUFjY2Vzc1RhYmxlX29pZCwgT0lEX0xFTkdUSChuc1ZhY21BY2Nlc3NUYWJsZV9vaWQpLAorICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSk7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CiAgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGFibGVfaW5mbywKQEAgLTQ2LDcgKzYwLDcgQEAKICAgICBpZiAoIGNvbnRleHQgJiYgY29udGV4dFswXSApCiAgICAgICAgIHJlZy0+Y29udGV4dE5hbWUgPSBzdHJkdXAoY29udGV4dCk7CiAKLSAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yKHJlZywgaWluZm8pOworICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IyKHJlZywgaWluZm8pOwogfQogCiB2b2lkCkBAIC0xODksNiArMjAzLDcgQEAKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgLyoKICAgICAgICAgICogV3JpdGUtc3VwcG9ydAogICAgICAgICAgKi8KQEAgLTMzNCw2ICszNDksNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuYwppbmRleCBlZWM4MjcxLi5iNTkwYzdhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50eC9hZ2VudHhfY29uZmlnLmMKQEAgLTIsNiArMiw3IEBACiAgKiAgQWdlbnRYIENvbmZpZ3VyYXRpb24KICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgpAQCAtMjAsNiArMjEsOSBAQAogI2luY2x1ZGUgImFnZW50eC9hZ2VudHhfY29uZmlnLmgiCiAjaW5jbHVkZSAiYWdlbnR4L3Byb3RvY29sLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHVzZXJfaW5mb3JtYXRpb24pCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzdHJpbmdfdGltZV90b19zZWNzKQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCiAgKiBDb21tb24gbWFzdGVyIGFuZCBzdWItYWdlbnQKQEAgLTExNiw4ICsxMjAsMTIgQEAKIHZvaWQKIGFnZW50eF9wYXJzZV9hZ2VudHhfdGltZW91dChjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKIHsKLSAgICBpbnQgeCA9IGF0b2koY3B0cik7CisgICAgaW50IHggPSBuZXRzbm1wX3N0cmluZ190aW1lX3RvX3NlY3MoY3B0cik7CiAgICAgREVCVUdNU0dUTCgoImFnZW50eC9jb25maWcvdGltZW91dCIsICIlc1xuIiwgY3B0cikpOworICAgIGlmICh4ID09IC0xKSB7CisgICAgICAgIGNvbmZpZ19wZXJyb3IoIkludmFsaWQgdGltZW91dCB2YWx1ZSIpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAogICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX0FHRU5UWF9USU1FT1VULCB4ICogT05FX1NFQyk7CiB9CkBAIC0xNTIsMTEgKzE2MCwxNCBAQAogICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCI6YWdlbnR4IiwgdG9rZW4sIHBhcnNlciwgcmVsZWFzZXIsIGhlbHApOwogfQogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoYWdlbnR4X3VucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIsIG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0FHRU5UWF9VTlJFR0lTVEVSX0NPTkZJR19IQU5ETEVSCiB2b2lkCiBhZ2VudHhfdW5yZWdpc3Rlcl9jb25maWdfaGFuZGxlcihjb25zdCBjaGFyICp0b2tlbikKIHsKICAgICB1bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCI6YWdlbnR4IiwgdG9rZW4pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQUdFTlRYX1VOUkVHSVNURVJfQ09ORklHX0hBTkRMRVIgKi8KIAogdm9pZAogYWdlbnR4X2NvbmZpZ19pbml0KHZvaWQpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudHgvY2xpZW50LmMgYi9hZ2VudC9taWJncm91cC9hZ2VudHgvY2xpZW50LmMKaW5kZXggNTg5ODdlMy4uZDM2ZmUyZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50eC9jbGllbnQuYwpAQCAtMyw2ICszLDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KQEAgLTQxLDYgKzQyLDggQEAKICNpbmNsdWRlICJhZ2VudHgvY2xpZW50LmgiCiAjaW5jbHVkZSAiYWdlbnR4L3N1YmFnZW50LmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHNldF9hZ2VudF91cHRpbWUpCisKICAgICAgICAgLyoKICAgICAgICAgICogQWdlbnRYIGhhbmRsaW5nIHV0aWxpdHkgcm91dGluZXMKICAgICAgICAgICoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYyBiL2FnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYwppbmRleCAxZmZjMDQzLi5jNDJhNDJhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jCkBAIC0xNCw2ICsxNCw3IEBACiAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaWYgSEFWRV9JT19ICiAjaW5jbHVkZSA8aW8uaD4KICNlbmRpZgpAQCAtNTAsNiArNTEsMTAgQEAKICNpbmNsdWRlICJhZ2VudHgvcHJvdG9jb2wuaCIKICNpbmNsdWRlICJhZ2VudHgvbWFzdGVyX2FkbWluLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGhhbmRsZXJfbWFya19yZXF1ZXN0c19hc19kZWxlZ2F0ZWQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh1bml4X3NvY2tldF9wYXRocykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGZyZWVfYWdlbnRfc25tcF9zZXNzaW9uX2J5X3Nlc3Npb24pCisKIHZvaWQKIHJlYWxfaW5pdF9tYXN0ZXIodm9pZCkKIHsKQEAgLTQ2MCw2ICs0NjUsNyBAQAogICAgICAgICBwZHUgPSBzbm1wX3BkdV9jcmVhdGUoQUdFTlRYX01TR19HRVRORVhUKTsKICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICAgICAgcGR1ID0gc25tcF9wZHVfY3JlYXRlKEFHRU5UWF9NU0dfVEVTVFNFVCk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDgzLDYgKzQ4OSw3IEBACiAgICAgY2FzZSBNT0RFX1NFVF9GUkVFOgogICAgICAgICBwZHUgPSBzbm1wX3BkdV9jcmVhdGUoQUdFTlRYX01TR19DTEVBTlVQU0VUKTsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgZGVmYXVsdDoKICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMgYi9hZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMKaW5kZXggODY2OTM2ZS4uNGVhZWFiNiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYwpAQCAtMiw2ICsyLDcgQEAKICAqICBBZ2VudFggQWRtaW5pc3RyYXRpdmUgcmVxdWVzdCBoYW5kbGluZwogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2lmZGVmIEhBVkVfU1RSSU5HX0gKQEAgLTQxLDYgKzQyLDExIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5oPgogI2luY2x1ZGUgIm1hc3Rlci5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh1bnJlZ2lzdGVyX21pYl90YWJsZV9yb3cpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0cmFwX3ZhcnNfd2l0aF9jb250ZXh0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2FsY3VsYXRlX3NlY3RpbWVfZGlmZikKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGFsbG9jYXRlX2dsb2JhbGNhY2hlaWQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyZW1vdmVfaW5kZXgpCiAKIG5ldHNubXBfc2Vzc2lvbiAqCiBmaW5kX2FnZW50eF9zZXNzaW9uKG5ldHNubXBfc2Vzc2lvbiAqIHNlc3Npb24sIGludCBzZXNzaWQpCkBAIC05Nyw3ICsxMDMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfbGVuZ3RoKTsKICAgICBzcC0+c2VjdXJpdHlBdXRoUHJvdG9MZW4gPSBwZHUtPnZhcmlhYmxlcy0+bmFtZV9sZW5ndGg7CiAgICAgc3AtPnNlY3VyaXR5TmFtZSA9IHN0cmR1cCgoY2hhciAqKSBwZHUtPnZhcmlhYmxlcy0+dmFsLnN0cmluZyk7Ci0gICAgc3AtPmVuZ2luZVRpbWUgPSAobmV0c25tcF9nZXRfYWdlbnRfcnVudGltZSgpICsgNTApIC8gMTAwOworICAgIHNwLT5lbmdpbmVUaW1lID0gKHVpbnQzMl90KSgobmV0c25tcF9nZXRfYWdlbnRfcnVudGltZSgpICsgNTApIC8gMTAwKSAmIDB4N2ZmZmZmZmZMOwogCiAgICAgc3AtPnN1YnNlc3Npb24gPSBzZXNzaW9uOyAgIC8qIGxpbmsgYmFjayB0byBoZWFkICovCiAgICAgc3AtPmZsYWdzIHw9IFNOTVBfRkxBR1NfU1VCU0VTU0lPTjsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMKaW5kZXggMWMwMGRiMS4uMWY5ZDMxYyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMKQEAgLTIsNiArMiw3IEBACiAgKiAgQWdlbnRYIHN1Yi1hZ2VudAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2lmZGVmIEhBVkVfU1RETElCX0gKQEAgLTQ0LDYgKzQ1LDExIEBACiAKICNpbmNsdWRlICJzdWJhZ2VudC5oIgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoYWdlbnR4X3N1YmFnZW50LCBhZ2VudHhfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGFnZW50eF9lbmFibGVfc3ViYWdlbnQsIGFnZW50eF9zdWJhZ2VudCkKKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocmVtb3ZlX3RyYXBfc2Vzc2lvbikKKwogI2lmZGVmIFVTSU5HX0FHRU5UWF9TVUJBR0VOVF9NT0RVTEUKIAogc3RhdGljIFNOTVBDYWxsYmFjayBzdWJhZ2VudF9yZWdpc3Rlcl9waW5nX2FsYXJtOwpAQCAtNTMsMTAgKzU5LDEyIEBACiBpbnQgICAgICAgICAgICAgaGFuZGxlX3N1YmFnZW50X3Jlc3BvbnNlKGludCBvcCwgbmV0c25tcF9zZXNzaW9uICogc2Vzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlcWlkLCBuZXRzbm1wX3BkdSAqcGR1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICptYWdpYyk7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogaW50ICAgICAgICAgICAgIGhhbmRsZV9zdWJhZ2VudF9zZXRfcmVzcG9uc2UoaW50IG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXNzaW9uICogc2Vzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXFpZCwgbmV0c25tcF9wZHUgKnBkdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKm1hZ2ljKTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiB2b2lkICAgICAgICAgICAgc3ViYWdlbnRfc3RhcnR1cF9jYWxsYmFjayh1bnNpZ25lZCBpbnQgY2xpZW50cmVnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xpZW50YXJnKTsKIGludCAgICAgICAgICAgICBzdWJhZ2VudF9vcGVuX21hc3Rlcl9zZXNzaW9uKHZvaWQpOwpAQCAtMTU2LDEyICsxNjQsMTUgQEAKICAgICByZXR1cm4gcmM7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9BR0VOVFhfRU5BQkxFX1NVQkFHRU5UCiB2b2lkCiBuZXRzbm1wX2VuYWJsZV9zdWJhZ2VudCh2b2lkKSB7CiAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCBORVRTTk1QX0RTX0FHRU5UX1JPTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVUJfQUdFTlQpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQUdFTlRYX0VOQUJMRV9TVUJBR0VOVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogc3RydWN0IGFnZW50X25ldHNubXBfc2V0X2luZm8gKgogc2F2ZV9zZXRfdmFycyhuZXRzbm1wX3Nlc3Npb24gKiBzcywgbmV0c25tcF9wZHUgKnBkdSkKIHsKQEAgLTIzMCw2ICsyNDEsNyBAQAogICAgICAgICBwcmV2ID0gcHRyOwogICAgIH0KIH0KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIHN0YXRpYyB2b2lkCiBzZW5kX2FnZW50eF9lcnJvcihuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb24sIG5ldHNubXBfcGR1ICpwZHUsIGludCBlcnJzdGF0LCBpbnQgZXJyaW5kZXgpCkBAIC0zOTMsNiArNDA1LDcgQEAKICAgICAgICAgREVCVUdNU0dUTCgoImFnZW50eC9zdWJhZ2VudCIsICIgIC0+IHJlc3BvbnNlXG4iKSk7CiAgICAgICAgIHJldHVybiAxOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgQUdFTlRYX01TR19URVNUU0VUOgogICAgICAgICAvKgogICAgICAgICAgKiBYWFhXV1cgd2UgaGF2ZSB0byBtYXAgdGhpcyB0d2ljZSB0byBib3RoIFJFU0VSVkUxIGFuZCBSRVNFUlZFMiAKQEAgLTQ3MCw2ICs0ODMsNyBAQAogICAgICAgICBteWNhbGxiYWNrID0gaGFuZGxlX3N1YmFnZW50X3NldF9yZXNwb25zZTsKICAgICAgICAgcmV0bWFnaWMgPSBhc2k7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8gCiAKICAgICBkZWZhdWx0OgogICAgICAgICBTTk1QX0ZSRUUoc21hZ2ljKTsKQEAgLTU0MSwxMSArNTU1LDEzIEBACiAgICAgICAgICAgICAgICAgKHVuc2lnbmVkKXBkdS0+cmVxaWQsICh1bnNpZ25lZClwZHUtPnRyYW5zaWQsCiAgICAgICAgICAgICAgICAgKHVuc2lnbmVkKXBkdS0+c2Vzc2lkKSk7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgaWYgKHBkdS0+Y29tbWFuZCA9PSBTTk1QX01TR19JTlRFUk5BTF9TRVRfRlJFRSB8fAogICAgICAgICBwZHUtPmNvbW1hbmQgPT0gU05NUF9NU0dfSU5URVJOQUxfU0VUX1VORE8gfHwKICAgICAgICAgcGR1LT5jb21tYW5kID09IFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9DT01NSVQpIHsKICAgICAgICAgZnJlZV9zZXRfdmFycyhzbWFnaWMtPnNlc3Npb24sIHBkdSk7CiAgICAgfQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIGlmIChzbWFnaWMtPm9yaWdpbmFsX2NvbW1hbmQgPT0gQUdFTlRYX01TR19HRVRORVhUKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvc3ViYWdlbnQiLApAQCAtNjA3LDYgKzYyMyw3IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBpbnQKIGhhbmRsZV9zdWJhZ2VudF9zZXRfcmVzcG9uc2UoaW50IG9wLCBuZXRzbm1wX3Nlc3Npb24gKiBzZXNzaW9uLCBpbnQgcmVxaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcGR1ICpwZHUsIHZvaWQgKm1hZ2ljKQpAQCAtNjY4LDcgKzY4NSw3IEBACiAgICAgREVCVUdNU0dUTCgoImFnZW50eC9zdWJhZ2VudCIsICIgIEZJTklTSEVEXG4iKSk7CiAgICAgcmV0dXJuIDE7CiB9Ci0KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIAogaW50CkBAIC02NzcsNyArNjk0LDcgQEAKIHsKICAgICBzdHJ1Y3QgcmVnaXN0ZXJfcGFyYW1ldGVycyAqcmVnX3Bhcm1zID0KICAgICAgICAgKHN0cnVjdCByZWdpc3Rlcl9wYXJhbWV0ZXJzICopIHNlcnZlcmFyZzsKLSAgICBuZXRzbm1wX3Nlc3Npb24gKmFnZW50eF9zcyA9IChuZXRzbm1wX3Nlc3Npb24gKikgY2xpZW50YXJnOworICAgIG5ldHNubXBfc2Vzc2lvbiAqYWdlbnR4X3NzID0gKihuZXRzbm1wX3Nlc3Npb24gKiopY2xpZW50YXJnOwogCiAgICAgaWYgKG1pbm9ySUQgPT0gU05NUERfQ0FMTEJBQ0tfUkVHSVNURVJfT0lEKQogICAgICAgICByZXR1cm4gYWdlbnR4X3JlZ2lzdGVyKGFnZW50eF9zcywKQEAgLTcwMyw3ICs3MjAsNyBAQAogewogICAgIGNvbnN0IHN0cnVjdCByZWdpc3Rlcl9zeXNPUl9wYXJhbWV0ZXJzICpyZWdfcGFybXMgPQogICAgICAgICAoY29uc3Qgc3RydWN0IHJlZ2lzdGVyX3N5c09SX3BhcmFtZXRlcnMgKikgc2VydmVyYXJnOwotICAgIG5ldHNubXBfc2Vzc2lvbiAqYWdlbnR4X3NzID0gKG5ldHNubXBfc2Vzc2lvbiAqKSBjbGllbnRhcmc7CisgICAgbmV0c25tcF9zZXNzaW9uICphZ2VudHhfc3MgPSAqKG5ldHNubXBfc2Vzc2lvbiAqKiljbGllbnRhcmc7CiAKICAgICBpZiAobWlub3JJRCA9PSBTTk1QRF9DQUxMQkFDS19SRUdfU1lTT1IpCiAgICAgICAgIHJldHVybiBhZ2VudHhfYWRkX2FnZW50Y2FwcyhhZ2VudHhfc3MsCkBAIC03MTksNyArNzM2LDcgQEAKIHN0YXRpYyBpbnQKIHN1YmFnZW50X3NodXRkb3duKGludCBtYWpvcklELCBpbnQgbWlub3JJRCwgdm9pZCAqc2VydmVyYXJnLCB2b2lkICpjbGllbnRhcmcpCiB7Ci0gICAgbmV0c25tcF9zZXNzaW9uICp0aGVzZXNzaW9uID0gKG5ldHNubXBfc2Vzc2lvbiAqKWNsaWVudGFyZzsKKyAgICBuZXRzbm1wX3Nlc3Npb24gKnRoZXNlc3Npb24gPSAqKG5ldHNubXBfc2Vzc2lvbiAqKiljbGllbnRhcmc7CiAgICAgREVCVUdNU0dUTCgoImFnZW50eC9zdWJhZ2VudCIsICJzaHV0dGluZyBkb3duIHNlc3Npb24uLi4uXG4iKSk7CiAgICAgaWYgKHRoZXNlc3Npb24gPT0gTlVMTCkgewogCURFQlVHTVNHVEwoKCJhZ2VudHgvc3ViYWdlbnQiLCAiRW1wdHkgc2Vzc2lvbiB0byBzaHV0ZG93blxuIikpOwpAQCAtNzQ3LDIyICs3NjQsMjkgQEAKIHZvaWQKIGFnZW50eF9yZWdpc3Rlcl9jYWxsYmFja3MobmV0c25tcF9zZXNzaW9uICogcykKIHsKKyAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3NfcDsKKwogICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvc3ViYWdlbnQiLAogICAgICAgICAgICAgICAgICJyZWdpc3RlcmluZyBjYWxsYmFja3MgZm9yIHNlc3Npb24gJXBcbiIsIHMpKTsKKyAgICBzZXNzX3AgPSBuZXRzbm1wX21lbWR1cCgmcywgc2l6ZW9mKHMpKTsKKyAgICBuZXRzbm1wX2Fzc2VydChzZXNzX3ApOworICAgIHMtPm15dm9pZCA9IHNlc3NfcDsKKyAgICBpZiAoIXNlc3NfcCkKKyAgICAgICAgcmV0dXJuOwogICAgIHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19MSUJSQVJZLCBTTk1QX0NBTExCQUNLX1NIVVRET1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViYWdlbnRfc2h1dGRvd24sIHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViYWdlbnRfc2h1dGRvd24sIHNlc3NfcCk7CiAgICAgc25tcF9yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVHSVNURVJfT0lELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnR4X3JlZ2lzdHJhdGlvbl9jYWxsYmFjaywgcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudHhfcmVnaXN0cmF0aW9uX2NhbGxiYWNrLCBzZXNzX3ApOwogICAgIHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1VOUkVHSVNURVJfT0lELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnR4X3JlZ2lzdHJhdGlvbl9jYWxsYmFjaywgcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudHhfcmVnaXN0cmF0aW9uX2NhbGxiYWNrLCBzZXNzX3ApOwogICAgIHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1JFR19TWVNPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50eF9zeXNPUl9jYWxsYmFjaywgcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudHhfc3lzT1JfY2FsbGJhY2ssIHNlc3NfcCk7CiAgICAgc25tcF9yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfVU5SRUdfU1lTT1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudHhfc3lzT1JfY2FsbGJhY2ssIHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnR4X3N5c09SX2NhbGxiYWNrLCBzZXNzX3ApOwogfQogCiAvKgpAQCAtNzc1LDE5ICs3OTksMjAgQEAKICAgICBERUJVR01TR1RMKCgiYWdlbnR4L3N1YmFnZW50IiwKICAgICAgICAgICAgICAgICAidW5yZWdpc3RlcmluZyBjYWxsYmFja3MgZm9yIHNlc3Npb24gJXBcbiIsIHNzKSk7CiAgICAgc25tcF91bnJlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwgU05NUF9DQUxMQkFDS19TSFVURE9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViYWdlbnRfc2h1dGRvd24sIHNzLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViYWdlbnRfc2h1dGRvd24sIHNzLT5teXZvaWQsIDEpOwogICAgIHNubXBfdW5yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19SRUdJU1RFUl9PSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50eF9yZWdpc3RyYXRpb25fY2FsbGJhY2ssIHNzLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnR4X3JlZ2lzdHJhdGlvbl9jYWxsYmFjaywgc3MtPm15dm9pZCwgMSk7CiAgICAgc25tcF91bnJlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1VOUkVHSVNURVJfT0lELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudHhfcmVnaXN0cmF0aW9uX2NhbGxiYWNrLCBzcywgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50eF9yZWdpc3RyYXRpb25fY2FsbGJhY2ssIHNzLT5teXZvaWQsIDEpOwogICAgIHNubXBfdW5yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19SRUdfU1lTT1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50eF9zeXNPUl9jYWxsYmFjaywgc3MsIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudHhfc3lzT1JfY2FsbGJhY2ssIHNzLT5teXZvaWQsIDEpOwogICAgIHNubXBfdW5yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19VTlJFR19TWVNPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnR4X3N5c09SX2NhbGxiYWNrLCBzcywgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50eF9zeXNPUl9jYWxsYmFjaywgc3MtPm15dm9pZCwgMSk7CisgICAgU05NUF9GUkVFKHNzLT5teXZvaWQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGVmYXVsdF9tb2R1bGVzLmggYi9hZ2VudC9taWJncm91cC9kZWZhdWx0X21vZHVsZXMuaAppbmRleCAxZDc2N2FlLi5mYzVmMjZhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kZWZhdWx0X21vZHVsZXMuaAorKysgYi9hZ2VudC9taWJncm91cC9kZWZhdWx0X21vZHVsZXMuaApAQCAtNSw2ICs1LDEzIEBACiAvKiB0aGVzZSBnbyBpbnRvIGJvdGggdGhlIG1pbmkgYWdlbnQgYW5kIHRoZSBmdWxsIGFnZW50ICovCiBjb25maWdfcmVxdWlyZShzbm1wdjNtaWJzKQogCisvKiB2ZXJ5IGZldyBkZWZhdWx0IG1pYnMgKi8KK2NvbmZpZ19hZGRfbWliKFNOTVB2Mi1NSUIpCitjb25maWdfYWRkX21pYihJRi1NSUIpCitjb25maWdfYWRkX21pYihJUC1NSUIpCitjb25maWdfYWRkX21pYihUQ1AtTUlCKQorY29uZmlnX2FkZF9taWIoVURQLU1JQikKKwogI2lmZGVmIE5FVFNOTVBfTUlOSV9BR0VOVAogCiAvKiBsaW1pdCB0aGUgbWliSUkgbW9kdWxlcyB0byB0aGUgYmFyZSBtaW5pbXVtICovCkBAIC0xMywxNSArMjAsNiBAQAogY29uZmlnX3JlcXVpcmUobWliSUkvc3lzT1JUYWJsZSkKIGNvbmZpZ19yZXF1aXJlKG1pYklJL3ZhY21fdmFycykKIGNvbmZpZ19yZXF1aXJlKG1pYklJL3ZhY21fY29uZikKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvRXhpdCkKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvcmVzdGFydCkKLQotLyogdmVyeSBmZXcgZGVmYXVsdCBtaWJzICovCi1jb25maWdfYWRkX21pYihTTk1QdjItTUlCKQotY29uZmlnX2FkZF9taWIoSUYtTUlCKQotY29uZmlnX2FkZF9taWIoSVAtTUlCKQotY29uZmlnX2FkZF9taWIoVENQLU1JQikKLWNvbmZpZ19hZGRfbWliKFVEUC1NSUIpCiAKICNlbHNlIC8qICFORVRTTk1QX01JTklfQUdFTlQgPT0gdGhlIGZ1bGwgc2hhYmFuZyAqLwogCkBAIC0zMywyMiArMzEsMjEgQEAKIGNvbmZpZ19yZXF1aXJlKGFnZW50X21pYnMpCiBjb25maWdfcmVxdWlyZShhZ2VudHgpCiBjb25maWdfcmVxdWlyZShkaXNtYW4vZXZlbnQpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogY29uZmlnX3JlcXVpcmUoZGlzbWFuL3NjaGVkdWxlKQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIGNvbmZpZ19yZXF1aXJlKHV0aWxpdGllcykKIAogLyogZGVmYXVsdCBNSUJzIHRvIGF1dG8taW5jbHVkZSBmb3IgcGFyc2luZyAqLwogLyogTk9URTogd2UgY29uc2lkZXIgdGhlc2UgTUlCcyB1c2VycyB3aWxsIGxpa2VseSB3YW50IHRvIGxvYWQgYnkKICAgIGRlZmF1bHQsIGV2ZW4gaWYgdGhleSdyZSBub3Qgc3VwcG9ydGluZyBpdCBpbiB0aGUgYWdlbnQgKGllLCB0aGUKICAgIGNvbW1hbmQgbGluZSB0b29scyBuZWVkIHRvIGxvYWQgdGhlbSBhbnl3YXkpICovCi1jb25maWdfYWRkX21pYihTTk1QdjItTUlCKQotY29uZmlnX2FkZF9taWIoSUYtTUlCKQotY29uZmlnX2FkZF9taWIoSVAtTUlCKQotY29uZmlnX2FkZF9taWIoVENQLU1JQikKLWNvbmZpZ19hZGRfbWliKFVEUC1NSUIpCiBjb25maWdfYWRkX21pYihIT1NULVJFU09VUkNFUy1NSUIpCiBjb25maWdfYWRkX21pYihOT1RJRklDQVRJT04tTE9HLU1JQikKIGNvbmZpZ19hZGRfbWliKERJU01BTi1FVkVOVC1NSUIpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogY29uZmlnX2FkZF9taWIoRElTTUFOLVNDSEVEVUxFLU1JQikKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIC8qIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBleHRyYSBtb2R1bGVzICovCiAvKiB0aGVzZSBzeW1ib2xzIGFyZSBzZXQgaW4gdGhlIGhvc3Qgc3BlY2lmaWMgbmV0LXNubXAvc3lzdGVtLzxvcz4uaCBmaWxlcyAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYyBiL2FnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg5ODc5YQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmMKQEAgLTAsMCArMSw0NzUgQEAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPGxpbWl0cy5oPgorCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjb250YWluZXJfZmlmbykKKworI2luY2x1ZGUgImRlbGl2ZXJCeU5vdGlmeS5oIgorCisvKiB3ZSBzaG91bGQgbmV2ZXIgc3BsaXQgYmV5b25kIHRoaXMgKi8KKyNkZWZpbmUgTUFYX01FU1NBR0VfQ09VTlQgMTI4CisjZGVmaW5lIEJBU0VfUEFDS0VUX1NJWkUgMTAwIC8qIHNob3VsZCBiZSBlbm91Z2ggdG8gc3RvcmUgU05NUHYzIG1zZyBoZWFkZXJzICovCisKKy8qIGlmIHYgaXMgIU5VTEwsIHRoZW4gZXN0aW1hdGUgaXQncyBsaWtlbHkgc2l6ZSAqLworI2RlZmluZSBFU1RJTUFURV9WQVJfU0laRSh2KSAodj8odi0+bmFtZV9sZW5ndGggKyB2LT52YWxfbGVuICsgOCk6MCkKKwordm9pZCBwYXJzZV9kZWxpdmVyX2NvbmZpZyhjb25zdCBjaGFyICosIGNoYXIgKik7Cit2b2lkIHBhcnNlX2RlbGl2ZXJfbWF4c2l6ZV9jb25maWcoY29uc3QgY2hhciAqLCBjaGFyICopOwordm9pZCBwYXJzZV9kYXRhX25vdGlmaWNhdGlvbl9vaWRfY29uZmlnKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKK3ZvaWQgcGFyc2VfcGVyaW9kaWNfdGltZV9vaWRfY29uZmlnKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKK3ZvaWQgcGFyc2VfbWVzc2FnZV9udW1iZXJfb2lkX2NvbmZpZyhjb25zdCBjaGFyICosIGNoYXIgKik7Cit2b2lkIHBhcnNlX21heF9tZXNzYWdlX251bWJlcl9vaWRfY29uZmlnKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKK3ZvaWQgZnJlZV9kZWxpdmVyX2NvbmZpZyh2b2lkKTsKKworc3RhdGljIHZvaWQgX3NjaGVkdWxlX25leHRfZXhlY3V0ZV90aW1lKHZvaWQpOworCitvaWQgICAgZGF0YV9ub3RpZmljYXRpb25fb2lkW01BWF9PSURfTEVOXQorICAgICAgID0geyAxLCAzLCA2LCAxLCA0LCAxLCA4MDcyLCAzLCAxLCA1LCA0LCAwLCAxIH07CitzaXplX3QgZGF0YV9ub3RpZmljYXRpb25fb2lkX2xlbiA9IDEzOworCitvaWQgICAgbmV0c25tcF9wZXJpb2RpY190aW1lX29pZFtNQVhfT0lEX0xFTl0KKyAgICAgICA9IHsgMSwgMywgNiwgMSwgNCwgMSwgODA3MiwgMywgMSwgNSwgMywgMSwgMCB9Oworc2l6ZV90IG5ldHNubXBfcGVyaW9kaWNfdGltZV9vaWRfbGVuID0gMTM7CisKK29pZCAgICBuZXRzbm1wX21lc3NhZ2VfbnVtYmVyX29pZFtNQVhfT0lEX0xFTl0KKyAgICAgICA9IHsgMSwgMywgNiwgMSwgNCwgMSwgODA3MiwgMywgMSwgNSwgMywgMiwgMCB9Oworc2l6ZV90IG5ldHNubXBfbWVzc2FnZV9udW1iZXJfb2lkX2xlbiA9IDEzOworCitvaWQgICAgbmV0c25tcF9tYXhfbWVzc2FnZV9udW1iZXJfb2lkW01BWF9PSURfTEVOXQorICAgICAgID0geyAxLCAzLCA2LCAxLCA0LCAxLCA4MDcyLCAzLCAxLCA1LCAzLCAzLCAwIH07CitzaXplX3QgbmV0c25tcF9tYXhfbWVzc2FnZV9udW1iZXJfb2lkX2xlbiA9IDEzOworCitvaWQgb2JqaWRfc25tcHRyYXBbXSA9IHsgMSwgMywgNiwgMSwgNiwgMywgMSwgMSwgNCwgMSwgMCB9OworCisjZGVmaW5lIERFRkFVTFRfTUFYX0RFTElWRVJfU0laRSAtMTsKK3N0YXRpYyBpbnQgZGVmYXVsdF9tYXhfc2l6ZTsKK3Vuc2lnbmVkIGludCBhbGFybV9yZWc7CitzdGF0aWMgbmV0c25tcF9jb250YWluZXIgKmRlbGl2ZXJfY29udGFpbmVyOworCitzdGF0aWMgaW50CitfZGVsaXZlcl9jb21wYXJlKGRlbGl2ZXJfYnlfbm90aWZ5ICpsaHMsIGRlbGl2ZXJfYnlfbm90aWZ5ICpyaHMpIHsKKyAgICAvKiBzb3J0IGJ5IHRoZSBuZXh0X3J1biB0aW1lICovCisgICAgaWYgKGxocy0+bmV4dF9ydW4gPCByaHMtPm5leHRfcnVuKQorICAgICAgICByZXR1cm4gLTE7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gMTsKK30KKworLyoqIEluaXRpYWxpemVzIHRoZSBtdGVUcmlnZ2VyIG1vZHVsZSAqLwordm9pZAoraW5pdF9kZWxpdmVyQnlOb3RpZnkodm9pZCkKK3sKKyAgICAvKiByZWdpc3RlciB0aGUgY29uZmlnIHRva2VucyAqLworICAgIHNubXBkX3JlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJkZWxpdmVyQnlOb3RpZnkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwYXJzZV9kZWxpdmVyX2NvbmZpZywgJmZyZWVfZGVsaXZlcl9jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlstcF0gWy1tXSBbLXMgbWF4c2l6ZV0gRlJFUVVFTkNZIE9JRCIpOworCisgICAgc25tcGRfcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoImRlbGl2ZXJCeU5vdGlmeU1heFBhY2tldFNpemUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwYXJzZV9kZWxpdmVyX21heHNpemVfY29uZmlnLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaXplSW5CeXRlcyIpOworCisgICAgc25tcGRfcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoImRlbGl2ZXJCeU5vdGlmeU9pZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhcnNlX2RhdGFfbm90aWZpY2F0aW9uX29pZF9jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgLyogWFhYOiByZXNldCB0byBkZWZhdWx0ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9JRCIpOworCisgICAgc25tcGRfcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoImRlbGl2ZXJCeU5vdGlmeUZyZXF1ZW5jeU9pZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhcnNlX3BlcmlvZGljX3RpbWVfb2lkX2NvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAvKiBYWFg6IHJlc2V0IHRvIGRlZmF1bHQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT0lEIik7CisKKyAgICBzbm1wZF9yZWdpc3Rlcl9jb25maWdfaGFuZGxlcigiZGVsaXZlckJ5Tm90aWZ5TWVzc2FnZU51bWJlck9pZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhcnNlX21lc3NhZ2VfbnVtYmVyX29pZF9jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgLyogWFhYOiByZXNldCB0byBkZWZhdWx0ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9JRCIpOworCisgICAgc25tcGRfcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoImRlbGl2ZXJCeU5vdGlmeU1heE1lc3NhZ2VOdW1iZXJPaWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwYXJzZV9tYXhfbWVzc2FnZV9udW1iZXJfb2lkX2NvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAvKiBYWFg6IHJlc2V0IHRvIGRlZmF1bHQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT0lEIik7CisKKyAgICAvKiBjcmVhdGUgdGhlIGNvbnRhaW5lciB0byBzdG9yZSB0aGUgY29uZmlnIG9iamVjdHMqLworICAgIGRlbGl2ZXJfY29udGFpbmVyID0gbmV0c25tcF9jb250YWluZXJfZmluZCgiZGVsaXZlckJ5Tm90aWZ5OmZpZm8iKTsKKyAgICBpZiAoTlVMTCA9PSBkZWxpdmVyX2NvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiZGVsaXZlckJ5Tm90aWZ5OiBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBvdXIgZGF0YSBjb250YWluZXJcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGRlbGl2ZXJfY29udGFpbmVyLT5jb250YWluZXJfbmFtZSA9IHN0cmR1cCgiZGVsaXZlckJ5Tm90aWZ5Iik7CisgICAgZGVsaXZlcl9jb250YWluZXItPmNvbXBhcmUgPSAobmV0c25tcF9jb250YWluZXJfY29tcGFyZSAqKSBfZGVsaXZlcl9jb21wYXJlOworCisgICAgLyogc2V0IHRoZSBkZWZhdWx0cyAqLworICAgIGRlZmF1bHRfbWF4X3NpemUgPSBERUZBVUxUX01BWF9ERUxJVkVSX1NJWkU7CisKKyAgICBhbGFybV9yZWcgPSAwOworfQorCit2b2lkCitfcGFyc2VfY29uZmlnX29pZChjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSwKKyAgICAgICAgICAgICAgICAgIG9pZCAqb2lkX3N0b3JlLCBzaXplX3QgKm9pZF9zdG9yZV9sZW4pIHsKKyAgICBzaXplX3QgdG1wX2xlbiA9IE1BWF9PSURfTEVOOworICAgIC8qIHBhcnNlIHRoZSBPSUQgZ2l2ZW4gKi8KKworICAgIGlmICghc25tcF9wYXJzZV9vaWQobGluZSwgb2lkX3N0b3JlLCAmdG1wX2xlbikpIHsKKyAgICAgICAgY2hhciBidWZbU1BSSU5UX01BWF9MRU5dOworICAgICAgICBzbnByaW50ZihidWYsIFNQUklOVF9NQVhfTEVOLTEsICJ1bmtub3duICVzIE9JRDogJXMiLCB0b2tlbiwgbGluZSk7CisgICAgICAgIGNvbmZpZ19wZXJyb3IoYnVmKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgICpvaWRfc3RvcmVfbGVuID0gdG1wX2xlbjsKK30KKwordm9pZAorcGFyc2VfZGF0YV9ub3RpZmljYXRpb25fb2lkX2NvbmZpZyhjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSkgeworICAgIF9wYXJzZV9jb25maWdfb2lkKHRva2VuLCBsaW5lLAorICAgICAgICAgICAgICAgICAgICAgIGRhdGFfbm90aWZpY2F0aW9uX29pZCwgJmRhdGFfbm90aWZpY2F0aW9uX29pZF9sZW4pOworfQorCit2b2lkCitwYXJzZV9wZXJpb2RpY190aW1lX29pZF9jb25maWcoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmxpbmUpIHsKKyAgICBfcGFyc2VfY29uZmlnX29pZCh0b2tlbiwgbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3BlcmlvZGljX3RpbWVfb2lkLCAmbmV0c25tcF9wZXJpb2RpY190aW1lX29pZF9sZW4pOworfQorCit2b2lkCitwYXJzZV9tZXNzYWdlX251bWJlcl9vaWRfY29uZmlnKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpsaW5lKSB7CisgICAgX3BhcnNlX2NvbmZpZ19vaWQodG9rZW4sIGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9tZXNzYWdlX251bWJlcl9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgJm5ldHNubXBfbWVzc2FnZV9udW1iZXJfb2lkX2xlbik7Cit9CisKK3ZvaWQKK3BhcnNlX21heF9tZXNzYWdlX251bWJlcl9vaWRfY29uZmlnKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpsaW5lKSB7CisgICAgX3BhcnNlX2NvbmZpZ19vaWQodG9rZW4sIGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9tYXhfbWVzc2FnZV9udW1iZXJfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICZuZXRzbm1wX21heF9tZXNzYWdlX251bWJlcl9vaWRfbGVuKTsKK30KKwordm9pZAorcGFyc2VfZGVsaXZlcl9jb25maWcoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmxpbmUpIHsKKyAgICBjb25zdCBjaGFyICpjcCA9IGxpbmU7CisgICAgY2hhciBidWZbU1BSSU5UX01BWF9MRU5dOworICAgIHNpemVfdCBidWZfbGVuID0gU1BSSU5UX01BWF9MRU47CisgICAgaW50IG1heF9zaXplID0gREVGQVVMVF9NQVhfREVMSVZFUl9TSVpFOworICAgIGludCBmcmVxdWVuY3k7CisgICAgb2lkIHRhcmdldF9vaWRbTUFYX09JRF9MRU5dOworICAgIHNpemVfdCB0YXJnZXRfb2lkX2xlbiA9IE1BWF9PSURfTEVOOworICAgIGRlbGl2ZXJfYnlfbm90aWZ5ICpuZXdfbm90aWZ5ID0gTlVMTDsKKyAgICBpbnQgZmxhZ3MgPSAwOworCisgICAgd2hpbGUoY3AgJiYgKmNwID09ICctJykgeworICAgICAgICBzd2l0Y2ggKCooY3ArMSkpIHsKKyAgICAgICAgY2FzZSAncyc6CisgICAgICAgICAgICBjcCA9IHNraXBfdG9rZW5fY29uc3QoY3ApOworICAgICAgICAgICAgaWYgKCFjcCkgeworICAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIm5vIGFyZ3VtZW50IGdpdmVuIHRvIC1zIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWF4X3NpemUgPSBhdG9pKGNwKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgJ3AnOgorICAgICAgICAgICAgZmxhZ3MgPSBmbGFncyB8IE5FVFNOTVBfREVMSVZFUl9OT19QRVJJT0RfT0lEOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAnbSc6CisgICAgICAgICAgICBmbGFncyA9IGZsYWdzIHwgTkVUU05NUF9ERUxJVkVSX05PX01TR19DT1VOVFM7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29uZmlnX3BlcnJvcigidW5rbm93biBmbGFnIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY3AgPSBza2lwX3Rva2VuX2NvbnN0KGNwKTsKKyAgICB9CisKKyAgICBpZiAoIWNwKSB7CisgICAgICAgIGNvbmZpZ19wZXJyb3IoIm5vIGZyZXF1ZW5jeSBnaXZlbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNvcHlfbndvcmQoY3AsIGJ1ZiwgYnVmX2xlbik7CisgICAgZnJlcXVlbmN5ID0gbmV0c25tcF9zdHJpbmdfdGltZV90b19zZWNzKGJ1Zik7CisgICAgY3AgPSBza2lwX3Rva2VuX2NvbnN0KGNwKTsKKworICAgIGlmIChmcmVxdWVuY3kgPD0gMCkgeworICAgICAgICBjb25maWdfcGVycm9yKCJpbGxlZ2FsIGZyZXF1ZW5jeSBnaXZlbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFjcCkgeworICAgICAgICBjb25maWdfcGVycm9yKCJubyBPSUQgZ2l2ZW4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qIHBhcnNlIHRoZSBPSUQgZ2l2ZW4gKi8KKyAgICBpZiAoIXNubXBfcGFyc2Vfb2lkKGNwLCB0YXJnZXRfb2lkLCAmdGFyZ2V0X29pZF9sZW4pKSB7CisgICAgICAgIGNvbmZpZ19wZXJyb3IoInVua25vd24gZGVsaXZlckJ5Tm90aWZ5IE9JRCIpOworICAgICAgICBERUJVR01TR1RMKCgiZGVsaXZlckJ5Tm90aWZ5IiwgIlRoZSBPSUQgd2l0aCB0aGUgcHJvYmxlbTogJXNcbiIsIGNwKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKiBzZXQgdXAgdGhlIG9iamVjdCB0byBzdG9yZSBhbGwgdGhlIGRhdGEgKi8KKyAgICBuZXdfbm90aWZ5ID0gU05NUF9NQUxMT0NfVFlQRURFRihkZWxpdmVyX2J5X25vdGlmeSk7CisgICAgbmV3X25vdGlmeS0+ZnJlcXVlbmN5ID0gZnJlcXVlbmN5OworICAgIG5ld19ub3RpZnktPm1heF9wYWNrZXRfc2l6ZSA9IG1heF9zaXplOworICAgIG5ld19ub3RpZnktPmxhc3RfcnVuID0gdGltZShOVUxMKTsKKyAgICBuZXdfbm90aWZ5LT5uZXh0X3J1biA9IG5ld19ub3RpZnktPmxhc3RfcnVuICsgZnJlcXVlbmN5OworICAgIG5ld19ub3RpZnktPmZsYWdzID0gZmxhZ3M7CisKKyAgICBuZXdfbm90aWZ5LT50YXJnZXQgPSBtYWxsb2ModGFyZ2V0X29pZF9sZW4gKiBzaXplb2Yob2lkKSk7CisgICAgbmV3X25vdGlmeS0+dGFyZ2V0X2xlbiA9IHRhcmdldF9vaWRfbGVuOworICAgIG1lbWNweShuZXdfbm90aWZ5LT50YXJnZXQsIHRhcmdldF9vaWQsIHRhcmdldF9vaWRfbGVuKnNpemVvZihvaWQpKTsKKworICAgIC8qIFhYWDogbmVlZCB0byBkbyB0aGUgd2hvbGUgY29udGFpbmVyICovCisgICAgc25tcF9hbGFybV9yZWdpc3RlcihjYWxjdWxhdGVfdGltZV91bnRpbF9uZXh0X3J1bihuZXdfbm90aWZ5LCBOVUxMKSwgMCwgCisgICAgICAgICAgICAgICAgICAgICAgICAmZGVsaXZlcl9leGVjdXRlLCBOVUxMKTsKKworICAgIC8qIGFkZCBpdCB0byB0aGUgY29udGFpbmVyICovCisgICAgQ09OVEFJTkVSX0lOU0VSVChkZWxpdmVyX2NvbnRhaW5lciwgbmV3X25vdGlmeSk7CisgICAgX3NjaGVkdWxlX25leHRfZXhlY3V0ZV90aW1lKCk7Cit9CisKK3ZvaWQKK3BhcnNlX2RlbGl2ZXJfbWF4c2l6ZV9jb25maWcoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmxpbmUpIHsKKyAgICBkZWZhdWx0X21heF9zaXplID0gYXRvaShsaW5lKTsKK30KKworc3RhdGljIHZvaWQKK19mcmVlX2RlbGl2ZXJfb2JqKGRlbGl2ZXJfYnlfbm90aWZ5ICpvYmosIHZvaWQgKmNvbnRleHQpIHsKKyAgICBuZXRzbm1wX2Fzc2VydF9vcl9yZXR1cm4ob2JqICE9IE5VTEwsICk7CisgICAgU05NUF9GUkVFKG9iai0+dGFyZ2V0KTsKKyAgICBTTk1QX0ZSRUUob2JqKTsKK30KKwordm9pZAorZnJlZV9kZWxpdmVyX2NvbmZpZyh2b2lkKSB7CisgICAgZGVmYXVsdF9tYXhfc2l6ZSA9IERFRkFVTFRfTUFYX0RFTElWRVJfU0laRTsKKyAgICBDT05UQUlORVJfQ0xFQVIoZGVsaXZlcl9jb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqKSBfZnJlZV9kZWxpdmVyX29iaiwgTlVMTCk7CisgICAgaWYgKGFsYXJtX3JlZykgeworICAgICAgICBzbm1wX2FsYXJtX3VucmVnaXN0ZXIoYWxhcm1fcmVnKTsKKyAgICAgICAgYWxhcm1fcmVnID0gMDsKKyAgICB9Cit9CisKK3ZvaWQKK2RlbGl2ZXJfZXhlY3V0ZSh1bnNpZ25lZCBpbnQgY2xpZW50cmVnLCB2b2lkICpjbGllbnRhcmcpIHsKKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcnMsICp3YWxrZXIsICpkZWxpdmVyX25vdGlmaWNhdGlvbiwgKnZhcnRtcDsKKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnJlYWR5X2Zvcl9kZWxpdmVyeVtNQVhfTUVTU0FHRV9DT1VOVF07CisgICAgbmV0c25tcF9zZXNzaW9uICpzZXNzOworICAgIGludCByYywgaTsKKyAgICBkZWxpdmVyX2J5X25vdGlmeSAqb2JqOworICAgIG5ldHNubXBfaXRlcmF0b3IgKml0ZXJhdG9yOworICAgIHRpbWVfdCAgICAgICAgICAgIG5vdyA9IHRpbWUoTlVMTCk7CisgICAgdV9sb25nICAgICAgICAgICAgbWVzc2FnZV9jb3VudCwgbWF4X21lc3NhZ2VfY291bnQsIHRtcF9sb25nOworICAgIHVfbG9uZyAgICAgICAgICAgKm1heF9tZXNzYWdlX2NvdW50X3B0cnNbTUFYX01FU1NBR0VfQ09VTlRdOworICAgIHNpemVfdCAgICAgICAgICAgIGVzdGltYXRlZF9wa3Rfc2l6ZTsKKworICAgIERFQlVHTVNHVEwoKCJkZWxpdmVyQnlOb3RpZnkiLCAiU3RhcnRpbmcgdGhlIGV4ZWN1dGUgcm91dGluZVxuIikpOworCisgICAgLyogWFhYOiBuZWVkIHRvIGRvIHRoZSB3aG9sZSBjb250YWluZXIgKi8KKyAgICBpdGVyYXRvciA9IENPTlRBSU5FUl9JVEVSQVRPUihkZWxpdmVyX2NvbnRhaW5lcik7CisgICAgbmV0c25tcF9hc3NlcnRfb3JfcmV0dXJuKGl0ZXJhdG9yICE9IE5VTEwsKTsKKworICAgIHNlc3MgPSBuZXRzbm1wX3F1ZXJ5X2dldF9kZWZhdWx0X3Nlc3Npb24oKTsKKworICAgIGZvcihvYmogPSBJVEVSQVRPUl9GSVJTVChpdGVyYXRvcik7IG9iajsKKyAgICAgICAgb2JqID0gSVRFUkFUT1JfTkVYVChpdGVyYXRvcikpIHsKKworICAgICAgICAvKiBjaGVjayBpZiB3ZSBuZWVkIHRvIHJ1biB0aGlzIG9uZSB5ZXQgKi8KKyAgICAgICAgaWYgKG9iai0+bmV4dF9ydW4gPiBub3cpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBtYXhfbWVzc2FnZV9jb3VudCA9IDE7CisgICAgICAgIG1lc3NhZ2VfY291bnQgPSAwOworCisgICAgICAgIC8qIGZpbGwgdGhlIHZhcmJpbmQgbGlzdCB3aXRoIHRoZSB0YXJnZXQgb2JqZWN0ICovCisgICAgICAgIHZhcnMgPSBTTk1QX01BTExPQ19UWVBFREVGKCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKTsKKyAgICAgICAgc25tcF9zZXRfdmFyX29iamlkKCB2YXJzLCBvYmotPnRhcmdldCwgb2JqLT50YXJnZXRfbGVuICk7CisgICAgICAgIHZhcnMtPnR5cGUgPSBBU05fTlVMTDsKKworICAgICAgICAvKiB3YWxrIHRoZSBPSUQgdHJlZSBmb3IgdGhlIGRhdGEgKi8KKyAgICAgICAgcmMgPSBuZXRzbm1wX3F1ZXJ5X3dhbGsodmFycywgc2Vzcyk7CisgICAgICAgIGlmIChyYyAhPSBTTk1QX0VSUl9OT0VSUk9SKSB7CisgICAgICAgICAgICAvKiBYWFg6IGRpc2FibGU/IGFuZCByZXNldCB0aGUgbmV4dCBxdWVyeSB0aW1lIHBvaW50ISAqLworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImRlbGl2ZXJCeU5vdGlmeTogZmFpbGVkIHRvIGlzc3VlIHRoZSBxdWVyeSIpOworICAgICAgICAgICAgSVRFUkFUT1JfUkVMRUFTRShpdGVyYXRvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB3YWxrZXIgPSB2YXJzOworCisgICAgICAgIHdoaWxlICh3YWxrZXIpIHsKKworICAgICAgICAgICAgLyogU2V0IHVwIHRoZSBub3RpZmljYXRpb24gaXRzZWxmICovCisgICAgICAgICAgICBkZWxpdmVyX25vdGlmaWNhdGlvbiA9IE5VTEw7CisgICAgICAgICAgICBlc3RpbWF0ZWRfcGt0X3NpemUgPSBCQVNFX1BBQ0tFVF9TSVpFOworCisgICAgICAgICAgICAvKiBhZGQgaW4gdGhlIG5vdGlmaWNhdGlvbiB0eXBlICovCisgICAgICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZkZWxpdmVyX25vdGlmaWNhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqaWRfc25tcHRyYXAsIE9JRF9MRU5HVEgob2JqaWRfc25tcHRyYXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU05fT0JKRUNUX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX25vdGlmaWNhdGlvbl9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfbm90aWZpY2F0aW9uX29pZF9sZW4gKiBzaXplb2Yob2lkKSk7CisgICAgICAgICAgICBlc3RpbWF0ZWRfcGt0X3NpemUgKz0gRVNUSU1BVEVfVkFSX1NJWkUoZGVsaXZlcl9ub3RpZmljYXRpb24pOworCisgICAgICAgICAgICAvKiBhZGQgaW4gdGhlIGN1cnJlbnQgbWVzc2FnZSBudW1iZXIgaW4gdGhpcyBzZXF1ZW5jZSAqLworICAgICAgICAgICAgaWYgKCEob2JqLT5mbGFncyAmIE5FVFNOTVBfREVMSVZFUl9OT19QRVJJT0RfT0lEKSkgeworICAgICAgICAgICAgICAgIHRtcF9sb25nID0gb2JqLT5mcmVxdWVuY3k7CisgICAgICAgICAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmZGVsaXZlcl9ub3RpZmljYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3BlcmlvZGljX3RpbWVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9wZXJpb2RpY190aW1lX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU05fVU5TSUdORUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3Qgdm9pZCAqKSAmdG1wX2xvbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodG1wX2xvbmcpKTsKKyAgICAgICAgICAgICAgICBlc3RpbWF0ZWRfcGt0X3NpemUgKz0gRVNUSU1BVEVfVkFSX1NJWkUoZGVsaXZlcl9ub3RpZmljYXRpb24pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBhZGQgaW4gdGhlIGN1cnJlbnQgbWVzc2FnZSBudW1iZXIgaW4gdGhpcyBzZXF1ZW5jZSAqLworICAgICAgICAgICAgbWVzc2FnZV9jb3VudCsrOworICAgICAgICAgICAgaWYgKG1lc3NhZ2VfY291bnQgPiBNQVhfTUVTU0FHRV9DT1VOVCkgeworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkZWxpdmVyeSBjb25zdHJ1Y3QgZ3JldyB0b28gbGFyZ2UuLi4gIGdpdmluZyB1cFxuIik7CisgICAgICAgICAgICAgICAgLyogWFhYOiBkaXNhYmxlIGl0ICovCisgICAgICAgICAgICAgICAgLyogWFhYOiBzZW5kIGEgbm90aWZpY2F0aW9uIGFib3V0IGl0PyAqLworICAgICAgICAgICAgICAgIElURVJBVE9SX1JFTEVBU0UoaXRlcmF0b3IpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogc3RvcmUgdGhpcyBmb3IgbGF0ZXIgdXBkYXRpbmcgYW5kIHNlbmRpbmcgKi8KKyAgICAgICAgICAgIHJlYWR5X2Zvcl9kZWxpdmVyeVttZXNzYWdlX2NvdW50LTFdID0gZGVsaXZlcl9ub3RpZmljYXRpb247CisKKyAgICAgICAgICAgIGlmICghKG9iai0+ZmxhZ3MgJiBORVRTTk1QX0RFTElWRVJfTk9fTVNHX0NPVU5UUykpIHsKKyAgICAgICAgICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZkZWxpdmVyX25vdGlmaWNhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbWVzc2FnZV9udW1iZXJfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9tZXNzYWdlX251bWJlcl9vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX1VOU0lHTkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHZvaWQgKikgJm1lc3NhZ2VfY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobWVzc2FnZV9jb3VudCkpOworICAgICAgICAgICAgICAgIGVzdGltYXRlZF9wa3Rfc2l6ZSArPSBFU1RJTUFURV9WQVJfU0laRShkZWxpdmVyX25vdGlmaWNhdGlvbik7CisKKyAgICAgICAgICAgICAgICAvKiBhZGQgaW4gdGhlIG1heCBtZXNzYWdlIG51bWJlciBjb3VudCBmb3IgdGhpcyBzZXF1ZW5jZSAqLworICAgICAgICAgICAgICAgIHZhcnRtcCA9IHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJmRlbGl2ZXJfbm90aWZpY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9tYXhfbWVzc2FnZV9udW1iZXJfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9tYXhfbWVzc2FnZV9udW1iZXJfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9VTlNJR05FRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB2b2lkICopICZtYXhfbWVzc2FnZV9jb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihtYXhfbWVzc2FnZV9jb3VudCkpOworICAgICAgICAgICAgICAgIGVzdGltYXRlZF9wa3Rfc2l6ZSArPSBFU1RJTUFURV9WQVJfU0laRShkZWxpdmVyX25vdGlmaWNhdGlvbik7CisKKyAgICAgICAgICAgICAgICAvKiB3ZSdsbCBuZWVkIHRvIHVwZGF0ZSB0aGlzIGNvdW50ZXIgbGF0ZXIgKi8KKyAgICAgICAgICAgICAgICBtYXhfbWVzc2FnZV9jb3VudF9wdHJzW21lc3NhZ2VfY291bnQtMV0gPQorICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhcnRtcC0+dmFsLmludGVnZXI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8qIGp1c3QgdG8gYmUgc3VyZSAqLworICAgICAgICAgICAgICAgIG1heF9tZXNzYWdlX2NvdW50X3B0cnNbbWVzc2FnZV9jb3VudC0xXSA9IE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8qIGNvcHkgaW4gdGhlIGNvbGxlY3RlZCBkYXRhICovCisgICAgICAgICAgICB3aGlsZSh3YWxrZXIpIHsKKyAgICAgICAgICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZkZWxpdmVyX25vdGlmaWNhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhbGtlci0+bmFtZSwgd2Fsa2VyLT5uYW1lX2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhbGtlci0+dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhbGtlci0+dmFsLnN0cmluZywgd2Fsa2VyLT52YWxfbGVuKTsKKworICAgICAgICAgICAgICAgIC8qIDggYnl0ZSBwYWRkaW5nIGZvciBBU04gZW5jb2RpbmdzIGFuIGEgZmV3IGV4dHJhIE9JRCBieXRlcyAqLworICAgICAgICAgICAgICAgIGVzdGltYXRlZF9wa3Rfc2l6ZSArPSBFU1RJTUFURV9WQVJfU0laRSh3YWxrZXIpOworCisgICAgICAgICAgICAgICAgd2Fsa2VyID0gd2Fsa2VyLT5uZXh0X3ZhcmlhYmxlOworCisgICAgICAgICAgICAgICAgLyogaWYgdGhlIGN1cnJlbnQgc2l6ZSBQTFVTIHRoZSBuZXh0IG9uZSAod2hpY2ggaXMgbm93CisgICAgICAgICAgICAgICAgICAgaW4gJ3dhbGtlcicpIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGltZXQgdGhlbiB3ZSBzdG9wIGhlcmUgKi8KKyAgICAgICAgICAgICAgICBpZiAob2JqLT5tYXhfcGFja2V0X3NpemUgPiAwICYmCisgICAgICAgICAgICAgICAgICAgIGVzdGltYXRlZF9wa3Rfc2l6ZSArCisgICAgICAgICAgICAgICAgICAgIEVTVElNQVRFX1ZBUl9TSVpFKHdhbGtlcikgPj0KKyAgICAgICAgICAgICAgICAgICAgb2JqLT5tYXhfcGFja2V0X3NpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBzZW5kIG91dCB0aGUgbm90aWZpY2F0aW9uICovCisgICAgICAgICAgICBzZW5kX3YydHJhcChkZWxpdmVyX25vdGlmaWNhdGlvbik7CisgICAgICAgIH0KKworICAgICAgICBmb3IoaSA9IDA7IGkgPCBtZXNzYWdlX2NvdW50OyBpKyspIHsKKyAgICAgICAgICAgIC8qIHVwZGF0ZSB0aGUgbWF4IGNvdW50IHBvaW50ZXIgKi8KKyAgICAgICAgICAgIGlmIChtYXhfbWVzc2FnZV9jb3VudF9wdHJzW2ldKQorICAgICAgICAgICAgICAgICoobWF4X21lc3NhZ2VfY291bnRfcHRyc1tpXSkgPSBtZXNzYWdlX2NvdW50OworICAgICAgICAgICAgCisgICAgICAgICAgICBzZW5kX3YydHJhcChyZWFkeV9mb3JfZGVsaXZlcnlbaV0pOworICAgICAgICAgICAgc25tcF9mcmVlX3ZhcmJpbmQocmVhZHlfZm9yX2RlbGl2ZXJ5W2ldKTsKKyAgICAgICAgfQorCisgICAgICAgIHNubXBfZnJlZV92YXJiaW5kKHZhcnMpOworCisgICAgICAgIC8qIHJlY29yZCB0aGlzIGFzIHRoZSB0aW1lIHByb2Nlc3NlZCAqLworICAgICAgICAvKiBYWFg6IHRoaXMgbWF5IGNyZWVwIGJ5IGEgZmV3IHNlY29uZHMgd2hlbiBwcm9jZXNzaW5nIGFuZCBtYXliZSB3ZSB3YW50CisgICAgICAgICAgIHRvIGRvIHRoZSB0aW1lIHN0YW1wIGF0IHRoZSBiZWdpbm5pbmc/ICovCisgICAgICAgIG9iai0+bGFzdF9ydW4gPSB0aW1lKE5VTEwpOworICAgIH0KKyAgICBJVEVSQVRPUl9SRUxFQVNFKGl0ZXJhdG9yKTsKKworICAgIC8qIGNhbGN1bGF0ZSB0aGUgbmV4dCB0aW1lIHRvIHNsZWVwIGZvciAqLworICAgIF9zY2hlZHVsZV9uZXh0X2V4ZWN1dGVfdGltZSgpOworfQorCitpbnQKK2NhbGN1bGF0ZV90aW1lX3VudGlsX25leHRfcnVuKGRlbGl2ZXJfYnlfbm90aWZ5ICppdCwgdGltZV90ICpub3cpIHsKKyAgICB0aW1lX3QgICAgICAgICAgbG9jYWxfbm93OworCisgICAgLyogaWYgd2Ugd2VyZW4ndCBwYXNzZWQgYSB2YWxpZCB0aW1lLCBmYWtlIGl0ICovCisgICAgaWYgKE5VTEwgPT0gbm93KSB7CisgICAgICAgIG5vdyA9ICZsb2NhbF9ub3c7CisgICAgICAgIHRpbWUoJmxvY2FsX25vdyk7CisgICAgfQorCisgICAgbmV0c25tcF9hc3NlcnRfb3JfcmV0dXJuKGl0LT5sYXN0X3J1biAhPSAwLCAtMSk7CisKKyAgICAvKiBzZXQgdGhlIHRpbWVzdGFtcCBmb3IgdGhlIG5leHQgcnVuICovCisgICAgaXQtPm5leHRfcnVuID0gaXQtPmxhc3RfcnVuICsgaXQtPmZyZXF1ZW5jeTsKKworICAgIC8qIGhvdyBsb25nIHVudGlsIHRoZSBuZXh0IHJ1bj8gKi8KKyAgICByZXR1cm4gaXQtPm5leHRfcnVuIC0gKm5vdzsKK30KKworc3RhdGljIHZvaWQKK19zY2hlZHVsZV9uZXh0X2V4ZWN1dGVfdGltZSh2b2lkKSB7CisgICAgdGltZV90ICAgICAgICAgICAgIGxvY2FsX25vdyA9IHRpbWUoTlVMTCk7CisgICAgaW50ICAgICAgICAgICAgICAgIHNsZWVwX2ZvciA9IElOVF9NQVg7CisgICAgaW50ICAgICAgICAgICAgICAgIG5leHRfdGltZTsKKyAgICBuZXRzbm1wX2l0ZXJhdG9yICAqaXRlcmF0b3I7CisgICAgZGVsaXZlcl9ieV9ub3RpZnkgKm9iajsKKworICAgIERFQlVHTVNHVEwoKCJkZWxpdmVyQnlOb3RpZnkiLCAiQ2FsY3VsYXRpbmcgc2NoZWR1bGluZyBuZWVkZWRcbiIpKTsKKworICAgIGlmIChhbGFybV9yZWcpIHsKKyAgICAgICAgc25tcF9hbGFybV91bnJlZ2lzdGVyKGFsYXJtX3JlZyk7CisgICAgICAgIGFsYXJtX3JlZyA9IDA7CisgICAgfQorCisgICAgaXRlcmF0b3IgPSBDT05UQUlORVJfSVRFUkFUT1IoZGVsaXZlcl9jb250YWluZXIpOworICAgIGlmIChOVUxMID09IGl0ZXJhdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3Iob2JqID0gSVRFUkFUT1JfRklSU1QoaXRlcmF0b3IpOyBvYmo7CisgICAgICAgIG9iaiA9IElURVJBVE9SX05FWFQoaXRlcmF0b3IpKSB7CisgICAgICAgIG5leHRfdGltZSA9IGNhbGN1bGF0ZV90aW1lX3VudGlsX25leHRfcnVuKG9iaiwgJmxvY2FsX25vdyk7CisgICAgICAgIERFQlVHTVNHVEwoKCJkZWxpdmVyQnlOb3RpZnkiLCAiICBvYmo6ICVkIChsYXN0PSVkLCBuZXh0X3J1bj0lZClcbiIsIG5leHRfdGltZSwgb2JqLT5sYXN0X3J1biwgb2JqLT5uZXh0X3J1bikpOworICAgICAgICBpZiAobmV4dF90aW1lIDwgc2xlZXBfZm9yKQorICAgICAgICAgICAgc2xlZXBfZm9yID0gbmV4dF90aW1lOworICAgIH0KKworICAgIGlmIChzbGVlcF9mb3IgIT0gSU5UX01BWCkgeworICAgICAgICBpZiAoc2xlZXBfZm9yIDwgMSkKKyAgICAgICAgICAgIHNsZWVwX2ZvciA9IDE7IC8qIGdpdmUgYXQgbGVhc3QgYSBzbWFsbCBwYXVzZSAqLworICAgICAgICBERUJVR01TR1RMKCgiZGVsaXZlckJ5Tm90aWZ5IiwgIk5leHQgZXhlY3V0aW9uIGluICVkIChtYXggPSAlZCkgc2Vjb25kc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgc2xlZXBfZm9yLCBJTlRfTUFYKSk7CisgICAgICAgIGFsYXJtX3JlZyA9IHNubXBfYWxhcm1fcmVnaXN0ZXIoc2xlZXBfZm9yLCAwLCAmZGVsaXZlcl9leGVjdXRlLCBOVUxMKTsKKyAgICB9CisKKyAgICBJVEVSQVRPUl9SRUxFQVNFKGl0ZXJhdG9yKTsKK30KKwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaCBiL2FnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjkyYzM2NgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmgKQEAgLTAsMCArMSw0MCBAQAorI2lmbmRlZiBERUxJVkVSQllOT1RJRllfSAorI2RlZmluZSBERUxJVkVSQllOT1RJRllfSCAxCisKKyNpZiBUSU1FX1dJVEhfU1lTX1RJTUUKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyMgaW5jbHVkZSA8dGltZS5oPgorI2Vsc2UKKyMgaWYgSEFWRV9TWVNfVElNRV9ICisjICBpbmNsdWRlIDxzeXMvdGltZS5oPgorIyBlbHNlCisjICBpbmNsdWRlIDx0aW1lLmg+CisjIGVuZGlmCisjZW5kaWYKKworY29uZmlnX2FkZF9taWIoTkVULVNOTVAtUEVSSU9ESUMtTk9USUZZLU1JQikKKwordm9pZCBpbml0X2RlbGl2ZXJCeU5vdGlmeSh2b2lkKTsKKwordm9pZCBwYXJzZV9kZWxpdmVyX2NvbmZpZyhjb25zdCBjaGFyICosIGNoYXIgKik7Cit2b2lkIGZyZWVfZGVsaXZlcl9jb25maWcodm9pZCk7CisKK1NOTVBBbGFybUNhbGxiYWNrIGRlbGl2ZXJfZXhlY3V0ZTsKKworI2RlZmluZSBORVRTTk1QX0RFTElWRVJfTk9fUEVSSU9EX09JRCAgIDB4MDEKKyNkZWZpbmUgTkVUU05NUF9ERUxJVkVSX05PX01TR19DT1VOVFMgICAweDAyCisKKy8qIGltcGxlbWVudGF0aW9uIGRldGFpbHMgKi8KK3R5cGVkZWYgc3RydWN0IGRlbGl2ZXJfYnlfbm90aWZ5X3MgeworICAgaW50ICAgICBmcmVxdWVuY3k7CisgICBpbnQgICAgIGxhc3RfcnVuOworICAgaW50ICAgICBuZXh0X3J1bjsKKyAgIG9pZCAgICAqdGFyZ2V0OworICAgc2l6ZV90ICB0YXJnZXRfbGVuOworICAgaW50ICAgICBtYXhfcGFja2V0X3NpemU7CisgICBpbnQgICAgIGZsYWdzOworfSBkZWxpdmVyX2J5X25vdGlmeTsKKworaW50IGNhbGN1bGF0ZV90aW1lX3VudGlsX25leHRfcnVuKGRlbGl2ZXJfYnlfbm90aWZ5ICppdCwgdGltZV90ICpub3cpOworCisjZW5kaWYgLyogZGVsaXZlckJ5Tm90aWZ5X2ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi5oIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuLmgKaW5kZXggODBmM2UxZi4uNmI3Y2RkNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuLmgKQEAgLTMsNyArMywxMCBAQAogICovCiBjb25maWdfcmVxdWlyZShkaXNtYW4vZXZlbnQtbWliKQogY29uZmlnX3JlcXVpcmUoZGlzbWFuL2V4cHJlc3Npb24tbWliKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKKy8qIHRoZSBzY2hlZHVsZSBtaWIgaXMgYWxsIGFib3V0IHdyaXRpbmcgKFNFVHMpICovIAogY29uZmlnX3JlcXVpcmUoZGlzbWFuL3NjaGVkdWxlKQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIC8qIGNvbmZpZ19yZXF1aXJlKGRpc21hbi9uc2xvb2t1cC1taWIpICAgKi8KIC8qIGNvbmZpZ19yZXF1aXJlKGRpc21hbi9waW5nLW1pYikgICAgICAgKi8KIC8qIGNvbmZpZ19yZXF1aXJlKGRpc21hbi90cmFjZXJvdXRlLW1pYikgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmMKaW5kZXggMDUzNjBkMy4uYmM0ZmYwYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmMKQEAgLTQsMTIgKzQsMTcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZUV2ZW50LmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuaCIKICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlT2JqZWN0cy5oIgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoZGlzbWFuX2RlYnVnZ2luZywgbGlibmV0c25tcG1pYnMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobXRlZXZlbnQsIGxpYm5ldHNubXBtaWJzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG10ZWV2ZW50X3JlbW92ZWVudHJ5LCBtdGVldmVudCkKKwogbmV0c25tcF90ZGF0YSAqZXZlbnRfdGFibGVfZGF0YTsKIAogICAgIC8qCkBAIC0xMTksNiArMTI0LDcgQEAKICAgICAgKgogICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRElTTUFOX0RFQlVHR0lORwogdm9pZAogX210ZUV2ZW50X2R1bXAodm9pZCkKIHsKQEAgLTE0MCw3ICsxNDYsNyBAQAogICAgIH0KICAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50OmR1bXAiLCAiRXZlbnRUYWJsZSAlZCBlbnRyaWVzXG4iLCBpKSk7CiB9Ci0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RJU01BTl9ERUJVR0dJTkcgKi8KIAogLyoKICAqIENyZWF0ZSBhIG5ldyByb3cgaW4gdGhlIGV2ZW50IHRhYmxlIApAQCAtMTk2LDYgKzIwMiw3IEBACiB9CiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX01URUVWRU5UX1JFTU9WRUVOVFJZCiAvKgogICogUmVtb3ZlIGEgcm93IGZyb20gdGhlIGV2ZW50IHRhYmxlIAogICovCkBAIC0yMDgsOSArMjE1LDkgQEAKICAgICAgICAgcmV0dXJuOyAgICAgICAgICAgICAgICAgLyogTm90aGluZyB0byByZW1vdmUgKi8KICAgICBlbnRyeSA9IChzdHJ1Y3QgbXRlRXZlbnQgKikKICAgICAgICAgbmV0c25tcF90ZGF0YV9yZW1vdmVfYW5kX2RlbGV0ZV9yb3coZXZlbnRfdGFibGVfZGF0YSwgcm93KTsKLSAgICBpZiAoZW50cnkpCi0gICAgICAgIFNOTVBfRlJFRShlbnRyeSk7CisgICAgU05NUF9GUkVFKGVudHJ5KTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX01URUVWRU5UX1JFTU9WRUVOVFJZICovCiAKICAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgKgpAQCAtMjIyLDEwICsyMjksMTIgQEAKIF9tdGVFdmVudF9maXJlX25vdGlmeSggc3RydWN0IG10ZUV2ZW50ICAgICpldmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG10ZVRyaWdnZXIgICp0cmlnZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICBvaWQgKnN1ZmZpeCwgc2l6ZV90IHNmeF9sZW4gKTsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBpbnQKIF9tdGVFdmVudF9maXJlX3NldCggICAgc3RydWN0IG10ZUV2ZW50ICAgICpldmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG10ZVRyaWdnZXIgICp0cmlnZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICBvaWQgKnN1ZmZpeCwgc2l6ZV90IHNmeF9sZW4gKTsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogaW50CiBtdGVFdmVudF9maXJlKCBjaGFyICpvd25lciwgY2hhciAqZXZlbnQsICAgICAgLyogRXZlbnQgdG8gaW52b2tlICAgICovCkBAIC0yNjEsMTEgKzI3MCwxMyBAQAogICAgICAgICBfbXRlRXZlbnRfZmlyZV9ub3RpZnkoIGVudHJ5LCB0cmlnZ2VyLCBzdWZmaXgsIHNfbGVuICk7CiAgICAgICAgIGZpcmVkID0gMTsKICAgICB9CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGlmIChlbnRyeS0+bXRlRXZlbnRBY3Rpb25zICYgTVRFX0VWRU5UX1NFVCkgewogICAgICAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50OmZpcmUiLCAiRmlyaW5nIHNldCBldmVudFxuIikpOwogICAgICAgICBfbXRlRXZlbnRfZmlyZV9zZXQoIGVudHJ5LCB0cmlnZ2VyLCBzdWZmaXgsIHNfbGVuICk7CiAgICAgICAgIGZpcmVkID0gMTsKICAgICB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICBpZiAoIWZpcmVkKQogICAgICAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50OmZpcmUiLCAiTWF0Y2hlZCBldmVudCBpcyBlbXB0eVxuIikpOwpAQCAtNDM0LDYgKzQ0NSw3IEBACiB9CiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIGludAogX210ZUV2ZW50X2ZpcmVfc2V0KCBzdHJ1Y3QgbXRlRXZlbnQgICAqZW50cnksICAgICAgLyogVGhlIGV2ZW50IHRvIGZpcmUgKi8KICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG10ZVRyaWdnZXIgKnRyaWdnZXIsICAgIC8qIFRyaWdnZXIgdGhhdCBmaXJlZCAqLwpAQCAtNDc3LDQgKzQ4OSw0IEBACiAKICAgICAvKiBYWFggLSBOZWVkIHRvIGNoZWNrIHJlc3VsdCAqLwogfQotCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRDb25mLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRDb25mLmMKaW5kZXggNzJlM2FlMy4uMjQxOTJhNiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Q29uZi5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudENvbmYuYwpAQCAtNCw2ICs0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmg+CkBAIC0xMSw2ICsxMiw3IEBACiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZUV2ZW50LmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZUV2ZW50Q29uZi5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcXVlcnkpCiAKIC8qKiBJbml0aWFsaXplcyB0aGUgbXRlRXZlbnRzQ29uZiBtb2R1bGUgKi8KIHZvaWQKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jCmluZGV4IDkzNGExYzUuLjdkMmM5NGEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYwpAQCAtNywxMSArNywxOSBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlRXZlbnQuaCIKICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YSkKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90eXBlX2FuZF9tYXhfc2l6ZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX29pZCkKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKworc3RhdGljIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKIC8qIEluaXRpYWxpemVzIHRoZSBtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlIG1vZHVsZSAqLwogdm9pZApAQCAtMjAsNyArMjgsNiBAQAogICAgIHN0YXRpYyBvaWQgIG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGVfb2lkW10gICA9IHsgMSwgMywgNiwgMSwgMiwgMSwgODgsIDEsIDQsIDMgfTsKICAgICBzaXplX3QgICAgICBtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlX29pZF9sZW4gPSBPSURfTEVOR1RIKG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGVfb2lkKTsKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWc7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogICAgIC8qCiAgICAgICogRW5zdXJlIHRoZSAoY29tYmluZWQpIHRhYmxlIGNvbnRhaW5lciBpcyBhdmFpbGFibGUuLi4KQEAgLTMwLDExICszNywxOSBAQAogICAgIC8qCiAgICAgICogLi4uIHRoZW4gc2V0IHVwIHRoZSBNSUIgaW50ZXJmYWNlIHRvIHRoZSBtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlIHNsaWNlCiAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZV9oYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZV9vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUpOworI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZV9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZV9vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSk7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CiAgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGFibGVfaW5mbywKQEAgLTUyLDYgKzY3LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X3RhYmxlX2RhdGEpKTsKIH0KIAordm9pZAorc2h1dGRvd25fbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZSh2b2lkKQoreworICAgIGlmICh0YWJsZV9pbmZvKSB7CisJbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCXRhYmxlX2luZm8gPSBOVUxMOworICAgIH0KK30KIAogCiAvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUgdGFibGUgKi8KQEAgLTEwOSw2ICsxMzIsOCBAQAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCisKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIC8qCiAgICAgICAgICAqIFdyaXRlLXN1cHBvcnQKICAgICAgICAgICovCkBAIC0yMzUsNiArMjYwLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmgKaW5kZXggYmUyYmNjNi4uYWJkNjExMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5oCkBAIC05LDYgKzksNyBAQAogICogZnVuY3Rpb24gZGVjbGFyYXRpb25zIAogICovCiB2b2lkICAgICAgICAgICAgaW5pdF9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUodm9pZCk7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlX2hhbmRsZXI7CiAKIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuYwppbmRleCA5Nzc4M2MxLi5lZTY5NmYxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFNldFRhYmxlLmMKQEAgLTcsMTEgKzcsMjAgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZUV2ZW50LmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGEpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl9vaWQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90cnV0aHZhbHVlKQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogLyogSW5pdGlhbGl6ZXMgdGhlIG10ZUV2ZW50U2V0VGFibGUgbW9kdWxlICovCiB2b2lkCkBAIC0yMCw3ICsyOSw2IEBACiAgICAgc3RhdGljIG9pZCAgbXRlRXZlbnRTZXRUYWJsZV9vaWRbXSAgID0geyAxLCAzLCA2LCAxLCAyLCAxLCA4OCwgMSwgNCwgNCB9OwogICAgIHNpemVfdCAgICAgIG10ZUV2ZW50U2V0VGFibGVfb2lkX2xlbiA9IE9JRF9MRU5HVEgobXRlRXZlbnRTZXRUYWJsZV9vaWQpOwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZzsKLSAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogCiAgICAgLyoKICAgICAgKiBFbnN1cmUgdGhlIChjb21iaW5lZCkgdGFibGUgY29udGFpbmVyIGlzIGF2YWlsYWJsZS4uLgpAQCAtMzAsMTEgKzM4LDE5IEBACiAgICAgLyoKICAgICAgKiAuLi4gdGhlbiBzZXQgdXAgdGhlIE1JQiBpbnRlcmZhY2UgdG8gdGhlIG10ZUV2ZW50U2V0VGFibGUgc2xpY2UKICAgICAgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oIm10ZUV2ZW50U2V0VGFibGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudFNldFRhYmxlX2hhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50U2V0VGFibGVfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudFNldFRhYmxlX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSk7CisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oIm10ZUV2ZW50U2V0VGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudFNldFRhYmxlX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50U2V0VGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudFNldFRhYmxlX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKTsKICAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLApAQCAtNTIsNiArNjgsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRfdGFibGVfZGF0YSkpOwogfQogCit2b2lkCitzaHV0ZG93bl9tdGVFdmVudFNldFRhYmxlKHZvaWQpCit7CisgICAgaWYgKHRhYmxlX2luZm8pIHsKKwluZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisJdGFibGVfaW5mbyA9IE5VTEw7CisgICAgfQorfQorCiAKIC8qKiBoYW5kbGVzIHJlcXVlc3RzIGZvciB0aGUgbXRlRXZlbnRTZXRUYWJsZSB0YWJsZSAqLwogaW50CkBAIC0xMjMsNiArMTQ4LDcgQEAKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgLyoKICAgICAgICAgICogV3JpdGUtc3VwcG9ydAogICAgICAgICAgKi8KQEAgLTI3OCw2ICszMDQsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuaAppbmRleCBiOGNiMTI0Li43MWVjMDlhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFNldFRhYmxlLmgKQEAgLTksNiArOSw3IEBACiAgKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgCiAgKi8KIHZvaWQgICAgICAgICAgICBpbml0X210ZUV2ZW50U2V0VGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25fbXRlRXZlbnRTZXRUYWJsZSh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIG10ZUV2ZW50U2V0VGFibGVfaGFuZGxlcjsKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5jCmluZGV4IDJjMjFlNjcuLmM1YjUzNGUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYwpAQCAtNywxMiArNywyNCBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJ1dGlsaXRpZXMvaXF1ZXJ5LmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZUV2ZW50LmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXF1ZXJ5KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGEpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXF1ZXJ5X3BkdV9zZXNzaW9uKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShtdGVldmVudF9yZW1vdmVlbnRyeSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3RydXRodmFsdWUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YV9pbnNlcnRfcm93KQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogLyogSW5pdGlhbGl6ZXMgdGhlIG10ZUV2ZW50VGFibGUgbW9kdWxlICovCiB2b2lkCkBAIC0yMSw3ICszMyw2IEBACiAgICAgc3RhdGljIG9pZCAgbXRlRXZlbnRUYWJsZV9vaWRbXSAgID0geyAxLCAzLCA2LCAxLCAyLCAxLCA4OCwgMSwgNCwgMiB9OwogICAgIHNpemVfdCAgICAgIG10ZUV2ZW50VGFibGVfb2lkX2xlbiA9IE9JRF9MRU5HVEgobXRlRXZlbnRUYWJsZV9vaWQpOwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZzsKLSAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogCiAgICAgLyoKICAgICAgKiBFbnN1cmUgdGhlIChjb21iaW5lZCkgdGFibGUgY29udGFpbmVyIGlzIGF2YWlsYWJsZS4uLgpAQCAtMzEsMTEgKzQyLDE5IEBACiAgICAgLyoKICAgICAgKiAuLi4gdGhlbiBzZXQgdXAgdGhlIE1JQiBpbnRlcmZhY2UgdG8gdGhlIG10ZUV2ZW50VGFibGUgc2xpY2UKICAgICAgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oIm10ZUV2ZW50VGFibGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudFRhYmxlX2hhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50VGFibGVfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudFRhYmxlX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSk7CisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oIm10ZUV2ZW50VGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudFRhYmxlX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50VGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudFRhYmxlX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKTsKICAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLApAQCAtNTMsNiArNzIsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRfdGFibGVfZGF0YSkpOwogfQogCit2b2lkCitzaHV0ZG93bl9tdGVFdmVudFRhYmxlKHZvaWQpCit7CisgICAgaWYgKHRhYmxlX2luZm8pIHsKKwluZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisJdGFibGVfaW5mbyA9IE5VTEw7CisgICAgfQorfQogCiAvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIG10ZUV2ZW50VGFibGUgdGFibGUgKi8KIGludApAQCAtMTExLDYgKzEzOCw4IEBACiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKKworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgLyoKICAgICAgICAgICogV3JpdGUtc3VwcG9ydAogICAgICAgICAgKi8KQEAgLTMzOCw2ICszNjcsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogICAgIH0KICAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50Om1pYiIsICJUYWJsZSBoYW5kbGVyLCBkb25lXG4iKSk7CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuaAppbmRleCBhN2Q3NTYwLi5hZGMxYzMwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmgKQEAgLTksNiArOSw3IEBACiAgKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgCiAgKi8KIHZvaWQgICAgICAgICAgICBpbml0X210ZUV2ZW50VGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25fbXRlRXZlbnRUYWJsZSh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIG10ZUV2ZW50VGFibGVfaGFuZGxlcjsKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0cy5jCmluZGV4IDEyM2FmN2YuLmNmOTUwYzEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHMuYwpAQCAtMjM2LDggKzIzNiw3IEBACiAgICAgICAgIHJldHVybjsgICAgICAgICAgICAgICAgIC8qIE5vdGhpbmcgdG8gcmVtb3ZlICovCiAgICAgZW50cnkgPSAoc3RydWN0IG10ZU9iamVjdCAqKQogICAgICAgICBuZXRzbm1wX3RkYXRhX3JlbW92ZV9hbmRfZGVsZXRlX3JvdyhvYmplY3RzX3RhYmxlX2RhdGEsIHJvdyk7Ci0gICAgaWYgKGVudHJ5KQotICAgICAgICBTTk1QX0ZSRUUoZW50cnkpOworICAgIFNOTVBfRlJFRShlbnRyeSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5jCmluZGV4IDU4NDNmNTguLmY3ZjZlMDIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmMKQEAgLTcsMTEgKzcsMjEgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZU9iamVjdHMuaCIKICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX29pZCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3RydXRodmFsdWUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YV9pbnNlcnRfcm93KQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKKwogLyoqIEluaXRpYWxpemVzIHRoZSBtdGVPYmplY3RzVGFibGUgbW9kdWxlICovCiB2b2lkCiBpbml0X210ZU9iamVjdHNUYWJsZSh2b2lkKQpAQCAtMjAsNyArMzAsNiBAQAogICAgIHN0YXRpYyBvaWQgbXRlT2JqZWN0c1RhYmxlX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA4OCwgMSwgMywgMSB9OwogICAgIHNpemVfdCAgICAgbXRlT2JqZWN0c1RhYmxlX29pZF9sZW4gPSBPSURfTEVOR1RIKG10ZU9iamVjdHNUYWJsZV9vaWQpOwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZzsKLSAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogCiAgICAgLyoKICAgICAgKiBFbnN1cmUgdGhlIG9iamVjdCB0YWJsZSBjb250YWluZXIgaXMgYXZhaWxhYmxlLi4uCkBAIC0zMCwxMSArMzksMTkgQEAKICAgICAvKgogICAgICAqIC4uLiB0aGVuIHNldCB1cCB0aGUgTUlCIGludGVyZmFjZSB0byB0aGlzIHRhYmxlCiAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJtdGVPYmplY3RzVGFibGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVPYmplY3RzVGFibGVfaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlT2JqZWN0c1RhYmxlX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlT2JqZWN0c1RhYmxlX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSk7CisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oIm10ZU9iamVjdHNUYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZU9iamVjdHNUYWJsZV9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVPYmplY3RzVGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVPYmplY3RzVGFibGVfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIHRhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8pOwogICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKHRhYmxlX2luZm8sCkBAIC01MCw2ICs2NywxNSBAQAogICAgIG5ldHNubXBfdGRhdGFfcmVnaXN0ZXIocmVnLCBvYmplY3RzX3RhYmxlX2RhdGEsIHRhYmxlX2luZm8pOwogfQogCit2b2lkCitzaHV0ZG93bl9tdGVPYmplY3RzVGFibGUodm9pZCkKK3sKKyAgICBpZiAodGFibGVfaW5mbykgeworCW5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKKwl0YWJsZV9pbmZvID0gTlVMTDsKKyAgICB9Cit9CisKIAogLyoqIGhhbmRsZXMgcmVxdWVzdHMgZm9yIHRoZSBtdGVPYmplY3RzVGFibGUgdGFibGUgKi8KIGludApAQCAtMTA1LDYgKzEzMSw3IEBACiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIC8qCiAgICAgICAgICAqIFdyaXRlLXN1cHBvcnQKICAgICAgICAgICovCkBAIC0zMTQsNiArMzQxLDcgQEAKICAgICAgICAgc25tcF9zdG9yZV9uZWVkZWQoTlVMTCk7CiAKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLyAKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmggYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmgKaW5kZXggMTRiZmIyNi4uZjVjZDdiYyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuaApAQCAtOSw2ICs5LDcgQEAKICAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAKICAqLwogdm9pZCAgICAgICAgICAgIGluaXRfbXRlT2JqZWN0c1RhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX210ZU9iamVjdHNUYWJsZSh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIG10ZU9iamVjdHNUYWJsZV9oYW5kbGVyOwogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmMKaW5kZXggY2Y1MWVkYi4uNWEwZGNiYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5jCkBAIC00LDExICs0LDE2IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZUV2ZW50LmgiCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihkaXNtYW5fZGVidWdnaW5nLCBsaWJuZXRzbm1wbWlicykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihtdGV0cmlnZ2VyLCBsaWJuZXRzbm1wbWlicykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihtdGV0cmlnZ2VyX3JlbW92ZWVudHJ5LCBtdGV0cmlnZ2VyKQorCiBuZXRzbm1wX3RkYXRhICp0cmlnZ2VyX3RhYmxlX2RhdGE7CiAKIG9pZCAgICBfc3lzVXBUaW1lX2luc3RhbmNlW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDEsIDMsIDAgfTsKQEAgLTUzLDYgKzU4LDcgQEAKICAgICAgKgogICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRElTTUFOX0RFQlVHR0lORwogdm9pZAogX210ZVRyaWdnZXJfZHVtcCh2b2lkKQogewpAQCAtNzQsNyArODAsNyBAQAogICAgIH0KICAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50OmR1bXAiLCAiVHJpZ2dlclRhYmxlICVkIGVudHJpZXNcbiIsIGkpKTsKIH0KLQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRElTTUFOX0RFQlVHR0lORyAqLwogCiAvKgogICogQ3JlYXRlIGEgbmV3IHJvdyBpbiB0aGUgdHJpZ2dlciB0YWJsZSAKQEAgLTE0Miw2ICsxNDgsNyBAQAogICAgIHJldHVybiByb3c7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NVEVUUklHR0VSX1JFTU9WRUVOVFJZCiAvKgogICogUmVtb3ZlIGEgcm93IGZyb20gdGhlIHRyaWdnZXIgdGFibGUgCiAgKi8KQEAgLTE1OSw2ICsxNjYsNyBAQAogICAgICAgICBTTk1QX0ZSRUUoZW50cnkpOwogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX01URVRSSUdHRVJfUkVNT1ZFRU5UUlkgKi8KIAogICAgIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAqCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJCb29sZWFuVGFibGUuYwppbmRleCBhZDQ2OWQ3Li5lZDFlYzMwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMKQEAgLTcsMTEgKzcsMTkgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuaCIKICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YSkKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90eXBlX2FuZF9tYXhfc2l6ZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3RydXRodmFsdWUpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKK3N0YXRpYyBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogCiAvKiogSW5pdGlhbGl6ZXMgdGhlIG10ZVRyaWdnZXJCb29sZWFuVGFibGUgbW9kdWxlICovCiB2b2lkCkBAIC0yMCw3ICsyOCw2IEBACiAgICAgc3RhdGljIG9pZCBtdGVUQm9vbFRhYmxlX29pZFtdICAgID0geyAxLCAzLCA2LCAxLCAyLCAxLCA4OCwgMSwgMiwgNSB9OwogICAgIHNpemVfdCAgICAgbXRlVEJvb2xUYWJsZV9vaWRfbGVuICA9IE9JRF9MRU5HVEgobXRlVEJvb2xUYWJsZV9vaWQpOwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZzsKLSAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogCiAgICAgLyoKICAgICAgKiBFbnN1cmUgdGhlIChjb21iaW5lZCkgdGFibGUgY29udGFpbmVyIGlzIGF2YWlsYWJsZS4uLgpAQCAtMzAsMTEgKzM3LDE5IEBACiAgICAgLyoKICAgICAgKiAuLi4gdGhlbiBzZXQgdXAgdGhlIE1JQiBpbnRlcmZhY2UgdG8gdGhlIG10ZVRyaWdnZXJCb29sZWFuVGFibGUgc2xpY2UKICAgICAgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oIm10ZVRyaWdnZXJCb29sZWFuVGFibGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyQm9vbGVhblRhYmxlX2hhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRCb29sVGFibGVfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVUQm9vbFRhYmxlX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSk7CisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oIm10ZVRyaWdnZXJCb29sZWFuVGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyQm9vbGVhblRhYmxlX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRCb29sVGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVUQm9vbFRhYmxlX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSk7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CiAgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGFibGVfaW5mbywKQEAgLTUxLDYgKzY2LDE0IEBACiAgICAgREVCVUdNU0dUTCgoImRpc21hbjpldmVudDppbml0IiwgIlRyaWdnZXIgQm9vbCBUYWJsZVxuIikpOwogfQogCit2b2lkCitzaHV0ZG93bl9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlKHZvaWQpCit7CisgICAgaWYgKHRhYmxlX2luZm8pIHsKKwluZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisJdGFibGVfaW5mbyA9IE5VTEw7CisgICAgfQorfQogCiAvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIG10ZVRyaWdnZXJCb29sZWFuVGFibGUgdGFibGUgKi8KIGludApAQCAtMTI4LDYgKzE1MSw3IEBACiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIC8qCiAgICAgICAgICAqIFdyaXRlLXN1cHBvcnQKICAgICAgICAgICovCkBAIC0yODUsNiArMzA5LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJCb29sZWFuVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmgKaW5kZXggZDJkMmRjYi4uZjJkZGQ3NyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJCb29sZWFuVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5oCkBAIC05LDYgKzksNyBAQAogICogZnVuY3Rpb24gZGVjbGFyYXRpb25zIAogICovCiB2b2lkICAgICAgICAgICAgaW5pdF9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX210ZVRyaWdnZXJCb29sZWFuVGFibGUodm9pZCk7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBtdGVUcmlnZ2VyQm9vbGVhblRhYmxlX2hhbmRsZXI7CiAKIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckNvbmYuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQ29uZi5jCmluZGV4IDNjZTkxMDYuLmU3YmI2OWIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQ29uZi5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQ29uZi5jCkBAIC00LDYgKzQsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaD4KQEAgLTE0LDYgKzE1LDcgQEAKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGlxdWVyeSkKIAogLyoqIEluaXRpYWxpemVzIHRoZSBtdGVUcmlnZ2VyQ29uZiBtb2R1bGUgKi8KIHZvaWQKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJEZWx0YVRhYmxlLmMKaW5kZXggZTA5Mjk4Mi4uYzJjMmU4ZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJEZWx0YVRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJEZWx0YVRhYmxlLmMKQEAgLTcsMTEgKzcsMTcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuaCIKICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckRlbHRhVGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGEpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfb2lkKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHJ1dGh2YWx1ZSkKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogLyoqIEluaXRpYWxpemVzIHRoZSBtdGVUcmlnZ2VyRGVsdGFUYWJsZSBtb2R1bGUgKi8KIHZvaWQKQEAgLTIxLDYgKzI3LDcgQEAKICAgICBzaXplX3QgICAgICBtdGVURGVsdGFUYWJsZV9vaWRfbGVuID0gT0lEX0xFTkdUSChtdGVURGVsdGFUYWJsZV9vaWQpOwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZzsKICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOworICAgIGludCAgICAgICAgIHJjOwogCiAgICAgLyoKICAgICAgKiBFbnN1cmUgdGhlIChjb21iaW5lZCkgdGFibGUgY29udGFpbmVyIGlzIGF2YWlsYWJsZS4uLgpAQCAtMzAsMTEgKzM3LDE5IEBACiAgICAgLyoKICAgICAgKiAuLi4gdGhlbiBzZXQgdXAgdGhlIE1JQiBpbnRlcmZhY2UgdG8gdGhlIG10ZVRyaWdnZXJEZWx0YVRhYmxlIHNsaWNlCiAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJtdGVUcmlnZ2VyRGVsdGFUYWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJEZWx0YVRhYmxlX2hhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVREZWx0YVRhYmxlX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVERlbHRhVGFibGVfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFKTsKKyNlbHNlIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibXRlVHJpZ2dlckRlbHRhVGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyRGVsdGFUYWJsZV9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVURGVsdGFUYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVREZWx0YVRhYmxlX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKTsKICAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLApAQCAtNDcsNyArNjIsMTAgQEAKICAgICB0YWJsZV9pbmZvLT5tYXhfY29sdW1uID0gQ09MVU1OX01URVRSSUdHRVJERUxUQURJU0NPTlRJTlVJVFlJRFRZUEU7CiAKICAgICAvKiBSZWdpc3RlciB0aGlzIHVzaW5nIHRoZSAoY29tbW9uKSB0cmlnZ2VyX3RhYmxlX2RhdGEgY29udGFpbmVyICovCi0gICAgbmV0c25tcF90ZGF0YV9yZWdpc3RlcihyZWcsIHRyaWdnZXJfdGFibGVfZGF0YSwgdGFibGVfaW5mbyk7CisgICAgcmMgPSBuZXRzbm1wX3RkYXRhX3JlZ2lzdGVyKHJlZywgdHJpZ2dlcl90YWJsZV9kYXRhLCB0YWJsZV9pbmZvKTsKKyAgICBpZiAocmMgIT0gU05NUEVSUl9TVUNDRVNTKQorICAgICAgICByZXR1cm47CisgICAgbmV0c25tcF9oYW5kbGVyX293bnNfdGFibGVfaW5mbyhyZWctPmhhbmRsZXItPm5leHQpOwogICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXZlbnQ6aW5pdCIsICJUcmlnZ2VyIERlbHRhIFRhYmxlXG4iKSk7CiB9CiAKQEAgLTEwOSw2ICsxMjcsNyBAQAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAvKgogICAgICAgICAgKiBXcml0ZS1zdXBwb3J0CiAgICAgICAgICAqLwpAQCAtMjQ4LDYgKzI2Nyw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuYwppbmRleCAyNTAyNmVlLi4yMmI2ODNlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jCkBAIC03LDExICs3LDE4IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YSkKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90eXBlX2FuZF9tYXhfc2l6ZSkKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKworc3RhdGljIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKIC8qIEluaXRpYWxpemVzIHRoZSBtdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUgbW9kdWxlICovCiB2b2lkCkBAIC0yMCw3ICsyNyw3IEBACiAgICAgc3RhdGljIG9pZCBtdGVURXhpc3RUYWJsZV9vaWRbXSAgID0geyAxLCAzLCA2LCAxLCAyLCAxLCA4OCwgMSwgMiwgNCB9OwogICAgIHNpemVfdCAgICAgbXRlVEV4aXN0VGFibGVfb2lkX2xlbiA9IE9JRF9MRU5HVEgobXRlVEV4aXN0VGFibGVfb2lkKTsKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWc7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKKyAgICBpbnQgICAgICAgIHJjOwogCiAgICAgLyoKICAgICAgKiBFbnN1cmUgdGhlIChjb21iaW5lZCkgdGFibGUgY29udGFpbmVyIGlzIGF2YWlsYWJsZS4uLgpAQCAtMzAsMTEgKzM3LDE5IEBACiAgICAgLyoKICAgICAgKiAuLi4gdGhlbiBzZXQgdXAgdGhlIE1JQiBpbnRlcmZhY2UgdG8gdGhlIG10ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZSBzbGljZQogICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlX2hhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRFeGlzdFRhYmxlX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVEV4aXN0VGFibGVfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFKTsKKyNlbHNlIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRFeGlzdFRhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVEV4aXN0VGFibGVfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIHRhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8pOwogICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKHRhYmxlX2luZm8sCkBAIC00Nyw3ICs2MiwxMSBAQAogICAgIHRhYmxlX2luZm8tPm1heF9jb2x1bW4gPSBDT0xVTU5fTVRFVFJJR0dFUkVYSVNURU5DRUVWRU5UOwogCiAgICAgLyogUmVnaXN0ZXIgdGhpcyB1c2luZyB0aGUgKGNvbW1vbikgdHJpZ2dlcl90YWJsZV9kYXRhIGNvbnRhaW5lciAqLwotICAgIG5ldHNubXBfdGRhdGFfcmVnaXN0ZXIocmVnLCB0cmlnZ2VyX3RhYmxlX2RhdGEsIHRhYmxlX2luZm8pOworICAgIHJjID0gbmV0c25tcF90ZGF0YV9yZWdpc3RlcihyZWcsIHRyaWdnZXJfdGFibGVfZGF0YSwgdGFibGVfaW5mbyk7CisgICAgaWYgKHJjICE9IFNOTVBFUlJfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuOworCisgICAgbmV0c25tcF9oYW5kbGVyX293bnNfdGFibGVfaW5mbyhyZWctPmhhbmRsZXItPm5leHQpOwogICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXZlbnQ6aW5pdCIsICJUcmlnZ2VyIEV4aXN0IFRhYmxlXG4iKSk7CiB9CiAKQEAgLTEyMyw2ICsxNDIsNyBAQAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAvKgogICAgICAgICAgKiBXcml0ZS1zdXBwb3J0CiAgICAgICAgICAqLwpAQCAtMjY0LDYgKzI4NCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuYwppbmRleCAxNDVmMDc5Li44OGMyZjhiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5jCkBAIC03LDEyICs3LDI3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAidXRpbGl0aWVzL2lxdWVyeS5oIgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcXVlcnkpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YSkKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcXVlcnlfcGR1X3Nlc3Npb24pCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90eXBlX2FuZF9tYXhfc2l6ZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX29pZCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3VpbnQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShtdGV0cmlnZ2VyX3JlbW92ZWVudHJ5KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHJ1dGh2YWx1ZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhX2luc2VydF9yb3cpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKK3N0YXRpYyBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogCiAvKiogSW5pdGlhbGl6ZXMgdGhlIG10ZVRyaWdnZXJUYWJsZSBtb2R1bGUgKi8KIHZvaWQKQEAgLTIxLDcgKzM2LDYgQEAKICAgICBzdGF0aWMgb2lkICBtdGVUcmlnZ2VyVGFibGVfb2lkW10gICA9IHsgMSwgMywgNiwgMSwgMiwgMSwgODgsIDEsIDIsIDIgfTsKICAgICBzaXplX3QgICAgICBtdGVUcmlnZ2VyVGFibGVfb2lkX2xlbiA9IE9JRF9MRU5HVEgobXRlVHJpZ2dlclRhYmxlX29pZCk7CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKICAgICAvKgogICAgICAqIEVuc3VyZSB0aGUgKGNvbWJpbmVkKSB0YWJsZSBjb250YWluZXIgaXMgYXZhaWxhYmxlLi4uCkBAIC0zMSwxMSArNDUsMTkgQEAKICAgICAvKgogICAgICAqIC4uLiB0aGVuIHNldCB1cCB0aGUgTUlCIGludGVyZmFjZSB0byB0aGUgbXRlVHJpZ2dlclRhYmxlIHNsaWNlCiAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJtdGVUcmlnZ2VyVGFibGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyVGFibGVfaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlclRhYmxlX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlclRhYmxlX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSk7CisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oIm10ZVRyaWdnZXJUYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJUYWJsZV9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyVGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyVGFibGVfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIHRhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8pOwogICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKHRhYmxlX2luZm8sCkBAIC01Miw2ICs3NCwxNSBAQAogICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXZlbnQ6aW5pdCIsICJUcmlnZ2VyIFRhYmxlXG4iKSk7CiB9CiAKK3ZvaWQKK3NodXRkb3duX210ZVRyaWdnZXJUYWJsZSh2b2lkKQoreworICAgIGlmICh0YWJsZV9pbmZvKSB7CisJbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCXRhYmxlX2luZm8gPSBOVUxMOworICAgIH0KK30KKwogCiAvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIG10ZVRyaWdnZXJUYWJsZSB0YWJsZSAqLwogaW50CkBAIC0xNTIsNiArMTgzLDcgQEAKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgLyoKICAgICAgICAgICogV3JpdGUtc3VwcG9ydAogICAgICAgICAgKi8KQEAgLTQ2OCw2ICs1MDAsOSBAQAogICAgICAgICBzbm1wX3N0b3JlX25lZWRlZChOVUxMKTsKIAogICAgICAgICBicmVhazsKKworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuaAppbmRleCBlMzgyNjEyLi5jNWMzOTNhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5oCkBAIC0xMSw2ICsxMSw3IEBACiAgKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgCiAgKi8KIHZvaWQgICAgICAgICAgICBpbml0X210ZVRyaWdnZXJUYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl9tdGVUcmlnZ2VyVGFibGUodm9pZCk7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBtdGVUcmlnZ2VyVGFibGVfaGFuZGxlcjsKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYwppbmRleCAxZjY2NDllLi41YWVkMGM4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jCkBAIC03LDExICs3LDE4IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YSkKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90eXBlX2FuZF9tYXhfc2l6ZSkKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKworc3RhdGljIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKIC8qKiBJbml0aWFsaXplcyB0aGUgbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlIG1vZHVsZSAqLwogdm9pZApAQCAtMjAsNyArMjcsNiBAQAogICAgIHN0YXRpYyBvaWQgbXRlVFRocmVzaFRhYmxlX29pZFtdICAgPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDg4LCAxLCAyLCA2IH07CiAgICAgc2l6ZV90ICAgICBtdGVUVGhyZXNoVGFibGVfb2lkX2xlbiA9IE9JRF9MRU5HVEgobXRlVFRocmVzaFRhYmxlX29pZCk7CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKICAgICAvKgogICAgICAqIEVuc3VyZSB0aGUgKGNvbWJpbmVkKSB0YWJsZSBjb250YWluZXIgaXMgYXZhaWxhYmxlLi4uCkBAIC0zMCwxMSArMzYsMTkgQEAKICAgICAvKgogICAgICAqIC4uLiB0aGVuIHNldCB1cCB0aGUgTUlCIGludGVyZmFjZSB0byB0aGUgbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlIHNsaWNlCiAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJtdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyVGhyZXNob2xkVGFibGVfaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVFRocmVzaFRhYmxlX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVFRocmVzaFRhYmxlX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSk7CisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oIm10ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZV9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVUVGhyZXNoVGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVUVGhyZXNoVGFibGVfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIHRhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8pOwogICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKHRhYmxlX2luZm8sCkBAIC01MSw2ICs2NSwxNSBAQAogICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXZlbnQ6aW5pdCIsICJUcmlnZ2VyIFRocmVzaG9sZCBUYWJsZVxuIikpOwogfQogCit2b2lkCitzaHV0ZG93bl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUodm9pZCkKK3sKKyAgICBpZiAodGFibGVfaW5mbykgeworCW5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKKwl0YWJsZV9pbmZvID0gTlVMTDsKKyAgICB9Cit9CisKIAogLyoqIGhhbmRsZXMgcmVxdWVzdHMgZm9yIHRoZSBtdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUgdGFibGUgKi8KIGludApAQCAtMTY1LDYgKzE4OCw3IEBACiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIC8qCiAgICAgICAgICAqIFdyaXRlLXN1cHBvcnQKICAgICAgICAgICovCkBAIC0zNTgsNiArMzgyLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmggYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmgKaW5kZXggMjgyY2M2Ny4uODBmNWYyYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuaApAQCAtOSw2ICs5LDcgQEAKICAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAKICAqLwogdm9pZCAgICAgICAgICAgIGluaXRfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIG10ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZV9oYW5kbGVyOwogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXJyb3JUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXJyb3JUYWJsZS5jCmluZGV4IGRiYzIyMTcuLmE3NTllMmQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEVycm9yVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFcnJvclRhYmxlLmMKQEAgLTcsMTEgKzcsMTQgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAiZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgImRpc21hbi9leHByL2V4cEVycm9yVGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGEpCisKIC8qIEluaXRpYWxpemVzIHRoZSBleHBFeHByZXNzaW9uRXJyb3JUYWJsZSBtb2R1bGUgKi8KIHZvaWQKIGluaXRfZXhwRXJyb3JUYWJsZSh2b2lkKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbkNvbmYuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25Db25mLmMKaW5kZXggNTE4ZGQ4OC4uODI2ZDY3OSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbkNvbmYuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uQ29uZi5jCkBAIC00LDYgKzQsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtMTQsNiArMTUsOCBAQAogI2luY2x1ZGUgImRpc21hbi9leHByL2V4cE9iamVjdC5oIgogI2luY2x1ZGUgImRpc21hbi9leHByL2V4cEV4cHJlc3Npb25Db25mLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGlxdWVyeSkKKwogLyogSW5pdGlhbGl6ZXMgdGhlIGV4cEV4cHJlc3Npb25Db25mIG1vZHVsZSAqLwogdm9pZAogaW5pdF9leHBFeHByZXNzaW9uQ29uZih2b2lkKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvblRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uVGFibGUuYwppbmRleCA5MDZiNWU1Li43OWFhNzE1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uVGFibGUuYwpAQCAtNywxMiArNywyMSBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJ1dGlsaXRpZXMvaXF1ZXJ5LmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgImRpc21hbi9leHByL2V4cEV4cHJlc3Npb25UYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcXVlcnkpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YSkKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90eXBlX2FuZF9tYXhfc2l6ZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhX2luc2VydF9yb3cpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcXVlcnlfcGR1X3Nlc3Npb24pCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKIC8qIEluaXRpYWxpemVzIHRoZSBleHBFeHByZXNzaW9uVGFibGUgbW9kdWxlICovCiB2b2lkCiBpbml0X2V4cEV4cHJlc3Npb25UYWJsZSh2b2lkKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0Q29uZi5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0Q29uZi5jCmluZGV4IGM3NWM5MzQuLjY0MDY5ZDkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdENvbmYuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3RDb25mLmMKQEAgLTQsMTIgKzQsMTUgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAidXRpbGl0aWVzL2lxdWVyeS5oIgogI2luY2x1ZGUgImRpc21hbi9leHByL2V4cE9iamVjdC5oIgogI2luY2x1ZGUgImRpc21hbi9leHByL2V4cE9iamVjdENvbmYuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXF1ZXJ5KQorCiAvKiBJbml0aWFsaXplcyB0aGUgZXhwT2JqZWN0Q29uZiBtb2R1bGUgKi8KIHZvaWQKIGluaXRfZXhwT2JqZWN0Q29uZih2b2lkKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0VGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdFRhYmxlLmMKaW5kZXggOWM0OWMwZC4uYWRkYTQzOCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0VGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3RUYWJsZS5jCkBAIC03LDExICs3LDE4IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgImRpc21hbi9leHByL2V4cE9iamVjdC5oIgogI2luY2x1ZGUgImRpc21hbi9leHByL2V4cE9iamVjdFRhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX29pZCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3RydXRodmFsdWUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YV9pbnNlcnRfcm93KQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAvKiBJbml0aWFsaXplcyB0aGUgZXhwT2JqZWN0VGFibGUgbW9kdWxlICovCiB2b2lkCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFcnJvclRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFcnJvclRhYmxlLmMKaW5kZXggYzYwNWU5YS4uMWZlYjNlZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXJyb3JUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEVycm9yVGFibGUuYwpAQCAtMTM5LDQgKzEzOSw2IEBACiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+ZXhwRXJyb3JJbnN0YW5jZUxlbiAqIHNpemVvZihvaWQpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5leHBFcnJvckluc3RhbmNlOwogICAgIH0KKworICAgIHJldHVybiBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXhwcmVzc2lvblRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFeHByZXNzaW9uVGFibGUuYwppbmRleCA1YWFiOTUyLi4yMTI5NTJkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFeHByZXNzaW9uVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFeHByZXNzaW9uVGFibGUuYwpAQCAtMjEsNiArMjEsNyBAQAogICogVGhpcyBzaG91bGQgYWx3YXlzIGJlIGluY2x1ZGVkIGZpcnN0IGJlZm9yZSBhbnl0aGluZyBlbHNlIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpZiBIQVZFX1NURExJQl9ICiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjZW5kaWYKQEAgLTQ1LDYgKzQ2LDEwIEBACiAjaW5jbHVkZSAiZXhwT2JqZWN0VGFibGUuaCIKICNpbmNsdWRlICJleHBWYWx1ZVRhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRkb21haW5fc3VwcG9ydCkKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShoZWFkZXJfY29tcGxleF9maW5kX2VudHJ5KQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAvKgogICogZXhwRXhwcmVzc2lvblRhYmxlX3ZhcmlhYmxlc19vaWQ6CkBAIC0zMTgsOSArMzIzLDcgQEAKICAgICBjaGFyICAgICAgICAgICAqY3B0cjsKICAgICBzaXplX3QgICAgICAgICAgdG1waW50OwogICAgIHN0cnVjdCBleHBFeHByZXNzaW9uVGFibGVfZGF0YSAqU3RvcmFnZVRtcDsKLSAgICBzdHJ1Y3QgZXhwT2JqZWN0VGFibGVfZGF0YSAqT2JqZWN0U3RvcmFnZVRtcDsKLSAgICBzdHJ1Y3QgZXhwVmFsdWVUYWJsZV9kYXRhICpWYWx1ZVN0b3JhZ2VUbXA7Ci0gICAgc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICpoY2luZGV4LCAqaGNfb2JqZWN0LCAqaGNfdmFsdWU7CisgICAgc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICpoY2luZGV4OwogCiAgICAgREVCVUdNU0dUTCgoImV4cEV4cHJlc3Npb25UYWJsZSIsICJzdG9yaW5nIGRhdGEuLi4gICIpKTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwT2JqZWN0VGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cE9iamVjdFRhYmxlLmMKaW5kZXggZmNhZGZlNy4uZTA1N2Y1NiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwT2JqZWN0VGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBPYmplY3RUYWJsZS5jCkBAIC0yMiw2ICsyMiw3IEBACiAgKiBUaGlzIHNob3VsZCBhbHdheXMgYmUgaW5jbHVkZWQgZmlyc3QgYmVmb3JlIGFueXRoaW5nIGVsc2UgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2lmIEhBVkVfU1RETElCX0gKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNlbmRpZgpAQCAtMzQsNiArMzUsOSBAQAogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2VuZGlmCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShoZWFkZXJfY29tcGxleF9maW5kX2VudHJ5KQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAvKgogICogbWluaW1hbCBpbmNsdWRlIGRpcmVjdGl2ZXMgCkBAIC0yMTYsNyArMjIwLDYgQEAKIHBhcnNlX2V4cE9iamVjdFRhYmxlKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpsaW5lKQogewogICAgIHNpemVfdCAgICAgICAgICB0bXBpbnQ7Ci0gICAgb2lkICAgICAgICAgICAgKnRtcG9pZCA9IE5VTEw7CiAgICAgc3RydWN0IGV4cE9iamVjdFRhYmxlX2RhdGEgKlN0b3JhZ2VUbXAgPQogICAgICAgICBTTk1QX01BTExPQ19TVFJVQ1QoZXhwT2JqZWN0VGFibGVfZGF0YSk7CiAKQEAgLTQwMyw2ICs0MDYsNyBAQAogICAgICAgICB9CiAgICAgfQogICAgIERFQlVHTVNHVEwoKCJleHBPYmplY3RUYWJsZSIsICJzdG9yYWdlIGRvbmVcbiIpKTsKKyAgICByZXR1cm4gMDsKIH0KIAogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBWYWx1ZVRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBWYWx1ZVRhYmxlLmMKaW5kZXggZDNjMDI5NS4uNmIzMTVjNiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwVmFsdWVUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cFZhbHVlVGFibGUuYwpAQCAtMjQ1LDcgKzI0NSw2IEBACiAgICAgY2hhciAgICAgICAgICAgKnJlc3VsdCwgKnJlc3VsdGJhazsKICAgICBjaGFyICAgICAgICAgICAqdGVtcCwgKnRlbXBiYWs7CiAgICAgY2hhciAgICAgICAgICAgIGludGNoYXJbMTBdOwotICAgIGludCAgICAgICAgICAgICBkb2xsYXIxLCBkb2xsYXIyOwogICAgIGludCAgICAgICAgICAgICBpID0gMCwgaiwgaywgbDsKICAgICBsb25nICAgICAgICAgICAgdmFsdWU7CiAgICAgdW5zaWduZWQgbG9uZyAgIHJlc3VsdF91X2xvbmc7CkBAIC0zMjIsNyArMzIxLDYgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN0cnVjdCB2YXJpYWJsZV9saXN0ICp2YXJzOwogICAgICAgICAgICAgaW50ICAgICAgICAgICAgIHN0YXR1czsKLSAgICAgICAgICAgIGludCAgICAgICAgICAgICBjb3VudCA9IDE7CiAKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBJbml0aWFsaXplIHRoZSBTTk1QIGxpYnJhcnkKQEAgLTM2OSw3ICszNjcsNyBAQAogCiAgICAgICAgICAgICAgICAgdmFycyA9IHJlc3BvbnNlLT52YXJpYWJsZXM7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSAqKHZhcnMtPnZhbC5pbnRlZ2VyKTsKLSAgICAgICAgICAgICAgICBzcHJpbnRmKGludGNoYXIsICIldSIsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBzcHJpbnRmKGludGNoYXIsICIlbHUiLCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgZm9yIChrID0gMTsgayA8PSBzdHJsZW4oaW50Y2hhcik7IGsrKykgewogICAgICAgICAgICAgICAgICAgICAqcmVzdWx0ID0gaW50Y2hhcltrIC0gMV07CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCsrOwpAQCAtNDMzLDE1ICs0MzEsMTEgQEAKIAogCiB2b2lkCi1idWlsZF92YWx1ZXRhYmxlKCkKK2J1aWxkX3ZhbHVldGFibGUodm9pZCkKIHsKICAgICBzdHJ1Y3QgZXhwRXhwcmVzc2lvblRhYmxlX2RhdGEgKmV4cHN0b3JhZ2U7CiAgICAgc3RydWN0IGV4cE9iamVjdFRhYmxlX2RhdGEgKm9ianN0b3JhZ2UsICpvYmpmb3VuZCA9IE5VTEw7CiAgICAgc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICpoY2luZGV4LCAqb2JqZWN0X2hjaW5kZXg7Ci0gICAgY2hhciAgICAgICAgICAgKm93bmVyOwotICAgIHNpemVfdCAgICAgICAgICBvd25lcl9sZW47Ci0gICAgY2hhciAgICAgICAgICAgKm5hbWU7Ci0gICAgc2l6ZV90ICAgICAgICAgIG5hbWVfbGVuOwogICAgIGNoYXIgICAgICAgICAgICpleHByZXNzaW9uOwogICAgIG9pZCAgICAgICAgICAgICppbmRleDsKICAgICBpbnQgICAgICAgICAgICAgaSA9IDAsIGosIGw7CkBAIC01MjUsOSArNTE5LDcgQEAKICAgICAgICAgICAgIG9pZCAgICAgICAgICAgICpuZXh0X09JRDsKICAgICAgICAgICAgIHNpemVfdCAgICAgICAgICBuZXh0X09JRF9sZW47CiAgICAgICAgICAgICB0YWdnZXRPSURfbGVuID0gb2JqZm91bmQtPmV4cE9iamVjdElETGVuOwotICAgICAgICAgICAgc3RydWN0IHZhcmlhYmxlX2xpc3QgKnZhcnM7CiAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgc3RhdHVzOwotICAgICAgICAgICAgaW50ICAgICAgICAgICAgIGNvdW50ID0gMTsKICAgICAgICAgICAgIHN0cnVjdCBzbm1wX3Nlc3Npb24gKnNzOwogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIEluaXRpYWxpemUgdGhlIFNOTVAgbGlicmFyeQpAQCAtNjM5LDEyICs2MzEsNyBAQAogICAgICAgICAgICAgICAgICAgaW50IGV4YWN0LCBzaXplX3QgKnZhcl9sZW4sIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCkKIHsKIAotICAgIHN0YXRpYyBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcnM7Ci0gICAgc2l6ZV90ICAgICAgICAgIG5ld2xlbiA9Ci0gICAgICAgICpsZW5ndGggLSAoc2l6ZW9mKGV4cFZhbHVlVGFibGVfdmFyaWFibGVzX29pZCkgLyBzaXplb2Yob2lkKSArCi0gICAgICAgICAgICAgICAgICAgMyAtIDEpOwogICAgIHN0cnVjdCBleHBWYWx1ZVRhYmxlX2RhdGEgKlN0b3JhZ2VUbXAgPSBOVUxMOwotICAgIHVuc2lnbmVkIGludCAgICBjb3VudGVyMzI7CiAKIAogCkBAIC03MTksNiArNzA2LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgZGVmYXVsdDoKICAgICAgICAgRVJST1JfTVNHKCIiKTsKKwlyZXR1cm4gTlVMTDsKICAgICB9CiB9CiAKQEAgLTc4OCw2ICs3NzYsNyBAQAogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJldHVybiAoYSAvIGIpOwogICAgIH0KKyAgICByZXR1cm4gMDsKIH0KIAogdW5zaWduZWQgbG9uZwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMKaW5kZXggM2UwNzg2Zi4uNDhhZGQ2OCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jCkBAIC00LDEwICs0LDE0IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgIm10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfZGF0YXNldCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3NldF9tdWx0aV9hZGRfZGVmYXVsdF9yb3cpCisKIG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKm10ZUV2ZW50Tm90aWZfdGFibGVfc2V0OwogCiAKQEAgLTYxLDEyICs2NSwyMSBAQAogICAgICAqIG5vdGU6IGlmIHlvdSBkb24ndCBuZWVkIGEgc3ViaGFuZGxlciB0byBkZWFsIHdpdGggYW55IGFzcGVjdHMKICAgICAgKiBvZiB0aGUgcmVxdWVzdCwgY2hhbmdlIG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGVfaGFuZGxlciB0byAiTlVMTCIgCiAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfZGF0YV9zZXQobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgibXRlRXZlbnROb3RpZmljYXRpb25UYWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZV9oYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGVfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGVfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUpLCBtdGVFdmVudE5vdGlmX3RhYmxlX3NldCwgTlVMTCk7CisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9kYXRhX3NldChuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZV9vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKSwgbXRlRXZlbnROb3RpZl90YWJsZV9zZXQsIE5VTEwpOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIH0KIAogLyoqIEluaXRpYWxpemVzIHRoZSBtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlIG1vZHVsZSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZUV2ZW50VGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVFdmVudFRhYmxlLmMKaW5kZXggYjRiZDdhMS4uMjJiYWQ3MyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZUV2ZW50VGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnRUYWJsZS5jCkBAIC00LDYgKzQsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJtdGVUcmlnZ2VyVGFibGUuaCIKQEAgLTExLDYgKzEyLDkgQEAKICNpbmNsdWRlICJtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmgiCiAjaW5jbHVkZSAibXRlT2JqZWN0c1RhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2RhdGFzZXQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9zZXRfbXVsdGlfYWRkX2RlZmF1bHRfcm93KQorCiBzdGF0aWMgbmV0c25tcF90YWJsZV9kYXRhX3NldCAqdGFibGVfc2V0ID0gTlVMTDsKIAogLyoqIEluaXRpYWxpemUgdGhlIG10ZUV2ZW50VGFibGUgdGFibGUgYnkgZGVmaW5pbmcgaXRzIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmMKaW5kZXggNzdkYmUxMC4uMDljZWIyYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVPYmplY3RzVGFibGUuYwpAQCAtOCw2ICs4LDcgQEAKICAqIFRoaXMgc2hvdWxkIGFsd2F5cyBiZSBpbmNsdWRlZCBmaXJzdCBiZWZvcmUgYW55dGhpbmcgZWxzZSAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaWYgSEFWRV9TVERMSUJfSAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2VuZGlmCkBAIC0xNyw2ICsxOCw5IEBACiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShoZWFkZXJfY29tcGxleF9maW5kX2VudHJ5KQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAvKgogICogbWluaW1hbCBpbmNsdWRlIGRpcmVjdGl2ZXMgCkBAIC00OCw2ICs1Miw3IEBACiAgKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogc3RydWN0IHZhcmlhYmxlMiBtdGVPYmplY3RzVGFibGVfdmFyaWFibGVzW10gPSB7CiAgICAgLyoKICAgICAgKiBtYWdpYyBudW1iZXIgICAgICAgICwgdmFyaWFibGUgdHlwZSAsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgTCwgb2lkc3VmZml4IApAQCAtNjMsNiArNjgsMjQgQEAKICAgICAgdmFyX210ZU9iamVjdHNUYWJsZSwgMiwgezEsIDV9fSwKIAogfTsKKyNlbHNlIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KK3N0cnVjdCB2YXJpYWJsZTIgbXRlT2JqZWN0c1RhYmxlX3ZhcmlhYmxlc1tdID0geworICAgIC8qCisgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeCAKKyAgICAgKi8KKyNkZWZpbmUgICBNVEVPQkpFQ1RTSUQgICAgICAgICAgNQorICAgIHtNVEVPQkpFQ1RTSUQsIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlT2JqZWN0c1RhYmxlLCAyLCB7MSwgM319LAorI2RlZmluZSAgIE1URU9CSkVDVFNJRFdJTERDQVJEICA2CisgICAge01URU9CSkVDVFNJRFdJTERDQVJELCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVPYmplY3RzVGFibGUsIDIsIHsxLCA0fX0sCisjZGVmaW5lICAgTVRFT0JKRUNUU0VOVFJZU1RBVFVTICA3CisgICAge01URU9CSkVDVFNFTlRSWVNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlT2JqZWN0c1RhYmxlLCAyLCB7MSwgNX19LAorCit9OworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogLyoKICAqIChMID0gbGVuZ3RoIG9mIHRoZSBvaWRzdWZmaXgpIAogICovCkBAIC0zMDIsNiArMzI1LDEwIEBACiAKICAgICBERUJVR01TR1RMKCgibXRlT2JqZWN0c1RhYmxlIiwKICAgICAgICAgICAgICAgICAidmFyX210ZU9iamVjdHNUYWJsZTogRW50ZXJpbmcuLi4gIFxuIikpOworCisJLyogc2V0IGRlZmF1bHQgdmFsdWUgKi8KKwkqd3JpdGVfbWV0aG9kID0gTlVMTDsKKwogICAgIC8qCiAgICAgICogdGhpcyBhc3N1bWVzIHlvdSBoYXZlIHJlZ2lzdGVyZWQgYWxsIHlvdXIgZGF0YSBwcm9wZXJseQogICAgICAqLwpAQCAtMzIwLDE3ICszNDcsMjMgQEAKIAogCiAgICAgY2FzZSBNVEVPQkpFQ1RTSUQ6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlT2JqZWN0c0lEOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSAoU3RvcmFnZVRtcC0+bXRlT2JqZWN0c0lETGVuKSAqIHNpemVvZihvaWQpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVPYmplY3RzSUQ7CiAKICAgICBjYXNlIE1URU9CSkVDVFNJRFdJTERDQVJEOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZU9iamVjdHNJRFdpbGRjYXJkOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YoU3RvcmFnZVRtcC0+bXRlT2JqZWN0c0lEV2lsZGNhcmQpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIFN0b3JhZ2VUbXAtPm10ZU9iamVjdHNJRFdpbGRjYXJkOwogCiAgICAgY2FzZSBNVEVPQkpFQ1RTRU5UUllTVEFUVVM6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlT2JqZWN0c0VudHJ5U3RhdHVzOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YoU3RvcmFnZVRtcC0+bXRlT2JqZWN0c0VudHJ5U3RhdHVzKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBTdG9yYWdlVG1wLT5tdGVPYmplY3RzRW50cnlTdGF0dXM7CiAKQEAgLTM0Myw2ICszNzYsNyBAQAogCiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIAogaW50CiB3cml0ZV9tdGVPYmplY3RzSUQoaW50IGFjdGlvbiwKQEAgLTc4OCw2ICs4MjIsOSBAQAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCisKIHZvaWQKIG10ZV9hZGRfb2JqZWN0cyhuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXJzLAogICAgICAgICAgICAgICAgIHN0cnVjdCBtdGVUcmlnZ2VyVGFibGVfZGF0YSAqaXRlbSwgY29uc3QgY2hhciAqb3duZXIsCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmggYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmgKaW5kZXggZDNjM2M1MC4uNGQ0NGM4NyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVPYmplY3RzVGFibGUuaApAQCAtNTksMTEgKzU5LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiBvaWRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9pZG5hbWVfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlzd2lsZCk7CisKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVPYmplY3RzSUQ7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVPYmplY3RzSURXaWxkY2FyZDsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZU9iamVjdHNFbnRyeVN0YXR1czsKLQotICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlT2JqZWN0c0VudHJ5U3RhdHVzOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jCmluZGV4IGZiYTQ5ODAuLjViMTc5MjcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUuYwpAQCAtNDgsNiArNDgsNyBAQAogICovCiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIHN0cnVjdCB2YXJpYWJsZTIgbXRlVHJpZ2dlckJvb2xlYW5UYWJsZV92YXJpYWJsZXNbXSA9IHsKICAgICAvKgogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCkBAIC03Myw4ICs3NCwzNiBAQAogI2RlZmluZSAgIE1URVRSSUdHRVJCT09MRUFORVZFTlQgIDkKICAgICB7TVRFVFJJR0dFUkJPT0xFQU5FVkVOVCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSwgMiwgezEsIDd9fSwKLQogfTsKKyNlbHNlIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KK3N0cnVjdCB2YXJpYWJsZTIgbXRlVHJpZ2dlckJvb2xlYW5UYWJsZV92YXJpYWJsZXNbXSA9IHsKKyAgICAvKgorICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCisgICAgICovCisjZGVmaW5lICAgTVRFVFJJR0dFUkJPT0xFQU5DT01QQVJJU09OICAzCisgICAge01URVRSSUdHRVJCT09MRUFOQ09NUEFSSVNPTiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSwgMiwgezEsIDF9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSQk9PTEVBTlZBTFVFICA0CisgICAge01URVRSSUdHRVJCT09MRUFOVkFMVUUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJCb29sZWFuVGFibGUsIDIsIHsxLCAyfX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUkJPT0xFQU5TVEFSVFVQICA1CisgICAge01URVRSSUdHRVJCT09MRUFOU1RBUlRVUCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSwgMiwgezEsIDN9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSQk9PTEVBTk9CSkVDVFNPV05FUiAgNgorICAgIHtNVEVUUklHR0VSQk9PTEVBTk9CSkVDVFNPV05FUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLCAyLCB7MSwgNH19LAorI2RlZmluZSAgIE1URVRSSUdHRVJCT09MRUFOT0JKRUNUUyAgNworICAgIHtNVEVUUklHR0VSQk9PTEVBTk9CSkVDVFMsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSwgMiwgezEsIDV9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSQk9PTEVBTkVWRU5UT1dORVIgIDgKKyAgICB7TVRFVFJJR0dFUkJPT0xFQU5FVkVOVE9XTkVSLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJCb29sZWFuVGFibGUsIDIsIHsxLCA2fX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUkJPT0xFQU5FVkVOVCAgOQorICAgIHtNVEVUUklHR0VSQk9PTEVBTkVWRU5ULCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJCb29sZWFuVGFibGUsIDIsIHsxLCA3fX0sCit9OworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogLyoKICAqIChMID0gbGVuZ3RoIG9mIHRoZSBvaWRzdWZmaXgpIAogICovCkBAIC0xMjYsNiArMTU1LDEwIEBACiAKICAgICBERUJVR01TR1RMKCgibXRlVHJpZ2dlckJvb2xlYW5UYWJsZSIsCiAgICAgICAgICAgICAgICAgInZhcl9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlOiBFbnRlcmluZy4uLiAgXG4iKSk7CisKKwkvKiBzZXQgZGVmYXVsdCB2YWx1ZSAqLworCSp3cml0ZV9tZXRob2QgPSBOVUxMOworCiAgICAgLyoKICAgICAgKiB0aGlzIGFzc3VtZXMgeW91IGhhdmUgcmVnaXN0ZXJlZCBhbGwgeW91ciBkYXRhIHByb3Blcmx5CiAgICAgICovCkBAIC0xNDQsMzcgKzE3Nyw1MSBAQAogCiAKICAgICBjYXNlIE1URVRSSUdHRVJCT09MRUFOQ09NUEFSSVNPTjoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyQm9vbGVhbkNvbXBhcmlzb247CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyQm9vbGVhbkNvbXBhcmlzb24pOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJCb29sZWFuQ29tcGFyaXNvbjsKIAogICAgIGNhc2UgTVRFVFJJR0dFUkJPT0xFQU5WQUxVRToKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyQm9vbGVhblZhbHVlOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YoU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckJvb2xlYW5WYWx1ZSk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckJvb2xlYW5WYWx1ZTsKIAogICAgIGNhc2UgTVRFVFJJR0dFUkJPT0xFQU5TVEFSVFVQOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJCb29sZWFuU3RhcnR1cDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJCb29sZWFuU3RhcnR1cCk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckJvb2xlYW5TdGFydHVwOwogCiAgICAgY2FzZSBNVEVUUklHR0VSQk9PTEVBTk9CSkVDVFNPV05FUjoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyQm9vbGVhbk9iamVjdHNPd25lcjsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckJvb2xlYW5PYmplY3RzT3duZXJMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJCb29sZWFuT2JqZWN0c093bmVyOwogCiAgICAgY2FzZSBNVEVUUklHR0VSQk9PTEVBTk9CSkVDVFM6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlckJvb2xlYW5PYmplY3RzOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyQm9vbGVhbk9iamVjdHNMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJCb29sZWFuT2JqZWN0czsKIAogICAgIGNhc2UgTVRFVFJJR0dFUkJPT0xFQU5FVkVOVE9XTkVSOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJCb29sZWFuRXZlbnRPd25lcjsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckJvb2xlYW5FdmVudE93bmVyTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyQm9vbGVhbkV2ZW50T3duZXI7CiAKICAgICBjYXNlIE1URVRSSUdHRVJCT09MRUFORVZFTlQ6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlckJvb2xlYW5FdmVudDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckJvb2xlYW5FdmVudExlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckJvb2xlYW5FdmVudDsKIApAQCAtMTg3LDYgKzIzNCw3IEBACiAKIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogCiBpbnQKIHdyaXRlX210ZVRyaWdnZXJCb29sZWFuQ29tcGFyaXNvbihpbnQgYWN0aW9uLApAQCAtODAwLDMgKzg0OCw1IEBACiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQorCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmgKaW5kZXggZjY4NTU4Ni4uNjQxM2RhNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5oCkBAIC0zMSw2ICszMSw3IEBACiAgICAgIHZvaWQgICAgICAgICAgICBpbml0X210ZVRyaWdnZXJCb29sZWFuVGFibGUodm9pZCk7CiAgICAgIEZpbmRWYXJNZXRob2QgICB2YXJfbXRlVHJpZ2dlckJvb2xlYW5UYWJsZTsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJCb29sZWFuQ29tcGFyaXNvbjsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJCb29sZWFuVmFsdWU7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyQm9vbGVhblN0YXJ0dXA7CkBAIC0zOCw2ICszOSw3IEBACiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyQm9vbGVhbk9iamVjdHM7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyQm9vbGVhbkV2ZW50T3duZXI7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyQm9vbGVhbkV2ZW50OworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmMKaW5kZXggMTM3ZTA5Ny4uYzgyOWU2YSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmMKQEAgLTQ4LDYgKzQ4LDcgQEAKICAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBzdHJ1Y3QgdmFyaWFibGUyIG10ZVRyaWdnZXJEZWx0YVRhYmxlX3ZhcmlhYmxlc1tdID0gewogICAgIC8qCiAgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeCAKQEAgLTYxLDggKzYyLDI0IEBACiAjZGVmaW5lICAgTVRFVFJJR0dFUkRFTFRBRElTQ09OVElOVUlUWUlEVFlQRSAgNQogICAgIHtNVEVUUklHR0VSREVMVEFESVNDT05USU5VSVRZSURUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlckRlbHRhVGFibGUsIDIsIHsxLCAzfX0sCi0KIH07CisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCitzdHJ1Y3QgdmFyaWFibGUyIG10ZVRyaWdnZXJEZWx0YVRhYmxlX3ZhcmlhYmxlc1tdID0geworICAgIC8qCisgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeCAKKyAgICAgKi8KKyNkZWZpbmUgICBNVEVUUklHR0VSREVMVEFESVNDT05USU5VSVRZSUQgIDMKKyAgICB7TVRFVFJJR0dFUkRFTFRBRElTQ09OVElOVUlUWUlELCBBU05fT0JKRUNUX0lELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJEZWx0YVRhYmxlLCAyLCB7MSwgMX19LAorI2RlZmluZSAgIE1URVRSSUdHRVJERUxUQURJU0NPTlRJTlVJVFlJRFdJTERDQVJEICA0CisgICAge01URVRSSUdHRVJERUxUQURJU0NPTlRJTlVJVFlJRFdJTERDQVJELCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyRGVsdGFUYWJsZSwgMiwgezEsIDJ9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSREVMVEFESVNDT05USU5VSVRZSURUWVBFICA1CisgICAge01URVRSSUdHRVJERUxUQURJU0NPTlRJTlVJVFlJRFRZUEUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJEZWx0YVRhYmxlLCAyLCB7MSwgM319LAorfTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKIC8qCiAgKiAoTCA9IGxlbmd0aCBvZiB0aGUgb2lkc3VmZml4KSAKICAqLwpAQCAtMTE0LDYgKzEzMSwxMCBAQAogCiAgICAgREVCVUdNU0dUTCgoIm10ZVRyaWdnZXJEZWx0YVRhYmxlIiwKICAgICAgICAgICAgICAgICAidmFyX210ZVRyaWdnZXJEZWx0YVRhYmxlOiBFbnRlcmluZy4uLiAgXG4iKSk7CisKKyAgICAvKiBzZXQgZGVmYXVsdCB2YWx1ZSAqLworCSp3cml0ZV9tZXRob2QgPSBOVUxMOworCiAgICAgLyoKICAgICAgKiB0aGlzIGFzc3VtZXMgeW91IGhhdmUgcmVnaXN0ZXJlZCBhbGwgeW91ciBkYXRhIHByb3Blcmx5CiAgICAgICovCkBAIC0xMjksMjQgKzE1MCwyOSBAQAogCiAKICAgICBjYXNlIE1URVRSSUdHRVJERUxUQURJU0NPTlRJTlVJVFlJRDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyRGVsdGFEaXNjb250aW51aXR5SUQ7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9CiAgICAgICAgICAgICBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyRGVsdGFEaXNjb250aW51aXR5SURMZW4gKiBzaXplb2Yob2lkKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckRlbHRhRGlzY29udGludWl0eUlEOwogCiAgICAgY2FzZSBNVEVUUklHR0VSREVMVEFESVNDT05USU5VSVRZSURXSUxEQ0FSRDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyRGVsdGFEaXNjb250aW51aXR5SURXaWxkY2FyZDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0KICAgICAgICAgICAgIHNpemVvZihTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyRGVsdGFEaXNjb250aW51aXR5SURXaWxkY2FyZCk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgU3RvcmFnZVRtcC0+CiAgICAgICAgICAgICBtdGVUcmlnZ2VyRGVsdGFEaXNjb250aW51aXR5SURXaWxkY2FyZDsKIAogICAgIGNhc2UgTVRFVFJJR0dFUkRFTFRBRElTQ09OVElOVUlUWUlEVFlQRToKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyRGVsdGFEaXNjb250aW51aXR5SURUeXBlOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YoU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckRlbHRhRGlzY29udGludWl0eUlEVHlwZSk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckRlbHRhRGlzY29udGludWl0eUlEVHlwZTsKIAotCiAgICAgZGVmYXVsdDoKICAgICAgICAgRVJST1JfTVNHKCIiKTsKICAgICB9CkBAIC0xNTUsNyArMTgxLDcgQEAKIAogCiAKLQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIGludAogd3JpdGVfbXRlVHJpZ2dlckRlbHRhRGlzY29udGludWl0eUlEKGludCBhY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyICogdmFyX3ZhbCwKQEAgLTQxNCwzICs0NDAsNCBAQAogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5oCmluZGV4IDBlOGExN2UuLmZhNDg3MmEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5oCkBAIC0zMCw4ICszMCwxMCBAQAogICAgICB2b2lkICAgICAgICAgICAgaW5pdF9tdGVUcmlnZ2VyRGVsdGFUYWJsZSh2b2lkKTsKICAgICAgRmluZFZhck1ldGhvZCAgIHZhcl9tdGVUcmlnZ2VyRGVsdGFUYWJsZTsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJEZWx0YURpc2NvbnRpbnVpdHlJRDsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJEZWx0YURpc2NvbnRpbnVpdHlJRFdpbGRjYXJkOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlckRlbHRhRGlzY29udGludWl0eUlEVHlwZTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX01JQkdST1VQX01URVRSSUdHRVJERUxUQVRBQkxFX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuYwppbmRleCBjNTc2MWI1Li40ZTZiNjRiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jCkBAIC00OCw2ICs0OCw3IEBACiAgKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogc3RydWN0IHZhcmlhYmxlMiBtdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGVfdmFyaWFibGVzW10gPSB7CiAgICAgLyoKICAgICAgKiBtYWdpYyBudW1iZXIgICAgICAgICwgdmFyaWFibGUgdHlwZSAsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgTCwgb2lkc3VmZml4IApAQCAtNzAsOCArNzEsMzMgQEAKICNkZWZpbmUgICBNVEVUUklHR0VSRVhJU1RFTkNFRVZFTlQgIDgKICAgICB7TVRFVFJJR0dFUkVYSVNURU5DRUVWRU5ULCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUsIDIsIHsxLCA2fX0sCi0KIH07CisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCitzdHJ1Y3QgdmFyaWFibGUyIG10ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZV92YXJpYWJsZXNbXSA9IHsKKyAgICAvKgorICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCisgICAgICovCisjZGVmaW5lICAgTVRFVFJJR0dFUkVYSVNURU5DRVRFU1QgIDMKKyAgICB7TVRFVFJJR0dFUkVYSVNURU5DRVRFU1QsIEFTTl9CSVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZSwgMiwgezEsIDF9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSRVhJU1RFTkNFU1RBUlRVUCAgNAorICAgIHtNVEVUUklHR0VSRVhJU1RFTkNFU1RBUlRVUCwgQVNOX0JJVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLCAyLCB7MSwgMn19LAorI2RlZmluZSAgIE1URVRSSUdHRVJFWElTVEVOQ0VPQkpFQ1RTT1dORVIgIDUKKyAgICB7TVRFVFJJR0dFUkVYSVNURU5DRU9CSkVDVFNPV05FUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUsIDIsIHsxLCAzfX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUkVYSVNURU5DRU9CSkVDVFMgIDYKKyAgICB7TVRFVFJJR0dFUkVYSVNURU5DRU9CSkVDVFMsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLCAyLCB7MSwgNH19LAorI2RlZmluZSAgIE1URVRSSUdHRVJFWElTVEVOQ0VFVkVOVE9XTkVSICA3CisgICAge01URVRSSUdHRVJFWElTVEVOQ0VFVkVOVE9XTkVSLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZSwgMiwgezEsIDV9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSRVhJU1RFTkNFRVZFTlQgIDgKKyAgICB7TVRFVFJJR0dFUkVYSVNURU5DRUVWRU5ULCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZSwgMiwgezEsIDZ9fSwKK307CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAvKgogICogKEwgPSBsZW5ndGggb2YgdGhlIG9pZHN1ZmZpeCkgCiAgKi8KQEAgLTEzMSw2ICsxNTcsMTAgQEAKIAogICAgIERFQlVHTVNHVEwoKCJtdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUiLAogICAgICAgICAgICAgICAgICJ2YXJfbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlOiBFbnRlcmluZy4uLiAgXG4iKSk7CisKKwkvKiBzZXQgZGVmYXVsdCB2YWx1ZSAqLworCSp3cml0ZV9tZXRob2QgPSBOVUxMOworCiAgICAgLyoKICAgICAgKiB0aGlzIGFzc3VtZXMgeW91IGhhdmUgcmVnaXN0ZXJlZCBhbGwgeW91ciBkYXRhIHByb3Blcmx5CiAgICAgICovCkBAIC0xNDksMzIgKzE3OSw0NCBAQAogCiAKICAgICBjYXNlIE1URVRSSUdHRVJFWElTVEVOQ0VURVNUOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJFeGlzdGVuY2VUZXN0OworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyRXhpc3RlbmNlVGVzdExlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckV4aXN0ZW5jZVRlc3Q7CiAKICAgICBjYXNlIE1URVRSSUdHRVJFWElTVEVOQ0VTVEFSVFVQOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJFeGlzdGVuY2VTdGFydHVwOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyRXhpc3RlbmNlU3RhcnR1cExlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckV4aXN0ZW5jZVN0YXJ0dXA7CiAKICAgICBjYXNlIE1URVRSSUdHRVJFWElTVEVOQ0VPQkpFQ1RTT1dORVI6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlckV4aXN0ZW5jZU9iamVjdHNPd25lcjsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckV4aXN0ZW5jZU9iamVjdHNPd25lckxlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckV4aXN0ZW5jZU9iamVjdHNPd25lcjsKIAogICAgIGNhc2UgTVRFVFJJR0dFUkVYSVNURU5DRU9CSkVDVFM6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlckV4aXN0ZW5jZU9iamVjdHM7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJFeGlzdGVuY2VPYmplY3RzTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyRXhpc3RlbmNlT2JqZWN0czsKIAogICAgIGNhc2UgTVRFVFJJR0dFUkVYSVNURU5DRUVWRU5UT1dORVI6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlckV4aXN0ZW5jZUV2ZW50T3duZXI7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJFeGlzdGVuY2VFdmVudE93bmVyTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyRXhpc3RlbmNlRXZlbnRPd25lcjsKIAogICAgIGNhc2UgTVRFVFJJR0dFUkVYSVNURU5DRUVWRU5UOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJFeGlzdGVuY2VFdmVudDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckV4aXN0ZW5jZUV2ZW50TGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyRXhpc3RlbmNlRXZlbnQ7CiAKQEAgLTE4Nyw2ICsyMjksNyBAQAogCiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIAogaW50CiB3cml0ZV9tdGVUcmlnZ2VyRXhpc3RlbmNlVGVzdChpbnQgYWN0aW9uLApAQCAtNzM1LDMgKzc3OCw1IEBACiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQorCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5oCmluZGV4IDQwZGJkNGUuLjc1YzY0MjcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmgKQEAgLTI5LDExICsyOSwxMyBAQAogICAgICB2b2lkICAgICAgICAgICAgaW5pdF9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUodm9pZCk7CiAgICAgIEZpbmRWYXJNZXRob2QgICB2YXJfbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlckV4aXN0ZW5jZVRlc3Q7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyRXhpc3RlbmNlU3RhcnR1cDsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJFeGlzdGVuY2VPYmplY3RzT3duZXI7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyRXhpc3RlbmNlT2JqZWN0czsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJFeGlzdGVuY2VFdmVudE93bmVyOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlckV4aXN0ZW5jZUV2ZW50OworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfTUlCR1JPVVBfTVRFVFJJR0dFUkVYSVNURU5DRVRBQkxFX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYwppbmRleCA1YTJiZDdiLi44MGE0NWEzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jCkBAIC04LDYgKzgsNyBAQAogICogVGhpcyBzaG91bGQgYWx3YXlzIGJlIGluY2x1ZGVkIGZpcnN0IGJlZm9yZSBhbnl0aGluZyBlbHNlIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpZiBIQVZFX1NURExJQl9ICiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjZW5kaWYKQEAgLTIwLDYgKzIxLDEzIEBACiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjZW5kaWYKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUobWliX3NucHJpbnRfdmFyaWFibGUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0ZG9tYWluX3N1cHBvcnQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl91aW50KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoc3RyaW5nX3RpbWVfdG9fc2VjcykKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShoZWFkZXJfY29tcGxleF9maW5kX2VudHJ5KQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAvKgogICogbWluaW1hbCBpbmNsdWRlIGRpcmVjdGl2ZXMgCkBAIC03OCw2ICs4Niw3IEBACiAgKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogc3RydWN0IHZhcmlhYmxlMiBtdGVUcmlnZ2VyVGFibGVfdmFyaWFibGVzW10gPSB7CiAgICAgLyoKICAgICAgKiBtYWdpYyBudW1iZXIgICAgICAgICwgdmFyaWFibGUgdHlwZSAsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgTCwgb2lkc3VmZml4IApAQCAtMTIxLDggKzEzMCw1NCBAQAogI2RlZmluZSAgIE1URVRSSUdHRVJFTlRSWVNUQVRVUyAgMTcKICAgICB7TVRFVFJJR0dFUkVOVFJZU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLCB7MSwgMTV9fSwKLQogfTsKKyNlbHNlIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KK3N0cnVjdCB2YXJpYWJsZTIgbXRlVHJpZ2dlclRhYmxlX3ZhcmlhYmxlc1tdID0geworICAgIC8qCisgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeCAKKyAgICAgKi8KKyNkZWZpbmUgICBNVEVUUklHR0VSQ09NTUVOVCAgICAgNQorICAgIHtNVEVUUklHR0VSQ09NTUVOVCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsIHsxLCAzfX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUlRFU1QgICAgICAgIDYKKyAgICB7TVRFVFJJR0dFUlRFU1QsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLCB7MSwgNH19LAorI2RlZmluZSAgIE1URVRSSUdHRVJTQU1QTEVUWVBFICA3CisgICAge01URVRSSUdHRVJTQU1QTEVUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsIHsxLCA1fX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUlZBTFVFSUQgICAgIDgKKyAgICB7TVRFVFJJR0dFUlZBTFVFSUQsIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLCB7MSwgNn19LAorI2RlZmluZSAgIE1URVRSSUdHRVJWQUxVRUlEV0lMRENBUkQgIDkKKyAgICB7TVRFVFJJR0dFUlZBTFVFSURXSUxEQ0FSRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLCB7MSwgN319LAorI2RlZmluZSAgIE1URVRSSUdHRVJUQVJHRVRUQUcgICAxMAorICAgIHtNVEVUUklHR0VSVEFSR0VUVEFHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDh9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSQ09OVEVYVE5BTUUgIDExCisgICAge01URVRSSUdHRVJDT05URVhUTkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsIHsxLCA5fX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUkNPTlRFWFROQU1FV0lMRENBUkQgIDEyCisgICAge01URVRSSUdHRVJDT05URVhUTkFNRVdJTERDQVJELCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsIHsxLCAxMH19LAorI2RlZmluZSAgIE1URVRSSUdHRVJGUkVRVUVOQ1kgICAxMworICAgIHtNVEVUUklHR0VSRlJFUVVFTkNZLCBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLCB7MSwgMTF9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VST0JKRUNUU09XTkVSICAxNAorICAgIHtNVEVUUklHR0VST0JKRUNUU09XTkVSLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDEyfX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUk9CSkVDVFMgICAgIDE1CisgICAge01URVRSSUdHRVJPQkpFQ1RTLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDEzfX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUkVOQUJMRUQgICAgIDE2CisgICAge01URVRSSUdHRVJFTkFCTEVELCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsIHsxLCAxNH19LAorI2RlZmluZSAgIE1URVRSSUdHRVJFTlRSWVNUQVRVUyAgMTcKKyAgICB7TVRFVFJJR0dFUkVOVFJZU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsIHsxLCAxNX19LAorfTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKIC8qCiAgKiAoTCA9IGxlbmd0aCBvZiB0aGUgb2lkc3VmZml4KSAKICAqLwpAQCAtNDAzLDggKzQ1OCwxNyBAQAogICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAncic6CiAgICAgICAgICAgICBpZiAoY3ApIHsKKyAgICAgICAgICAgICAgICBpbnQgZnJlcTsKICAgICAgICAgICAgICAgICBjcCA9IGNvcHlfbndvcmQoY3AsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwotICAgICAgICAgICAgICAgIFN0b3JhZ2VOZXctPm10ZVRyaWdnZXJGcmVxdWVuY3kgPSBzdHJ0b3VsKGJ1ZiwgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgZnJlcSA9IG5ldHNubXBfc3RyaW5nX3RpbWVfdG9fc2VjcyhidWYpOworICAgICAgICAgICAgICAgIGlmIChmcmVxID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIkludmFsaWQgLXIgdmFsdWVcbiIpOworICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgKiBYWFg6IGZyZWUgU3RvcmFnZU5ldyAKKyAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgU3RvcmFnZU5ldy0+bXRlVHJpZ2dlckZyZXF1ZW5jeSA9ICh1bnNpZ2VuZCBsb25nKSBmcmVxOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJObyBwYXJhbWV0ZXIgYWZ0ZXIgLXIgZ2l2ZW5cbiIpOwogICAgICAgICAgICAgICAgIC8qCkBAIC01OTMsNyArNjU3LDcgQEAKIAogICAgIERFQlVHTVNHVEwoKCJtdGVUcmlnZ2VyVGFibGUiLCAiYWRkZWQgc2ltcGxlIG1vbml0b3I6ICVzXG4iLAogICAgICAgICAgICAgICAgIFN0b3JhZ2VOZXctPm10ZVRyaWdnZXJOYW1lKSk7Ci19Cit9IC8qIHBhcnNlX3NpbXBsZV9tb25pdG9yICovCiAKIAogLyoKQEAgLTEwNzYsOSArMTE0MCw3IEBACiAgICAgICAgIG10ZV9lbmFibGVfdHJpZ2dlcihTdG9yYWdlVG1wKTsKIAogICAgIERFQlVHTVNHVEwoKCJtdGVUcmlnZ2VyVGFibGUiLCAiZG9uZS5cbiIpKTsKLX0KLQotCit9IC8qIHBhcnNlX210ZVRyaWdnZXJUYWJsZSAqLwogCiAKIC8qCkBAIC0xNDI5LDE0ICsxNDkxLDIwIEBACiAKICAgICBERUJVR01TR1RMKCgibXRlVHJpZ2dlclRhYmxlIiwKICAgICAgICAgICAgICAgICAidmFyX210ZVRyaWdnZXJUYWJsZTogRW50ZXJpbmcuLi4gIFxuIikpOworCisJLyogc2V0IGRlZmF1bHQgdmFsdWUgKi8KKwkqd3JpdGVfbWV0aG9kID0gTlVMTDsKKwogICAgIC8qCiAgICAgICogdGhpcyBhc3N1bWVzIHlvdSBoYXZlIHJlZ2lzdGVyZWQgYWxsIHlvdXIgZGF0YSBwcm9wZXJseQogICAgICAqLwogICAgIGlmICgoU3RvcmFnZVRtcCA9CiAgICAgICAgICBoZWFkZXJfY29tcGxleChtdGVUcmlnZ2VyVGFibGVTdG9yYWdlLCB2cCwgbmFtZSwgbGVuZ3RoLCBleGFjdCwKICAgICAgICAgICAgICAgICAgICAgICAgIHZhcl9sZW4sIHdyaXRlX21ldGhvZCkpID09IE5VTEwpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIGlmICh2cC0+bWFnaWMgPT0gTVRFVFJJR0dFUkVOVFJZU1RBVFVTKQogICAgICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJFbnRyeVN0YXR1czsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMTQ0OCw2NyArMTUxNiw5MyBAQAogCiAKICAgICBjYXNlIE1URVRSSUdHRVJDT01NRU5UOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJDb21tZW50OworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyQ29tbWVudExlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckNvbW1lbnQ7CiAKICAgICBjYXNlIE1URVRSSUdHRVJURVNUOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJUZXN0OworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGVzdExlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRlc3Q7CiAKICAgICBjYXNlIE1URVRSSUdHRVJTQU1QTEVUWVBFOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJTYW1wbGVUeXBlOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YoU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclNhbXBsZVR5cGUpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJTYW1wbGVUeXBlOwogCiAgICAgY2FzZSBNVEVUUklHR0VSVkFMVUVJRDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyVmFsdWVJRDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclZhbHVlSURMZW4gKiBzaXplb2Yob2lkKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclZhbHVlSUQ7CiAKICAgICBjYXNlIE1URVRSSUdHRVJWQUxVRUlEV0lMRENBUkQ6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlclZhbHVlSURXaWxkY2FyZDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJWYWx1ZUlEV2lsZGNhcmQpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJWYWx1ZUlEV2lsZGNhcmQ7CiAKICAgICBjYXNlIE1URVRSSUdHRVJUQVJHRVRUQUc6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlclRhcmdldFRhZzsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRhcmdldFRhZ0xlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRhcmdldFRhZzsKIAogICAgIGNhc2UgTVRFVFJJR0dFUkNPTlRFWFROQU1FOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJDb250ZXh0TmFtZTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckNvbnRleHROYW1lTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyQ29udGV4dE5hbWU7CiAKICAgICBjYXNlIE1URVRSSUdHRVJDT05URVhUTkFNRVdJTERDQVJEOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJDb250ZXh0TmFtZVdpbGRjYXJkOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YoU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckNvbnRleHROYW1lV2lsZGNhcmQpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJDb250ZXh0TmFtZVdpbGRjYXJkOwogCiAgICAgY2FzZSBNVEVUUklHR0VSRlJFUVVFTkNZOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJGcmVxdWVuY3k7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyRnJlcXVlbmN5KTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyRnJlcXVlbmN5OwogCiAgICAgY2FzZSBNVEVUUklHR0VST0JKRUNUU09XTkVSOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJPYmplY3RzT3duZXI7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJPYmplY3RzT3duZXJMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJPYmplY3RzT3duZXI7CiAKICAgICBjYXNlIE1URVRSSUdHRVJPQkpFQ1RTOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJPYmplY3RzOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyT2JqZWN0c0xlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlck9iamVjdHM7CiAKICAgICBjYXNlIE1URVRSSUdHRVJFTkFCTEVEOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJFbmFibGVkOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YoU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckVuYWJsZWQpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJFbmFibGVkOwogCiAgICAgY2FzZSBNVEVUUklHR0VSRU5UUllTVEFUVVM6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlckVudHJ5U3RhdHVzOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YoU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckVudHJ5U3RhdHVzKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyRW50cnlTdGF0dXM7CiAKQEAgLTE1MjEsNyArMTYxNSw3IEBACiAKIAogCi0KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBpbnQKIHdyaXRlX210ZVRyaWdnZXJDb21tZW50KGludCBhY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgKiB2YXJfdmFsLApAQCAtMTYwOCw3ICsxNzAyLDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQorfSAvKiB3cml0ZV9tdGVUcmlnZ2VyQ29tbWVudCAqLwogCiAKIApAQCAtMTY5NSw3ICsxNzg5LDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQorfSAvKiB3cml0ZV9tdGVUcmlnZ2VyVGVzdCAqLwogCiAKIApAQCAtMTc3OCw3ICsxODcyLDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQorfSAvKiB3cml0ZV9tdGVUcmlnZ2VyU2FtcGxlVHlwZSAqLwogCiAKIApAQCAtMTg3Miw3ICsxOTY2LDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQorfSAvKiB3cml0ZV9tdGVUcmlnZ2VyVmFsdWVJRCAqLwogCiAKIApAQCAtMTk1Niw3ICsyMDUwLDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQorfSAvKiB3cml0ZV9tdGVUcmlnZ2VyVmFsdWVJRFdpbGRjYXJkICovCiAKIAogCkBAIC0yMDQ1LDcgKzIxMzksNyBAQAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci19Cit9IC8qIHdyaXRlX210ZVRyaWdnZXJUYXJnZXRUYWcgKi8KIAogCiAKQEAgLTIxMzUsNyArMjIyOSw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLX0KK30gLyogd3JpdGVfbXRlVHJpZ2dlckNvbnRleHROYW1lICovCiAKIAogCkBAIC0yMjE5LDcgKzIzMTMsNyBAQAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci19Cit9IC8qIHdyaXRlX210ZVRyaWdnZXJDb250ZXh0TmFtZVdpbGRjYXJkICovCiAKIAogCkBAIC0yMzA2LDcgKzI0MDAsNyBAQAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci19Cit9IC8qIHdyaXRlX210ZVRyaWdnZXJGcmVxdWVuY3kgKi8KIAogCiAKQEAgLTIzOTYsNyArMjQ5MCw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLX0KK30gLyogd3JpdGVfbXRlVHJpZ2dlck9iamVjdHNPd25lciAqLwogCiAKIApAQCAtMjQ4NSw3ICsyNTc5LDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQorfSAvKiB3cml0ZV9tdGVUcmlnZ2VyT2JqZWN0cyAqLwogCiAKIApAQCAtMjU3NCwxMCArMjY2OCw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLX0KLQotCi0KK30gLyogd3JpdGVfbXRlVHJpZ2dlckVuYWJsZWQgKi8KIAogCiAKQEAgLTI5MDUsNyArMjk5NiwxMSBAQAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci19Cit9IC8qIHdyaXRlX210ZVRyaWdnZXJFbnRyeVN0YXR1cyAqLworCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCisKIAogLyoKICAqIHNlbmQgdHJhcCAKQEAgLTMwMDAsNyArMzA5NSw4IEBACiAKICAgICBzZW5kX3YydHJhcCh2YXJfbGlzdCk7CiAgICAgc25tcF9mcmVlX3ZhcmJpbmQodmFyX2xpc3QpOwotfQorfSAvKiBzZW5kX210ZV90cmFwICovCisKIAogdm9pZAogbGFzdF9zdGF0ZV9jbGVhbih2b2lkICpkYXRhKQpAQCAtMzAxMCw2ICszMTA2LDcgQEAKICAgICBTTk1QX0ZSRUUoY2xlYW5tZSk7CiB9CiAKKwogLyoKICAqIHJldHJpZXZlcyByZXF1ZXN0ZWQgaW5mbyBpbiBwZHUgZnJvbSB0aGUgY3VycmVudCB0YXJnZXQgCiAgKi8KQEAgLTMxMDEsNyArMzE5OCw3IEBACiAgICAgYnVmW3NpemVvZihidWYpIC0gMV0gPSAnXDAnOwogICAgIERFQlVHTVNHVEwoKCJtdGVUcmlnZ2VyVGFibGUiLCAiZ290IGEgdmFyaWFibGVzOiAlc1xuIiwgYnVmKSk7CiAgICAgcmV0dXJuIHJlc3BvbnNlOwotfQorfSAvKiBtdGVfZ2V0X3Jlc3BvbnNlICovCiAKIAogLyoKQEAgLTMxMzIsNyArMzIyOSw2IEBACiB9CiAKIAotCiAvKgogICogUmV0dXJuIDAgaWYgdGhlIGRpc2NvbnRpbnVpdHkgb2JqZWN0IHdhcyBjaGVja2VkIGFuZCBubyBkaXNjb250aW51aXR5IGhhcwogICogb2NjdXJyZWQsIDEgaWYgdGhlIGRpc2NvbnRpbnVpdHkgb2JqZWN0IHdhcyBjaGVja2VkIGFuZCBhIGRpc2NvbnRpbnVpdHkKQEAgLTMyNjMsNyArMzM1OSw3IEBACiAgICAgICovCiAgICAgREVCVUdNU0dUTCgoIm10ZV9kaXNjbyIsICJubyBkaXNjb250aW51aXR5XG4iKSk7CiAgICAgcmV0dXJuIDA7Ci19Cit9IC8qIG10ZV9kaXNjb250aW51aXR5X29jY3VycmVkICovCiAKIAogdm9pZApAQCAtMzY3MCw3ICszNzY2LDggQEAKICAgICB9CiAKICAgICBpdGVtLT5zdGFydGVkID0gTVRFX1NUQVJURUQ7Ci19Cit9IC8qIG10ZV9ydW5fdHJpZ2dlciAqLworCiAKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuaAppbmRleCAxODkxNGRkLi5jNDI3NjAyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5oCkBAIC0yMjksNyArMjI5LDcgQEAKICAgICAgbmV0c25tcF9wZHUgICAgKm10ZV9nZXRfcmVzcG9uc2Uoc3RydWN0IG10ZVRyaWdnZXJUYWJsZV9kYXRhICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcGR1ICopOwogCi0KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyQ29tbWVudDsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJUZXN0OwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlclNhbXBsZVR5cGU7CkBAIC0yNDMsOCArMjQzLDcgQEAKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJPYmplY3RzOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlckVuYWJsZWQ7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyRW50cnlTdGF0dXM7Ci0KLSAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJFbnRyeVN0YXR1czsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAgdm9pZCAgICAgICAgICAgIG10ZV9lbmFibGVfdHJpZ2dlcihzdHJ1Y3QgbXRlVHJpZ2dlclRhYmxlX2RhdGEgKml0ZW0pOwogICAgICB2b2lkICAgICAgICAgICAgbXRlX2Rpc2FibGVfdHJpZ2dlcihzdHJ1Y3QgbXRlVHJpZ2dlclRhYmxlX2RhdGEKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYwppbmRleCAyOGIzM2Q4Li5iZTk2M2MxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jCkBAIC00OCw2ICs0OCw3IEBACiAgKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogc3RydWN0IHZhcmlhYmxlMiBtdGVUcmlnZ2VyVGhyZXNob2xkVGFibGVfdmFyaWFibGVzW10gPSB7CiAgICAgLyoKICAgICAgKiBtYWdpYyBudW1iZXIgICAgICAgICwgdmFyaWFibGUgdHlwZSAsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgTCwgb2lkc3VmZml4IApAQCAtOTcsMTMgKzk4LDY1IEBACiAjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBRkFMTElOR0VWRU5UICAxNwogICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFGQUxMSU5HRVZFTlQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDE1fX0sCi0KIH07CisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCitzdHJ1Y3QgdmFyaWFibGUyIG10ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZV92YXJpYWJsZXNbXSA9IHsKKyAgICAvKgorICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCisgICAgICovCisjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MRFNUQVJUVVAgIDMKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRFNUQVJUVVAsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDF9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xEUklTSU5HICA0CisgICAge01URVRSSUdHRVJUSFJFU0hPTERSSVNJTkcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDJ9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xERkFMTElORyAgNQorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xERkFMTElORywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgM319LAorI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERERUxUQVJJU0lORyAgNgorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFSSVNJTkcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDR9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFGQUxMSU5HICA3CisgICAge01URVRSSUdHRVJUSFJFU0hPTERERUxUQUZBTExJTkcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDV9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xET0JKRUNUU09XTkVSICA4CisgICAge01URVRSSUdHRVJUSFJFU0hPTERPQkpFQ1RTT1dORVIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgNn19LAorI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERPQkpFQ1RTICA5CisgICAge01URVRSSUdHRVJUSFJFU0hPTERPQkpFQ1RTLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDd9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xEUklTSU5HRVZFTlRPV05FUiAgMTAKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRFJJU0lOR0VWRU5UT1dORVIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgOH19LAorI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERSSVNJTkdFVkVOVCAgMTEKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRFJJU0lOR0VWRU5ULCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDl9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xERkFMTElOR0VWRU5UT1dORVIgIDEyCisgICAge01URVRSSUdHRVJUSFJFU0hPTERGQUxMSU5HRVZFTlRPV05FUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCAxMH19LAorI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERGQUxMSU5HRVZFTlQgIDEzCisgICAge01URVRSSUdHRVJUSFJFU0hPTERGQUxMSU5HRVZFTlQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgMTF9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFSSVNJTkdFVkVOVE9XTkVSICAxNAorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFSSVNJTkdFVkVOVE9XTkVSLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDEyfX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBUklTSU5HRVZFTlQgIDE1CisgICAge01URVRSSUdHRVJUSFJFU0hPTERERUxUQVJJU0lOR0VWRU5ULCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDEzfX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBRkFMTElOR0VWRU5UT1dORVIgIDE2CisgICAge01URVRSSUdHRVJUSFJFU0hPTERERUxUQUZBTExJTkdFVkVOVE9XTkVSLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDE0fX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBRkFMTElOR0VWRU5UICAxNworICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFGQUxMSU5HRVZFTlQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgMTV9fSwKK307CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCisKIC8qCiAgKiAoTCA9IGxlbmd0aCBvZiB0aGUgb2lkc3VmZml4KSAKICAqLwogCi0KIC8qCiAgKiBnbG9iYWwgc3RvcmFnZSBvZiBvdXIgZGF0YSwgc2F2ZWQgaW4gYW5kIGNvbmZpZ3VyZWQgYnkgaGVhZGVyX2NvbXBsZXgoKSAKICAqLwpAQCAtMTUxLDYgKzIwNCwxMCBAQAogCiAgICAgREVCVUdNU0dUTCgoIm10ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSIsCiAgICAgICAgICAgICAgICAgInZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGU6IEVudGVyaW5nLi4uICBcbiIpKTsKKworCS8qIHNldCBkZWZhdWx0IHZhbHVlICovCisJKndyaXRlX21ldGhvZCA9IE5VTEw7CisKICAgICAvKgogICAgICAqIHRoaXMgYXNzdW1lcyB5b3UgaGF2ZSByZWdpc3RlcmVkIGFsbCB5b3VyIGRhdGEgcHJvcGVybHkKICAgICAgKi8KQEAgLTE3MCw4MCArMjI3LDExMCBAQAogCiAKICAgICBjYXNlIE1URVRSSUdHRVJUSFJFU0hPTERTVEFSVFVQOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJUaHJlc2hvbGRTdGFydHVwOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YoU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZFN0YXJ0dXApOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGRTdGFydHVwOwogCiAgICAgY2FzZSBNVEVUUklHR0VSVEhSRVNIT0xEUklTSU5HOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJUaHJlc2hvbGRSaXNpbmc7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkUmlzaW5nKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkUmlzaW5nOwogCiAgICAgY2FzZSBNVEVUUklHR0VSVEhSRVNIT0xERkFMTElORzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyVGhyZXNob2xkRmFsbGluZzsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGRGYWxsaW5nKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkRmFsbGluZzsKIAogICAgIGNhc2UgTVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBUklTSU5HOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJUaHJlc2hvbGREZWx0YVJpc2luZzsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGREZWx0YVJpc2luZyk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZERlbHRhUmlzaW5nOwogCiAgICAgY2FzZSBNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFGQUxMSU5HOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJUaHJlc2hvbGREZWx0YUZhbGxpbmc7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFGYWxsaW5nKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFGYWxsaW5nOwogCiAgICAgY2FzZSBNVEVUUklHR0VSVEhSRVNIT0xET0JKRUNUU09XTkVSOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJUaHJlc2hvbGRPYmplY3RzT3duZXI7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGRPYmplY3RzT3duZXJMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGRPYmplY3RzT3duZXI7CiAKICAgICBjYXNlIE1URVRSSUdHRVJUSFJFU0hPTERPQkpFQ1RTOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJUaHJlc2hvbGRPYmplY3RzOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkT2JqZWN0c0xlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZE9iamVjdHM7CiAKICAgICBjYXNlIE1URVRSSUdHRVJUSFJFU0hPTERSSVNJTkdFVkVOVE9XTkVSOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJUaHJlc2hvbGRSaXNpbmdFdmVudE93bmVyOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkUmlzaW5nRXZlbnRPd25lckxlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZFJpc2luZ0V2ZW50T3duZXI7CiAKICAgICBjYXNlIE1URVRSSUdHRVJUSFJFU0hPTERSSVNJTkdFVkVOVDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyVGhyZXNob2xkUmlzaW5nRXZlbnQ7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGRSaXNpbmdFdmVudExlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZFJpc2luZ0V2ZW50OwogCiAgICAgY2FzZSBNVEVUUklHR0VSVEhSRVNIT0xERkFMTElOR0VWRU5UT1dORVI6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlclRocmVzaG9sZEZhbGxpbmdFdmVudE93bmVyOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkRmFsbGluZ0V2ZW50T3duZXJMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGRGYWxsaW5nRXZlbnRPd25lcjsKIAogICAgIGNhc2UgTVRFVFJJR0dFUlRIUkVTSE9MREZBTExJTkdFVkVOVDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyVGhyZXNob2xkRmFsbGluZ0V2ZW50OworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkRmFsbGluZ0V2ZW50TGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkRmFsbGluZ0V2ZW50OwogCiAgICAgY2FzZSBNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFSSVNJTkdFVkVOVE9XTkVSOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJUaHJlc2hvbGREZWx0YVJpc2luZ0V2ZW50T3duZXI7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGREZWx0YVJpc2luZ0V2ZW50T3duZXJMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPgogICAgICAgICAgICAgbXRlVHJpZ2dlclRocmVzaG9sZERlbHRhUmlzaW5nRXZlbnRPd25lcjsKIAogICAgIGNhc2UgTVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBUklTSU5HRVZFTlQ6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlclRocmVzaG9sZERlbHRhUmlzaW5nRXZlbnQ7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGREZWx0YVJpc2luZ0V2ZW50TGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFSaXNpbmdFdmVudDsKIAogICAgIGNhc2UgTVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBRkFMTElOR0VWRU5UT1dORVI6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlclRocmVzaG9sZERlbHRhRmFsbGluZ0V2ZW50T3duZXI7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9CiAgICAgICAgICAgICBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFGYWxsaW5nRXZlbnRPd25lckxlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+CiAgICAgICAgICAgICBtdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFGYWxsaW5nRXZlbnRPd25lcjsKIAogICAgIGNhc2UgTVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBRkFMTElOR0VWRU5UOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJUaHJlc2hvbGREZWx0YUZhbGxpbmdFdmVudDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZERlbHRhRmFsbGluZ0V2ZW50TGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFGYWxsaW5nRXZlbnQ7CiAKQEAgLTI1Niw3ICszNDMsNyBAQAogCiAKIAotCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAKIGludAogd3JpdGVfbXRlVHJpZ2dlclRocmVzaG9sZFN0YXJ0dXAoaW50IGFjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciAqIHZhcl92YWwsCkBAIC0xNjA3LDMgKzE2OTQsNSBAQAogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KKworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuaAppbmRleCA3YWE2Y2VjLi44ZjMzMDExIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAgICAgIHZvaWQgICAgICAgICAgICBpbml0X210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSh2b2lkKTsKICAgICAgRmluZFZhck1ldGhvZCAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGU7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyVGhyZXNob2xkU3RhcnR1cDsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJUaHJlc2hvbGRSaXNpbmc7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyVGhyZXNob2xkRmFsbGluZzsKQEAgLTQyLDUgKzQzLDYgQEAKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJUaHJlc2hvbGREZWx0YVJpc2luZ0V2ZW50OwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlclRocmVzaG9sZERlbHRhRmFsbGluZ0V2ZW50T3duZXI7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFGYWxsaW5nRXZlbnQ7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9NSUJHUk9VUF9NVEVUUklHR0VSVEhSRVNIT0xEVEFCTEVfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYwppbmRleCAyMjVjOTVjLi4wZjcxZGE2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYwpAQCAtMTYsOSArMTYsMTQgQEAKICAqIFRoaXMgc2hvdWxkIGFsd2F5cyBiZSBpbmNsdWRlZCBmaXJzdCBiZWZvcmUgYW55dGhpbmcgZWxzZSAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaGVhZGVyX2NvbXBsZXhfZmluZF9lbnRyeSkKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogI2luY2x1ZGUgPGFycGEvaW5ldC5oPgogI2luY2x1ZGUgPG5ldGRiLmg+CiAKQEAgLTQ2LDYgKzUxLDcgQEAKICAgICB7IDEsIDMsIDYsIDEsIDIsIDEsIDgyLCAxLCAzIH07CiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIHN0cnVjdCB2YXJpYWJsZTIgbG9va3VwQ3RsVGFibGVfdmFyaWFibGVzW10gPSB7CiAgICAgLyoKICAgICAgKiBtYWdpYyBudW1iZXIgICAgICAgICwgdmFyaWFibGUgdHlwZSAsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgTCwgb2lkc3VmZml4CkBAIC02Myw2ICs2OSwyNSBAQAogICAgIHtDT0xVTU5fTE9PS1VQQ1RMUk9XU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbG9va3VwQ3RsVGFibGUsIDIsIHsxLCA4fX0KIH07CisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCitzdHJ1Y3QgdmFyaWFibGUyIGxvb2t1cEN0bFRhYmxlX3ZhcmlhYmxlc1tdID0geworICAgIC8qCisgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeAorICAgICAqLworICAgIHtDT0xVTU5fTE9PS1VQQ1RMVEFSR0VUQUREUkVTU1RZUEUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xvb2t1cEN0bFRhYmxlLCAyLCB7MSwgM319LAorICAgIHtDT0xVTU5fTE9PS1VQQ1RMVEFSR0VUQUREUkVTUywgICBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xvb2t1cEN0bFRhYmxlLCAyLCB7MSwgNH19LAorICAgIHtDT0xVTU5fTE9PS1VQQ1RMT1BFUlNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbG9va3VwQ3RsVGFibGUsIDIsIHsxLCA1fX0sCisgICAge0NPTFVNTl9MT09LVVBDVExUSU1FLCAgICAgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9sb29rdXBDdGxUYWJsZSwgMiwgezEsIDZ9fSwKKyAgICB7Q09MVU1OX0xPT0tVUENUTFJDLCAgICAgICAgIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xvb2t1cEN0bFRhYmxlLCAyLCB7MSwgN319LAorICAgIHtDT0xVTU5fTE9PS1VQQ1RMUk9XU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9sb29rdXBDdGxUYWJsZSwgMiwgezEsIDh9fQorfTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIAogLyoKQEAgLTM3Myw2ICszOTgsNyBAQAogICAgICAgICAgICAgICAgICAgIGludCBleGFjdCwgc2l6ZV90ICp2YXJfbGVuLCBXcml0ZU1ldGhvZCAqKiB3cml0ZV9tZXRob2QpCiB7CiAgICAgc3RydWN0IGxvb2t1cFRhYmxlX2RhdGEgKlN0b3JhZ2VUbXAgPSBOVUxMOworICAgICAgICAqd3JpdGVfbWV0aG9kID0gTlVMTDsKIAogICAgIC8qCiAgICAgICogdGhpcyBhc3N1bWVzIHlvdSBoYXZlIHJlZ2lzdGVyZWQgYWxsIHlvdXIgZGF0YSBwcm9wZXJseQpAQCAtMzkwLDEyICs0MTYsMTYgQEAKICAgICAgKi8KICAgICBzd2l0Y2ggKHZwLT5tYWdpYykgewogICAgIGNhc2UgQ09MVU1OX0xPT0tVUENUTFRBUkdFVEFERFJFU1NUWVBFOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX2xvb2t1cEN0bFRhcmdldEFkZHJlc3NUeXBlOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YoU3RvcmFnZVRtcC0+bG9va3VwQ3RsVGFyZ2V0QWRkcmVzc1R5cGUpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIFN0b3JhZ2VUbXAtPmxvb2t1cEN0bFRhcmdldEFkZHJlc3NUeXBlOwogCiAgICAgY2FzZSBDT0xVTU5fTE9PS1VQQ1RMVEFSR0VUQUREUkVTUzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9sb29rdXBDdGxUYXJnZXRBZGRyZXNzOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSAoU3RvcmFnZVRtcC0+bG9va3VwQ3RsVGFyZ2V0QWRkcmVzc0xlbik7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPmxvb2t1cEN0bFRhcmdldEFkZHJlc3M7CiAKQEAgLTQxMiw3ICs0NDIsOSBAQAogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIFN0b3JhZ2VUbXAtPmxvb2t1cEN0bFJjOwogCiAgICAgY2FzZSBDT0xVTU5fTE9PS1VQQ1RMUk9XU1RBVFVTOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX2xvb2t1cEN0bFJvd1N0YXR1czsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKFN0b3JhZ2VUbXAtPmxvb2t1cEN0bFJvd1N0YXR1cyk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgU3RvcmFnZVRtcC0+bG9va3VwQ3RsUm93U3RhdHVzOwogCkBAIC01MDUsOSArNTM3LDkgQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGdldHRpbWVvZmRheSgmdHBzdGFydCwgTlVMTCk7Ci0gICAgICAgIGxvb2t1cCA9IGdldGhvc3RieWFkZHIoJmFkZHJfaW4sIHNpemVvZihhZGRyX2luKSwgQUZfSU5FVCk7Ci0gICAgICAgIGdldHRpbWVvZmRheSgmdHBlbmQsIE5VTEwpOworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnRwc3RhcnQpOworICAgICAgICBsb29rdXAgPSBuZXRzbm1wX2dldGhvc3RieWFkZHIoJmFkZHJfaW4sIHNpemVvZihhZGRyX2luKSwgQUZfSU5FVCk7CisgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmdHBlbmQpOwogICAgICAgICB0aW1ldXNlID0gMTAwMDAwMCAqICh0cGVuZC50dl9zZWMgLSB0cHN0YXJ0LnR2X3NlYykgKwogICAgICAgICAgICAgdHBlbmQudHZfdXNlYyAtIHRwc3RhcnQudHZfdXNlYzsKICAgICAgICAgdGltZXVzZSAvPSAxMDAwOwpAQCAtNTU1LDkgKzU4Nyw5IEBACiAgICAgICAgIHN0cnVjdCBhZGRyaW5mbyBoaW50cyA9IHsgMCwgQUZfSU5FVDYsIFNPQ0tfREdSQU0gfTsKICNlbmRpZgogCi0gICAgICAgIGdldHRpbWVvZmRheSgmdHBzdGFydCwgTlVMTCk7Ci0gICAgICAgIGxvb2t1cCA9IGdldGhvc3RieW5hbWUoYWRkcmVzcyk7Ci0gICAgICAgIGdldHRpbWVvZmRheSgmdHBlbmQsIE5VTEwpOworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnRwc3RhcnQpOworICAgICAgICBsb29rdXAgPSBuZXRzbm1wX2dldGhvc3RieW5hbWUoYWRkcmVzcyk7CisgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmdHBlbmQpOwogICAgICAgICB0aW1ldXNlNCA9IDEwMDAwMDAgKiAodHBlbmQudHZfc2VjIC0gdHBzdGFydC50dl9zZWMpICsKICAgICAgICAgICAgIHRwZW5kLnR2X3VzZWMgLSB0cHN0YXJ0LnR2X3VzZWM7CiAgICAgICAgIGlmIChsb29rdXAgPT0gTlVMTCkgewpAQCAtNTg0LDYgKzYxNiw3IEBACiAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSBhZGRfcmVzdWx0KGl0ZW0sIG4sIElORVRBRERSRVNTVFlQRV9VTktOT1dOLCAiIiwgMCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgibG9va3VwQ3RsVGFibGUiLCAiQWRkaW5nICVkICVzXG4iLCBuLCBidWYpKTsKIAogICAgICAgICAgICAgICAgIGlmIChuID09IDEpCiAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPlJlc3VsdHNUYWJsZSA9IHRlbXA7CkBAIC01OTYsOSArNjI5LDkgQEAKICAgICAgICAgfQogCiAjaWYgSEFWRV9HRVRBRERSSU5GTwotICAgICAgICBnZXR0aW1lb2ZkYXkoJnRwc3RhcnQsIE5VTEwpOwotICAgICAgICByZXMgPSBnZXRhZGRyaW5mbyhhZGRyZXNzLCBOVUxMLCAmaGludHMsICZhaXMpOwotICAgICAgICBnZXR0aW1lb2ZkYXkoJnRwZW5kLCBOVUxMKTsKKyAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZ0cHN0YXJ0KTsKKyAgICAgICAgcmVzID0gbmV0c25tcF9nZXRhZGRyaW5mbyhhZGRyZXNzLCBOVUxMLCAmaGludHMsICZhaXMpOworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnRwZW5kKTsKICAgICAgICAgdGltZXVzZTYgPSAxMDAwMDAwICogKHRwZW5kLnR2X3NlYyAtIHRwc3RhcnQudHZfc2VjKSArCiAgICAgICAgICAgICB0cGVuZC50dl91c2VjIC0gdHBzdGFydC50dl91c2VjOwogCkBAIC02MTYsMTQgKzY0OSwxNCBAQAogICAgICAgICAgICAgICAgIHN3aXRjaCAoYWlwLT5haV9mYW1pbHkpIHsKICAgICAgICAgICAgICAgICBjYXNlIEFGX0lORVQ6CiAgICAgICAgICAgICAgICAgICAgIGluZXRfbnRvcChhaXAtPmFpX2ZhbWlseSwKLSAgICAgICAgICAgICAgICAgICAgICAgICYoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKWFpcC0+YWlfYWRkciktPnNpbl9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKWFpcC0+YWlfYWRkciktPnNpbl9hZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCBzaXplb2YoYnVmKSk7CiAgICAgICAgICAgICAgICAgICAgIGJ1ZmxlbiA9IHN0cmxlbihidWYpOwogICAgICAgICAgICAgICAgICAgICB0ZW1wID0gYWRkX3Jlc3VsdChpdGVtLCBuLCBJTkVUQUREUkVTU1RZUEVfSVBWNCwgYnVmLCBidWZsZW4pOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIEFGX0lORVQ2OgogICAgICAgICAgICAgICAgICAgICBpbmV0X250b3AoYWlwLT5haV9mYW1pbHksCi0gICAgICAgICAgICAgICAgICAgICAgICAmKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopYWlwLT5haV9hZGRyKS0+c2luNl9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhaXAtPmFpX2FkZHIpLT5zaW42X2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIHNpemVvZihidWYpKTsKICAgICAgICAgICAgICAgICAgICAgYnVmbGVuID0gc3RybGVuKGJ1Zik7CiAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSBhZGRfcmVzdWx0KGl0ZW0sIG4sIElORVRBRERSRVNTVFlQRV9JUFY2LCBidWYsIGJ1Zmxlbik7CkBAIC02NDYsOSArNjc5LDkgQEAKICAgICAgICAgICAgIGZyZWVhZGRyaW5mbyhhaXMpOwogICAgICAgICB9CiAjZWxpZiBIQVZFX0dFVEhPU1RCWU5BTUUyCi0gICAgICAgIGdldHRpbWVvZmRheSgmdHBzdGFydCwgTlVMTCk7CisgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmdHBzdGFydCk7CiAgICAgICAgIGxvb2t1cCA9IGdldGhvc3RieW5hbWUyKGFkZHJlc3MsIEFGX0lORVQ2KTsKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0cGVuZCwgTlVMTCk7CisgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmdHBlbmQpOwogICAgICAgICB0aW1ldXNlNiA9IDEwMDAwMDAgKiAodHBlbmQudHZfc2VjIC0gdHBzdGFydC50dl9zZWMpICsKICAgICAgICAgICAgIHRwZW5kLnR2X3VzZWMgLSB0cHN0YXJ0LnR2X3VzZWM7CiAKQEAgLTcxNSw5ICs3NDgsOSBAQAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBERUJVR01TR1RMKCgibG9va3VwQ3RsVGFibGUiLCAiZXJyb3IhIFxuIikpOwogCi0gICAgICAgIGdldHRpbWVvZmRheSgmdHBzdGFydCwgTlVMTCk7Ci0gICAgICAgIGxvb2t1cCA9IGdldGhvc3RieWFkZHIoJmFkZHJfaW42LCBzaXplb2YoYWRkcl9pbjYpLCBBRl9JTkVUNik7Ci0gICAgICAgIGdldHRpbWVvZmRheSgmdHBlbmQsIE5VTEwpOworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnRwc3RhcnQpOworICAgICAgICBsb29rdXAgPSBuZXRzbm1wX2dldGhvc3RieWFkZHIoJmFkZHJfaW42LCBzaXplb2YoYWRkcl9pbjYpLCBBRl9JTkVUNik7CisgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmdHBlbmQpOwogICAgICAgICB0aW1ldXNlID0gMTAwMDAwMCAqICh0cGVuZC50dl9zZWMgLSB0cHN0YXJ0LnR2X3NlYykgKwogICAgICAgICAgICAgdHBlbmQudHZfdXNlYyAtIHRwc3RhcnQudHZfdXNlYzsKICAgICAgICAgdGltZXVzZSAvPSAxMDAwOwpAQCAtODkyLDYgKzkyNSw3IEBACiB9CiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIGludAogd3JpdGVfbG9va3VwQ3RsVGFyZ2V0QWRkcmVzc1R5cGUoaW50IGFjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciAqIHZhcl92YWwsCkBAIC0xMzc4LDMgKzE0MTIsNCBAQAogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5oCmluZGV4IDdhNzI5YWIuLjA4NWIyNWIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5oCkBAIC02NCwxMiArNjQsMTMgQEAKIHZvaWQgICAgICAgICAgICBwYXJzZV9sb29rdXBDdGxUYWJsZShjb25zdCBjaGFyICosIGNoYXIgKik7CiBTTk1QQ2FsbGJhY2sgICAgc3RvcmVfbG9va3VwQ3RsVGFibGU7CiAKLQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgCiBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbG9va3VwQ3RsVGFyZ2V0QWRkcmVzc1R5cGU7CiBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbG9va3VwQ3RsVGFyZ2V0QWRkcmVzczsKIFdyaXRlTWV0aG9kICAgICB3cml0ZV9sb29rdXBDdGxSb3dTdGF0dXM7CiAKIFdyaXRlTWV0aG9kICAgICB3cml0ZV9sb29rdXBDdGxSb3dTdGF0dXM7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAvKgogICogY29sdW1uIG51bWJlciBkZWZpbml0aW9ucyBmb3IgdGFibGUgbG9va3VwQ3RsVGFibGUgCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jCmluZGV4IDM1MjE4ZjguLjg3YjA5ZWYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jCkBAIC01NSw2ICs1NSw3IEBACiBzdGF0aWMgX19pbmxpbmVfXyBpbnQgaXB2Nl9hZGRyX2FueShzdHJ1Y3QgaW42X2FkZHIgKik7CiBzdGF0aWMgY2hhciAgICAqcHJfYWRkcihzdHJ1Y3QgaW42X2FkZHIgKiwgaW50KTsKIHN0YXRpYyBjaGFyICAgICpwcl9hZGRyX24oc3RydWN0IGluNl9hZGRyICopOwordm9pZCBwaW5nQ3RsVGFibGVfY2xlYW5lcihzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKnRoZXN0dWZmKTsKIAogLyoKICAqcGluZ0N0bFRhYmxlX3ZhcmlhYmxlc19vaWQ6CkBAIC02NCw2ICs2NSw3IEBACiAKIG9pZCAgICAgICAgICAgICBwaW5nQ3RsVGFibGVfdmFyaWFibGVzX29pZFtdID0KICAgICB7IDEsIDMsIDYsIDEsIDIsIDEsIDgwLCAxLCAyIH07CitzdGF0aWMgY29uc3QgaW50IHBpbmdDdGxUYWJsZV92YXJpYWJsZXNfb2lkX2xlbiA9IHNpemVvZihwaW5nQ3RsVGFibGVfdmFyaWFibGVzX29pZCkvc2l6ZW9mKHBpbmdDdGxUYWJsZV92YXJpYWJsZXNfb2lkWzBdKTsKIAogLyogdHJhcCAqLwogb2lkICAgICAgICAgICAgIHBpbmdQcm9iZUZhaWxlZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA4MCwgMCwgMSB9OwpAQCAtMTU3LDE0ICsxNTksMjQgQEAKICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgImRvbmUuXG4iKSk7CiB9CiAKK3ZvaWQgc2h1dGRvd25fcGluZ0N0bFRhYmxlKHZvaWQpCit7CisgICAgc25tcF91bnJlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwgU05NUF9DQUxMQkFDS19TVE9SRV9EQVRBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZV9waW5nQ3RsVGFibGUsIE5VTEwsIDEpOworICAgIHNubXBkX3VucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInBpbmdDdGxUYWJsZSIpOworICAgIHVucmVnaXN0ZXJfbWliKHBpbmdDdGxUYWJsZV92YXJpYWJsZXNfb2lkLCBwaW5nQ3RsVGFibGVfdmFyaWFibGVzX29pZF9sZW4pOworICAgIHBpbmdDdGxUYWJsZV9jbGVhbmVyKHBpbmdDdGxUYWJsZVN0b3JhZ2UpOworICAgIHBpbmdDdGxUYWJsZVN0b3JhZ2UgPSBOVUxMOworfQorCiBzdHJ1Y3QgcGluZ0N0bFRhYmxlX2RhdGEgKgogY3JlYXRlX3BpbmdDdGxUYWJsZV9kYXRhKHZvaWQpCiB7CiAgICAgc3RydWN0IHBpbmdDdGxUYWJsZV9kYXRhICpTdG9yYWdlTmV3ID0gTlVMTDsKKwogICAgIFN0b3JhZ2VOZXcgPSBTTk1QX01BTExPQ19TVFJVQ1QocGluZ0N0bFRhYmxlX2RhdGEpOwotICAgIGlmIChTdG9yYWdlTmV3ID09IE5VTEwpIHsKLSAgICAgICAgZXhpdCgxKTsKLSAgICB9CisgICAgaWYgKFN0b3JhZ2VOZXcgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgU3RvcmFnZU5ldy0+cGluZ0N0bFRhcmdldEFkZHJlc3NUeXBlID0gMTsKICAgICBTdG9yYWdlTmV3LT5waW5nQ3RsVGFyZ2V0QWRkcmVzcyA9IHN0cmR1cCgiIik7CiAgICAgU3RvcmFnZU5ldy0+cGluZ0N0bFRhcmdldEFkZHJlc3NMZW4gPSAwOwpAQCAtMTcyLDE5ICsxODQsMTcgQEAKICAgICBTdG9yYWdlTmV3LT5waW5nQ3RsVGltZU91dCA9IDM7CiAgICAgU3RvcmFnZU5ldy0+cGluZ0N0bFByb2JlQ291bnQgPSAxOwogICAgIFN0b3JhZ2VOZXctPnBpbmdDdGxBZG1pblN0YXR1cyA9IDI7Ci0gICAgU3RvcmFnZU5ldy0+cGluZ0N0bERhdGFGaWxsID0gKGNoYXIgKikgbWFsbG9jKHN0cmxlbigiMDAiKSArIDEpOworICAgIFN0b3JhZ2VOZXctPnBpbmdDdGxEYXRhRmlsbCA9IHN0cmR1cCgiMDAiKTsKICAgICBpZiAoU3RvcmFnZU5ldy0+cGluZ0N0bERhdGFGaWxsID09IE5VTEwpIHsKLSAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgZnJlZShTdG9yYWdlTmV3KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG1lbWNweShTdG9yYWdlTmV3LT5waW5nQ3RsRGF0YUZpbGwsICIwMCIsIHN0cmxlbigiMDAiKSArIDEpOwotICAgIFN0b3JhZ2VOZXctPnBpbmdDdGxEYXRhRmlsbFtzdHJsZW4oIjAwIildID0gJ1wwJzsKICAgICBTdG9yYWdlTmV3LT5waW5nQ3RsRGF0YUZpbGxMZW4gPSBzdHJsZW4oU3RvcmFnZU5ldy0+cGluZ0N0bERhdGFGaWxsKTsKICAgICBTdG9yYWdlTmV3LT5waW5nQ3RsRnJlcXVlbmN5ID0gMDsKICAgICBTdG9yYWdlTmV3LT5waW5nQ3RsTWF4Um93cyA9IDUwOwogICAgIFN0b3JhZ2VOZXctPnBpbmdDdGxTdG9yYWdlVHlwZSA9IDE7CiAgICAgU3RvcmFnZU5ldy0+cGluZ0N0bFRyYXBHZW5lcmF0aW9uID0gc3RyZHVwKCIiKTsKICAgICBTdG9yYWdlTmV3LT5waW5nQ3RsVHJhcEdlbmVyYXRpb25MZW4gPSAwOwotICAgIFN0b3JhZ2VOZXctPnBpbmdDdGxUcmFwR2VuZXJhdGlvbkxlbiA9IDA7CiAgICAgU3RvcmFnZU5ldy0+cGluZ0N0bFRyYXBQcm9iZUZhaWx1cmVGaWx0ZXIgPSAxOwogICAgIFN0b3JhZ2VOZXctPnBpbmdDdGxUcmFwVGVzdEZhaWx1cmVGaWx0ZXIgPSAxOwogICAgIFN0b3JhZ2VOZXctPnBpbmdDdGxUeXBlID0gY2FsbG9jKDEsIHNpemVvZihvaWQpICogc2l6ZW9mKDIpKTsgICAgICAgLyogMC4wICovCkBAIC0yMDUsNiArMjE1LDIwIEBACiAgICAgcmV0dXJuIFN0b3JhZ2VOZXc7CiB9CiAKK3N0YXRpYyB2b2lkIGZyZWVfcGluZ0N0bFRhYmxlX2RhdGEoc3RydWN0IHBpbmdDdGxUYWJsZV9kYXRhICpTdG9yYWdlRGVsKQoreworICAgIG5ldHNubXBfYXNzZXJ0KFN0b3JhZ2VEZWwpOworICAgIGZyZWUoU3RvcmFnZURlbC0+cGluZ0N0bE93bmVySW5kZXgpOworICAgIGZyZWUoU3RvcmFnZURlbC0+cGluZ0N0bFRlc3ROYW1lKTsKKyAgICBmcmVlKFN0b3JhZ2VEZWwtPnBpbmdDdGxUYXJnZXRBZGRyZXNzKTsKKyAgICBmcmVlKFN0b3JhZ2VEZWwtPnBpbmdDdGxEYXRhRmlsbCk7CisgICAgZnJlZShTdG9yYWdlRGVsLT5waW5nQ3RsVHJhcEdlbmVyYXRpb24pOworICAgIGZyZWUoU3RvcmFnZURlbC0+cGluZ0N0bFR5cGUpOworICAgIGZyZWUoU3RvcmFnZURlbC0+cGluZ0N0bERlc2NyKTsKKyAgICBmcmVlKFN0b3JhZ2VEZWwtPnBpbmdDdGxTb3VyY2VBZGRyZXNzKTsKKyAgICBmcmVlKFN0b3JhZ2VEZWwpOworfQorCiAvKgogICogcGluZ0N0bFRhYmxlX2FkZCgpOiBhZGRzIGEgc3RydWN0dXJlIG5vZGUgdG8gb3VyIGRhdGEgc2V0IAogICovCkBAIC0yMjEsMTUgKzI0NSwxNiBAQAogICAgICAqLwogCiAKLSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleCwgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOyAgICAgICAvKiBwaW5nQ3RsT3duZXJJbmRleCAqLwotICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZSwgdGhlZGF0YS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsgICAvKiBwaW5nQ3RsT3BlcmF0aW9uTmFtZSAqLwotCi0KKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleExlbik7CisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZUxlbik7CiAgICAgaGVhZGVyX2NvbXBsZXhfYWRkX2RhdGEoJnBpbmdDdGxUYWJsZVN0b3JhZ2UsIHZhcnMsIHRoZWRhdGEpOwogCiAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICJyZWdpc3RlcmVkIGFuIGVudHJ5XG4iKSk7Ci0gICAgdmFycyA9IE5VTEw7Ci0gICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICJkb25lLlxuIikpOworCiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0KIApAQCAtMjM3LDEyICsyNjIsMTYgQEAKIHBpbmdSZXN1bHRzVGFibGVfYWRkKHN0cnVjdCBwaW5nQ3RsVGFibGVfZGF0YSAqdGhlZGF0YSkKIHsKICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcnNfbGlzdCA9IE5VTEw7Ci0gICAgc3RydWN0IHBpbmdSZXN1bHRzVGFibGVfZGF0YSAqcCA9IE5VTEw7CisgICAgc3RydWN0IHBpbmdSZXN1bHRzVGFibGVfZGF0YSAqcDsKKwogICAgIHAgPSB0aGVkYXRhLT5waW5nUmVzdWx0czsKICAgICBpZiAodGhlZGF0YS0+cGluZ1Jlc3VsdHMgIT0gTlVMTCkgewogCi0gICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnNfbGlzdCwgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgcC0+cGluZ0N0bE93bmVySW5kZXgsIHAtPnBpbmdDdGxPd25lckluZGV4TGVuKTsgIC8qIHBpbmdDdGxPd25lckluZGV4ICovCi0gICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnNfbGlzdCwgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgcC0+cGluZ0N0bFRlc3ROYW1lLCBwLT5waW5nQ3RsVGVzdE5hbWVMZW4pOyAgICAgIC8qIHBpbmdDdGxPcGVyYXRpb25OYW1lICovCisgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnNfbGlzdCwgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLT5waW5nQ3RsT3duZXJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLT5waW5nQ3RsT3duZXJJbmRleExlbik7CisgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnNfbGlzdCwgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLT5waW5nQ3RsVGVzdE5hbWUsIHAtPnBpbmdDdGxUZXN0TmFtZUxlbik7CiAKICAgICAgICAgLyoKICAgICAgICAgICogWFhYOiBmaWxsIGluIGRlZmF1bHQgcm93IHZhbHVlcyBoZXJlIGludG8gU3RvcmFnZU5ldyAKQEAgLTI2Miw4ICsyOTEsNiBAQAogCiAgICAgfQogCi0gICAgREVCVUdNU0dUTCgoInBpbmdSZXN1bHRzVGFibGUiLCAiZG9uZS5cbiIpKTsKLSAgICB2YXJzX2xpc3QgPSBOVUxMOwogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CiB9CiAKQEAgLTI3MiwxMSArMjk5LDE4IEBACiBwaW5nUHJvYmVIaXN0b3J5VGFibGVfYWRkKHN0cnVjdCBwaW5nUHJvYmVIaXN0b3J5VGFibGVfZGF0YSAqdGhlZGF0YSkKIHsKICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcnNfbGlzdDsKKwogICAgIHZhcnNfbGlzdCA9IE5VTEw7CiAgICAgaWYgKHRoZWRhdGEgIT0gTlVMTCkgewotICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzX2xpc3QsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4LCB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleExlbik7ICAgICAgLyogcGluZ0N0bE93bmVySW5kZXggKi8KLSAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFyc19saXN0LCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWUsIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZUxlbik7ICAvKiBwaW5nQ3RsVGVzdE5hbWUgKi8KLSAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFyc19saXN0LCBOVUxMLCAwLCBBU05fVU5TSUdORUQsIChjaGFyICopICZ0aGVkYXRhLT5waW5nUHJvYmVIaXN0b3J5SW5kZXgsIHNpemVvZih0aGVkYXRhLT5waW5nUHJvYmVIaXN0b3J5SW5kZXgpKTsgLyogcGluZ1Byb2JlSGlzdG9yeUluZGV4ICovCisgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnNfbGlzdCwgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleExlbik7CisgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnNfbGlzdCwgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsKKyAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFyc19saXN0LCBOVUxMLCAwLCBBU05fVU5TSUdORUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRoZWRhdGEtPnBpbmdQcm9iZUhpc3RvcnlJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodGhlZGF0YS0+cGluZ1Byb2JlSGlzdG9yeUluZGV4KSk7CiAKICAgICAgICAgLyoKICAgICAgICAgICogWFhYOiBmaWxsIGluIGRlZmF1bHQgcm93IHZhbHVlcyBoZXJlIGludG8gU3RvcmFnZU5ldyAKQEAgLTI5NSw1NiArMzI5LDQzIEBACiAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nUHJvYmVIaXN0b3J5VGFibGUiLCAib3V0IGZpbmlzaGVkXG4iKSk7CiAgICAgfQogICAgIAotICAgIHZhcnNfbGlzdCA9IE5VTEw7Ci0gICAgREVCVUdNU0dUTCgoInBpbmdQcm9iZUhpc3RvcnlUYWJsZSIsICJkb25lLlxuIikpOwogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CiB9CiAKIGludAogcGluZ1Byb2JlSGlzdG9yeVRhYmxlX2FkZGFsbChzdHJ1Y3QgcGluZ0N0bFRhYmxlX2RhdGEgKnRoZWRhdGEpCiB7Ci0gICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzX2xpc3QgPSBOVUxMOwotICAgIHN0cnVjdCBwaW5nUHJvYmVIaXN0b3J5VGFibGVfZGF0YSAqcCA9IE5VTEw7Ci0gICAgcCA9IHRoZWRhdGEtPnBpbmdQcm9iZUhpczsKLSAgICBpZiAodGhlZGF0YS0+cGluZ1Byb2JlSGlzICE9IE5VTEwpCi0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnNfbGlzdCwgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgcC0+cGluZ0N0bE93bmVySW5kZXgsIHAtPnBpbmdDdGxPd25lckluZGV4TGVuKTsgICAgICAvKiBwaW5nQ3RsT3duZXJJbmRleCAqLwotICAgICAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFyc19saXN0LCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSBwLT5waW5nQ3RsVGVzdE5hbWUsIHAtPnBpbmdDdGxUZXN0TmFtZUxlbik7ICAvKiBwaW5nQ3RsVGVzdE5hbWUgKi8KLSAgICAgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnNfbGlzdCwgTlVMTCwgMCwgQVNOX1VOU0lHTkVELCAoY2hhciAqKSAmcC0+cGluZ1Byb2JlSGlzdG9yeUluZGV4LCBzaXplb2YocC0+cGluZ1Byb2JlSGlzdG9yeUluZGV4KSk7IC8qIHBpbmdQcm9iZUhpc3RvcnlJbmRleCAqLworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyc19saXN0OworICAgIHN0cnVjdCBwaW5nUHJvYmVIaXN0b3J5VGFibGVfZGF0YSAqcDsKIAotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFhYWDogZmlsbCBpbiBkZWZhdWx0IHJvdyB2YWx1ZXMgaGVyZSBpbnRvIFN0b3JhZ2VOZXcgCi0gICAgICAgICAgICAgKiAKLSAgICAgICAgICAgICAqLworICAgIGZvciAocCA9IHRoZWRhdGEtPnBpbmdQcm9iZUhpczsgcDsgcCA9IHAtPm5leHQpIHsKKyAgICAgICAgdmFyc19saXN0ID0gTlVMTDsKKyAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFyc19saXN0LCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAtPnBpbmdDdGxPd25lckluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAtPnBpbmdDdGxPd25lckluZGV4TGVuKTsKKyAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFyc19saXN0LCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAtPnBpbmdDdGxUZXN0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLT5waW5nQ3RsVGVzdE5hbWVMZW4pOworICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzX2xpc3QsIE5VTEwsIDAsIEFTTl9VTlNJR05FRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcC0+cGluZ1Byb2JlSGlzdG9yeUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihwLT5waW5nUHJvYmVIaXN0b3J5SW5kZXgpKTsKKyAgICAgICAgaGVhZGVyX2NvbXBsZXhfYWRkX2RhdGEoJnBpbmdQcm9iZUhpc3RvcnlUYWJsZVN0b3JhZ2UsIHZhcnNfbGlzdCwgcCk7CisgICAgfQogCi0KLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nUHJvYmVIaXN0b3J5VGFibGUiLCAiYWRkaW5nIGRhdGEuLi4gICIpKTsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBhZGQgdGhlIGluZGV4IHZhcmlhYmxlcyB0byB0aGUgdmFyYmluZCBsaXN0LCB3aGljaCBpcyAKLSAgICAgICAgICAgICAqIHVzZWQgYnkgaGVhZGVyX2NvbXBsZXggdG8gaW5kZXggdGhlIGRhdGEgCi0gICAgICAgICAgICAgKi8KLQotICAgICAgICAgICAgaGVhZGVyX2NvbXBsZXhfYWRkX2RhdGEoJnBpbmdQcm9iZUhpc3RvcnlUYWJsZVN0b3JhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJzX2xpc3QsIHApOwotCi0KLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nUHJvYmVIaXN0b3J5VGFibGUiLCAib3V0IGZpbmlzaGVkXG4iKSk7Ci0gICAgICAgICAgICB2YXJzX2xpc3QgPSBOVUxMOwotICAgICAgICAgICAgcCA9IHAtPm5leHQ7Ci0gICAgICAgIH0gd2hpbGUgKHAgIT0gTlVMTCk7Ci0KLSAgICBERUJVR01TR1RMKCgicGluZ1Byb2JlSGlzdG9yeVRhYmxlIiwgImRvbmUuXG4iKSk7CiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0KIAogdm9pZAogcGluZ0N0bFRhYmxlX2NsZWFuZXIoc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICp0aGVzdHVmZikKIHsKLSAgICBzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKmhjaXB0cjsKKyAgICBzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKmhjaXB0ciwgKm5leHQ7CisgICAgc3RydWN0IHBpbmdDdGxUYWJsZV9kYXRhICpTdG9yYWdlRGVsOwogCiAgICAgREVCVUdNU0dUTCgoInBpbmdQcm9iZUhpc3RvcnlUYWJsZSIsICJjbGVhbmVyb3V0ICAiKSk7Ci0gICAgZm9yIChoY2lwdHIgPSB0aGVzdHVmZjsgaGNpcHRyICE9IE5VTEw7IGhjaXB0ciA9IGhjaXB0ci0+bmV4dCkgewotICAgICAgICBoZWFkZXJfY29tcGxleF9leHRyYWN0X2VudHJ5KCZwaW5nQ3RsVGFibGVTdG9yYWdlLCBoY2lwdHIpOworICAgIGZvciAoaGNpcHRyID0gdGhlc3R1ZmY7IGhjaXB0cjsgaGNpcHRyID0gbmV4dCkgeworICAgICAgICBuZXh0ID0gaGNpcHRyLT5uZXh0OworICAgICAgICBTdG9yYWdlRGVsID0gaGVhZGVyX2NvbXBsZXhfZXh0cmFjdF9lbnRyeSgmcGluZ0N0bFRhYmxlU3RvcmFnZSwgaGNpcHRyKTsKKyAgICAgICAgZnJlZV9waW5nQ3RsVGFibGVfZGF0YShTdG9yYWdlRGVsKTsKICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdQcm9iZUhpc3RvcnlUYWJsZSIsICJjbGVhbmVyICAiKSk7CiAgICAgfQogfQpAQCAtODQyLDEwICs4NjMsMTUgQEAKICAgICBzaXplX3QgICAgICAgICAgbmV3b2lkX2xlbjsKICAgICB1bnNpZ25lZCBsb25nICAgY291bnQgPSAwOwogCi0gICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXgsIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4TGVuKTsgICAgICAgLyogcGluZ0N0bE93bmVySW5kZXggKi8KLSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWUsIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZUxlbik7ICAgLyogcGluZ0N0bE9wZXJhdGlvbk5hbWUgKi8KKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleExlbik7CisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZUxlbik7CiAKICAgICBoZWFkZXJfY29tcGxleF9nZW5lcmF0ZV9vaWQobmV3b2lkLCAmbmV3b2lkX2xlbiwgTlVMTCwgMCwgdmFycyk7CisgICAgc25tcF9mcmVlX3ZhcmJpbmQodmFycyk7CiAKICAgICBmb3IgKGhjaXB0cjIgPSBwaW5nUHJvYmVIaXN0b3J5VGFibGVTdG9yYWdlOyBoY2lwdHIyICE9IE5VTEw7CiAgICAgICAgICBoY2lwdHIyID0gaGNpcHRyMi0+bmV4dCkgewpAQCAtODYzLDE3ICs4ODksMjEgQEAKIHsKICAgICBzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKmhjaXB0cjIgPSBOVUxMOwogICAgIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqaGNpbGFzdCA9IE5VTEw7Ci0gICAgc3RydWN0IHBpbmdQcm9iZUhpc3RvcnlUYWJsZV9kYXRhICpTdG9yYWdlVG1wID0gTlVMTDsKKyAgICBzdHJ1Y3QgcGluZ1Byb2JlSGlzdG9yeVRhYmxlX2RhdGEgKlN0b3JhZ2VUbXAsICpTdG9yYWdlRGVsOwogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycyA9IE5VTEw7CiAgICAgb2lkICAgICAgICAgICAgIG5ld29pZFtNQVhfT0lEX0xFTl07CiAgICAgc2l6ZV90ICAgICAgICAgIG5ld29pZF9sZW47CiAgICAgdGltZV90ICAgICAgICAgIGxhc3RfdGltZSA9IDIxNDc0ODM2NDc7CiAgICAgdGltZV90ICAgICAgICAgIHRwOwogCi0gICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXgsIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4TGVuKTsgICAgICAgLyogcGluZ0N0bE93bmVySW5kZXggKi8KLSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWUsIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZUxlbik7ICAgLyogcGluZ0N0bE9wZXJhdGlvbk5hbWUgKi8KLQorICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4TGVuKTsKKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bFRlc3ROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsKICAgICBoZWFkZXJfY29tcGxleF9nZW5lcmF0ZV9vaWQobmV3b2lkLCAmbmV3b2lkX2xlbiwgTlVMTCwgMCwgdmFycyk7CisgICAgc25tcF9mcmVlX3ZhcmJpbmQodmFycyk7CiAKICAgICBmb3IgKGhjaWxhc3QgPSBoY2lwdHIyID0gcGluZ1Byb2JlSGlzdG9yeVRhYmxlU3RvcmFnZTsgaGNpcHRyMiAhPSBOVUxMOwogICAgICAgICAgaGNpcHRyMiA9IGhjaXB0cjItPm5leHQpIHsKQEAgLTg5Myw3ICs5MjMsMjUgQEAKIAogICAgICAgICB9CiAgICAgfQotICAgIGhlYWRlcl9jb21wbGV4X2V4dHJhY3RfZW50cnkoJnBpbmdQcm9iZUhpc3RvcnlUYWJsZVN0b3JhZ2UsIGhjaWxhc3QpOworICAgIFN0b3JhZ2VEZWwgPQorICAgICAgICBoZWFkZXJfY29tcGxleF9leHRyYWN0X2VudHJ5KCZwaW5nUHJvYmVIaXN0b3J5VGFibGVTdG9yYWdlLCBoY2lsYXN0KTsKKyAgICBmb3IgKGhjaXB0cjIgPSBwaW5nQ3RsVGFibGVTdG9yYWdlOyBoY2lwdHIyOyBoY2lwdHIyID0gaGNpcHRyMi0+bmV4dCkgeworICAgICAgICBzdHJ1Y3QgcGluZ0N0bFRhYmxlX2RhdGEgKnRtcDsKKworICAgICAgICB0bXAgPSBoY2lwdHIyLT5kYXRhOworICAgICAgICBpZiAodG1wLT5waW5nUHJvYmVIaXMgPT0gU3RvcmFnZURlbCkgeworICAgICAgICAgICAgdG1wLT5waW5nUHJvYmVIaXMgPSB0bXAtPnBpbmdQcm9iZUhpcy0+bmV4dDsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nUHJvYmVIaXN0b3J5VGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgImRlbGV0aW5nIHRoZSBsYXN0IG9uZSBzdWNjZWVkZWQhXG4iKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAJfQorICAgIH0KKyAgICBpZiAoU3RvcmFnZURlbCkgeworICAgICAgICBmcmVlKFN0b3JhZ2VEZWwtPnBpbmdQcm9iZUhpc3RvcnlUaW1lKTsKKyAgICAgICAgZnJlZShTdG9yYWdlRGVsLT5waW5nQ3RsVGVzdE5hbWUpOworICAgICAgICBmcmVlKFN0b3JhZ2VEZWwtPnBpbmdDdGxPd25lckluZGV4KTsKKyAgICAgICAgZnJlZShTdG9yYWdlRGVsKTsKKyAgICB9CiAgICAgREVCVUdNU0dUTCgoInBpbmdQcm9iZUhpc3RvcnlUYWJsZSIsCiAgICAgICAgICAgICAgICAgImRlbGV0ZSB0aGUgbGFzdCBvbmUgc3VjY2VzcyFcbiIpKTsKIH0KQEAgLTk2OSw4ICsxMDE3LDEwIEBACiB7CiAgICAgY2hhciAgICAgICAgICAgKnB0cjsKIAotICAgIGlmICgocHRyID0gc29ja19udG9wX2hvc3Qoc2EsIHNhbGVuKSkgPT0gTlVMTCkKLSAgICAgICAgcHJpbnRmKCJzb2NrX250b3BfaG9zdCBlcnJvciIpOyAvKiBpbmV0X250b3AoKSBzZXRzIGVycm5vICovCisgICAgaWYgKChwdHIgPSBzb2NrX250b3BfaG9zdChzYSwgc2FsZW4pKSA9PSBOVUxMKSB7CisgICAgICAgIC8qIGluZXRfbnRvcCgpIHNldHMgZXJybm8gKi8KKyAgICAgICAgc25tcF9sb2dfcGVycm9yKCJwaW5nQ3RsVGFibGU6IHNvY2tfbnRvcF9ob3N0KCkiKTsKKyAgICB9CiAgICAgcmV0dXJuIChwdHIpOwogfQogCkBAIC0xMDIzLDcgKzEwNzMsNyBAQAogICAgIGhpbnRzLmFpX2ZhbWlseSA9IGZhbWlseTsgICAvKiBBRl9VTlNQRUMsIEFGX0lORVQsIEFGX0lORVQ2LCBldGMuICovCiAgICAgaGludHMuYWlfc29ja3R5cGUgPSBzb2NrdHlwZTsgICAgICAgLyogMCwgU09DS19TVFJFQU0sIFNPQ0tfREdSQU0sIGV0Yy4gKi8KIAotICAgIGlmICgobiA9IGdldGFkZHJpbmZvKGhvc3QsIHNlcnYsICZoaW50cywgJnJlcykpICE9IDApCisgICAgaWYgKChuID0gbmV0c25tcF9nZXRhZGRyaW5mbyhob3N0LCBzZXJ2LCAmaGludHMsICZyZXMpKSAhPSAwKQogICAgICAgICByZXR1cm4gKE5VTEwpOwogCiAgICAgcmV0dXJuIChyZXMpOyAgICAgICAgICAgICAgIC8qIHJldHVybiBwb2ludGVyIHRvIGZpcnN0IG9uIGxpbmtlZCBsaXN0ICovCkBAIC0xMDUxLDE3ICsxMTAxLDE4IEBACiAgICAgaGludHMuYWlfZmFtaWx5ID0gZmFtaWx5OyAgIC8qIDAsIEFGX0lORVQsIEFGX0lORVQ2LCBldGMuICovCiAgICAgaGludHMuYWlfc29ja3R5cGUgPSBzb2NrdHlwZTsgICAgICAgLyogMCwgU09DS19TVFJFQU0sIFNPQ0tfREdSQU0sIGV0Yy4gKi8KIAotICAgIGlmICgobiA9IGdldGFkZHJpbmZvKGhvc3QsIHNlcnYsICZoaW50cywgJnJlcykpICE9IDApCisgICAgaWYgKChuID0gbmV0c25tcF9nZXRhZGRyaW5mbyhob3N0LCBzZXJ2LCAmaGludHMsICZyZXMpKSAhPSAwKSB7CiAjaWYgSEFWRV9HQUlfU1RSRVJST1IKLSAgICAgICAgcHJpbnRmKCJob3N0X3NlcnYgZXJyb3IgZm9yICVzLCAlczogJXMiLAotICAgICAgICAgICAgICAgKGhvc3QgPT0gTlVMTCkgPyAiKG5vIGhvc3RuYW1lKSIgOiBob3N0LAotICAgICAgICAgICAgICAgKHNlcnYgPT0gTlVMTCkgPyAiKG5vIHNlcnZpY2UgbmFtZSkiIDogc2VydiwKLSAgICAgICAgICAgICAgIGdhaV9zdHJlcnJvcihuKSk7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJob3N0X3NlcnYgZXJyb3IgZm9yICVzLCAlczogJXMiLAorICAgICAgICAgICAgICAgICAoaG9zdCA9PSBOVUxMKSA/ICIobm8gaG9zdG5hbWUpIiA6IGhvc3QsCisgICAgICAgICAgICAgICAgIChzZXJ2ID09IE5VTEwpID8gIihubyBzZXJ2aWNlIG5hbWUpIiA6IHNlcnYsCisgICAgICAgICAgICAgICAgIGdhaV9zdHJlcnJvcihuKSk7CiAjZWxzZQotICAgICAgICBwcmludGYoImhvc3Rfc2VydiBlcnJvciBmb3IgJXMsICVzIiwKLSAgICAgICAgICAgICAgIChob3N0ID09IE5VTEwpID8gIihubyBob3N0bmFtZSkiIDogaG9zdCwKLSAgICAgICAgICAgICAgIChzZXJ2ID09IE5VTEwpID8gIihubyBzZXJ2aWNlIG5hbWUpIiA6IHNlcnYpOworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiaG9zdF9zZXJ2IGVycm9yIGZvciAlcywgJXMiLAorICAgICAgICAgICAgICAgICAoaG9zdCA9PSBOVUxMKSA/ICIobm8gaG9zdG5hbWUpIiA6IGhvc3QsCisgICAgICAgICAgICAgICAgIChzZXJ2ID09IE5VTEwpID8gIihubyBzZXJ2aWNlIG5hbWUpIiA6IHNlcnYpOwogI2VuZGlmCisgICAgfQogCiAgICAgcmV0dXJuIChyZXMpOyAgICAgICAgICAgICAgIC8qIHJldHVybiBwb2ludGVyIHRvIGZpcnN0IG9uIGxpbmtlZCBsaXN0ICovCiB9CkBAIC0xMTA1LDEzICsxMTU2LDE2IEBACiAgICAgb2lkICAgICAgICAgICAgIHBpbmdSZXN1bHRzU2VuZFByb2Jlc1tdID0KICAgICAgICAgeyAxLCAzLCA2LCAxLCAyLCAxLCA4MCwgMSwgMywgMSwgOCB9OwogCi0gICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgaXRlbS0+cGluZ0N0bE93bmVySW5kZXgsIGl0ZW0tPnBpbmdDdGxPd25lckluZGV4TGVuKTsgICAgIC8qIHBpbmdDdGxPd25lckluZGV4ICovCi0gICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgaXRlbS0+cGluZ0N0bFRlc3ROYW1lLCBpdGVtLT5waW5nQ3RsVGVzdE5hbWVMZW4pOyAvKiBwaW5nQ3RsT3BlcmF0aW9uTmFtZSAqLwotICAgIFN0b3JhZ2VUbXAgPSBTTk1QX01BTExPQ19TVFJVQ1QocGluZ1Jlc3VsdHNUYWJsZV9kYXRhKTsKLSAgICBpZiAoKFN0b3JhZ2VUbXAgPQotICAgICAgICAgKHN0cnVjdCBwaW5nUmVzdWx0c1RhYmxlX2RhdGEgKikKLSAgICAgICAgIGhlYWRlcl9jb21wbGV4X2dldChwaW5nUmVzdWx0c1RhYmxlU3RvcmFnZSwgdmFycykpID09IE5VTEwpCi0gICAgICAgIHJldHVybiA7CisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxPd25lckluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsVGVzdE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsVGVzdE5hbWVMZW4pOworICAgIFN0b3JhZ2VUbXAgPSBoZWFkZXJfY29tcGxleF9nZXQocGluZ1Jlc3VsdHNUYWJsZVN0b3JhZ2UsIHZhcnMpOworICAgIHNubXBfZnJlZV92YXJiaW5kKHZhcnMpOworICAgIGlmICghU3RvcmFnZVRtcCkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgLyoKICAgICAgKiBzbm1wVHJhcCBvaWQgCkBAIC0xMjM3LDE0ICsxMjkxLDE2IEBACiAgICAgLyogc3RydWN0IHBpbmdQcm9iZUhpc3RvcnlUYWJsZV9kYXRhICogY3VycmVudD1OVUxMOyAqLwogICAgIHN0cnVjdCBwaW5nUHJvYmVIaXN0b3J5VGFibGVfZGF0YSBjdXJyZW50X3ZhcjsKICAgICBpbnQgICAgICAgICAgICAgc29ja2ZkOworICAgIGludCAgICAgICAgICAgICBzZWxlY3RfcmVzdWx0OwogICAgIGludCAgICAgICAgICAgICBjdXJyZW50X3Byb2JlX3RlbXA7CiAgICAgaW50ICAgICAgICAgICAgIHN1Y2Nlc3NfcHJvYmUgPSAwOwogICAgIGludCAgICAgICAgICAgICBmYWlsX3Byb2JlID0gMDsKICAgICBpbnQgICAgICAgICAgICAgZmxhZzsKLSAgICB1bnNpZ25lZCBsb25nICAqc3VtcnR0OworICAgIHVuc2lnbmVkIGxvbmcgICBzdW1ydHQ7CiAgICAgc3RydWN0IHRpbWV2YWwgIHR2OwogCi0gICAgc3VtcnR0ID0gKHVuc2lnbmVkIGxvbmcgKikgbWFsbG9jKHNpemVvZih1bnNpZ25lZCBsb25nKSk7CisgICAgbWVtc2V0KHNlbmRidWYsIDAsIHNpemVvZihzZW5kYnVmKSk7CisKICAgICBzb2NrZmQgPSBzb2NrZXQocHItPnNhc2VuZC0+c2FfZmFtaWx5LCBTT0NLX1JBVywgcHItPmljbXBwcm90byk7CiAgICAgaWYgKHNvY2tmZCA8IDApIHsKIAlzbm1wX2xvZ19wZXJyb3IoInBpbmdDdGxUYWJsZTogZmFpbGVkIHRvIGNyZWF0ZSBzb2NrZXQiKTsKQEAgLTEyNjMsMjkgKzEzMTksMjkgQEAKICAgICAgICAgKCpwci0+ZnNlbmQpIChkYXRhbGVuLCBwaWQsIG5zZW50LCBzb2NrZmQsIHNlbmRidWYpOwogICAgICAgICBuc2VudCsrOwogICAgICAgICBsZW4gPSBwci0+c2FsZW47Ci0gICAgICAgIGlmIChyZWFkYWJsZV90aW1lbyhzb2NrZmQsIGl0ZW0tPnBpbmdDdGxUaW1lT3V0KSA9PSAwKSB7Ci0gICAgICAgICAgICAvKiBwcmludGYoInNvY2tldCB0aW1lb3V0IVxuIik7ICovCi0gICAgICAgICAgICBuID0gLTE7Ci0gICAgICAgICAgICBmYWlsX3Byb2JlID0gZmFpbF9wcm9iZSArIDE7Ci0gICAgICAgICAgICBmbGFnID0gMTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG4gPSByZWN2ZnJvbShzb2NrZmQsIHJlY3ZidWYsIHNpemVvZihyZWN2YnVmKSwgMCwgcHItPnNhcmVjdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmbGVuKTsKLSAgICAgICAgICAgIHN1Y2Nlc3NfcHJvYmUgPSBzdWNjZXNzX3Byb2JlICsgMTsKLSAgICAgICAgICAgIGZsYWcgPSAwOwotICAgICAgICB9CisgICAgICAgIHNlbGVjdF9yZXN1bHQgPSByZWFkYWJsZV90aW1lbyhzb2NrZmQsIGl0ZW0tPnBpbmdDdGxUaW1lT3V0KTsKKyAgICAgICAgZG8geworICAgICAgICAgICAgaWYgKHNlbGVjdF9yZXN1bHQgPT0gMCkgeworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAic29ja2V0IHRpbWVvdXRcbiIpKTsKKyAgICAgICAgICAgICAgICBuID0gLTE7CisgICAgICAgICAgICAgICAgZmFpbF9wcm9iZSA9IGZhaWxfcHJvYmUgKyAxOworICAgICAgICAgICAgICAgIGZsYWcgPSAxOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBuID0gcmVjdmZyb20oc29ja2ZkLCByZWN2YnVmLCBzaXplb2YocmVjdmJ1ZiksIDAsIHByLT5zYXJlY3YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsZW4pOworICAgICAgICAgICAgICAgIHN1Y2Nlc3NfcHJvYmUgPSBzdWNjZXNzX3Byb2JlICsgMTsKKyAgICAgICAgICAgICAgICBmbGFnID0gMDsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBnZXR0aW1lb2ZkYXkoJnR2YWwsIE5VTEwpOworICAgICAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZ0dmFsKTsKIAotICAgICAgICB0aW1lKCZ0aW1lcCk7CisgICAgICAgICAgICB0aW1lKCZ0aW1lcCk7CiAKLSAgICAgICAgKCpwci0+ZnByb2MpIChyZWN2YnVmLCBuLCAmdHZhbCwgdGltZXAsIGl0ZW0sIGFpLCBkYXRhbGVuLCBtaW5ydHQsCi0gICAgICAgICAgICAgICAgICAgICAgbWF4cnR0LCBzdW1ydHQsIGF2ZXJhZ2VydHQsIGN1cnJlbnRfcHJvYmVfdGVtcCwKLSAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzX3Byb2JlLCBmYWlsX3Byb2JlLCBmbGFnLCAmY3VycmVudF92YXIsIHBpZCk7Ci0gICAgICAgIGlmIChjdXJyZW50X3Byb2JlX3RlbXAgPj0gaXRlbS0+cGluZ0N0bFByb2JlQ291bnQpIHsKLSAgICAgICAgICAgIFNOTVBfRlJFRShzdW1ydHQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgICAgICAoKnByLT5mcHJvYykgKHJlY3ZidWYsIG4sICZ0dmFsLCB0aW1lcCwgaXRlbSwgYWksIGRhdGFsZW4sIG1pbnJ0dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4cnR0LCAmc3VtcnR0LCBhdmVyYWdlcnR0LCBjdXJyZW50X3Byb2JlX3RlbXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NfcHJvYmUsIGZhaWxfcHJvYmUsIGZsYWcsICZjdXJyZW50X3ZhciwgcGlkKTsKKyAgICAgICAgICAgIHNlbGVjdF9yZXN1bHQgPSByZWFkYWJsZV90aW1lbyhzb2NrZmQsIDApOworICAgICAgICB9IHdoaWxlIChzZWxlY3RfcmVzdWx0ID4gMCk7CiAgICAgfQogICAgIGNsb3NlKHNvY2tmZCk7CiB9CkBAIC0xMzIwLDkgKzEzNzYsMTEgQEAKICAgICBzdGF0aWMgaW50ICAgICAgcHJvYmVGYWlsZWQgPSAwOwogICAgIHN0YXRpYyBpbnQgICAgICB0ZXN0RmFpbGVkID0gMDsKICAgICBzdGF0aWMgaW50ICAgICAgc2VyaWVzID0gMDsKLQogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycyA9IE5VTEw7CiAgICAgc3RydWN0IHBpbmdSZXN1bHRzVGFibGVfZGF0YSAqU3RvcmFnZU5ldyA9IE5VTEw7CisKKyAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgInByb2NfdjQoZmxhZyA9ICVkKVxuIiwgZmxhZykpOworCiAgICAgaWYgKGZsYWcgPT0gMCkgewogICAgICAgICBzZXJpZXMgPSAwOwogICAgICAgICBpcCA9IChzdHJ1Y3QgaXAgKikgcHRyOyAvKiBzdGFydCBvZiBJUCBoZWFkZXIgKi8KQEAgLTEzMzAsMTQgKzEzODgsMjAgQEAKIAogICAgICAgICBpY21wID0gKHN0cnVjdCBpY21wICopIChwdHIgKyBobGVuMSk7ICAgLyogc3RhcnQgb2YgSUNNUCBoZWFkZXIgKi8KICAgICAgICAgaWYgKChpY21wbGVuID0gbGVuIC0gaGxlbjEpIDwgOCkKLSAgICAgICAgICAgIHByaW50ZigiaWNtcGxlbiAoJWQpIDwgOCIsIGljbXBsZW4pOworICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICJpY21wbGVuICglZCkgPCA4IiwgaWNtcGxlbikpOworCisgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiSUNNUCB0eXBlID0gJWQgKCVzYSByZXBseSlcbiIsCisgICAgICAgICAgICAgICAgICAgIGljbXAtPmljbXBfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgaWNtcC0+aWNtcF90eXBlID09IElDTVBfRUNIT1JFUExZID8gIiIgOiAibm90IGEgIikpOwogCiAgICAgICAgIGlmIChpY21wLT5pY21wX3R5cGUgPT0gSUNNUF9FQ0hPUkVQTFkpIHsKLSAgICAgICAgICAgIGlmIChpY21wLT5pY21wX2lkICE9IHBpZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsgICAgICAgICAvKiBub3QgYSByZXNwb25zZSB0byBvdXIgRUNIT19SRVFVRVNUICovCi0gICAgICAgICAgICBpZiAoaWNtcGxlbiA8IDE2KQotICAgICAgICAgICAgICAgIHByaW50ZigiaWNtcGxlbiAoJWQpIDwgMTYiLCBpY21wbGVuKTsKKyAgICAgICAgICAgIGlmIChpY21wLT5pY21wX2lkICE9IHBpZCkgeworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAibm90IGEgcmVzcG9uc2UgdG8gb3VyIEVDSE9fUkVRVUVTVFxuIikpOworICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICAgICAgfQogCisgICAgICAgICAgICBpZiAoaWNtcGxlbiA8IDE2KQorICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiaWNtcGxlbiAoJWQpIDwgMTYiLCBpY21wbGVuKSk7CiAKICAgICAgICAgICAgIHR2c2VuZCA9IChzdHJ1Y3QgdGltZXZhbCAqKSBpY21wLT5pY21wX2RhdGE7CiAKQEAgLTEzNDUsMTQgKzE0MDksMTkgQEAKICAgICAgICAgICAgICAgICByb3VuZF9kb3VibGUoKDEwMDAwMDAgKiAodHZyZWN2LT50dl9zZWMgLSB0dnNlbmQtPnR2X3NlYykgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHZyZWN2LT50dl91c2VjIC0gdHZzZW5kLT50dl91c2VjKSAvIDEwMDApOwogCi0gICAgICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSBpdGVtLT5waW5nQ3RsT3duZXJJbmRleCwgaXRlbS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOyAgICAgLyogcGluZ0N0bE93bmVySW5kZXggKi8KLSAgICAgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZSwgaXRlbS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsgLyogcGluZ0N0bFRlc3ROYW1lICovCisgICAgICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsT3duZXJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOworICAgICAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bFRlc3ROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsVGVzdE5hbWVMZW4pOwogCi0KLSAgICAgICAgICAgIGlmICgoU3RvcmFnZU5ldyA9Ci0gICAgICAgICAgICAgICAgIGhlYWRlcl9jb21wbGV4X2dldChwaW5nUmVzdWx0c1RhYmxlU3RvcmFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcnMpKSA9PSBOVUxMKQorICAgICAgICAgICAgU3RvcmFnZU5ldyA9IGhlYWRlcl9jb21wbGV4X2dldChwaW5nUmVzdWx0c1RhYmxlU3RvcmFnZSwgdmFycyk7CisgICAgICAgICAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsKKyAgICAgICAgICAgIGlmICghU3RvcmFnZU5ldykgeworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiU3RvcmFnZU5ldyA9PSBOVUxMXG4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PU1VDSE5BTUU7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChjdXJyZW50X3Byb2JlID09IDEpIHsKICAgICAgICAgICAgICAgICAqYXZlcmFnZXJ0dCA9IHJ0dDsKQEAgLTEzNjAsNyArMTQyOSw2IEBACiAgICAgICAgICAgICAgICAgKm1heHJ0dCA9IHJ0dDsKICAgICAgICAgICAgICAgICAqc3VtcnR0ID0gcnR0OwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwcmludGYoImVsc2VcbiIpOwogICAgICAgICAgICAgICAgIGlmIChydHQgPCAqbWlucnR0KQogICAgICAgICAgICAgICAgICAgICAqbWlucnR0ID0gcnR0OwogICAgICAgICAgICAgICAgIGlmIChydHQgPiAqbWF4cnR0KQpAQCAtMTM4NCw2ICsxNDUyLDcgQEAKICAgICAgICAgICAgICAgICBTdG9yYWdlTmV3LT5waW5nUmVzdWx0c1J0dFN1bU9mU3F1YXJlcyArIHJ0dCAqIHJ0dDsKIAogCSAgICBTdG9yYWdlTmV3LT5waW5nUmVzdWx0c0xhc3RHb29kUHJvYmVfdGltZSA9IHRpbWVwOworICAgICAgICAgICAgZnJlZShTdG9yYWdlTmV3LT5waW5nUmVzdWx0c0xhc3RHb29kUHJvYmUpOwogICAgICAgICAgICAgU3RvcmFnZU5ldy0+cGluZ1Jlc3VsdHNMYXN0R29vZFByb2JlID0KICAgICAgICAgICAgICAgICBuZXRzbm1wX21lbWR1cChkYXRlX25fdGltZSgmdGltZXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTdG9yYWdlTmV3LT5waW5nUmVzdWx0c0xhc3RHb29kUHJvYmVMZW4pLApAQCAtMTQyOCw1MiArMTQ5NywzOSBAQAogCiAgICAgICAgICAgICBpZiAoU3RvcmFnZU5ldy0+cGluZ1Jlc3VsdHNTZW5kUHJvYmVzID09IDEpCiAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ1Byb2JlSGlzID0gdGVtcDsKLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIChjdXJyZW50X3RlbXApLT5uZXh0ID0gdGVtcDsKLSAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY3VycmVudF90ZW1wID0gdGVtcDsKIAotICAgICAgICAgICAgaWYgKFN0b3JhZ2VOZXctPnBpbmdSZXN1bHRzU2VuZFByb2JlcyA+PQotICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxQcm9iZUNvdW50KSB7CisgICAgICAgICAgICBpZiAoU3RvcmFnZU5ldy0+cGluZ1Jlc3VsdHNTZW5kUHJvYmVzID49IGl0ZW0tPnBpbmdDdGxQcm9iZUNvdW50KQogICAgICAgICAgICAgICAgIGN1cnJlbnRfdGVtcC0+bmV4dCA9IE5VTEw7Ci0gICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChpdGVtLT5waW5nUHJvYmVIaXMgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGlmIChwaW5nUHJvYmVIaXN0b3J5VGFibGVfY291bnQoaXRlbSkgPAotICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsTWF4Um93cykgewotICAgICAgICAgICAgICAgICAgICBpZiAocGluZ1Byb2JlSGlzdG9yeVRhYmxlX2FkZChjdXJyZW50X3RlbXApICE9Ci0gICAgICAgICAgICAgICAgICAgICAgICBTTk1QRVJSX1NVQ0NFU1MpCi0gICAgICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ1Byb2JlSGlzdG9yeVRhYmxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWdpc3RlcmVkIGFuIGVudHJ5IGVycm9yXG4iKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAocGluZ1Byb2JlSGlzdG9yeVRhYmxlX2NvdW50KGl0ZW0pID49IGl0ZW0tPnBpbmdDdGxNYXhSb3dzKQogICAgICAgICAgICAgICAgICAgICBwaW5nUHJvYmVIaXN0b3J5VGFibGVfZGVsTGFzdChpdGVtKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBpbmdQcm9iZUhpc3RvcnlUYWJsZV9hZGQoY3VycmVudF90ZW1wKSAhPQotICAgICAgICAgICAgICAgICAgICAgICAgU05NUEVSUl9TVUNDRVNTKQotICAgICAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdQcm9iZUhpc3RvcnlUYWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVnaXN0ZXJlZCBhbiBlbnRyeSBlcnJvclxuIikpOwotCi0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChwaW5nUHJvYmVIaXN0b3J5VGFibGVfYWRkKGN1cnJlbnRfdGVtcCkgIT0gU05NUEVSUl9TVUNDRVNTKQorICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ1Byb2JlSGlzdG9yeVRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBhZGQgYSByb3dcbiIpKTsKIAkgICAgfQogICAgICAgICB9Ci0gICAgfQotCi0gICAgZWxzZSBpZiAoZmxhZyA9PSAxKQotICAgIHsKLQotCisgICAgfSBlbHNlIGlmIChmbGFnID09IDEpIHsKICAgICAgICAgaWYgKHNlcmllcyA9PSAwKQogICAgICAgICAgICAgcHJvYmVGYWlsZWQgPSAxOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcm9iZUZhaWxlZCA9IHByb2JlRmFpbGVkICsgMTsKICAgICAgICAgc2VyaWVzID0gMTsKICAgICAgICAgdGVzdEZhaWxlZCA9IHRlc3RGYWlsZWQgKyAxOwotICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSBpdGVtLT5waW5nQ3RsT3duZXJJbmRleCwgaXRlbS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOyAvKiAgcGluZ0N0bE93bmVySW5kZXggKi8KLSAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgaXRlbS0+cGluZ0N0bFRlc3ROYW1lLCBpdGVtLT5waW5nQ3RsVGVzdE5hbWVMZW4pOyAgICAgLyogcGluZ0N0bFRlc3ROYW1lICovCisgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bE93bmVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOworICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsVGVzdE5hbWVMZW4pOwogCi0KLSAgICAgICAgaWYgKChTdG9yYWdlTmV3ID0KLSAgICAgICAgICAgICBoZWFkZXJfY29tcGxleF9nZXQocGluZ1Jlc3VsdHNUYWJsZVN0b3JhZ2UsIHZhcnMpKSA9PSBOVUxMKQorICAgICAgICBTdG9yYWdlTmV3ID0gaGVhZGVyX2NvbXBsZXhfZ2V0KHBpbmdSZXN1bHRzVGFibGVTdG9yYWdlLCB2YXJzKTsKKyAgICAgICAgc25tcF9mcmVlX3ZhcmJpbmQodmFycyk7CisgICAgICAgIGlmICghU3RvcmFnZU5ldykKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT1NVQ0hOQU1FOwogCiAgICAgICAgIGlmIChjdXJyZW50X3Byb2JlID09IDEpIHsKQEAgLTE2MDMsNyArMTY1OSw3IEBACiAgICAgaWNtcC0+aWNtcF9jb2RlID0gMDsKICAgICBpY21wLT5pY21wX2lkID0gcGlkOwogICAgIGljbXAtPmljbXBfc2VxID0gbnNlbnQ7Ci0gICAgZ2V0dGltZW9mZGF5KChzdHJ1Y3QgdGltZXZhbCAqKSBpY21wLT5pY21wX2RhdGEsIE5VTEwpOworICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygoc3RydWN0IHRpbWV2YWwgKikgaWNtcC0+aWNtcF9kYXRhKTsKIAogICAgIGxlbiA9IDggKyBkYXRhbGVuOyAgICAgICAgICAvKiBjaGVja3N1bSBJQ01QIGhlYWRlciBhbmQgZGF0YSAqLwogICAgIGljbXAtPmljbXBfY2tzdW0gPSAwOwpAQCAtMTYyMSwxMiArMTY3NywxNSBAQAogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycyA9IE5VTEw7CiAgICAgc3RydWN0IHBpbmdSZXN1bHRzVGFibGVfZGF0YSAqU3RvcmFnZU5ldyA9IE5VTEw7CiAKLSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSBpdGVtLT5waW5nQ3RsT3duZXJJbmRleCwgaXRlbS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOyAgICAgLyogcGluZ0N0bE93bmVySW5kZXggICovCi0gICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgaXRlbS0+cGluZ0N0bFRlc3ROYW1lLCBpdGVtLT5waW5nQ3RsVGVzdE5hbWVMZW4pOyAvKiBwaW5nQ3RsVGVzdE5hbWUgICovCisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxPd25lckluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsVGVzdE5hbWUsIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZUxlbik7CiAKLQotICAgIGlmICgoU3RvcmFnZU5ldyA9Ci0gICAgICAgICBoZWFkZXJfY29tcGxleF9nZXQocGluZ1Jlc3VsdHNUYWJsZVN0b3JhZ2UsIHZhcnMpKSA9PSBOVUxMKQorICAgIFN0b3JhZ2VOZXcgPSBoZWFkZXJfY29tcGxleF9nZXQocGluZ1Jlc3VsdHNUYWJsZVN0b3JhZ2UsIHZhcnMpOworICAgIHNubXBfZnJlZV92YXJiaW5kKHZhcnMpOworICAgIGlmICghU3RvcmFnZU5ldykKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RvcmFnZU5ldy0+cGluZ1Jlc3VsdHNTZW5kUHJvYmVzID0gMDsKQEAgLTE2NTQsMzQgKzE3MTMsNDEgQEAKIAogICAgICAgICBhaSA9IGhvc3Rfc2Vydihob3N0LCBOVUxMLCAwLCAwKTsKIAotICAgICAgICBwcmludGYoIlBJTkcgJXMgKCVzKTogJWQgZGF0YSBieXRlc1xuIiwgYWktPmFpX2Nhbm9ubmFtZSwKLSAgICAgICAgICAgICAgIHNvY2tfbnRvcF9ob3N0KGFpLT5haV9hZGRyLCBhaS0+YWlfYWRkcmxlbiksIGRhdGFsZW4pOworICAgICAgICBpZiAoYWkpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiUElORyAlcyAoJXMpOiAlZCBkYXRhIGJ5dGVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgYWktPmFpX2Nhbm9ubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tfbnRvcF9ob3N0KGFpLT5haV9hZGRyLCBhaS0+YWlfYWRkcmxlbiksIGRhdGFsZW4pKTsKIAotICAgICAgICAvKgotICAgICAgICAgKiA0aW5pdGlhbGl6ZSBhY2NvcmRpbmcgdG8gcHJvdG9jb2wgCi0gICAgICAgICAqLwotICAgICAgICBpZiAoYWktPmFpX2ZhbWlseSA9PSBBRl9JTkVUKSB7Ci0gICAgICAgICAgICBwciA9ICZwcm90b192NDsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiA0aW5pdGlhbGl6ZSBhY2NvcmRpbmcgdG8gcHJvdG9jb2wgCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmIChhaS0+YWlfZmFtaWx5ID09IEFGX0lORVQpIHsKKyAgICAgICAgICAgICAgICBwciA9ICZwcm90b192NDsKICNpZmRlZglJUFY2Ci0gICAgICAgIH0gZWxzZSBpZiAoYWktPmFpX2ZhbWlseSA9PSBBRl9JTkVUNikgewotICAgICAgICAgICAgcHIgPSAmcHJvdG9fdjY7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGFpLT5haV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKKyAgICAgICAgICAgICAgICBwciA9ICZwcm90b192NjsKIAotICAgICAgICAgICAgaWYgKElONl9JU19BRERSX1Y0TUFQUEVEKCYoKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWktPmFpX2FkZHIpLT5zaW42X2FkZHIpKSkKLSAgICAgICAgICAgICAgICBwcmludGYoImNhbm5vdCBwaW5nIElQdjQtbWFwcGVkIElQdjYgYWRkcmVzcyIpOworICAgICAgICAgICAgICAgIGlmIChJTjZfSVNfQUREUl9WNE1BUFBFRCgmKCgoc3RydWN0IHNvY2thZGRyX2luNiAqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhaS0+YWlfYWRkciktPnNpbjZfYWRkcikpKQorICAgICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY2Fubm90IHBpbmcgSVB2NC1tYXBwZWQgSVB2NiBhZGRyZXNzIik7CiAjZW5kaWYKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBwcmludGYoInVua25vd24gYWRkcmVzcyBmYW1pbHkgJWQiLCBhaS0+YWlfZmFtaWx5KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInVua25vd24gYWRkcmVzcyBmYW1pbHkgJWQiLCBhaS0+YWlfZmFtaWx5KTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBwci0+c2FzZW5kID0gYWktPmFpX2FkZHI7Ci0gICAgICAgIHByLT5zYXJlY3YgPSBjYWxsb2MoMSwgYWktPmFpX2FkZHJsZW4pOwotICAgICAgICBwci0+c2FsZW4gPSBhaS0+YWlfYWRkcmxlbjsKLSAgICAgICAgcmVhZGxvb3AoaXRlbSwgYWksIGRhdGFsZW4sIG1pbnJ0dCwgbWF4cnR0LCBhdmVyYWdlcnR0LCBwaWQpOworICAgICAgICAgICAgcHItPnNhc2VuZCA9IGFpLT5haV9hZGRyOworICAgICAgICAgICAgcHItPnNhcmVjdiA9IGNhbGxvYygxLCBhaS0+YWlfYWRkcmxlbik7CisgICAgICAgICAgICBwci0+c2FsZW4gPSBhaS0+YWlfYWRkcmxlbjsKKyAgICAgICAgICAgIHJlYWRsb29wKGl0ZW0sIGFpLCBkYXRhbGVuLCBtaW5ydHQsIG1heHJ0dCwgYXZlcmFnZXJ0dCwgcGlkKTsKKyAgICAgICAgICAgIGZyZWUocHItPnNhcmVjdik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiUElORzogbmFtZSByZXNvbHV0aW9uIGZvciAlcyBmYWlsZWQuXG4iLCBob3N0KTsKKyAgICAgICAgfQogCiAgICAgICAgIFNOTVBfRlJFRShtaW5ydHQpOwogICAgICAgICBTTk1QX0ZSRUUobWF4cnR0KTsKICAgICAgICAgU05NUF9GUkVFKGF2ZXJhZ2VydHQpOwotICAgICAgICBTTk1QX0ZSRUUoYWkpOworICAgICAgICBmcmVlYWRkcmluZm8oYWkpOwogICAgIH0KIAogICAgIGVsc2UgaWYgKGl0ZW0tPnBpbmdDdGxUYXJnZXRBZGRyZXNzVHlwZSA9PSAyKSB7CkBAIC0xNzU3LDEzICsxODIzLDExIEBACiAgICAgICAgIGhvc3RuYW1lID0gdGFyZ2V0OwogCiAgICAgICAgIGlmIChpcHY2X2FkZHJfYW55KCZzb3VyY2Uuc2luNl9hZGRyKSkgewotCiAgICAgICAgICAgICBzb2NrbGVuX3QgICAgICAgYWxlbjsKICAgICAgICAgICAgIGludCAgICAgICAgICAgICBwcm9iZV9mZCA9IHNvY2tldChBRl9JTkVUNiwgU09DS19ER1JBTSwgMCk7CiAKICAgICAgICAgICAgIGlmIChwcm9iZV9mZCA8IDApIHsKLSAgICAgICAgICAgICAgICBwcmludGYoImVycm9yIVxuIik7Ci0gICAgICAgICAgICAgICAgcGVycm9yKCJzb2NrZXQiKTsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZ19wZXJyb3IoInBpbmdDdGxUYWJsZTogSVB2NiBkYXRhZ3JhbSBzb2NrZXQgY3JlYXRpb24iKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZGV2aWNlKSB7CkBAIC0xNzgyLDYgKzE4NDYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlvY3RsKHByb2JlX2ZkLCBTSU9DR0lGSU5ERVgsICZpZnIpIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicGluZzogdW5rbm93biBpZmFjZSAlc1xuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2UocHJvYmVfZmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0aG9wLnNpbjZfc2NvcGVfaWQgPSBpZnIuaWZyX2lmaW5kZXg7CkBAIC0xNzk0LDEyICsxODU5LDE0IEBACiAgICAgICAgICAgICAgICAgKHByb2JlX2ZkLCAoc3RydWN0IHNvY2thZGRyICopICZmaXJzdGhvcCwKICAgICAgICAgICAgICAgICAgc2l6ZW9mKGZpcnN0aG9wKSkgPT0gLTEpIHsKICAgICAgICAgICAgICAgICBwZXJyb3IoImNvbm5lY3QiKTsKKyAgICAgICAgICAgICAgICBjbG9zZShwcm9iZV9mZCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYWxlbiA9IHNpemVvZihzb3VyY2UpOwogICAgICAgICAgICAgaWYgKGdldHNvY2tuYW1lKHByb2JlX2ZkLCAoc3RydWN0IHNvY2thZGRyICopICZzb3VyY2UsICZhbGVuKQogICAgICAgICAgICAgICAgID09IC0xKSB7CiAgICAgICAgICAgICAgICAgcGVycm9yKCJnZXRzb2NrbmFtZSIpOworICAgICAgICAgICAgICAgIGNsb3NlKHByb2JlX2ZkKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzb3VyY2Uuc2luNl9wb3J0ID0gMDsKQEAgLTE5MTIsMTUgKzE5NzksMTYgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHByaW50ZigiUElORyAlcyglcykgIiwgaG9zdG5hbWUsCi0gICAgICAgICAgICAgICBwcl9hZGRyKCZ3aGVyZXRvLnNpbjZfYWRkciwgb3B0aW9ucykpOworICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIlBJTkcgJXMoJXMpICIsIGhvc3RuYW1lLAorICAgICAgICAgICAgICAgICAgICBwcl9hZGRyKCZ3aGVyZXRvLnNpbjZfYWRkciwgb3B0aW9ucykpKTsKICAgICAgICAgaWYgKGZsb3dsYWJlbCkKLSAgICAgICAgICAgIHByaW50ZigiLCBmbG93IDB4JTA1eCwgIiwgKHVuc2lnbmVkKSBudG9obChmbG93bGFiZWwpKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiLCBmbG93IDB4JTA1eCwgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCkgbnRvaGwoZmxvd2xhYmVsKSkpOwogICAgICAgICBpZiAoZGV2aWNlIHx8IChvcHRpb25zICYgRl9OVU1FUklDKSkgewotICAgICAgICAgICAgcHJpbnRmKCJmcm9tICVzICVzOiAiLAotICAgICAgICAgICAgICAgICAgIHByX2FkZHJfbigmc291cmNlLnNpbjZfYWRkciksIGRldmljZSA/IDogIiIpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICJmcm9tICVzICVzOiAiLAorICAgICAgICAgICAgICAgICAgICAgICAgcHJfYWRkcl9uKCZzb3VyY2Uuc2luNl9hZGRyKSwgZGV2aWNlID8gOiAiIikpOwogICAgICAgICB9Ci0gICAgICAgIHByaW50ZigiJWQgZGF0YSBieXRlc1xuIiwgZGF0YWxlbik7CisgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiJWQgZGF0YSBieXRlc1xuIiwgZGF0YWxlbikpOwogCiAgICAgICAgIHNldHVwKGljbXBfc29jaywgb3B0aW9ucywgdWlkLCB0aW1lb3V0LCBwcmVsb2FkLCBpbnRlcnZhbCwgZGF0YWxlbiwKICAgICAgICAgICAgICAgKGNoYXIgKikgb3V0cGFjaywgJmlkZW50LCAmc3RhcnRfdGltZSwgJnNjcmVlbl93aWR0aCwKQEAgLTE5NDYsMTggKzIwMTQsMjAgQEAKICAgICBjaGFyICAgICAgICAgICAqaG9zdCA9IE5VTEw7CiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzID0gTlVMTDsKIAotICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIGl0ZW0tPnBpbmdDdGxPd25lckluZGV4LCBpdGVtLT5waW5nQ3RsT3duZXJJbmRleExlbik7ICAgICAvKiBwaW5nQ3RsT3duZXJJbmRleCAgKi8KLSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSBpdGVtLT5waW5nQ3RsVGVzdE5hbWUsIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZUxlbik7IC8qIHBpbmdDdGxUZXN0TmFtZSAgKi8KKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bE93bmVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsT3duZXJJbmRleExlbik7CisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZSwgaXRlbS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsKIAotCi0gICAgaWYgKChTdG9yYWdlTmV3ID0KLSAgICAgICAgIGhlYWRlcl9jb21wbGV4X2dldChwaW5nUmVzdWx0c1RhYmxlU3RvcmFnZSwgdmFycykpICE9IE5VTEwpIHsKKyAgICBTdG9yYWdlTmV3ID0gaGVhZGVyX2NvbXBsZXhfZ2V0KHBpbmdSZXN1bHRzVGFibGVTdG9yYWdlLCB2YXJzKTsKKyAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsKKyAgICBpZiAoU3RvcmFnZU5ldykgewogICAgICAgICBTdG9yYWdlTmV3LT5waW5nUmVzdWx0c1NlbmRQcm9iZXMgPSAwOwogICAgICAgICBTdG9yYWdlTmV3LT5waW5nUmVzdWx0c1Byb2JlUmVzcG9uc2VzID0gMDsKICAgICAgICAgcmV0dXJuOwotCiAgICAgfQotICAgIGFpID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgYWRkcmluZm8pKTsKKwogICAgIGhvc3QgPSBpdGVtLT5waW5nQ3RsVGFyZ2V0QWRkcmVzczsKICAgICBhaSA9IGhvc3Rfc2Vydihob3N0LCBOVUxMLCAwLCAwKTsKICAgICBTdG9yYWdlVG1wID0gU05NUF9NQUxMT0NfU1RSVUNUKHBpbmdSZXN1bHRzVGFibGVfZGF0YSk7CkBAIC0xOTgwLDI2ICsyMDUwLDE0IEBACiAKICAgICBpZiAoaXRlbS0+cGluZ0N0bFRhcmdldEFkZHJlc3NUeXBlID09IDEKICAgICAgICAgfHwgaXRlbS0+cGluZ0N0bFRhcmdldEFkZHJlc3NUeXBlID09IDE2KSB7Ci0gICAgICAgIGlmIChhaSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBTdG9yYWdlVG1wLT5waW5nUmVzdWx0c0lwVGFyZ2V0QWRkcmVzc1R5cGUgPSAwOwotICAgICAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3MgPSBzdHJkdXAoIiIpOwotICAgICAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3NMZW4gPSAwOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3NUeXBlID0gMTsKLSAgICAgICAgICAgIFN0b3JhZ2VUbXAtPnBpbmdSZXN1bHRzSXBUYXJnZXRBZGRyZXNzID0KLSAgICAgICAgICAgICAgICAoY2hhciAqKQotICAgICAgICAgICAgICAgIG1hbGxvYyhzdHJsZW4oc29ja19udG9wX2hvc3QoYWktPmFpX2FkZHIsIGFpLT5haV9hZGRybGVuKSkKLSAgICAgICAgICAgICAgICAgICAgICAgKyAxKTsKLSAgICAgICAgICAgIFN0b3JhZ2VUbXAtPnBpbmdSZXN1bHRzSXBUYXJnZXRBZGRyZXNzID0KLSAgICAgICAgICAgICAgICBzdHJkdXAoc29ja19udG9wX2hvc3QoYWktPmFpX2FkZHIsIGFpLT5haV9hZGRybGVuKSk7Ci0gICAgICAgICAgICBTdG9yYWdlVG1wLT4KLSAgICAgICAgICAgICAgICBwaW5nUmVzdWx0c0lwVGFyZ2V0QWRkcmVzc1tzdHJsZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc29ja19udG9wX2hvc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFpLT5haV9hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWktPmFpX2FkZHJsZW4pKV0gPSAnXDAnOwotICAgICAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3NMZW4gPQotICAgICAgICAgICAgICAgIHN0cmxlbihzb2NrX250b3BfaG9zdChhaS0+YWlfYWRkciwgYWktPmFpX2FkZHJsZW4pKTsKLSAgICAgICAgfQorICAgICAgICBjb25zdCBjaGFyKiBzdHI7CisKKyAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3NUeXBlID0gYWkgPyAxIDogMDsKKyAgICAgICAgc3RyID0gYWkgPyBzb2NrX250b3BfaG9zdChhaS0+YWlfYWRkciwgYWktPmFpX2FkZHJsZW4pIDogTlVMTDsKKyAgICAgICAgaWYgKCFzdHIpCisgICAgICAgICAgICBzdHIgPSAiIjsKKyAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3MgPSBzdHJkdXAoc3RyKTsKKyAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3NMZW4gPSBzdHJsZW4oc3RyKTsKICAgICB9CiAgICAgaWYgKGl0ZW0tPnBpbmdDdGxUYXJnZXRBZGRyZXNzVHlwZSA9PSAyKSB7CiAKQEAgLTIwMTQsMTAgKzIwNzIsNyBAQAogCiAgICAgICAgIGlmIChpbmV0X3B0b24oQUZfSU5FVDYsIGhvc3QsICZ0by0+c2luNl9hZGRyKSA+IDApIHsKICAgICAgICAgICAgIFN0b3JhZ2VUbXAtPnBpbmdSZXN1bHRzSXBUYXJnZXRBZGRyZXNzVHlwZSA9IDI7Ci0gICAgICAgICAgICBTdG9yYWdlVG1wLT5waW5nUmVzdWx0c0lwVGFyZ2V0QWRkcmVzcyA9Ci0gICAgICAgICAgICAgICAgKGNoYXIgKikgbWFsbG9jKHN0cmxlbihob3N0KSArIDEpOwogICAgICAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3MgPSBzdHJkdXAoaG9zdCk7Ci0gICAgICAgICAgICBTdG9yYWdlVG1wLT5waW5nUmVzdWx0c0lwVGFyZ2V0QWRkcmVzc1tzdHJsZW4oaG9zdCldID0gJ1wwJzsKICAgICAgICAgICAgIFN0b3JhZ2VUbXAtPnBpbmdSZXN1bHRzSXBUYXJnZXRBZGRyZXNzTGVuID0gc3RybGVuKGhvc3QpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaHAgPSBnZXRob3N0YnluYW1lMihob3N0LCBBRl9JTkVUNik7CkBAIC0yMDI2LDEzICsyMDgxLDggQEAKICAgICAgICAgICAgICAgICBtZW1tb3ZlKChjYWRkcl90KSAmIHRvLT5zaW42X2FkZHIsIGhwLT5oX2FkZHIsIDE2KTsKICAgICAgICAgICAgICAgICBob3N0bmFtZSA9IGluZXRfbnRvcChBRl9JTkVUNiwgJnRvLT5zaW42X2FkZHIsIHBhLCA2NCk7CiAgICAgICAgICAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3NUeXBlID0gMjsKLSAgICAgICAgICAgICAgICBTdG9yYWdlVG1wLT5waW5nUmVzdWx0c0lwVGFyZ2V0QWRkcmVzcyA9Ci0gICAgICAgICAgICAgICAgICAgIChjaGFyICopIG1hbGxvYyhzdHJsZW4oaG9zdG5hbWUpICsgMSk7CiAgICAgICAgICAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3MgPSBzdHJkdXAoaG9zdG5hbWUpOwotICAgICAgICAgICAgICAgIFN0b3JhZ2VUbXAtPnBpbmdSZXN1bHRzSXBUYXJnZXRBZGRyZXNzW3N0cmxlbihob3N0bmFtZSldID0KLSAgICAgICAgICAgICAgICAgICAgJ1wwJzsKLSAgICAgICAgICAgICAgICBTdG9yYWdlVG1wLT5waW5nUmVzdWx0c0lwVGFyZ2V0QWRkcmVzc0xlbiA9Ci0gICAgICAgICAgICAgICAgICAgIHN0cmxlbihob3N0bmFtZSk7CisgICAgICAgICAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3NMZW4gPSBzdHJsZW4oaG9zdG5hbWUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAodm9pZCkgZnByaW50ZihzdGRlcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyYWNlcm91dGU6IHVua25vd24gaG9zdCAlc1xuIiwgaG9zdCk7CkBAIC0yMDYxLDggKzIxMTEsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIFNOTVBfRlJFRShhaSk7Ci0KKyAgICBmcmVlYWRkcmluZm8oYWkpOwogfQogCiAKQEAgLTIwNzIsMTIgKzIxMjEsMTYgQEAKICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcnMgPSBOVUxMOwogICAgIHN0cnVjdCBwaW5nUmVzdWx0c1RhYmxlX2RhdGEgKlN0b3JhZ2VUbXAgPSBOVUxMOwogCi0gICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXgsIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4TGVuKTsgICAgICAgLyogcGluZ0N0bE93bmVySW5kZXggKi8KLSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWUsIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZUxlbik7ICAgLyogcGluZ0N0bFRlc3ROYW1lICovCisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWVMZW4pOwogCi0KLSAgICBpZiAoKFN0b3JhZ2VUbXAgPQotICAgICAgICAgaGVhZGVyX2NvbXBsZXhfZ2V0KHBpbmdSZXN1bHRzVGFibGVTdG9yYWdlLCB2YXJzKSkgPT0gTlVMTCkKKyAgICBTdG9yYWdlVG1wID0gaGVhZGVyX2NvbXBsZXhfZ2V0KHBpbmdSZXN1bHRzVGFibGVTdG9yYWdlLCB2YXJzKTsKKyAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsKKyAgICBpZiAoIVN0b3JhZ2VUbXApCiAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT1NVQ0hOQU1FOwogICAgIFN0b3JhZ2VUbXAtPnBpbmdSZXN1bHRzT3BlclN0YXR1cyA9IHZhbDsKIApAQCAtMjA4OSwxOSArMjE0MiwyMyBAQAogaW50CiBwaW5nUmVzdWx0c1RhYmxlX2RlbChzdHJ1Y3QgcGluZ0N0bFRhYmxlX2RhdGEgKnRoZWRhdGEpCiB7Ci0gICAgc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICpoY2lwdHIyID0gTlVMTDsKKyAgICBzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKmhjaXB0cjIsICpuZXh0OwogICAgIHN0cnVjdCBwaW5nUmVzdWx0c1RhYmxlX2RhdGEgKlN0b3JhZ2VEZWwgPSBOVUxMOwogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycyA9IE5VTEw7CiAgICAgb2lkICAgICAgICAgICAgIG5ld29pZFtNQVhfT0lEX0xFTl07CiAgICAgc2l6ZV90ICAgICAgICAgIG5ld29pZF9sZW47CiAKLSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleCwgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOyAgICAgICAvKiBwaW5nQ3RsT3duZXJJbmRleCAqLwotICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZSwgdGhlZGF0YS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsgICAvKiBwaW5nQ3RsT3BlcmF0aW9uTmFtZSAqLwotCisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWVMZW4pOwogICAgIGhlYWRlcl9jb21wbGV4X2dlbmVyYXRlX29pZChuZXdvaWQsICZuZXdvaWRfbGVuLCBOVUxMLCAwLCB2YXJzKTsKKyAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsKIAotICAgIGZvciAoaGNpcHRyMiA9IHBpbmdSZXN1bHRzVGFibGVTdG9yYWdlOyBoY2lwdHIyICE9IE5VTEw7Ci0gICAgICAgICBoY2lwdHIyID0gaGNpcHRyMi0+bmV4dCkgeworICAgIGZvciAoaGNpcHRyMiA9IHBpbmdSZXN1bHRzVGFibGVTdG9yYWdlOyBoY2lwdHIyOyBoY2lwdHIyID0gbmV4dCkgeworICAgICAgICBuZXh0ID0gaGNpcHRyMi0+bmV4dDsKICAgICAgICAgaWYgKHNubXBfb2lkX2NvbXBhcmUobmV3b2lkLCBuZXdvaWRfbGVuLCBoY2lwdHIyLT5uYW1lLCBuZXdvaWRfbGVuKQogICAgICAgICAgICAgPT0gMCkgewogICAgICAgICAgICAgU3RvcmFnZURlbCA9CkBAIC0yMTI1LDE5ICsyMTgyLDIzIEBACiBpbnQKIHBpbmdQcm9iZUhpc3RvcnlUYWJsZV9kZWwoc3RydWN0IHBpbmdDdGxUYWJsZV9kYXRhICp0aGVkYXRhKQogewotICAgIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqaGNpcHRyMiA9IE5VTEw7CisgICAgc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICpoY2lwdHIyLCAqbmV4dDsKICAgICBzdHJ1Y3QgcGluZ1Byb2JlSGlzdG9yeVRhYmxlX2RhdGEgKlN0b3JhZ2VEZWwgPSBOVUxMOwogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycyA9IE5VTEw7CiAgICAgb2lkICAgICAgICAgICAgIG5ld29pZFtNQVhfT0lEX0xFTl07CiAgICAgc2l6ZV90ICAgICAgICAgIG5ld29pZF9sZW47CiAKLSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleCwgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOyAgICAgICAvKiBwaW5nQ3RsT3duZXJJbmRleCAqLwotICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZSwgdGhlZGF0YS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsgICAvKiBwaW5nQ3RsT3BlcmF0aW9uTmFtZSAqLwotCisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWVMZW4pOwogICAgIGhlYWRlcl9jb21wbGV4X2dlbmVyYXRlX29pZChuZXdvaWQsICZuZXdvaWRfbGVuLCBOVUxMLCAwLCB2YXJzKTsKKyAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsKIAotICAgIGZvciAoaGNpcHRyMiA9IHBpbmdQcm9iZUhpc3RvcnlUYWJsZVN0b3JhZ2U7IGhjaXB0cjIgIT0gTlVMTDsKLSAgICAgICAgIGhjaXB0cjIgPSBoY2lwdHIyLT5uZXh0KSB7CisgICAgZm9yIChoY2lwdHIyID0gcGluZ1Byb2JlSGlzdG9yeVRhYmxlU3RvcmFnZTsgaGNpcHRyMjsgaGNpcHRyMiA9IG5leHQpIHsKKyAgICAgICAgbmV4dCA9IGhjaXB0cjItPm5leHQ7CiAgICAgICAgIGlmIChzbm1wX29pZF9jb21wYXJlKG5ld29pZCwgbmV3b2lkX2xlbiwgaGNpcHRyMi0+bmFtZSwgbmV3b2lkX2xlbikKICAgICAgICAgICAgID09IDApIHsKICAgICAgICAgICAgIFN0b3JhZ2VEZWwgPQpAQCAtNDAxMSwxNCArNDA3MiwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdmFyX3ZhbF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciAqIHN0YXRQLCBvaWQgKiBuYW1lLCBzaXplX3QgbmFtZV9sZW4pCiB7Ci0gICAgc3RydWN0IHBpbmdDdGxUYWJsZV9kYXRhICpTdG9yYWdlVG1wID0gTlVMTDsKKyAgICBzdHJ1Y3QgcGluZ0N0bFRhYmxlX2RhdGEgKlN0b3JhZ2VUbXA7CiAgICAgc3RhdGljIHN0cnVjdCBwaW5nQ3RsVGFibGVfZGF0YSAqU3RvcmFnZU5ldywgKlN0b3JhZ2VEZWw7CiAgICAgc2l6ZV90ICAgICAgICAgIG5ld2xlbiA9CiAgICAgICAgIG5hbWVfbGVuIC0gKHNpemVvZihwaW5nQ3RsVGFibGVfdmFyaWFibGVzX29pZCkgLyBzaXplb2Yob2lkKSArCiAgICAgICAgICAgICAgICAgICAgIDMgLSAxKTsKICAgICBzdGF0aWMgaW50ICAgICAgb2xkX3ZhbHVlOwogICAgIGludCAgICAgICAgICAgICBzZXRfdmFsdWU7Ci0gICAgc3RhdGljIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycywgKnZwOwogICAgIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqaGNpcHRyID0gTlVMTDsKIAogICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLApAQCAtNDExNyw2ICs0MTc3LDggQEAKICAgICAgICAgICogbWVtb3J5IHJlc2V2ZXJhdGlvbiwgZmluYWwgcHJlcGFyYXRpb24uLi4gCiAgICAgICAgICAqLwogICAgICAgICBpZiAoU3RvcmFnZVRtcCA9PSBOVUxMKSB7CisgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcnMsICp2cDsKKwogICAgICAgICAgICAgaWYgKHNldF92YWx1ZSA9PSBSU19ERVNUUk9ZKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiAgICAgICAgICAgICB9CkBAIC00MTM2LDE1ICs0MTk4LDE0IEBACiAgICAgICAgICAgICAgICAgIChuYW1lCiAgICAgICAgICAgICAgICAgICBbc2l6ZW9mKHBpbmdDdGxUYWJsZV92YXJpYWJsZXNfb2lkKSAvIHNpemVvZihvaWQpICsKICAgICAgICAgICAgICAgICAgICAyXSksIG5ld2xlbiwgdmFycykgIT0gU05NUEVSUl9TVUNDRVNTKSB7Ci0gICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICAgKiBYWFg6IGZyZWUsIHplcm8gdmFycyAKLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAvKiBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsgKi8KKyAgICAgICAgICAgICAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsKICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfSU5DT05TSVNURU5UTkFNRTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHZwID0gdmFyczsKIAogICAgICAgICAgICAgU3RvcmFnZU5ldyA9IGNyZWF0ZV9waW5nQ3RsVGFibGVfZGF0YSgpOworICAgICAgICAgICAgaWYgKCFTdG9yYWdlTmV3KQorICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgICAgICAgICBpZiAodnAtPnZhbF9sZW4gPD0gMzIpIHsKICAgICAgICAgICAgICAgICBTdG9yYWdlTmV3LT5waW5nQ3RsT3duZXJJbmRleCA9IG1hbGxvYyh2cC0+dmFsX2xlbiArIDEpOwogICAgICAgICAgICAgICAgIG1lbWNweShTdG9yYWdlTmV3LT5waW5nQ3RsT3duZXJJbmRleCwgdnAtPnZhbC5zdHJpbmcsCkBAIC00MTgxLDEwICs0MjQyLDcgQEAKICAgICAgICAgICAgIFN0b3JhZ2VOZXctPnBpbmdDdGxSb3dTdGF0dXMgPSBzZXRfdmFsdWU7CiAKIAotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFhYWDogZnJlZSwgemVybyB2YXJzLCBubyBsb25nZXIgbmVlZGVkPyAKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgLyogc25tcF9mcmVlX3ZhcmJpbmQodmFycyk7ICovCisgICAgICAgICAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsKICAgICAgICAgfQogCiAKQEAgLTQxOTUsMTIgKzQyNTMsMTcgQEAKIAogICAgIGNhc2UgRlJFRToKICAgICAgICAgLyoKLSAgICAgICAgICogWFhYOiBmcmVlLCB6ZXJvIHZhcnMgCi0gICAgICAgICAqLwotCi0gICAgICAgIC8qCiAgICAgICAgICAqIFJlbGVhc2UgYW55IHJlc291cmNlcyB0aGF0IGhhdmUgYmVlbiBhbGxvY2F0ZWQgCiAgICAgICAgICAqLworCisgICAgICAgIGlmIChzZXRfdmFsdWUgPT0gUlNfREVTVFJPWSAmJiBTdG9yYWdlTmV3KQorICAgICAgICAgICAgZnJlZV9waW5nQ3RsVGFibGVfZGF0YShTdG9yYWdlTmV3KTsKKyAgICAgICAgU3RvcmFnZU5ldyA9IE5VTEw7CisKKyAgICAgICAgaWYgKFN0b3JhZ2VEZWwpIHsKKyAgICAgICAgICAgIGZyZWVfcGluZ0N0bFRhYmxlX2RhdGEoU3RvcmFnZURlbCk7CisgICAgICAgICAgICBTdG9yYWdlRGVsID0gTlVMTDsKKyAgICAgICAgfQogICAgICAgICBicmVhazsKIAogCkBAIC00MjcxLDEwICs0MzM0LDggQEAKICAgICAgICAgICAgICAgICBoZWFkZXJfY29tcGxleF9maW5kX2VudHJ5KHBpbmdDdGxUYWJsZVN0b3JhZ2UsIFN0b3JhZ2VOZXcpOwogICAgICAgICAgICAgU3RvcmFnZURlbCA9CiAgICAgICAgICAgICAgICAgaGVhZGVyX2NvbXBsZXhfZXh0cmFjdF9lbnRyeSgmcGluZ0N0bFRhYmxlU3RvcmFnZSwgaGNpcHRyKTsKLQotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFhYWDogZnJlZSBpdCAKLSAgICAgICAgICAgICAqLworICAgICAgICAgICAgZnJlZV9waW5nQ3RsVGFibGVfZGF0YShTdG9yYWdlRGVsKTsKKyAgICAgICAgICAgIFN0b3JhZ2VEZWwgPSBOVUxMOwogICAgICAgICB9IGVsc2UgaWYgKFN0b3JhZ2VEZWwgIT0gTlVMTCkgewogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIHJvdyBkZWxldGlvbiwgc28gYWRkIGl0IGFnYWluIApAQCAtNDI4Miw2ICs0MzQzLDcgQEAKICAgICAgICAgICAgIHBpbmdDdGxUYWJsZV9hZGQoU3RvcmFnZURlbCk7CiAgICAgICAgICAgICBwaW5nUmVzdWx0c1RhYmxlX2FkZChTdG9yYWdlRGVsKTsKICAgICAgICAgICAgIHBpbmdQcm9iZUhpc3RvcnlUYWJsZV9hZGRhbGwoU3RvcmFnZURlbCk7CisgICAgICAgICAgICBTdG9yYWdlRGVsID0gTlVMTDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFN0b3JhZ2VUbXAtPnBpbmdDdGxSb3dTdGF0dXMgPSBvbGRfdmFsdWU7CiAgICAgICAgIH0KQEAgLTQzMDMsMzcgKzQzNjUsOCBAQAogICAgICAgICB9CiAKICAgICAgICAgaWYgKFN0b3JhZ2VEZWwgIT0gTlVMTCkgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIGlmKHN0cmxlbihTdG9yYWdlRGVsLT5waW5nQ3RsT3duZXJJbmRleCkhPTApCi0gICAgICAgICAgICAgKiBTTk1QX0ZSRUUoU3RvcmFnZURlbC0+cGluZ0N0bE93bmVySW5kZXgpOwotICAgICAgICAgICAgICogcHJpbnRmKCJDT01NSVQxIFxuIik7Ci0gICAgICAgICAgICAgKiBpZihzdHJsZW4oU3RvcmFnZURlbC0+cGluZ0N0bFRlc3ROYW1lKSE9MCkKLSAgICAgICAgICAgICAqIFNOTVBfRlJFRShTdG9yYWdlRGVsLT5waW5nQ3RsVGVzdE5hbWUpOwotICAgICAgICAgICAgICogcHJpbnRmKCJDT01NSVQyIFxuIik7Ci0gICAgICAgICAgICAgKiBpZihzdHJsZW4oU3RvcmFnZURlbC0+cGluZ0N0bFRhcmdldEFkZHJlc3MpIT0wKQotICAgICAgICAgICAgICogU05NUF9GUkVFKFN0b3JhZ2VEZWwtPnBpbmdDdGxUYXJnZXRBZGRyZXNzKTsKLSAgICAgICAgICAgICAqIHByaW50ZigiQ09NTUlUMyBcbiIpOwotICAgICAgICAgICAgICogaWYoc3RybGVuKFN0b3JhZ2VEZWwtPnBpbmdDdGxEYXRhRmlsbCkhPTApCi0gICAgICAgICAgICAgKiBTTk1QX0ZSRUUoU3RvcmFnZURlbC0+cGluZ0N0bERhdGFGaWxsKTsKLSAgICAgICAgICAgICAqIHByaW50ZigiQ09NTUlUNCBcbiIpOwotICAgICAgICAgICAgICogaWYoc3RybGVuKFN0b3JhZ2VEZWwtPnBpbmdDdGxUcmFwR2VuZXJhdGlvbikhPTApCi0gICAgICAgICAgICAgKiBTTk1QX0ZSRUUoU3RvcmFnZURlbC0+cGluZ0N0bFRyYXBHZW5lcmF0aW9uKTsKLSAgICAgICAgICAgICAqIHByaW50ZigiQ09NTUlUNSBcbiIpOwotICAgICAgICAgICAgICogaWYoU3RvcmFnZURlbC0+cGluZ0N0bFR5cGVMZW4hPTApCi0gICAgICAgICAgICAgKiBTTk1QX0ZSRUUoU3RvcmFnZURlbC0+cGluZ0N0bFR5cGUpOwotICAgICAgICAgICAgICogcHJpbnRmKCJDT01NSVQ2IFxuIik7Ci0gICAgICAgICAgICAgKiBpZihzdHJsZW4oU3RvcmFnZURlbC0+cGluZ0N0bERlc2NyKSE9MCkKLSAgICAgICAgICAgICAqIFNOTVBfRlJFRShTdG9yYWdlRGVsLT5waW5nQ3RsRGVzY3IpOwotICAgICAgICAgICAgICogcHJpbnRmKCJDT01NSVQ3IFxuIik7Ci0gICAgICAgICAgICAgKiBpZihzdHJsZW4oU3RvcmFnZURlbC0+cGluZ0N0bFNvdXJjZUFkZHJlc3MpIT0wKQotICAgICAgICAgICAgICogU05NUF9GUkVFKFN0b3JhZ2VEZWwtPnBpbmdDdGxTb3VyY2VBZGRyZXNzKTsKLSAgICAgICAgICAgICAqIHByaW50ZigiQ09NTUlUOCBcbiIpOwotICAgICAgICAgICAgICovCisgICAgICAgICAgICBmcmVlX3BpbmdDdGxUYWJsZV9kYXRhKFN0b3JhZ2VEZWwpOwogICAgICAgICAgICAgU3RvcmFnZURlbCA9IE5VTEw7Ci0gICAgICAgICAgICAvKiBTdG9yYWdlRGVsID0gMDsgKi8KLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBYWFg6IGZyZWUgaXQsIGl0cyBkZWFkIAotICAgICAgICAgICAgICovCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoU3RvcmFnZVRtcAogICAgICAgICAgICAgICAgICYmIFN0b3JhZ2VUbXAtPnBpbmdDdGxSb3dTdGF0dXMgPT0gUlNfQ1JFQVRFQU5ER08pIHsKQEAgLTQ1MDYsMTQgKzQ1MzksMTMgQEAKICAgICAgKiBDaGVjayB0aGF0IHBhY2tldHMgPCByYXRlKnRpbWUgKyBwcmVsb2FkIAogICAgICAqLwogICAgIGlmICgoKmN1cl90aW1lKS50dl9zZWMgPT0gMCkgewotCi0gICAgICAgIGdldHRpbWVvZmRheShjdXJfdGltZSwgTlVMTCk7CisgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jayhjdXJfdGltZSk7CiAgICAgICAgIHRva2VucyA9IGludGVydmFsICogKHByZWxvYWQgLSAxKTsKICAgICB9IGVsc2UgewogICAgICAgICBsb25nICAgICAgICAgICAgbnRva2VuczsKICAgICAgICAgc3RydWN0IHRpbWV2YWwgIHR2OwogCi0gICAgICAgIGdldHRpbWVvZmRheSgmdHYsIE5VTEwpOworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnR2KTsKICAgICAgICAgbnRva2VucyA9ICh0di50dl9zZWMgLSAoKmN1cl90aW1lKS50dl9zZWMpICogMTAwMCArCiAgICAgICAgICAgICAodHYudHZfdXNlYyAtICgqY3VyX3RpbWUpLnR2X3VzZWMpIC8gMTAwMDsKICAgICAgICAgaWYgKCFpbnRlcnZhbCkgewpAQCAtNDczOCw3ICs0NzcwLDcgQEAKIAogICAgICppZGVudCA9IGdldHBpZCgpICYgMHhGRkZGOwogCi0gICAgZ2V0dGltZW9mZGF5KHN0YXJ0X3RpbWUsIE5VTEwpOworICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jayhzdGFydF90aW1lKTsKIAogI2lmIDAKICAgICBpZiAoKmRlYWRsaW5lKSB7CkBAIC00ODIyLDExICs0ODU0LDExIEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAobnBhY2tldHMgJiYgbnJlY2VpdmVkID49IG5wYWNrZXRzKSB7Ci0gICAgICAgICAgICBwcmludGYoIm5wYWNrZXRzLG5yZWNlaXZlZD0lbGRcbiIsIG5yZWNlaXZlZCk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIm5wYWNrZXRzLG5yZWNlaXZlZD0lbGRcbiIsIG5yZWNlaXZlZCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlYWRsaW5lICYmIG5lcnJvcnMpIHsKLSAgICAgICAgICAgIHByaW50ZigiZGVhZGxpbmVcbiIpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICJkZWFkbGluZVxuIikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtNDg0MSw3ICs0ODczLDcgQEAKICAgICAgICAgICogU2VuZCBwcm9iZXMgc2NoZWR1bGVkIHRvIHRoaXMgdGltZS4gCiAgICAgICAgICAqLwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBwcmludGYoInBpbmdlclxuIik7CisgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgInBpbmdlclxuIikpOwogICAgICAgICAgICAgbmV4dCA9CiAgICAgICAgICAgICAgICAgcGluZ2VyKGljbXBfc29jaywgcHJlbG9hZCwgY21zZ2xlbiwgY21zZ2J1Ziwgd2hlcmV0bywKICAgICAgICAgICAgICAgICAgICAgICAgJnJ0dF9hZGRlbmQsIHVpZCwgb3B0aW9ucywgaW50ZXJ2YWwsIGRhdGFsZW4sCkBAIC00ODQ5LDExICs0ODgxLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgIGRlYWRsaW5lLCAmYWNrZWQsICZucGFja2V0cywgJm5yZWNlaXZlZCwKICAgICAgICAgICAgICAgICAgICAgICAgJm50cmFuc21pdHRlZCwgJm5lcnJvcnMsICZjb25maXJtX2ZsYWcsICZjb25maXJtLAogICAgICAgICAgICAgICAgICAgICAgICAmcGlwZXNpemUsICZjdXJfdGltZSk7Ci0gICAgICAgICAgICBwcmludGYoIjE6bmV4dD0lZFxuIiwgbmV4dCk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIjE6bmV4dD0lZFxuIiwgbmV4dCkpOwogICAgICAgICAgICAgbmV4dCA9CiAgICAgICAgICAgICAgICAgc2NoZWR1bGVfZXhpdChuZXh0LCBkZWFkbGluZSwgJm5wYWNrZXRzLCAmbnJlY2VpdmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm50cmFuc21pdHRlZCwgJnRtYXgpOwotICAgICAgICAgICAgcHJpbnRmKCIyOm5leHQ9JWRcbiIsIG5leHQpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICIyOm5leHQ9JWRcbiIsIG5leHQpKTsKICAgICAgICAgfSB3aGlsZSAobmV4dCA8PSAwKTsKIAogICAgICAgICAvKgpAQCAtNDk0Miw4ICs0OTc0LDYgQEAKICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBpbmdQcm9iZUhpc3RvcnlUYWJsZV9kYXRhICp0ZW1wID0gTlVMTDsKICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzID0gTlVMTDsKIAotCi0KICAgICAgICAgICAgICAgICAgICAgaWYgKHNlcmllcyA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgcHJvYmVGYWlsZWQgPSAxOwogICAgICAgICAgICAgICAgICAgICBlbHNlCkBAIC00OTUxLDEzICs0OTgxLDE3IEBACiAgICAgICAgICAgICAgICAgICAgIHNlcmllcyA9IDE7CiAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQgPSB0ZXN0RmFpbGVkICsgMTsKIAotICAgICAgICAgICAgICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSBpdGVtLT5waW5nQ3RsT3duZXJJbmRleCwgaXRlbS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOyAgICAgLyogIHBpbmdDdGxPd25lckluZGV4ICAqLwotICAgICAgICAgICAgICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSBpdGVtLT5waW5nQ3RsVGVzdE5hbWUsIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZUxlbik7IC8qICBwaW5nQ3RsVGVzdE5hbWUgICovCisgICAgICAgICAgICAgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bE93bmVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOworICAgICAgICAgICAgICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsVGVzdE5hbWVMZW4pOwogCi0KLSAgICAgICAgICAgICAgICAgICAgaWYgKChTdG9yYWdlTmV3ID0KLSAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfY29tcGxleF9nZXQocGluZ1Jlc3VsdHNUYWJsZVN0b3JhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcnMpKSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBTdG9yYWdlTmV3ID0gaGVhZGVyX2NvbXBsZXhfZ2V0KHBpbmdSZXN1bHRzVGFibGVTdG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcnMpOworICAgICAgICAgICAgICAgICAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFTdG9yYWdlTmV3KQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICAgICAgICAgIFN0b3JhZ2VOZXctPnBpbmdSZXN1bHRzU2VuZFByb2JlcyA9CkBAIC01MDUyLDcgKzUwODYsNyBAQAogICAgICAgICAgICAgICAgICAgICBub3Rfb3VycyA9IDE7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwcmludGYoImNjPj0wLGVsc2VcbiIpOworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiY2M+PTAsZWxzZVxuIikpOwogI2lmZGVmIFNPX1RJTUVTVEFNUAogICAgICAgICAgICAgICAgIGZvciAoYyA9IENNU0dfRklSU1RIRFIoJm1zZyk7IGM7IGMgPSBDTVNHX05YVEhEUigmbXNnLCBjKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoYy0+Y21zZ19sZXZlbCAhPSBTT0xfU09DS0VUIHx8CkBAIC01MDY3LDcgKzUxMDEsNyBAQAogICAgICAgICAgICAgICAgIGlmICgob3B0aW9ucyAmIEZfTEFURU5DWSkgfHwgcmVjdl90aW1lcCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgob3B0aW9ucyAmIEZfTEFURU5DWSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgIGlvY3RsKGljbXBfc29jaywgU0lPQ0dTVEFNUCwgJnJlY3ZfdGltZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBnZXR0aW1lb2ZkYXkoJnJlY3ZfdGltZSwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnJlY3ZfdGltZSk7CiAgICAgICAgICAgICAgICAgICAgIHJlY3ZfdGltZXAgPSAmcmVjdl90aW1lOwogICAgICAgICAgICAgICAgIH0KIApAQCAtNTE2NywxOSArNTIwMSwxNCBAQAogICAgICAgICBzdHJ1Y3QgdGltZXZhbCAgdG1wX3R2OwogICAgICAgICBtZW1jcHkoJnRtcF90diwgcHRyLCBzaXplb2YodG1wX3R2KSk7CiAKLSAgICAgIHJlc3RhbXA6CiAgICAgICAgIHR2c3ViKHR2LCAmdG1wX3R2KTsKICAgICAgICAgdHJpcHRpbWUgPSB0di0+dHZfc2VjICogMTAwMDAwMCArIHR2LT50dl91c2VjOwogICAgICAgICBpZiAodHJpcHRpbWUgPCAwKSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAgICAgICAgICAgICAgIldhcm5pbmc6IHRpbWUgb2YgZGF5IGdvZXMgYmFjayAoJWxkdXMpLCB0YWtpbmcgY291bnRlcm1lYXN1cmVzLlxuIiwKLSAgICAgICAgICAgICAgICAgICAgdHJpcHRpbWUpOworICAgICAgICAgICAgc25tcF9sb2coTE9HX0lORk8sCisgICAgICAgICAgICAgICAgICAgICAiV2FybmluZzogaW52YWxpZCB0aW1lc3RhbXAgaW4gSUNNUCByZXNwb25zZS5cbiIpOwogICAgICAgICAgICAgdHJpcHRpbWUgPSAwOwotICAgICAgICAgICAgaWYgKCEob3B0aW9ucyAmIEZfTEFURU5DWSkpIHsKLSAgICAgICAgICAgICAgICBnZXR0aW1lb2ZkYXkodHYsIE5VTEwpOworICAgICAgICAgICAgaWYgKCEob3B0aW9ucyAmIEZfTEFURU5DWSkpCiAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBGX0xBVEVOQ1k7Ci0gICAgICAgICAgICAgICAgZ290byByZXN0YW1wOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmICghY3NmYWlsZWQpIHsKICAgICAgICAgICAgICgqdHN1bSkgKz0gdHJpcHRpbWU7CkBAIC01MjIxLDMyICs1MjUwLDM0IEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgaW50ICAgICAgICAgICAgIGk7CiAgICAgICAgIF9fdTggICAgICAgICAgICpjcCwgKmRwOwotICAgICAgICBwcmludGYoIiVkIGJ5dGVzIGZyb20gJXM6IGljbXBfc2VxPSV1IiwgY2MsIGZyb20sIHNlcSk7CisKKyAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICIlZCBieXRlcyBmcm9tICVzOiBpY21wX3NlcT0ldSIsIGNjLCBmcm9tLAorICAgICAgICAgICAgICAgICAgICBzZXEpKTsKIAogICAgICAgICBpZiAoaG9wcyA+PSAwKQotICAgICAgICAgICAgcHJpbnRmKCIgdHRsPSVkIiwgaG9wcyk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIiB0dGw9JWQiLCBob3BzKSk7CiAKICAgICAgICAgaWYgKGNjIDwgZGF0YWxlbiArIDgpIHsKLSAgICAgICAgICAgIHByaW50ZigiICh0cnVuY2F0ZWQpXG4iKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiICh0cnVuY2F0ZWQpXG4iKSk7CiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQogICAgICAgICBpZiAodGltaW5nKSB7CiAgICAgICAgICAgICBpZiAodHJpcHRpbWUgPj0gMTAwMDAwKQotICAgICAgICAgICAgICAgIHByaW50ZigiIHRpbWU9JWxkIG1zIiwgdHJpcHRpbWUgLyAxMDAwKTsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIiB0aW1lPSVsZCBtcyIsIHRyaXB0aW1lIC8gMTAwMCkpOwogICAgICAgICAgICAgZWxzZSBpZiAodHJpcHRpbWUgPj0gMTAwMDApCi0gICAgICAgICAgICAgICAgcHJpbnRmKCIgdGltZT0lbGQuJTAxbGQgbXMiLCB0cmlwdGltZSAvIDEwMDAsCi0gICAgICAgICAgICAgICAgICAgICAgICh0cmlwdGltZSAlIDEwMDApIC8gMTAwKTsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIiB0aW1lPSVsZC4lMDFsZCBtcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpcHRpbWUgLyAxMDAwLCAodHJpcHRpbWUgJSAxMDAwKSAvIDEwMCkpOwogICAgICAgICAgICAgZWxzZSBpZiAodHJpcHRpbWUgPj0gMTAwMCkKLSAgICAgICAgICAgICAgICBwcmludGYoIiB0aW1lPSVsZC4lMDJsZCBtcyIsIHRyaXB0aW1lIC8gMTAwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgKHRyaXB0aW1lICUgMTAwMCkgLyAxMCk7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICIgdGltZT0lbGQuJTAybGQgbXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaXB0aW1lIC8gMTAwMCwgKHRyaXB0aW1lICUgMTAwMCkgLyAxMCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHByaW50ZigiIHRpbWU9JWxkLiUwM2xkIG1zIiwgdHJpcHRpbWUgLyAxMDAwLAotICAgICAgICAgICAgICAgICAgICAgICB0cmlwdGltZSAlIDEwMDApOworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiIHRpbWU9JWxkLiUwM2xkIG1zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlwdGltZSAvIDEwMDAsIHRyaXB0aW1lICUgMTAwMCkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChkdXBmbGFnKQotICAgICAgICAgICAgcHJpbnRmKCIgKERVUCEpIik7CisgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIiAoRFVQISkiKSk7CiAgICAgICAgIGlmIChjc2ZhaWxlZCkKLSAgICAgICAgICAgIHByaW50ZigiIChCQUQgQ0hFQ0tTVU0hKSIpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICIgKEJBRCBDSEVDS1NVTSEpIikpOwogCiAgICAgICAgIC8qCiAgICAgICAgICAqIGNoZWNrIHRoZSBkYXRhIApAQCAtNTI1NSwxMyArNTI4NiwxNCBAQAogICAgICAgICBkcCA9ICh1X2NoYXIgKikmb3V0cGFja1s4ICsgc2l6ZW9mKHN0cnVjdCB0aW1ldmFsKV07CiAgICAgICAgIGZvciAoaSA9IHNpemVvZihzdHJ1Y3QgdGltZXZhbCk7IGkgPCBkYXRhbGVuOyArK2ksICsrY3AsICsrZHApIHsKICAgICAgICAgICAgIGlmICgqY3AgIT0gKmRwKSB7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCJcbndyb25nIGRhdGEgYnl0ZSAjJWQgc2hvdWxkIGJlIDB4JXggYnV0IHdhcyAweCV4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgaSwgKmRwLCAqY3ApOworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbndyb25nIGRhdGEgYnl0ZSAjJWQgc2hvdWxkIGJlIDB4JXggYnV0IHdhcyAweCV4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLCAqZHAsICpjcCkpOwogICAgICAgICAgICAgICAgIGNwID0gKHVfY2hhciAqKSBwdHIgKyBzaXplb2Yoc3RydWN0IHRpbWV2YWwpOwogICAgICAgICAgICAgICAgIGZvciAoaSA9IHNpemVvZihzdHJ1Y3QgdGltZXZhbCk7IGkgPCBkYXRhbGVuOyArK2ksICsrY3ApIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKChpICUgMzIpID09IHNpemVvZihzdHJ1Y3QgdGltZXZhbCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlxuIyVkXHQiLCBpKTsKLSAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIleCAiLCAqY3ApOworICAgICAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICJcbiMlZFx0IiwgaSkpOworICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIiV4ICIsICpjcCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTUyNjksMTIgKzUzMDEsMTYgQEAKICAgICB9CiAKIAotICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIGl0ZW0tPnBpbmdDdGxPd25lckluZGV4LCBpdGVtLT5waW5nQ3RsT3duZXJJbmRleExlbik7ICAgICAvKiAgcGluZ0N0bE93bmVySW5kZXggICovCi0gICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgaXRlbS0+cGluZ0N0bFRlc3ROYW1lLCBpdGVtLT5waW5nQ3RsVGVzdE5hbWVMZW4pOyAvKiAgcGluZ0N0bFRlc3ROYW1lICAqLworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsT3duZXJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxPd25lckluZGV4TGVuKTsKKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bFRlc3ROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsKIAotCi0gICAgaWYgKChTdG9yYWdlTmV3ID0KLSAgICAgICAgIGhlYWRlcl9jb21wbGV4X2dldChwaW5nUmVzdWx0c1RhYmxlU3RvcmFnZSwgdmFycykpID09IE5VTEwpCisgICAgU3RvcmFnZU5ldyA9IGhlYWRlcl9jb21wbGV4X2dldChwaW5nUmVzdWx0c1RhYmxlU3RvcmFnZSwgdmFycyk7CisgICAgc25tcF9mcmVlX3ZhcmJpbmQodmFycyk7CisgICAgaWYgKCFTdG9yYWdlTmV3KQogICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9TVUNITkFNRTsKIAogCkBAIC01Mjg5LDYgKzUzMjUsNyBAQAogICAgIFN0b3JhZ2VOZXctPnBpbmdSZXN1bHRzUnR0U3VtT2ZTcXVhcmVzID0gKnRzdW0yOwogCiAgICAgU3RvcmFnZU5ldy0+cGluZ1Jlc3VsdHNMYXN0R29vZFByb2JlX3RpbWUgPSB0aW1lcDsKKyAgICBmcmVlKFN0b3JhZ2VOZXctPnBpbmdSZXN1bHRzTGFzdEdvb2RQcm9iZSk7CiAgICAgU3RvcmFnZU5ldy0+cGluZ1Jlc3VsdHNMYXN0R29vZFByb2JlID0KICAgICAgICAgbmV0c25tcF9tZW1kdXAoZGF0ZV9uX3RpbWUoJnRpbWVwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU3RvcmFnZU5ldy0+cGluZ1Jlc3VsdHNMYXN0R29vZFByb2JlTGVuKSwKQEAgLTUzOTksMjAgKzU0MzYsMjEgQEAKIAogICAgIHB1dGNoYXIoJ1xuJyk7CiAgICAgZmZsdXNoKHN0ZG91dCk7Ci0gICAgcHJpbnRmKCItLS0gJXMgcGluZyBzdGF0aXN0aWNzIC0tLVxuIiwgaG9zdG5hbWUpOworICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiLS0tICVzIHBpbmcgc3RhdGlzdGljcyAtLS1cbiIsIGhvc3RuYW1lKSk7CiAKICAgICBpZiAoKm5yZXBlYXRzKQotICAgICAgICBwcmludGYoIiwgKyVsZCBkdXBsaWNhdGVzIiwgKm5yZXBlYXRzKTsKKyAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICIsICslbGQgZHVwbGljYXRlcyIsICpucmVwZWF0cykpOwogICAgIGlmICgqbmNoZWNrc3VtKQotICAgICAgICBwcmludGYoIiwgKyVsZCBjb3JydXB0ZWQiLCAqbmNoZWNrc3VtKTsKKyAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICIsICslbGQgY29ycnVwdGVkIiwgKm5jaGVja3N1bSkpOwogICAgIGlmICgqbmVycm9ycykKLSAgICAgICAgcHJpbnRmKCIsICslbGQgZXJyb3JzIiwgKm5lcnJvcnMpOworICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIiwgKyVsZCBlcnJvcnMiLCAqbmVycm9ycykpOwogICAgIGlmICgqbnRyYW5zbWl0dGVkKSB7Ci0gICAgICAgIHByaW50ZigiLCAlZCUlIGxvc3MiLAotICAgICAgICAgICAgICAgKGludCkgKCgoKGxvbmcgbG9uZykgKCgqbnRyYW5zbWl0dGVkKSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCpucmVjZWl2ZWQpKSkgKiAxMDApIC8KLSAgICAgICAgICAgICAgICAgICAgICAoKm50cmFuc21pdHRlZCkpKTsKLSAgICAgICAgcHJpbnRmKCIsIHRpbWUgJWxkbXMiLCAxMDAwICogdHYudHZfc2VjICsgdHYudHZfdXNlYyAvIDEwMDApOworICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIiwgJWQlJSBsb3NzIiwKKyAgICAgICAgICAgICAgICAgICAgKGludCkgKCgoKGxvbmcgbG9uZykgKCgqbnRyYW5zbWl0dGVkKSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKm5yZWNlaXZlZCkpKSAqIDEwMCkgLworICAgICAgICAgICAgICAgICAgICAgICAgICAgKCpudHJhbnNtaXR0ZWQpKSkpOworICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIiwgdGltZSAlbGRtcyIsCisgICAgICAgICAgICAgICAgICAgIDEwMDAgKiB0di50dl9zZWMgKyB0di50dl91c2VjIC8gMTAwMCkpOwogICAgIH0KICAgICBwdXRjaGFyKCdcbicpOwogCkBAIC01NDIzLDIxICs1NDYxLDIzIEBACiAgICAgICAgICgqdHN1bTIpIC89ICgqbnJlY2VpdmVkKSArICgqbnJlcGVhdHMpOwogICAgICAgICB0bWRldiA9IGxsc3FydCgoKnRzdW0yKSAtICgqdHN1bSkgKiAoKnRzdW0pKTsKIAotICAgICAgICBwcmludGYKLSAgICAgICAgICAgICgicnR0IG1pbi9hdmcvbWF4L21kZXYgPSAlbGQuJTAzbGQvJWx1LiUwM2xkLyVsZC4lMDNsZC8lbGQuJTAzbGQgbXMiLAotICAgICAgICAgICAgICgqdG1pbikgLyAxMDAwLCAoKnRtaW4pICUgMTAwMCwKLSAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykgKCgqdHN1bSkgLyAxMDAwKSwgKGxvbmcpICgoKnRzdW0pICUgMTAwMCksCi0gICAgICAgICAgICAgKCp0bWF4KSAvIDEwMDAsICgqdG1heCkgJSAxMDAwLCB0bWRldiAvIDEwMDAsIHRtZGV2ICUgMTAwMCk7CisgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAicnR0IG1pbi9hdmcvbWF4L21kZXYgPSAlbGQuJTAzbGQvJWx1LiUwM2xkIgorICAgICAgICAgICAgICAgICAgICAiLyVsZC4lMDNsZC8lbGQuJTAzbGQgbXMiLAorICAgICAgICAgICAgICAgICAgICAoKnRtaW4pIC8gMTAwMCwgKCp0bWluKSAlIDEwMDAsCisgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSAoKCp0c3VtKSAvIDEwMDApLCAobG9uZykgKCgqdHN1bSkgJSAxMDAwKSwKKyAgICAgICAgICAgICAgICAgICAgKCp0bWF4KSAvIDEwMDAsICgqdG1heCkgJSAxMDAwLCB0bWRldiAvIDEwMDAsCisgICAgICAgICAgICAgICAgICAgIHRtZGV2ICUgMTAwMCkpOwogICAgIH0KICAgICBpZiAoKCpwaXBlc2l6ZSkgPiAxKQotICAgICAgICBwcmludGYoIiwgcGlwZSAlZCIsICpwaXBlc2l6ZSk7CisgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiLCBwaXBlICVkIiwgKnBpcGVzaXplKSk7CiAgICAgaWYgKCgqbnRyYW5zbWl0dGVkKSA+IDEKICAgICAgICAgJiYgKCFpbnRlcnZhbCB8fCAob3B0aW9ucyAmIChGX0ZMT09EIHwgRl9BREFQVElWRSkpKSkgewogICAgICAgICBpbnQgICAgICAgICAgICAgaXBnID0KICAgICAgICAgICAgICgxMDAwMDAwICogKGxvbmcgbG9uZykgdHYudHZfc2VjICsKICAgICAgICAgICAgICB0di50dl91c2VjKSAvICgoKm50cmFuc21pdHRlZCkgLSAxKTsKLSAgICAgICAgcHJpbnRmKCIsIGlwZy9ld21hICVkLiUwM2QvJWQuJTAzZCBtcyIsIGlwZyAvIDEwMDAsIGlwZyAlIDEwMDAsCi0gICAgICAgICAgICAgICAoKnJ0dCkgLyA4MDAwLCAoKCpydHQpIC8gOCkgJSAxMDAwKTsKKyAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICIsIGlwZy9ld21hICVkLiUwM2QvJWQuJTAzZCBtcyIsCisgICAgICAgICAgICAgICAgICAgIGlwZyAvIDEwMDAsIGlwZyAlIDEwMDAsCisgICAgICAgICAgICAgICAgICAgICgqcnR0KSAvIDgwMDAsICgoKnJ0dCkgLyA4KSAlIDEwMDApKTsKICAgICB9CiAgICAgcHV0Y2hhcignXG4nKTsKICAgICByZXR1cm47CkBAIC01NDYwLDE5ICs1NTAwLDE5IEBACiAgICAgICAgICAgICAoKChsb25nIGxvbmcpICgoKm50cmFuc21pdHRlZCkgLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCpucmVjZWl2ZWQpKSkgKiAxMDApIC8gKCpudHJhbnNtaXR0ZWQpOwogCi0gICAgZnByaW50ZihzdGRlcnIsICJcciVsZC8lbGQgcGFja2V0cywgJWQlJSBsb3NzIiwgKm50cmFuc21pdHRlZCwKLSAgICAgICAgICAgICpucmVjZWl2ZWQsIGxvc3MpOworICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiXG4lbGQvJWxkIHBhY2tldHMsICVkJSUgbG9zcyIsICpudHJhbnNtaXR0ZWQsCisgICAgICAgICAgICAgICAgKm5yZWNlaXZlZCwgbG9zcykpOwogCiAgICAgaWYgKCgqbnJlY2VpdmVkKSAmJiB0aW1pbmcpIHsKICAgICAgICAgdGF2ZyA9ICgqdHN1bSkgLyAoKCpucmVjZWl2ZWQpICsgKCpucmVwZWF0cykpOwogCi0gICAgICAgIGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgICAgICIsIG1pbi9hdmcvZXdtYS9tYXggPSAlbGQuJTAzbGQvJWx1LiUwM2xkLyVkLiUwM2QvJWxkLiUwM2xkIG1zIiwKLSAgICAgICAgICAgICAgICAoKnRtaW4pIC8gMTAwMCwgKCp0bWluKSAlIDEwMDAsIHRhdmcgLyAxMDAwLCB0YXZnICUgMTAwMCwKLSAgICAgICAgICAgICAgICAoKnJ0dCkgLyA4MDAwLCAoKCpydHQpIC8gOCkgJSAxMDAwLCAoKnRtYXgpIC8gMTAwMCwKLSAgICAgICAgICAgICAgICAoKnRtYXgpICUgMTAwMCk7CisgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiLCBtaW4vYXZnL2V3bWEvbWF4ID0gJWxkLiUwM2xkLyVsdS4lMDNsZCIKKyAgICAgICAgICAgICAgICAgICAgIi8lZC4lMDNkLyVsZC4lMDNsZCBtcyIsCisgICAgICAgICAgICAgICAgICAgICgqdG1pbikgLyAxMDAwLCAoKnRtaW4pICUgMTAwMCwgdGF2ZyAvIDEwMDAsIHRhdmcgJSAxMDAwLAorICAgICAgICAgICAgICAgICAgICAoKnJ0dCkgLyA4MDAwLCAoKCpydHQpIC8gOCkgJSAxMDAwLCAoKnRtYXgpIC8gMTAwMCwKKyAgICAgICAgICAgICAgICAgICAgKCp0bWF4KSAlIDEwMDApKTsKICAgICB9Ci0gICAgZnByaW50ZihzdGRlcnIsICJcbiIpOworICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiXG4iKSk7CiB9CiAKIApAQCAtNTUzMCwxMiArNTU3MCwxMCBAQAogICAgICAgICBpZiAob3B0aW9ucyAmIEZfRkxPT0QpCiAgICAgICAgICAgICB3cml0ZShTVERPVVRfRklMRU5PLCAiRSIsIDEpOwogICAgICAgICBlbHNlIGlmIChlLT5lZV9lcnJubyAhPSBFTVNHU0laRSkKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicGluZzogbG9jYWwgZXJyb3I6ICVzXG4iLAotICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlLT5lZV9lcnJubykpOworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInBpbmc6IGxvY2FsIGVycm9yOiAlc1xuIiwgc3RyZXJyb3IoZS0+ZWVfZXJybm8pKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsCi0gICAgICAgICAgICAgICAgICAgICJwaW5nOiBsb2NhbCBlcnJvcjogTWVzc2FnZSB0b28gbG9uZywgbXR1PSV1XG4iLAotICAgICAgICAgICAgICAgICAgICBlLT5lZV9pbmZvKTsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJwaW5nOiBsb2NhbCBlcnJvcjogTWVzc2FnZSB0b28gbG9uZywgbXR1PSV1XG4iLAorICAgICAgICAgICAgICAgICAgICAgZS0+ZWVfaW5mbyk7CiAgICAgICAgICgqbmVycm9ycykrKzsKICAgICB9IGVsc2UgaWYgKGUtPmVlX29yaWdpbiA9PSBTT19FRV9PUklHSU5fSUNNUDYpIHsKICAgICAgICAgaWYgKHJlcyA8IHNpemVvZihpY21waCkgfHwKQEAgLTU2NTcsNyArNTY5NSw3IEBACiAgICAgaWNtcGggPSAoc3RydWN0IGljbXA2X2hkciAqKSBidWY7CiAgICAgaWYgKGNjIDwgOCkgewogICAgICAgICBpZiAob3B0aW9ucyAmIEZfVkVSQk9TRSkKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicGluZzogcGFja2V0IHRvbyBzaG9ydCAoJWQgYnl0ZXMpXG4iLCBjYyk7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAicGluZzogcGFja2V0IHRvbyBzaG9ydCAoJWQgYnl0ZXMpXG4iLCBjYyk7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KICAgICBpZiAoaWNtcGgtPmljbXA2X3R5cGUgPT0gSUNNUDZfRUNIT19SRVBMWSkgewpAQCAtNTcxMCwxNiArNTc0OCwxNyBAQAogICAgICAgICAgICAgICAgIHdyaXRlKFNURE9VVF9GSUxFTk8sICJcYkUiLCAyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHByaW50ZigiRnJvbSAlczogaWNtcF9zZXE9JXUgIiwKLSAgICAgICAgICAgICAgICAgICBwcl9hZGRyKCZmcm9tLT5zaW42X2FkZHIsIG9wdGlvbnMpLAotICAgICAgICAgICAgICAgICAgIGljbXBoMS0+aWNtcDZfc2VxKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiRnJvbSAlczogaWNtcF9zZXE9JXUgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHByX2FkZHIoJmZyb20tPnNpbjZfYWRkciwgb3B0aW9ucyksCisgICAgICAgICAgICAgICAgICAgICAgICBpY21waDEtPmljbXA2X3NlcSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIFdlJ3ZlIGdvdCBzb21ldGhpbmcgb3RoZXIgdGhhbiBhbiBFQ0hPUkVQTFkgCiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGlmICghKG9wdGlvbnMgJiBGX1ZFUkJPU0UpIHx8IHVpZCkKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIHByaW50ZigiRnJvbSAlczogIiwgcHJfYWRkcigmZnJvbS0+c2luNl9hZGRyLCBvcHRpb25zKSk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIkZyb20gJXM6ICIsCisgICAgICAgICAgICAgICAgICAgICAgICBwcl9hZGRyKCZmcm9tLT5zaW42X2FkZHIsIG9wdGlvbnMpKSk7CiAgICAgICAgIH0KICAgICAgICAgLyogcHJfaWNtcGgoaWNtcGgtPmljbXA2X3R5cGUsIGljbXBoLT5pY21wNl9jb2RlLCBudG9obChpY21waC0+aWNtcDZfbXR1KSk7ICovCiAgICAgfQpAQCAtNTc4NCw4ICs1ODIzLDggQEAKICAgICBzdHJ1Y3QgaG9zdGVudCAqaHAgPSBOVUxMOwogCiAgICAgaWYgKCEob3B0aW9ucyAmIEZfTlVNRVJJQykpCi0gICAgICAgIGhwID0gZ2V0aG9zdGJ5YWRkcigoX191OCAqKSBhZGRyLCBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEFGX0lORVQ2KTsKKyAgICAgICAgaHAgPSBuZXRzbm1wX2dldGhvc3RieWFkZHIoKF9fdTggKikgYWRkciwgc2l6ZW9mKHN0cnVjdCBpbjZfYWRkciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFGX0lORVQ2KTsKIAogICAgIHJldHVybiBocCA/IGhwLT5oX25hbWUgOiBwcl9hZGRyX24oYWRkcik7CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5oCmluZGV4IGVhOGRhMzEuLmNhNjlkMTMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5oCkBAIC0yMDYsNiArMjA2LDcgQEAKICAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAKICAqLwogdm9pZCAgICAgICAgICAgIGluaXRfcGluZ0N0bFRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX3BpbmdDdGxUYWJsZSh2b2lkKTsKIEZpbmRWYXJNZXRob2QgICB2YXJfcGluZ0N0bFRhYmxlOwogdm9pZCAgICAgICAgICAgIHBhcnNlX3BpbmdDdGxUYWJsZShjb25zdCBjaGFyICosIGNoYXIgKik7CiBTTk1QQ2FsbGJhY2sgICAgc3RvcmVfcGluZ0N0bFRhYmxlOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29uZi5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29uZi5jCmluZGV4IDRmYjk4NTAuLjBjYmRiYzYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvbmYuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb25mLmMKQEAgLTQsMTIgKzQsMTYgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KICNpbmNsdWRlICJkaXNtYW4vc2NoZWR1bGUvc2NoZWRDb3JlLmgiCiAjaW5jbHVkZSAiZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29uZi5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcXVlcnkpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzdHJpbmdfdGltZV90b19zZWNzKQorCiBzdGF0aWMgaW50IHNjaGVkRW50cmllczsKIAogLyoqIEluaXRpYWxpemVzIHRoZSBzY2hlZENvbmYgbW9kdWxlICovCkBAIC01MSw3ICs1NSw3IEBACiB7CiAgICAgbmV0c25tcF90ZGF0YV9yb3cgICAgICAgKnJvdzsKICAgICBzdHJ1Y3Qgc2NoZWRUYWJsZV9lbnRyeSAqZW50cnk7Ci0gICAgY2hhciAgIGJ1ZlsyNF07CisgICAgY2hhciAgIGJ1ZlsyNF0sIHRtcGJ1ZltTUFJJTlRfTUFYX0xFTl07CiAgICAgbG9uZyAgIGZyZXF1ZW5jeTsKICAgICBsb25nICAgdmFsdWU7CiAgICAgc2l6ZV90IHRtcGludDsKQEAgLTY1LDcgKzY5LDEzIEBACiAgICAgLyoKICAgICAgKiAgUGFyc2UgdGhlIGNvbmZpZ3VyZSBkaXJlY3RpdmUgbGluZQogICAgICAqLwotICAgIGxpbmUgPSByZWFkX2NvbmZpZ19yZWFkX2RhdGEoQVNOX0lOVEVHRVIsICAgbGluZSwgJmZyZXF1ZW5jeSwgJnRtcGludCk7CisgICAgbGluZSA9IGNvcHlfbndvcmQobGluZSwgdG1wYnVmLCBzaXplb2YodG1wYnVmKSk7CisgICAgZnJlcXVlbmN5ID0gbmV0c25tcF9zdHJpbmdfdGltZV90b19zZWNzKHRtcGJ1Zik7CisgICAgaWYgKGZyZXF1ZW5jeSA9PSAtMSkgeworICAgICAgICBjb25maWdfcGVycm9yKCJJbGxlZ2FsIGZyZXF1ZW5jeSBzcGVjaWZpZWQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGxpbmUgPSByZWFkX2NvbmZpZ19yZWFkX2RhdGEoQVNOX09CSkVDVF9JRCwgbGluZSwgJnZhcl9wdHIsICAgJnZhcl9sZW4pOwogICAgIGlmICh2YXJfbGVuID09IDApIHsKICAgICAgICAgY29uZmlnX3BlcnJvcigiaW52YWxpZCBzcGVjaWZpY2F0aW9uIGZvciBzY2hlZFZhcmlhYmxlIik7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb3JlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb3JlLmMKaW5kZXggYzkxNDc2OS4uYzNkYjM0ZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvcmUuYwpAQCAtNCwxMSArNCwxNiBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJkaXNtYW4vc2NoZWR1bGUvc2NoZWRDb3JlLmgiCiAjaW5jbHVkZSAidXRpbGl0aWVzL2lxdWVyeS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcXVlcnkpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzY2hlZF9uZXh0cm93dGltZSwgbmV0c25tcF91bnVzZWQpCisKIG5ldHNubXBfdGRhdGEgKnNjaGVkdWxlX3RhYmxlOwogCiAKQEAgLTI5NywxNSArMzAyLDE0IEBACiAgICAgICAgICAgICAgZW50cnktPnNjaGVkTmV4dFJ1biA9IG5vdyArIGVudHJ5LT5zY2hlZEludGVydmFsOwogICAgICAgICB9CiAgICAgICAgIERFQlVHTVNHVEwoKCJkaXNtYW46c2NoZWR1bGU6dGltZSIsICJwZXJpb2RpYzogKCVsZCkgJXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zY2hlZE5leHRSdW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjdGltZSgmZW50cnktPnNjaGVkTmV4dFJ1bikpKTsKKyAgICAgICAgICAgICAgICAgICAgKGxvbmcpIGVudHJ5LT5zY2hlZE5leHRSdW4sIGN0aW1lKCZlbnRyeS0+c2NoZWROZXh0UnVuKSkpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU0NIRURfVFlQRV9PTkVTSE9UOgogICAgICAgICBpZiAoIGVudHJ5LT5zY2hlZExhc3RSdW4gKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgiZGlzbWFuOnNjaGVkdWxlOnRpbWUiLCAib25lLXNob3Q6IGV4cGlyZWQgKCVsZCkgJXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zY2hlZE5leHRSdW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjdGltZSgmZW50cnktPnNjaGVkTmV4dFJ1bikpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKSBlbnRyeS0+c2NoZWROZXh0UnVuLAorICAgICAgICAgICAgICAgICAgICAgICAgY3RpbWUoJmVudHJ5LT5zY2hlZE5leHRSdW4pKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgLyogRmFsbHRocm91Z2ggKi8KQEAgLTM0Miw4ICszNDYsOCBAQAogICAgICAgICAgKiAgICB0aGUgZmlyc3Qgc3BlY2lmaWVkIGRheSAoaW4gdGhhdCBtb250aCkKICAgICAgICAgICovCiAKLSAgICAgICAgbG9jYWx0aW1lX3IoICZub3csICZub3dfdG0gKTsKLSAgICAgICAgbG9jYWx0aW1lX3IoICZub3csICZuZXh0X3RtICk7CisgICAgICAgICh2b2lkKSBsb2NhbHRpbWVfciggJm5vdywgJm5vd190bSApOworICAgICAgICAodm9pZCkgbG9jYWx0aW1lX3IoICZub3csICZuZXh0X3RtICk7CiAKICAgICAgICAgbmV4dF90bS50bV9tb249LTE7CiAgICAgICAgIG5leHRfdG0udG1fbWRheT0tMTsKQEAgLTQyMCw4ICs0MjQsNyBAQAogICAgICAgICAgKi8KICAgICAgICAgZW50cnktPnNjaGVkTmV4dFJ1biA9IG1rdGltZSggJm5leHRfdG0gKTsKICAgICAgICAgREVCVUdNU0dUTCgoImRpc21hbjpzY2hlZHVsZTp0aW1lIiwgImNhbGVuZGFyOiAoJWxkKSAlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPnNjaGVkTmV4dFJ1biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0aW1lKCZlbnRyeS0+c2NoZWROZXh0UnVuKSkpOworICAgICAgICAgICAgICAgICAgICAobG9uZykgZW50cnktPnNjaGVkTmV4dFJ1biwgY3RpbWUoJmVudHJ5LT5zY2hlZE5leHRSdW4pKSk7CiAgICAgICAgIHJldHVybjsKIAogICAgIGRlZmF1bHQ6CkBAIC00MzUsMTEgKzQzOCwxMyBAQAogICAgIHJldHVybjsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NDSEVEX05FWFRST1dUSU1FCiB2b2lkCiBzY2hlZF9uZXh0Um93VGltZSggbmV0c25tcF90ZGF0YV9yb3cgKnJvdyApCiB7CiAgICAgc2NoZWRfbmV4dFRpbWUoKHN0cnVjdCBzY2hlZFRhYmxlX2VudHJ5ICopIHJvdy0+ZGF0YSApOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU0NIRURfTkVYVFJPV1RJTUUgKi8KIAogLyoKICAqIGNyZWF0ZSBhIG5ldyByb3cgaW4gdGhlIHRhYmxlIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmMKaW5kZXggZDg4NjNmZC4uYmJhNDhmZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRUYWJsZS5jCkBAIC03LDEyICs3LDI3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgInV0aWxpdGllcy9pcXVlcnkuaCIKICNpbmNsdWRlICJkaXNtYW4vc2NoZWR1bGUvc2NoZWRDb3JlLmgiCiAjaW5jbHVkZSAiZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXF1ZXJ5KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXF1ZXJ5X3BkdV9zZXNzaW9uKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGEpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShkYXRlX25fdGltZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3VpbnQpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl9vaWQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90cnV0aHZhbHVlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGFfaW5zZXJ0X3JvdykKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKworc3RhdGljIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CisKIC8qKiBJbml0aWFsaXplcyB0aGUgc2NoZWRUYWJsZSBtb2R1bGUgKi8KIHZvaWQKIGluaXRfc2NoZWRUYWJsZSh2b2lkKQpAQCAtMjAsNyArMzUsNiBAQAogICAgIHN0YXRpYyBvaWQgICAgICBzY2hlZFRhYmxlX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA2MywgMSwgMiB9OwogICAgIHNpemVfdCAgICAgICAgICBzY2hlZFRhYmxlX29pZF9sZW4gPSBPSURfTEVOR1RIKHNjaGVkVGFibGVfb2lkKTsKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWc7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogICAgIERFQlVHTVNHVEwoKCJkaXNtYW46c2NoZWR1bGU6aW5pdCIsICJJbml0aWFsaXppbmcgdGFibGVcbiIpKTsKICAgICAvKgpAQCAtNDgsNiArNjIsMTQgQEAKICAgICBuZXRzbm1wX3RkYXRhX3JlZ2lzdGVyKHJlZywgc2NoZWR1bGVfdGFibGUsIHRhYmxlX2luZm8pOwogfQogCit2b2lkCitzaHV0ZG93bl9zY2hlZFRhYmxlKHZvaWQpCit7CisgICAgaWYgKHRhYmxlX2luZm8pIHsKKwluZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisJdGFibGVfaW5mbyA9IE5VTEw7CisgICAgfQorfQogCiAvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIHNjaGVkVGFibGUgdGFibGUgKi8KIGludApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmgKaW5kZXggZWZkMWYyZS4uNTIwMzNiYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRUYWJsZS5oCkBAIC04LDYgKzgsNyBAQAogICogZnVuY3Rpb24gZGVjbGFyYXRpb25zIAogICovCiB2b2lkICAgICAgICAgICAgaW5pdF9zY2hlZFRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX3NjaGVkVGFibGUodm9pZCk7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBzY2hlZFRhYmxlX2hhbmRsZXI7CiAKIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jCmluZGV4IDQ2ZmU5N2QuLmI5MjVjNWUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jCkBAIC0xOCwxMCArMTgsMTUgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPHB0aHJlYWQuaD4KICNpbmNsdWRlIDxtYXRoLmg+CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShoZWFkZXJfY29tcGxleF9maW5kX2VudHJ5KQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAjaW5jbHVkZSAidHJhY2VSb3V0ZUN0bFRhYmxlLmgiCiAjaW5jbHVkZSAidHJhY2VSb3V0ZVJlc3VsdHNUYWJsZS5oIgogI2luY2x1ZGUgInRyYWNlUm91dGVQcm9iZUhpc3RvcnlUYWJsZS5oIgpAQCAtMTY5NSw4ICsxNzAwLDYgQEAKICAgICAgICAgICogQmFjayBvdXQgYW55IGNoYW5nZXMgbWFkZSBpbiB0aGUgQUNUSU9OIGNhc2UgCiAgICAgICAgICAqLwogICAgICAgICBTTk1QX0ZSRUUoU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bFRhcmdldEFkZHJlc3MpOwotICAgICAgICBTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsVGFyZ2V0QWRkcmVzcyA9IE5VTEw7Ci0KICAgICAgICAgU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bFRhcmdldEFkZHJlc3MgPSB0bXB2YXI7CiAgICAgICAgIFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxUYXJnZXRBZGRyZXNzTGVuID0gdG1wbGVuOwogICAgICAgICBicmVhazsKQEAgLTI0NjksNyArMjQ3Miw2IEBACiAgICAgICAgICAqIEJhY2sgb3V0IGFueSBjaGFuZ2VzIG1hZGUgaW4gdGhlIEFDVElPTiBjYXNlIAogICAgICAgICAgKi8KICAgICAgICAgU05NUF9GUkVFKFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxTb3VyY2VBZGRyZXNzKTsKLSAgICAgICAgU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bFNvdXJjZUFkZHJlc3MgPSBOVUxMOwogICAgICAgICBTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsU291cmNlQWRkcmVzcyA9IHRtcHZhcjsKICAgICAgICAgU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bFNvdXJjZUFkZHJlc3NMZW4gPSB0bXBsZW47CiAgICAgICAgIGJyZWFrOwpAQCAtMjY1MSw3ICsyNjUzLDYgQEAKICAgICAgICAgICogQmFjayBvdXQgYW55IGNoYW5nZXMgbWFkZSBpbiB0aGUgQUNUSU9OIGNhc2UgCiAgICAgICAgICAqLwogICAgICAgICBTTk1QX0ZSRUUoU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bE1pc2NPcHRpb25zKTsKLSAgICAgICAgU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bE1pc2NPcHRpb25zID0gTlVMTDsKICAgICAgICAgU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bE1pc2NPcHRpb25zID0gdG1wdmFyOwogICAgICAgICBTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsTWlzY09wdGlvbnNMZW4gPSB0bXBsZW47CiAgICAgICAgIGJyZWFrOwpAQCAtMzMwMSw3ICszMzAyLDYgQEAKICAgICAgICAgICogQmFjayBvdXQgYW55IGNoYW5nZXMgbWFkZSBpbiB0aGUgQUNUSU9OIGNhc2UgCiAgICAgICAgICAqLwogICAgICAgICBTTk1QX0ZSRUUoU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bERlc2NyKTsKLSAgICAgICAgU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bERlc2NyID0gTlVMTDsKICAgICAgICAgU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bERlc2NyID0gdG1wdmFyOwogICAgICAgICBTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsRGVzY3JMZW4gPSB0bXBsZW47CiAgICAgICAgIGJyZWFrOwpAQCAtMzQ4NCw3ICszNDg0LDYgQEAKICAgICAgICAgICogQmFjayBvdXQgYW55IGNoYW5nZXMgbWFkZSBpbiB0aGUgQUNUSU9OIGNhc2UgCiAgICAgICAgICAqLwogICAgICAgICBTTk1QX0ZSRUUoU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bFRyYXBHZW5lcmF0aW9uKTsKLSAgICAgICAgU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bFRyYXBHZW5lcmF0aW9uID0gTlVMTDsKICAgICAgICAgU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bFRyYXBHZW5lcmF0aW9uID0gdG1wdmFyOwogICAgICAgICBTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsVHJhcEdlbmVyYXRpb25MZW4gPSB0bXBsZW47CiAgICAgICAgIGJyZWFrOwpAQCAtMzY2MCw3ICszNjU5LDYgQEAKICAgICAgICAgICogQmFjayBvdXQgYW55IGNoYW5nZXMgbWFkZSBpbiB0aGUgQUNUSU9OIGNhc2UgCiAgICAgICAgICAqLwogICAgICAgICBTTk1QX0ZSRUUoU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bFR5cGUpOwotICAgICAgICBTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsVHlwZSA9IE5VTEw7CiAgICAgICAgIFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxUeXBlID0gdG1wdmFyOwogICAgICAgICBTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsVHlwZUxlbiA9IHRtcGxlbjsKICAgICAgICAgYnJlYWs7CkBAIC01OTgxLDcgKzU5NzksNyBAQAogICAgICAgICByZXR1cm4gKGhpKTsKICAgICB9CiAKLSAgICBocCA9IGdldGhvc3RieW5hbWUoaG9zdG5hbWUpOworICAgIGhwID0gbmV0c25tcF9nZXRob3N0YnluYW1lKGhvc3RuYW1lKTsKICAgICBpZiAoaHAgPT0gTlVMTCkgewogICAgICAgICBGcHJpbnRmKHN0ZGVyciwgIiVzOiB1bmtub3duIGhvc3QgJXNcbiIsICJ0cmFjZXJvdXRlIiwgaG9zdG5hbWUpOwogICAgICAgICBwcmludGYoImhwPU5VTExcbiIpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZS5jCmluZGV4IDE5ZTczYjYuLmFiYTZjZjEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVSZXN1bHRzVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLmMKQEAgLTE4LDYgKzE4LDggQEAKIAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKwogI2lmIEhBVkVfU1RETElCX0gKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNlbmRpZgpAQCAtNDAsNiArNDIsOCBAQAogI2luY2x1ZGUgInRyYWNlUm91dGVIb3BzVGFibGUuaCIKICNpbmNsdWRlICJoZWFkZXJfY29tcGxleC5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9kYXRhc2V0KQorCiAvKgogICp0cmFjZVJvdXRlUmVzdWx0c1RhYmxlX3ZhcmlhYmxlc19vaWQ6CiAgKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kYXRhX2FjY2Vzcy9kb3Qzc3RhdHNfbGludXguYyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZGF0YV9hY2Nlc3MvZG90M3N0YXRzX2xpbnV4LmMKaW5kZXggZWY4MzQ1MC4uNmViNjlmNyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kYXRhX2FjY2Vzcy9kb3Qzc3RhdHNfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0c19saW51eC5jCkBAIC0zOSw3ICszOSw4IEBACiAgICAgZm9yIChwID0gYWRkcnM7IHA7IHAgPSBwLT5pZmFfbmV4dCkgewogCiAgICAgICAgIGlmICghbGlzdF9oZWFkKSB7Ci0gICAgICAgICAgICBpZiAoIChsaXN0X2hlYWQgPSAoc3RydWN0IGlmbmFtZSAqKSBtYWxsb2MgKHNpemVvZihzdHJ1Y3QgaWZuYW1lKSkpIDwgMCkgeworICAgICAgICAgICAgbGlzdF9oZWFkID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgaWZuYW1lKSk7CisgICAgICAgICAgICBpZiAoIWxpc3RfaGVhZCkgewogICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZG90M1N0YXRzVGFibGU6aW50ZXJmYWNlX25hbWVfbGlzdF9nZXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWRcbiIpKTsKICAgICAgICAgICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2Vzczpkb3QzU3RhdHNUYWJsZSxpbnRlcmZhY2VfbmFtZV9saXN0X2dldCwgbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKTsKQEAgLTU5LDcgKzYwLDggQEAKICAgICAgICAgaWYgKG5hbWVwdHIxKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKCAobmFtZXB0cjItPmlmbl9uZXh0ID0gKHN0cnVjdCBpZm5hbWUgKikgbWFsbG9jIChzaXplb2Yoc3RydWN0IGlmbmFtZSkpKSA8IDApIHsKKyAgICAgICAgbmFtZXB0cjItPmlmbl9uZXh0ID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgaWZuYW1lKSk7CisgICAgICAgIGlmICghbmFtZXB0cjItPmlmbl9uZXh0KSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlOmludGVyZmFjZV9uYW1lX2xpc3RfZ2V0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICJtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWRcbiIpKTsKICAgICAgICAgICAgIHNubXBfbG9nIChMT0dfRVJSLCAiYWNjZXNzOmRvdDNTdGF0c1RhYmxlLGludGVyZmFjZV9uYW1lX2xpc3RfZ2V0LCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWRcbiIpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jCmluZGV4IDU0MTQwMDEuLjc0ZjMzYmYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYworKysgYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTIxMSw3ICsyMTEsNiBAQAogaW50CiBkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcikKIHsKLSAgICBkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4OwogICAgIHNpemVfdCAgICAgICAgICBjb3VudCA9IDA7CiAgICAgaW50ICAgICAgICAgICAgIGZkOwogI2lmIGRlZmluZWQobGludXgpCkBAIC0yNjksNiArMjY4LDggQEAKICAgICAgKi8KIAogICAgIGZvciAocCA9IGxpc3RfaGVhZDsgcDsgcCA9IHAtPmlmbl9uZXh0KSB7CisgICAgICAgIGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CisKICAgICAgICAgREVCVUdNU0dUTCgoImFjY2Vzczpkb3QzU3RhdHNUYWJsZSIsICJwcm9jZXNzaW5nICclcydcbiIsIHAtPm5hbWUpKTsKIAogICAgICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfaW50ZXJmYWNlLmMKaW5kZXggNzQzNDI0YS4uZTA3NDFmMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2ludGVyZmFjZS5jCkBAIC0zMSw2ICszMSw3IEBACiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAogLyoKQEAgLTQ2LDYgKzQ3LDEwIEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyb3dfbWVyZ2UpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShiYWJ5X3N0ZXBzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RhdGFfc2V0LmMgYi9hZ2VudC9taWJncm91cC9leGFtcGxlcy9kYXRhX3NldC5jCmluZGV4IGRhZWQ4ZjMuLmNjNmEwNGEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RhdGFfc2V0LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZGF0YV9zZXQuYwpAQCAtNjUsOCArNjUsMTggQEAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9zZXRfbXVsdGlfYWRkX2RlZmF1bHRfcm93KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodW5yZWdpc3Rlcl9hdXRvX2RhdGFfdGFibGUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShkZWxldGVfdGFibGVfZGF0YV9zZXQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9kYXRhc2V0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfc2V0X211bHRpX2FkZF9kZWZhdWx0X3JvdykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2RhdGFzZXRfdW5yZWdpc3Rlcl9hdXRvX2RhdGFfdGFibGUpCisKK3N0YXRpYyBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICp0YWJsZV9zZXQ7CisKIC8qCiAgKiBvdXIgaW5pdGlhbGl6YXRpb24gcm91dGluZSwgYXV0b21hdGljYWxseSBjYWxsZWQgYnkgdGhlIGFnZW50IAogICovCkBAIC03Niw3ICs4Niw2IEBACiB2b2lkCiBpbml0X2RhdGFfc2V0KHZvaWQpCiB7Ci0gICAgbmV0c25tcF90YWJsZV9kYXRhX3NldCAqdGFibGVfc2V0OwogICAgIG5ldHNubXBfdGFibGVfcm93ICpyb3c7CiAKICAgICAvKgpAQCAtMjA0LDMgKzIxMywxMSBAQAogCiAgICAgREVCVUdNU0dUTCgoImV4YW1wbGVfZGF0YV9zZXQiLCAiRG9uZSBpbml0aWFsaXppbmcuXG4iKSk7CiB9CisKK3ZvaWQKK3NodXRkb3duX2RhdGFfc2V0KHZvaWQpCit7CisgICAgbmV0c25tcF91bnJlZ2lzdGVyX2F1dG9fZGF0YV90YWJsZSh0YWJsZV9zZXQsIE5VTEwpOworICAgIG5ldHNubXBfZGVsZXRlX3RhYmxlX2RhdGFfc2V0KHRhYmxlX3NldCk7CisgICAgdGFibGVfc2V0ID0gTlVMTDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RhdGFfc2V0LmggYi9hZ2VudC9taWJncm91cC9leGFtcGxlcy9kYXRhX3NldC5oCmluZGV4IGU1NmY2MDAuLmM5Y2Y4YjIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RhdGFfc2V0LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZGF0YV9zZXQuaApAQCAtNiw2ICs2LDcgQEAKICNlbmRpZgogCiB2b2lkICAgICAgICAgICAgaW5pdF9kYXRhX3NldCh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl9kYXRhX3NldCh2b2lkKTsKIAogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UuYyBiL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UuYwppbmRleCA4MzNhNGY3Li41ZDU0NTY5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5jCkBAIC0xNzIsNiArMTcyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihkZWxheV90aW1lKSk7CiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgICAgIC8qCiAgICAgICAgICAqIGNoZWNrIHR5cGUgCkBAIC0yNDYsNiArMjQ3LDcgQEAKICAgICAgICAgICogd2UgZG9uJ3QgaGF2ZSBhbnl0aGluZyB0byBhY3R1YWxseSBkbyBoZXJlIAogICAgICAgICAgKi8KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmMgYi9hZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5jCmluZGV4IGI2OTFhN2YuLjhlYTJkMDMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUuYwpAQCAtNCwxMiArNCwxNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJuZXRTbm1wSG9zdHNUYWJsZS5oIgogI2luY2x1ZGUgIm5ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmgiCiAjaW5jbHVkZSAibmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKG9pZF9zdGFzaCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKG9pZF9zdGFzaF9nZXRfZGF0YSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKG9pZF9zdGFzaF9hZGRfZGF0YSkKKwogc3RhdGljIG5ldHNubXBfb2lkX3N0YXNoX25vZGUgKnVuZG9TdG9yYWdlID0gTlVMTDsKIHN0YXRpYyBuZXRzbm1wX29pZF9zdGFzaF9ub2RlICpjb21taXRTdG9yYWdlID0gTlVMTDsKIApAQCAtOTIsNyArOTcsNyBAQAogICAgICAqLwogICAgIERFQlVHTVNHVEwoKCJpbml0aWFsaXplX3RhYmxlX25ldFNubXBIb3N0c1RhYmxlIiwKICAgICAgICAgICAgICAgICAiUmVnaXN0ZXJpbmcgdGFibGUgbmV0U25tcEhvc3RzVGFibGUgYXMgYSB0YWJsZSBpdGVyYXRvclxuIikpOwotICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IobXlfaGFuZGxlciwgaWluZm8pOworICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IyKG15X2hhbmRsZXIsIGlpbmZvKTsKIH0KIAogLyoqIEluaXRpYWxpemVzIHRoZSBuZXRTbm1wSG9zdHNUYWJsZSBtb2R1bGUgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmMgYi9hZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5jCmluZGV4IDRjYjkzMzkuLjI1YTczMzAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMuYwpAQCAtMTQsMTEgKzE0LDE0IEBACiAgKiBzdGFuZGFyZCBoZWFkZXJzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgIm5ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmgiCiAjaW5jbHVkZSAibmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwuaCIKICNpbmNsdWRlICJuZXRTbm1wSG9zdHNUYWJsZV9lbnVtcy5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19zdG9yYWdlX3RyYW5zaXRpb24pCisKIC8qKiBEZWNpZGVzIGlmIGFuIGluY29taW5nIHZhbHVlIGZvciB0aGUgbmV0U25tcEhvc3RBZGRyZXNzVHlwZSBtaWIgbm9kZSBpcyBsZWdhbC4KICAqICBAcGFyYW0gdHlwZSAgICBUaGUgaW5jb21pbmcgZGF0YSB0eXBlLgogICogIEBwYXJhbSB2YWwgICAgIFRoZSB2YWx1ZSB0byBiZSBjaGVja2VkLgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvc2NhbGFyX2ludC5jIGIvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvc2NhbGFyX2ludC5jCmluZGV4IDQzODBmY2UuLmRiNGQyOTUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL3NjYWxhcl9pbnQuYworKysgYi9hZ2VudC9taWJncm91cC9leGFtcGxlcy9zY2FsYXJfaW50LmMKQEAgLTIzLDEzICsyMywyMCBAQAogICogc3RhcnQgYmUgaW5jbHVkaW5nIHRoZSBhcHByb3ByaWF0ZSBoZWFkZXIgZmlsZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAogLyoKKyAqIGlmIC0tZW5hYmxlLW1pbmltYWxpc3QgaGFzIGJlZW4gdHVybmVkIG9uLCB3ZSBuZWVkIHRvIHJlZ2lzdGVyCisgKiB0aGUgc3VwcG9ydCB3ZSBuZWVkIHNvIHRoZSBuZWVkZWQgZnVuY3Rpb25zIGFyZW4ndCByZW1vdmVkIGF0IGNvbXBpbGUgdGltZQorICovCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShsb25nX2luc3RhbmNlKQorCisvKgogICogVGhlbiwgd2UgZGVjbGFyZSB0aGUgdmFyaWFibGVzIHdlIHdhbnQgdG8gYmUgYWNjZXNzZWQgCiAgKi8KLXN0YXRpYyBsb25nICAgICAgZXhhbXBsZTEgPSA0MjsgIC8qIGRlZmF1bHQgdmFsdWUgKi8KK3N0YXRpYyBsb25nICAgICBleGFtcGxlMSA9IDQyOyAgLyogZGVmYXVsdCB2YWx1ZSAqLwogCiAvKgogICogb3VyIGluaXRpYWxpemF0aW9uIHJvdXRpbmUsIGF1dG9tYXRpY2FsbHkgY2FsbGVkIGJ5IHRoZSBhZ2VudCAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuYyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuYwppbmRleCAyYjY4NjhlLi4yNzcyMDAxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5jCkBAIC0xLDggKzEsMTYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9jcHUuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGhhcmR3YXJlX2NwdSwgbGlibmV0c25tcG1pYnMpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihoYXJkd2FyZV9jcHVfY29weV9zdGF0cywgaGFyZHdhcmVfY3B1KQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGhhcmR3YXJlX2NwdV9sb2FkLCBoYXJkd2FyZV9jcHUpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaGFyZHdhcmVfY3B1X2dldF9jYWNoZSwgaGFyZHdhcmVfY3B1KQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGhhcmR3YXJlX2NwdV9nZXRfYnlOYW1lLCBoYXJkd2FyZV9jcHUpCisKIGV4dGVybiBOZXRzbm1wQ2FjaGVMb2FkIG5ldHNubXBfY3B1X2FyY2hfbG9hZDsKIHN0YXRpYyB2b2lkIF9jcHVfdXBkYXRlX3N0YXRzKCB1bnNpZ25lZCBpbnQsIHZvaWQqICk7CiAKQEAgLTEwNywxNCArMTE1LDE0IEBACiAgICAgICAgICAgICByZXR1cm4gY3B1OwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChjcHUpCi0gICAgICAgIFNOTVBfRlJFRShjcHUpOyAvKiBqdXN0IGluIGNhc2UgKi8KKyAgICBTTk1QX0ZSRUUoY3B1KTsgLyoganVzdCBpbiBjYXNlICovCiAgICAgcmV0dXJuIE5VTEw7ICAvKiBTaG91bGRuJ3QgaGFwcGVuISAqLwogfQogCiAgICAgLyoKICAgICAgKiBXb3JrIHdpdGggYSBsaXN0IG9mIENQVSBlbnRyaWVzLCBpbmRleGVkIGJ5IG5hbWUKICAgICAgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9IQVJEV0FSRV9DUFVfR0VUX0JZTkFNRQogbmV0c25tcF9jcHVfaW5mbyAqbmV0c25tcF9jcHVfZ2V0X2J5TmFtZSggY2hhciAqbmFtZSwgaW50IGNyZWF0ZSApIHsKICAgICBuZXRzbm1wX2NwdV9pbmZvICpjcHU7CiAKQEAgLTE1MiwxMSArMTYwLDE1IEBACiAgICAgfQogICAgIHJldHVybiBjcHU7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9IQVJEV0FSRV9DUFVfR0VUX0JZTkFNRSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSEFSRFdBUkVfQ1BVX0dFVF9DQUNIRQogbmV0c25tcF9jYWNoZSAqbmV0c25tcF9jcHVfZ2V0X2NhY2hlKCB2b2lkICkgewogICAgIHJldHVybiBfY3B1X2NhY2hlOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSEFSRFdBUkVfQ1BVX0dFVF9DQUNIRSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSEFSRFdBUkVfQ1BVX0xPQUQKIGludCBuZXRzbm1wX2NwdV9sb2FkKCB2b2lkICkgewogICAgICAgICAvKgogICAgICAgICAgKiBJZiB3ZSdyZSBhdXRvbWF0aWNhbGx5IHVwZGF0aW5nIHRoZSBzdGF0cyByZWd1bGFybHksCkBAIC0xNjUsNiArMTc3LDcgQEAKICAgICByZXR1cm4gKCBfY3B1QXV0b1VwZGF0ZSA/IDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG5ldHNubXBfY2FjaGVfY2hlY2tfYW5kX3JlbG9hZCggX2NwdV9jYWNoZSApKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0hBUkRXQVJFX0NQVV9MT0FEICovCiAKICAgICAvKgogICAgICAqIENhbGwgdGhlIHN5c3RlbS1zcGVjaWZpYyBsb2FkIHJvdXRpbmUgcmVndWxhcmx5LApAQCAtMjIwLDEwICsyMzMsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdS0+d2FpdF90aWNrcyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHUtPmtlcm5fdGlja3MgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1LT5pbnRycHRfdGlja3MgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1LT5zaXJxX3RpY2tzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1LT5zaXJxX3RpY2tzICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdS0+c3RlYWxfdGlja3MgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1LT5ndWVzdF90aWNrcyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHUtPmd1ZXN0bmljZV90aWNrczsKICAgICB9CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9IQVJEV0FSRV9DUFVfQ09QWV9TVEFUUwogdm9pZCBfY3B1X2NvcHlfc3RhdHMoIG5ldHNubXBfY3B1X2luZm8gKmNwdSApCiB7CiAgICAgbmV0c25tcF9jcHVfaW5mbyAqY3B1MjsKQEAgLTI0Myw2ICsyNjAsOSBAQAogICAgIGNwdTItPmtlcm5fdGlja3MgPSBjcHUtPmtlcm5fdGlja3M7CiAgICAgY3B1Mi0+aW50cnB0X3RpY2tzID0gY3B1LT5pbnRycHRfdGlja3M7CiAgICAgY3B1Mi0+c2lycV90aWNrcyA9IGNwdS0+c2lycV90aWNrczsKKyAgICBjcHUyLT5zdGVhbF90aWNrcyA9IGNwdS0+c3RlYWxfdGlja3M7CisgICAgY3B1Mi0+Z3Vlc3RfdGlja3MgPSBjcHUtPmd1ZXN0X3RpY2tzOworICAgIGNwdTItPmd1ZXN0bmljZV90aWNrcyA9IGNwdS0+Z3Vlc3RuaWNlX3RpY2tzOwogCiAgICAgY3B1Mi0+bkludGVycnVwdHMgID0gY3B1LT5uSW50ZXJydXB0czsKICAgICBjcHUyLT5uQ3R4U3dpdGNoZXMgPSBjcHUtPm5DdHhTd2l0Y2hlczsKQEAgLTI1MSwzICsyNzEsNCBAQAogICAgIGNwdTItPnBhZ2VJbiAgICAgPSBjcHUtPnBhZ2VJbjsKICAgICBjcHUyLT5wYWdlT3V0ICAgID0gY3B1LT5wYWdlT3V0OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSEFSRFdBUkVfQ1BVX0NPUFlfU1RBVFMgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfa2luZm8uYyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfa2luZm8uYwppbmRleCBmYWNiYzdiLi4zN2NmODQ3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2tpbmZvLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9raW5mby5jCkBAIC0yLDYgKzIsNyBAQAogICogIERyYWdvbkZseSBraW5mbyBpbnRlcmZhY2UKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2NwdS5oPgpAQCAtMTMsNiArMTQsNyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaGFyZHdhcmVfY3B1X2NvcHlfc3RhdHMpCiB2b2lkIF9jcHVfY29weV9zdGF0cyggbmV0c25tcF9jcHVfaW5mbyAqY3B1ICk7CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5jCmluZGV4IDVkNmVhZjEuLmIxZGMzMDggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmMKQEAgLTk5LDExICs5OSwxMiBAQAogICAgIHN0YXRpYyBjaGFyICpidWZmICA9IE5VTEw7CiAgICAgc3RhdGljIGludCAgIGJzaXplID0gMDsKICAgICBzdGF0aWMgaW50ICAgZmlyc3QgPSAxOwotICAgIHN0YXRpYyBpbnQgICBoYXNfY3B1XzI2ID0gMTsKKyAgICBzdGF0aWMgaW50ICAgbnVtX2NwdWxpbmVfZWxlbSA9IDA7CiAgICAgaW50ICAgICAgICAgIGJ5dGVzX3JlYWQsIHN0YXRmZCwgaTsKICAgICBjaGFyICAgICAgICAqYjEsICpiMjsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgY3VzZWxsID0gMCwgY2ljZWxsID0gMCwgY3N5c2xsID0gMCwgY2lkZWxsID0gMCwKLSAgICAgICAgICAgICAgICAgICAgICAgY2lvd2xsID0gMCwgY2lycWxsID0gMCwgY3NvZnRsbCA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgIGNpb3dsbCA9IDAsIGNpcnFsbCA9IDAsIGNzb2Z0bGwgPSAwLCBjc3RlYWxsbCA9IDAsCisgICAgICAgICAgICAgICAgICAgICAgIGNndWVzdGxsID0gMCwgY2d1ZXN0X25pY2VsbCA9IDA7CiAgICAgbmV0c25tcF9jcHVfaW5mbyogY3B1OwogCiAgICAgaWYgKChzdGF0ZmQgPSBvcGVuKFNUQVRfRklMRSwgT19SRE9OTFksIDApKSA9PSAtMSkgewpAQCAtMTU4LDIyICsxNTksMzMgQEAKICAgICAgICAgICAgIGIxKys7CiAgICAgICAgIH0KIAotCWlmICghaGFzX2NwdV8yNiB8fAotICAgICAgICAgICAgc3NjYW5mKGIxLCAiJWxsdSAlbGx1ICVsbHUgJWxsdSAlbGx1ICVsbHUgJWxsdSIsICZjdXNlbGwsCi0gICAgICAgICAgICAgICAgICAgJmNpY2VsbCwgJmNzeXNsbCwgJmNpZGVsbCwgJmNpb3dsbCwgJmNpcnFsbCwgJmNzb2Z0bGwpICE9IDcpIHsKLQkgICAgaGFzX2NwdV8yNiA9IDA7Ci0JICAgIHNzY2FuZihiMSwgIiVsbHUgJWxsdSAlbGx1ICVsbHUiLCAmY3VzZWxsLCAmY2ljZWxsLCAmY3N5c2xsLAotICAgICAgICAgICAgICAgICAgICZjaWRlbGwpOworICAgICAgICBudW1fY3B1bGluZV9lbGVtID0gc3NjYW5mKGIxLCAiJWxsdSAlbGx1ICVsbHUgJWxsdSAlbGx1ICVsbHUgJWxsdSAlbGx1ICVsbHUgJWxsdSIsCisgICAgICAgICAmY3VzZWxsLCAmY2ljZWxsLCAmY3N5c2xsLCAmY2lkZWxsLCAmY2lvd2xsLCAmY2lycWxsLCAmY3NvZnRsbCwgJmNzdGVhbGxsLCAmY2d1ZXN0bGwsICZjZ3Vlc3RfbmljZWxsKTsKKyAgICAgICAgREVCVUdNU0dUTCgoImNwdSIsICIvcHJvYy9zdGF0IGNwdSBsaW5lIG51bWJlciBvZiBlbGVtZW50czogJWlcbiIsIG51bV9jcHVsaW5lX2VsZW0pKTsKIAotCX0gZWxzZSB7Ci0gICAgICAgICAgICBjcHUtPndhaXRfdGlja3MgICA9ICh1bnNpZ25lZCBsb25nIGxvbmcpY2lvd2xsOwotICAgICAgICAgICAgY3B1LT5pbnRycHRfdGlja3MgPSAodW5zaWduZWQgbG9uZyBsb25nKWNpcnFsbDsKLSAgICAgICAgICAgIGNwdS0+c2lycV90aWNrcyAgID0gKHVuc2lnbmVkIGxvbmcgbG9uZyljc29mdGxsOwotIAl9Ci0gICAgICAgIGNwdS0+dXNlcl90aWNrcyA9ICh1bnNpZ25lZCBsb25nIGxvbmcpY3VzZWxsOwotICAgICAgICBjcHUtPm5pY2VfdGlja3MgPSAodW5zaWduZWQgbG9uZyBsb25nKWNpY2VsbDsKLSAgICAgICAgY3B1LT5zeXNfdGlja3MgID0gKHVuc2lnbmVkIGxvbmcgbG9uZyljc3lzbGw7Ci0gICAgICAgIGNwdS0+aWRsZV90aWNrcyA9ICh1bnNpZ25lZCBsb25nIGxvbmcpY2lkZWxsOworICAgICAgICAvKiBrZXJuZWwgMi42LjMzIGFuZCBhYm92ZSAqLworICAgICAgICBpZiAobnVtX2NwdWxpbmVfZWxlbSA9PSAxMCkgeworICAgICAgICAgICAgY3B1LT5ndWVzdG5pY2VfdGlja3MgPSBjZ3Vlc3RfbmljZWxsOworICAgICAgICB9CisgICAgICAgIC8qIGtlcm5lbCAyLjYuMjQgYW5kIGFib3ZlICovCisgICAgICAgIGlmIChudW1fY3B1bGluZV9lbGVtID49IDkpIHsKKyAgICAgICAgICAgIGNwdS0+Z3Vlc3RfdGlja3MgPSBjZ3Vlc3RsbDsKKyAgICAgICAgfQorICAgICAgICAvKiBrZXJuZWwgMi42LjExIGFuZCBhYm92ZSAqLworICAgICAgICBpZiAobnVtX2NwdWxpbmVfZWxlbSA+PSA4KSB7CisgICAgICAgICAgICBjcHUtPnN0ZWFsX3RpY2tzID0gY3N0ZWFsbGw7CisgICAgICAgIH0KKyAgICAgICAgLyoga2VybmVsIDIuNiAqLworICAgICAgICBpZiAobnVtX2NwdWxpbmVfZWxlbSA+PSA1KSB7CisgICAgICAgICAgICBjcHUtPndhaXRfdGlja3MgICA9IGNpb3dsbDsKKyAgICAgICAgICAgIGNwdS0+aW50cnB0X3RpY2tzID0gY2lycWxsOworICAgICAgICAgICAgY3B1LT5zaXJxX3RpY2tzICAgPSBjc29mdGxsOworICAgICAgICB9CisgICAgICAgIC8qIHJlc3QgKi8KKyAgICAgICAgY3B1LT51c2VyX3RpY2tzID0gY3VzZWxsOworICAgICAgICBjcHUtPm5pY2VfdGlja3MgPSBjaWNlbGw7CisgICAgICAgIGNwdS0+c3lzX3RpY2tzICA9IGNzeXNsbDsKKyAgICAgICAgY3B1LT5pZGxlX3RpY2tzID0gY2lkZWxsOwogICAgIH0KICAgICBpZiAoIGIxID09IGJ1ZmYgKSB7CiAJaWYgKGZpcnN0KQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9tYWNoLmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X21hY2guYwppbmRleCBkNTI3YjNkLi43ZjA5MGM5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X21hY2guYworKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X21hY2guYwpAQCAtMTA4LDYgKzEwOCw3IEBACiAgICAgY3B1MC0+cGFnZUluID0gdm1zdGF0LnBhZ2VpbnM7CiAgICAgY3B1MC0+cGFnZU91dCA9IHZtc3RhdC5wYWdlb3V0czsKIAkvKiBub3QgaW1wbGVtZW50ZWQ6IHN3YXBJbiwgc3dhcE91dCwgbkludGVycnVwdHMsIG5DdHhTd2l0Y2hlcyAqLworICAgIHJldHVybiAxOwogfQogCiAgCSAgCSAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbmxpc3QuYyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbmxpc3QuYwppbmRleCBhOWViMWUyLi45NzQwMjhhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X25saXN0LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9ubGlzdC5jCkBAIC0zLDYgKzMsNyBAQAogICogICAgIGUuZy4gRnJlZUJTRAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvY3B1Lmg+CkBAIC0zMSw2ICszMiw3IEBACiAjZGVmaW5lIENQVV9TWU1CT0wgICJjcF90aW1lIgogI2RlZmluZSBNRU1fU1lNQk9MICAiY250IgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShoYXJkd2FyZV9jcHVfY29weV9zdGF0cykKIHZvaWQgX2NwdV9jb3B5X3N0YXRzKCBuZXRzbm1wX2NwdV9pbmZvICpjcHUgKTsKIAogICAgIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3BlcmZzdGF0LmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3BlcmZzdGF0LmMKaW5kZXggZjBmZjJkMi4uNWZkZDUzMSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9wZXJmc3RhdC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfcGVyZnN0YXQuYwpAQCAtMyw2ICszLDcgQEAKICAqICAgICBlLmcuIEFJWAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvY3B1Lmg+CkBAIC0xNCw2ICsxNSw3IEBACiAjaW5jbHVkZSA8c3lzL3Byb3Rvc3cuaD4KICNpbmNsdWRlIDxsaWJwZXJmc3RhdC5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShoYXJkd2FyZV9jcHVfY29weV9zdGF0cykKIHZvaWQgX2NwdV9jb3B5X3N0YXRzKCBuZXRzbm1wX2NwdV9pbmZvICpjcHUgKTsKIAogICAgIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2N0bC5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9zeXNjdGwuYwppbmRleCAyOTI4MmY4Li41ZWNiNjhlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2N0bC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmMKQEAgLTMsNiArMyw3IEBACiAgKiAgICAgZS5nLiBCU0QvT1MsIE5ldEJTRCwgT3BlbkJTRCwgbGF0ZXIgRGFyd2luIHJlbGVhc2VzCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9jcHUuaD4KQEAgLTMwLDYgKzMxLDggQEAKICNpbmNsdWRlIDx2bS92bV9leHRlcm4uaD4KICNlbmRpZgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShoYXJkd2FyZV9jcHVfY29weV9zdGF0cykKKwogdm9pZCBfY3B1X2NvcHlfc3RhdHMoIG5ldHNubXBfY3B1X2luZm8gKmNwdSApOwogCiAgICAgLyoKQEAgLTg3LDExICs5MCw4IEBACiAjZGVmaW5lIE5FVFNOTVBfS0VSTl9DUFUgIEtFUk5fQ1BUSU1FCiAKICNlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pCi0jZGVmaW5lIE5FVFNOTVBfS0VSTl9DUFUgIDAgICAgLyogZHVtbXkgdmFsdWUgLSBzeXNjdGxuYW1ldG9taWIoMikgc2hvdWxkIGJlIHVzZWQgKi8KLSNpZiBkZWZpbmVkKEhBVkVfS0VSTl9DUF9USU1FUykKICNkZWZpbmUgTkVUU05NUF9LRVJOX01DUFUgMSAgICAvKiBFbmFibGUgc3VwcG9ydCBmb3IgbXVsdGktY3B1IHN0YXRzLiBWYWxpZCBmb3IgRnJlZUJTRCA+PTYuNCwgPj03LjEsID49OC4wIGFuZCBiZXlvbmQgKi8KICNkZWZpbmUgTkVUU05NUF9LRVJOX01DUFVfVFlQRSBORVRTTk1QX0NQVV9TVEFUUwotI2VuZGlmCiAKICNlbHNlCiAjZXJyb3IgIk5vIENQVSBzdGF0aXN0aWNzIHN5c2N0bCB0b2tlbiIKQEAgLTE1OSw5ICsxNTksNiBAQAogICAgICAqIExvYWQgdGhlIGxhdGVzdCBDUFUgdXNhZ2Ugc3RhdGlzdGljcwogICAgICAqLwogaW50IG5ldHNubXBfY3B1X2FyY2hfbG9hZCggbmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKm1hZ2ljICkgewotI2lmZGVmIE5FVFNOTVBfS0VSTl9NQ1BVCi0gICAgaW50ICAgICAgICAgICAgICAgICAgICAgaTsKLSNlbmRpZgogCiAgICAgLyoKICAgICAgKiBTdHJpY3RseSBzcGVha2luZywgQlNEaSBvdWdodCB0byB1c2UKQEAgLTE3MSwxNCArMTY4LDE5IEBACiAgICAgICogRG9uJ3QgZmlnaHQgaXQsIERhdmUgLSBnbyB3aXRoIHRoZSBmbG93Li4uLgogICAgICAqLwogICAgIE5FVFNOTVBfQ1BVX1NUQVRTIGNwdV9zdGF0c1tDUFVTVEFURVNdOworICAgIHNpemVfdCAgICAgICAgIGNwdV9zaXplICA9IHNpemVvZihjcHVfc3RhdHMpOwogI2lmICFkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX05ldEJTRF9fKQogICAgIGludCAgICAgICAgICAgIGNwdV9taWJbXSA9IHsgQ1RMX0tFUk4sIE5FVFNOTVBfS0VSTl9DUFUgfTsKICNlbmRpZgorI2lmZGVmIF9fRnJlZUJTRF9fCisgICAgc3RhdGljIGludCAgICAgY3BfdGltZXMgPSAtMTsKKyNlbmRpZgogI2lmZGVmIEtFUk5fQ1BUSU1FMgogICAgIGludCAgICAgICAgICAgIG1jcHVfbWliW10gPSB7IENUTF9LRVJOLCBLRVJOX0NQVElNRTIsIDAgfTsKICNlbmRpZgotICAgIHNpemVfdCAgICAgICAgIGNwdV9zaXplICA9IHNpemVvZihjcHVfc3RhdHMpOwogI2lmZGVmIE5FVFNOTVBfS0VSTl9NQ1BVIAorICAgIGludCAgICAgICAgICAgIGk7CisgICAgaW50ICAgICAgICAgICAgYWN0X2NwdSA9IGNwdV9udW07CiAgICAgTkVUU05NUF9LRVJOX01DUFVfVFlQRSAqbWNwdV9zdGF0czsKICAgICBzaXplX3QgICAgICAgICBtY3B1X3NpemU7CiAjZW5kaWYKQEAgLTE4Nyw3ICsxODksNyBAQAogICAgIHNpemVfdCAgICAgICAgIG1lbV9zaXplICA9IHNpemVvZihORVRTTk1QX1ZNX1NUQVRTX1RZUEUpOwogICAgIG5ldHNubXBfY3B1X2luZm8gKmNwdSA9IG5ldHNubXBfY3B1X2dldF9ieUlkeCggLTEsIDAgKTsKIAotI2lmIChkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fTmV0QlNEX18pKQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19OZXRCU0RfXykKICAgICBzeXNjdGxieW5hbWUoImtlcm4uY3BfdGltZSIsIGNwdV9zdGF0cywgJmNwdV9zaXplLCBOVUxMLCAwKTsKICNlbHNlCiAgICAgc3lzY3RsKGNwdV9taWIsIDIsICBjcHVfc3RhdHMsICZjcHVfc2l6ZSwgTlVMTCwgMCk7CkBAIC0yMTcsMjQgKzIxOSwzNiBAQAogI2VuZGlmCiAKICNpZmRlZiBORVRTTk1QX0tFUk5fTUNQVQotI2lmIGRlZmluZWQoSEFWRV9LRVJOX0NQX1RJTUVTKQotICAgIHN5c2N0bGJ5bmFtZSgia2Vybi5jcF90aW1lcyIsIE5VTEwsICZtY3B1X3NpemUsIE5VTEwsIDApOworI2lmIGRlZmluZWQoS0VSTl9DUFRJTUUyKQorICAgIG1jcHVfc2l6ZSAgPSBjcHVfbnVtKnNpemVvZihjcHVfc3RhdHMpOwogICAgIG1jcHVfc3RhdHMgPSBtYWxsb2MobWNwdV9zaXplKTsKLSAgICBzeXNjdGxieW5hbWUoImtlcm4uY3BfdGltZXMiLCBtY3B1X3N0YXRzLCAmbWNwdV9zaXplLCBOVUxMLCAwKTsKLSNlbGlmIGRlZmluZWQoS0VSTl9DUFRJTUUyKQotICAgIG1jcHVfc2l6ZSAgPSBzaXplb2YoY3B1X3N0YXRzKTsKLSAgICBtY3B1X3N0YXRzID0gbWFsbG9jKG1jcHVfc2l6ZSk7Ci0jZWxzZQorI2VsaWYgZGVmaW5lZChfX05ldEJTRF9fKQogICAgIG1jcHVfc2l6ZSAgPSBjcHVfbnVtKnNpemVvZihjcHVfc3RhdHMpOwogICAgIG1jcHVfc3RhdHMgPSBtYWxsb2MobWNwdV9zaXplKTsKICAgICBzeXNjdGxieW5hbWUoImtlcm4uY3BfdGltZSIsIG1jcHVfc3RhdHMsICZtY3B1X3NpemUsIE5VTEwsIDApOworI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKyAgICBpZiAoY3BfdGltZXMgPT0gLTEpIHsKKwlpbnQgcmV0ID0gc3lzY3RsYnluYW1lKCJrZXJuLmNwX3RpbWVzIiwgTlVMTCwgJm1jcHVfc2l6ZSwgTlVMTCwgMCk7CisJY3BfdGltZXMgPSByZXQgPT0gLTEgPyAwIDogMTsKKyAgICB9CisgICAgaWYgKGNwX3RpbWVzKSB7CisJc3lzY3RsYnluYW1lKCJrZXJuLmNwX3RpbWVzIiwgTlVMTCwgJm1jcHVfc2l6ZSwgTlVMTCwgMCk7CisJbWNwdV9zdGF0cyA9IG1hbGxvYyhtY3B1X3NpemUpOworCXN5c2N0bGJ5bmFtZSgia2Vybi5jcF90aW1lcyIsIG1jcHVfc3RhdHMsICZtY3B1X3NpemUsIE5VTEwsIDApOworICAgIH0KKyAgICBlbHNlIHsKKwltY3B1X3NpemUgID0gc2l6ZW9mKGNwdV9zdGF0cyk7CisJbWNwdV9zdGF0cyA9IG1hbGxvYyhtY3B1X3NpemUpOworCXN5c2N0bGJ5bmFtZSgia2Vybi5jcF90aW1lIiwgbWNwdV9zdGF0cywgJm1jcHVfc2l6ZSwgTlVMTCwgMCk7CisJYWN0X2NwdSA9IDE7CisgICAgfQogI2VuZGlmCi0gICAgZm9yICggaSA9IDA7IGkgPCBjcHVfbnVtOyBpKysgKSB7CisgICAgZm9yICggaSA9IDA7IGkgPCBhY3RfY3B1OyBpKysgKSB7CiAgICAgICAgIGNwdSA9IG5ldHNubXBfY3B1X2dldF9ieUlkeCggaSwgMCApOwogICAgICAgICAvKiBYWFggLSBwZXItQ1BVIHN0YXRpc3RpY3MgLSBtY3B1X21pYltpXS4/Pz8gKi8KICNpZmRlZiBLRVJOX0NQVElNRTIKIAltY3B1X21pYlsyXSA9IGk7Ci0Jc3lzY3RsKG1jcHVfbWliLCAzLCBtY3B1X3N0YXRzLCAmbWNwdV9zaXplLCBOVUxMLCAwKTsKKwlzeXNjdGwobWNwdV9taWIsIDMsIG1jcHVfc3RhdHMraSpDUFVTVEFURVMsICZtY3B1X3NpemUsIE5VTEwsIDApOwogI2VuZGlmCiAJLyogQWxtb3N0IGNvcHkgJiBwYXN0ZSBvZiBwcmV2aW91cyBjcHUgc3RhdHMgc3R1ZmYgOikgKi8KIAljcHUtPnVzZXJfdGlja3MgPSBtY3B1X3N0YXRzWyhpKkNQVVNUQVRFUykrQ1BfVVNFUl07CkBAIC0yNTAsNyArMjY0LDcgQEAKIAkgICAgICogICBYWFggLSBEbyB0aGVzZSByZWFsbHkgYmVsb25nIGhlcmUgPwogCSAgICAgKi8KIAotCS8qIFRoZXJlJ3Mgbm8gcmVhbGx5IG5lZWQgdG8gZXhlY3V0ZSBhbm90aGVyIHN5c2N0bCgpCisJLyogVGhlcmUncyBubyByZWFsIG5lZWQgdG8gZXhlY3V0ZSBhbm90aGVyIHN5c2N0bCgpCiAJICoKIAkgKiBzeXNjdGwobWVtX21pYiwgMiwgJm1lbV9zdGF0cywgJm1lbV9zaXplLCBOVUxMLCAwKTsKIAkgKi8KQEAgLTI2NiwxMCArMjgwLDEwIEBACiAjZW5kaWYKICAgICB9CiAgICAgZnJlZShtY3B1X3N0YXRzKTsKLSNlbHNlCisjZWxzZQkvKiBORVRTTk1QX0tFUk5fTUNQVSAqLwogICAgICAgICAvKiBDb3B5ICJvdmVyYWxsIiBmaWd1cmVzIHRvIGNwdTAgZW50cnkgKi8KICAgICBfY3B1X2NvcHlfc3RhdHMoIGNwdSApOwotI2VuZGlmCisjZW5kaWYgIC8qIE5FVFNOTVBfS0VSTl9NQ1BVICovCiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMuaCBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMuaAppbmRleCBlMzBhNWE2Li44Y2JmNDM5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy5oCkBAIC0zLDYgKzMsOCBAQAogY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvZnN5cy9mc3lzX21udGN0bCkKICNlbGlmIGRlZmluZWQoSEFWRV9HRVRWRlNTVEFUKSB8fCBkZWZpbmVkKEhBVkVfR0VURlNTVEFUKQogY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvZnN5cy9mc3lzX2dldGZzc3RhdHMpCi0jZWxzZQorI2VsaWYgZGVmaW5lZChIQVZFX0dFVE1OVEVOVCkgJiYgIWRlZmluZWQoaXJpeDYpCiBjb25maWdfcmVxdWlyZShoYXJkd2FyZS9mc3lzL2ZzeXNfbW50ZW50KQorI2Vsc2UKK2NvbmZpZ19yZXF1aXJlKGhhcmR3YXJlL2ZzeXMvZnN5c192b2lkKQogI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfZ2V0ZnNzdGF0cy5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX2dldGZzc3RhdHMuYwppbmRleCBhZGRiMzJhLi4wNTAyN2Y0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfZ2V0ZnNzdGF0cy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19nZXRmc3N0YXRzLmMKQEAgLTE2MSw2ICsxNjEsOCBAQAogICAgICAgICBpZiAoICBzdGF0c1tpXS5OU0ZTX0ZMQUdTICYgTU5UX1JPT1RGUyApIHsKICAgICAgICAgICAgIGVudHJ5LT5mbGFncyB8PSBORVRTTk1QX0ZTX0ZMQUdfQk9PVEFCTEU7CiAgICAgICAgIH0KLSAgICAgICAgCisgICAgICAgIG5ldHNubXBfZnN5c19jYWxjdWxhdGUzMihlbnRyeSk7CiAgICAgfQorCisgICAgZnJlZShzdGF0cyk7CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50Y3RsLmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50Y3RsLmMKaW5kZXggOGViNDNjZS4uOWZiYjA2OCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX21udGN0bC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRjdGwuYwpAQCAtOTYsNyArOTYsNyBAQAogICAgIC8qCiAgICAgICogUmV0cmlldmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnRseSBtb3VudGVkIGZpbGVzeXN0ZW1zLi4uCiAgICAgICovCi0gICAgcmV0ID0gbW50Y3RsKE1DVExfUVVFUlksIHNpemVvZih1aW50KSwgJnNpemUpOworICAgIHJldCA9IG1udGN0bChNQ1RMX1FVRVJZLCBzaXplb2YodWludCksICh2b2lkICopICZzaXplKTsKICAgICBpZiAoIHJldCAhPSAwIHx8IHNpemU8PTAgKSB7CiAgICAgICAgIHNubXBfbG9nX3BlcnJvciggImluaXRpYWwgbW50Y3RsIGZhaWxlZCIgKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTA4LDcgKzEwOCw3IEBACiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICByZXQgPSBtbnRjdGwoTUNUTF9RVUVSWSwgc2l6ZSwgYWl4bW50ICk7CisgICAgcmV0ID0gbW50Y3RsKE1DVExfUVVFUlksIHNpemUsICh2b2lkICopIGFpeG1udCk7CiAgICAgaWYgKCByZXQgPD0gMCApIHsKICAgICAgICAgZnJlZShhaXhtbnQpOwogICAgICAgICBzbm1wX2xvZ19wZXJyb3IoICJtYWluIG1udGN0bCBmYWlsZWQiICk7CkBAIC0xNzMsNiArMTczLDcgQEAKICAgICAgICAgZW50cnktPmF2YWlsID0gIHN0YXRfYnVmLmZfYmF2YWlsOwogICAgICAgICBlbnRyeS0+aW51bXNfdG90YWwgPSBzdGF0X2J1Zi5mX2ZpbGVzOwogICAgICAgICBlbnRyeS0+aW51bXNfYXZhaWwgPSBzdGF0X2J1Zi5mX2ZmcmVlOworICAgICAgICBuZXRzbm1wX2ZzeXNfY2FsY3VsYXRlMzIoZW50cnkpOwogICAgIH0KICAgICBmcmVlKGFpeG1udCk7CiAgICAgYWl4bW50ICA9IE5VTEw7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50ZW50LmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50ZW50LmMKaW5kZXggNjNhODUzOC4uOTRkMjNkYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX21udGVudC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRlbnQuYwpAQCAtMjU1LDYgKzI1NSw3IEBACiAgICAgICAgICAgICBlbnRyeS0+YXZhaWwgPSAgc3RhdF9idWYuZl9iYXZhaWw7CiAgICAgICAgIGVudHJ5LT5pbnVtc190b3RhbCA9IHN0YXRfYnVmLmZfZmlsZXM7CiAgICAgICAgIGVudHJ5LT5pbnVtc19hdmFpbCA9IHN0YXRfYnVmLmZfZmZyZWU7CisgICAgICAgIG5ldHNubXBfZnN5c19jYWxjdWxhdGUzMihlbnRyeSk7CiAgICAgfQogICAgIGZjbG9zZSggZnAgKTsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c192b2lkLmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfdm9pZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlZGMzNDQKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfdm9pZC5jCkBAIC0wLDAgKzEsMjQgQEAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvZnN5cy5oPgorCitpbnQKK19mc3lzX3JlbW90ZSggY2hhciAqZGV2aWNlLCBpbnQgdHlwZSApCit7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorX2ZzeXNfdHlwZSggY2hhciAqdHlwZW5hbWUgKQoreworICAgIHJldHVybiBORVRTTk1QX0ZTX1RZUEVfVU5LTk9XTjsKK30KKwordm9pZAorbmV0c25tcF9mc3lzX2FyY2hfaW5pdCggdm9pZCApCit7IH0KKwordm9pZAorbmV0c25tcF9mc3lzX2FyY2hfbG9hZCggdm9pZCApCit7IH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvaHdfZnN5cy5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9od19mc3lzLmMKaW5kZXggMDQ4ZWU2Ni4uYTZjZDk0ZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9od19mc3lzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9od19mc3lzLmMKQEAgLTEsOCArMSwxMyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2ZzeXMuaD4KKyNpZmRlZiBIQVZFX0lOVFRZUEVTX0gKKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2VuZGlmCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihod19mc3lzX2dldF9jb250YWluZXIsIG5ldHNubXBfdW51c2VkKQogCiBleHRlcm4gdm9pZCAgICAgICAgICAgICBuZXRzbm1wX2ZzeXNfYXJjaF9sb2FkKCB2b2lkICk7CiBleHRlcm4gdm9pZCAgICAgICAgICAgICBuZXRzbm1wX2ZzeXNfYXJjaF9pbml0KCB2b2lkICk7CkBAIC01OSwxMCArNjQsMTIgQEAKICAgICBfZnN5c19mcmVlKCk7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9IV19GU1lTX0dFVF9DT05UQUlORVIKIC8qCiAgKiAgUmV0dXJuIHRoZSBtYWluIGZzeXMgY29udGFpbmVyCiAgKi8KIG5ldHNubXBfY29udGFpbmVyICpuZXRzbm1wX2ZzeXNfZ2V0X2NvbnRhaW5lciggdm9pZCApIHsgcmV0dXJuIF9mc3lzX2NvbnRhaW5lcjsgfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSFdfRlNZU19HRVRfQ09OVEFJTkVSICovCiAKIC8qCiAgKiAgUmV0dXJuIHRoZSBtYWluIGZzeXMgY2FjaGUgY29udHJvbCBzdHJ1Y3R1cmUgKGlmIGRlZmluZWQpCkBAIC0yMzYsNyArMjQzLDcgQEAKICAgICAgICAgc3AtPmlkeC5vaWRzWzBdID0gKytfZnN5c19pZHg7CiAgICAgfQogCi0gICAgREVCVUdNU0dUTCgoImZzeXM6bmV3IiwgIkNyZWF0ZSBmaWxlc3lzdGVtIGVudHJ5IChpbmRleCA9ICVkXG4iLCBfZnN5c19pZHgpKTsKKyAgICBERUJVR01TR1RMKCgiZnN5czpuZXciLCAiQ3JlYXRlIGZpbGVzeXN0ZW0gZW50cnkgKGluZGV4ID0gJWQpXG4iLCBfZnN5c19pZHgpKTsKICAgICBDT05UQUlORVJfSU5TRVJUKCBfZnN5c19jb250YWluZXIsIHNwICk7CiAgICAgcmV0dXJuIHNwOwogfQpAQCAtMjQ3LDcgKzI1NCw3IEBACiAgKiAgICAoYXR0ZW1wdGluZyB0byBhdm9pZCAzMi1iaXQgb3ZlcmZsb3chKQogICovCiB1bnNpZ25lZCBsb25nIGxvbmcKLV9mc3lzX3RvX0soIGludCBzaXplLCBpbnQgdW5pdHMgKQorX2ZzeXNfdG9fSyggdW5zaWduZWQgbG9uZyBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgbG9uZyB1bml0cyApCiB7CiAgICAgaW50IGZhY3RvciA9IDE7CiAKQEAgLTMwOSwzICszMTYsMzQgQEAKICAgICByZXR1cm4gKGludCl2OwogfQogCisjaWZuZGVmIElOVDMyX01BWAorI2RlZmluZSBJTlQzMl9NQVggMHg3ZmZmZmZmZgorI2VuZGlmCisKKyNpZm5kZWYgUFJJdTY0CisjZGVmaW5lIFBSSXU2NCAibGx1IgorI2VuZGlmCisKKy8qIHJlY2FsY3VsYXRlIGYtPnNpemVfMzIsIHVzZWRfMzIsIGF2YWlsXzMyIGFuZCB1bml0c18zMiBmcm9tIGYtPnNpemUgJiBjb21wLiovCit2b2lkCituZXRzbm1wX2ZzeXNfY2FsY3VsYXRlMzIobmV0c25tcF9mc3lzX2luZm8gKmYpCit7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHMgPSBmLT5zaXplOworICAgIHVuc2lnbmVkIHNoaWZ0ID0gMDsKKworICAgIHdoaWxlIChzID4gSU5UMzJfTUFYKSB7CisgICAgICAgIHMgPSBzID4+IDE7CisgICAgICAgIHNoaWZ0Kys7CisgICAgfQorCisgICAgZi0+c2l6ZV8zMiA9IHM7CisgICAgZi0+dW5pdHNfMzIgPSBmLT51bml0cyA8PCBzaGlmdDsKKyAgICBmLT5hdmFpbF8zMiA9IGYtPmF2YWlsID4+IHNoaWZ0OworICAgIGYtPnVzZWRfMzIgPSBmLT51c2VkID4+IHNoaWZ0OworCisgICAgREVCVUdNU0dUTCgoImZzeXMiLCAiUmVzdWx0cyBvZiAzMi1iaXQgY29udmVyc2lvbjogc2l6ZSAlIiBQUkl1NjQgIiAtPiAlbHU7IgorCQkiIHVuaXRzICUiIFBSSXU2NCAiIC0+ICVsdTsgYXZhaWwgJSIgUFJJdTY0ICIgLT4gJWx1OyIKKyAgICAgICAgICAgICAgICAiIHVzZWQgJSIgUFJJdTY0ICIgLT4gJWx1XG4iLAorCQkodWludDY0X3QpZi0+c2l6ZSwgZi0+c2l6ZV8zMiwgKHVpbnQ2NF90KWYtPnVuaXRzLCBmLT51bml0c18zMiwKKwkJKHVpbnQ2NF90KWYtPmF2YWlsLCBmLT5hdmFpbF8zMiwgKHVpbnQ2NF90KWYtPnVzZWQsIGYtPnVzZWRfMzIpKTsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS5oIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5LmgKaW5kZXggYzMzNDUwYS4uN2U0ZTg4ZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5LmgKQEAgLTMsNyArMyw3IEBACiAjaWYgZGVmaW5lZChsaW51eCkKIGNvbmZpZ19yZXF1aXJlKGhhcmR3YXJlL21lbW9yeS9tZW1vcnlfbGludXgpCiAKLSNlbGlmIChkZWZpbmVkKGRhcndpbjcpIHx8IGRlZmluZWQoZGFyd2luOCkgfHwgZGVmaW5lZChkYXJ3aW45KSkKKyNlbGlmIChkZWZpbmVkKGRhcndpbikpCiBjb25maWdfcmVxdWlyZShoYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2RhcndpbikKIAogI2VsaWYgKGRlZmluZWQoZnJlZWJzZDIpIHx8IGRlZmluZWQoZnJlZWJzZDMpIHx8IGRlZmluZWQoZnJlZWJzZDQpICB8fCBkZWZpbmVkKGZyZWVic2Q1KXx8IGRlZmluZWQoZnJlZWJzZDYpKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L2h3X21lbS5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L2h3X21lbS5jCmluZGV4IGIxOGE5YjguLmJhZGM3NzUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9od19tZW0uYworKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvaHdfbWVtLmMKQEAgLTMsNiArMywxMiBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvbWVtb3J5Lmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaGFyZHdhcmVfbWVtb3J5LCBuZXRzbm1wX3VudXNlZCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG1lbW9yeV9nZXRfY2FjaGUsIGhhcmR3YXJlX21lbW9yeSkKKwogZXh0ZXJuIE5ldHNubXBDYWNoZUxvYWQgbmV0c25tcF9tZW1fYXJjaF9sb2FkOwogCiBuZXRzbm1wX21lbW9yeV9pbmZvICpfbWVtX2hlYWQgID0gTlVMTDsKQEAgLTg3LDkgKzkzLDExIEBACiAKIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTUVNT1JZX0dFVF9DQUNIRQogbmV0c25tcF9jYWNoZSAqbmV0c25tcF9tZW1vcnlfZ2V0X2NhY2hlKCB2b2lkICkgewogICAgIHJldHVybiBfbWVtX2NhY2hlOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTUVNT1JZX0dFVF9DQUNIRSAqLwogCiBpbnQgbmV0c25tcF9tZW1vcnlfbG9hZCggdm9pZCApIHsKICAgICAgcmV0dXJuIG5ldHNubXBfY2FjaGVfY2hlY2tfYW5kX3JlbG9hZCggX21lbV9jYWNoZSApOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9kYXJ3aW4uYyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfZGFyd2luLmMKaW5kZXggNDkxNGYwYy4uNWE1NTk3NCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9kYXJ3aW4uYworKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2Rhcndpbi5jCkBAIC01LDEwICs1LDE0IEBACiAKICNpbmNsdWRlIDxkaXJlbnQuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KLSNpbmNsdWRlIDxtYWNoL21hY2hfaG9zdC5oPgorCiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CiAKKyNpbmNsdWRlIDxtYWNoL21hY2guaD4KKyNpbmNsdWRlIDxtYWNoL21hY2hfdGltZS5oPgorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8SU9LaXQvcHMvSU9Qb3dlclNvdXJjZXMuaD4KIAogLyoKICAqIFJldGFpbmVkIGZyb20gVUNEIGltcGxlbWVudGF0aW9uCkBAIC00NCw4ICs0OCw3IEBACiAgICAgIG1hY2hfcG9ydCA9IG1hY2hfaG9zdF9zZWxmKCk7CiAgICAgIGVycm9yID0gaG9zdF9wcm9jZXNzb3Jfc2V0cyhtYWNoX3BvcnQsICZwc2V0cywgJnBjbnQpOwogICAgICBpZiAoZXJyb3IgIT0gS0VSTl9TVUNDRVNTKSB7Ci0gICAgICAgIHNucHJpbnRmKGVycm1zZywgc2l6ZW9mKGVycm1zZyksICJFcnJvciBpbiBob3N0X3Byb2Nlc3Nvcl9zZXRzKCk6ICVzXG4iLCBtYWNoX2Vycm9yX3N0cmluZyhlcnJvcikpOwotICAgICAgICBzbm1wX2xvZ19wZXJyb3IoZXJybXNnKTsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkVycm9yIGluIGhvc3RfcHJvY2Vzc29yX3NldHMoKTogJXNcbiIsIG1hY2hfZXJyb3Jfc3RyaW5nKGVycm9yKSk7CiAgICAgICAgIHJldHVybigwKTsKICAgICAgfQogCkBAIC03NSw3ICs3OCw3IEBACiAgICAgICAgICAgICBmb3IgKGFkZHJlc3MgPSAwOzsgYWRkcmVzcyArPSBzaXplKSB7CiAgICAgICAgICAgICAgICAgLyogR2V0IG1lbW9yeSByZWdpb24uICovCiAgICAgICAgICAgICAgICAgY291bnQgPSBWTV9SRUdJT05fRVhURU5ERURfSU5GT19DT1VOVDsgCi0gICAgICAgICAgICAgICAgaWYgKHZtX3JlZ2lvbih0YXNrc1tqXSwgJmFkZHJlc3MsICZzaXplLCBWTV9SRUdJT05fRVhURU5ERURfSU5GTywgKHZtX3JlZ2lvbl9leHRlbmRlZF9pbmZvX3QpJmluZm8sICZjb3VudCwgJm9iamVjdF9uYW1lKSAhPSBLRVJOX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgICAgICBpZiAodm1fcmVnaW9uKHRhc2tzW2pdLCAmYWRkcmVzcywgJnNpemUsIFZNX1JFR0lPTl9FWFRFTkRFRF9JTkZPLCAmaW5mbywgJmNvdW50LCAmb2JqZWN0X25hbWUpICE9IEtFUk5fU1VDQ0VTUykgewogICAgICAgICAgICAgICAgICAgICAvKiBObyBtb3JlIG1lbW9yeSByZWdpb25zLiAqLwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192My5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjMuYwppbmRleCA2MGFmOWU2Li5lMzRkYTE5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192My5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvbG1zZW5zb3JzX3YzLmMKQEAgLTI2LDkgKzI2LDkgQEAKIAlpbnQgICAgICAgICAgICAgYSA9IDA7CiAKICAgICAgICAgd2hpbGUgKChkYXRhID0gc2Vuc29yc19nZXRfZmVhdHVyZXMoIGNoaXAsICZhKSkpIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2g6ZGV0YWlsIiwgImdldF9mZWF0dXJlcyAoJXMsICVkKVxuIiwgZGF0YS0+bmFtZSwgZGF0YS0+bnVtYmVyKSk7CiAJICAgIGludCAgICAgICAgICAgICBiID0gMDsKLSAKKworICAgICAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaDpkZXRhaWwiLCAiZ2V0X2ZlYXR1cmVzICglcywgJWQpXG4iLCBkYXRhLT5uYW1lLCBkYXRhLT5udW1iZXIpKTsKIAogICAgICAgICAgICAgd2hpbGUgKChkYXRhMiA9IHNlbnNvcnNfZ2V0X2FsbF9zdWJmZWF0dXJlcyggY2hpcCwgZGF0YSwgJmIpKSkgewogICAgICAgICAgICAgICAgIGNoYXIgICAgICAgICAgICpsYWJlbCA9IE5VTEw7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jIGIvYWdlbnQvbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXguYwppbmRleCBlZTQyNTQ0Li5kMzRkOTA2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmMKQEAgLTE4LDYgKzE4LDEzIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJoZWFkZXJfY29tcGxleC5oIgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGhlYWRlcl9jb21wbGV4X2FsbCwgbGlibmV0c25tcG1pYnMpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihoZWFkZXJfY29tcGxleF9mcmVlX2FsbCwgaGVhZGVyX2NvbXBsZXhfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGhlYWRlcl9jb21wbGV4X2ZpbmRfZW50cnksIGhlYWRlcl9jb21wbGV4X2FsbCkKKwogaW50CiBoZWFkZXJfY29tcGxleF9nZW5lcmF0ZV92YXJvaWQobmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyKQogewpAQCAtMzM3LDggKzM0NCw5IEBACiB9CiAKIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqCi1oZWFkZXJfY29tcGxleF9hZGRfZGF0YShzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKip0aGVkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyLCB2b2lkICpkYXRhKQoraGVhZGVyX2NvbXBsZXhfbWF5YmVfYWRkX2RhdGEoc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICoqdGhlZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwgdm9pZCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkb250X2FsbG93X2R1cGxpY2F0ZXMpCiB7CiAgICAgb2lkICAgICAgICAgICAgIG5ld29pZFtNQVhfT0lEX0xFTl07CiAgICAgc2l6ZV90ICAgICAgICAgIG5ld29pZF9sZW47CkBAIC0zNDksNyArMzU3LDggQEAKIAogICAgIGhlYWRlcl9jb21wbGV4X2dlbmVyYXRlX29pZChuZXdvaWQsICZuZXdvaWRfbGVuLCBOVUxMLCAwLCB2YXIpOwogICAgIHJldCA9Ci0gICAgICAgIGhlYWRlcl9jb21wbGV4X2FkZF9kYXRhX2J5X29pZCh0aGVkYXRhLCBuZXdvaWQsIG5ld29pZF9sZW4sIGRhdGEpOworICAgICAgICBoZWFkZXJfY29tcGxleF9tYXliZV9hZGRfZGF0YV9ieV9vaWQodGhlZGF0YSwgbmV3b2lkLCBuZXdvaWRfbGVuLCBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9udF9hbGxvd19kdXBsaWNhdGVzKTsKICAgICAvKgogICAgICAqIGZyZWUgdGhlIHZhcmlhYmxlIGxpc3QsIGJ1dCBub3QgdGhlIGVuY2xvc2VkIGRhdGEhICBpdCdzIG5vdCBvdXJzISAKICAgICAgKi8KQEAgLTM1OCwzNCArMzY3LDIxIEBACiB9CiAKIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqCi1oZWFkZXJfY29tcGxleF9hZGRfZGF0YV9ieV9vaWQoc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICoqdGhlZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiBuZXdvaWQsIHNpemVfdCBuZXdvaWRfbGVuLCB2b2lkICpkYXRhKQoraGVhZGVyX2NvbXBsZXhfYWRkX2RhdGEoc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICoqdGhlZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwgdm9pZCAqZGF0YSkKIHsKLSAgICBzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKmhjaXB0cm4sICpoY2lwdHJwLCAqb3Vyc2VsZjsKLSAgICBpbnQgcmM7CisgICAgcmV0dXJuCisgICAgICAgIGhlYWRlcl9jb21wbGV4X21heWJlX2FkZF9kYXRhKHRoZWRhdGEsIHZhciwgZGF0YSwgMCk7Cit9CiAKLSAgICBpZiAodGhlZGF0YSA9PSBOVUxMIHx8IG5ld29pZCA9PSBOVUxMIHx8IGRhdGEgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBmb3IgKGhjaXB0cm4gPSAqdGhlZGF0YSwgaGNpcHRycCA9IE5VTEw7Ci0gICAgICAgICBoY2lwdHJuICE9IE5VTEw7IGhjaXB0cnAgPSBoY2lwdHJuLCBoY2lwdHJuID0gaGNpcHRybi0+bmV4dCkgewotICAgICAgICAvKgotICAgICAgICAgKiBYWFg6IGNoZWNrIGZvciA9PSBhbmQgZXJyb3IgKG92ZXJsYXBwaW5nIHRhYmxlIGVudHJpZXMpIAotICAgICAgICAgKiA4LzIwMDUgcmtzIE9rLCBJIGFkZGVkIGR1cGxpY2F0ZSBlbnRyeSBjaGVjaywgYnV0IG9ubHkgbG9nCi0gICAgICAgICAqICAgICAgICAgICAgd2FybmluZyBhbmQgY29udGludWUsIGJlY2F1c2UgaXQgc2VlbXMgdGhhdCBub2JvZHkKLSAgICAgICAgICogICAgICAgICAgICB0aGF0IGNhbGxzIHRoaXMgZnVjbnRpb24gZG9lcyBlcnJvciBjaGVja2luZyEuCi0gICAgICAgICAqLwotICAgICAgICByYyA9IHNubXBfb2lkX2NvbXBhcmUoaGNpcHRybi0+bmFtZSwgaGNpcHRybi0+bmFtZWxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld29pZCwgbmV3b2lkX2xlbik7Ci0gICAgICAgIGlmIChyYyA+IDApCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZWxzZSBpZiAoMCA9PSByYykgewotICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJoZWFkZXJfY29tcGxleF9hZGRfZGF0YV9ieV9vaWQgd2l0aCAiCi0gICAgICAgICAgICAgICAgICAgICAiZHVwbGljYXRlIGluZGV4LlxuIik7Ci0gICAgICAgICAgICAvKiogdW5jb21tZW50IG51bGwgcmV0dXJuIHdoZW4gY2FsbGVycyBkbyBlcnJvciBjaGVja2luZyAqLwotICAgICAgICAgICAgLyoqIHJldHVybiBOVUxMOyAqLwotICAgICAgICB9Ci0gICAgfQorc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICoKK19oZWFkZXJfY29tcGxleF9hZGRfYmV0d2VlbihzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKip0aGVkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqaGNpcHRycCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKmhjaXB0cm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogbmV3b2lkLCBzaXplX3QgbmV3b2lkX2xlbiwgdm9pZCAqZGF0YSkKK3sKKyAgICBzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKm91cnNlbGY7CiAKICAgICAvKgogICAgICAqIG5wdHIgc2hvdWxkIG5vdyBwb2ludCB0byB0aGUgc3BvdCB0aGF0IHdlIG5lZWQgdG8gYWRkIG91cnNlbHZlcwpAQCAtNDI5LDYgKzQyNSw1MCBAQAogICAgIHJldHVybiBoY2lwdHJwOwogfQogCisKK3N0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqCitoZWFkZXJfY29tcGxleF9tYXliZV9hZGRfZGF0YV9ieV9vaWQoc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICoqdGhlZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiBuZXdvaWQsIHNpemVfdCBuZXdvaWRfbGVuLCB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkb250X2FsbG93X2R1cGxpY2F0ZXMpCit7CisgICAgc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICpoY2lwdHJuLCAqaGNpcHRycDsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAodGhlZGF0YSA9PSBOVUxMIHx8IG5ld29pZCA9PSBOVUxMIHx8IGRhdGEgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmb3IgKGhjaXB0cm4gPSAqdGhlZGF0YSwgaGNpcHRycCA9IE5VTEw7CisgICAgICAgICBoY2lwdHJuICE9IE5VTEw7IGhjaXB0cnAgPSBoY2lwdHJuLCBoY2lwdHJuID0gaGNpcHRybi0+bmV4dCkgeworICAgICAgICAvKgorICAgICAgICAgKiBYWFg6IGNoZWNrIGZvciA9PSBhbmQgZXJyb3IgKG92ZXJsYXBwaW5nIHRhYmxlIGVudHJpZXMpIAorICAgICAgICAgKiA4LzIwMDUgcmtzIE9rLCBJIGFkZGVkIGR1cGxpY2F0ZSBlbnRyeSBjaGVjaywgYnV0IG9ubHkgbG9nCisgICAgICAgICAqICAgICAgICAgICAgd2FybmluZyBhbmQgY29udGludWUsIGJlY2F1c2UgaXQgc2VlbXMgdGhhdCBub2JvZHkKKyAgICAgICAgICogICAgICAgICAgICB0aGF0IGNhbGxzIHRoaXMgZnVjbnRpb24gZG9lcyBlcnJvciBjaGVja2luZyEuCisgICAgICAgICAqLworICAgICAgICByYyA9IHNubXBfb2lkX2NvbXBhcmUoaGNpcHRybi0+bmFtZSwgaGNpcHRybi0+bmFtZWxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld29pZCwgbmV3b2lkX2xlbik7CisgICAgICAgIGlmIChyYyA+IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZWxzZSBpZiAoMCA9PSByYykgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJoZWFkZXJfY29tcGxleF9hZGRfZGF0YV9ieV9vaWQgd2l0aCAiCisgICAgICAgICAgICAgICAgICAgICAiZHVwbGljYXRlIGluZGV4LlxuIik7CisgICAgICAgICAgICBpZiAoZG9udF9hbGxvd19kdXBsaWNhdGVzKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIF9oZWFkZXJfY29tcGxleF9hZGRfYmV0d2Vlbih0aGVkYXRhLCBoY2lwdHJwLCBoY2lwdHJuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3b2lkLCBuZXdvaWRfbGVuLCBkYXRhKTsKK30KKworc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICoKK2hlYWRlcl9jb21wbGV4X2FkZF9kYXRhX2J5X29pZChzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKip0aGVkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIG5ld29pZCwgc2l6ZV90IG5ld29pZF9sZW4sIHZvaWQgKmRhdGEpCit7CisgICAgcmV0dXJuIGhlYWRlcl9jb21wbGV4X21heWJlX2FkZF9kYXRhX2J5X29pZCh0aGVkYXRhLCBuZXdvaWQsIG5ld29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLCAwKTsKK30KKwogLyoKICAqIGV4dHJhY3RzIGFuIGVudHJ5IGZyb20gdGhlIHN0b3JhZ2Ugc3BhY2UgKHJlbW92aW5nIGl0IGZyb20gZnV0dXJlCiAgKiBhY2Nlc3NlcykgYW5kIHJldHVybnMgdGhlIGRhdGEgc3RvcmVkIHRoZXJlCkBAIC00ODUsNiArNTI1LDcgQEAKIC8qCiAgKiBjb21wbGV0ZWx5IHdpcGUgb3V0IGFsbCBlbnRyaWVzIGluIG91ciBkYXRhIHN0b3JlIAogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSEVBREVSX0NPTVBMRVhfRlJFRV9BTEwKIHZvaWQKIGhlYWRlcl9jb21wbGV4X2ZyZWVfYWxsKHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqdGhlc3R1ZmYsCiAgICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb21wbGV4Q2xlYW5lciAqIGNsZWFuZXIpCkBAIC00OTYsNyArNTM3LDkgQEAKICAgICAgICAgaGVhZGVyX2NvbXBsZXhfZnJlZV9lbnRyeShoY2lwdHIsIGNsZWFuZXIpOwogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0hFQURFUl9DT01QTEVYX0ZSRUVfQUxMICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9IRUFERVJfQ09NUExFWF9GSU5EX0VOVFJZCiBzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKgogaGVhZGVyX2NvbXBsZXhfZmluZF9lbnRyeShzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKnRoZXN0dWZmLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp0aGVlbnRyeSkKQEAgLTUwNyw2ICs1NTAsNyBAQAogICAgICAgICAgaGNpcHRyID0gaGNpcHRyLT5uZXh0KTsKICAgICByZXR1cm4gaGNpcHRyOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSEVBREVSX0NPTVBMRVhfRklORF9FTlRSWSAqLwogCiAjaWZkZWYgVEVTVElORwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5oIGIvYWdlbnQvbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXguaAppbmRleCAyMDI4Y2VlLi4yYTE3MjhhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5oCisrKyBiL2FnZW50L21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmgKQEAgLTU3LDYgKzU3LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqdGhlZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdmFyLCB2b2lkICpkYXRhKTsKK3N0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqaGVhZGVyX2NvbXBsZXhfbWF5YmVfYWRkX2RhdGEoc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICoqdGhlZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZG9udF9hbGxvd19kdXBsaWNhdGVzKTsKIAogLyoKICAqIE5vdGU6IG5ld29pZCBpcyBjb3BpZWQvY2xvbmVkIGZvciB5b3UgCkBAIC02OCw1ICs3MiwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdvaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSk7CitzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKmhlYWRlcl9jb21wbGV4X21heWJlX2FkZF9kYXRhX2J5X29pZChzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKip0aGVkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogbmV3b2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5ld29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRvbnRfYWxsb3dfZHVwbGljYXRlcyk7CiAKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX01JQkdST1VQX0hFQURFUl9DT01QTEVYX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5jCmluZGV4IGJiNTUxODEuLjNlZjA1ZTkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuYwpAQCAtNyw2ICs3LDcgQEAKICAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9zd2luc3QuaD4KQEAgLTE0LDYgKzE1LDEwIEBACiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzb2Z0d2FyZV9pbnN0YWxsZWQsIGxpYm5ldHNubXBtaWJzKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc3dpbnN0X2VudHJ5X3JlbW92ZSwgbmV0c25tcF91bnVzZWQpCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKQEAgLTE4MSw2ICsxODYsNyBAQAogLyoKICAqIHJlbW92ZSBhIHJvdyBmcm9tIHRoZSB0YWJsZSAKICAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NXSU5TVF9FTlRSWV9SRU1PVkUKIHZvaWQKIG5ldHNubXBfc3dpbnN0X2VudHJ5X3JlbW92ZShuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3N3aW5zdF9lbnRyeSAqZW50cnkpCkBAIC0xOTAsNiArMTk2LDcgQEAKICAgICAgICAgcmV0dXJuOyAgICAgICAgICAgICAgICAgLyogTm90aGluZyB0byByZW1vdmUgKi8KICAgICBDT05UQUlORVJfUkVNT1ZFKGNvbnRhaW5lciwgZW50cnkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1dJTlNUX0VOVFJZX1JFTU9WRSAqLwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuaCBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmgKaW5kZXggMGM4MDU2MS4uYmRhM2U0NyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuaAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5oCkBAIC0xNCw3ICsxNCw2IEBACiAvKgogICogYWxsIHBsYXRmb3JtcyB1c2UgdGhpcyBnZW5lcmljIGNvZGUKICAqLwotY29uZmlnX3JlcXVpcmUoaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QpCiBjb25maWdfZXhjbHVkZShob3N0L2hyX3N3aW5zdCkKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X2Rhcndpbi5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfZGFyd2luLmMKaW5kZXggYmJmNWEyZi4uN2E0NzM3MiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfZGFyd2luLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfZGFyd2luLmMKQEAgLTcsNiArNyw3IEBACiAgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KQEAgLTI2LDYgKzI3LDkgQEAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjb250YWluZXJfZGlyZWN0b3J5KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZGF0ZV9uX3RpbWUpCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiBzdGF0aWMgaW50IF9hZGRfYXBwbGljYXRpb25zX2luX2RpcihuZXRzbm1wX2NvbnRhaW5lciAqLCBjb25zdCBjaGFyKiBwYXRoKTsKQEAgLTEyNSw3ICsxMjksOCBAQAogICAgIHJldHVybiAwOwogfQogCi12b2lkICBfZHVtcF9mbGFncyh1X2xvbmcgZmxhZ3MpCitzdGF0aWMgdm9pZAorX2R1bXBfZmxhZ3ModV9sb25nIGZsYWdzKQogewogICAgIHN0YXRpYyBzdHJ1Y3QgewogICAgICAgICBjb25zdCBjaGFyKm5hbWU7CkBAIC0yNTEsNiArMjU2LDggQEAKICAgICAgICAgICAgIHJjID0gLTE7CiAgICAgICAgICAgICBTTk1QX0NGUmVsZWFzZShwcm9kTmFtZSk7CiAgICAgICAgICAgICBTTk1QX0NGUmVsZWFzZSh2ZXJzaW9uKTsKKyAgICAgICAgICAgIENGUmVsZWFzZShjdXJyZW50UGF0aCk7CisgICAgICAgICAgICBDRlJlbGVhc2UoY3VycmVudFVSTCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yODEsNyArMjg4LDcgQEAKICAgICByZXR1cm4gcmM7CiB9CiAKLWludAorc3RhdGljIGludAogX2NoZWNrX2J1bmRsZWRfYXBwKENGVVJMUmVmIGN1cnJlbnRVUkwsIENGU3RyaW5nUmVmICpwcm9kTmFtZSwKICAgICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiAqdmVyc2lvbiwgY29uc3QgY2hhciogZmlsZSkKIHsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYwppbmRleCBiYzhlZTJlLi5lN2E0MDgyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcGtnaW5mby5jCkBAIC0zLDYgKzMsNyBAQAogICogICAgIGhyU1dJbnN0YWxsZWRUYWJsZSBkYXRhIGFjY2VzczoKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CkBAIC0zMSwxMiArMzIsMTkgQEAKICNpbmNsdWRlIDxwa2dpbmZvLmg+CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfUEtHX0gKKyNkZWZpbmUgcmVzdHJpY3QKKyNpbmNsdWRlIDxwa2cuaD4KKyNlbmRpZgorCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dpbnN0Lmg+CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGRhdGVfbl90aW1lKQorCiAgICAvKgogICAgICogTG9jYXRpb24gb2YgcGFja2FnZSBkaXJlY3RvcnkuCiAgICAgKiBVc2VkIGZvcjoKQEAgLTk0LDUyICsxMDIsMTE1IEBACiAgICAgc2l6ZV90ICAgICAgICAgICAgICAgIGRhdGVfbGVuOwogICAgIGludCAgICAgICAgICAgICAgICAgICBpID0gMTsKICAgICBuZXRzbm1wX3N3aW5zdF9lbnRyeSAqZW50cnk7CisjaWZkZWYgSEFWRV9MSUJQS0cKKyAgICBzdHJ1Y3QgcGtnZGIgKmRiID0gTlVMTDsKKyAgICBzdHJ1Y3QgcGtnZGJfaXQgKml0ID0gTlVMTDsKKyAgICBzdHJ1Y3QgcGtnICpwa2cgPSBOVUxMOworICAgIGNoYXIgcGtnbmFtZVsgU05NUF9NQVhQQVRIIF07CisgICAgY2hhciBwa2dkYXRlWyBCVUZTSVogXTsKKyAgICBpbnQgcGtnbmcgPSAwOwogCi0gICAgaWYgKCAhcGtnX2RpcmVjdG9yeVswXSApIHsKLSAgICAgICAgcmV0dXJuIDE7ICAgIC8qIENhbid0IHJlcG9ydCBpbnN0YWxsZWQgcGFja2FnZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGVyZSBpc24ndCBhIGxpc3Qgb2YgdGhlbSEgKi8KKyAgICBpZiAocGtnX2luaXQoTlVMTCwgTlVMTCkpIHsKKyAgICAgICAgc25tcF9sb2coIExPR19FUlIsICJTV0luc3Q6IGVycm9yIGluaXRpYWxpemluZyBwa2duZyBkYlxuIiApOworICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgZCA9IG9wZW5kaXIoIHBrZ19kaXJlY3RvcnkgKTsKLSAgICBpZiAoIWQpCisKKyAgICBpZiAocGtnZGJfb3BlbigmZGIsIFBLR0RCX0RFRkFVTFQpICE9IEVQS0dfT0spIHsKKwlzbm1wX2xvZyggTE9HX0VSUiwgIlNXSW5zdDogZXJyb3Igb3BlbmluZyBwa2duZyBkYlxuIiApOwogCXJldHVybiAxOwotICAgIHdoaWxlICgoZHAgPSByZWFkZGlyKGQpKSAhPSBOVUxMKSB7Ci0gICAgICAgIGlmICggJy4nID09IGRwLT5kX25hbWVbMF0gKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGVudHJ5ID0gbmV0c25tcF9zd2luc3RfZW50cnlfY3JlYXRlKCBpKysgKTsKLSAgICAgICAgaWYgKE5VTEwgPT0gZW50cnkpCi0gICAgICAgICAgICBjb250aW51ZTsgICAvKiBlcnJvciBhbHJlYWR5IGxvZ2dlZCBieSBmdW5jdGlvbiAqLwotICAgICAgICBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpOworICAgIH0KKworICAgIGlmIChwa2dfc3RhdHVzKE5VTEwpID09IFBLR19TVEFUVVNfQUNUSVZFKSB7CisJcGtnbmcgPSAxOworICAgIH0gZWxzZSB7CisJc25tcF9sb2coIExPR19JTkZPLCAiU1dJbnN0OiBub3QgYSBwa2duZyBzeXN0ZW1cbiIgKTsKKyAgICB9CisKKyAgICAvLyBpZiB3ZSBhcmUgdXNpbmcgRnJlZUJTRCdzIHBrZ25nCisgICAgaWYgKHBrZ25nKSB7CisgICAgICAgIGlmICgoaXQgPSBwa2dkYl9xdWVyeShkYiwgTlVMTCwgTUFUQ0hfQUxMKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgc25tcF9sb2coIExPR19FUlIsICJTV0luc3Q6IGVycm9yIHF1ZXJ5aW5nIHBrZ25nIGRiXG4iICk7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorCisgICAgICAgIHdoaWxlIChwa2dkYl9pdF9uZXh0KGl0LCAmcGtnLCBQS0dfTE9BRF9CQVNJQykgPT0gRVBLR19PSykgeworICAgICAgICAgICAgcGtnX3NucHJpbnRmKHBrZ25hbWUsIHNpemVvZihwa2duYW1lKSwgIiVuLSV2IiwgcGtnLCBwa2cpOworICAgICAgICAgICAgcGtnX3NucHJpbnRmKHBrZ2RhdGUsIHNpemVvZihwa2dkYXRlKSwgIiV0IiwgcGtnKTsKKworICAgICAgICAgICAgZW50cnkgPSBuZXRzbm1wX3N3aW5zdF9lbnRyeV9jcmVhdGUoIGkrKyApOworCisgICAgICAgICAgICBpZiAoTlVMTCA9PSBlbnRyeSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsgICAvKiBlcnJvciBhbHJlYWR5IGxvZ2dlZCBieSBmdW5jdGlvbiAqLworCisgICAgICAgICAgICBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpOworCisgICAgICAgICAgICBlbnRyeS0+c3dOYW1lX2xlbiA9IHNucHJpbnRmKCBlbnRyeS0+c3dOYW1lLCBzaXplb2YoZW50cnktPnN3TmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLCBwa2duYW1lICk7CisgICAgICAgICAgICBpZiAoZW50cnktPnN3TmFtZV9sZW4gPj0gc2l6ZW9mKGVudHJ5LT5zd05hbWUpKQorICAgICAgICAgICAgICAgIGVudHJ5LT5zd05hbWVfbGVuID0gc2l6ZW9mKGVudHJ5LT5zd05hbWUpLTE7CisKKyAgICAgICAgICAgIGluc3RhbGxfdGltZSA9IGF0b2kocGtnZGF0ZSk7CisgICAgICAgICAgICBjcCA9IGRhdGVfbl90aW1lKCAmaW5zdGFsbF90aW1lLCAmZGF0ZV9sZW4gKTsKKyAgICAgICAgICAgIG1lbWNweSggZW50cnktPnN3RGF0ZSwgY3AsIGRhdGVfbGVuICk7CisgICAgICAgICAgICBlbnRyeS0+c3dEYXRlX2xlbiA9IGRhdGVfbGVuOworICAgICAgICB9CisKKyAgICAgICAgcGtnZGJfaXRfZnJlZShpdCk7CisgICAgICAgIHBrZ2RiX2Nsb3NlKGRiKTsKKyAgICAgICAgcGtnX3NodXRkb3duKCk7CisgICAgfSBlbHNlIHsKKyNlbmRpZiAvKiBIQVZFX0xJQlBLRyAqLworICAgICAgICBpZiAoICFwa2dfZGlyZWN0b3J5WzBdICkgeworICAgICAgICAgICAgcmV0dXJuIDE7ICAgIC8qIENhbid0IHJlcG9ydCBpbnN0YWxsZWQgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGVyZSBpc24ndCBhIGxpc3Qgb2YgdGhlbSEgKi8KKyAgICAgICAgfQorCisgICAgICAgIGQgPSBvcGVuZGlyKCBwa2dfZGlyZWN0b3J5ICk7CisgICAgICAgIGlmICghZCkKKyAgICAgICAgICAgIHJldHVybiAxOworCisgICAgICAgIHdoaWxlICgoZHAgPSByZWFkZGlyKGQpKSAhPSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoICcuJyA9PSBkcC0+ZF9uYW1lWzBdICkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHNucHJpbnRmKCBidWYsIEJVRlNJWiwgIiVzLyVzIiwgcGtnX2RpcmVjdG9yeSwgZHAtPmRfbmFtZSApOworICAgICAgICAgICAgaWYgKHN0YXQoIGJ1ZiwgJnN0YXRfYnVmICkgPCAwKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgZW50cnkgPSBuZXRzbm1wX3N3aW5zdF9lbnRyeV9jcmVhdGUoIGkrKyApOworICAgICAgICAgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgICAgICAgICAgY29udGludWU7ICAgLyogZXJyb3IgYWxyZWFkeSBsb2dnZWQgYnkgZnVuY3Rpb24gKi8KKyAgICAgICAgICAgIENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSk7CiAKICNpZmRlZiBIQVZFX1BLR0lORk8KLSAgICAgICAgdiA9IHBrZ3BhcmFtKCBkcC0+ZF9uYW1lLCAiVkVSU0lPTiIgKTsKLSAgICAgICAgYyA9IHBrZ3BhcmFtKCBkcC0+ZF9uYW1lLCAiQ0FURUdPUlkiICk7CisJICAgIHYgPSBwa2dwYXJhbSggZHAtPmRfbmFtZSwgIlZFUlNJT04iICk7CisJICAgIGMgPSBwa2dwYXJhbSggZHAtPmRfbmFtZSwgIkNBVEVHT1JZIiApOwogCi0gICAgICAgIGVudHJ5LT5zd05hbWVfbGVuID0gc25wcmludGYoIGVudHJ5LT5zd05hbWUsIHNpemVvZihlbnRyeS0+c3dOYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzLSVzIiwgZHAtPmRfbmFtZSwgdiApOwotCWlmIChlbnRyeS0+c3dOYW1lX2xlbiA+PSBzaXplb2YoZW50cnktPnN3TmFtZSkpCi0JICAgIGVudHJ5LT5zd05hbWVfbGVuID0gc2l6ZW9mKGVudHJ5LT5zd05hbWUpLTE7Ci0gICAgICAgIGVudHJ5LT5zd1R5cGUgPSAoTlVMTCAhPSBzdHJzdHIoIGMsICJzeXN0ZW0iKSkKLSAgICAgICAgICAgICAgICAgICAgICAgID8gMiAgICAgIC8qIG9wZXJhdGluZ1N5c3RlbSAqLwotICAgICAgICAgICAgICAgICAgICAgICAgOiA0OyAgICAgLyogIGFwcGxpY2F0aW9uICAgICovCisJICAgIGVudHJ5LT5zd05hbWVfbGVuID0gc25wcmludGYoIGVudHJ5LT5zd05hbWUsIHNpemVvZihlbnRyeS0+c3dOYW1lKSwKKwkJCQkJICAiJXMtJXMiLCBkcC0+ZF9uYW1lLCB2ICk7CisJICAgIGlmIChlbnRyeS0+c3dOYW1lX2xlbiA+PSBzaXplb2YoZW50cnktPnN3TmFtZSkpCisJCWVudHJ5LT5zd05hbWVfbGVuID0gc2l6ZW9mKGVudHJ5LT5zd05hbWUpLTE7CisJICAgIGVudHJ5LT5zd1R5cGUgPSAoTlVMTCAhPSBzdHJzdHIoIGMsICJzeXN0ZW0iKSkKKwkJCSAgICA/IDIgICAgICAvKiBvcGVyYXRpbmdTeXN0ZW0gKi8KKwkJCSAgICA6IDQ7ICAgICAvKiAgYXBwbGljYXRpb24gICAgKi8KIAotICAgICAgICAvKiBEbyB3ZSBuZWVkIHRvIGZyZWUgJ3YnICYgJ2MnID8/PyAqLworCSAgICAvKiBEbyB3ZSBuZWVkIHRvIGZyZWUgJ3YnICYgJ2MnID8/PyAqLwogI2Vsc2UKLSAgICAgICAgZW50cnktPnN3TmFtZV9sZW4gPSBzbnByaW50ZiggZW50cnktPnN3TmFtZSwgc2l6ZW9mKGVudHJ5LT5zd05hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLCBkcC0+ZF9uYW1lICk7Ci0JaWYgKGVudHJ5LT5zd05hbWVfbGVuID49IHNpemVvZihlbnRyeS0+c3dOYW1lKSkKLQkgICAgZW50cnktPnN3TmFtZV9sZW4gPSBzaXplb2YoZW50cnktPnN3TmFtZSktMTsKKwkgICAgZW50cnktPnN3TmFtZV9sZW4gPSBzbnByaW50ZiggZW50cnktPnN3TmFtZSwgc2l6ZW9mKGVudHJ5LT5zd05hbWUpLAorCQkJCQkgICIlcyIsIGRwLT5kX25hbWUgKTsKKwkgICAgaWYgKGVudHJ5LT5zd05hbWVfbGVuID49IHNpemVvZihlbnRyeS0+c3dOYW1lKSkKKwkJZW50cnktPnN3TmFtZV9sZW4gPSBzaXplb2YoZW50cnktPnN3TmFtZSktMTsKIAotICAgICAgICAvKiBubyBpbmZvcm1hdGlvbiBhYm91dCBPL1MgdnMgYXBwbGljYXRpb24gcGFja2FnZXMgPz8/ICovCisJICAgIC8qIG5vIGluZm9ybWF0aW9uIGFib3V0IE8vUyB2cyBhcHBsaWNhdGlvbiBwYWNrYWdlcyA/Pz8gKi8KICNlbmRpZgogCi0gICAgICAgIHNucHJpbnRmKCBidWYsIEJVRlNJWiwgIiVzLyVzIiwgcGtnX2RpcmVjdG9yeSwgZHAtPmRfbmFtZSApOwotICAgICAgICBzdGF0KCBidWYsICZzdGF0X2J1ZiApOwotICAgICAgICBpbnN0YWxsX3RpbWUgPSBzdGF0X2J1Zi5zdF9tdGltZTsKLSAgICAgICAgY3AgPSBkYXRlX25fdGltZSggJmluc3RhbGxfdGltZSwgJmRhdGVfbGVuICk7Ci0gICAgICAgIG1lbWNweSggZW50cnktPnN3RGF0ZSwgY3AsIGRhdGVfbGVuICk7Ci0gICAgICAgIGVudHJ5LT5zd0RhdGVfbGVuID0gZGF0ZV9sZW47CisJICAgIGluc3RhbGxfdGltZSA9IHN0YXRfYnVmLnN0X210aW1lOworCSAgICBjcCA9IGRhdGVfbl90aW1lKCAmaW5zdGFsbF90aW1lLCAmZGF0ZV9sZW4gKTsKKwkgICAgbWVtY3B5KCBlbnRyeS0+c3dEYXRlLCBjcCwgZGF0ZV9sZW4gKTsKKwkgICAgZW50cnktPnN3RGF0ZV9sZW4gPSBkYXRlX2xlbjsKKwl9CisJY2xvc2VkaXIoIGQgKTsKKyNpZmRlZiBIQVZFX0xJQlBLRwogICAgIH0KLSAgICBjbG9zZWRpciggZCApOworI2VuZGlmCiAKICAgICBERUJVR01TR1RMKCgic3dpbnN0OmxvYWQ6YXJjaCIsIiBsb2FkZWQgJWQgZW50cmllc1xuIiwKICAgICAgICAgICAgICAgICAoaW50KUNPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3JwbS5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcnBtLmMKaW5kZXggZGFlOGY2YS4uNzE1OTViZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcnBtLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcnBtLmMKQEAgLTMsNiArMyw3IEBACiAgKiAgICAgaHJTV0luc3RhbGxlZFRhYmxlIGRhdGEgYWNjZXNzOgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaWZkZWYgSEFWRV9TVERMSUJfSApAQCAtNDMsNiArNDQsOCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N3aW5zdC5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShkYXRlX25fdGltZSkKKwogICAgLyoKICAgICAqIExvY2F0aW9uIG9mIFJQTSBwYWNrYWdlIGRpcmVjdG9yeS4KICAgICAqIFVzZWQgZm9yOgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5jCmluZGV4IDgxMjAzMGYuLmQxOGVhNWYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmMKQEAgLTksMTEgKzksMTYgQEAKICAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzb2Z0d2FyZV9ydW5uaW5nLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHN3cnVuX21heF9wcm9jZXNzZXMsIHNvZnR3YXJlX3J1bm5pbmcpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc3dydW5fY291bnRfcHJvY2Vzc2VzX2J5X25hbWUsIHNvZnR3YXJlX3J1bm5pbmcpCiAKIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKgpAQCAtNzYsMTIgKzgxLDE1IEBACiAgICAgcmV0dXJuICggc3dydW5fY29udGFpbmVyID8gQ09OVEFJTkVSX1NJWkUoc3dydW5fY29udGFpbmVyKSA6IDAgKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NXUlVOX01BWF9QUk9DRVNTRVMKIGludAogc3dydW5fbWF4X3Byb2Nlc3Nlcyggdm9pZCApCiB7CiAgICAgcmV0dXJuIF9zd3J1bl9tYXg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TV1JVTl9NQVhfUFJPQ0VTU0VTICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TV1JVTl9DT1VOVF9QUk9DRVNTRVNfQllfTkFNRQogaW50CiBzd3J1bl9jb3VudF9wcm9jZXNzZXNfYnlfbmFtZSggY2hhciAqbmFtZSApCiB7CkBAIC0xMDIsNyArMTEwLDcgQEAKIAogICAgIHJldHVybiBpOwogfQotCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TV1JVTl9DT1VOVF9QUk9DRVNTRVNfQllfTkFNRSAqLwogCiAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fZGFyd2luLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2Rhcndpbi5jCmluZGV4IGJiZWZjNGUuLjNiMDBmZTMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fZGFyd2luLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9kYXJ3aW4uYwpAQCAtMTIwLDcgKzEyMCw3IEBACiAgICAgICAgICAqIHNraXAgZW1wdHkgbmFtZXMuCiAgICAgICAgICAqIHBfc3RhdCA9IChTSURMfFNSVU58U1NMRUVQfFNTVE9QfFNaT01CKQogICAgICAgICAgKi8KLSAgICAgICAgaWYgKChOVUxMID09IHByb2Nlc3Nlc1tpXS5rcF9wcm9jLnBfY29tbSkgfHwKKyAgICAgICAgaWYgKCgnXDAnID09IHByb2Nlc3Nlc1tpXS5rcF9wcm9jLnBfY29tbVswXSkgfHwKICAgICAgICAgICAgICgwID09IHByb2Nlc3Nlc1tpXS5rcF9wcm9jLnBfcGlkKSkgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiIHNraXBwaW5nIHBfY29tbSAnJXMnLCBwaWQgJTVkLCBwX3BzdGF0ICVkXG4iLApAQCAtMTkzLDcgKzE5Myw3IEBACiAgICAgICAgICAgICB9IGF0LCBuczsKICAgICAgICAgICAgIGF0LnVxID0gdGFza2luZm8ucHRpbmZvLnB0aV90b3RhbF91c2VyICsKICAgICAgICAgICAgICAgICAgICAgdGFza2luZm8ucHRpbmZvLnB0aV90b3RhbF9zeXN0ZW07Ci0gICAgICAgICAgICBucy51dyA9IEFic29sdXRlVG9OYW5vc2Vjb25kcyggYXQudXcgKTsKKyAgICAgICAgICAgIG5zID0gYXQ7CiAgICAgICAgICAgICBucy51cSA9IG5zLnVxIC8gMTAwMDAwMDBMTDsgLyogbmFubyB0byBkZWNpICovCiAgICAgICAgICAgICBpZiAodGFza19tZW0gPiBJTlQzMl9NQVgpIHsKICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwgU1dSVU5JTkRFTlQgIm1lbSBvdmVyZmxvd1xuIikpOwpAQCAtMjEwLDcgKzIxMCw3IEBACiAgICAgZnJlZShwcm9jZXNzZXMpOwogCiAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaCIsIiBsb2FkZWQgJWQgZW50cmllc1xuIiwKLSAgICAgICAgICAgICAgICBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisgICAgICAgICAgICAgICAgKGludClDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTM4Niw4ICszODYsOCBAQAogICAgICAgICAgICAgYnJlYWs7IC8qIEVuZCBvZiBleGVjX3BhdGggcmVhY2hlZC4gKi8KICAgICB9CiAgICAgaWYgKGNwICE9IGV4ZWNfcGF0aCArIGxlbikgewotICAgICAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoOl9jbiIsIiBPRkYgQlkgJWRcbiIsCi0gICAgICAgICAgICAgICAgICAgIChleGVjX3BhdGggKyBsZW4pIC0gY3ApKTsKKyAgICAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaDpfY24iLCAiIE9GRiBCWSAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgKGludCkoKGV4ZWNfcGF0aCArIGxlbikgLSBjcCkpKTsKICAgICAgICAgbmV0c25tcF9hc3NlcnQoIGNwID09IGV4ZWNfcGF0aCArIGxlbiApOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmMKaW5kZXggNmY5NDBiZi4uYWQ4YWVlMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5jCkBAIC0yMyw2ICsyMyw4IEBACiAKICNkZWZpbmUgTVlUQUJMRSAiaHJTV0luc3RhbGxlZFRhYmxlIgogCitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKKwogc3RhdGljIHZvaWQgX2NhY2hlX2ZyZWUobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICptYWdpYyk7CiBzdGF0aWMgaW50IF9jYWNoZV9sb2FkKG5ldHNubXBfY2FjaGUgKiBjYWNoZSwgdm9pZCAqbWFnaWMpOwogCkBAIC0zNiw2ICszOCwxNSBAQAogICAgIGluaXRpYWxpemVfdGFibGVfaHJTV0luc3RhbGxlZFRhYmxlKCk7CiB9CiAKK3ZvaWQKK3NodXRkb3duX2hyU1dJbnN0YWxsZWRUYWJsZSh2b2lkKQoreworICAgIGlmICh0YWJsZV9pbmZvKSB7CisJbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCXRhYmxlX2luZm8gPSBOVUxMOworICAgIH0KK30KKwogLyoqIEluaXRpYWxpemUgdGhlIGhyU1dJbnN0YWxsZWRUYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgKi8KIHZvaWQKIGluaXRpYWxpemVfdGFibGVfaHJTV0luc3RhbGxlZFRhYmxlKHZvaWQpCkBAIC00OCw3ICs1OSw2IEBACiAgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciA9IE5VTEw7CiAgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciA9IE5VTEw7CiAgICAgbmV0c25tcF9jYWNoZSAqY2FjaGUgPSBOVUxMOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8gPSBOVUxMOwogCiAgICAgREVCVUdNU0dUTCgoImhyU1dJbnN0YWxsZWQiLCAiaW5pdGlhbGl6ZVxuIikpOwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuaAppbmRleCAyYTFkYTIzLi40OGYxN2U4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmgKQEAgLTExLDYgKzExLDcgQEAKICAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAKICAqLwogdm9pZCAgICAgICAgICAgIGluaXRfaHJTV0luc3RhbGxlZFRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX2hyU1dJbnN0YWxsZWRUYWJsZSh2b2lkKTsKIHZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX2hyU1dJbnN0YWxsZWRUYWJsZSh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIGhyU1dJbnN0YWxsZWRUYWJsZV9oYW5kbGVyOwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5QZXJmVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5jCmluZGV4IDBiZjQ3MWIuLjQzYjQ0ZDEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5jCkBAIC0zMiw4ICszMiwxNSBAQAogICAgIGluaXRpYWxpemVfdGFibGVfaHJTV1J1blBlcmZUYWJsZSgpOwogfQogCit2b2lkCitzaHV0ZG93bl9oclNXUnVuUGVyZlRhYmxlKHZvaWQpCit7CisgICAgc2h1dGRvd25fdGFibGVfaHJTV1J1blBlcmZUYWJsZSgpOworfQorCiBleHRlcm4gb2lkICAgICAgaHJTV1J1blRhYmxlX29pZFtdOwogZXh0ZXJuIHNpemVfdCAgIGhyU1dSdW5UYWJsZV9vaWRfbGVuOworc3RhdGljIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKIC8qKiBJbml0aWFsaXplIHRoZSBoclNXUnVuUGVyZlRhYmxlIHRhYmxlIGJ5IGRlZmluaW5nIGl0cyBjb250ZW50cyBhbmQgaG93IGl0J3Mgc3RydWN0dXJlZCAqLwogdm9pZApAQCAtNDUsNyArNTIsNiBAQAogICAgICAgICBPSURfTEVOR1RIKGhyU1dSdW5QZXJmVGFibGVfb2lkKTsKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWc7CiAgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciA9IE5VTEw7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbyA9IE5VTEw7CiAKICAgICByZWcgPQogICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigiaHJTV1J1blBlcmZUYWJsZSIsCkBAIC0xMjgsNiArMTM0LDE1IEBACiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZShyZWcpOwogfQogCit2b2lkCitzaHV0ZG93bl90YWJsZV9oclNXUnVuUGVyZlRhYmxlKHZvaWQpCit7CisgICAgaWYgKHRhYmxlX2luZm8pIHsKKwluZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisJdGFibGVfaW5mbyA9IE5VTEw7CisgICAgfQorfQorCiAvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIGhyU1dSdW5QZXJmVGFibGUgdGFibGUgKi8KIGludAogaHJTV1J1blBlcmZUYWJsZV9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5QZXJmVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5oCmluZGV4IGI3OTM2MjcuLjQ1M2ZkYTMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5oCkBAIC0yMSw3ICsyMSw5IEBACiAgKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgCiAgKi8KIHZvaWQgICAgICAgICAgICBpbml0X2hyU1dSdW5QZXJmVGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25faHJTV1J1blBlcmZUYWJsZSh2b2lkKTsKIHZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX2hyU1dSdW5QZXJmVGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25fdGFibGVfaHJTV1J1blBlcmZUYWJsZSh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIGhyU1dSdW5QZXJmVGFibGVfaGFuZGxlcjsKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5jCmluZGV4IDlkOTI4NDEuLjAzYWQyNTYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuYwpAQCAtMjYsNiArMjYsOCBAQAogCiAjZGVmaW5lIE1ZVEFCTEUgImhyU1dSdW5UYWJsZSIKIAorc3RhdGljIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CisKIC8qKiBJbml0aWFsaXplcyB0aGUgaHJTV1J1blRhYmxlIG1vZHVsZSAqLwogdm9pZAogaW5pdF9oclNXUnVuVGFibGUodm9pZCkKQEAgLTM2LDYgKzM4LDE1IEBACiAgICAgaW5pdGlhbGl6ZV90YWJsZV9oclNXUnVuVGFibGUoKTsKIH0KIAordm9pZAorc2h1dGRvd25faHJTV1J1blRhYmxlKHZvaWQpCit7CisgICAgaWYgKHRhYmxlX2luZm8pIHsKKwluZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisJdGFibGVfaW5mbyA9IE5VTEw7CisgICAgfQorfQorCiBvaWQgICAgICBoclNXUnVuVGFibGVfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDI1LCA0LCAyIH07CiBzaXplX3QgICBoclNXUnVuVGFibGVfb2lkX2xlbiA9IE9JRF9MRU5HVEgoaHJTV1J1blRhYmxlX29pZCk7CiAKQEAgLTQ1LDEzICs1NiwxNSBAQAogewogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZzsKICAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyID0gTlVMTDsKLSAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvID0gTlVMTDsKLQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICNpZmRlZiBORVRTTk1QX0lOQ0xVREVfSFJTV1JVTl9XUklURV9TVVBQT1JUCiAjICBkZWZpbmUgU1dSVU5fQUNDRVNTX0xFVkVMIEhBTkRMRVJfQ0FOX1JXUklURQogI2Vsc2UKICMgIGRlZmluZSBTV1JVTl9BQ0NFU1NfTEVWRUwgSEFORExFUl9DQU5fUk9OTFkKICNlbmRpZgorI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLyAKKyMgIGRlZmluZSBTV1JVTl9BQ0NFU1NfTEVWRUwgSEFORExFUl9DQU5fUk9OTFkKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgcmVnID0KICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oTVlUQUJMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJTV1J1blRhYmxlX2hhbmRsZXIsCkBAIC0yMTcsNiArMjMwLDcgQEAKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICNpZmRlZiBORVRTTk1QX0lOQ0xVREVfSFJTV1JVTl9XUklURV9TVVBQT1JUCiAgICAgICAgIC8qCiAgICAgICAgICAqIFdyaXRlLXN1cHBvcnQKQEAgLTMyOSw2ICszNDMsNyBAQAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogI2VuZGlmIC8qIE5FVFNOTVBfSU5DTFVERV9IUlNXUlVOX1dSSVRFX1NVUFBPUlQgKi8KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmgKaW5kZXggNmNhNDk4OS4uZGU4MGZjMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5oCkBAIC0yMiw2ICsyMiw3IEBACiAgKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgCiAgKi8KIHZvaWQgICAgICAgICAgICBpbml0X2hyU1dSdW5UYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl9oclNXUnVuVGFibGUodm9pZCk7CiB2b2lkICAgICAgICAgICAgaW5pdGlhbGl6ZV90YWJsZV9oclNXUnVuVGFibGUodm9pZCk7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBoclNXUnVuVGFibGVfaGFuZGxlcjsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kaXNrLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suYwppbmRleCA2NzkyNjRiLi5jNGFjNTJmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suYwpAQCAtMTMzLDggKzEzMywxMCBAQAogdm9pZCAgICAgICAgICAgIEluaXRfSFJfRGlzayh2b2lkKTsKIGludCAgICAgICAgICAgICBHZXRfTmV4dF9IUl9EaXNrKHZvaWQpOwogaW50ICAgICAgICAgICAgIEdldF9OZXh0X0hSX0Rpc2tfUGFydGl0aW9uKGNoYXIgKiwgc2l6ZV90LCBpbnQpOworI2lmICEoZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikgfHwgZGVmaW5lZChhaXg3KSkKIHN0YXRpYyB2b2lkICAgICBBZGRfSFJfRGlza19lbnRyeShjb25zdCBjaGFyICosIGludCwgaW50LCBpbnQsIGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosIGludCwgaW50KTsKKyNlbmRpZgogc3RhdGljIHZvaWQgICAgIFNhdmVfSFJfRGlza19HZW5lcmFsKHZvaWQpOwogc3RhdGljIHZvaWQgICAgIFNhdmVfSFJfRGlza19TcGVjaWZpYyh2b2lkKTsKIHN0YXRpYyBpbnQgICAgICBRdWVyeV9EaXNrKGludCwgY29uc3QgY2hhciAqKTsKQEAgLTE1MCw3ICsxNTIsOSBAQAogc3RhdGljIGludCAgICAgIEhSRF9pbmRleDsKIHN0YXRpYyBjaGFyICAgICBIUkRfc2F2ZWRNb2RlbFs0MF07CiBzdGF0aWMgbG9uZyAgICAgSFJEX3NhdmVkQ2FwYWNpdHkgPSAxMDQ0OworI2lmIGRlZmluZWQoRElPQ19ERVNDUklCRSkgfHwgZGVmaW5lZChES0lPQ0lORk8pIHx8IGRlZmluZWQoSEFWRV9MSU5VWF9IRFJFR19IKQogc3RhdGljIGludCAgICAgIEhSRF9zYXZlZEZsYWdzOworI2VuZGlmCiBzdGF0aWMgdGltZV90ICAgSFJEX2hpc3RvcnlbSFJERVZfVFlQRV9NQVNLICsgMV07CiAKICNpZmRlZiBESU9DX0RFU0NSSUJFCkBAIC02NjgsNiArNjcyLDcgQEAKIHN0YXRpYyBIUkRfZGlza190IGRpc2tfZGV2aWNlc1tNQVhfTlVNQkVSX0RJU0tfVFlQRVNdOwogc3RhdGljIGludCAgICAgIEhSX251bWJlcl9kaXNrX3R5cGVzID0gMDsKIAorI2lmICEoZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikgfHwgZGVmaW5lZChhaXg3KSkKIHN0YXRpYyB2b2lkCiBBZGRfSFJfRGlza19lbnRyeShjb25zdCBjaGFyICpkZXZwYXJ0X3N0cmluZywKICAgICAgICAgICAgICAgICAgIGludCBmaXJzdF9jdGwsCkBAIC03MjQsNiArNzI5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZGV2cGFydF9zdHJpbmcsIG5icl9jcmVhdGVkKSk7CiAjZW5kaWYKIH0KKyNlbmRpZgogCiB2b2lkCiBJbml0X0hSX0Rpc2sodm9pZCkKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmMKaW5kZXggNjBhMTYyOS4uYjIzZDMyMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmMKQEAgLTE0LDYgKzE0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvbWVtb3J5Lmg+CkBAIC02Myw2ICs2NCwxMCBAQAogI2luY2x1ZGUgPHN5cy9zdGF0ZnMuaD4KICNlbmRpZgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzZV9maW5kX2ZyZWVfdmFsdWVfaW5fc2xpc3QpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShkYXRlX25fdGltZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGN0aW1lX3RvX3RpbWV0KQorCiAjaWYgZGVmaW5lZChic2RpNCkgfHwgZGVmaW5lZChmcmVlYnNkMykgfHwgZGVmaW5lZChmcmVlYnNkNCkgfHwgZGVmaW5lZChmcmVlYnNkNSkgfHwgZGVmaW5lZChkYXJ3aW4pCiAjaWYgSEFWRV9HRVRGU1NUQVQgJiYgZGVmaW5lZChNRlNOQU1FTEVOKQogI2RlZmluZSBNT1VOVF9ORlMJIm5mcyIKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfbmV0d29yay5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmMKaW5kZXggNDhkNzQ3ZC4uNmNjZTU4YyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmMKQEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oPgpAQCAtMjIsNiArMjMsOSBAQAogI2luY2x1ZGUgIm1pYklJL2ludGVyZmFjZXMuaCIKICNpbmNsdWRlICJocl9uZXR3b3JrLmgiCiAKKyNpZiAhZGVmaW5lZCggc29sYXJpczIgKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaW50ZXJmYWNlX2xlZ2FjeSkKKyNlbmRpZiAvKiAhc29sYXJpczIgKi8KIAogICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCiAJICoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfcGFydGl0aW9uLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX3BhcnRpdGlvbi5jCmluZGV4IGFiZTc2OTIuLjNiOWFiZDYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfcGFydGl0aW9uLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wYXJ0aXRpb24uYwpAQCAtNDcsNiArNDcsMTAgQEAKICNpZmRlZiBORVRTTk1QX0NBTl9HRVRfRElTS19MQUJFTAogc3RhdGljIGNoYXIgICAgIEhSUF9zYXZlZExhYmVsWzEwMjRdOwogI2VuZGlmCisjaWZkZWYgZGFyd2luCitleHRlcm4gaW50CitHZXRfSFJfRGlza19MYWJlbChjaGFyICpzdHJpbmcsIHNpemVfdCBzdHJfbGVuLCBjb25zdCBjaGFyICpkZXZmdWxsKTsKKyNlbmRpZgogCiBzdGF0aWMgaW50ICAgICAgSFJQX0Rpc2tJbmRleDsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMKaW5kZXggYzAzYWU0NC4uMjU1ODJiZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N3aW5zdC5jCkBAIC00LDYgKzQsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaWYgSEFWRV9TWVNfUEFSQU1fSAogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgpAQCAtNzEsNiArNzIsOCBAQAogCiAjZGVmaW5lIEhSU1dJTlNUX01PTk9UT05JQ0FMTFlfSU5DUkVBU0lORwogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShkYXRlX25fdGltZSkKKwogICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCiAJICoKIAkgKiAgS2VybmVsICYgaW50ZXJmYWNlIGluZm9ybWF0aW9uLApAQCAtNTEyLDkgKzUxNSwxMiBAQAogICAgICAgICAgICAgICAgIHNucHJpbnRmKHN0cmluZywgc2l6ZW9mKHN0cmluZyksICIlcy8lcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpLT5zd2lfZGlyZWN0b3J5LCBzd2ktPnN3aV9uYW1lKTsKICAgICAgICAgICAgICAgICBzdHJpbmdbIHNpemVvZihzdHJpbmcpLTEgXSA9IDA7Ci0gICAgICAgICAgICAgICAgc3RhdChzdHJpbmcsICZzdGF0X2J1Zik7Ci0gICAgICAgICAgICAgICAgcmV0ID0gZGF0ZV9uX3RpbWUoJnN0YXRfYnVmLnN0X210aW1lLCB2YXJfbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdChzdHJpbmcsICZzdGF0X2J1ZikgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgcmV0ID0gZGF0ZV9uX3RpbWUoJnN0YXRfYnVmLnN0X210aW1lLCB2YXJfbGVuKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyOwogICAgICAgICAgICAgfSBlbHNlIHsKK2VycjoKICNpZiBORVRTTk1QX05PX0RVTU1ZX1ZBTFVFUwogICAgICAgICAgICAgICAgIHJldCA9IE5VTEw7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jCmluZGV4IGRkYTFkM2YuLmY0MGU5OTcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMKQEAgLTUyNCw2ICs1MjQsMTIgQEAKICAgICBpZiAoKGNwID0gZ2V0X3Byb2NfZmlsZV9saW5lKCIvcHJvYy8lZC9zdGF0IiwgcGlkLCBidWYsIGJ1ZmxlbikpID09IE5VTEwgKQogCXJldHVybiBOVUxMOwogICAgIGZvciAoaSA9IDA7ICpjcCAmJiBpIDwgc2tpcDsgKytpKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIFRoZSBzZWNvbmQgZmllbGQgaXMgJ2NvbW0nIGFuZCBjYW4gY29udGFpbiBzcGFjZXMuIEhlbmNlIHNraXAgdG8KKyAgICAgICAgICogdGhlIGNsb3NpbmcgcGFyZW50aGVzaXMuCisgICAgICAgICAqLworICAgICAgICBpZiAoaSA9PSAxICYmICpjcCA9PSAnKCcpCisgICAgICAgICAgICBjcCA9IHN0cnJjaHIoY3AsICcpJyk7CiAJY3AgPSBza2lwX3RvX25leHRfZmllbGQoY3ApOwogICAgIH0KICAgICByZXR1cm4gY3A7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uYwppbmRleCA4OGIwZmJiLi5kOTljYzdkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmMKQEAgLTE1LDYgKzE1LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpZiBIQVZFX1NUUklOR19ICiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjZWxzZQpAQCAtNzcsNiArNzgsOCBAQAogI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KICNlbmRpZgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShkYXRlX25fdGltZSkKKwogI2lmICFkZWZpbmVkKFVUTVBfRklMRSkgJiYgZGVmaW5lZChfUEFUSF9VVE1QKQogI2RlZmluZSBVVE1QX0ZJTEUgX1BBVEhfVVRNUAogI2VuZGlmCkBAIC05OCwxMSArMTAxLDE2IEBACiAjaWYgZGVmaW5lZChzb2xhcmlzMikKIHN0YXRpYyBzdHJ1Y3Qgb3BlbnByb21pbyAqIG9wX21hbGxvYyhzaXplX3Qgc2l6ZSk7CiBzdGF0aWMgdm9pZCBvcF9mcmVlKHN0cnVjdCBvcGVucHJvbWlvICpvcCk7CisKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBzdGF0aWMgaW50IHNldF9zb2xhcmlzX2Jvb3Rjb21tYW5kX3BhcmFtZXRlcihpbnQgYWN0aW9uLCB1X2NoYXIgKiB2YXJfdmFsLCB1X2NoYXIgdmFyX3ZhbF90eXBlLCBzaXplX3QgdmFyX3ZhbF9sZW4sIHVfY2hhciAqIHN0YXRQLCBvaWQgKiBuYW1lLCBzaXplX3QgbmFtZV9sZW4pOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogc3RhdGljIGludCBzZXRfc29sYXJpc19lZXByb21fcGFyYW1ldGVyKGNvbnN0IGNoYXIgKmtleSwgY29uc3QgY2hhciAqdmFsdWUsIHNpemVfdCB2YWx1ZV9sZW4pOwogc3RhdGljIGludCBnZXRfc29sYXJpc19lZXByb21fcGFyYW1ldGVyKGNvbnN0IGNoYXIgKnBhcmFtZXRlciwgY2hhciAqb3V0cHV0KTsKIHN0YXRpYyBsb25nICAgICBnZXRfbWF4X3NvbGFyaXNfcHJvY2Vzc2VzKHZvaWQpOwogI2VuZGlmCisKIHN0YXRpYyBpbnQgICAgICBnZXRfbG9hZF9kZXYodm9pZCk7CiBzdGF0aWMgaW50ICAgICAgY291bnRfdXNlcnModm9pZCk7CiBleHRlcm4gaW50ICAgICAgY291bnRfcHJvY2Vzc2VzKHZvaWQpOwpAQCAtMTIzLDYgKzEzMSw3IEBACiAjZGVmaW5lCUhSU1lTX01BWFBST0NTCQk3CiAKICNpZiBkZWZpbmVkKHNvbGFyaXMyKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIHN0cnVjdCB2YXJpYWJsZTIgaHJzeXN0ZW1fdmFyaWFibGVzW10gPSB7CiAgICAge0hSU1lTX1VQVElNRSwgQVNOX1RJTUVUSUNLUywgTkVUU05NUF9PTERBUElfUk9OTFksCiAgICAgIHZhcl9ocnN5cywgMSwgezF9fSwKQEAgLTEzOSw2ICsxNDgsMjQgQEAKICAgICB7SFJTWVNfTUFYUFJPQ1MsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKICAgICAgdmFyX2hyc3lzLCAxLCB7N319CiB9OworI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworc3RydWN0IHZhcmlhYmxlMiBocnN5c3RlbV92YXJpYWJsZXNbXSA9IHsKKyAgICB7SFJTWVNfVVBUSU1FLCBBU05fVElNRVRJQ0tTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3lzLCAxLCB7MX19LAorICAgIHtIUlNZU19EQVRFLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3lzLCAxLCB7Mn19LAorICAgIHtIUlNZU19MT0FEX0RFViwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzeXMsIDEsIHszfX0sCisgICAge0hSU1lTX0xPQURfUEFSQU0sIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzeXMsIDEsIHs0fX0sCisgICAge0hSU1lTX1VTRVJTLCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzeXMsIDEsIHs1fX0sCisgICAge0hSU1lTX1BST0NTLCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzeXMsIDEsIHs2fX0sCisgICAge0hSU1lTX01BWFBST0NTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN5cywgMSwgezd9fQorfTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAjZWxzZQogc3RydWN0IHZhcmlhYmxlMiBocnN5c3RlbV92YXJpYWJsZXNbXSA9IHsKICAgICB7SFJTWVNfVVBUSU1FLCBBU05fVElNRVRJQ0tTLCBORVRTTk1QX09MREFQSV9ST05MWSwKQEAgLTE1Nyw2ICsxODQsNyBAQAogICAgICB2YXJfaHJzeXMsIDEsIHs3fX0KIH07CiAjZW5kaWYKKwogb2lkICAgICAgICAgICAgIGhyc3lzdGVtX3ZhcmlhYmxlc19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMjUsIDEgfTsKIAogCkBAIC0yNTAsNyArMjc4LDkgQEAKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKICAgICBjYXNlIEhSU1lTX0RBVEU6CiAjaWYgZGVmaW5lZChIQVZFX01LVElNRSkgJiYgZGVmaW5lZChIQVZFX1NUSU1FKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgCiAgICAgICAgICp3cml0ZV9tZXRob2Q9bnNfc2V0X3RpbWU7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogI2VuZGlmCiAgICAgICAgIHRpbWUoJm5vdyk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIGRhdGVfbl90aW1lKCZub3csIHZhcl9sZW4pOwpAQCAtMjY2LDcgKzI5Niw5IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogI2VsaWYgZGVmaW5lZChzb2xhcmlzMikKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2Q9c2V0X3NvbGFyaXNfYm9vdGNvbW1hbmRfcGFyYW1ldGVyOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgaWYgKCBnZXRfc29sYXJpc19lZXByb21fcGFyYW1ldGVyKCJib290LWNvbW1hbmQiLGJvb3RwYXJhbSkgKSB7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJ1bmFibGUgdG8gbG9va3VwIGJvb3QtY29tbWFuZCBmcm9tIGVlcHJvbVxuIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTM2NSw2ICszOTcsNyBAQAogICAgIGZyZWUob3ApOwogfQogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogc3RhdGljIGludAogc2V0X3NvbGFyaXNfYm9vdGNvbW1hbmRfcGFyYW1ldGVyKGludCBhY3Rpb24sCiAgICAgICAgICAgICB1X2NoYXIgKiB2YXJfdmFsLApAQCAtNDI5LDYgKzQ2Miw3IEBACiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogc3RhdGljIGludCBzZXRfc29sYXJpc19lZXByb21fcGFyYW1ldGVyKGNvbnN0IGNoYXIgKmtleSwgY29uc3QgY2hhciAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHZhcl92YWxfbGVuKSB7CkBAIC01MDgsNiArNTQyLDcgQEAKICNlbmRpZgogCiAjaWYgZGVmaW5lZChIQVZFX01LVElNRSkgJiYgZGVmaW5lZChIQVZFX1NUSU1FKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIGludAogbnNfc2V0X3RpbWUoaW50IGFjdGlvbiwKICAgICAgICAgICAgIHVfY2hhciAqIHZhcl92YWwsCkBAIC02MDEsNiArNjM2LDcgQEAKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogI2VuZGlmCiAKICAgICAgICAgICAgICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uaCBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmgKaW5kZXggNWUxMmMwZC4uZmVmZmE2MCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uaAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5oCkBAIC05LDcgKzksOSBAQAogZXh0ZXJuIEZpbmRWYXJNZXRob2QgdmFyX2hyc3lzOwogCiAjaWYgZGVmaW5lZChIQVZFX01LVElNRSkgJiYgZGVmaW5lZChIQVZFX1NUSU1FKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIGludCBuc19zZXRfdGltZShpbnQgYWN0aW9uLCB1X2NoYXIgKiB2YXJfdmFsLCB1X2NoYXIgdmFyX3ZhbF90eXBlLCBzaXplX3QgdmFyX3ZhbF9sZW4sIHVfY2hhciAqIHN0YXRQLCBvaWQgKiBuYW1lLCBzaXplX3QgbmFtZV9sZW4pOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICNlbmRpZgogCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9NSUJHUk9VUF9IUlNZU1RFTV9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmMKaW5kZXggZWMzNDNlZC4uNGFhYjZhMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocmhfZmlsZXN5cy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJoX2ZpbGVzeXMuYwpAQCAtMTQsNiArMTQsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9tZW1vcnkuaD4KQEAgLTYwLDYgKzYxLDggQEAKICNpbmNsdWRlIDxzeXMvc3RhdGZzLmg+CiAjZW5kaWYKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZGF0ZV9uX3RpbWUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjdGltZV90b190aW1ldCkKIAogI2RlZmluZSBIUkZTX01PTk9UT05JQ0FMTFlfSU5DUkVBU0lORwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyaF9zdG9yYWdlLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyaF9zdG9yYWdlLmMKaW5kZXggYzQ1OGQ0ZC4uY2EyZjg1NCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocmhfc3RvcmFnZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJoX3N0b3JhZ2UuYwpAQCAtMTMwLDYgKzEzMCwxMCBAQAogCQkJICAgICAgIE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCiAJCQkgICAgICAgTkVUU05NUF9EU19BR0VOVF9TS0lQTkZTSU5IT1NUUkVTT1VSQ0VTKTsKIAorICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9CT09MRUFOLCBhcHBuYW1lLCAicmVhbFN0b3JhZ2VVbml0cyIsCisgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKKyAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX1JFQUxTVE9SQUdFVU5JVFMpOworCiAgICAgc25tcGRfcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInN0b3JhZ2VVc2VORlMiLCBwYXJzZV9zdG9yYWdlX2NvbmZpZywgTlVMTCwKIAkiMSB8IDJcdFx0KDEgPSBlbmFibGUsIDIgPSBkaXNhYmxlKSIpOwogfQpAQCAtNDE0LDI3ICs0MTgsMzkgQEAKICAgICAgICAgICAgIHJldHVybiAodV9jaGFyICopIG1lbS0+ZGVzY3I7CiAgICAgICAgIH0KICAgICBjYXNlIEhSU1RPUkVfVU5JVFM6Ci0gICAgICAgIGlmIChzdG9yZV9pZHggPiBORVRTTk1QX01FTV9UWVBFX01BWCkKLSAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gSFJGU19lbnRyeS0+dW5pdHM7Ci0gICAgICAgIGVsc2UgeworICAgICAgICBpZiAoc3RvcmVfaWR4ID4gTkVUU05NUF9NRU1fVFlQRV9NQVgpIHsKKyAgICAgICAgICAgIGlmIChuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCisgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfUkVBTFNUT1JBR0VVTklUUykpCisgICAgICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSBIUkZTX2VudHJ5LT51bml0cyAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSBIUkZTX2VudHJ5LT51bml0c18zMjsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICggIW1lbSB8fCBtZW0tPnVuaXRzID09IC0xICkKICAgICAgICAgICAgICAgICBnb3RvIHRyeV9uZXh0OwogICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSBtZW0tPnVuaXRzOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47CiAgICAgY2FzZSBIUlNUT1JFX1NJWkU6Ci0gICAgICAgIGlmIChzdG9yZV9pZHggPiBORVRTTk1QX01FTV9UWVBFX01BWCkKLSAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gSFJGU19lbnRyeS0+c2l6ZTsKLSAgICAgICAgZWxzZSB7CisgICAgICAgIGlmIChzdG9yZV9pZHggPiBORVRTTk1QX01FTV9UWVBFX01BWCkgeworICAgICAgICAgICAgaWYgKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKKyAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9SRUFMU1RPUkFHRVVOSVRTKSkKKyAgICAgICAgICAgICAgICBsb25nX3JldHVybiA9IEhSRlNfZW50cnktPnNpemUgJiAweGZmZmZmZmZmOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gSFJGU19lbnRyeS0+c2l6ZV8zMjsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICggIW1lbSB8fCBtZW0tPnNpemUgPT0gLTEgKQogICAgICAgICAgICAgICAgIGdvdG8gdHJ5X25leHQ7CiAgICAgICAgICAgICBsb25nX3JldHVybiA9IG1lbS0+c2l6ZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwogICAgIGNhc2UgSFJTVE9SRV9VU0VEOgotICAgICAgICBpZiAoc3RvcmVfaWR4ID4gTkVUU05NUF9NRU1fVFlQRV9NQVgpCi0gICAgICAgICAgICBsb25nX3JldHVybiA9IEhSRlNfZW50cnktPnVzZWQ7Ci0gICAgICAgIGVsc2UgeworICAgICAgICBpZiAoc3RvcmVfaWR4ID4gTkVUU05NUF9NRU1fVFlQRV9NQVgpIHsKKyAgICAgICAgICAgIGlmIChuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCisgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfUkVBTFNUT1JBR0VVTklUUykpCisgICAgICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSBIUkZTX2VudHJ5LT51c2VkICYgMHhmZmZmZmZmZjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsb25nX3JldHVybiA9IEhSRlNfZW50cnktPnVzZWRfMzI7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoICFtZW0gfHwgbWVtLT5zaXplID09IC0xIHx8IG1lbS0+ZnJlZSA9PSAtMSApCiAgICAgICAgICAgICAgICAgZ290byB0cnlfbmV4dDsKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gbWVtLT5zaXplIC0gbWVtLT5mcmVlOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5jCmluZGV4IDVmNWM3ZmYuLjI2ZTMxZmMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmMKQEAgLTQsMTUgKzQsMjUgQEAKICAqICRJZCQKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KLSNpbmNsdWRlICJtaWJJSS9taWJJSV9jb21tb24uaCIKLSNpbmNsdWRlICJpZi1taWIvaWZUYWJsZS9pZlRhYmxlX2NvbnN0YW50cy5oIgotI2luY2x1ZGUgImlmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaCIKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaD4KICNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaD4KIAorI2luY2x1ZGUgIm1pYklJL21pYklJX2NvbW1vbi5oIgorI2luY2x1ZGUgImlmLW1pYi9pZlRhYmxlL2lmVGFibGUuaCIKKyNpbmNsdWRlICJpZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmgiCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpbnRlcmZhY2VfYWxsLCBsaWJuZXRzbm1wbWlicykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpbnRlcmZhY2UsIGludGVyZmFjZV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW50ZXJmYWNlX2FjY2Vzc19lbnRyeV9zZXRfYWRtaW5fc3RhdHVzLCBpbnRlcmZhY2VfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGludGVyZmFjZV9sZWdhY3ksIGludGVyZmFjZV9hbGwpCisKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9JTlRFUkZBQ0VfQUNDRVNTX0VOVFJZX1NFVF9BRE1JTl9TVEFUVVMKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGludGVyZmFjZV9hcmNoX3NldF9hZG1pbl9zdGF0dXMpCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfSU5URVJGQUNFX0FDQ0VTU19FTlRSWV9TRVRfQURNSU5fU1RBVFVTICovCiAKIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKgpAQCAtMzM3LDYgKzM0Nyw3IEBACiAgICAgZnJlZShlbnRyeSk7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTlRFUkZBQ0VfTEVHQUNZCiAvKgogICogQmxlY2ggLSBiYWNrd2FyZHMgY29tcGF0aWJsZSBtaWJJSS9pbnRlcmZhY2VzIHN0eWxlIGludGVyZmFjZQogICogZnVuY3Rpb25zLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHVwZGF0ZSBvbGRlciBtb2R1bGVzIHRvIHVzZQpAQCAtMzQ2LDMzICszNTcsMzMgQEAKICAgICAhIGRlZmluZWQoIE5FVFNOTVBfTk9fQkFDS1dBUkRTX0NPTVBBVEFCSUxJVFkgKQogCiBzdGF0aWMgbmV0c25tcF9pdGVyYXRvciAqaXQgPSBOVUxMOwotc3RhdGljIG5ldHNubXBfY29udGFpbmVyICpjID0gTlVMTDsKLXN0YXRpYyBuZXRzbm1wX2ludGVyZmFjZV9lbnRyeSAqZSA9IE5VTEw7CitzdGF0aWMgaWZUYWJsZV9yb3dyZXFfY3R4ICpyb3cgPSBOVUxMOwogCiAvKioKLSAqIAorICogU2V0dXAgYW4gaXRlcmF0b3IgZm9yIHNjYW5uaW5nIHRoZSBpbnRlcmZhY2VzIHVzaW5nIHRoZSBjYWNoZWQgZW50cnkKKyAqIGZyb20gaWYtbWliL2lmVGFibGUuCiAgKi8KIHZvaWQKIEludGVyZmFjZV9TY2FuX0luaXQodm9pZCkKIHsKLSAgICAvKgotICAgICAqIGlmVGFibGUgY29udGFpbmVyIHNob3VsZG4ndCBjaGFuZ2UsIHNvIHdlIHNob3VsZG4nIGhhdmUgdG8KLSAgICAgKiByZS1mZXRjaCBpdCBldmVyeSB0aW1lLgotICAgICAqLwotICAgIGlmIChOVUxMICE9IGMpCi0gICAgICAgIG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9jb250YWluZXJfZnJlZShjLCAwKTsKLQotICAgIGMgPSBuZXRzbm1wX2FjY2Vzc19pbnRlcmZhY2VfY29udGFpbmVyX2xvYWQoTlVMTCwgMCk7CisgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnQgPSBOVUxMOworICAgIG5ldHNubXBfY2FjaGUgKmNhY2hlICAgID0gTlVMTDsgCiAgICAgCi0gICAgaWYgKE5VTEwgIT0gYykgeworICAgIGNhY2hlID0gbmV0c25tcF9jYWNoZV9maW5kX2J5X29pZChpZlRhYmxlX29pZCwgaWZUYWJsZV9vaWRfc2l6ZSk7CisgICAgaWYgKE5VTEwgIT0gY2FjaGUpIHsKKyAgICAgICAgbmV0c25tcF9jYWNoZV9jaGVja19hbmRfcmVsb2FkKGNhY2hlKTsKKyAgICAgICAgY29udCA9IChuZXRzbm1wX2NvbnRhaW5lciopIGNhY2hlLT5tYWdpYzsKKyAgICB9CisgICAgCisgICAgaWYgKE5VTEwgIT0gY29udCkgewogICAgICAgICBpZiAoTlVMTCAhPSBpdCkKICAgICAgICAgICAgIElURVJBVE9SX1JFTEVBU0UoaXQpOwogICAgIAotICAgICAgICBpdCA9IENPTlRBSU5FUl9JVEVSQVRPUihjKTsKKyAgICAgICAgaXQgPSBDT05UQUlORVJfSVRFUkFUT1IoY29udCk7CiAgICAgfQogICAgCiAgICAgaWYgKE5VTEwgIT0gaXQpCi0gICAgICAgIGUgPSAobmV0c25tcF9pbnRlcmZhY2VfZW50cnkqKUlURVJBVE9SX0ZJUlNUKGl0KTsKKyAgICAgICAgcm93ID0gKGlmVGFibGVfcm93cmVxX2N0eCopSVRFUkFUT1JfRklSU1QoaXQpOwogfQogCiBpbnQKQEAgLTM5NCw5ICs0MDUsMTIgQEAKIEludGVyZmFjZV9TY2FuX05leHRJbnQoaW50ICppbmRleCwgY2hhciAqbmFtZSwgbmV0c25tcF9pbnRlcmZhY2VfZW50cnkgKiplbnRyeSwKICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGMpCiB7Ci0gICAgaWYgKE5VTEwgPT0gZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgbmV0c25tcF9pbnRlcmZhY2VfZW50cnkqIGUgPSBOVUxMOwogCisgICAgaWYgKE5VTEwgPT0gcm93KQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBlID0gcm93LT5kYXRhLmlmZW50cnk7CiAgICAgaWYoaW5kZXgpCiAgICAgICAgICppbmRleCA9IGUtPmluZGV4OwogCkBAIC00MDYsMTMgKzQyMCwxNCBAQAogICAgIGlmIChlbnRyeSkKICAgICAgICAgKmVudHJ5ID0gZTsKIAotICAgIGUgPSAobmV0c25tcF9pbnRlcmZhY2VfZW50cnkqKUlURVJBVE9SX05FWFQoaXQpOworICAgIHJvdyA9IChpZlRhYmxlX3Jvd3JlcV9jdHgqKSBJVEVSQVRPUl9ORVhUKGl0KTsKIAogICAgIHJldHVybiAxOwogfQogI2VuZGlmIC8qIE5FVFNOTVBfTk9fQkFDS1dBUkRTX0NPTVBBVEFCSUxJVFkgKi8KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lOVEVSRkFDRV9MRUdBQ1kgKi8KIAotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5URVJGQUNFX0FDQ0VTU19FTlRSWV9TRVRfQURNSU5fU1RBVFVTCiAvKioKICAqCiAgKiBAcmV0dmFsIDAgICA6IHN1Y2Nlc3MKQEAgLTQ0MSw2ICs0NTYsNyBAQAogICAgIHJldHVybiByYzsKIH0KICNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5URVJGQUNFX0FDQ0VTU19FTlRSWV9TRVRfQURNSU5fU1RBVFVTICovCiAKIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKgpAQCAtNDU2LDYgKzQ3Miw3IEBACiAgICAgICAgICAgICAgICAgICAoKGNvbnN0IG5ldHNubXBfaW50ZXJmYWNlX2VudHJ5ICopIHJocyktPm5hbWUpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfQUNDRVNTX0lOVEVSRkFDRV9OT0FSQ0gKIC8qKgogICovCiBzdGF0aWMgdm9pZApAQCAtNDYzLDYgKzQ4MCw3IEBACiB7CiAgICAgbmV0c25tcF9hY2Nlc3NfaW50ZXJmYWNlX2VudHJ5X2ZyZWUoZW50cnkpOwogfQorI2VuZGlmCiAKIC8qKgogICovCkBAIC02ODEsOCArNjk5LDcgQEAKICAgICAgICAoMCA9PSBzdHJjbXAobGhzLT5kZXNjciwgcmhzLT5kZXNjcikpKQogICAgICAgICA7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChOVUxMICE9IGxocy0+ZGVzY3IpCi0gICAgICAgICAgICBTTk1QX0ZSRUUobGhzLT5kZXNjcik7CisgICAgICAgIFNOTVBfRlJFRShsaHMtPmRlc2NyKTsKICAgICAgICAgaWYgKHJocy0+ZGVzY3IpIHsKICAgICAgICAgICAgIGxocy0+ZGVzY3IgPSBzdHJkdXAocmhzLT5kZXNjcik7CiAgICAgICAgICAgICBpZihOVUxMID09IGxocy0+ZGVzY3IpCkBAIC03MTAsOCArNzI3LDcgQEAKICAgICAgICAgaWYocmhzLT5wYWRkcl9sZW4pCiAgICAgICAgICAgICBtZW1jcHkobGhzLT5wYWRkcixyaHMtPnBhZGRyLHJocy0+cGFkZHJfbGVuKTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoTlVMTCAhPSBsaHMtPnBhZGRyKQotICAgICAgICAgICAgU05NUF9GUkVFKGxocy0+cGFkZHIpOworICAgICAgICBTTk1QX0ZSRUUobGhzLT5wYWRkcik7CiAgICAgICAgIGlmIChyaHMtPnBhZGRyKSB7CiAgICAgICAgICAgICBsaHMtPnBhZGRyID0gKGNoYXIqKW1hbGxvYyhyaHMtPnBhZGRyX2xlbik7CiAgICAgICAgICAgICBpZihOVUxMID09IGxocy0+cGFkZHIpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmMgYi9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmMKaW5kZXggNWJmYmY5YS4uZGIyYzI0NSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9pb2N0bC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfaW9jdGwuYwpAQCAtNCw2ICs0LDcgQEAKICAqICRJZCQKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJtaWJJSS9taWJJSV9jb21tb24uaCIKICNpbmNsdWRlICJpZi1taWIvaWZUYWJsZS9pZlRhYmxlX2NvbnN0YW50cy5oIgpAQCAtMTMsNiArMTQsOCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oPgogI2luY2x1ZGUgImlmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaCIKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGludGVyZmFjZV9pb2N0bF9mbGFnc19zZXQsIGludGVyZmFjZV9hbGwpCisKICNpZmRlZiBIQVZFX05FVF9JRl9ICiAjaW5jbHVkZSA8bmV0L2lmLmg+CiAjZW5kaWYKQEAgLTI4Miw2ICsyODUsNyBAQAogICAgIHJldHVybiByYzsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lOVEVSRkFDRV9JT0NUTF9GTEFHU19TRVQKIC8qKgogICogaW50ZXJmYWNlIGVudHJ5IGZsYWdzIGlvY3RsIHdyYXBwZXIKICAqCkBAIC0zNDksNiArMzUzLDcgQEAKIAogICAgIHJldHVybiAwOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5URVJGQUNFX0lPQ1RMX0ZMQUdTX1NFVCAqLwogI2VuZGlmIC8qIFNJT0NHSUZGTEFHUyAqLwogCiAjaWZkZWYgU0lPQ0dJRk1UVQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jCmluZGV4IGRmMDk3MzcuLmYxOTZmYzggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMKQEAgLTQsMTQgKzQsNTYgQEAKICAqICRJZCQKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZmRfZXZlbnRfbWFuYWdlcikKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGRlbGV0ZV9wcmVmaXhfaW5mbykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNyZWF0ZV9wcmVmaXhfaW5mbykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpbnRlcmZhY2VfYXJjaF9zZXRfYWRtaW5fc3RhdHVzLCBpbnRlcmZhY2VfYWxsKQorCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfSU5URVJGQUNFX0FSQ0hfU0VUX0FETUlOX1NUQVRVUworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaW50ZXJmYWNlX2lvY3RsX2ZsYWdzX3NldCkKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9JTlRFUkZBQ0VfQVJDSF9TRVRfQURNSU5fU1RBVFVTICovCisKKyNpZmRlZiBIQVZFX1BDSV9MT09LVVBfTkFNRQorI2luY2x1ZGUgPHBjaS9wY2kuaD4KKyNpbmNsdWRlIDxzZXRqbXAuaD4KK3N0YXRpYyBzdHJ1Y3QgcGNpX2FjY2VzcyAqcGNpX2FjY2VzczsKKworLyogQXZvaWQgbGV0dGluZyBsaWJwY2kgY2FsbCBleGl0KDEpIHdoZW4gbm8gUENJIGJ1cyBpcyBhdmFpbGFibGUuICovCitzdGF0aWMgaW50IGRvX2xvbmdqbXAgPTA7CitzdGF0aWMgam1wX2J1ZiBlcnJfYnVmOworc3RhdGljIHZvaWQKK25ldHNubXBfcGNpX2Vycm9yKGNoYXIgKm1zZywgLi4uKQoreworICAgIHZhX2xpc3QgYXJnczsKKyAgICBjaGFyICpidWY7CisgICAgaW50IGJ1ZmxlbjsKKworICAgIHZhX3N0YXJ0KGFyZ3MsIG1zZyk7CisgICAgYnVmbGVuID0gc3RybGVuKCJwY2lsaWI6ICIpK3N0cmxlbihtc2cpKzI7CisgICAgYnVmID0gbWFsbG9jKGJ1Zmxlbik7CisgICAgc25wcmludGYoYnVmLCBidWZsZW4sICJwY2lsaWI6ICVzXG4iLCBtc2cpOworICAgIHNubXBfdmxvZyhMT0dfRVJSLCBidWYsIGFyZ3MpOworICAgIGZyZWUoYnVmKTsKKyAgICB2YV9lbmQoYXJncyk7CisgICAgaWYgKGRvX2xvbmdqbXApCisJbG9uZ2ptcChlcnJfYnVmLCAxKTsKKyAgICBlbHNlCisJZXhpdCgxKTsKK30KKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9MSU5VWF9FVEhUT09MX0gKICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2lmbmRlZiBIQVZFX1BDSV9MT09LVVBfTkFNRQogdHlwZWRlZiBfX3U2NCB1NjQ7ICAgICAgICAgLyogaGFjaywgc28gd2UgbWF5IGluY2x1ZGUga2VybmVsJ3MgZXRodG9vbC5oICovCiB0eXBlZGVmIF9fdTMyIHUzMjsgICAgICAgICAvKiBkaXR0byAqLwogdHlwZWRlZiBfX3UxNiB1MTY7ICAgICAgICAgLyogZGl0dG8gKi8KIHR5cGVkZWYgX191OCB1ODsgICAgICAgICAgIC8qIGRpdHRvICovCisjZW5kaWYKKwogI2luY2x1ZGUgPGxpbnV4L2V0aHRvb2wuaD4KICNlbmRpZiAvKiBIQVZFX0xJTlVYX0VUSFRPT0xfSCAqLwogCkBAIC0zNCw3ICs3Niw2IEBACiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KIApAQCAtMTI3LDYgKzE2OCwyNiBAQAogICAgIGxpc3RfaW5mby5saXN0X2hlYWQgPSAmcHJlZml4X2hlYWRfbGlzdDsKICAgICBuZXRzbm1wX3ByZWZpeF9saXN0ZW4oKTsKICNlbmRpZgorCisjaWZkZWYgSEFWRV9QQ0lfTE9PS1VQX05BTUUKKyAgICBwY2lfYWNjZXNzID0gcGNpX2FsbG9jKCk7CisgICAgaWYgKCFwY2lfYWNjZXNzKSB7CisJc25tcF9sb2coTE9HX0VSUiwgInBjaWxpYjogcGNpX2FsbG9jIGZhaWxlZFxuIik7CisJcmV0dXJuOworICAgIH0KKworICAgIHBjaV9hY2Nlc3MtPmVycm9yID0gbmV0c25tcF9wY2lfZXJyb3I7CisKKyAgICBkb19sb25nam1wID0gMTsKKyAgICBpZiAoc2V0am1wKGVycl9idWYpKSB7CisgICAgICAgIHBjaV9jbGVhbnVwKHBjaV9hY2Nlc3MpOworCXNubXBfbG9nKExPR19FUlIsICJwY2lsaWI6IHBjaV9pbml0IGZhaWxlZFxuIik7CisgICAgICAgIHBjaV9hY2Nlc3MgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChwY2lfYWNjZXNzKQorCXBjaV9pbml0KHBjaV9hY2Nlc3MpOworICAgIGRvX2xvbmdqbXAgPSAwOworI2VuZGlmCiB9CiAKIC8qCkBAIC0yNTYsNiArMzE3LDY5IEBACiAgICAgfQogfQogCisjaWZkZWYgSEFWRV9QQ0lfTE9PS1VQX05BTUUKKworLyogR2V0IHZhbHVlIGZyb20gc3lzZnMgZmlsZSAqLworc3RhdGljIGludCBzeXNmc19nZXRfaWQoY29uc3QgY2hhciAqcGF0aCwgdW5zaWduZWQgc2hvcnQgKmlkKQoreworICAgIEZJTEUgKmZpbjsKKyAgICBpbnQgbjsKKworICAgIGlmICghKGZpbiA9IGZvcGVuKHBhdGgsICJyIikpKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aW50ZXJmYWNlIiwKKyAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBvcGVuICVzXG4iLCBwYXRoKSk7CisJcmV0dXJuIDA7CisgICAgfQorCisgICAgbiA9IGZzY2FuZihmaW4sICIlaHgiLCBpZCk7CisgICAgZmNsb3NlKGZpbik7CisKKyAgICByZXR1cm4gbiA9PSAxOworfQorCisvKiBHZXQgaW50ZXJmYWNlIGRlc2NyaXB0aW9uIGZvciBQQ0kgZGV2aWNlCisgKiBieSB1c2luZyBzeXNmcyB0byBmaW5kIHZlbmRvciBhbmQgZGV2aWNlCisgKiB0aGVuIGxvb2t1cCBuYW1lICgtbHBjaSkKKyAqCisgKiBGb3Igc29mdHdhcmUgaW50ZXJmYWNlcyB0aGVyZSBpcyBubyBQQ0kgaW5mb3JtYXRpb24KKyAqIHNvIGRlc2NyaXB0aW9uIHdpbGwgbm90IGJlIHNldC4KKyAqLworc3RhdGljIHZvaWQKK19hcmNoX2ludGVyZmFjZV9kZXNjcmlwdGlvbl9nZXQobmV0c25tcF9pbnRlcmZhY2VfZW50cnkgKmVudHJ5KQoreworICAgIGNvbnN0IGNoYXIgKmRlc2NyOworICAgIGNoYXIgYnVmWzI1Nl07CisgICAgdW5zaWduZWQgc2hvcnQgdmVuZG9yX2lkLCBkZXZpY2VfaWQ7CisKKyAgICBpZiAoIXBjaV9hY2Nlc3MpCisJcmV0dXJuOworCisgICAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKKwkgICAgICIvc3lzL2NsYXNzL25ldC8lcy9kZXZpY2UvdmVuZG9yIiwgZW50cnktPm5hbWUpOworCisgICAgaWYgKCFzeXNmc19nZXRfaWQoYnVmLCAmdmVuZG9yX2lkKSkKKwlyZXR1cm47CisKKyAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLAorCSAgICAgIi9zeXMvY2xhc3MvbmV0LyVzL2RldmljZS9kZXZpY2UiLCBlbnRyeS0+bmFtZSk7CisKKyAgICBpZiAoIXN5c2ZzX2dldF9pZChidWYsICZkZXZpY2VfaWQpKQorCXJldHVybjsKKworICAgIGRlc2NyID0gcGNpX2xvb2t1cF9uYW1lKHBjaV9hY2Nlc3MsIGJ1Ziwgc2l6ZW9mKGJ1ZiksCisJCQkgICAgUENJX0xPT0tVUF9WRU5ET1IgfCBQQ0lfTE9PS1VQX0RFVklDRSwKKwkJCSAgICB2ZW5kb3JfaWQsIGRldmljZV9pZCwgMCwgMCk7CisgICAgaWYgKGRlc2NyKSB7CisJZnJlZShlbnRyeS0+ZGVzY3IpOworCWVudHJ5LT5kZXNjciA9IHN0cmR1cChkZXNjcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2UiLAorICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHBjaV9sb29rdXBfbmFtZSB2ZW5kb3I9JSNoeCBkZXZpY2U9JSNoeFxuIiwKKwkJICAgIHZlbmRvcl9pZCwgZGV2aWNlX2lkKSk7CisgICAgfQorfQorI2VuZGlmCisKIAogI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKIC8qKgpAQCAtNjEzLDkgKzczNyw5IEBACiAgICAgICAgIH0KICAgICAgICAgZW50cnktPm5zX2ZsYWdzID0gZmxhZ3M7IC8qIGluaXRpYWwgZmxhZ3M7IHdlJ2xsIHNldCBtb3JlIGxhdGVyICovCiAKLSAgICAgICAgLyoKLSAgICAgICAgICogeHh4LXJrczogZ2V0IGRlc2NyIGJ5IGxpbmtpbmcgbWVtIGZyb20gL3Byb2MvcGNpIGFuZCAvcHJvYy9pb21lbQotICAgICAgICAgKi8KKyNpZmRlZiBIQVZFX1BDSV9MT09LVVBfTkFNRQorCV9hcmNoX2ludGVyZmFjZV9kZXNjcmlwdGlvbl9nZXQoZW50cnkpOworI2VuZGlmCiAKIAogICAgICAgICAvKgpAQCAtNzc5LDYgKzkwMyw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTlRFUkZBQ0VfQVJDSF9TRVRfQURNSU5fU1RBVFVTCiBpbnQKIG5ldHNubXBfYXJjaF9zZXRfYWRtaW5fc3RhdHVzKG5ldHNubXBfaW50ZXJmYWNlX2VudHJ5ICogZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaWZBZG1pblN0YXR1c192YWwpCkBAIC03OTUsNiArOTIwLDcgQEAKICAgICByZXR1cm4gbmV0c25tcF9hY2Nlc3NfaW50ZXJmYWNlX2lvY3RsX2ZsYWdzX3NldCgtMSwgZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUZGX1VQLCBhbmRfY29tcGxlbWVudCk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTlRFUkZBQ0VfQVJDSF9TRVRfQURNSU5fU1RBVFVTICovCiAKICNpZmRlZiBIQVZFX0xJTlVYX0VUSFRPT0xfSAogLyoqCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX29wZW5ic2QuYyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfb3BlbmJzZC5jCmluZGV4IDIwNDU2OGIuLjgzNDBkYzYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfb3BlbmJzZC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfb3BlbmJzZC5jCkBAIC00LDEwICs0LDEzIEBACiAgKiAkSWQkCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAibWliSUkvbWliSUlfY29tbW9uLmgiCiAjaW5jbHVkZSAiaWYtbWliL2lmVGFibGUvaWZUYWJsZV9jb25zdGFudHMuaCIKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGludGVyZmFjZV9hcmNoX3NldF9hZG1pbl9zdGF0dXMsIGludGVyZmFjZV9hbGwpCisKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCiAjaWYgSEFWRV9TWVNfSU9DVExfSApAQCAtMzg2LDYgKzM4OSw3IEBACiAgICAgcmV0dXJuICpzcGVlZDsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lOVEVSRkFDRV9BUkNIX1NFVF9BRE1JTl9TVEFUVVMKIGludAogbmV0c25tcF9hcmNoX3NldF9hZG1pbl9zdGF0dXMobmV0c25tcF9pbnRlcmZhY2VfZW50cnkgKiBlbnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpZkFkbWluU3RhdHVzX3ZhbCkKQEAgLTM5OSw0ICs0MDMsNSBAQAogCiAgICAgcmV0dXJuIC00OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5URVJGQUNFX0FSQ0hfU0VUX0FETUlOX1NUQVRVUyAqLwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX3NvbGFyaXMyLmMgYi9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX3NvbGFyaXMyLmMKaW5kZXggMmIwZmM0Yy4uOGFhNDdmOCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zb2xhcmlzMi5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc29sYXJpczIuYwpAQCAtMiw2ICsyLDcgQEAKICAqICBJbnRlcmZhY2UgTUlCIGFyY2hpdGVjdHVyZSBzdXBwb3J0IGZvciBTb2xhcmlzCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAiaWYtbWliL2lmVGFibGUvaWZUYWJsZV9jb25zdGFudHMuaCIKICNpbmNsdWRlICJrZXJuZWxfc3Vub3M1LmgiCkBAIC0xNiw2ICsxNyw4IEBACiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW50ZXJmYWNlX2FyY2hfc2V0X2FkbWluX3N0YXR1cywgaW50ZXJmYWNlX2FsbCkKKwogc3RhdGljIGludCBfc2V0X2lwX2ZsYWdzX3Y0KG5ldHNubXBfaW50ZXJmYWNlX2VudHJ5ICosIG1pYjJfaWZFbnRyeV90ICopOwogc3RhdGljIGludCBfbWF0Y2hfaWZuYW1lX3Y0YWRkcih2b2lkICppZm5hbWUsIHZvaWQgKmlwYWRkcik7CiBzdGF0aWMgaW50IF9nZXRfdjRhZGRyKG1pYjJfaWZFbnRyeV90ICppZmUsIG1pYjJfaXBBZGRyRW50cnlfdCAqZSk7CkBAIC0zNDUsNiArMzQ4LDcgQEAKIH0KICNlbmRpZiAvKiBTT0xBUklTX0hBVkVfSVBWNl9NSUJfU1VQUE9SVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5URVJGQUNFX0FSQ0hfU0VUX0FETUlOX1NUQVRVUwogaW50CiBuZXRzbm1wX2FyY2hfc2V0X2FkbWluX3N0YXR1cyhuZXRzbm1wX2ludGVyZmFjZV9lbnRyeSAqIGVudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlmQWRtaW5TdGF0dXNfdmFsKQpAQCAtMzU2LDMgKzM2MCw0IEBACiAgICAgICovCiAgICAgcmV0dXJuICgtMSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTlRFUkZBQ0VfQVJDSF9TRVRfQURNSU5fU1RBVFVTICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX3N5c2N0bC5jIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zeXNjdGwuYwppbmRleCBjY2UzODgxLi42MDc2ZDE5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX3N5c2N0bC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc3lzY3RsLmMKQEAgLTYsNiArNiw3IEBACiAgKiAkSWQkCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAibWliSUkvbWliSUlfY29tbW9uLmgiCiAjaW5jbHVkZSAiaWYtbWliL2lmVGFibGUvaWZUYWJsZV9jb25zdGFudHMuaCIKQEAgLTI5LDYgKzMwLDggQEAKICNpbmNsdWRlIDxuZXQvaWZfdHlwZXMuaD4KICNpbmNsdWRlIDxuZXQvaWZfbWVkaWEuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGludGVyZmFjZV9hcmNoX3NldF9hZG1pbl9zdGF0dXMsIGludGVyZmFjZV9hbGwpCisKIC8qCiAgKiBhY2NvdW50IGZvciBtaW5vciBkaWZmZXJlbmNlcyBiZXR3ZWVuIEZyZWVCU0QgYW5kIE9wZW5CU0QuCiAgKiBJZiB0aGlzIGdldHMgdW5ydWx5LCBzcGxpdCBzdHVmZiBvdXQgaW50byB0aGUgcmVzcGVjdGl2ZQpAQCAtNTYxLDYgKzU2NCw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTlRFUkZBQ0VfQVJDSF9TRVRfQURNSU5fU1RBVFVTCiBpbnQKIG5ldHNubXBfYXJjaF9zZXRfYWRtaW5fc3RhdHVzKG5ldHNubXBfaW50ZXJmYWNlX2VudHJ5ICogZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaWZBZG1pblN0YXR1c192YWwpCkBAIC01NzUsMyArNTc5LDQgQEAKIAogICAgIHJldHVybiAtNDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lOVEVSRkFDRV9BUkNIX1NFVF9BRE1JTl9TVEFUVVMgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuYwppbmRleCA4MDgyOWNjLi5kOWI3MjUyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5jCkBAIC0xNCw5ICsxNCwxNCBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGludGVyZmFjZV9hY2Nlc3NfZW50cnlfc2V0X2FkbWluX3N0YXR1cykKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogLyoKICAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCiAgKi8KQEAgLTE3ODMsNiArMTc4OCw5IEBACiAKIAogLyoqIEB9ICovCisKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpAQCAtMjMyOSw2ICsyMzM3LDggQEAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaWZUYWJsZV9jaGVja19kZXBlbmRlbmNpZXMgKi8KIAogCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiBzdGF0aWMgaW50CiBfaWZfbnVtYmVyX2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5oCmluZGV4IDQ1MmI4NjMuLmU5MDYzNGYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmgKQEAgLTQ1MSw2ICs0NTEsNyBAQAogCiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAvKgogICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICAgKiBTRVQgZnVuY3Rpb24gZGVjbGFyYXRpb25zCkBAIC02NjYsNyArNjY3LDcgQEAKIAogCiAgICAgaW50ICAgICAgICAgICAgIGlmVGFibGVfY2hlY2tfZGVwZW5kZW5jaWVzKGlmVGFibGVfcm93cmVxX2N0eCAqIGN0eCk7Ci0KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAvKgogICAgICAqIERVTU1ZIG1hcmtlcnMsIGlnbm9yZQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jCmluZGV4IGZhZjM3ZDYuLmI4YTA5YjUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYworKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTgsOSArOCwxMiBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY29udGFpbmVyX2xpbmtlZF9saXN0KQorCiAvKgogICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKICAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmMKaW5kZXggNDlkZTM1Ni4uNDFkMzhlZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jCkBAIC0zMCw2ICszMCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC00Nyw2ICs0OCwyMSBAQAogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlmVGFibGVfZXh0ZXJuYWxfYWNjZXNzLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX2FsbF9yZXF1ZXN0c19lcnJvcikKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpZnRhYmxlX2NvbnRhaW5lcl9nZXQsIGlmVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlmeHRhYmxlX3NodXRkb3duX2ludGVyZmFjZSwgbmV0c25tcF91bnVzZWQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaWZYVGFibGVfY29udGFpbmVyX3NpemUsIGlmWFRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpZlhUYWJsZV9yZWdpc3RyYXRpb25fc2V0LCBpZlhUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaWZYVGFibGVfcmVnaXN0cmF0aW9uX2dldCwgaWZYVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlmWFRhYmxlX2NvbnRhaW5lcl9nZXQsIGlmWFRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpZnRhYmxlX2NvbnRhaW5lcl9zaXplLCBpZlRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpZnRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQsIGlmVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlmdGFibGVfcmVnaXN0cmF0aW9uX2dldCwgaWZUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpAQCAtODIsMTkgKzk4LDIzIEBACiBzdGF0aWMgdm9pZCAgICAgX2lmVGFibGVfY29udGFpbmVyX3NodXRkb3duKGlmVGFibGVfaW50ZXJmYWNlX2N0eCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmX2N0eCk7CiAKLQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lGVEFCTEVfQ09OVEFJTkVSX0dFVAogbmV0c25tcF9jb250YWluZXIgKgogaWZUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIGlmVGFibGVfaWZfY3R4LmNvbnRhaW5lcjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lGVEFCTEVfQ09OVEFJTkVSX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZUQUJMRV9SRUdJU1RSQVRJT05fR0VUCiBpZlRhYmxlX3JlZ2lzdHJhdGlvbiAqCiBpZlRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaWZUYWJsZV9pZl9jdHgudXNlcl9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JRlRBQkxFX1JFR0lTVFJBVElPTl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lGVEFCTEVfUkVHSVNUUkFUSU9OX1NFVAogaWZUYWJsZV9yZWdpc3RyYXRpb24gKgogaWZUYWJsZV9yZWdpc3RyYXRpb25fc2V0KGlmVGFibGVfcmVnaXN0cmF0aW9uICogbmV3cmVnKQogewpAQCAtMTAyLDEyICsxMjIsMTUgQEAKICAgICBpZlRhYmxlX2lmX2N0eC51c2VyX2N0eCA9IG5ld3JlZzsKICAgICByZXR1cm4gb2xkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZUQUJMRV9SRUdJU1RSQVRJT05fU0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JRlRBQkxFX0NPTlRBSU5FUl9TSVpFCiBpbnQKIGlmVGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKIHsKICAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUoaWZUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lGVEFCTEVfQ09OVEFJTkVSX1NJWkUgKi8KIAogdV9pbnQKIGlmVGFibGVfZGlydHlfZ2V0KHZvaWQpCkBAIC0xNDUsNyArMTY4LDcgQEAKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lmVGFibGVfcG9zdF9yZXF1ZXN0Owogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaWZUYWJsZV9vYmplY3RfbG9va3VwOwogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaWZUYWJsZV9nZXRfdmFsdWVzOwotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pZlRhYmxlX2NoZWNrX29iamVjdHM7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pZlRhYmxlX3VuZG9fc2V0dXA7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pZlRhYmxlX3NldF92YWx1ZXM7CkBAIC0xNjAsNyArMTgzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29sdW1uKTsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogaWZUYWJsZV9kYXRhICAgKmlmVGFibGVfYWxsb2NhdGVfZGF0YSh2b2lkKTsKIApAQCAtMjUwLDcgKzI3Myw3IEBACiAgICAgYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QgPSBfbWZkX2lmVGFibGVfcG9zdF9yZXF1ZXN0OwogCiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogICAgIC8qCiAgICAgICogUkVRVUlSRUQgd3JhcHBlcnMgZm9yIHNldCByZXF1ZXN0IGhhbmRsaW5nCiAgICAgICovCkBAIC0yNzMsNyArMjk2LDcgQEAKICAgICAgKi8KICAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPmNvbnNpc3RlbmN5X2NoZWNrcyA9CiAgICAgICAgIF9tZmRfaWZUYWJsZV9jaGVja19kZXBlbmRlbmNpZXM7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAqCkBAIC0yODYsMTEgKzMwOSwxNCBAQAogICAgIHJlZ2luZm8gPQogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NyZWF0ZSgiaWZUYWJsZSIsIGhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmVGFibGVfb2lkLCBpZlRhYmxlX29pZF9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9CQUJZX1NURVAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEhBTkRMRVJfQ0FOX1JXUklURQotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9CQUJZX1NURVAgfAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFCisjZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KKyAgICAgICAgICAgICk7CisKICAgICBpZiAoTlVMTCA9PSByZWdpbmZvKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciByZWdpc3RlcmluZyB0YWJsZSBpZlRhYmxlXG4iKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzA4LDcgKzMzNCw3IEBACiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+c2V0X3ZhbHVlcykKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9TRVRfVkFMVUVTOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmlycmV2ZXJzaWJsZV9jb21taXQpCkBAIC0zMzEsNyArMzU3LDcgQEAKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICBoYW5kbGVyID0gbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfZ2V0KG1mZF9tb2Rlcyk7CiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKQEAgLTM3Myw3ICszOTksNyBAQAogICAgICAqLwogICAgIHsKICAgICAgICAgY29uc3Qgb2lkICAgICAgIGlmdGxjX29pZFtdID0geyBJRlRBQkxFX0xBU1RfQ0hBTkdFIH07Ci0gICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KKyAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcjIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImlmVGFibGVMYXN0Q2hhbmdlZCIsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmdGxjX29pZCwgT0lEX0xFTkdUSChpZnRsY19vaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSksCkBAIC0xMDM5LDggKzEwNjUsOCBAQAogCiAKIAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIFNFVCBwcm9jZXNzaW5nCkBAIC0xODE4LDcgKzE4NDQsNyBAQAogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaWZUYWJsZV9pcnJldmVyc2libGVfY29tbWl0ICovCi0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTE5NjQsNiArMTk5MCw3IEBACiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pZlRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JRlRBQkxFX0VYVEVSTkFMX0FDQ0VTUwogaWZUYWJsZV9yb3dyZXFfY3R4ICoKIGlmVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KGlmVGFibGVfbWliX2luZGV4ICogbWliX2lkeCkKIHsKQEAgLTE5ODksMyArMjAxNiw0IEBACiAKICAgICByZXR1cm4gcm93cmVxX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lGVEFCTEVfRVhURVJOQUxfQUNDRVNTICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5jCmluZGV4IDIzZjcxMzcuLmJiM2U3MzYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5jCkBAIC0xNCw2ICsxNCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC0yOSw2ICszMCw5IEBACiAKICNpbmNsdWRlICJpZlhUYWJsZV9pbnRlcmZhY2UuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaWZUYWJsZV9jb250YWluZXJfZ2V0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaWZUYWJsZV9jb250YWluZXJfc2l6ZSkKKwogLyoKICAqIG5vdCBzdXJlIGlmIHdlIHdhbnQgdG8gc3VwcG9ydCBzZXQgZm9yIHByb21pc2N1b3VzIG1vZGUsIGJlY2F1c2UKICAqIDEpIGNhcmVmdWwgdGhvdWdodCBzaG91bGQgZ28gaW50byBhbnkgc2V0dGFibGUgb2JqZWN0IHRoYXQgcGVyZm9ybXMKQEAgLTE1NzIsNiArMTU3Niw3IEBACiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlmQ291bnRlckRpc2NvbnRpbnVpdHlUaW1lX2dldCAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAKIC8qKiBAfSAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTI1MzAsNSArMjUzNSw3IEBACiAgICAgcmV0dXJuIHJjOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpZlhUYWJsZV9jaGVja19kZXBlbmRlbmNpZXMgKi8KIAorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogLyoqIEB9ICovCiAvKiogQHsgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmgKaW5kZXggZjliMjVkNC4uYmEyMmY5NyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmgKQEAgLTIxOCw3ICsyMTgsNyBAQAogICAgICAqIE9JRDogLjEuMy42LjEuMi4xLjMxLjEuMSwgbGVuZ3RoOiA5CiAgICAgICovCiAKLQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBpbnQgICAgICAgICAgICAgaWZYVGFibGVfdW5kb19zZXR1cChpZlhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCk7CiAgICAgaW50ICAgICAgICAgICAgIGlmWFRhYmxlX3VuZG9fY2xlYW51cChpZlhUYWJsZV9yb3dyZXFfY3R4ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOwpAQCAtNDM4LDcgKzQzOCw3IEBACiAKIAogICAgIGludCAgICAgICAgICAgICBpZlhUYWJsZV9jaGVja19kZXBlbmRlbmNpZXMoaWZYVGFibGVfcm93cmVxX2N0eCAqIGN0eCk7Ci0KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAvKgogICAgICAqIERVTU1ZIG1hcmtlcnMsIGlnbm9yZQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2NvbnN0YW50cy5oIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2NvbnN0YW50cy5oCmluZGV4IDcyOGVmNTcuLjY3ZTE5OTYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9jb25zdGFudHMuaAorKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfY29uc3RhbnRzLmgKQEAgLTY3LDcgKzY3LDExIEBACiAgICAgICogVE9ETzo0MDU6cjogUmV2aWV3IElGWFRBQkxFX1NFVFRBQkxFX0NPTFMgbWFjcm8uCiAgICAgICogT1IgdG9nZXRoZXIgYWxsIHRoZSB3cml0YWJsZSBjb2xzLgogICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICNkZWZpbmUgSUZYVEFCTEVfU0VUVEFCTEVfQ09MUyAoQ09MVU1OX0lGTElOS1VQRE9XTlRSQVBFTkFCTEVfRkxBRyB8IENPTFVNTl9JRkFMSUFTX0ZMQUcpCisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisjZGVmaW5lIElGWFRBQkxFX1NFVFRBQkxFX0NPTFMgMAorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8gCiAgICAgLyoKICAgICAgKiBOT1RFUyBvbiBlbnVtcwogICAgICAqID09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmMKaW5kZXggMTUwNzRlYS4uMjNiNTBkMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYwpAQCAtMzAsNiArMzAsOCBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC00OCw2ICs1MCwxNiBAQAogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlmWFRhYmxlX2V4dGVybmFsX2FjY2VzcywgbGlibmV0c25tcG1pYnMpCisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJvd19tZXJnZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNhY2hlX2ZpbmRfYnlfb2lkKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX2FsbF9yZXF1ZXN0c19lcnJvcikKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90eXBlX2FuZF9tYXhfc2l6ZSkKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqCkBAIC04MSwxOSArOTMsMjMgQEAKIHN0YXRpYyB2b2lkICAgICBfaWZYVGFibGVfY29udGFpbmVyX3NodXRkb3duKGlmWFRhYmxlX2ludGVyZmFjZV9jdHggKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZfY3R4KTsKIAotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZYVEFCTEVfQ09OVEFJTkVSX0dFVAogbmV0c25tcF9jb250YWluZXIgKgogaWZYVGFibGVfY29udGFpbmVyX2dldCh2b2lkKQogewogICAgIHJldHVybiBpZlhUYWJsZV9pZl9jdHguY29udGFpbmVyOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZYVEFCTEVfQ09OVEFJTkVSX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZYVEFCTEVfUkVHSVNUUkFUSU9OX0dFVAogaWZYVGFibGVfcmVnaXN0cmF0aW9uICoKIGlmWFRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaWZYVGFibGVfaWZfY3R4LnVzZXJfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZYVEFCTEVfUkVHSVNUUkFUSU9OX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZYVEFCTEVfUkVHSVNUUkFUSU9OX1NFVAogaWZYVGFibGVfcmVnaXN0cmF0aW9uICoKIGlmWFRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQoaWZYVGFibGVfcmVnaXN0cmF0aW9uICogbmV3cmVnKQogewpAQCAtMTAxLDEyICsxMTcsMTUgQEAKICAgICBpZlhUYWJsZV9pZl9jdHgudXNlcl9jdHggPSBuZXdyZWc7CiAgICAgcmV0dXJuIG9sZDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lGWFRBQkxFX1JFR0lTVFJBVElPTl9TRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lGWFRBQkxFX0NPTlRBSU5FUl9TSVpFCiBpbnQKIGlmWFRhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpCiB7CiAgICAgcmV0dXJuIENPTlRBSU5FUl9TSVpFKGlmWFRhYmxlX2lmX2N0eC5jb250YWluZXIpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZYVEFCTEVfQ09OVEFJTkVSX1NJWkUgKi8KIAogdV9pbnQKIGlmWFRhYmxlX2RpcnR5X2dldCh2b2lkKQpAQCAtMTMwLDcgKzE0OSw3IEBACiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pZlhUYWJsZV9wb3N0X3JlcXVlc3Q7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pZlhUYWJsZV9vYmplY3RfbG9va3VwOwogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaWZYVGFibGVfZ2V0X3ZhbHVlczsKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaWZYVGFibGVfY2hlY2tfb2JqZWN0czsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lmWFRhYmxlX3VuZG9fc2V0dXA7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pZlhUYWJsZV9zZXRfdmFsdWVzOwpAQCAtMTQ1LDcgKzE2NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciwgaW50IGNvbHVtbik7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKIGlmWFRhYmxlX2RhdGEgICppZlhUYWJsZV9hbGxvY2F0ZV9kYXRhKHZvaWQpOwogCkBAIC0yMjMsNyArMjQyLDcgQEAKICAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCA9IF9tZmRfaWZYVGFibGVfcG9zdF9yZXF1ZXN0OwogCiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogICAgIC8qCiAgICAgICogUkVRVUlSRUQgd3JhcHBlcnMgZm9yIHNldCByZXF1ZXN0IGhhbmRsaW5nCiAgICAgICovCkBAIC0yNDYsNyArMjY1LDcgQEAKICAgICAgKi8KICAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPmNvbnNpc3RlbmN5X2NoZWNrcyA9CiAgICAgICAgIF9tZmRfaWZYVGFibGVfY2hlY2tfZGVwZW5kZW5jaWVzOwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICAgKgpAQCAtMjYwLDExICsyNzksMTQgQEAKICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jcmVhdGUoImlmWFRhYmxlIiwgaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZYVGFibGVfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlhUYWJsZV9vaWRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fQkFCWV9TVEVQCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBIQU5ETEVSX0NBTl9SV1JJVEUKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fQkFCWV9TVEVQIHwKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURQorI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkKKyNlbmRpZiAgICAgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KKyAgICAgICAgICAgICk7CisKICAgICBpZiAoTlVMTCA9PSByZWdpbmZvKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciByZWdpc3RlcmluZyB0YWJsZSBpZlhUYWJsZVxuIik7CiAgICAgICAgIHJldHVybjsKQEAgLTI4Miw3ICszMDQsNyBAQAogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QT1NUX1JFUVVFU1Q7CiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnNldF92YWx1ZXMpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfU0VUX1ZBTFVFUzsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5pcnJldmVyc2libGVfY29tbWl0KQpAQCAtMzA1LDcgKzMyNyw3IEBACiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ09NTUlUOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fY29tbWl0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fQ09NTUlUOwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAgICAgaGFuZGxlciA9IG5ldHNubXBfYmFieV9zdGVwc19oYW5kbGVyX2dldChtZmRfbW9kZXMpOwogICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CkBAIC0zNTIsNiArMzc0LDcgQEAKICAqIEBpbnRlcm5hbAogICogU2h1dGRvd24gdGhlIHRhYmxlIGlmWFRhYmxlCiAgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JRlhUQUJMRV9TSFVURE9XTl9JTlRFUkZBQ0UKIHZvaWQKIF9pZlhUYWJsZV9zaHV0ZG93bl9pbnRlcmZhY2UoaWZYVGFibGVfcmVnaXN0cmF0aW9uICogcmVnX3B0cikKIHsKQEAgLTM2MCw2ICszODMsNyBAQAogICAgICAqLwogICAgIF9pZlhUYWJsZV9jb250YWluZXJfc2h1dGRvd24oJmlmWFRhYmxlX2lmX2N0eCk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JRlhUQUJMRV9TSFVURE9XTl9JTlRFUkZBQ0UgKi8KIAogdm9pZAogaWZYVGFibGVfdmFsaWRfY29sdW1uc19zZXQobmV0c25tcF9jb2x1bW5faW5mbyAqdmMpCkBAIC05MTIsNyArOTM2LDcgQEAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9pZlhUYWJsZV9nZXRfdmFsdWVzICovCiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogU0VUIHByb2Nlc3NpbmcKQEAgLTExOTMsNyArMTIxNyw2IEBACiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaWZYVGFibGVfY2hlY2tfb2JqZWN0cyAqLwogCi0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAqIFNFVDogY2hlY2sgZGVwZW5kZW5jaWVzCkBAIC0xNzA5LDcgKzE3MzIsOCBAQAogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaWZYVGFibGVfaXJyZXZlcnNpYmxlX2NvbW1pdCAqLwotI2VuZGlmCisKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTE3OTgsMTMgKzE4MjIsMTcgQEAKIHZvaWQKIGlmWFRhYmxlX2NvbnRhaW5lcl9pbml0X3BlcnNpc3RlbmNlKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIpCiB7CisgICAgbmV0c25tcF9jb250YWluZXIgKipjb250YWluZXJfcDsKICAgICBpbnQgICAgICAgICAgICAgcmM7CiAKICAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcihOVUxMLCByb3dfdG9rZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2lmWFRhYmxlX2NvbnRhaW5lcl9yb3dfcmVzdG9yZSwgTlVMTCwgTlVMTCk7CisgICAgbmV0c25tcF9hc3NlcnQoY29udGFpbmVyKTsKKyAgICBjb250YWluZXJfcCA9IG5ldHNubXBfbWVtZHVwKCZjb250YWluZXIsIHNpemVvZihjb250YWluZXIpKTsKKyAgICBuZXRzbm1wX2Fzc2VydChjb250YWluZXJfcCk7CiAgICAgcmMgPSBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9DQUxMQkFDS19TVE9SRV9EQVRBLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaWZYVGFibGVfY29udGFpbmVyX3NhdmVfcm93cywgY29udGFpbmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2lmWFRhYmxlX2NvbnRhaW5lcl9zYXZlX3Jvd3MsIGNvbnRhaW5lcl9wKTsKIAogICAgIGlmIChyYyAhPSBTTk1QX0VSUl9OT0VSUk9SKQogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgcmVnaXN0ZXJpbmcgZm9yIFNUT1JFX0RBVEEgY2FsbGJhY2sgIgpAQCAtMTgyNyw3ICsxODU1LDcgQEAKICAgICAvKgogICAgICAqIHNhdmUgYWxsIHJvd3MKICAgICAgKi8KLSAgICBDT05UQUlORVJfRk9SX0VBQ0goKG5ldHNubXBfY29udGFpbmVyICopIGNsaWVudGFyZywKKyAgICBDT05UQUlORVJfRk9SX0VBQ0goKihuZXRzbm1wX2NvbnRhaW5lciAqKiljbGllbnRhcmcsCiAgICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqKQogICAgICAgICAgICAgICAgICAgICAgICBfaWZYVGFibGVfY29udGFpbmVyX3Jvd19zYXZlLCB0eXBlKTsKIApAQCAtMjE0NCw2ICsyMTcyLDcgQEAKIH0KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZYVEFCTEVfRVhURVJOQUxfQUNDRVNTCiBpZlhUYWJsZV9yb3dyZXFfY3R4ICoKIGlmWFRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChpZlhUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KQogewpAQCAtMjE2OSwzICsyMTk4LDQgQEAKIAogICAgIHJldHVybiByb3dyZXFfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZYVEFCTEVfRVhURVJOQUxfQUNDRVNTICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZS5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGUuaAppbmRleCBhMmI0ZWU0Li4yYzczMWE2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlLmgKQEAgLTIyLDYgKzIyLDEwIEBACiAjaWYgZGVmaW5lZCggbGludXggKQogY29uZmlnX3JlcXVpcmUoaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfbGludXgpCiBjb25maWdfcmVxdWlyZShpcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9pb2N0bCkKKyNlbGlmIGRlZmluZWQoIGZyZWVic2Q3ICkgfHwgZGVmaW5lZCggbmV0YnNkNSApIHx8IGRlZmluZWQoIG9wZW5ic2Q0ICkgfHwgZGVmaW5lZCggZHJhZ29uZmx5ICkgfHwgZGVmaW5lZCggZGFyd2luICkKK2NvbmZpZ19yZXF1aXJlKGlwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX3N5c2N0bCkKKyNlbGlmIGRlZmluZWQoc29sYXJpczIpICYmIGRlZmluZWQoIEhBVkVfTUlCMl9JUElGU1RBVFNFTlRSWV9UICkKK2NvbmZpZ19yZXF1aXJlKGlwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX3NvbGFyaXMpCiAjZWxzZQogY29uZmlnX2Vycm9yKHRoZSByb3V0ZSBkYXRhIGFjY2VzcyBsaWJyYXJ5IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC4pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2NvbW1vbi5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMKaW5kZXggZTI5MDFmOS4uODRjMTgxMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMKQEAgLTI0Miw4ICsyNDIsNyBAQAogICAgIGxocy0+cnRfcHJvdG8gPSByaHMtPnJ0X3Byb3RvOwogCiAjaWZkZWYgVVNJTkdfSVBfRk9SV0FSRF9NSUJfSVBDSURSUk9VVEVUQUJMRV9JUENJRFJST1VURVRBQkxFX01PRFVMRQotICAgIGlmIChOVUxMICE9IGxocy0+cnRfaW5mbykKLSAgICAgICAgU05NUF9GUkVFKGxocy0+cnRfaW5mbyk7CisgICAgU05NUF9GUkVFKGxocy0+cnRfaW5mbyk7CiAgICAgaWYgKE5VTEwgIT0gcmhzLT5ydF9pbmZvKQogICAgICAgICBzbm1wX2Nsb25lX21lbSgodm9pZCAqKikgJmxocy0+cnRfaW5mbywgcmhzLT5ydF9pbmZvLAogICAgICAgICAgICAgICAgICAgICAgICByaHMtPnJ0X2luZm9fbGVuICogc2l6ZW9mKG9pZCkpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfaW9jdGwuYyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2lvY3RsLmMKaW5kZXggODE1YzQxNS4uZmY4OTE2MSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfaW9jdGwuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9pb2N0bC5jCkBAIC01Niw2ICs1Niw3IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvcm91dGUuaD4KIAogI2luY2x1ZGUgImlwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuaCIKQEAgLTk3LDcgKzk4LDcgQEAKIAogICAgIHMgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19SQVcsIE5FVFNOTVBfUk9VVEVfV1JJVEVfUFJPVE9DT0wpOwogICAgIGlmIChzIDwgMCkgewotICAgICAgICBzbm1wX2xvZ19wZXJyb3IoInNvY2tldCIpOworICAgICAgICBzbm1wX2xvZ19wZXJyb3IoIm5ldHNubXBfaW9jdGxfcm91dGVfc2V0X3Y0OiBzb2NrZXQiKTsKICAgICAgICAgcmV0dXJuIC0zOwogICAgIH0KIApAQCAtMTA2LDcgKzEwNyw3IEBACiAgICAgZHN0LnNpbl9mYW1pbHkgPSBBRl9JTkVUOwogICAgIG1lbWNweSgmZHN0LnNpbl9hZGRyLnNfYWRkciwgZW50cnktPnJ0X2Rlc3QsIDQpOwogICAgIERFQlVHU1RSID0gaW5ldF9udG9hKGRzdC5zaW5fYWRkcik7Ci0gICAgREVCVUdNU0dUTCgoImFjY2Vzczpyb3V0ZSIsIioqKiByb3V0ZSB0byAlc1xuIiwgREVCVUdTVFIpKTsKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOnJvdXRlIiwiYWRkIHJvdXRlIHRvICVzXG4iLCBERUJVR1NUUikpOwogCiAgICAgZ2F0ZXdheS5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKICAgICBtZW1jcHkoJmdhdGV3YXkuc2luX2FkZHIuc19hZGRyLCBlbnRyeS0+cnRfbmV4dGhvcCwgNCk7CkBAIC0xMTQsNyArMTE1LDEwIEBACiAgICAgREVCVUdNU0dUTCgoImFjY2Vzczpyb3V0ZSIsIiAgICB2aWEgJXNcbiIsIERFQlVHU1RSKSk7CiAKICAgICBtYXNrLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwotICAgIG1hc2suc2luX2FkZHIuc19hZGRyID0gaHRvbmwoMCk7CisgICAgaWYgKGVudHJ5LT5ydF9wZnhfbGVuICE9IDApCisJbWFzay5zaW5fYWRkci5zX2FkZHIgPSBuZXRzbm1wX2lwYWRkcmVzc19pcHY0X21hc2soZW50cnktPnJ0X3BmeF9sZW4pOworICAgIGVsc2UKKwltYXNrLnNpbl9hZGRyLnNfYWRkciA9IGVudHJ5LT5ydF9tYXNrOwogICAgIERFQlVHU1RSID0gaW5ldF9udG9hKG1hc2suc2luX2FkZHIpOwogICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6cm91dGUiLCIgICAgbWFzayAlc1xuIiwgREVCVUdTVFIpKTsKIApAQCAtMTMzLDMwICsxMzcsMzEgQEAKICNlbmRpZgogCiAgICAgcmMgPSBpb2N0bChzLCBTSU9DQUREUlQsIChjYWRkcl90KSAmIHJvdXRlKTsKLSAgICBjbG9zZShzKTsKICAgICBpZiAocmMgPCAwKSB7Ci0gICAgICAgIHNubXBfbG9nX3BlcnJvcigiaW9jdGwiKTsKLSAgICAgICAgcmV0dXJuIC00OworICAgICAgICBzbm1wX2xvZ19wZXJyb3IoIm5ldHNubXBfaW9jdGxfcm91dGVfc2V0X3Y0OiBpb2N0bCIpOworICAgICAgICByYyA9IC00OwogICAgIH0KKyAgICBjbG9zZShzKTsKIAotICAgIHJldHVybiAwOworICAgIHJldHVybiByYzsKIH0KICNlbmRpZgogCiAjaWYgZGVmaW5lZCBTSU9DREVMUlQgJiYgIWRlZmluZWQoaXJpeDYpCiBpbnQgX25ldHNubXBfaW9jdGxfcm91dGVfZGVsZXRlX3Y0KG5ldHNubXBfcm91dGVfZW50cnkgKiBlbnRyeSkKIHsKLSAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gZHN0OworICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBkc3QsIG1hc2s7CiAgICAgc3RydWN0IHNvY2thZGRyX2luIGdhdGV3YXk7CiAgICAgaW50ICAgICAgICAgICAgIHMsIHJjOwogICAgIFJURU5UUlkgICAgICAgICByb3V0ZTsKKyAgICBjaGFyICAgICAgICAgICAqREVCVUdTVFI7CiAKICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGVudHJ5KTsgLyogY2hlY2tlZCBpbiBuZXRzbm1wX2FyY2hfcm91dGVfZGVsZXRlICovCiAgICAgbmV0c25tcF9hc3NlcnQoKDQgPT0gZW50cnktPnJ0X2Rlc3RfbGVuKSAmJiAoNCA9PSBlbnRyeS0+cnRfbmV4dGhvcF9sZW4pKTsKIAogICAgIHMgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19SQVcsIE5FVFNOTVBfUk9VVEVfV1JJVEVfUFJPVE9DT0wpOwogICAgIGlmIChzIDwgMCkgewotICAgICAgICBzbm1wX2xvZ19wZXJyb3IoInNvY2tldCIpOworICAgICAgICBzbm1wX2xvZ19wZXJyb3IoIm5ldHNubXBfaW9jdGxfcm91dGVfZGVsZXRlX3Y0OiBzb2NrZXQiKTsKICAgICAgICAgcmV0dXJuIC0zOwogICAgIH0KIApAQCAtMTY0LDExICsxNjksMjAgQEAKIAogICAgIGRzdC5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKICAgICBtZW1jcHkoJmRzdC5zaW5fYWRkci5zX2FkZHIsIGVudHJ5LT5ydF9kZXN0LCA0KTsKKyAgICBERUJVR1NUUiA9IGluZXRfbnRvYShkc3Quc2luX2FkZHIpOworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6cm91dGUiLCJkZWwgcm91dGUgdG8gJXNcbiIsIERFQlVHU1RSKSk7CisKKyAgICBtYXNrLnNpbl9mYW1pbHkgPSBBRl9JTkVUOworICAgIGlmIChlbnRyeS0+cnRfcGZ4X2xlbiAhPSAwKQorCW1hc2suc2luX2FkZHIuc19hZGRyID0gbmV0c25tcF9pcGFkZHJlc3NfaXB2NF9tYXNrKGVudHJ5LT5ydF9wZnhfbGVuKTsKKyAgICBlbHNlCisJbWFzay5zaW5fYWRkci5zX2FkZHIgPSBlbnRyeS0+cnRfbWFzazsKIAogICAgIGdhdGV3YXkuc2luX2ZhbWlseSA9IEFGX0lORVQ7CiAgICAgbWVtY3B5KCZnYXRld2F5LnNpbl9hZGRyLnNfYWRkciwgZW50cnktPnJ0X25leHRob3AsIDQpOwogCiAgICAgbWVtY3B5KCZyb3V0ZS5ydF9kc3QsICZkc3QsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKyAgICBtZW1jcHkoJnJvdXRlLnJ0X2dlbm1hc2ssICZtYXNrLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CiAgICAgbWVtY3B5KCZyb3V0ZS5ydF9nYXRld2F5LCAmZ2F0ZXdheSwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwogCiAgICAgaWYgKDMyID09IGVudHJ5LT5ydF9wZnhfbGVuKQpAQCAtMTgyLDExICsxOTYsMTEgQEAKICNlbmRpZgogCiAgICAgcmMgPSBpb2N0bChzLCBTSU9DREVMUlQsIChjYWRkcl90KSAmIHJvdXRlKTsKLSAgICBjbG9zZShzKTsKICAgICBpZiAocmMgPCAwKSB7Ci0gICAgICAgIHNubXBfbG9nX3BlcnJvcigiaW9jdGwiKTsKKyAgICAgICAgc25tcF9sb2dfcGVycm9yKCJuZXRzbm1wX2lvY3RsX3JvdXRlX2RlbGV0ZV92NDogaW9jdGwiKTsKICAgICAgICAgcmMgPSAtNDsKICAgICB9CisgICAgY2xvc2Uocyk7CiAKICAgICByZXR1cm4gcmM7CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfbGludXguYwppbmRleCBmOGQ3OGE5Li4wZjgwZmU4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2xpbnV4LmMKQEAgLTcyLDcgKzcyLDcgQEAKICAgICB3aGlsZSAoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBpbikpIHsKICAgICAgICAgY2hhciAgICAgICAgICAgIHJ0ZW50X25hbWVbMzJdOwogICAgICAgICBpbnQgICAgICAgICAgICAgcmVmY250LCByYzsKLSAgICAgICAgdWludDMyX3QgICAgICAgIGRlc3QsIG5leHRob3AsIG1hc2ssIHRtcF9tYXNrOworICAgICAgICB1aW50MzJfdCAgICAgICAgZGVzdCwgbmV4dGhvcCwgbWFzazsKICAgICAgICAgdW5zaWduZWQgICAgICAgIGZsYWdzLCB1c2U7CiAKICAgICAgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19yb3V0ZV9lbnRyeV9jcmVhdGUoKTsKQEAgLTg5LDcgKzg5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICogWFhYOiBmaXggdHlwZSBvZiB0aGUgYXJncyAKICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgICAgICZmbGFncywgJnJlZmNudCwgJnVzZSwgJmVudHJ5LT5ydF9tZXRyaWMxLAotICAgICAgICAgICAgICAgICAgICAmdG1wX21hc2spOworICAgICAgICAgICAgICAgICAgICAmbWFzayk7CiAgICAgICAgIERFQlVHTVNHVEwoKCI5OmFjY2Vzczpyb3V0ZTpjb250YWluZXIiLCAibGluZSB8JXN8XG4iLCBsaW5lKSk7CiAgICAgICAgIGlmICg4ICE9IHJjKSB7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLApAQCAtMTIxLDEwICsxMjEsOCBAQAogICAgICAgICAgKi8KICAgICAgICAgZW50cnktPm5zX3J0X2luZGV4ID0gKysoKmluZGV4KTsKIAotICAgICAgICBtYXNrID0gaHRvbmwodG1wX21hc2spOwotCiAjaWZkZWYgVVNJTkdfSVBfRk9SV0FSRF9NSUJfSVBDSURSUk9VVEVUQUJMRV9JUENJRFJST1VURVRBQkxFX01PRFVMRQotICAgICAgICBlbnRyeS0+cnRfbWFzayA9IG1hc2s7CisgICAgICAgIG1lbWNweSgmZW50cnktPnJ0X21hc2ssICZtYXNrLCA0KTsKICAgICAgICAgLyoqIGVudHJ5LT5ydF90b3MgPSBYWFg7ICovCiAgICAgICAgIC8qKiBydCBpbmZvID8/ICovCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX3NvbGFyaXMuYyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX3NvbGFyaXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDhhZDIyCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfc29sYXJpcy5jCkBAIC0wLDAgKzEsMjU4IEBACisvKgorICogIEludGVyZmFjZSBNSUIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKKyAqCisgKiAkSWQkCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgIm1pYklJL21pYklJX2NvbW1vbi5oIgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9yb3V0ZS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oPgorCisjaW5jbHVkZSA8aW5ldC9pcC5oPgorI2luY2x1ZGUgPGluZXQvbWliMi5oPgorCisjaW5jbHVkZSAiaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfaW9jdGwuaCIKKyNpbmNsdWRlICJpcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnN0YW50cy5oIgorI2luY2x1ZGUgImlmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfaW9jdGwuaCIKKworc3RhdGljIGludCBfbG9hZF92NChuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2xvbmcgKmNvdW50KTsKK3N0YXRpYyBpbnQgX2xvYWRfdjYobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgdV9sb25nICpjb3VudCk7CisKKy8qKiBhcmNoIHNwZWNpZmljIGxvYWQKKyAqIEBpbnRlcm5hbAorICoKKyAqIEByZXR2YWwgIDAgc3VjY2VzcworICogQHJldHZhbCAtMSBubyBjb250YWluZXIgc3BlY2lmaWVkCisgKiBAcmV0dmFsIC0yIGNvdWxkIG5vdCBvcGVuIGRhdGEgZmlsZQorICovCitpbnQKK25ldHNubXBfYWNjZXNzX3JvdXRlX2NvbnRhaW5lcl9hcmNoX2xvYWQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICB1X2xvbmcgICAgICAgICAgY291bnQgPSAwOworICAgIGludCAgICAgICAgICAgICByYzsKKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6cm91dGU6Y29udGFpbmVyIiwKKyAgICAgICAgICAgICAgICAicm91dGVfY29udGFpbmVyX2FyY2hfbG9hZCAoZmxhZ3MgJXgpXG4iLCBsb2FkX2ZsYWdzKSk7CisKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm5vIGNvbnRhaW5lciBzcGVjaWZpZWQvZm91bmQgZm9yIGFjY2Vzc19yb3V0ZVxuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByYyA9IF9sb2FkX3Y0KGNvbnRhaW5lciwgJmNvdW50KTsKKyAgICAKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgaWYoKDAgIT0gcmMpIHx8IChsb2FkX2ZsYWdzICYgTkVUU05NUF9BQ0NFU1NfUk9VVEVfTE9BRF9JUFY0X09OTFkpKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICAvKgorICAgICAqIGxvYWQgaXB2Ni4gaXB2NiBtb2R1bGUgbWlnaHQgbm90IGJlIGxvYWRlZCwKKyAgICAgKiBzbyBpZ25vcmUgLTIgZXJyIChmaWxlIG5vdCBmb3VuZCkKKyAgICAgKi8KKyAgICByYyA9IF9sb2FkX3Y2KGNvbnRhaW5lciwgJmNvdW50KTsKKyAgICBpZiAoLTIgPT0gcmMpCisgICAgICAgIHJjID0gMDsKKyNlbmRpZgorCisgICAgcmV0dXJuIHJjOworfQorCisvKgorICogY3JlYXRlIGEgbmV3IGVudHJ5CisgKi8KK2ludAorbmV0c25tcF9hcmNoX3JvdXRlX2NyZWF0ZShuZXRzbm1wX3JvdXRlX2VudHJ5ICplbnRyeSkKK3sKKyAgICBpZiAoTlVMTCA9PSBlbnRyeSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKDQgIT0gZW50cnktPnJ0X2Rlc3RfbGVuKSB7CisgICAgICAgIERFQlVHTVNHVCgoImFjY2Vzczpyb3V0ZTpjcmVhdGUiLCAib25seSBpcHY0IHN1cHBvcnRlZFxuIikpOworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorCisgICAgLyogcmV0dXJuIF9uZXRzbm1wX2lvY3RsX3JvdXRlX3NldF92NChlbnRyeSk7ICovCisgICAgcmV0dXJuIC0yOworfQorCisvKgorICogY3JlYXRlIGEgbmV3IGVudHJ5CisgKi8KK2ludAorbmV0c25tcF9hcmNoX3JvdXRlX2RlbGV0ZShuZXRzbm1wX3JvdXRlX2VudHJ5ICplbnRyeSkKK3sKKyAgICBpZiAoTlVMTCA9PSBlbnRyeSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKDQgIT0gZW50cnktPnJ0X2Rlc3RfbGVuKSB7CisgICAgICAgIERFQlVHTVNHVCgoImFjY2Vzczpyb3V0ZTpjcmVhdGUiLCAib25seSBpcHY0IHN1cHBvcnRlZFxuIikpOworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorCisgICAgLyogcmV0dXJuIF9uZXRzbm1wX2lvY3RsX3JvdXRlX2RlbGV0ZV92NChlbnRyeSk7ICovCisgICAgcmV0dXJuIC0yOworfQorCisKK3N0YXRpYyBpbnQKK0lQX0NtcF9Sb3V0ZSh2b2lkICphZGRyLCB2b2lkICplcCkKK3sKKyAgICBtaWIyX2lwUm91dGVFbnRyeV90ICpFcCA9IGVwLCAqQWRkciA9IGFkZHI7CisKKyAgICBpZiAoKEVwLT5pcFJvdXRlRGVzdCA9PSBBZGRyLT5pcFJvdXRlRGVzdCkgJiYKKyAgICAgICAgKEVwLT5pcFJvdXRlTmV4dEhvcCA9PSBBZGRyLT5pcFJvdXRlTmV4dEhvcCkgJiYKKyAgICAgICAgKEVwLT5pcFJvdXRlVHlwZSA9PSBBZGRyLT5pcFJvdXRlVHlwZSkgJiYKKyAgICAgICAgKEVwLT5pcFJvdXRlUHJvdG8gPT0gQWRkci0+aXBSb3V0ZVByb3RvKSAmJgorICAgICAgICAoRXAtPmlwUm91dGVNYXNrID09IEFkZHItPmlwUm91dGVNYXNrKSAmJgorICAgICAgICAoRXAtPmlwUm91dGVJbmZvLnJlX21heF9mcmFnID09IEFkZHItPmlwUm91dGVJbmZvLnJlX21heF9mcmFnKSAmJgorICAgICAgICAoRXAtPmlwUm91dGVJbmZvLnJlX3J0dCA9PSBBZGRyLT5pcFJvdXRlSW5mby5yZV9ydHQpICYmCisgICAgICAgIChFcC0+aXBSb3V0ZUluZm8ucmVfcmVmID09IEFkZHItPmlwUm91dGVJbmZvLnJlX3JlZikgJiYKKyAgICAgICAgKEVwLT5pcFJvdXRlSW5mby5yZV9mcmFnX2ZsYWcgPT0gQWRkci0+aXBSb3V0ZUluZm8ucmVfZnJhZ19mbGFnKSAmJgorICAgICAgICAoRXAtPmlwUm91dGVJbmZvLnJlX3NyY19hZGRyID09IEFkZHItPmlwUm91dGVJbmZvLnJlX3NyY19hZGRyKSAmJgorICAgICAgICAoRXAtPmlwUm91dGVJbmZvLnJlX2lyZV90eXBlID09IEFkZHItPmlwUm91dGVJbmZvLnJlX2lyZV90eXBlKSAmJgorICAgICAgICAoRXAtPmlwUm91dGVJbmZvLnJlX29icGt0ID09IEFkZHItPmlwUm91dGVJbmZvLnJlX29icGt0KSAmJgorICAgICAgICAoRXAtPmlwUm91dGVJbmZvLnJlX2licGt0ID09IEFkZHItPmlwUm91dGVJbmZvLnJlX2licGt0KQorICAgICAgICApCisgICAgICAgIHJldHVybiAoMCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gKDEpOyAgICAgICAgICAgICAvKiBOb3QgZm91bmQgKi8KK30KKworCitzdGF0aWMgaW50CitJUDZfQ21wX1JvdXRlKHZvaWQgKmFkZHIsIHZvaWQgKmVwKQoreworICAgIG1pYjJfaXB2NlJvdXRlRW50cnlfdCAqRXAgPSBlcCwgKkFkZHIgPSBhZGRyOworCisgICAgaWYgKChtZW1jbXAoJkVwLT5pcHY2Um91dGVEZXN0LCAmQWRkci0+aXB2NlJvdXRlRGVzdCwgMTYpID09IDApICYmCisgICAgICAgIChtZW1jbXAoJkVwLT5pcHY2Um91dGVOZXh0SG9wLCAmQWRkci0+aXB2NlJvdXRlTmV4dEhvcCwgMTYpID09IDApICYmCisgICAgICAgIChFcC0+aXB2NlJvdXRlVHlwZSA9PSBBZGRyLT5pcHY2Um91dGVUeXBlKSAmJgorICAgICAgICAoRXAtPmlwdjZSb3V0ZUluZm8ucmVfbWF4X2ZyYWcgPT0gQWRkci0+aXB2NlJvdXRlSW5mby5yZV9tYXhfZnJhZykgJiYKKyAgICAgICAgKEVwLT5pcHY2Um91dGVJbmZvLnJlX3J0dCA9PSBBZGRyLT5pcHY2Um91dGVJbmZvLnJlX3J0dCkgJiYKKyAgICAgICAgKEVwLT5pcHY2Um91dGVJbmZvLnJlX3JlZiA9PSBBZGRyLT5pcHY2Um91dGVJbmZvLnJlX3JlZikgJiYKKyAgICAgICAgKEVwLT5pcHY2Um91dGVJbmZvLnJlX2ZyYWdfZmxhZyA9PSBBZGRyLT5pcHY2Um91dGVJbmZvLnJlX2ZyYWdfZmxhZykgJiYKKyAgICAgICAgKG1lbWNtcCgmRXAtPmlwdjZSb3V0ZUluZm8ucmVfc3JjX2FkZHIsICZBZGRyLT5pcHY2Um91dGVJbmZvLnJlX3NyY19hZGRyLCAxNikgPT0gMCkgJiYKKyAgICAgICAgKEVwLT5pcHY2Um91dGVJbmZvLnJlX2lyZV90eXBlID09IEFkZHItPmlwdjZSb3V0ZUluZm8ucmVfaXJlX3R5cGUpICYmCisgICAgICAgIChFcC0+aXB2NlJvdXRlSW5mby5yZV9vYnBrdCA9PSBBZGRyLT5pcHY2Um91dGVJbmZvLnJlX29icGt0KSAmJgorICAgICAgICAoRXAtPmlwdjZSb3V0ZUluZm8ucmVfaWJwa3QgPT0gQWRkci0+aXB2NlJvdXRlSW5mby5yZV9pYnBrdCkKKyAgICAgICAgKQorICAgICAgICByZXR1cm4gKDApOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuICgxKTsgICAgICAgICAgICAgLyogTm90IGZvdW5kICovCit9CisKKworc3RhdGljIGludCBfbG9hZF92NChuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2xvbmcgKmNvdW50KQoreworICAgIG5ldHNubXBfcm91dGVfZW50cnkgKmVudHJ5OworICAgIG1pYjJfaXBSb3V0ZUVudHJ5X3QgQ3VyZW50cnksIE5leHRlbnRyeTsKKyAgICBpbnQgcmVxX3R5cGU7CisKKyAgICBmb3IgKE5leHRlbnRyeS5pcFJvdXRlRGVzdCA9ICh1X2xvbmcpIC0yLCByZXFfdHlwZSA9IEdFVF9GSVJTVDs7CisgICAgICAgICAgICAgTmV4dGVudHJ5ID0gQ3VyZW50cnksIHJlcV90eXBlID0gR0VUX05FWFQpIHsKKwlpZiAoZ2V0TWlic3RhdChNSUJfSVBfUk9VVEUsICZDdXJlbnRyeSwgc2l6ZW9mKG1pYjJfaXBSb3V0ZUVudHJ5X3QpLAorCQkgICAgICAgcmVxX3R5cGUsICZJUF9DbXBfUm91dGUsICZOZXh0ZW50cnkpICE9IDApCisJICAgIGJyZWFrOworI2lmZGVmIEhBVkVfREVGSU5FRF9JUkVfQ0FDSEUKKwlpZiAoQ3VyZW50cnkuaXBSb3V0ZUluZm8ucmVfaXJlX3R5cGUgJiBJUkVfQ0FDSEUpCisJICAgIGNvbnRpbnVlOworI2VuZGlmIC8qIEhBVkVfREVGSU5FRF9JUkVfQ0FDSEUgKi8KKwlpZiAoQ3VyZW50cnkuaXBSb3V0ZUluZm8ucmVfaXJlX3R5cGUgJiBJUkVfQlJPQURDQVNUKQorCSAgICBjb250aW51ZTsKKwllbnRyeSA9IG5ldHNubXBfYWNjZXNzX3JvdXRlX2VudHJ5X2NyZWF0ZSgpOworCUN1cmVudHJ5LmlwUm91dGVJZkluZGV4Lm9fYnl0ZXNbQ3VyZW50cnkuaXBSb3V0ZUlmSW5kZXgub19sZW5ndGhdID0gJ1wwJzsKKwllbnRyeS0+aWZfaW5kZXggPSBuZXRzbm1wX2FjY2Vzc19pbnRlcmZhY2VfaW5kZXhfZmluZCgKKyAgICAgICAgICAgICAgICBDdXJlbnRyeS5pcFJvdXRlSWZJbmRleC5vX2J5dGVzKTsKKwllbnRyeS0+bnNfcnRfaW5kZXggPSBlbnRyeS0+aWZfaW5kZXg7CisKKwllbnRyeS0+cnRfZGVzdF90eXBlID0gSU5FVEFERFJFU1NUWVBFX0lQVjQ7CisJZW50cnktPnJ0X2Rlc3RfbGVuID0gNDsKKwltZW1jcHkoZW50cnktPnJ0X2Rlc3QsICZDdXJlbnRyeS5pcFJvdXRlRGVzdCwgNCk7CisJbWVtY3B5KCZlbnRyeS0+cnRfbWFzaywgJkN1cmVudHJ5LmlwUm91dGVNYXNrLCA0KTsKKworCWVudHJ5LT5ydF9uZXh0aG9wX3R5cGUgPSBJTkVUQUREUkVTU1RZUEVfSVBWNDsKKwllbnRyeS0+cnRfbmV4dGhvcF9sZW4gPSA0OworCW1lbWNweShlbnRyeS0+cnRfbmV4dGhvcCwgJkN1cmVudHJ5LmlwUm91dGVOZXh0SG9wLCA0KTsKKworCWVudHJ5LT5ydF9wZnhfbGVuID0gbmV0c25tcF9pcGFkZHJlc3NfaXB2NF9wcmVmaXhfbGVuKEN1cmVudHJ5LmlwUm91dGVNYXNrKTsKKwllbnRyeS0+cnRfdHlwZSA9IEN1cmVudHJ5LmlwUm91dGVUeXBlOworCWVudHJ5LT5ydF9wcm90byA9IEN1cmVudHJ5LmlwUm91dGVQcm90bzsKKwllbnRyeS0+cnRfYWdlID0gQ3VyZW50cnkuaXBSb3V0ZUFnZTsKKwllbnRyeS0+cnRfbWV0cmljMSA9IEN1cmVudHJ5LmlwUm91dGVNZXRyaWMxOworCWVudHJ5LT5ydF9tZXRyaWMyID0gQ3VyZW50cnkuaXBSb3V0ZU1ldHJpYzI7CisJZW50cnktPnJ0X21ldHJpYzMgPSBDdXJlbnRyeS5pcFJvdXRlTWV0cmljMzsKKwllbnRyeS0+cnRfbWV0cmljNCA9IEN1cmVudHJ5LmlwUm91dGVNZXRyaWM0OworCisJLyoKKwkgKiBpbnNlcnQgaW50byBjb250YWluZXIKKwkgKi8KKwlpZiAoQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KSA8IDApIHsKKwkgICAgREVCVUdNU0dUTCgoImFjY2Vzczpyb3V0ZTpjb250YWluZXIiLCAiZXJyb3Igd2l0aCByb3V0ZV9lbnRyeTogaW5zZXJ0IGludG8gY29udGFpbmVyIGZhaWxlZC5cbiIpKTsKKwkgICAgbmV0c25tcF9hY2Nlc3Nfcm91dGVfZW50cnlfZnJlZShlbnRyeSk7CisJICAgIGNvbnRpbnVlOworCX0KKwkqY291bnQrKzsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKworc3RhdGljIGludCBfbG9hZF92NihuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2xvbmcgKmNvdW50KQoreworICAgIG5ldHNubXBfcm91dGVfZW50cnkgKmVudHJ5OworICAgIG1pYjJfaXB2NlJvdXRlRW50cnlfdCBDdXJlbnRyeSwgTmV4dGVudHJ5OworICAgIGludCByZXFfdHlwZTsKKworICAgIG1lbXNldCgmTmV4dGVudHJ5LCAwLCBzaXplb2YoTmV4dGVudHJ5KSk7CisgICAgZm9yIChyZXFfdHlwZSA9IEdFVF9GSVJTVDs7CisgICAgICAgICAgICAgTmV4dGVudHJ5ID0gQ3VyZW50cnksIHJlcV90eXBlID0gR0VUX05FWFQpIHsKKwlpZiAoZ2V0TWlic3RhdChNSUJfSVA2X1JPVVRFLCAmQ3VyZW50cnksIHNpemVvZihtaWIyX2lwdjZSb3V0ZUVudHJ5X3QpLAorCQkgICAgICAgcmVxX3R5cGUsICZJUDZfQ21wX1JvdXRlLCAmTmV4dGVudHJ5KSAhPSAwKQorCSAgICBicmVhazsKKyNpZmRlZiBIQVZFX0RFRklORURfSVJFX0NBQ0hFCisJaWYgKEN1cmVudHJ5LmlwdjZSb3V0ZUluZm8ucmVfaXJlX3R5cGUgJiBJUkVfQ0FDSEUpCisJICAgIGNvbnRpbnVlOworI2VuZGlmIC8qIEhBVkVfREVGSU5FRF9JUkVfQ0FDSEUgKi8KKwlpZiAoQ3VyZW50cnkuaXB2NlJvdXRlSW5mby5yZV9pcmVfdHlwZSAmIElSRV9CUk9BRENBU1QpCisJICAgIGNvbnRpbnVlOworCWVudHJ5ID0gbmV0c25tcF9hY2Nlc3Nfcm91dGVfZW50cnlfY3JlYXRlKCk7CisJQ3VyZW50cnkuaXB2NlJvdXRlSWZJbmRleC5vX2J5dGVzW0N1cmVudHJ5LmlwdjZSb3V0ZUlmSW5kZXgub19sZW5ndGhdID0gJ1wwJzsKKwllbnRyeS0+aWZfaW5kZXggPSBuZXRzbm1wX2FjY2Vzc19pbnRlcmZhY2VfaW5kZXhfZmluZCgKKyAgICAgICAgICAgICAgICBDdXJlbnRyeS5pcHY2Um91dGVJZkluZGV4Lm9fYnl0ZXMpOworCWVudHJ5LT5uc19ydF9pbmRleCA9IGVudHJ5LT5pZl9pbmRleDsKKworCWVudHJ5LT5ydF9kZXN0X3R5cGUgPSBJTkVUQUREUkVTU1RZUEVfSVBWNjsKKwllbnRyeS0+cnRfZGVzdF9sZW4gPSAxNjsKKwltZW1jcHkoZW50cnktPnJ0X2Rlc3QsICZDdXJlbnRyeS5pcHY2Um91dGVEZXN0LCAxNik7CisKKwllbnRyeS0+cnRfbmV4dGhvcF90eXBlID0gSU5FVEFERFJFU1NUWVBFX0lQVjY7CisJZW50cnktPnJ0X25leHRob3BfbGVuID0gMTY7CisJbWVtY3B5KGVudHJ5LT5ydF9uZXh0aG9wLCAmQ3VyZW50cnkuaXB2NlJvdXRlTmV4dEhvcCwgMTYpOworCisJZW50cnktPnJ0X3BmeF9sZW4gPSBDdXJlbnRyeS5pcHY2Um91dGVQZnhMZW5ndGg7CisJZW50cnktPnJ0X3R5cGUgPSBDdXJlbnRyeS5pcHY2Um91dGVUeXBlOworCWVudHJ5LT5ydF9wcm90byA9IEN1cmVudHJ5LmlwdjZSb3V0ZVByb3RvY29sOworCWVudHJ5LT5ydF9hZ2UgPSBDdXJlbnRyeS5pcHY2Um91dGVBZ2U7CisJZW50cnktPnJ0X3BvbGljeSA9IGNhbGxvYygzLCBzaXplb2Yob2lkKSk7CisJZW50cnktPnJ0X3BvbGljeV9sZW4gPSAzOworCWVudHJ5LT5ydF9wb2xpY3lbMl0gPSBDdXJlbnRyeS5pcHY2Um91dGVQb2xpY3k7CisJZW50cnktPnJ0X21ldHJpYzEgPSBDdXJlbnRyeS5pcHY2Um91dGVNZXRyaWM7CisJZW50cnktPnJ0X21ldHJpYzIgPSBDdXJlbnRyeS5pcHY2Um91dGVXZWlnaHQ7CisKKwkvKgorCSAqIGluc2VydCBpbnRvIGNvbnRhaW5lcgorCSAqLworCWlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpIDwgMCkgeworCSAgICBERUJVR01TR1RMKCgiYWNjZXNzOnJvdXRlOmNvbnRhaW5lciIsICJlcnJvciB3aXRoIHJvdXRlX2VudHJ5OiBpbnNlcnQgaW50byBjb250YWluZXIgZmFpbGVkLlxuIikpOworCSAgICBuZXRzbm1wX2FjY2Vzc19yb3V0ZV9lbnRyeV9mcmVlKGVudHJ5KTsKKwkgICAgY29udGludWU7CisJfQorCSpjb3VudCsrOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX3N5c2N0bC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfc3lzY3RsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRmOTI2YgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX3N5c2N0bC5jCkBAIC0wLDAgKzEsNDM2IEBACisvKgorICogIEludGVyZmFjZSBNSUIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKKyAqCisgKiAkSWQkCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgIm1pYklJL21pYklJX2NvbW1vbi5oIgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9yb3V0ZS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oPgorI2luY2x1ZGUgPG5ldC9pZl9kbC5oPgorCisjaW5jbHVkZSAiaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfc3lzY3RsLmgiCisjaW5jbHVkZSAiaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9jb25zdGFudHMuaCIKKyNpbmNsdWRlICJpZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmgiCisKK3N0YXRpYyBpbnQgX2xvYWRfaXB2NChuZXRzbm1wX2NvbnRhaW5lciosIGludCopOworc3RhdGljIGludCBfbG9hZF9pcHY2KG5ldHNubXBfY29udGFpbmVyKiwgaW50Kik7CitzdGF0aWMgaW50IF9jcmVhdGVfaXB2NChuZXRzbm1wX3JvdXRlX2VudHJ5ICopOworc3RhdGljIGludCBfY3JlYXRlX2lwdjYobmV0c25tcF9yb3V0ZV9lbnRyeSAqKTsKK3N0YXRpYyBpbnQgX2RlbGV0ZV9pcHY0KG5ldHNubXBfcm91dGVfZW50cnkgKik7CitzdGF0aWMgaW50IF9kZWxldGVfaXB2NihuZXRzbm1wX3JvdXRlX2VudHJ5ICopOworCisjaWYgIWRlZmluZWQoU0FfU0laRSkgJiYgIWRlZmluZWQoUlRfUk9VTkRVUCkKKyNkZWZpbmUgUlRfUk9VTkRVUChhKSAgXAorICAgICAgICAoKGEpID4gMCA/ICgxICsgKCgoYSkgLSAxKSB8IChzaXplb2YobG9uZykgLSAxKSkpIDogc2l6ZW9mKGxvbmcpKQorI2VuZGlmCisjaWZuZGVmIFNBX1NJWkUKKyNkZWZpbmUgU0FfU0laRSh4KSBSVF9ST1VORFVQKCgoc3RydWN0IHNvY2thZGRyICopKHgpKS0+c2FfbGVuKQorI2VuZGlmCisKKy8qKiBhcmNoIHNwZWNpZmljIGxvYWQKKyAqIEBpbnRlcm5hbAorICoKKyAqIEByZXR2YWwgIDAgc3VjY2VzcworICogQHJldHZhbCAtMSBubyBjb250YWluZXIgc3BlY2lmaWVkCisgKiBAcmV0dmFsIC0yIGNvdWxkIG5vdCBhY2Nlc3MgZGF0YSBzb3VyY2UKKyAqLworaW50CituZXRzbm1wX2FjY2Vzc19yb3V0ZV9jb250YWluZXJfYXJjaF9sb2FkKG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsCisJCQkJCSB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIGludCBjb3VudCwgZXJyOworCisgICAgZXJyID0gMDsKKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6cm91dGU6Y29udGFpbmVyIiwgInJvdXRlX2NvbnRhaW5lcl9hcmNoX2xvYWRcbiIpKTsKKworICAgIGlmIChjb250YWluZXIgPT0gTlVMTCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibm8gY29udGFpbmVyIHNwZWNpZmllZC9mb3VuZCBmb3IgYWNjZXNzX3JvdXRlXG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGVyciA9IF9sb2FkX2lwdjQoY29udGFpbmVyLCAmY291bnQpOworICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICBORVRTTk1QX0xPR09OQ0UoKExPR19FUlIsICJfbG9hZF9pcHY0IGZhaWxlZCAlZFxuIiwgZXJyKSk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGlmIChlcnIgIT0gMCB8fCBsb2FkX2ZsYWdzICYgTkVUU05NUF9BQ0NFU1NfUk9VVEVfTE9BRF9JUFY0X09OTFkpCisJcmV0dXJuIGVycjsKKworICAgIGVyciA9IF9sb2FkX2lwdjYoY29udGFpbmVyLCAmY291bnQpOworICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICBORVRTTk1QX0xPR09OQ0UoKExPR19FUlIsICJfbG9hZF9pcHY2IGZhaWxlZCAlZFxuIiwgZXJyKSk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworb3V0OgorICAgIHJldHVybiAoZXJyID09IDAgPyAwIDogLTMpOworfQorCisvKiogYXJjaCBzcGVjaWZpYyBuZXcgcm91dGUgZW50cnkgY3JlYXRpb24KKyAqIEBpbnRlcm5hbAorICoKKyAqIEByZXR2YWwgIDAgc3VjY2VzcworICogQHJldHZhbCAtMSBpbnZhbGlkIGVudHJ5IHNwZWNpZmllZAorICogQHJldHZhbCAtMiBjb3VsZCBub3QgY3JlYXRlIHJvdXRlIGVudHJ5CisgKi8KK2ludAorbmV0c25tcF9hcmNoX3JvdXRlX2NyZWF0ZShuZXRzbm1wX3JvdXRlX2VudHJ5ICplbnRyeSkKK3sKKyAgICBpbnQgZXJyOworCisgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHN3aXRjaCAoZW50cnktPnJ0X2Rlc3RfdHlwZSkgeworICAgIGNhc2UgSU5FVEFERFJFU1NUWVBFX0lQVjQ6CisgICAgICAgIGVyciA9IF9jcmVhdGVfaXB2NChlbnRyeSk7CisgICAgICAgIGJyZWFrOworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICBjYXNlIElORVRBRERSRVNTVFlQRV9JUFY2OgorICAgICAgICBlcnIgPSBfY3JlYXRlX2lwdjYoZW50cnkpOworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIGRlZmF1bHQ6CisgICAgICAgIGVyciA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIChlcnIgPT0gMCA/IDAgOiAtMik7Cit9CisKKy8qKiBhcmNoIHNwZWNpZmljIG5ldyByb3V0ZSBlbnRyeSBkZWxldGlvbgorICogQGludGVybmFsCisgKgorICogQHJldHZhbCAgMCBzdWNjZXNzCisgKiBAcmV0dmFsIC0xIGludmFsaWQgZW50cnkgc3BlY2lmaWVkCisgKiBAcmV0dmFsIC0yIGNvdWxkIG5vdCBkZWxldGUgcm91dGUgZW50cnkKKyAqLworaW50CituZXRzbm1wX2FyY2hfcm91dGVfZGVsZXRlKG5ldHNubXBfcm91dGVfZW50cnkgKmVudHJ5KQoreworICAgIGludCBlcnI7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOnJvdXRlOmNvbnRhaW5lciIsCisgICAgICAgICAgICAgICAgInJvdXRlX2NvbnRhaW5lcl9hcmNoX2RlbGV0ZVxuIikpOworCisgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHN3aXRjaCAoZW50cnktPnJ0X2Rlc3RfdHlwZSkgeworICAgIGNhc2UgSU5FVEFERFJFU1NUWVBFX0lQVjQ6CisgICAgICAgIGVyciA9IF9kZWxldGVfaXB2NChlbnRyeSk7CisgICAgICAgIGJyZWFrOworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICBjYXNlIElORVRBRERSRVNTVFlQRV9JUFY2OgorICAgICAgICBlcnIgPSBfZGVsZXRlX2lwdjYoZW50cnkpOworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIGRlZmF1bHQ6CisgICAgICAgIGVyciA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIChlcnIgPT0gMCA/IDAgOiAtMik7Cit9CisKKyNpZiBkZWZpbmVkKGZyZWVic2Q0KSB8fCBkZWZpbmVkKG5ldGJzZDQpIHx8IGRlZmluZWQob3BlbmJzZCkgfHwgZGVmaW5lZChkYXJ3aW4pCitzdGF0aWMgaW50CitfdHlwZV9mcm9tX2ZsYWdzKGludCBmbGFncykKK3sKKyAgICBpZiAoZmxhZ3MgJiBSVEZfVVApIHsKKyAgICAgICAgaWYgKGZsYWdzICYgUlRGX0JMQUNLSE9MRSkKKyAgICAgICAgICAgIHJldHVybiBJTkVUQ0lEUlJPVVRFVFlQRV9SRUpFQ1Q7CisjaWZkZWYgUlRGX0xPQ0FMCisgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgUlRGX0xPQ0FMKQorICAgICAgICAgICAgcmV0dXJuIElORVRDSURSUk9VVEVUWVBFX0xPQ0FMOworI2VuZGlmCisgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgUlRGX0dBVEVXQVkpCisgICAgICAgICAgICByZXR1cm4gSU5FVENJRFJST1VURVRZUEVfUkVNT1RFOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gSU5FVENJRFJST1VURVRZUEVfT1RIRVI7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisKK3N0YXRpYyBpbnQKK19sb2FkX3JvdXRpbmdfdGFibGVfZnJvbV9zeXNjdGwobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgaW50ICppbmRleCwKKyAgICBpbnQgZmFtaWx5KQoreworICAgIGNoYXIgKmJ1ZiwgKmxpbSwgKm5leHQ7CisgICAgaW50IG1pYls2XTsKKyAgICBzaXplX3QgbmVlZGVkOworICAgIGludCBlcnI7CisgICAgdV9jaGFyIGRlc3RfbGVuLCBkZXN0X3R5cGU7CisgICAgc3RydWN0IHJ0X21zZ2hkciAqcnRtOworCisgICAgYnVmID0gTlVMTDsKKyAgICBlcnIgPSAwOworCisgICAgaWYgKGZhbWlseSA9PSBBRl9JTkVUKSB7CisgICAgICAgIGRlc3RfbGVuID0gNDsKKyAgICAgICAgZGVzdF90eXBlID0gSU5FVEFERFJFU1NUWVBFX0lQVjQ7CisgICAgfSBlbHNlIGlmIChmYW1pbHkgPT0gQUZfSU5FVDYpIHsKKyAgICAgICAgZGVzdF9sZW4gPSAxNjsKKyAgICAgICAgZGVzdF90eXBlID0gSU5FVEFERFJFU1NUWVBFX0lQVjY7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZXJyID0gRUlOVkFMOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBtaWJbMF0gPSBDVExfTkVUOworICAgIG1pYlsxXSA9IFBGX1JPVVRFOworICAgIG1pYlsyXSA9IDA7CisgICAgbWliWzNdID0gZmFtaWx5OworICAgIG1pYls0XSA9IE5FVF9SVF9EVU1QOworICAgIG1pYls1XSA9IDA7CisKKyAgICBpZiAoc3lzY3RsKG1pYiwgKHNpemVvZihtaWIpIC8gc2l6ZW9mKG1pYlswXSkpLCBOVUxMLCAmbmVlZGVkLCBOVUxMLAorICAgICAgICAwKSA9PSAtMSkgeworICAgICAgICBlcnIgPSBlcnJubzsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgaWYgKChidWYgPSBtYWxsb2MobmVlZGVkKSkgPT0gTlVMTCkgeworICAgICAgICBlcnIgPSBFTk9NRU07CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGlmIChzeXNjdGwobWliLCAoc2l6ZW9mKG1pYikgLyBzaXplb2YobWliWzBdKSksIGJ1ZiwgJm5lZWRlZCwgTlVMTCwKKyAgICAgICAgMCkgPT0gLTEpIHsKKyAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGxpbSA9IGJ1ZiArIG5lZWRlZDsKKworICAgIGZvciAobmV4dCA9IGJ1ZjsgbmV4dCA8IGxpbTsgbmV4dCArPSBydG0tPnJ0bV9tc2dsZW4pIHsgICAgCisJc3RydWN0IHNvY2thZGRyICppZl9uYW1lID0gTlVMTCwgKmlmX2FkZHIgPSBOVUxMOworCXN0cnVjdCBzb2NrYWRkciAqZGVzdF9zYSA9IE5VTEwsICpnYXRld2F5X3NhID0gTlVMTCwgKm5ldG1hc2tfc2EgPSBOVUxMOworCW5ldHNubXBfcm91dGVfZW50cnkgKmVudHJ5OworCWNoYXIgKmFkZHJfcHRyOworCisgICAgICAgIHJ0bSA9IChzdHJ1Y3QgcnRfbXNnaGRyKiluZXh0OworCisgICAgICAgIC8qIAorICAgICAgICAgKiBTb21lIGNvZGUgaW4gbmV0c3RhdCBjaGVja3MgZm9yIHRoaXMgKCJuZXRtYXNrcyBkb25lIiBjYXNlKS4KKyAgICAgICAgICogRmlsdGVyIHRoaXMgb3V0IChJIGRvbid0IGtub3cgd2h5IGl0IHNob3VsZCBleGlzdCkuCisgICAgICAgICAqLworICAgICAgICBpZiAocnRtLT5ydG1fYWRkcnMgPT0gUlRBX0RTVCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9hY2Nlc3Nfcm91dGVfZW50cnlfY3JlYXRlKCk7CisgICAgICAgIGlmIChlbnRyeSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0zOworICAgICAgICBtZW1zZXQoZW50cnktPnJ0X2Rlc3QsIDAsIGRlc3RfbGVuKTsKKyAgICAgICAgZW50cnktPnJ0X21hc2sgPSAwOworICAgICAgICBtZW1zZXQoZW50cnktPnJ0X25leHRob3AsIDAsIGRlc3RfbGVuKTsKKworICAgICAgICBhZGRyX3B0ciA9IChjaGFyICopKHJ0bSArIDEpOworCisJaWYgKHJ0bS0+cnRtX2FkZHJzICYgIFJUQV9EU1QpIHsKKwkgICAgZGVzdF9zYSA9IChzdHJ1Y3Qgc29ja2FkZHIgKilhZGRyX3B0cjsKKwkgICAgYWRkcl9wdHIgKz0gU0FfU0laRShkZXN0X3NhKTsKKwl9CisJaWYgKHJ0bS0+cnRtX2FkZHJzICYgIFJUQV9HQVRFV0FZKSB7CisJICAgIGdhdGV3YXlfc2EgPSAoc3RydWN0IHNvY2thZGRyICopYWRkcl9wdHI7CisJICAgIGFkZHJfcHRyICs9IFNBX1NJWkUoZ2F0ZXdheV9zYSk7CisJfQorCWlmIChydG0tPnJ0bV9hZGRycyAmICBSVEFfTkVUTUFTSykgeworCSAgICBuZXRtYXNrX3NhID0gKHN0cnVjdCBzb2NrYWRkciAqKWFkZHJfcHRyOworCSAgICBhZGRyX3B0ciArPSBTQV9TSVpFKG5ldG1hc2tfc2EpOworCX0KKwlpZiAocnRtLT5ydG1fYWRkcnMgJiAgUlRBX0lGUCkgeworCSAgICBpZl9uYW1lID0gKHN0cnVjdCBzb2NrYWRkciAqKWFkZHJfcHRyOworCSAgICBhZGRyX3B0ciArPSBTQV9TSVpFKGlmX25hbWUpOworCX0KKwlpZiAocnRtLT5ydG1fYWRkcnMgJiAgUlRBX0lGQSkgeworCSAgICBpZl9hZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKWFkZHJfcHRyOworCSAgICBhZGRyX3B0ciArPSBTQV9TSVpFKGlmX2FkZHIpOworCX0KKworICAgICAgICBlbnRyeS0+aWZfaW5kZXggPSBydG0tPnJ0bV9pbmRleDsKKworICAgICAgICAvKiBhcmJpdHJhcnkgaW5kZXggKi8KKyAgICAgICAgZW50cnktPm5zX3J0X2luZGV4ID0gKysoKmluZGV4KTsKKworICAgICAgICAvKiBjb3B5IGRlc3QgJiBuZXh0IGhvcCAqLworICAgICAgICBlbnRyeS0+cnRfZGVzdF90eXBlID0gZGVzdF90eXBlOworICAgICAgICBlbnRyeS0+cnRfZGVzdF9sZW4gPSBkZXN0X2xlbjsKKyAgICAgICAgaWYgKHJ0bS0+cnRtX2FkZHJzICYgUlRBX0RTVCkgeworICAgICAgICAgICAgaWYgKGZhbWlseSA9PSBBRl9JTkVUKQorICAgICAgICAgICAgICAgIG1lbWNweShlbnRyeS0+cnRfZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgJigoc3RydWN0IHNvY2thZGRyX2luKilkZXN0X3NhKS0+c2luX2FkZHIsIGRlc3RfbGVuKTsKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgICAgICAgICBpZiAoZmFtaWx5ID09IEFGX0lORVQ2KQorICAgICAgICAgICAgICAgIG1lbWNweShlbnRyeS0+cnRfZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgJigoc3RydWN0IHNvY2thZGRyX2luNiopZGVzdF9zYSktPnNpbjZfYWRkciwgZGVzdF9sZW4pOworI2VuZGlmCisgICAgICAgIH0KKworICAgICAgICBlbnRyeS0+cnRfbmV4dGhvcF90eXBlID0gZGVzdF90eXBlOworICAgICAgICBlbnRyeS0+cnRfbmV4dGhvcF9sZW4gPSBkZXN0X2xlbjsKKyAgICAgICAgaWYgKHJ0bS0+cnRtX2FkZHJzICYgUlRBX0dBVEVXQVkpIHsKKyAgICAgICAgICAgIGlmIChmYW1pbHkgPT0gQUZfSU5FVCkKKyAgICAgICAgICAgICAgICBtZW1jcHkoZW50cnktPnJ0X25leHRob3AsCisgICAgICAgICAgICAgICAgICAgICYoKHN0cnVjdCBzb2NrYWRkcl9pbiopZ2F0ZXdheV9zYSktPnNpbl9hZGRyLCBkZXN0X2xlbik7CisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorICAgICAgICAgICAgaWYgKGZhbWlseSA9PSBBRl9JTkVUNikKKyAgICAgICAgICAgICAgICBtZW1jcHkoZW50cnktPnJ0X25leHRob3AsCisgICAgICAgICAgICAgICAgICAgICYoKHN0cnVjdCBzb2NrYWRkcl9pbjYqKWdhdGV3YXlfc2EpLT5zaW42X2FkZHIsIGRlc3RfbGVuKTsKKyNlbmRpZgorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGZhbWlseSA9PSBBRl9JTkVUKQorICAgICAgICAgICAgICAgIG1lbWNweShlbnRyeS0+cnRfbmV4dGhvcCwKKyAgICAgICAgICAgICAgICAgICAgJigoc3RydWN0IHNvY2thZGRyX2luKilpZl9hZGRyKS0+c2luX2FkZHIsIGRlc3RfbGVuKTsKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgICAgICAgICBpZiAoZmFtaWx5ID09IEFGX0lORVQ2KQorICAgICAgICAgICAgICAgIG1lbWNweShlbnRyeS0+cnRfbmV4dGhvcCwKKyAgICAgICAgICAgICAgICAgICAgJigoc3RydWN0IHNvY2thZGRyX2luNiopaWZfYWRkciktPnNpbjZfYWRkciwgZGVzdF9sZW4pOworI2VuZGlmCisgICAgICAgIH0KKworICAgICAgICBpZiAoZmFtaWx5ID09IEFGX0lORVQpIHsKKwkgICAgaWYgKG5ldG1hc2tfc2EpIHsKKyAgICAgICAgICAgIC8qIGNvdW50IGJpdHMgaW4gbWFzayAqLworCQllbnRyeS0+cnRfcGZ4X2xlbiA9IG5ldHNubXBfaXBhZGRyZXNzX2lwdjRfcHJlZml4X2xlbigKKwkJCSgoc3RydWN0IHNvY2thZGRyX2luICopbmV0bWFza19zYSktPnNpbl9hZGRyLnNfYWRkcik7CisJCW1lbWNweSgmZW50cnktPnJ0X21hc2ssICYoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKW5ldG1hc2tfc2EpLT5zaW5fYWRkciwgNCk7CisJICAgIH0KKwkgICAgZWxzZSB7CisJCWVudHJ5LT5ydF9wZnhfbGVuID0gMzI7CisJICAgIH0KKyAgICAgICAgfQorI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICAgICAgaWYgKGZhbWlseSA9PSBBRl9JTkVUNikgeworCSAgICBpZiAobmV0bWFza19zYSkgeworICAgICAgICAgICAgLyogY291bnQgYml0cyBpbiBtYXNrICovCisJCWVudHJ5LT5ydF9wZnhfbGVuID0gbmV0c25tcF9pcGFkZHJlc3NfaXB2Nl9wcmVmaXhfbGVuKAorCQkJKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopbmV0bWFza19zYSktPnNpbjZfYWRkcik7CisJCW1lbWNweSgmZW50cnktPnJ0X21hc2ssICYoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKiluZXRtYXNrX3NhKS0+c2luNl9hZGRyLCAxNik7CisJICAgIH0KKwkgICAgZWxzZSB7CisJCWVudHJ5LT5ydF9wZnhfbGVuID0gMTI4OworCSAgICB9CisgICAgICAgIH0KKyNlbmRpZgorCisjaWZkZWYgVVNJTkdfSVBfRk9SV0FSRF9NSUJfSU5FVENJRFJST1VURVRBQkxFX0lORVRDSURSUk9VVEVUQUJMRV9NT0RVTEUKKyAgICAgICAgLyoKKyAgICBpbmV0Q2lkclJvdXRlUG9saWN5IE9CSkVDVC1UWVBFIAorICAgICAgICBTWU5UQVggICAgIE9CSkVDVCBJREVOVElGSUVSIAorICAgICAgICBNQVgtQUNDRVNTIG5vdC1hY2Nlc3NpYmxlIAorICAgICAgICBTVEFUVVMgICAgIGN1cnJlbnQgCisgICAgICAgIERFU0NSSVBUSU9OIAorICAgICAgICAgICAgICAgIlRoaXMgb2JqZWN0IGlzIGFuIG9wYXF1ZSBvYmplY3Qgd2l0aG91dCBhbnkgZGVmaW5lZCAKKyAgICAgICAgICAgICAgICBzZW1hbnRpY3MuICBJdHMgcHVycG9zZSBpcyB0byBzZXJ2ZSBhcyBhbiBhZGRpdGlvbmFsIAorICAgICAgICAgICAgICAgIGluZGV4IHdoaWNoIG1heSBkZWxpbmVhdGUgYmV0d2VlbiBtdWx0aXBsZSBlbnRyaWVzIHRvIAorICAgICAgICAgICAgICAgIHRoZSBzYW1lIGRlc3RpbmF0aW9uLiAgVGhlIHZhbHVlIHsgMCAwIH0gc2hhbGwgYmUgdXNlZCAKKyAgICAgICAgICAgICAgICBhcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcyBvYmplY3QuIgorICAgICAgICAqLworCWVudHJ5LT5ydF9wb2xpY3kgPSBjYWxsb2MoMywgc2l6ZW9mKG9pZCkpOworCWVudHJ5LT5ydF9wb2xpY3lbMl0gPSBlbnRyeS0+aWZfaW5kZXg7CisJZW50cnktPnJ0X3BvbGljeV9sZW4gPSBzaXplb2Yob2lkKSozOworI2VuZGlmCisKKyAgICAgICAgZW50cnktPnJ0X3R5cGUgPSBfdHlwZV9mcm9tX2ZsYWdzKHJ0bS0+cnRtX2ZsYWdzKTsKKwllbnRyeS0+cnRfYWdlID0gcnRtLT5ydG1fcm14LnJteF9leHBpcmU7CisJZW50cnktPnJ0X25leHRob3BfYXMgPSAwOworCS8qIGVudHJ5LT5ydF9tZXRyaWMxID0gcnRtLT5ydG1fcm14LnJteF9ob3Bjb3VudDsgKi8KKworICAgICAgICBpZiAocnRtLT5ydG1fZmxhZ3MgJiBSVEZfRFlOQU1JQykKKyAgICAgICAgICAgIGVudHJ5LT5ydF9wcm90byA9IElBTkFJUFJPVVRFUFJPVE9DT0xfSUNNUDsKKyAgICAgICAgZWxzZSBpZiAocnRtLT5ydG1fZmxhZ3MgJiBSVEZfU1RBVElDKQorICAgICAgICAgICAgZW50cnktPnJ0X3Byb3RvID0gSUFOQUlQUk9VVEVQUk9UT0NPTF9ORVRNR01UOworI2lmZGVmIFJURl9MT0NBTAorICAgICAgICBlbHNlIGlmIChydG0tPnJ0bV9mbGFncyAmIFJURl9MT0NBTCkKKyAgICAgICAgICAgIGVudHJ5LT5ydF9wcm90byA9IElBTkFJUFJPVVRFUFJPVE9DT0xfTE9DQUw7CisjZW5kaWYKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW50cnktPnJ0X3Byb3RvID0gSUFOQUlQUk9VVEVQUk9UT0NPTF9PVEhFUjsKKworICAgICAgICBpZiAoQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KSA8IDApIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6cm91dGU6Y29udGFpbmVyIiwKKyAgICAgICAgICAgICAgICAiZXJyb3Igd2l0aCByb3V0ZV9lbnRyeTogaW5zZXJ0IGludG8gY29udGFpbmVyIGZhaWxlZC5cbiIpKTsKKyAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX3JvdXRlX2VudHJ5X2ZyZWUoZW50cnkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICB9CisKK291dDoKKyAgICBmcmVlKGJ1Zik7CisKKyAgICByZXR1cm4gZXJyOworfQorCisvKioKKyAqIG5ldHNubXBfYWNjZXNzX3JvdXRlX2NvbnRhaW5lcl9hcmNoX2xvYWQqIGZ1bmN0aW9ucy4KKyAqLworc3RhdGljIGludAorX2xvYWRfaXB2NChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLCBpbnQgKmluZGV4KQoreworCisgICAgREVCVUdNU0dUTCgoImFjY2Vzczpyb3V0ZTpjb250YWluZXIiLAorICAgICAgICAgICAgICAgICJyb3V0ZV9jb250YWluZXJfYXJjaF9sb2FkIGlwdjRcbiIpKTsKKyAgICByZXR1cm4gX2xvYWRfcm91dGluZ190YWJsZV9mcm9tX3N5c2N0bChjb250YWluZXIsIGluZGV4LCBBRl9JTkVUKTsKK30KKworc3RhdGljIGludAorX2xvYWRfaXB2NihuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLCBpbnQgKmluZGV4KQoreworCisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6cm91dGU6Y29udGFpbmVyIiwKKyAgICAgICAgICAgICAgICAicm91dGVfY29udGFpbmVyX2FyY2hfbG9hZCBpcHY2XG4iKSk7CisgICAgcmV0dXJuIF9sb2FkX3JvdXRpbmdfdGFibGVfZnJvbV9zeXNjdGwoY29udGFpbmVyLCBpbmRleCwgQUZfSU5FVDYpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCisvKioKKyAqIG5ldHNubXBfYWNjZXNzX3JvdXRlX2NyZWF0ZSogZnVuY3Rpb25zLgorICoKKyAqIFRPRE86IGFkZCBsb2dpYyBzaW1pbGFyIHRvIG5ld3JvdXRlKC4uKSBpbiBzYmluL3JvdXRlL3JvdXRlLmMgLgorICovCitzdGF0aWMgaW50CitfY3JlYXRlX2lwdjQobmV0c25tcF9yb3V0ZV9lbnRyeSAqZW50cnkpCit7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorX2NyZWF0ZV9pcHY2KG5ldHNubXBfcm91dGVfZW50cnkgKmVudHJ5KQoreworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qKgorICogbmV0c25tcF9hY2Nlc3Nfcm91dGVfZGVsZXRlKiBmdW5jdGlvbnMuCisgKgorICogVE9ETzogYWRkIGxvZ2ljIHNpbWlsYXIgdG8gbmV3cm91dGUoLi4pIGluIHNiaW4vcm91dGUvcm91dGUuYyAuCisgKi8KK3N0YXRpYyBpbnQKK19kZWxldGVfaXB2NChuZXRzbm1wX3JvdXRlX2VudHJ5ICplbnRyeSkKK3sKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitfZGVsZXRlX2lwdjYobmV0c25tcF9yb3V0ZV9lbnRyeSAqZW50cnkpCit7CisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorCisjZW5kaWYKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZiAvKiBkZWZpbmVkKGZyZWVic2Q3KSB8fCBkZWZpbmVkKG5ldGJzZCkgfHwgZGVmaW5lZChvcGVuYnNkKSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfc3lzY3RsLmggYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9zeXNjdGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWVjY2M3Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfc3lzY3RsLmgKQEAgLTAsMCArMSw5IEBACisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2luY2x1ZGUgPG5ldC9pZi5oPgorI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGlmYWRkcnMuaD4KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuYwppbmRleCA4ZGVmMWQ5Li4wZjAxM2VhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5jCkBAIC0xNCw2ICsxNCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC0yNiw2ICsyNyw5IEBACiAKICNpbmNsdWRlICJpbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGluZXRDaWRyUm91dGVUYWJsZV9jb250YWluZXJfZ2V0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9zaXplKQorCiBjb25zdCBvaWQgICAgICAgaW5ldENpZHJSb3V0ZVRhYmxlX29pZFtdID0geyBJTkVUQ0lEUlJPVVRFVEFCTEVfT0lEIH07CiBjb25zdCBpbnQgICAgICAgaW5ldENpZHJSb3V0ZVRhYmxlX29pZF9zaXplID0KIE9JRF9MRU5HVEgoaW5ldENpZHJSb3V0ZVRhYmxlX29pZCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYwppbmRleCA1NTljMGNhLi41ZGY0NmI2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ2LDYgKzQ3LDE2IEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW5ldENpZHJSb3V0ZVRhYmxlX2V4dGVybmFsX2FjY2VzcywgbGlibmV0c25tcG1pYnMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyb3dfbWVyZ2UpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShiYWJ5X3N0ZXBzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfY29udGFpbmVyX3Jvd19pbnNlcnQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpbmV0Q2lkclJvdXRlVGFibGVfY29udGFpbmVyX3NpemUsIGluZXRDaWRyUm91dGVUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW5ldENpZHJSb3V0ZVRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQsIGluZXRDaWRyUm91dGVUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW5ldENpZHJSb3V0ZVRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQsIGluZXRDaWRyUm91dGVUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9nZXQsIGluZXRDaWRyUm91dGVUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioKQEAgLTgyLDE5ICs5MywyMyBAQAogICAgICAgICAgICAgICAgIF9pbmV0Q2lkclJvdXRlVGFibGVfY29udGFpbmVyX3NodXRkb3duKGluZXRDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2VfY3R4ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9jdHgpOwogCi0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTkVUQ0lEUlJPVVRFVEFCTEVfQ09OVEFJTkVSX0dFVAogbmV0c25tcF9jb250YWluZXIgKgogaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaW5ldENpZHJSb3V0ZVRhYmxlX2lmX2N0eC5jb250YWluZXI7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTkVUQ0lEUlJPVVRFVEFCTEVfQ09OVEFJTkVSX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVENJRFJST1VURVRBQkxFX1JFR0lTVFJBVElPTl9HRVQKIGluZXRDaWRyUm91dGVUYWJsZV9yZWdpc3RyYXRpb24gKgogaW5ldENpZHJSb3V0ZVRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaW5ldENpZHJSb3V0ZVRhYmxlX2lmX2N0eC51c2VyX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lORVRDSURSUk9VVEVUQUJMRV9SRUdJU1RSQVRJT05fR0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTkVUQ0lEUlJPVVRFVEFCTEVfUkVHSVNUUkFUSU9OX1NFVAogaW5ldENpZHJSb3V0ZVRhYmxlX3JlZ2lzdHJhdGlvbiAqCiBpbmV0Q2lkclJvdXRlVGFibGVfcmVnaXN0cmF0aW9uX3NldChpbmV0Q2lkclJvdXRlVGFibGVfcmVnaXN0cmF0aW9uICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3JlZykKQEAgLTEwNCwxMiArMTE5LDE1IEBACiAgICAgaW5ldENpZHJSb3V0ZVRhYmxlX2lmX2N0eC51c2VyX2N0eCA9IG5ld3JlZzsKICAgICByZXR1cm4gb2xkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVENJRFJST1VURVRBQkxFX1JFR0lTVFJBVElPTl9TRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lORVRDSURSUk9VVEVUQUJMRV9DT05UQUlORVJfU0laRQogaW50CiBpbmV0Q2lkclJvdXRlVGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKIHsKICAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUoaW5ldENpZHJSb3V0ZVRhYmxlX2lmX2N0eC5jb250YWluZXIpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVENJRFJST1VURVRBQkxFX0NPTlRBSU5FUl9TSVpFICovCiAKIHVfaW50CiBpbmV0Q2lkclJvdXRlVGFibGVfZGlydHlfZ2V0KHZvaWQpCkBAIC0xNDAsNyArMTU4LDcgQEAKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2luZXRDaWRyUm91dGVUYWJsZV9wb3N0X3JlcXVlc3Q7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pbmV0Q2lkclJvdXRlVGFibGVfb2JqZWN0X2xvb2t1cDsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2luZXRDaWRyUm91dGVUYWJsZV9nZXRfdmFsdWVzOwotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pbmV0Q2lkclJvdXRlVGFibGVfY2hlY2tfb2JqZWN0czsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2luZXRDaWRyUm91dGVUYWJsZV91bmRvX3NldHVwOwogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaW5ldENpZHJSb3V0ZVRhYmxlX3NldF92YWx1ZXM7CkBAIC0xNTAsNyArMTY4LDcgQEAKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2luZXRDaWRyUm91dGVUYWJsZV91bmRvX2NvbW1pdDsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2luZXRDaWRyUm91dGVUYWJsZV9pcnJldmVyc2libGVfY29tbWl0Owogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaW5ldENpZHJSb3V0ZVRhYmxlX2NoZWNrX2RlcGVuZGVuY2llczsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogTkVUU05NUF9TVEFUSUNfSU5MSU5FIGludAogICAgICAgICAgICAgICAgIF9pbmV0Q2lkclJvdXRlVGFibGVfY2hlY2tfaW5kZXhlcyhpbmV0Q2lkclJvdXRlVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpOwpAQCAtMjM3LDcgKzI1NSw3IEBACiAgICAgICAgIF9tZmRfaW5ldENpZHJSb3V0ZVRhYmxlX3Bvc3RfcmVxdWVzdDsKIAogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKICAgICAvKgogICAgICAqIFJFUVVJUkVEIHdyYXBwZXJzIGZvciBzZXQgcmVxdWVzdCBoYW5kbGluZwogICAgICAqLwpAQCAtMjYyLDcgKzI4MCw3IEBACiAgICAgICovCiAgICAgYWNjZXNzX211bHRpcGxleGVyLT5jb25zaXN0ZW5jeV9jaGVja3MgPQogICAgICAgICBfbWZkX2luZXRDaWRyUm91dGVUYWJsZV9jaGVja19kZXBlbmRlbmNpZXM7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAqCkBAIC0yOTgsNyArMzE2LDcgQEAKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOwogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCkKQEAgLTMyMSw3ICszMzksNyBAQAogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NPTU1JVDsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOwpAQCAtMTIxMCw2ICsxMjI4LDggQEAKICAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpCiAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0NSRUFUSU9OOwogCisgICAgLyogTU9SRSBDSEVDS0lORyBSRVFVSVJFRCAqLworCiAgICAgLyoKICAgICAgKiAoSU5ERVgpIGluZXRDaWRyUm91dGVEZXN0KDIpL0luZXRBZGRyZXNzL0FTTl9PQ1RFVF9TVFIvY2hhcihjaGFyKS8vTC9hL3cvZS9SL2QvaCAKICAgICAgKi8KQEAgLTEzMDgsNyArMTMyOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2N0eCwgcm93cmVxX2N0eCk7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pbmV0Q2lkclJvdXRlVGFibGVfY2hlY2tfaW5kZXhlcyAqLwogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIFNFVCBwcm9jZXNzaW5nCkBAIC0yMTkyLDcgKzIyMTIsNyBAQAogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaW5ldENpZHJSb3V0ZVRhYmxlX2lycmV2ZXJzaWJsZV9jb21taXQgKi8KLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtMjMyOCw5ICsyMzQ4LDkgQEAKIAogICAgIGlmX2N0eC0+Y29udGFpbmVyLT5jb250YWluZXJfbmFtZSA9IHN0cmR1cCgiaW5ldENpZHJSb3V0ZVRhYmxlIik7CiAKLSAgICAvKiBzZXQgYWxsb3cgZHVwbGljYXRlcyB0aGlzIG1ha2VzIGluc2VydCBPKDEpICovCi0gICAgbmV0c25tcF9iaW5hcnlfYXJyYXlfb3B0aW9uc19zZXQoaWZfY3R4LT5jb250YWluZXIsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEFJTkVSX0tFWV9BTExPV19EVVBMSUNBVEVTKTsKKyAgIC8qIHNldCBhbGxvdyBkdXBsaWNhdGVzIHRoaXMgbWFrZXMgaW5zZXJ0IE8oMSkgKi8KKyAgIG5ldHNubXBfYmluYXJ5X2FycmF5X29wdGlvbnNfc2V0KGlmX2N0eC0+Y29udGFpbmVyLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEFJTkVSX0tFWV9BTExPV19EVVBMSUNBVEVTKTsKIAogICAgIGlmIChOVUxMICE9IGlmX2N0eC0+Y2FjaGUpCiAgICAgICAgIGlmX2N0eC0+Y2FjaGUtPm1hZ2ljID0gKHZvaWQgKikgaWZfY3R4LT5jb250YWluZXI7CkBAIC0yMzUzLDYgKzIzNzMsNyBAQAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTkVUQ0lEUlJPVVRFVEFCTEVfRVhURVJOQUxfQUNDRVNTCiBpbmV0Q2lkclJvdXRlVGFibGVfcm93cmVxX2N0eCAqCiBpbmV0Q2lkclJvdXRlVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KGluZXRDaWRyUm91dGVUYWJsZV9taWJfaW5kZXggKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KQpAQCAtMjM4MCwzICsyNDAxLDQgQEAKIAogICAgIHJldHVybiByb3dyZXFfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVENJRFJST1VURVRBQkxFX0VYVEVSTkFMX0FDQ0VTUyAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jCmluZGV4IGEzMWY0Y2MuLjQ1Zjg0ODMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ2LDYgKzQ3LDE3IEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBDaWRyUm91dGVUYWJsZV9leHRlcm5hbF9hY2Nlc3MsIGxpYm5ldHNubXBtaWJzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2NvbnRhaW5lcl9yb3dfaW5zZXJ0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKQorCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9zaXplLCBpcENpZHJSb3V0ZVRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcENpZHJSb3V0ZVRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQsIGlwQ2lkclJvdXRlVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwQ2lkclJvdXRlVGFibGVfcmVnaXN0cmF0aW9uX2dldCwgaXBDaWRyUm91dGVUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBDaWRyUm91dGVUYWJsZV9jb250YWluZXJfZ2V0LCBpcENpZHJSb3V0ZVRhYmxlX2V4dGVybmFsX2FjY2VzcykKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpAQCAtODEsMTkgKzkzLDIzIEBACiAgICAgICAgICAgICAgICAgX2lwQ2lkclJvdXRlVGFibGVfY29udGFpbmVyX3NodXRkb3duKGlwQ2lkclJvdXRlVGFibGVfaW50ZXJmYWNlX2N0eCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmX2N0eCk7CiAKLQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQ0lEUlJPVVRFVEFCTEVfQ09OVEFJTkVSX0dFVAogbmV0c25tcF9jb250YWluZXIgKgogaXBDaWRyUm91dGVUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIGlwQ2lkclJvdXRlVGFibGVfaWZfY3R4LmNvbnRhaW5lcjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQ0lEUlJPVVRFVEFCTEVfQ09OVEFJTkVSX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBDSURSUk9VVEVUQUJMRV9SRUdJU1RSQVRJT05fR0VUCiBpcENpZHJSb3V0ZVRhYmxlX3JlZ2lzdHJhdGlvbiAqCiBpcENpZHJSb3V0ZVRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaXBDaWRyUm91dGVUYWJsZV9pZl9jdHgudXNlcl9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUENJRFJST1VURVRBQkxFX1JFR0lTVFJBVElPTl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQ0lEUlJPVVRFVEFCTEVfUkVHSVNUUkFUSU9OX1NFVAogaXBDaWRyUm91dGVUYWJsZV9yZWdpc3RyYXRpb24gKgogaXBDaWRyUm91dGVUYWJsZV9yZWdpc3RyYXRpb25fc2V0KGlwQ2lkclJvdXRlVGFibGVfcmVnaXN0cmF0aW9uICogbmV3cmVnKQogewpAQCAtMTAxLDEyICsxMTcsMTUgQEAKICAgICBpcENpZHJSb3V0ZVRhYmxlX2lmX2N0eC51c2VyX2N0eCA9IG5ld3JlZzsKICAgICByZXR1cm4gb2xkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBDSURSUk9VVEVUQUJMRV9SRUdJU1RSQVRJT05fU0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUENJRFJST1VURVRBQkxFX0NPTlRBSU5FUl9TSVpFCiBpbnQKIGlwQ2lkclJvdXRlVGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKIHsKICAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUoaXBDaWRyUm91dGVUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQ0lEUlJPVVRFVEFCTEVfQ09OVEFJTkVSX1NJWkUgKi8KIAogdV9pbnQKIGlwQ2lkclJvdXRlVGFibGVfZGlydHlfZ2V0KHZvaWQpCkBAIC0xMzAsNyArMTQ5LDcgQEAKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lwQ2lkclJvdXRlVGFibGVfcG9zdF9yZXF1ZXN0Owogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXBDaWRyUm91dGVUYWJsZV9vYmplY3RfbG9va3VwOwogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXBDaWRyUm91dGVUYWJsZV9nZXRfdmFsdWVzOwotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrX29iamVjdHM7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcENpZHJSb3V0ZVRhYmxlX3VuZG9fc2V0dXA7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcENpZHJSb3V0ZVRhYmxlX3NldF92YWx1ZXM7CkBAIC0xNDQsNyArMTYzLDcgQEAKICAgICAgICAgICAgICAgICBfaXBDaWRyUm91dGVUYWJsZV91bmRvX2NvbHVtbihpcENpZHJSb3V0ZVRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29sdW1uKTsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogTkVUU05NUF9TVEFUSUNfSU5MSU5FIGludAogICAgICAgICAgICAgICAgIF9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrX2luZGV4ZXMoaXBDaWRyUm91dGVUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCk7CkBAIC0yMjcsNyArMjQ2LDcgQEAKICAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCA9IF9tZmRfaXBDaWRyUm91dGVUYWJsZV9wb3N0X3JlcXVlc3Q7CiAKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgLyoKICAgICAgKiBSRVFVSVJFRCB3cmFwcGVycyBmb3Igc2V0IHJlcXVlc3QgaGFuZGxpbmcKICAgICAgKi8KQEAgLTI0NSw3ICsyNjQsNyBAQAogICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQgPSBfbWZkX2lwQ2lkclJvdXRlVGFibGVfdW5kb19jb21taXQ7CiAgICAgYWNjZXNzX211bHRpcGxleGVyLT5pcnJldmVyc2libGVfY29tbWl0ID0KICAgICAgICAgX21mZF9pcENpZHJSb3V0ZVRhYmxlX2lycmV2ZXJzaWJsZV9jb21taXQ7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAqCkBAIC0yNzgsNyArMjk3LDcgQEAKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOwogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCkKQEAgLTMwMSw3ICszMjAsNyBAQAogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NPTU1JVDsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOwpAQCAtMTE1MSw3ICsxMTcwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2N0eCwgcm93cmVxX2N0eCk7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrX2luZGV4ZXMgKi8KIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBTRVQgcHJvY2Vzc2luZwpAQCAtMjE0NSw3ICsyMTY0LDcgQEAKIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lwQ2lkclJvdXRlVGFibGVfaXJyZXZlcnNpYmxlX2NvbW1pdCAqLwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0yMzA0LDYgKzIzMjMsNyBAQAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXBDaWRyUm91dGVUYWJsZV9jb250YWluZXJfc2h1dGRvd24gKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBDSURSUk9VVEVUQUJMRV9FWFRFUk5BTF9BQ0NFU1MKIGlwQ2lkclJvdXRlVGFibGVfcm93cmVxX2N0eCAqCiBpcENpZHJSb3V0ZVRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChpcENpZHJSb3V0ZVRhYmxlX21pYl9pbmRleCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KQpAQCAtMjMzMSwzICsyMzUxLDQgQEAKIAogICAgIHJldHVybiByb3dyZXFfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBDSURSUk9VVEVUQUJMRV9FWFRFUk5BTF9BQ0NFU1MgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnAuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnAuaAppbmRleCBlOWMzNzFiLi42NDhjYjI4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycC5oCkBAIC0xOCw4ICsxOCwxMiBAQAogICogICAgYmUgaGFuZGxlZCBpbiB0aGUgKl9ocHV4LmggaGVhZGVyIGZpbGUuCiAgKi8KIGNvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfY29tbW9uKQotI2lmIGRlZmluZWQoIGxpbnV4ICkKKyNpZiBkZWZpbmVkKCBIQVZFX0xJTlVYX1JUTkVUTElOS19IICkKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbmV0bGluaykKKyNlbGlmIGRlZmluZWQoIGxpbnV4ICkKIGNvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXgpCisjZWxpZiBkZWZpbmVkKCBmcmVlYnNkNyApIHx8IGRlZmluZWQgKCBuZXRic2Q1ICkgfHwgZGVmaW5lZCggb3BlbmJzZDQgKSB8fCBkZWZpbmVkKCBkcmFnb25mbHkgKSB8fCBkZWZpbmVkKCBkYXJ3aW4gKQorY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL2FycF9zeXNjdGwpCiAjZWxzZQogLyoKICAqIGNvdWxkbid0IGRldGVybWluZSB0aGUgY29ycmVjdCBmaWxlIQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9jb21tb24uYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfY29tbW9uLmMKaW5kZXggNWM3ZDZkNS4uMjk1ODcxOSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9jb21tb24uYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2NvbW1vbi5jCkBAIC0xMSwxMDIgKzExLDYgQEAKIAogLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qCi0gKiBsb2NhbCBzdGF0aWMgcHJvdG90eXBlcwotICovCi1zdGF0aWMgdm9pZCBfYWNjZXNzX2FycF9lbnRyeV9yZWxlYXNlKG5ldHNubXBfYXJwX2VudHJ5ICogZW50cnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVudXNlZCk7Ci0KLS8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKgotICogZXh0ZXJuYWwgcGVyLWFyY2hpdGVjdHVyZSBmdW5jdGlvbnMgcHJvdG90eXBlcwotICoKLSAqIFRoZXNlIHNob3VsZG4ndCBiZSBjYWxsZWQgYnkgdGhlIGdlbmVyYWwgcHVibGljLCBzbyB0aGV5IGFyZW4ndCBpbgotICogdGhlIGhlYWRlciBmaWxlLgotICovCi1leHRlcm4gaW50Ci1uZXRzbm1wX2FjY2Vzc19hcnBfY29udGFpbmVyX2FyY2hfbG9hZChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncyk7Ci0KLQotLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qCi0gKiBjb250YWluZXIgZnVuY3Rpb25zCi0gKi8KLS8qKgotICovCi1uZXRzbm1wX2NvbnRhaW5lciAqCi1uZXRzbm1wX2FjY2Vzc19hcnBfY29udGFpbmVyX2luaXQodV9pbnQgZmxhZ3MpCi17Ci0gICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcjE7Ci0KLSAgICBERUJVR01TR1RMKCgiYWNjZXNzOmFycDpjb250YWluZXIiLCAiaW5pdFxuIikpOwotCi0gICAgLyoKLSAgICAgKiBjcmVhdGUgdGhlIGNvbnRhaW5lcnMuIG9uZSBpbmRleGVkIGJ5IGlmSW5kZXgsIHRoZSBvdGhlcgotICAgICAqIGluZGV4ZWQgYnkgaWZOYW1lLgotICAgICAqLwotICAgIGNvbnRhaW5lcjEgPSBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJhY2Nlc3NfYXJwOnRhYmxlX2NvbnRhaW5lciIpOwotICAgIGlmIChOVUxMID09IGNvbnRhaW5lcjEpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBjb250YWluZXIxOwotfQotCi0vKioKLSAqIEByZXR2YWwgTlVMTCAgZXJyb3IKLSAqIEByZXR2YWwgIU5VTEwgcG9pbnRlciB0byBjb250YWluZXIKLSAqLwotbmV0c25tcF9jb250YWluZXIqCi1uZXRzbm1wX2FjY2Vzc19hcnBfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgdV9pbnQgbG9hZF9mbGFncykKLXsKLSAgICBpbnQgcmM7Ci0KLSAgICBERUJVR01TR1RMKCgiYWNjZXNzOmFycDpjb250YWluZXIiLCAibG9hZFxuIikpOwotCi0gICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7Ci0gICAgICAgIGNvbnRhaW5lciA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImFjY2VzczphcnA6dGFibGVfY29udGFpbmVyIik7Ci0gICAgICAgIGlmIChjb250YWluZXIpCi0gICAgICAgICAgICBjb250YWluZXItPmNvbnRhaW5lcl9uYW1lID0gc3RyZHVwKCJhcnAiKTsKLSAgICB9Ci0gICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsICJubyBjb250YWluZXIgc3BlY2lmaWVkL2ZvdW5kIGZvciBhY2Nlc3NfYXJwXG4iKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgcmMgPSAgbmV0c25tcF9hY2Nlc3NfYXJwX2NvbnRhaW5lcl9hcmNoX2xvYWQoY29udGFpbmVyLCBsb2FkX2ZsYWdzKTsKLSAgICBpZiAoMCAhPSByYykgewotICAgICAgICBuZXRzbm1wX2FjY2Vzc19hcnBfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9BQ0NFU1NfQVJQX0ZSRUVfTk9GTEFHUyk7Ci0gICAgICAgIGNvbnRhaW5lciA9IE5VTEw7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNvbnRhaW5lcjsKLX0KLQotdm9pZAotbmV0c25tcF9hY2Nlc3NfYXJwX2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIHVfaW50IGZyZWVfZmxhZ3MpCi17Ci0gICAgREVCVUdNU0dUTCgoImFjY2VzczphcnA6Y29udGFpbmVyIiwgImZyZWVcbiIpKTsKLQotICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgewotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiaW52YWxpZCBjb250YWluZXIgZm9yIG5ldHNubXBfYWNjZXNzX2FycF9mcmVlXG4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmKCEgKGZyZWVfZmxhZ3MgJiBORVRTTk1QX0FDQ0VTU19BUlBfRlJFRV9ET05UX0NMRUFSKSkgewotICAgICAgICAvKgotICAgICAgICAgKiBmcmVlIGFsbCBpdGVtcy4KLSAgICAgICAgICovCi0gICAgICAgIENPTlRBSU5FUl9DTEVBUihjb250YWluZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMqKV9hY2Nlc3NfYXJwX2VudHJ5X3JlbGVhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICB9Ci0KLSAgICBpZighIChmcmVlX2ZsYWdzICYgTkVUU05NUF9BQ0NFU1NfQVJQX0ZSRUVfS0VFUF9DT05UQUlORVIpKQotICAgICAgICBDT05UQUlORVJfRlJFRShjb250YWluZXIpOwotfQotCi0vKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLyoKICAqIGFycF9lbnRyeSBmdW5jdGlvbnMKICAqLwogLyoqCkBAIC0xNDAsMTQgKzQ0LDYgQEAKICAqLwogCiAvKioKLSAqLwotdm9pZAotX2FjY2Vzc19hcnBfZW50cnlfcmVsZWFzZShuZXRzbm1wX2FycF9lbnRyeSAqIGVudHJ5LCB2b2lkICpjb250ZXh0KQotewotICAgIG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV9mcmVlKGVudHJ5KTsKLX0KLQotLyoqCiAgKiBVcGRhdGUgZ2l2ZW4gZW50cnkgd2l0aCBuZXcgZGF0YS4gQ2FsY3VsYXRlIG5ldyBhcnBfbGFzdF91cGRhdGVkLCBpZiBhbnkKICAqIGZpZWxkIGlzIGNoYW5nZWQuCiAgKi8KQEAgLTE1Niw2ICs1Miw3IEBACiB7CiAgICAgaW50IG1vZGlmaWVkID0gMDsKIAorICAgIGVudHJ5LT5nZW5lcmF0aW9uID0gbmV3X2RhdGEtPmdlbmVyYXRpb247CiAgICAgaWYgKGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbiAhPSBuZXdfZGF0YS0+YXJwX2lwYWRkcmVzc19sZW4KICAgICAgICAgICAgIHx8IG1lbWNtcChlbnRyeS0+YXJwX2lwYWRkcmVzcywgbmV3X2RhdGEtPmFycF9pcGFkZHJlc3MsIGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbikgIT0gMCApIHsKICAgICAgICAgbW9kaWZpZWQgPSAxOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jCmluZGV4IDRkZGFmZmQuLmEyZmE0OWEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmMKQEAgLTE0LDY4ICsxNCw3NCBAQAogI2luY2x1ZGUgPGFycGEvaW5ldC5oPgogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiAjaW5jbHVkZSA8YXNtL3R5cGVzLmg+Ci0jaWZkZWYgSEFWRV9MSU5VWF9SVE5FVExJTktfSAotI2luY2x1ZGUgPGxpbnV4L3J0bmV0bGluay5oPgotI2VuZGlmCi0jaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgotI2RlZmluZSBOSVA2KGFkZHIpIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNlswXSksIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNlsxXSksIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNlsyXSksIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNlszXSksIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNls0XSksIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNls1XSksIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNls2XSksIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNls3XSkKLSNkZWZpbmUgTklQNl9GTVQgIiUwNHg6JTA0eDolMDR4OiUwNHg6JTA0eDolMDR4OiUwNHg6JTA0eCIKLSNlbmRpZgogCi1pbnQgX2xvYWRfdjQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgaW50IGlkeF9vZmZzZXQpOwotI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKLXN0YXRpYyBpbnQgX2xvYWRfdjYobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgaW50IGlkeF9vZmZzZXQpOwotI2VuZGlmCi0jaWZkZWYgSEFWRV9MSU5VWF9SVE5FVExJTktfSAotaW50IGdldF90cmFuc2xhdGlvbl90YWJsZV9pbmZvIChpbnQgc2QsIGludCAqc3RhdHVzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmZiwgc2l6ZV90IHNpemUpOwotaW50IGZpbGx1cF9lbnRyeV9pbmZvKG5ldHNubXBfYXJwX2VudHJ5ICplbnRyeSwKLSAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgbmxtc2doZHIgKm5sbXApOwotI2VuZGlmCi0vKioKLSAqLwotaW50Ci1uZXRzbm1wX2FjY2Vzc19hcnBfY29udGFpbmVyX2FyY2hfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyKQorc3RhdGljIGludCBfbG9hZF92NChuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2Vzcyk7CisKK25ldHNubXBfYXJwX2FjY2VzcyAqCituZXRzbm1wX2FjY2Vzc19hcnBfY3JlYXRlKHVfaW50IGluaXRfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBBY2Nlc3NBcnBVcGRhdGUgKnVwZGF0ZV9ob29rLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wQWNjZXNzQXJwR0MgKmdjX2hvb2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqY2FjaGVfdGltZW91dCwgaW50ICpjYWNoZV9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY2FjaGVfZXhwaXJlZCkKIHsKLSAgICBpbnQgcmMgPSAwLCBpZHhfb2Zmc2V0ID0gMDsKKyAgICBuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzczsKIAotICAgIHJjID0gX2xvYWRfdjQoY29udGFpbmVyLCBpZHhfb2Zmc2V0KTsKLSAgICBpZihyYyA8IDApIHsKLSAgICAgICAgdV9pbnQgZmxhZ3MgPSBORVRTTk1QX0FDQ0VTU19BUlBfRlJFRV9LRUVQX0NPTlRBSU5FUjsKLSAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lciwgZmxhZ3MpOworICAgIGFjY2VzcyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9hcnBfYWNjZXNzKTsKKyAgICBpZiAoTlVMTCA9PSBhY2Nlc3MpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwibWFsbG9jIGVycm9yIGluIG5ldHNubXBfYWNjZXNzX2FycF9jcmVhdGVcbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSNpZiBkZWZpbmVkIChORVRTTk1QX0VOQUJMRV9JUFY2KQotICAgIGlkeF9vZmZzZXQgPSAocmMgPCAwKSA/IDAgOiByYzsKKyAgICBhY2Nlc3MtPmFyY2hfbWFnaWMgPSBOVUxMOworICAgIGFjY2Vzcy0+bWFnaWMgPSBOVUxMOworICAgIGFjY2Vzcy0+dXBkYXRlX2hvb2sgPSB1cGRhdGVfaG9vazsKKyAgICBhY2Nlc3MtPmdjX2hvb2sgPSBnY19ob29rOworICAgIGFjY2Vzcy0+c3luY2hyb25pemVkID0gMDsKIAotICAgIHJjID0gX2xvYWRfdjYoY29udGFpbmVyLCBpZHhfb2Zmc2V0KTsKLSAgICBpZihyYyA8IDApIHsKLSAgICAgICAgdV9pbnQgZmxhZ3MgPSBORVRTTk1QX0FDQ0VTU19BUlBfRlJFRV9LRUVQX0NPTlRBSU5FUjsKLSAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lciwgZmxhZ3MpOwotICAgIH0KLSNlbmRpZgorICAgIGlmIChjYWNoZV90aW1lb3V0ICE9IE5VTEwpCisgICAgICAgICpjYWNoZV90aW1lb3V0ID0gNTsKKyAgICBpZiAoY2FjaGVfZmxhZ3MgIT0gTlVMTCkKKyAgICAgICAgKmNhY2hlX2ZsYWdzIHw9IE5FVFNOTVBfQ0FDSEVfRE9OVF9GUkVFX0JFRk9SRV9MT0FECisgICAgICAgICAgICAgICAgICAgICAgICB8IE5FVFNOTVBfQ0FDSEVfQVVUT19SRUxPQUQ7CisgICAgYWNjZXNzLT5jYWNoZV9leHBpcmVkID0gY2FjaGVfZXhwaXJlZDsKIAotICAgIC8qCi0gICAgICogcmV0dXJuIG5vIGVycm9ycyAoMCkgaWYgd2UgZm91bmQgYW55IGludGVyZmFjZXMKLSAgICAgKi8KLSAgICBpZihyYyA+IDApCi0gICAgICAgIHJjID0gMDsKKyAgICByZXR1cm4gYWNjZXNzOworfQorCitpbnQgbmV0c25tcF9hY2Nlc3NfYXJwX2RlbGV0ZShuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzcykKK3sKKyAgICBpZiAoTlVMTCA9PSBhY2Nlc3MpCisgICAgICAgIHJldHVybiAwOworCisgICAgbmV0c25tcF9hY2Nlc3NfYXJwX3VubG9hZChhY2Nlc3MpOworICAgIGZyZWUoYWNjZXNzKTsKKworICAgIHJldHVybiAwOworfQorCitpbnQgbmV0c25tcF9hY2Nlc3NfYXJwX2xvYWQobmV0c25tcF9hcnBfYWNjZXNzICphY2Nlc3MpCit7CisgICAgaW50IHJjID0gMDsKKworICAgIGFjY2Vzcy0+Z2VuZXJhdGlvbisrOworICAgIHJjID1fbG9hZF92NChhY2Nlc3MpOworICAgIGFjY2Vzcy0+Z2NfaG9vayhhY2Nlc3MpOworICAgIGFjY2Vzcy0+c3luY2hyb25pemVkID0gKHJjID09IDApOwogCiAgICAgcmV0dXJuIHJjOwogfQogCitpbnQgbmV0c25tcF9hY2Nlc3NfYXJwX3VubG9hZChuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzcykKK3sKKyAgICBhY2Nlc3MtPnN5bmNocm9uaXplZCA9IDA7CisKKyAgICByZXR1cm4gMDsKK30KKwogLyoqCiAgKi8KLWludAotX2xvYWRfdjQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgaW50IGlkeF9vZmZzZXQpCitzdGF0aWMgaW50CitfbG9hZF92NChuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzcykKIHsKICAgICBGSUxFICAgICAgICAgICAqaW47CiAgICAgY2hhciAgICAgICAgICAgIGxpbmVbMTI4XTsKQEAgLTg1LDcgKzkxLDcgQEAKICAgICBjaGFyICAgICAgICAgICAqYXJwX3Rva2VuOwogICAgIGludCAgICAgICAgICAgICBpOwogCi0gICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBjb250YWluZXIpOworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gYWNjZXNzKTsKIAogI2RlZmluZSBQUk9DRklMRSAiL3Byb2MvbmV0L2FycCIKICAgICBpZiAoIShpbiA9IGZvcGVuKFBST0NGSUxFLCAiciIpKSkgewpAQCAtMTMyLDYgKzEzOCw3IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIGxvb2sgdXAgaWZJbmRleAogICAgICAgICAgKi8KKyAgICAgICAgZW50cnktPmdlbmVyYXRpb24gPSBhY2Nlc3MtPmdlbmVyYXRpb247CiAgICAgICAgIGVudHJ5LT5pZl9pbmRleCA9IG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9pbmRleF9maW5kKGlmbmFtZSk7CiAgICAgICAgIGlmKDAgPT0gZW50cnktPmlmX2luZGV4KSB7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJjb3VsZG4ndCBmaW5kIGlmSW5kZXggZm9yICclcycsIHNraXBwaW5nXG4iLApAQCAtMTQ0LDcgKzE1MSw3IEBACiAgICAgICAgICAqIG5vdyB0aGF0IHdlJ3ZlIHBhc3NlZCBhbGwgdGhlIHBvc3NpYmxlICdjb250aW51ZScsIGFzc2lnbgogICAgICAgICAgKiBpbmRleCBvZmZzZXQuCiAgICAgICAgICAqLwotICAgICAgICBlbnRyeS0+bnNfYXJwX2luZGV4ID0gKytpZHhfb2Zmc2V0OworICAgICAgICAvKiBlbnRyeS0+bnNfYXJwX2luZGV4ID0gKytpZHhfb2Zmc2V0OyAqLwogCiAgICAgICAgIC8qCiAgICAgICAgICAqIHBhcnNlIGlwIGFkZHIKQEAgLTE5OSwyNDkgKzIwNiw5IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIGFkZCBlbnRyeSB0byBjb250YWluZXIKICAgICAgICAgICovCi0gICAgICAgIGlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpIDwgMCkKLSAgICAgICAgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczphcnA6Y29udGFpbmVyIiwiZXJyb3Igd2l0aCBhcnBfZW50cnk6IGluc2VydCBpbnRvIGNvbnRhaW5lciBmYWlsZWQuXG4iKSk7Ci0gICAgICAgICAgICBuZXRzbm1wX2FjY2Vzc19hcnBfZW50cnlfZnJlZShlbnRyeSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgICAgICBhY2Nlc3MtPnVwZGF0ZV9ob29rKGFjY2VzcywgZW50cnkpOwogICAgIH0KIAogICAgIGZjbG9zZShpbik7Ci0gICAgaWYoIHJjIDwgMCApCi0gICAgICAgIHJldHVybiByYzsKLQotICAgIHJldHVybiBpZHhfb2Zmc2V0OwotfQotCi0jaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKLXN0YXRpYyBpbnQKLV9sb2FkX3Y2KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGludCBpZHhfb2Zmc2V0KQotewotICAgIGNoYXIgICAgICAgICAgICAgIGJ1ZmZlclsxNjM4NF07Ci0jaWYgZGVmaW5lZChIQVZFX0xJTlVYX1JUTkVUTElOS19IKQotICAgIHN0cnVjdCBubG1zZ2hkciAgICpubG1wOwotI2VuZGlmCi0gICAgaW50ICAgICAgICAgICAgICAgc2QgPSAwOwotICAgIGludCAgICAgICAgICAgICAgIHN0YXR1cyA9IDA7Ci0gICAgaW50ICAgICAgICAgICAgICAgcmMgPSAwOwotICAgIGludCAgICAgICAgICAgICAgIGxlbiwgcmVxX2xlbjsKLSAgICBuZXRzbm1wX2FycF9lbnRyeSAqZW50cnk7Ci0KLSAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGNvbnRhaW5lcik7Ci0jaWYgZGVmaW5lZChIQVZFX0xJTlVYX1JUTkVUTElOS19IKQotICAgIGlmKChzZCA9IHNvY2tldCAoUEZfTkVUTElOSywgU09DS19ER1JBTSwgTkVUTElOS19ST1VURSkpIDwgMCkgewotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJVbmFibGUgdG8gY3JlYXRlIG5ldGxpbmsgc29ja2V0XG4iKTsKLSAgICAgICAgcmV0dXJuIC0yOwotICAgIH0KLQotICAgIGlmKGdldF90cmFuc2xhdGlvbl90YWJsZV9pbmZvIChzZCwgJnN0YXR1cywgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkgPCAwKSB7Ci0gICAgICAgc25tcF9sb2coTE9HX0VSUiwiVW5hYmxlIHRvIGZldGNoIHRyYW5zbGF0aW9uIHRhYmxlIGluZm9cbiIpOwotICAgICAgIGNsb3NlKHNkKTsKLSAgICAgICByZXR1cm4gLTI7Ci0gICAgfQotCi0gICAgZm9yIChubG1wID0gKHN0cnVjdCBubG1zZ2hkciAqKWJ1ZmZlcjsgc3RhdHVzID4gc2l6ZW9mKCpubG1wKTsgKSB7Ci0gICAgICAgICBsZW4gPSBubG1wLT5ubG1zZ19sZW47Ci0gICAgICAgICByZXFfbGVuID0gbGVuIC0gc2l6ZW9mKCpubG1wKTsKLSAgICAgICAgIGlmIChyZXFfbGVuIDwgMCB8fCBsZW4gPiBzdGF0dXMpIHsKLSAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJpbnZhbGlkIGxlbmd0aFxuIik7Ci0gICAgICAgICAgICAgcmV0dXJuIC0yOwotICAgICAgICAgfQotICAgICAgICAgaWYgKCFOTE1TR19PSyAobmxtcCwgc3RhdHVzKSkgewotICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsIk5MTVNHIG5vdCBPS1xuIik7Ci0gICAgICAgICAgICAgcmV0dXJuIC0yOwotICAgICAgICAgfQotICAgICAgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19hcnBfZW50cnlfY3JlYXRlKCk7Ci0gICAgICAgICBpZihOVUxMID09IGVudHJ5KSB7Ci0gICAgICAgICAgICByYyA9IC0zOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbnRyeS0+bnNfYXJwX2luZGV4ID0gKytpZHhfb2Zmc2V0OwotICAgICAgICAgaWYoZmlsbHVwX2VudHJ5X2luZm8gKGVudHJ5LCBubG1wKSA8IDApIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6YXJwOmxvYWRfdjYiLCAic2tpcHBpbmcgbmV0bGluayBtZXNzYWdlIHRoYXQiCi0gICAgICAgICAgICAgICAgICAgICAgICAiIGRpZCBub3QgY29udGFpbiB2YWxpZCBBUlAgaW5mb3JtYXRpb25cbiIpKTsKLSAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV9mcmVlKGVudHJ5KTsKLSAgICAgICAgICAgIHN0YXR1cyAtPSBOTE1TR19BTElHTihsZW4pOwotICAgICAgICAgICAgbmxtcCA9IChzdHJ1Y3Qgbmxtc2doZHIqKSgoY2hhciopbmxtcCArIE5MTVNHX0FMSUdOKGxlbikpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICB9Ci0gICAgICAgICBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpOwotICAgICAgICAgc3RhdHVzIC09IE5MTVNHX0FMSUdOKGxlbik7Ci0gICAgICAgICBubG1wID0gKHN0cnVjdCBubG1zZ2hkciopKChjaGFyKilubG1wICsgTkxNU0dfQUxJR04obGVuKSk7Ci0gICAgfQotCi0gICAgY2xvc2Uoc2QpOwotI2VuZGlmCi0gICAgaWYocmM8MCkgewotICAgICAgICByZXR1cm4gcmM7Ci0gICAgfQotCi0gICAgcmV0dXJuIGlkeF9vZmZzZXQ7Ci19Ci0jaWYgZGVmaW5lZChIQVZFX0xJTlVYX1JUTkVUTElOS19IKQotaW50IAotZ2V0X3RyYW5zbGF0aW9uX3RhYmxlX2luZm8gKGludCBzZCwgaW50ICpzdGF0dXMsIGNoYXIgKmJ1ZmYsIHNpemVfdCBzaXplKQotewotICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgc3RydWN0IG5sbXNnaGRyIG47Ci0gICAgICAgICAgICAgICAgc3RydWN0IG5kbXNnIHI7Ci0gICAgICAgICAgICAgICAgY2hhciAgIGJ1ZlsxMDI0XTsKLSAgICB9IHJlcTsKLSAgICBzdHJ1Y3QgcnRhdHRyICAgKnJ0YTsKLQotICAgIG1lbXNldCgmcmVxLCAwLCBzaXplb2YocmVxKSk7Ci0gICAgcmVxLm4ubmxtc2dfbGVuID0gTkxNU0dfTEVOR1RIIChzaXplb2Yoc3RydWN0IG5kbXNnKSk7Ci0gICAgcmVxLm4ubmxtc2dfZmxhZ3MgPSBOTE1fRl9SRVFVRVNUIHwgTkxNX0ZfUk9PVDsKLSAgICByZXEubi5ubG1zZ190eXBlID0gUlRNX0dFVE5FSUdIOwotCi0gICAgcmVxLnIubmRtX2ZhbWlseSA9IEFGX0lORVQ2OwotICAgIHJ0YSA9IChzdHJ1Y3QgcnRhdHRyICopKCgoY2hhciAqKSZyZXEpICsgTkxNU0dfQUxJR04ocmVxLm4ubmxtc2dfbGVuKSk7Ci0gICAgcnRhLT5ydGFfbGVuID0gUlRBX0xFTkdUSCgxNik7Ci0KLSAgICBpZihzZW5kKHNkLCAmcmVxLCByZXEubi5ubG1zZ19sZW4sIDApIDwgMCkgewotICAgICAgIHNubXBfbG9nKExPR19FUlIsIlNlbmRpbmcgcmVxdWVzdCBmYWlsZWRcbiIpOwotICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYoKCpzdGF0dXMgPSByZWN2KHNkLCBidWZmLCBzaXplLCAwKSkgPCAwKSB7Ci0gICAgICAgc25tcF9sb2coTE9HX0VSUiwiUmVjaWV2aW5nIHJlcXVlc3QgZmFpbGVkXG4iKTsKLSAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmKCpzdGF0dXMgPT0gMCkgewotICAgICAgIHNubXBfbG9nKExPR19FUlIsIkVuZCBvZiBmaWxlXG4iKTsKLSAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogICAgIHJldHVybiAwOwogfQotCi1pbnQKLWZpbGx1cF9lbnRyeV9pbmZvKG5ldHNubXBfYXJwX2VudHJ5ICplbnRyeSwgc3RydWN0IG5sbXNnaGRyICpubG1wKQotewotICAgIHN0cnVjdCBuZG1zZyAgICpydG1wOwotICAgIHN0cnVjdCBpbjZfYWRkciAqaW42cDsKLSAgICBzdHJ1Y3QgcnRhdHRyICAqdGJbTkRBX01BWCArIDFdLCAqcnRhOwotICAgIHNpemVfdCAgICAgICAgICBpbl9sZW4sIG91dF9sZW47Ci0gICAgdW5zaWduZWQgaW50ICAgIGk7Ci0gICAgaW50ICAgICAgICAgICAgIGxlbmd0aDsKLSAgICBjaGFyICAgICAgICAgICAgYWRkcls0MF07Ci0gICAgdV9jaGFyICAgICAgICAgKmJ1ZjsKLSAgICB1X2NoYXIgICAgICAgICAqaHdhZGRyOwotCi0gICAgcnRtcCA9IChzdHJ1Y3QgbmRtc2cgKikgTkxNU0dfREFUQShubG1wKTsKLSAgICBpZiAobmxtcC0+bmxtc2dfdHlwZSAhPSBSVE1fTkVXTkVJR0gpIHsKLSAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIldyb25nIG5ldGxpbmsgbWVzc2FnZSB0eXBlICVkXG4iLCBubG1wLT5ubG1zZ190eXBlKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIGlmIChydG1wLT5uZG1fc3RhdGUgIT0gTlVEX05PQVJQKSB7Ci0gICAgICAgIG1lbXNldCh0YiwgMCwgc2l6ZW9mKHN0cnVjdCBydGF0dHIgKikgKiAoTkRBX01BWCArIDEpKTsKLSAgICAgICAgbGVuZ3RoID0gbmxtcC0+bmxtc2dfbGVuIC0gTkxNU0dfTEVOR1RIKHNpemVvZigqcnRtcCkpOwotICAgICAgICBpZiAobGVuZ3RoIDwgMCkgewotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm5ldGxpbmsgbWVzc2FnZSBsZW5ndGggJWQgPCAlZCBpcyBpbnZhbGlkXG4iLAotICAgICAgICAgICAgICAgICAgICAgbmxtcC0+bmxtc2dfbGVuLCAoaW50KU5MTVNHX0xFTkdUSChzaXplb2YoKnJ0bXApKSk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgLyoKLSAgICAgICAgICogdGhpcyBpcyB3aGF0IHRoZSBrZXJuZWwtcmVtb3ZlZCBOREFfUlRBIGRlZmluZSBkaWQgCi0gICAgICAgICAqLwotICAgICAgICBydGEgPSAoKHN0cnVjdCBydGF0dHIgKikgKCgoY2hhciAqKSAocnRtcCkpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTE1TR19BTElHTihzaXplb2Yoc3RydWN0IG5kbXNnKSkpKTsKLSAgICAgICAgd2hpbGUgKFJUQV9PSyhydGEsIGxlbmd0aCkpIHsKLSAgICAgICAgICAgIGlmIChydGEtPnJ0YV90eXBlIDw9IE5EQV9NQVgpCi0gICAgICAgICAgICAgICAgdGJbcnRhLT5ydGFfdHlwZV0gPSBydGE7Ci0gICAgICAgICAgICBydGEgPSBSVEFfTkVYVChydGEsIGxlbmd0aCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGxlbmd0aCkgewotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIlJlY2VpdmVkIHVuZXZlbiBudW1iZXIgb2YgbmV0bGluayIKLSAgICAgICAgICAgICAgICAgICAgICAgICIgbWVzc2FnZXMgLSAlZCBieXRlcyByZW1haW5pbmdcbiIsIGxlbmd0aCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgLyoKLSAgICAgICAgICogRmlsbCB1cCB0aGUgaW5kZXgKLSAgICAgICAgICovCi0gICAgICAgIGVudHJ5LT5pZl9pbmRleCA9IHJ0bXAtPm5kbV9pZmluZGV4OwotICAgICAgICAvKgotICAgICAgICAgKiBGaWxsIHVwIGlwIGFkZHJlc3MgCi0gICAgICAgICAqLwotICAgICAgICBpZiAodGJbTkRBX0RTVF0pIHsKLSAgICAgICAgICAgIG1lbXNldCgmYWRkciwgJ1wwJywgc2l6ZW9mKGFkZHIpKTsKLSAgICAgICAgICAgIGluNnAgPSAoc3RydWN0IGluNl9hZGRyICopIFJUQV9EQVRBKHRiW05EQV9EU1RdKTsKLSAgICAgICAgICAgIHNwcmludGYoYWRkciwgTklQNl9GTVQsIE5JUDYoKmluNnApKTsKLSAgICAgICAgICAgIGluX2xlbiA9IGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbiA9Ci0gICAgICAgICAgICAgICAgc2l6ZW9mKGVudHJ5LT5hcnBfaXBhZGRyZXNzKTsKLSAgICAgICAgICAgIG5ldHNubXBfYXNzZXJ0KDE2ID09IGluX2xlbik7Ci0gICAgICAgICAgICBvdXRfbGVuID0gMDsKLSAgICAgICAgICAgIGJ1ZiA9IGVudHJ5LT5hcnBfaXBhZGRyZXNzOwotICAgICAgICAgICAgaWYgKDEgIT0gbmV0c25tcF9oZXhfdG9fYmluYXJ5KCZidWYsICZpbl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dF9sZW4sIDAsIGFkZHIsICI6IikpIHsKLSAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgcGFyc2luZyAnJXMnLCBza2lwcGluZ1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+YXJwX2lwYWRkcmVzcyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbmV0c25tcF9hc3NlcnQoMTYgPT0gb3V0X2xlbik7Ci0gICAgICAgICAgICBlbnRyeS0+YXJwX2lwYWRkcmVzc19sZW4gPSBvdXRfbGVuOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0YltOREFfTExBRERSXSkgewotICAgICAgICAgICAgbWVtc2V0KCZhZGRyLCAnXDAnLCBzaXplb2YoYWRkcikpOwotICAgICAgICAgICAgaHdhZGRyID0gUlRBX0RBVEEodGJbTkRBX0xMQUREUl0pOwotICAgICAgICAgICAgZW50cnktPmFycF9waHlzYWRkcmVzc19sZW4gPSBSVEFfUEFZTE9BRCh0YltOREFfTExBRERSXSk7Ci0gICAgICAgICAgICBidWYgPSBlbnRyeS0+YXJwX3BoeXNhZGRyZXNzOwotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGVudHJ5LT5hcnBfcGh5c2FkZHJlc3NfbGVuOyBpKyspCi0gICAgICAgICAgICAgICAgZW50cnktPmFycF9waHlzYWRkcmVzc1tpXSA9IGh3YWRkcltpXTsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAocnRtcC0+bmRtX3N0YXRlKSB7Ci0gICAgICAgIGNhc2UgTlVEX0lOQ09NUExFVEU6Ci0gICAgICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9JTkNPTVBMRVRFOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTlVEX1JFQUNIQUJMRToKLSAgICAgICAgY2FzZSBOVURfUEVSTUFORU5UOgotICAgICAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfUkVBQ0hBQkxFOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTlVEX1NUQUxFOgotICAgICAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfU1RBTEU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOVURfREVMQVk6Ci0gICAgICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9ERUxBWTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5VRF9QUk9CRToKLSAgICAgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBJTkVUTkVUVE9NRURJQVNUQVRFX1BST0JFOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTlVEX0ZBSUxFRDoKLSAgICAgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBJTkVUTkVUVE9NRURJQVNUQVRFX0lOVkFMSUQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOVURfTk9ORToKLSAgICAgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBJTkVUTkVUVE9NRURJQVNUQVRFX1VOS05PV047Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJVbnJlY29nbml6ZWQgQVJQIGVudHJ5IHN0YXRlICVkIiwgcnRtcC0+bmRtX3N0YXRlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgc3dpdGNoIChydG1wLT5uZG1fc3RhdGUpIHsKLSAgICAgICAgY2FzZSBOVURfSU5DT01QTEVURToKLSAgICAgICAgY2FzZSBOVURfRkFJTEVEOgotICAgICAgICBjYXNlIE5VRF9OT05FOgotICAgICAgICAgICAgZW50cnktPmFycF90eXBlID0gSU5FVE5FVFRPTUVESUFUWVBFX0lOVkFMSUQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOVURfUkVBQ0hBQkxFOgotICAgICAgICBjYXNlIE5VRF9TVEFMRToKLSAgICAgICAgY2FzZSBOVURfREVMQVk6Ci0gICAgICAgIGNhc2UgTlVEX1BST0JFOgotICAgICAgICAgICAgZW50cnktPmFycF90eXBlID0gSU5FVE5FVFRPTUVESUFUWVBFX0RZTkFNSUM7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOVURfUEVSTUFORU5UOgotICAgICAgICAgICAgZW50cnktPmFycF90eXBlID0gSU5FVE5FVFRPTUVESUFUWVBFX1NUQVRJQzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZW50cnktPmFycF90eXBlID0gSU5FVE5FVFRPTUVESUFUWVBFX0xPQ0FMOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gLTE7ICAgICAgICAgICAgICAvKiBjb3VsZCBub3QgY3JlYXRlIGRhdGEgZm9yIHRoaXMgaW50ZXJmYWNlICovCi0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9uZXRsaW5rLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX25ldGxpbmsuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDU5YzIzCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9uZXRsaW5rLmMKQEAgLTAsMCArMSwzMDQgQEAKKy8qCisgKiAgSW50ZXJmYWNlIE1JQiBhcmNoaXRlY3R1cmUgc3VwcG9ydAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvYXJwLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmg+CisKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvcnRuZXRsaW5rLmg+CisKKworc3RhdGljIGludCBmaWxsdXBfZW50cnlfaW5mbyhuZXRzbm1wX2FycF9lbnRyeSAqZW50cnksIHN0cnVjdCBubG1zZ2hkciAqaCk7CitzdGF0aWMgdm9pZCBuZXRzbm1wX2FjY2Vzc19hcnBfcmVhZF9uZXRsaW5rKGludCBmZCwgdm9pZCAqZGF0YSk7CisKKy8qKgorICovCituZXRzbm1wX2FycF9hY2Nlc3MgKgorbmV0c25tcF9hY2Nlc3NfYXJwX2NyZWF0ZSh1X2ludCBpbml0X2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wQWNjZXNzQXJwVXBkYXRlICp1cGRhdGVfaG9vaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcEFjY2Vzc0FycEdDICpnY19ob29rLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmNhY2hlX3RpbWVvdXQsIGludCAqY2FjaGVfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNhY2hlX2V4cGlyZWQpCit7CisgICAgbmV0c25tcF9hcnBfYWNjZXNzICphY2Nlc3M7CisKKyAgICBhY2Nlc3MgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfYXJwX2FjY2Vzcyk7CisgICAgaWYgKE5VTEwgPT0gYWNjZXNzKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsIm1hbGxvYyBlcnJvciBpbiBuZXRzbm1wX2FjY2Vzc19hcnBfY3JlYXRlXG4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgYWNjZXNzLT5hcmNoX21hZ2ljID0gTlVMTDsKKyAgICBhY2Nlc3MtPm1hZ2ljID0gTlVMTDsKKyAgICBhY2Nlc3MtPnVwZGF0ZV9ob29rID0gdXBkYXRlX2hvb2s7CisgICAgYWNjZXNzLT5nY19ob29rID0gZ2NfaG9vazsKKyAgICBhY2Nlc3MtPnN5bmNocm9uaXplZCA9IDA7CisKKyAgICBpZiAoY2FjaGVfdGltZW91dCAhPSBOVUxMKQorICAgICAgICAqY2FjaGVfdGltZW91dCA9IDU7CisgICAgaWYgKGNhY2hlX2ZsYWdzICE9IE5VTEwpCisgICAgICAgICpjYWNoZV9mbGFncyB8PSBORVRTTk1QX0NBQ0hFX1JFU0VUX1RJTUVSX09OX1VTRSB8IE5FVFNOTVBfQ0FDSEVfRE9OVF9GUkVFX0JFRk9SRV9MT0FEOworICAgIGFjY2Vzcy0+Y2FjaGVfZXhwaXJlZCA9IGNhY2hlX2V4cGlyZWQ7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOm5ldGxpbms6YXJwIiwgImNyZWF0ZSBhcnAgY2FjaGVcbiIpKTsKKworICAgIHJldHVybiBhY2Nlc3M7Cit9CisKK2ludCBuZXRzbm1wX2FjY2Vzc19hcnBfZGVsZXRlKG5ldHNubXBfYXJwX2FjY2VzcyAqYWNjZXNzKQoreworICAgIGlmIChOVUxMID09IGFjY2VzcykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBuZXRzbm1wX2FjY2Vzc19hcnBfdW5sb2FkKGFjY2Vzcyk7CisgICAgZnJlZShhY2Nlc3MpOworCisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBuZXRzbm1wX2FjY2Vzc19hcnBfbG9hZChuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzcykKK3sKKyAgICBpbnQgciwgZmQgPSAodWludHB0cl90KSBhY2Nlc3MtPmFyY2hfbWFnaWM7CisgICAgc3RydWN0IHsKKyAgICAgICAgc3RydWN0IG5sbXNnaGRyIG47CisgICAgICAgIHN0cnVjdCBuZG1zZyByOworICAgIH0gcmVxOworCisgICAgaWYgKGFjY2Vzcy0+c3luY2hyb25pemVkKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChmZCA9PSAwKSB7CisgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9ubCBzYTsKKworICAgICAgICBmZCA9IHNvY2tldChQRl9ORVRMSU5LLCBTT0NLX0RHUkFNLCBORVRMSU5LX1JPVVRFKTsKKyAgICAgICAgaWYgKGZkIDwgMCkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwibmV0c25tcF9hY2Nlc3NfYXJwX2xvYWQ6IG5ldGxpbmsgc29ja2V0IGNyZWF0ZSBlcnJvclxuIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgYWNjZXNzLT5hcmNoX21hZ2ljID0gKHZvaWQgKikodWludHB0cl90KWZkOworCisgICAgICAgIG1lbXNldCgmc2EsIDAsIHNpemVvZihzYSkpOworICAgICAgICBzYS5ubF9mYW1pbHkgPSBBRl9ORVRMSU5LOworICAgICAgICBzYS5ubF9ncm91cHMgPSBSVE1HUlBfTkVJR0g7CisgICAgICAgIGlmIChiaW5kKGZkLCAoc3RydWN0IHNvY2thZGRyKikgJnNhLCBzaXplb2Yoc2EpKSA8IDApIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsIm5ldHNubXBfYWNjZXNzX2FycF9sb2FkOiBuZXRsaW5rIGJpbmQgZmFpbGVkXG4iKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZWdpc3Rlcl9yZWFkZmQoZmQsIG5ldHNubXBfYWNjZXNzX2FycF9yZWFkX25ldGxpbmssIGFjY2VzcykgIT0gMCkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwibmV0c25tcF9hY2Nlc3NfYXJwX2xvYWQ6IGVycm9yIHJlZ2lzdGVyaW5nIG5ldGxpbmsgc29ja2V0XG4iKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6bmV0bGluazphcnAiLCAic3luY2hyb25pemluZyBhcnAgdGFibGVcbiIpKTsKKworICAgIGFjY2Vzcy0+Z2VuZXJhdGlvbisrOworCisgICAgbWVtc2V0KCZyZXEsIDAsIHNpemVvZihyZXEpKTsKKyAgICByZXEubi5ubG1zZ19sZW4gPSBzaXplb2YocmVxKTsKKyAgICByZXEubi5ubG1zZ19mbGFncyA9IE5MTV9GX1JFUVVFU1QgfCBOTE1fRl9ST09UOworICAgIHJlcS5uLm5sbXNnX3R5cGUgPSBSVE1fR0VUTkVJR0g7CisgICAgcmVxLnIubmRtX2ZhbWlseSA9IEFGX1VOU1BFQzsKKworICAgIHIgPSBzZW5kKGZkLCAmcmVxLCByZXEubi5ubG1zZ19sZW4sIDApOworICAgIGlmIChyIDwgMCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJuZXRzbm1wX2FjY2Vzc19hcnBfcmVmcmVzaDogc2VuZCBmYWlsZWRcbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgd2hpbGUgKCFhY2Nlc3MtPnN5bmNocm9uaXplZCkKKyAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX3JlYWRfbmV0bGluayhmZCwgYWNjZXNzKTsKKyAgICBhY2Nlc3MtPmdjX2hvb2soYWNjZXNzKTsKKworICAgIHJldHVybiAwOworfQorCitpbnQgbmV0c25tcF9hY2Nlc3NfYXJwX3VubG9hZChuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzcykKK3sKKyAgICBpbnQgZmQ7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOm5ldGxpbms6YXJwIiwgInVubG9hZCBhcnAgY2FjaGVcbiIpKTsKKworICAgIGZkID0gKHVpbnRwdHJfdCkgYWNjZXNzLT5hcmNoX21hZ2ljOworICAgIGlmIChmZCA+IDApIHsKKyAgICAgICAgIHVucmVnaXN0ZXJfcmVhZGZkKGZkKTsKKyAgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgIGFjY2Vzcy0+YXJjaF9tYWdpYyA9IE5VTEw7CisJIGFjY2Vzcy0+c3luY2hyb25pemVkID0gMDsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIG5ldHNubXBfYWNjZXNzX2FycF9yZWFkX25ldGxpbmsoaW50IGZkLCB2b2lkICpkYXRhKQoreworICAgIG5ldHNubXBfYXJwX2FjY2VzcyAqYWNjZXNzID0gKG5ldHNubXBfYXJwX2FjY2VzcyAqKSBkYXRhOworICAgIG5ldHNubXBfYXJwX2VudHJ5ICplbnRyeTsKKyAgICBjaGFyIGJ1ZlsxNjM4NF07CisgICAgc3RydWN0IG5sbXNnaGRyICpoOworICAgIGludCByLCBsZW47CisKKyAgICBkbyB7CisgICAgICAgIHIgPSByZWN2KGZkLCBidWYsIHNpemVvZihidWYpLCBNU0dfRE9OVFdBSVQpOworICAgICAgICBpZiAociA8IDApIHsKKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4pCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJuZXRsaW5rIGJ1ZmZlciBvdmVycnVuXG4iKTsKKyAgICAgICAgICAgIGFjY2Vzcy0+c3luY2hyb25pemVkID0gMDsKKyAgICAgICAgICAgIGlmIChhY2Nlc3MtPmNhY2hlX2V4cGlyZWQgIT0gTlVMTCkKKwkJKmFjY2Vzcy0+Y2FjaGVfZXhwaXJlZCA9IDE7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IHdoaWxlICgwKTsKKyAgICBsZW4gPSByOworCisgICAgZm9yIChoID0gKHN0cnVjdCBubG1zZ2hkciAqKSBidWY7IE5MTVNHX09LKGgsIGxlbik7IGggPSBOTE1TR19ORVhUKGgsIGxlbikpIHsKKyAgICAgICAgIGlmIChoLT5ubG1zZ190eXBlID09IE5MTVNHX0RPTkUpIHsKKyAgICAgICAgICAgICBhY2Nlc3MtPnN5bmNocm9uaXplZCA9IDE7CisgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICB9CisKKyAgICAgICAgIGVudHJ5ID0gbmV0c25tcF9hY2Nlc3NfYXJwX2VudHJ5X2NyZWF0ZSgpOworICAgICAgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6bmV0bGluazphcnAiLCAiYXJwIG5ldGxpbmsgbm90aWZpY2F0aW9uXG4iKSk7CisgICAgCisgICAgICAgICBlbnRyeS0+Z2VuZXJhdGlvbiA9IGFjY2Vzcy0+Z2VuZXJhdGlvbjsKKyAgICAgICAgIHIgPSBmaWxsdXBfZW50cnlfaW5mbyAoZW50cnksIGgpOworICAgICAgICAgaWYgKHIgPiAwKSB7CisgICAgICAgICAgICAgYWNjZXNzLT51cGRhdGVfaG9vayhhY2Nlc3MsIGVudHJ5KTsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgaWYgKHIgPCAwKSB7CisgICAgICAgICAgICAgICAgIE5FVFNOTVBfTE9HT05DRSgoTE9HX0VSUiwgImZpbGxpbmcgZW50cnkgaW5mbyBmYWlsZWRcbiIpKTsKKyAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpuZXRsaW5rOmFycCIsICJmaWxsaW5nIGVudHJ5IGluZm8gZmFpbGVkXG4iKSk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV9mcmVlKGVudHJ5KTsKKyAgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK2ZpbGx1cF9lbnRyeV9pbmZvKG5ldHNubXBfYXJwX2VudHJ5ICplbnRyeSwgc3RydWN0IG5sbXNnaGRyICpubG1wKQoreworICAgIHN0cnVjdCBuZG1zZyAgICpydG1wOworICAgIHN0cnVjdCBydGF0dHIgICp0YltOREFfTUFYICsgMV0sICpydGE7CisgICAgaW50ICAgICAgICAgICAgIGxlbmd0aDsKKworICAgIHJ0bXAgPSAoc3RydWN0IG5kbXNnICopIE5MTVNHX0RBVEEobmxtcCk7CisgICAgc3dpdGNoIChubG1wLT5ubG1zZ190eXBlKSB7CisgICAgY2FzZSBSVE1fTkVXTkVJR0g6CisgICAgICAgIGlmIChydG1wLT5uZG1fc3RhdGUgPT0gTlVEX0ZBSUxFRCkKKyAgICAgICAgICAgIGVudHJ5LT5mbGFncyA9IE5FVFNOTVBfQUNDRVNTX0FSUF9FTlRSWV9GTEFHX0RFTEVURTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW50cnktPmZsYWdzID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSVE1fREVMTkVJR0g6CisgICAgICAgIGVudHJ5LT5mbGFncyA9IE5FVFNOTVBfQUNDRVNTX0FSUF9FTlRSWV9GTEFHX0RFTEVURTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSVE1fR0VUTkVJR0g6CisgICAgICAgIHJldHVybiAwOworICAgIGRlZmF1bHQ6CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6bmV0bGluazphcnAiLAorICAgICAgICAgICAgICAgICAgICAiV3JvbmcgTmV0bGluayBtZXNzYWdlIHR5cGUgJWRcbiIsIG5sbXAtPm5sbXNnX3R5cGUpKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChydG1wLT5uZG1fc3RhdGUgPT0gTlVEX05PQVJQKSB7CisgICAgICAgIC8qIE5VRF9OT0FSUCBpcyBmb3IgYnJvYWRjYXN0IGFkZHJlc3NlcyBhbmQgc2ltaWxhciwKKyAgICAgICAgICogZHJvcCB0aGVtIHNpbGVudGx5ICovCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1lbXNldCh0YiwgMCwgc2l6ZW9mKHN0cnVjdCBydGF0dHIgKikgKiAoTkRBX01BWCArIDEpKTsKKyAgICBsZW5ndGggPSBubG1wLT5ubG1zZ19sZW4gLSBOTE1TR19MRU5HVEgoc2l6ZW9mKCpydG1wKSk7CisgICAgcnRhID0gKChzdHJ1Y3QgcnRhdHRyICopICgoKGNoYXIgKikgKHJ0bXApKSArIE5MTVNHX0FMSUdOKHNpemVvZihzdHJ1Y3QgbmRtc2cpKSkpOworICAgIHdoaWxlIChSVEFfT0socnRhLCBsZW5ndGgpKSB7CisgICAgICAgIGlmIChydGEtPnJ0YV90eXBlIDw9IE5EQV9NQVgpCisgICAgICAgICAgICB0YltydGEtPnJ0YV90eXBlXSA9IHJ0YTsKKyAgICAgICAgcnRhID0gUlRBX05FWFQocnRhLCBsZW5ndGgpOworICAgIH0KKworICAgIC8qCisgICAgICogRmlsbCB1cCB0aGUgaW5kZXggYW5kIGFkZHJlc3NlcworICAgICAqLworICAgIGVudHJ5LT5pZl9pbmRleCA9IHJ0bXAtPm5kbV9pZmluZGV4OworICAgIGlmICh0YltOREFfRFNUXSkgeworICAgICAgICBlbnRyeS0+YXJwX2lwYWRkcmVzc19sZW4gPSBSVEFfUEFZTE9BRCh0YltOREFfRFNUXSk7CisgICAgICAgIGlmIChlbnRyeS0+YXJwX2lwYWRkcmVzc19sZW4gPiBzaXplb2YoZW50cnktPmFycF9pcGFkZHJlc3MpKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibmV0bGluayBpcCBhZGRyZXNzIGxlbmd0aCAlZCBpcyB0b28gbG9uZ1xuIiwKKyAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgbWVtY3B5KGVudHJ5LT5hcnBfaXBhZGRyZXNzLCBSVEFfREFUQSh0YltOREFfRFNUXSksCisgICAgICAgZW50cnktPmFycF9pcGFkZHJlc3NfbGVuKTsKKyAgICB9CisgICAgaWYgKHRiW05EQV9MTEFERFJdKSB7CisgICAgICAgIGVudHJ5LT5hcnBfcGh5c2FkZHJlc3NfbGVuID0gUlRBX1BBWUxPQUQodGJbTkRBX0xMQUREUl0pOworICAgICAgICBpZiAoZW50cnktPmFycF9waHlzYWRkcmVzc19sZW4gPiBzaXplb2YoZW50cnktPmFycF9waHlzYWRkcmVzcykpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJuZXRsaW5rIGh3IGFkZHJlc3MgbGVuZ3RoICVkIGlzIHRvbyBsb25nXG4iLAorICAgICAgICAgICAgICAgICAgICAgZW50cnktPmFycF9waHlzYWRkcmVzc19sZW4pOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIG1lbWNweShlbnRyeS0+YXJwX3BoeXNhZGRyZXNzLCBSVEFfREFUQSh0YltOREFfTExBRERSXSksCisgICAgICAgICAgICAgICBlbnRyeS0+YXJwX3BoeXNhZGRyZXNzX2xlbik7CisgICAgfQorCisgICAgc3dpdGNoIChydG1wLT5uZG1fc3RhdGUpIHsKKyAgICBjYXNlIE5VRF9JTkNPTVBMRVRFOgorICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9JTkNPTVBMRVRFOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5VRF9SRUFDSEFCTEU6CisgICAgY2FzZSBOVURfUEVSTUFORU5UOgorICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9SRUFDSEFCTEU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTlVEX1NUQUxFOgorICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9TVEFMRTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOVURfREVMQVk6CisgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBJTkVUTkVUVE9NRURJQVNUQVRFX0RFTEFZOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5VRF9QUk9CRToKKyAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfUFJPQkU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTlVEX0ZBSUxFRDoKKyAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfSU5WQUxJRDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOVURfTk9ORToKKyAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfVU5LTk9XTjsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIlVucmVjb2duaXplZCBBUlAgZW50cnkgc3RhdGUgJWQiLCBydG1wLT5uZG1fc3RhdGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHJ0bXAtPm5kbV9zdGF0ZSkgeworICAgIGNhc2UgTlVEX0lOQ09NUExFVEU6CisgICAgY2FzZSBOVURfRkFJTEVEOgorICAgIGNhc2UgTlVEX05PTkU6CisgICAgICAgIGVudHJ5LT5hcnBfdHlwZSA9IElORVRORVRUT01FRElBVFlQRV9JTlZBTElEOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5VRF9SRUFDSEFCTEU6CisgICAgY2FzZSBOVURfU1RBTEU6CisgICAgY2FzZSBOVURfREVMQVk6CisgICAgY2FzZSBOVURfUFJPQkU6CisgICAgICAgIGVudHJ5LT5hcnBfdHlwZSA9IElORVRORVRUT01FRElBVFlQRV9EWU5BTUlDOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5VRF9QRVJNQU5FTlQ6CisgICAgICAgIGVudHJ5LT5hcnBfdHlwZSA9IElORVRORVRUT01FRElBVFlQRV9TVEFUSUM7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGVudHJ5LT5hcnBfdHlwZSA9IElORVRORVRUT01FRElBVFlQRV9MT0NBTDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX3N5c2N0bC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9zeXNjdGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODE2NjY0Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9zeXNjdGwuYwpAQCAtMCwwICsxLDMyOCBAQAorLyoKKyAqICBJbnRlcmZhY2UgTUlCIGFyY2hpdGVjdHVyZSBzdXBwb3J0CisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9hcnAuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaD4KKworI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CisjaW5jbHVkZSA8bmV0L2lmLmg+CisjaW5jbHVkZSA8bmV0L2lmX2RsLmg+CisjaW5jbHVkZSA8bmV0L2lmX3R5cGVzLmg+CisjaW5jbHVkZSA8bmV0L3JvdXRlLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorCisjaWYgIWRlZmluZWQoU0FfU0laRSkgJiYgIWRlZmluZWQoUlRfUk9VTkRVUCkKKyNkZWZpbmUgUlRfUk9VTkRVUChhKSAgXAorCSgoYSkgPiAwID8gKDEgKyAoKChhKSAtIDEpIHwgKHNpemVvZihsb25nKSAtIDEpKSkgOiBzaXplb2YobG9uZykpCisjZW5kaWYKKworc3RhdGljIGludCBfbG9hZF9hcnBfdGFibGVfZnJvbV9zeXNjdGwobmV0c25tcF9hcnBfYWNjZXNzICopOworc3RhdGljIGludCBfbG9hZF9uZHBfdGFibGVfZnJvbV9zeXNjdGwobmV0c25tcF9hcnBfYWNjZXNzICopOworCituZXRzbm1wX2FycF9hY2Nlc3MgKgorbmV0c25tcF9hY2Nlc3NfYXJwX2NyZWF0ZSh1X2ludCBpbml0X2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wQWNjZXNzQXJwVXBkYXRlICp1cGRhdGVfaG9vaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcEFjY2Vzc0FycEdDICpnY19ob29rLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmNhY2hlX3RpbWVvdXQsIGludCAqY2FjaGVfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNhY2hlX2V4cGlyZWQpCit7CisgICAgbmV0c25tcF9hcnBfYWNjZXNzICphY2Nlc3M7CisKKyAgICBhY2Nlc3MgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfYXJwX2FjY2Vzcyk7CisgICAgaWYgKE5VTEwgPT0gYWNjZXNzKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJtYWxsb2MgZXJyb3IgaW4gbmV0c25tcF9hY2Nlc3NfYXJwX2NyZWF0ZVxuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGFjY2Vzcy0+YXJjaF9tYWdpYyA9IE5VTEw7CisgICAgYWNjZXNzLT5tYWdpYyA9IE5VTEw7CisgICAgYWNjZXNzLT51cGRhdGVfaG9vayA9IHVwZGF0ZV9ob29rOworICAgIGFjY2Vzcy0+Z2NfaG9vayA9IGdjX2hvb2s7CisgICAgYWNjZXNzLT5zeW5jaHJvbml6ZWQgPSAwOworCisgICAgaWYgKGNhY2hlX3RpbWVvdXQgIT0gTlVMTCkKKyAgICAgICAgKmNhY2hlX3RpbWVvdXQgPSA1OworICAgIGlmIChjYWNoZV9mbGFncyAhPSBOVUxMKQorICAgICAgICAqY2FjaGVfZmxhZ3MgfD0gTkVUU05NUF9DQUNIRV9ET05UX0ZSRUVfQkVGT1JFX0xPQUQKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgTkVUU05NUF9DQUNIRV9BVVRPX1JFTE9BRDsKKyAgICBhY2Nlc3MtPmNhY2hlX2V4cGlyZWQgPSBjYWNoZV9leHBpcmVkOworCisgICAgcmV0dXJuIGFjY2VzczsKK30KKworaW50IG5ldHNubXBfYWNjZXNzX2FycF9kZWxldGUobmV0c25tcF9hcnBfYWNjZXNzICphY2Nlc3MpCit7CisgICAgaWYgKE5VTEwgPT0gYWNjZXNzKQorICAgICAgICByZXR1cm4gMDsKKworICAgIG5ldHNubXBfYWNjZXNzX2FycF91bmxvYWQoYWNjZXNzKTsKKyAgICBmcmVlKGFjY2Vzcyk7CisKKyAgICByZXR1cm4gMDsKK30KKworaW50IG5ldHNubXBfYWNjZXNzX2FycF9sb2FkKG5ldHNubXBfYXJwX2FjY2VzcyAqYWNjZXNzKQoreworICAgIGludCBlcnIgPSAwOworCisgICAgYWNjZXNzLT5nZW5lcmF0aW9uKys7CisgICAgREVCVUdNU0dUTCgoImFjY2Vzczpyb3V0ZTpjb250YWluZXIiLAorICAgICAgICAgICAgICAgICJyb3V0ZV9jb250YWluZXJfYXJjaF9sb2FkIGlwdjRcbiIpKTsKKyAgICBlcnIgPSBfbG9hZF9hcnBfdGFibGVfZnJvbV9zeXNjdGwoYWNjZXNzKTsKKyAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgTkVUU05NUF9MT0dPTkNFKChMT0dfRVJSLAorICAgICAgICAgICAgIm5ldHNubXBfYWNjZXNzX2FycF9pcHY0IGZhaWxlZCAlZFxuIiwgZXJyKSk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICBhY2Nlc3MtPmdjX2hvb2soYWNjZXNzKTsKKyAgICBhY2Nlc3MtPnN5bmNocm9uaXplZCA9IChlcnIgPT0gMCk7CisKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgREVCVUdNU0dUTCgoImFjY2Vzczpyb3V0ZTpjb250YWluZXIiLAorICAgICAgICAgICAgICAgICJyb3V0ZV9jb250YWluZXJfYXJjaF9sb2FkIGlwdjZcbiIpKTsKKyAgICBlcnIgPSBfbG9hZF9uZHBfdGFibGVfZnJvbV9zeXNjdGwoYWNjZXNzKTsKKyAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgTkVUU05NUF9MT0dPTkNFKChMT0dfRVJSLAorICAgICAgICAgICAgIm5ldHNubXBfYWNjZXNzX2FycF9pcHY2IGZhaWxlZCAlZFxuIiwgZXJyKSk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICBhY2Nlc3MtPmdjX2hvb2soYWNjZXNzKTsKKyAgICBhY2Nlc3MtPnN5bmNocm9uaXplZCA9IChlcnIgPT0gMCk7CisjZW5kaWYKKworb3V0OgorICAgIHJldHVybiAoZXJyID09IDAgPyAwIDogLTEpOworfQorCitpbnQgbmV0c25tcF9hY2Nlc3NfYXJwX3VubG9hZChuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzcykKK3sKKyAgICBhY2Nlc3MtPnN5bmNocm9uaXplZCA9IDA7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorX2xvYWRfYXJwX3RhYmxlX2Zyb21fc3lzY3RsKG5ldHNubXBfYXJwX2FjY2VzcyAqYWNjZXNzKQoreworICAgIG5ldHNubXBfYXJwX2VudHJ5ICplbnRyeTsKKyAgICBzdHJ1Y3QgcnRfbXNnaGRyICpydG07CisgICAgc3RydWN0IHNvY2thZGRyX2luYXJwICpzaW4yOworICAgIHN0cnVjdCBzb2NrYWRkcl9kbCAqc2RsOworICAgIGNoYXIgKmJ1ZiwgKmxpbSwgKm5ld2J1ZiwgKm5leHQ7CisgICAgaW50IG1pYls2XTsKKyAgICBzaXplX3QgbmVlZGVkOworICAgIGludCBlcnIsIHN0OworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBhY2Nlc3MpOworCisgICAgbWliWzBdID0gQ1RMX05FVDsKKyAgICBtaWJbMV0gPSBQRl9ST1VURTsKKyAgICBtaWJbMl0gPSAwOworICAgIG1pYlszXSA9IEFGX0lORVQ7CisgICAgbWliWzRdID0gTkVUX1JUX0ZMQUdTOworICAgIG1pYls1XSA9IFJURl9MTElORk87CisKKyAgICBlcnIgPSAwOworICAgIGJ1ZiA9IG5ld2J1ZiA9IE5VTEw7CisKKyAgICAvKiBUaGUgZm9sbG93aW5nIGxvZ2ljIHdhcyBhZGFwdGVkIGZyb20gc2VhcmNoKC4uKSBpbiB1c3Iuc2Jpbi9hcnAvYXJwLmMgKi8KKworICAgIGlmIChzeXNjdGwobWliLCA2LCBOVUxMLCAmbmVlZGVkLCBOVUxMLCAwKSA8IDApIHsKKyAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIC8qIEVtcHR5IGFycCB0YWJsZS4gKi8KKyAgICBpZiAobmVlZGVkID09IDApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgZm9yICg7OykgeworICAgICAgICBuZXdidWYgPSByZWFsbG9jKGJ1ZiwgbmVlZGVkKTsKKyAgICAgICAgaWYgKG5ld2J1ZiA9PSBOVUxMKSB7CisgICAgICAgICAgICBlcnIgPSBFTk9NRU07CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgICAgICBidWYgPSBuZXdidWY7CisgICAgICAgIHN0ID0gc3lzY3RsKG1pYiwgNiwgYnVmLCAmbmVlZGVkLCBOVUxMLCAwKTsKKyAgICAgICAgaWYgKHN0ID09IDAgfHwgZXJybm8gIT0gRU5PTUVNKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5lZWRlZCArPSBuZWVkZWQgLyA4OyAvKiBYWFg6IHdoeSA4PyAqLworICAgIH0KKyAgICBpZiAoc3QgPT0gLTEpIHsKKyAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGxpbSA9IGJ1ZiArIG5lZWRlZDsKKyAgICBmb3IgKG5leHQgPSBidWY7IG5leHQgPCBsaW07IG5leHQgKz0gcnRtLT5ydG1fbXNnbGVuKSB7CisKKyAgICAgICAgcnRtID0gKHN0cnVjdCBydF9tc2doZHIgKiluZXh0OworICAgICAgICBzaW4yID0gKHN0cnVjdCBzb2NrYWRkcl9pbmFycCopKHJ0bSArIDEpOworI2lmZGVmIFNBX1NJWkUKKyAgICAgICAgc2RsID0gKHN0cnVjdCBzb2NrYWRkcl9kbCopKChjaGFyICopc2luMiArIFNBX1NJWkUoc2luMikpOworI2Vsc2UKKwlzZGwgPSAoc3RydWN0IHNvY2thZGRyX2RsKikodm9pZCAqKShSVF9ST1VORFVQKHNpbjItPnNpbl9sZW4pICsgKGNoYXIgKikodm9pZCAqKXNpbjIpOworI2VuZGlmCisKKyAgICAgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19hcnBfZW50cnlfY3JlYXRlKCk7CisgICAgICAgIGlmIChOVUxMID09IGVudHJ5KSB7CisgICAgICAgICAgICBlcnIgPSBFTk9NRU07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGVudHJ5LT5nZW5lcmF0aW9uID0gYWNjZXNzLT5nZW5lcmF0aW9uOworICAgICAgICBlbnRyeS0+aWZfaW5kZXggPSBydG0tPnJ0bV9pbmRleDsKKworICAgICAgICBlbnRyeS0+YXJwX2lwYWRkcmVzc19sZW4gPSA0OworCisgICAgICAgIG1lbWNweShlbnRyeS0+YXJwX2lwYWRkcmVzcywgJnNpbjItPnNpbl9hZGRyLnNfYWRkciwKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbik7CisKKyAgICAgICAgLyogSFcgQWRkcmVzcyAqLworICAgICAgICBlbnRyeS0+YXJwX3BoeXNhZGRyZXNzX2xlbiA9IDY7CisgICAgICAgIGlmICgwIDwgc2RsLT5zZGxfYWxlbikgeworICAgICAgICAgICAgbWVtY3B5KGVudHJ5LT5hcnBfcGh5c2FkZHJlc3MsIExMQUREUihzZGwpLCBzZGwtPnNkbF9hbGVuKTsKKyAgICAgICAgICAgIC8qIFByb2Nlc3Mgc3RhdHVzICovCisgICAgICAgICAgICAvKiBYWFg6IHNldHRpbmcgdGhpcyB2YWx1ZSBmb3IgYWxsIHN0YXRlcyBpcyB3cm9uZy4gKi8KKyAgICAgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBJTkVUTkVUVE9NRURJQVNUQVRFX1JFQUNIQUJMRTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfcGh5c2FkZHJlc3NbMF0gPSAnXDAnOworICAgICAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfSU5DT01QTEVURTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFByb2Nlc3MgdHlwZSAqLworICAgICAgICAvKiBYWFg6IG1vcmUgc3RhdGVzIHNob3VsZCBiZSBoYW5kbGVkIGhlcmUsIHByb2JhYmx5Li4gKi8KKyAgICAgICAgaWYgKHJ0bS0+cnRtX3JteC5ybXhfZXhwaXJlID09IDApCisgICAgICAgICAgICBlbnRyeS0+YXJwX3R5cGUgPSBJTkVUTkVUVE9NRURJQVRZUEVfU1RBVElDOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbnRyeS0+YXJwX3R5cGUgPSBJTkVUTkVUVE9NRURJQVRZUEVfRFlOQU1JQzsKKworICAgICAgICBhY2Nlc3MtPnVwZGF0ZV9ob29rKGFjY2VzcywgZW50cnkpOworCisgICAgfQorCitvdXQ6CisgICAgZnJlZShidWYpOworICAgIHJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQKK19sb2FkX25kcF90YWJsZV9mcm9tX3N5c2N0bChuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzcykKK3sKKyNpZiAxCisgICAgbmV0c25tcF9hcnBfZW50cnkgKmVudHJ5OworICAgIHN0cnVjdCBydF9tc2doZHIgKnJ0bTsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW4yOworICAgIHN0cnVjdCBzb2NrYWRkcl9kbCAqc2RsOworICAgIHNpemVfdCBuZWVkZWQ7CisgICAgaW50IGVyciwgbWliWzZdLCBzdDsKKyAgICBjaGFyICpidWYsICpsaW0sICpuZXdidWYsICpuZXh0OworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBhY2Nlc3MpOworCisgICAgbWliWzBdID0gQ1RMX05FVDsKKyAgICBtaWJbMV0gPSBQRl9ST1VURTsKKyAgICBtaWJbMl0gPSAwOworICAgIG1pYlszXSA9IEFGX0lORVQ2OworICAgIG1pYls0XSA9IE5FVF9SVF9GTEFHUzsKKyAgICBtaWJbNV0gPSBSVEZfTExJTkZPOworCisgICAgZXJyID0gMDsKKyAgICBidWYgPSBuZXdidWYgPSBOVUxMOworCisgICAgaWYgKHN5c2N0bChtaWIsIDYsIE5VTEwsICZuZWVkZWQsIE5VTEwsIDApIDwgMCkgeworICAgICAgICBlcnIgPSBlcnJubzsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgLyogRW1wdHkgYXJwIHRhYmxlLiAqLworICAgIGlmIChuZWVkZWQgPT0gMCkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIG5ld2J1ZiA9IHJlYWxsb2MoYnVmLCBuZWVkZWQpOworICAgICAgICBpZiAobmV3YnVmID09IE5VTEwpIHsKKyAgICAgICAgICAgIGVyciA9IEVOT01FTTsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisgICAgICAgIGJ1ZiA9IG5ld2J1ZjsKKyAgICAgICAgc3QgPSBzeXNjdGwobWliLCA2LCBidWYsICZuZWVkZWQsIE5VTEwsIDApOworICAgICAgICBpZiAoc3QgPT0gMCB8fCBlcnJubyAhPSBFTk9NRU0pCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbmVlZGVkICs9IG5lZWRlZCAvIDg7IC8qIFhYWDogd2h5IDg/ICovCisgICAgfQorICAgIGlmIChzdCA9PSAtMSkgeworICAgICAgICBlcnIgPSBlcnJubzsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgbGltID0gYnVmICsgbmVlZGVkOworICAgIGZvciAobmV4dCA9IGJ1ZjsgbmV4dCA8IGxpbTsgbmV4dCArPSBydG0tPnJ0bV9tc2dsZW4pIHsKKworICAgICAgICBydG0gPSAoc3RydWN0IHJ0X21zZ2hkciAqKW5leHQ7CisgICAgICAgIHNpbjIgPSAoc3RydWN0IHNvY2thZGRyX2luNiopKHJ0bSArIDEpOworI2lmZGVmIFNBX1NJWkUKKyAgICAgICAgc2RsID0gKHN0cnVjdCBzb2NrYWRkcl9kbCopKChjaGFyICopc2luMiArIFNBX1NJWkUoc2luMikpOworI2Vsc2UKKwlzZGwgPSAoc3RydWN0IHNvY2thZGRyX2RsKikodm9pZCAqKShSVF9ST1VORFVQKHNpbjItPnNpbjZfbGVuKSArIChjaGFyICopKHZvaWQgKilzaW4yKTsKKyNlbmRpZgorCisgICAgICAgIGlmICghKHJ0bS0+cnRtX2ZsYWdzICYgUlRGX0hPU1QpIHx8CisgICAgICAgICAgICBJTjZfSVNfQUREUl9NVUxUSUNBU1QoJnNpbjItPnNpbjZfYWRkcikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV9jcmVhdGUoKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gZW50cnkpIHsKKyAgICAgICAgICAgIGVyciA9IEVOT01FTTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZW50cnktPmdlbmVyYXRpb24gPSBhY2Nlc3MtPmdlbmVyYXRpb247CisgICAgICAgIGVudHJ5LT5pZl9pbmRleCA9IHJ0bS0+cnRtX2luZGV4OworCisgICAgICAgIGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbiA9IDE2OworCisgICAgICAgIG1lbWNweShlbnRyeS0+YXJwX2lwYWRkcmVzcywgJnNpbjItPnNpbjZfYWRkci5zNl9hZGRyLAorICAgICAgICAgICAgZW50cnktPmFycF9pcGFkZHJlc3NfbGVuKTsKKworICAgICAgICAvKiBIVyBBZGRyZXNzICovCisgICAgICAgIGVudHJ5LT5hcnBfcGh5c2FkZHJlc3NfbGVuID0gc2RsLT5zZGxfYWxlbjsKKyAgICAgICAgaWYgKDAgPCBzZGwtPnNkbF9hbGVuKSB7CisgICAgICAgICAgICBtZW1jcHkoZW50cnktPmFycF9waHlzYWRkcmVzcywgTExBRERSKHNkbCksIHNkbC0+c2RsX2FsZW4pOworICAgICAgICAgICAgLyogUHJvY2VzcyBzdGF0dXMgKi8KKyAgICAgICAgICAgIC8qIFhYWDogc2V0dGluZyB0aGlzIHZhbHVlIGZvciBhbGwgc3RhdGVzIGlzIHdyb25nLiAqLworICAgICAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfUkVBQ0hBQkxFOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW50cnktPmFycF9waHlzYWRkcmVzc1swXSA9ICdcMCc7CisgICAgICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9JTkNPTVBMRVRFOworICAgICAgICB9CisKKyAgICAgICAgLyogUHJvY2VzcyB0eXBlICovCisgICAgICAgIC8qIFhYWDogbW9yZSBzdGF0ZXMgc2hvdWxkIGJlIGhhbmRsZWQgaGVyZSwgcHJvYmFibHkuLiAqLworICAgICAgICBpZiAocnRtLT5ydG1fcm14LnJteF9leHBpcmUgPT0gMCkKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfdHlwZSA9IElORVRORVRUT01FRElBVFlQRV9TVEFUSUM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfdHlwZSA9IElORVRORVRUT01FRElBVFlQRV9EWU5BTUlDOworCisgICAgICAgIGFjY2Vzcy0+dXBkYXRlX2hvb2soYWNjZXNzLCBlbnRyeSk7CisKKyAgICB9CisKK291dDoKKyAgICBmcmVlKGJ1Zik7CisgICAgcmV0dXJuIGVycjsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlci5oCmluZGV4IGE0ZGZiYjEuLjQ5Yjk5MjcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXIuaApAQCAtMjAsNiArMjAsOCBAQAogY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfY29tbW9uKQogI2lmIGRlZmluZWQoIGxpbnV4ICkKIGNvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyX2xpbnV4KQorI2VsaWYgZGVmaW5lZCggZnJlZWJzZDQgKSB8fCBkZWZpbmVkKCBuZXRic2Q1ICkgfHwgZGVmaW5lZCggb3BlbmJzZCApIHx8IGRlZmluZWQoIGRyYWdvbmZseSApIHx8IGRlZmluZWQoIGRhcndpbiApCitjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcl9zeXNjdGwpCiAjZWxzZQogLyoKICAqIGNvdWxkbid0IGRldGVybWluZSB0aGUgY29ycmVjdCBmaWxlIQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfc3lzY3RsLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcl9zeXNjdGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzQ2ZWI4Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfc3lzY3RsLmMKQEAgLTAsMCArMSwyMzAgQEAKKy8qCisgKiAgSW50ZXJmYWNlIE1JQiBhcmNoaXRlY3R1cmUgc3VwcG9ydAorICoKKyAqICRJZDokCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyLmg+CisKKyNpbmNsdWRlICJpcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuaCIKKworI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CisjaW5jbHVkZSA8bmV0L3JvdXRlLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpZiAhZGVmaW5lZChTQV9TSVpFKSAmJiAhZGVmaW5lZChSVF9ST1VORFVQKQorI2RlZmluZSBSVF9ST1VORFVQKGEpICBcCisgICAgICAgICgoYSkgPiAwID8gKDEgKyAoKChhKSAtIDEpIHwgKHNpemVvZihsb25nKSAtIDEpKSkgOiBzaXplb2YobG9uZykpCisjZW5kaWYKKworLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBsb2NhbCBzdGF0aWMgcHJvdG90eXBlcworICovCitzdGF0aWMgaW50IF9sb2FkX2RlZmF1bHRyb3V0ZXJfZnJvbV9zeXNjdGwobmV0c25tcF9jb250YWluZXIgKiwgaW50KTsKKworc3RhdGljIGludCBpZHhfb2Zmc2V0OworCisvKgorICogaW5pdGlhbGl6ZSBhcmNoIHNwZWNpZmljIHN0b3JhZ2UKKyAqCisgKiBAcmV0dmFsICAwOiBzdWNjZXNzCisgKiBAcmV0dmFsIDwwOiBlcnJvcgorICovCitpbnQKK25ldHNubXBfYXJjaF9kZWZhdWx0cm91dGVyX2VudHJ5X2luaXQobmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICplbnRyeSkKK3sKKyAgICAvKgorICAgICAqIGluaXQKKyAgICAgKi8KKyAgICByZXR1cm4gMDsKK30KKworLyoqCisgKgorICogQHJldHZhbCAgMCBubyBlcnJvcnMKKyAqIEByZXR2YWwgITAgZXJyb3JzCisgKi8KK2ludAorbmV0c25tcF9hcmNoX2RlZmF1bHRyb3V0ZXJfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGxvYWRfZmxhZ3MpCit7CisgICAgaW50IGVycjsKKworICAgIGVyciA9IDA7CisgICAgaWR4X29mZnNldCA9IDA7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRlZmF1bHRyb3V0ZXI6ZW50cnk6YXJjaCIsICJsb2FkXG4iKSk7CisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAibmV0c25tcF9hcmNoX2RlZmF1bHRyb3V0ZXJfY29udGFpbmVyX2xvYWQ6IGNvbnRhaW5lciBpbnZhbGlkXG4iKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgZXJyID0gX2xvYWRfZGVmYXVsdHJvdXRlcl9mcm9tX3N5c2N0bChjb250YWluZXIsIEFGX0lORVQpOworICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICB1X2ludCBmbGFncyA9IE5FVFNOTVBfQUNDRVNTX0RFRkFVTFRST1VURVJfRlJFRV9LRUVQX0NPTlRBSU5FUjsKKyAgICAgICAgbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9jb250YWluZXJfZnJlZShjb250YWluZXIsIGZsYWdzKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorICAgIGVyciA9IF9sb2FkX2RlZmF1bHRyb3V0ZXJfZnJvbV9zeXNjdGwoY29udGFpbmVyLCBBRl9JTkVUNik7CisgICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgIHVfaW50IGZsYWdzID0gTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9GUkVFX0tFRVBfQ09OVEFJTkVSOworICAgICAgICBuZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lciwgZmxhZ3MpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisjZW5kaWYKKworb3V0OgorICAgIHJldHVybiBlcnI7Cit9CisKKy8qKgorICoKKyAqIEByZXR2YWwgIDAgbm8gZXJyb3JzCisgKiBAcmV0dmFsICEwIGVycm9ycworICovCitzdGF0aWMgaW50CitfbG9hZF9kZWZhdWx0cm91dGVyX2Zyb21fc3lzY3RsKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGludCBmYW1pbHkpCit7CisgICAgbmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICplbnRyeTsKKyAgICBzdHJ1Y3QgcnRfbXNnaGRyICpydG07CisgICAgc3RydWN0IHNvY2thZGRyICpkc3Rfc2EsICpnd19zYTsKKyAgICBjaGFyICpidWYsICpsaW0sICpuZXdidWYsICpuZXh0OworICAgIGNoYXIgYWRkcmVzc1tORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0JVRl9TSVpFXTsKKyAgICBpbnQgbWliWzZdOworICAgIHNpemVfdCBhZGRyZXNzX2xlbiwgbmVlZGVkOworICAgIGludCBhZGRyZXNzX3R5cGUsIGVyciwgcHJlZmVyZW5jZSwgc3Q7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGNvbnRhaW5lcik7CisKKyAgICBtaWJbMF0gPSBDVExfTkVUOworICAgIG1pYlsxXSA9IFBGX1JPVVRFOworICAgIG1pYlsyXSA9IDA7CisgICAgbWliWzNdID0gZmFtaWx5OworICAgIG1pYls0XSA9IE5FVF9SVF9EVU1QOworICAgIG1pYls1XSA9IDA7CisKKyAgICBlcnIgPSAwOworCisgICAgYnVmID0gbmV3YnVmID0gTlVMTDsKKworICAgIGlmIChmYW1pbHkgPT0gQUZfSU5FVCkgeworICAgICAgICBhZGRyZXNzX2xlbiA9IDQ7CisgICAgICAgIGFkZHJlc3NfdHlwZSA9IElORVRBRERSRVNTVFlQRV9JUFY0OworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICB9IGVsc2UgaWYgKGZhbWlseSA9PSBBRl9JTkVUNikgeworICAgICAgICBhZGRyZXNzX2xlbiA9IDE2OworICAgICAgICBhZGRyZXNzX3R5cGUgPSBJTkVUQUREUkVTU1RZUEVfSVBWNjsKKyNlbmRpZgorICAgIH0gZWxzZSB7CisgICAgICAgIGVyciA9IEVJTlZBTDsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgaWYgKHN5c2N0bChtaWIsIDYsIE5VTEwsICZuZWVkZWQsIE5VTEwsIDApIDwgMCkgeworICAgICAgICBlcnIgPSBlcnJubzsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgLyogRW1wdHkgYXJwIHRhYmxlLiAqLworICAgIGlmIChuZWVkZWQgPT0gMCkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIG5ld2J1ZiA9IHJlYWxsb2MoYnVmLCBuZWVkZWQpOworICAgICAgICBpZiAobmV3YnVmID09IE5VTEwpIHsKKyAgICAgICAgICAgIGVyciA9IEVOT01FTTsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisgICAgICAgIGJ1ZiA9IG5ld2J1ZjsKKyAgICAgICAgc3QgPSBzeXNjdGwobWliLCBzaXplb2YobWliKSAvIHNpemVvZihtaWJbMF0pLCBidWYsICZuZWVkZWQsIE5VTEwsIDApOworICAgICAgICBpZiAoc3QgPT0gMCB8fCBlcnJubyAhPSBFTk9NRU0pCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbmVlZGVkICs9IG5lZWRlZCAvIDg7IC8qIFhYWDogd2h5IDg/ICovCisgICAgfQorICAgIGlmIChzdCA9PSAtMSkgeworICAgICAgICBlcnIgPSBlcnJubzsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgbGltID0gYnVmICsgbmVlZGVkOworICAgIGZvciAobmV4dCA9IGJ1ZjsgbmV4dCA8IGxpbTsgbmV4dCArPSBydG0tPnJ0bV9tc2dsZW4pIHsKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisJc3RydWN0IGluNl9hZGRyIGluNmFkZHJfYW55ID0gSU42QUREUl9BTllfSU5JVDsKKyNlbmRpZgorCisgICAgICAgIHJ0bSA9IChzdHJ1Y3QgcnRfbXNnaGRyICopbmV4dDsKKworICAgICAgICBpZiAoIShydG0tPnJ0bV9hZGRycyAmIFJUQV9HQVRFV0FZKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGRzdF9zYSA9IChzdHJ1Y3Qgc29ja2FkZHIqKShydG0gKyAxKTsKKyNpZmRlZiBTQV9TSVpFCisgICAgICAgIGd3X3NhID0gKHN0cnVjdCBzb2NrYWRkciopKFNBX1NJWkUoZHN0X3NhKSArIChjaGFyKilkc3Rfc2EpOworI2Vsc2UKKyAgICAgICAgZ3dfc2EgPSAoc3RydWN0IHNvY2thZGRyKikoUlRfUk9VTkRVUChkc3Rfc2EtPnNhX2xlbikgKyAoY2hhciopZHN0X3NhKTsKKyNlbmRpZgorCisgICAgICAgIHN3aXRjaCAoZmFtaWx5KSB7CisgICAgICAgIGNhc2UgQUZfSU5FVDoKKyAgICAgICAgICAgIGlmICgoKHN0cnVjdCBzb2NrYWRkcl9pbiopZHN0X3NhKS0+c2luX2FkZHIuc19hZGRyICE9IElOQUREUl9BTlkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisJICAgIG1lbWNweShhZGRyZXNzLCAmKChzdHJ1Y3Qgc29ja2FkZHJfaW4qKWd3X3NhKS0+c2luX2FkZHIuc19hZGRyLAorCSAgICAgICAgICAgYWRkcmVzc19sZW4pOworICAgICAgICAgICAgYnJlYWs7CisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorICAgICAgICBjYXNlIEFGX0lORVQ2OgorICAgICAgICAgICAgaWYgKG1lbWNtcCgoKHN0cnVjdCBzb2NrYWRkcl9pbjYqKWRzdF9zYSktPnNpbjZfYWRkci5zNl9hZGRyLAorCQkJJmluNmFkZHJfYW55LCBzaXplb2YgaW42YWRkcl9hbnkpICE9IDApCisJCWNvbnRpbnVlOyAvKiBYWFg6IG5lZWQgdG8gZGV0ZXJtaW5lIHF1YWxpZnlpbmcgY3JpdGVyaWEgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICogZGVmYXVsdCBnYXRld2F5cyBpbiBJUHY2LiAqLworICAgICAgICAgICAgbWVtY3B5KGFkZHJlc3MsICYoKHN0cnVjdCBzb2NrYWRkcl9pbjYqKWRzdF9zYSktPnNpbjZfYWRkci5zNl9hZGRyLAorCQkgICBhZGRyZXNzX2xlbik7CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfY3JlYXRlKCk7CisgICAgICAgIGlmIChOVUxMID09IGVudHJ5KSB7CisgICAgICAgICAgICBlcnIgPSBFTk9NRU07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFhYWDogdGhpcyBpcyB3cm9uZyAoaGFyZGNvZGluZyB0aGUgcm91dGVyIHByZWZlcmVuY2UgdG8gbWVkaXVtKS4gKi8KKyAgICAgICAgcHJlZmVyZW5jZSA9IDA7CisKKyAgICAgICAgZW50cnktPm5zX2RyX2luZGV4ICAgID0gKytpZHhfb2Zmc2V0OworICAgICAgICBlbnRyeS0+ZHJfYWRkcmVzc3R5cGUgPSBhZGRyZXNzX3R5cGU7CisgICAgICAgIGVudHJ5LT5kcl9hZGRyZXNzX2xlbiA9IGFkZHJlc3NfbGVuOworICAgICAgICBtZW1jcHkoZW50cnktPmRyX2FkZHJlc3MsIGFkZHJlc3MsIHNpemVvZihhZGRyZXNzKSk7CisgICAgICAgIGVudHJ5LT5kcl9pZl9pbmRleCA9IHJ0bS0+cnRtX2luZGV4OworICAgICAgICBlbnRyeS0+ZHJfbGlmZXRpbWUgICAgPSBydG0tPnJ0bV9ybXgucm14X2V4cGlyZTsKKyAgICAgICAgZW50cnktPmRyX3ByZWZlcmVuY2UgID0gcHJlZmVyZW5jZTsKKworICAgICAgICBpZiAoQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KSA8IDApIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6YXJwOmNvbnRhaW5lciIsCisgICAgICAgICAgICAgICAgICAgICAgICAiZXJyb3Igd2l0aCBkZWZhdWx0cm91dGVyX2VudHJ5OiAiCisgICAgICAgICAgICAgICAgICAgICAgICAiaW5zZXJ0IGludG8gY29udGFpbmVyIGZhaWxlZC5cbiIpKTsKKyAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfZnJlZShlbnRyeSk7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgIH0KKworb3V0OgorICAgIGZyZWUoYnVmKTsKKyAgICByZXR1cm4gZXJyOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oCmluZGV4IDljZjgxODEuLmQ3OWM3YzIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmgKQEAgLTIyLDYgKzIyLDggQEAKIGNvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXgpCiAjZWxpZiBkZWZpbmVkKCBzb2xhcmlzMiApCiBjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX3NvbGFyaXMyKQorI2VsaWYgZGVmaW5lZCggZnJlZWJzZDcgKSB8fCBkZWZpbmVkKCBuZXRic2Q1ICkgfHwgZGVmaW5lZCggb3BlbmJzZDQgKSB8fCBkZWZpbmVkKCBkcmFnb25mbHkgKSB8fCBkZWZpbmVkKCBkYXJ3aW4gKQorY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zeXNjdGwpCiAjZWxzZQogY29uZmlnX2Vycm9yKHRoZSBpcGFkZHJlc3MgZGF0YSBhY2Nlc3MgbGlicmFyeSBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnQuKQogI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbi5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYwppbmRleCBiOWYzYzY3Li5hNjYzOTg1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbi5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMKQEAgLTEyLDYgKzEyLDE5IEBACiAKICNpbmNsdWRlICJpcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfY29uc3RhbnRzLmgiCiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBhZGRyZXNzX2NvbW1vbiwgbGlibmV0c25tcG1pYnMpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcGFkZHJlc3NfY29tbW9uX2NvcHlfdXRpbGl0aWVzLCBpcGFkZHJlc3NfY29tbW9uKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwYWRkcmVzc19lbnRyeV9jb3B5LCBpcGFkZHJlc3NfY29tbW9uKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwYWRkcmVzc19lbnRyeV91cGRhdGUsIGlwYWRkcmVzc19jb21tb24pCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBhZGRyZXNzX3ByZWZpeF9jb3B5LCBpcGFkZHJlc3NfY29tbW9uX2NvcHlfdXRpbGl0aWVzKQorCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfSVBBRERSRVNTX0VOVFJZX0NPUFkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGlwYWRkcmVzc19hcmNoX2VudHJ5X2NvcHkpCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfSVBBRERSRVNTX0VOVFJZX0NPUFkgKi8KKwogLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qCiAgKiBsb2NhbCBzdGF0aWMgcHJvdG90eXBlcwpAQCAtMjQ3LDYgKzI2MCw3IEBACiAgICAgcmV0dXJuIHJjOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTX0VOVFJZX1VQREFURQogLyoqCiAgKiB1cGRhdGUgYW4gb2xkIGlwYWRkcmVzc19lbnRyeSBmcm9tIGEgbmV3IG9uZQogICoKQEAgLTMyOSw3ICszNDMsOSBAQAogCiAgICAgcmV0dXJuIGNoYW5nZWQ7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NfRU5UUllfVVBEQVRFICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NfRU5UUllfQ09QWQogLyoqCiAgKiBjb3B5IGFuICBpcGFkZHJlc3NfZW50cnkKICAqCkBAIC0zNjEsMTIgKzM3NywxNCBAQAogICAgIAogICAgIHJldHVybiAwOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTX0VOVFJZX0NPUFkgKi8KIAogLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qCiAgKiBVdGlsaXR5IHJvdXRpbmVzCiAgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU19QUkVGSVhfQ09QWQogLyoqCiAgKiBjb3B5IHRoZSBwcmVmaXggcG9ydGlvbiBvZiBhbiBpcCBhZGRyZXNzCiAgKi8KQEAgLTM5Miw2ICs0MTAsNyBAQAogCiAgICAgcmV0dXJuIHBmeF9sZW47CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NfUFJFRklYX0NPUFkgKi8KIAogCiAvKioKQEAgLTQyMiw2ICs0NDEsNTAgQEAKICAgICByZXR1cm4gbGVuOwogfQogCitpbl9hZGRyX3QgbmV0c25tcF9pcGFkZHJlc3NfaXB2NF9tYXNrKGludCBsZW4pCit7CisgICAgaW50IGkgPSAwLCBtID0gMHg4MDsKKyAgICBpbl9hZGRyX3QgbWFzazsKKyAgICB1bnNpZ25lZCBjaGFyICptcCA9ICh1bnNpZ25lZCBjaGFyICopJm1hc2s7CisKKyAgICBpZiAobGVuIDwgMCB8fCBsZW4gPiAzMikgYWJvcnQoKTsKKworICAgIG1lbXNldChtcCwgMCwgc2l6ZW9mKG1hc2spKTsKKworICAgIHdoaWxlIChsZW4gPj0gOCkgeworICAgICAgICBtcFtpXSA9IDB4RkY7CisJbGVuIC09IDg7CisJaSsrOworICAgIH0KKyAgICB3aGlsZSAobGVuKSB7CisgICAgICAgIG1wW2ldIHw9IG07CisJbSA+Pj0gMTsKKwlsZW4tLTsKKyAgICB9CisgICAgcmV0dXJuIG1hc2s7Cit9CisKK2ludAorbmV0c25tcF9pcGFkZHJlc3NfaXB2Nl9wcmVmaXhfbGVuKHN0cnVjdCBpbjZfYWRkciBtYXNrKQoreworICAgIGludCBpLCBsZW4gPSAwOworICAgIHVuc2lnbmVkIGNoYXIgKm1wID0gKHVuc2lnbmVkIGNoYXIgKikmbWFzay5zNl9hZGRyOworCisgICAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCisJaWYgKG1wW2ldID09IDB4RkYpIGxlbiArPSA4OworCWVsc2UgYnJlYWs7CisKKyAgICBpZiAoaSA9PSAxNikKKwlyZXR1cm4gbGVuOworCisgICAgd2hpbGUoMHg4MCAmIG1wW2ldKSB7CisgICAgICAgICsrbGVuOworICAgICAgICBtcFtpXSA8PD0gMTsKKyAgICB9CisKKyAgICByZXR1cm4gbGVuOworfQorCiAKIC8qKgogICovCkBAIC00NTQsNiArNTE3LDcgQEAKICAgICByZXR1cm4gbWVtY21wKGxoLT5pYV9hZGRyZXNzLCByaC0+aWFfYWRkcmVzcywgbGgtPmlhX2FkZHJlc3NfbGVuKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU19DT01NT05fQ09QWV9VVElMSVRJRVMKIGludAogbmV0c25tcF9pcGFkZHJlc3NfZmxhZ3NfY29weSh1X2xvbmcgKmlwQWRkcmVzc1ByZWZpeEFkdlByZWZlcnJlZExpZmV0aW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKmlwQWRkcmVzc1ByZWZpeEFkdlZhbGlkTGlmZXRpbWUsCkBAIC00OTgsNCArNTYyLDUgQEAKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NfQ09NTU9OX0NPUFlfVVRJTElUSUVTICovCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYwppbmRleCBmMjgxYmI2Li42MDI1ZjA1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jCkBAIC00LDYgKzQsNyBAQAogICogJElkJAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgIm1pYklJL21pYklJX2NvbW1vbi5oIgogCkBAIC0yMCw2ICsyMSw4IEBACiAKICNpbmNsdWRlICJpcGFkZHJlc3NfaW9jdGwuaCIKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwYWRyZXNzX2lvY3RsX2VudHJ5X2NvcHksIGlwYWRkcmVzc19jb21tb24pCisKIHN0YXRpYyB2b2lkIF9wcmludF9mbGFncyhzaG9ydCBmbGFncyk7CiAKICNkZWZpbmUgTElTVF9UT0tFTiAiaW9jdGxfZXh0cmFzIgpAQCAtODYsNiArODksNyBAQAogICAgIG5ldHNubXBfcmVtb3ZlX2xpc3Rfbm9kZSgmZW50cnktPmFyY2hfZGF0YSwgTElTVF9UT0tFTik7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NfSU9DVExfRU5UUllfQ09QWQogLyoqCiAgKiBjb3B5IGlvY3RsIGV4dHJhcwogICoKQEAgLTEyMiw2ICsxMjYsNyBAQAogCiAgICAgcmV0dXJuIHJjOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTX0lPQ1RMX0VOVFJZX0NPUFkgKi8KIAogLyoqCiAgKiBsb2FkIGlwdjQgYWRkcmVzcyB2aWEgaW9jdGwKQEAgLTE1OSw2ICsxNjQsMTQgQEAKIAogICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXIiLAogICAgICAgICAgICAgICAgICAgICAiIGludGVyZmFjZSAlZCwgJXNcbiIsIGksIGlmcnAtPmlmcl9uYW1lKSk7CisKKyAgICAgICAgaWYgKEFGX0lORVQgIT0gaWZycC0+aWZyX2FkZHIuc2FfZmFtaWx5KSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgIiBza2lwcGluZyAlczsgbm9uIEFGX0lORVQgZmFtaWx5ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgaWZycC0+aWZyX25hbWUsIGlmcnAtPmlmcl9hZGRyLnNhX2ZhbWlseSkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICAvKgogICAgICAgICAgKi8KICAgICAgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19pcGFkZHJlc3NfZW50cnlfY3JlYXRlKCk7CkBAIC0xODMsNyArMTk2LDYgQEAKICAgICAgICAgLyoKICAgICAgICAgICogc2V0IGluZGV4ZXMKICAgICAgICAgICovCi0gICAgICAgIG5ldHNubXBfYXNzZXJ0KEFGX0lORVQgPT0gaWZycC0+aWZyX2FkZHIuc2FfZmFtaWx5KTsKICAgICAgICAgc2kgPSAoc3RydWN0IHNvY2thZGRyX2luICopICZpZnJwLT5pZnJfYWRkcjsKICAgICAgICAgZW50cnktPmlhX2FkZHJlc3NfbGVuID0gc2l6ZW9mKHNpLT5zaW5fYWRkci5zX2FkZHIpOwogICAgICAgICBpcHZhbCA9IHNpLT5zaW5fYWRkci5zX2FkZHI7CkBAIC01NDUsNiArNTU3LDkxIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKworLyoqCisgKiBBZGQvcmVtb3ZlIElQdjYgYWRkcmVzcyB1c2luZyBpb2N0bC4KKyAqIEByZXR2YWwgIDAgOiBubyBlcnJvcgorICogQHJldHZhbCAtMSA6IGJhZCBwYXJhbWV0ZXIKKyAqIEByZXR2YWwgLTIgOiBjb3VsZG4ndCBjcmVhdGUgc29ja2V0CisgKiBAcmV0dmFsIC0zIDogaW9jdGwgZmFpbGVkCisgKi8KK2ludAorX25ldHNubXBfaW9jdGxfaXBhZGRyZXNzX3Y2KG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICogZW50cnksIGludCBvcGVyYXRpb24pCit7CisjaWZkZWYgbGludXgKKyAgICAvKgorICAgICAqIEZyb20gbGludXgvaXB2Ni5oLiBJdCBjYW5ub3QgYmUgaW5jbHVkZWQgYmVjYXVzZSBpdCBjb2xsaWRlcworICAgICAqIHdpdGggbmV0aW5ldC9pbi5oCisgICAgICovCisgICAgc3RydWN0IGluNl9pZnJlcSB7CisgICAgICAgICAgICBzdHJ1Y3QgaW42X2FkZHIgaWZyNl9hZGRyOworICAgICAgICAgICAgdWludDMyX3QgICAgICAgIGlmcjZfcHJlZml4bGVuOworICAgICAgICAgICAgaW50ICAgICAgICAgICAgIGlmcjZfaWZpbmRleDsKKyAgICB9OworCisgICAgc3RydWN0IGluNl9pZnJlcSAgICAgICAgICAgICAgIGlmcnE7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjLCBmZCA9IC0xOworCisgICAgREVCVUdNU0dUKCgiYWNjZXNzOmlwYWRkcmVzczpzZXQiLCAiX25ldHNubXBfaW9jdGxfaXBhZGRyZXNzX3NldF92NiBzdGFydGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBlbnRyeSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgbmV0c25tcF9hc3NlcnQoMTYgPT0gZW50cnktPmlhX2FkZHJlc3NfbGVuKTsKKworICAgIGZkID0gc29ja2V0KEFGX0lORVQ2LCBTT0NLX0RHUkFNLCAwKTsKKyAgICBpZihmZCA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiY291bGRuJ3QgY3JlYXRlIHNvY2tldFxuIik7CisgICAgICAgIHJldHVybiAtMjsKKyAgICB9CisgICAgbWVtc2V0KCZpZnJxLCAwLCBzaXplb2YoaWZycSkpOworICAgIGlmcnEuaWZyNl9pZmluZGV4ID0gZW50cnktPmlmX2luZGV4OworICAgIGlmcnEuaWZyNl9wcmVmaXhsZW4gPSA2NDsKKworICAgIG1lbWNweSgmaWZycS5pZnI2X2FkZHIsIGVudHJ5LT5pYV9hZGRyZXNzLAorICAgICAgICAgICBlbnRyeS0+aWFfYWRkcmVzc19sZW4pOworCisgICAgcmMgPSBpb2N0bChmZCwgb3BlcmF0aW9uLCAmaWZycSk7CisgICAgY2xvc2UoZmQpOworICAgIGlmKHJjIDwgMCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBzZXR0aW5nIGFkZHJlc3M6ICVzKCVkKVxuIiwgc3RyZXJyb3IoZXJybm8pLCBlcnJubyk7CisgICAgICAgIHJldHVybiAtMzsKKyAgICB9CisgICAgREVCVUdNU0dUKCgiYWNjZXNzOmlwYWRkcmVzczpzZXQiLCAiX25ldHNubXBfaW9jdGxfaXBhZGRyZXNzX3NldF92NiBmaW5pc2hlZFxuIikpOworICAgIHJldHVybiAwOworI2Vsc2UKKyAgICAvKiB3ZSBkb24ndCBzdXBwb3J0IGlwdjYgb24gdGhpcyBwbGF0Zm9ybSAoeWV0KSAqLworICAgIHJldHVybiAtMzsKKyNlbmRpZgorCit9CisKKy8qKgorICoKKyAqIEByZXR2YWwgIDAgOiBubyBlcnJvcgorICogQHJldHZhbCAtMSA6IGJhZCBwYXJhbWV0ZXIKKyAqIEByZXR2YWwgLTIgOiBjb3VsZG4ndCBjcmVhdGUgc29ja2V0CisgKiBAcmV0dmFsIC0zIDogaW9jdGwgZmFpbGVkCisgKi8KK2ludAorX25ldHNubXBfaW9jdGxfaXBhZGRyZXNzX3NldF92NihuZXRzbm1wX2lwYWRkcmVzc19lbnRyeSAqIGVudHJ5KQoreworICAgIHJldHVybiBfbmV0c25tcF9pb2N0bF9pcGFkZHJlc3NfdjYoZW50cnksIFNJT0NTSUZBRERSKTsKK30KKworLyoqCisgKgorICogQHJldHZhbCAgMCA6IG5vIGVycm9yCisgKiBAcmV0dmFsIC0xIDogYmFkIHBhcmFtZXRlcgorICogQHJldHZhbCAtMiA6IGNvdWxkbid0IGNyZWF0ZSBzb2NrZXQKKyAqIEByZXR2YWwgLTMgOiBpb2N0bCBmYWlsZWQKKyAqLworaW50CitfbmV0c25tcF9pb2N0bF9pcGFkZHJlc3NfZGVsZXRlX3Y2KG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICogZW50cnkpCit7CisgICAgcmV0dXJuIF9uZXRzbm1wX2lvY3RsX2lwYWRkcmVzc192NihlbnRyeSwgU0lPQ0RJRkFERFIpOworfQorCiAvKioKICAqIGdldCB0aGUgaW50ZXJmYWNlIGNvdW50IGFuZCBwb3B1bGF0ZSB0aGUgaWZjX2J1ZgogICoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuaAppbmRleCBmYzZlNzcxLi5mMmI3ODQ3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5oCkBAIC0yMiw2ICsyMiwxMSBAQAogX25ldHNubXBfaW9jdGxfaXBhZGRyZXNzX3JlbW92ZV92NChuZXRzbm1wX2lwYWRkcmVzc19lbnRyeSAqIGVudHJ5KTsKIAogaW50CitfbmV0c25tcF9pb2N0bF9pcGFkZHJlc3Nfc2V0X3Y2KG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICogZW50cnkpOworaW50CitfbmV0c25tcF9pb2N0bF9pcGFkZHJlc3NfcmVtb3ZlX3Y2KG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICogZW50cnkpOworCitpbnQKIG5ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19pb2N0bF9nZXRfaW50ZXJmYWNlX2NvdW50KGludCBzZCwgc3RydWN0IGlmY29uZiAqIGlmYyk7CiAKIHN0cnVjdCBhZGRyZXNzX2ZsYWdfaW5mbwpAQCAtNTAsNiArNTUsOCBAQAogCiBpbnQKIF9uZXRzbm1wX2lvY3RsX2lwYWRkcmVzc19kZWxldGVfdjQobmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKiBlbnRyeSk7CitpbnQKK19uZXRzbm1wX2lvY3RsX2lwYWRkcmVzc19kZWxldGVfdjYobmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKiBlbnRyeSk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jCmluZGV4IDhiMzRlODYuLmYxY2VmMGEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMKQEAgLTQsNiArNCw3IEBACiAgKiAkSWQkCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAibWliSUkvbWliSUlfY29tbW9uLmgiCiAKQEAgLTE4LDYgKzE5LDE1IEBACiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocHJlZml4X2luZm8pCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShmaW5kX3ByZWZpeF9pbmZvKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBhZGRyZXNzX2FyY2hfZW50cnlfY29weSwgaXBhZGRyZXNzX2NvbW1vbikKKworI2lmZGVmIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX0lQQUREUkVTU19BUkNIX0VOVFJZX0NPUFkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGlwYWRkcmVzc19pb2N0bF9lbnRyeV9jb3B5KQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX0lQQUREUkVTU19BUkNIX0VOVFJZX0NPUFkgKi8KKwogI2lmIGRlZmluZWQgKE5FVFNOTVBfRU5BQkxFX0lQVjYpCiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KICNpbmNsdWRlIDxhc20vdHlwZXMuaD4KQEAgLTgzLDYgKzkzLDcgQEAKICAgICAgKi8KIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU19BUkNIX0VOVFJZX0NPUFkKIC8qCiAgKiBjb3B5IGFyY2ggc3BlY2lmaWMgc3RvcmFnZQogICovCkBAIC0xMDYsNiArMTE3LDcgQEAKIAogICAgIHJldHVybiByYzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU19BUkNIX0VOVFJZX0NPUFkgKi8KIAogLyoKICAqIGNyZWF0ZSBhIG5ldyBlbnRyeQpAQCAtMTE2LDEyICsxMjgsMTQgQEAKICAgICBpZiAoTlVMTCA9PSBlbnRyeSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKDQgIT0gZW50cnktPmlhX2FkZHJlc3NfbGVuKSB7Ci0gICAgICAgIERFQlVHTVNHVCgoImFjY2VzczppcGFkZHJlc3M6Y3JlYXRlIiwgIm9ubHkgaXB2NCBzdXBwb3J0ZWRcbiIpKTsKKyAgICBpZiAoNCA9PSBlbnRyeS0+aWFfYWRkcmVzc19sZW4pIHsKKyAgICAgICAgcmV0dXJuIF9uZXRzbm1wX2lvY3RsX2lwYWRkcmVzc19zZXRfdjQoZW50cnkpOworICAgIH0gZWxzZSBpZiAoMTYgPT0gZW50cnktPmlhX2FkZHJlc3NfbGVuKSB7CisgICAgICAgIHJldHVybiBfbmV0c25tcF9pb2N0bF9pcGFkZHJlc3Nfc2V0X3Y2KGVudHJ5KTsKKyAgICB9IGVsc2UgeworICAgICAgICBERUJVR01TR1QoKCJhY2Nlc3M6aXBhZGRyZXNzOmNyZWF0ZSIsICJ3cm9uZyBsZW5ndGggb2YgSVAgYWRkcmVzc1xuIikpOwogICAgICAgICByZXR1cm4gLTI7CiAgICAgfQotCi0gICAgcmV0dXJuIF9uZXRzbm1wX2lvY3RsX2lwYWRkcmVzc19zZXRfdjQoZW50cnkpOwogfQogCiAvKgpAQCAtMTMzLDEyICsxNDcsMTQgQEAKICAgICBpZiAoTlVMTCA9PSBlbnRyeSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKDQgIT0gZW50cnktPmlhX2FkZHJlc3NfbGVuKSB7CisgICAgaWYgKDQgPT0gZW50cnktPmlhX2FkZHJlc3NfbGVuKSB7CisgICAgICAgIHJldHVybiBfbmV0c25tcF9pb2N0bF9pcGFkZHJlc3NfZGVsZXRlX3Y0KGVudHJ5KTsKKyAgICB9IGVsc2UgaWYgKDE2ID09IGVudHJ5LT5pYV9hZGRyZXNzX2xlbikgeworICAgICAgICByZXR1cm4gX25ldHNubXBfaW9jdGxfaXBhZGRyZXNzX2RlbGV0ZV92NihlbnRyeSk7CisgICAgfSBlbHNlIHsKICAgICAgICAgREVCVUdNU0dUKCgiYWNjZXNzOmlwYWRkcmVzczpjcmVhdGUiLCAib25seSBpcHY0IHN1cHBvcnRlZFxuIikpOwogICAgICAgICByZXR1cm4gLTI7CiAgICAgfQotCi0gICAgcmV0dXJuIF9uZXRzbm1wX2lvY3RsX2lwYWRkcmVzc19kZWxldGVfdjQoZW50cnkpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3Nfc29sYXJpczIuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3Nfc29sYXJpczIuYwppbmRleCAzOTc5MDM3Li5lMjQ4NWUzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX3NvbGFyaXMyLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zb2xhcmlzMi5jCkBAIC0zLDYgKzMsNyBAQAogICoKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CkBAIC0xNCw2ICsxNSw4IEBACiAjaW5jbHVkZSAia2VybmVsX3N1bm9zNS5oIgogI2luY2x1ZGUgIm1pYklJL21pYklJX2NvbW1vbi5oIgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBhZGRyZXNzX2FyY2hfZW50cnlfY29weSwgaXBhZGRyZXNzX2NvbW1vbikKKwogc3RhdGljIGludCBfbG9hZF92NChuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCBpbnQgaWR4X29mZnNldCk7CiAjaWYgZGVmaW5lZCggTkVUU05NUF9FTkFCTEVfSVBWNiApCiBzdGF0aWMgaW50IF9sb2FkX3Y2KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGludCBpZHhfb2Zmc2V0KTsKQEAgLTQzLDYgKzQ2LDcgQEAKICAgICAgKi8KIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU19BUkNIX0VOVFJZX0NPUFkKIC8qCiAgKiBjb3B5IGFyY2ggc3BlY2lmaWMgc3RvcmFnZQogICovCkBAIC01NSw2ICs1OSw3IEBACiAgICAgICovCiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NfQVJDSF9FTlRSWV9DT1BZICovCiAKIC8qCiAgKiBjcmVhdGUgYSBuZXcgZW50cnkKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3Nfc3lzY3RsLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX3N5c2N0bC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhNjIyMWIKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX3N5c2N0bC5jCkBAIC0wLDAgKzEsMjcyIEBACisvKgorICogIEludGVyZmFjZSBNSUIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKKyAqCisgKiAkSWQkCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSAibWliSUkvbWliSUlfY29tbW9uLmgiCisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oPgorCisjaW5jbHVkZSAiaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2NvbnN0YW50cy5oIgorI2luY2x1ZGUgImlwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9jb25zdGFudHMuaCIKKyNpbmNsdWRlICJtaWJncm91cC91dGlsX2Z1bmNzLmgiCisKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShwcmVmaXhfaW5mbykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGZpbmRfcHJlZml4X2luZm8pCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcGFkZHJlc3NfYXJjaF9lbnRyeV9jb3B5LCBpcGFkZHJlc3NfY29tbW9uKQorCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfSVBBRERSRVNTX0FSQ0hfRU5UUllfQ09QWQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXBhZGRyZXNzX2lvY3RsX2VudHJ5X2NvcHkpCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfSVBBRERSRVNTX0FSQ0hfRU5UUllfQ09QWSAqLworCisjaW5jbHVkZSAiaXBhZGRyZXNzX2lvY3RsLmgiCisjaWZkZWYgU1VQUE9SVF9QUkVGSVhfRkxBR1MKK2V4dGVybiBwcmVmaXhfY2J4ICpwcmVmaXhfaGVhZF9saXN0OworI2VuZGlmCisKKyNkZWZpbmUgUk9VTkRVUChhKSBcCisgICgoYSkgPiAwID8gKDEgKyAoKChhKSAtIDEpIHwgKHNpemVvZihsb25nKSAtIDEpKSkgOiBzaXplb2YobG9uZykpCisKKy8qCisgKiBpbml0aWFsaXplIGFyY2ggc3BlY2lmaWMgc3RvcmFnZQorICoKKyAqIEByZXR2YWwgIDA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgPDA6IGVycm9yCisgKi8KK2ludAorbmV0c25tcF9hcmNoX2lwYWRkcmVzc19lbnRyeV9pbml0KG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICplbnRyeSkKK3sKKyAgICAvKgorICAgICAqIGluaXQgaXB2NCBzdHVmZgorICAgICAqLworICAgIC8qIGlmIChOVUxMID09IG5ldHNubXBfaW9jdGxfaXBhZGRyZXNzX2VudHJ5X2luaXQoZW50cnkpKSAqLworICAgIC8qICAgICByZXR1cm4gLTE7ICovCisKKyAgICAvKgorICAgICAqIGluaXQgaXB2NiBzdHVmZgorICAgICAqICAgc28gZmFyLCB3ZSBjYW4ganVzdCBzaGFyZSB0aGUgaXB2NCBzdHVmZiwgc28gbm90aGluZyB0byBkbworICAgICAqLworICAgIAorICAgIHJldHVybiAwOworfQorCisvKgorICogY2xlYW51cCBhcmNoIHNwZWNpZmljIHN0b3JhZ2UKKyAqLwordm9pZAorbmV0c25tcF9hcmNoX2lwYWRkcmVzc19lbnRyeV9jbGVhbnVwKG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICplbnRyeSkKK3sKKyAgICAvKgorICAgICAqIGNsZWFudXAgaXB2NCBzdHVmZgorICAgICAqLworICAgIC8qbmV0c25tcF9pb2N0bF9pcGFkZHJlc3NfZW50cnlfY2xlYW51cChlbnRyeSk7ICovCisKKyAgICAvKgorICAgICAqIGNsZWFudXAgaXB2NiBzdHVmZgorICAgICAqICAgc28gZmFyLCB3ZSBjYW4ganVzdCBzaGFyZSB0aGUgaXB2NCBzdHVmZiwgc28gbm90aGluZyB0byBkbworICAgICAqLworfQorCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTX0FSQ0hfRU5UUllfQ09QWQorLyoKKyAqIGNvcHkgYXJjaCBzcGVjaWZpYyBzdG9yYWdlCisgKi8KK2ludAorbmV0c25tcF9hcmNoX2lwYWRkcmVzc19lbnRyeV9jb3B5KG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICpsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKnJocykKK3sKKyAgICBpbnQgcmM7CisKKyAgICByYyA9IDA7CisKKyAgICAvKgorICAgICAqIGNvcHkgaXB2NCBzdHVmZgorICAgICAqLworICAgIC8qcmMgPSBuZXRzbm1wX2lvY3RsX2lwYWRkcmVzc19lbnRyeV9jb3B5KGxocywgcmhzKTsgKi8KKyAgICBpZiAocmMpCisgICAgICAgIHJldHVybiByYzsKKworICAgIC8qCisgICAgICogY29weSBpcHY2IHN0dWZmCisgICAgICogICBzbyBmYXIsIHdlIGNhbiBqdXN0IHNoYXJlIHRoZSBpcHY0IHN0dWZmLCBzbyBub3RoaW5nIHRvIGRvCisgICAgICovCisKKyAgICByZXR1cm4gcmM7Cit9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NfQVJDSF9FTlRSWV9DT1BZICovCisKKy8qCisgKiBjcmVhdGUgYSBuZXcgZW50cnkKKyAqLworaW50CituZXRzbm1wX2FyY2hfaXBhZGRyZXNzX2NyZWF0ZShuZXRzbm1wX2lwYWRkcmVzc19lbnRyeSAqZW50cnkpCit7CisgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmICg0ID09IGVudHJ5LT5pYV9hZGRyZXNzX2xlbikgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfSBlbHNlIGlmICgxNiA9PSBlbnRyeS0+aWFfYWRkcmVzc19sZW4pIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSB7CisgICAgICAgIERFQlVHTVNHVCgoImFjY2VzczppcGFkZHJlc3M6Y3JlYXRlIiwgIndyb25nIGxlbmd0aCBvZiBJUCBhZGRyZXNzXG4iKSk7CisgICAgICAgIHJldHVybiAtMjsKKyAgICB9Cit9CisKKy8qCisgKiBjcmVhdGUgYSBuZXcgZW50cnkKKyAqLworaW50CituZXRzbm1wX2FyY2hfaXBhZGRyZXNzX2RlbGV0ZShuZXRzbm1wX2lwYWRkcmVzc19lbnRyeSAqZW50cnkpCit7CisgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmICg0ID09IGVudHJ5LT5pYV9hZGRyZXNzX2xlbikgeworICAgICAgICByZXR1cm4gLTI7CisgICAgfSBlbHNlIGlmICgxNiA9PSBlbnRyeS0+aWFfYWRkcmVzc19sZW4pIHsKKyAgICAgICAgcmV0dXJuIC0zOworICAgIH0gZWxzZSB7CisgICAgICAgIERFQlVHTVNHVCgoImFjY2VzczppcGFkZHJlc3M6Y3JlYXRlIiwgIm9ubHkgaXB2NCBzdXBwb3J0ZWRcbiIpKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KK30KKworLyoqCisgKgorICogQHJldHZhbCAgMCBubyBlcnJvcnMKKyAqIEByZXR2YWwgITAgZXJyb3JzCisgKi8KK2ludAorbmV0c25tcF9hcmNoX2lwYWRkcmVzc19jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICplbnRyeSA9IE5VTEw7CisgICAgdV9jaGFyICppZl9saXN0ID0gTlVMTCwgKmNwOworICAgIHNpemVfdCBpZl9saXN0X3NpemUgPSAwOworICAgIGludCBzeXNjdGxfb2lkW10gPSB7IENUTF9ORVQsIFBGX1JPVVRFLCAwLCAwLCBORVRfUlRfSUZMSVNULCAwIH07CisgICAgc3RydWN0IGlmYV9tc2doZHIgKmlmYTsKKyAgICBzdHJ1Y3Qgc29ja2FkZHIgKmE7CisgICAgaW50IGFtYXNrOworICAgIGludCByYyA9IDA7CisgICAgaW50IGlkeF9vZmZzZXQgPSAwOworCisgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyOnN5c2N0bCIsCisgICAgICAgICAgICAgICAgImxvYWQgKGZsYWdzICV1KVxuIiwgbG9hZF9mbGFncykpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJubyBjb250YWluZXIgc3BlY2lmaWVkL2ZvdW5kIGZvciBpbnRlcmZhY2VcbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKHN5c2N0bChzeXNjdGxfb2lkLCBzaXplb2Yoc3lzY3RsX29pZCkvc2l6ZW9mKGludCksIDAsCisgICAgICAgICAgICAgICAmaWZfbGlzdF9zaXplLCAwLCAwKSA9PSAtMSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGQgbm90IGdldCBpbnRlcmZhY2UgaW5mbyAoc2l6ZSlcbiIpOworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorCisgICAgaWZfbGlzdCA9ICh1X2NoYXIqKW1hbGxvYyhpZl9saXN0X3NpemUpOworICAgIGlmIChpZl9saXN0ID09IE5VTEwpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGludGVyZmFjZSBpbmZvICIKKyAgICAgICAgICAgICAgICAgIiglenUgYnl0ZXMpXG4iLCBpZl9saXN0X3NpemUpOworICAgICAgICByZXR1cm4gLTM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyOnN5c2N0bCIsCisgICAgICAgICAgICAgICAgICAgICJhbGxvY2F0ZWQgJXp1IGJ5dGVzIGZvciBpZl9saXN0XG4iLCBpZl9saXN0X3NpemUpKTsKKyAgICB9CisKKyAgICBpZiAoc3lzY3RsKHN5c2N0bF9vaWQsIHNpemVvZihzeXNjdGxfb2lkKS9zaXplb2YoaW50KSwgaWZfbGlzdCwKKyAgICAgICAgICAgICAgICZpZl9saXN0X3NpemUsIDAsIDApID09IC0xKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZCBub3QgZ2V0IGludGVyZmFjZSBpbmZvXG4iKTsKKyAgICAgICAgZnJlZShpZl9saXN0KTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKworICAgIC8qIHBhc3MgMjogd2FsayBhZGRyZXNzZXMgKi8KKyAgICBmb3IgKGNwID0gaWZfbGlzdDsgY3AgPCBpZl9saXN0ICsgaWZfbGlzdF9zaXplOyBjcCArPSBpZmEtPmlmYW1fbXNnbGVuKSB7CisgICAgICAgIGlmYSA9IChzdHJ1Y3QgaWZhX21zZ2hkciAqKSBjcDsKKyAgICAgICAgaW50IHJ0YXg7CisKKyAgICAgICAgaWYgKGlmYS0+aWZhbV90eXBlICE9IFJUTV9ORVdBRERSKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyOnN5c2N0bCIsCisgICAgICAgICAgICAgICAgICAgICJyZWNlaXZlZCAweCV4IGluIFJUTV9ORVdBRERSIGZvciBpZmluZGV4ICV1XG4iLAorICAgICAgICAgICAgICAgICAgICBpZmEtPmlmYW1fYWRkcnMsIGlmYS0+aWZhbV9pbmRleCkpOworCisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9hY2Nlc3NfaXBhZGRyZXNzX2VudHJ5X2NyZWF0ZSgpOworICAgICAgICBpZiAoZW50cnkgPT0gTlVMTCkgeworICAgICAgICAgICAgcmMgPSAtMzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgYSA9IChzdHJ1Y3Qgc29ja2FkZHIgKikgKGlmYSArIDEpOworICAgICAgICBlbnRyeS0+aWFfc3RhdHVzID0gSVBBRERSRVNTU1RBVFVTVENfVU5LTk9XTjsKKyAgICAgICAgZW50cnktPmlhX29yaWdpbiA9IElQQUREUkVTU09SSUdJTlRDX09USEVSOworCWVudHJ5LT5pYV9hZGRyZXNzX2xlbiA9IDA7CisgICAgICAgIGZvciAoYW1hc2sgPSBpZmEtPmlmYW1fYWRkcnMsIHJ0YXggPSAwOyBhbWFzayAhPSAwOyBhbWFzayA+Pj0gMSwgcnRheCsrKSB7CisgICAgICAgICAgICBpZiAoKGFtYXNrICYgMSkgIT0gMCkgeworICAgICAgICAgICAgICAgIGVudHJ5LT5uc19pYV9pbmRleCA9ICsraWR4X29mZnNldDsKKyAgICAgICAgICAgICAgICBlbnRyeS0+aWZfaW5kZXggPSBpZmEtPmlmYW1faW5kZXg7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyOnN5c2N0bCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVkOiBhPSVwLCBzYV9sZW49JWQsIHNhX2ZhbWlseT0weCV4XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpZW50cnktPmlmX2luZGV4LCBhLCBhLT5zYV9sZW4sIGEtPnNhX2ZhbWlseSkpOworCisgICAgICAgICAgICAgICAgaWYgKGEtPnNhX2ZhbWlseSA9PSBBRl9JTkVUIHx8IGEtPnNhX2ZhbWlseSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqYTQgPSAoc3RydWN0IHNvY2thZGRyX2luICopYTsKKwkJICAgIGNoYXIgc3RyWzEyOF07CisJCSAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXI6c3lzY3RsIiwKKwkJICAgICAgICAgICAgICAgICJJUHY0IGFkZHIgJXNcbiIsIGluZXRfbnRvcChBRl9JTkVULCAmYTQtPnNpbl9hZGRyLnNfYWRkciwgc3RyLCAxMjgpKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChydGF4ID09IFJUQVhfSUZBKSB7CisJCQllbnRyeS0+aWFfYWRkcmVzc19sZW4gPSA0OworICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KGVudHJ5LT5pYV9hZGRyZXNzLCAmYTQtPnNpbl9hZGRyLnNfYWRkciwgZW50cnktPmlhX2FkZHJlc3NfbGVuKTsKKwkJICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocnRheCA9PSBSVEFYX05FVE1BU0spCisgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+aWFfcHJlZml4X2xlbiA9IG5ldHNubXBfaXBhZGRyZXNzX2lwdjRfcHJlZml4X2xlbihhNC0+c2luX2FkZHIuc19hZGRyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoYS0+c2FfZmFtaWx5ID09IEFGX0lORVQ2KSB7CisgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgKmE2ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhOworCQkgICAgY2hhciBzdHJbMTI4XTsKKwkJICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lcjpzeXNjdGwiLAorCQkgICAgICAgICAgICAgICAgIklQdjYgYWRkciAlc1xuIiwgaW5ldF9udG9wKEFGX0lORVQ2LCAmYTYtPnNpbjZfYWRkci5zNl9hZGRyLCBzdHIsIDEyOCkpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJ0YXggPT0gUlRBWF9JRkEpIHsKKwkJCWVudHJ5LT5pYV9hZGRyZXNzX2xlbiA9IDE2OworICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KGVudHJ5LT5pYV9hZGRyZXNzLCAmYTYtPnNpbjZfYWRkciwgZW50cnktPmlhX2FkZHJlc3NfbGVuKTsKKwkJICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocnRheCA9PSBSVEFYX05FVE1BU0spIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5pYV9wcmVmaXhfbGVuID0gbmV0c25tcF9pcGFkZHJlc3NfaXB2Nl9wcmVmaXhfbGVuKGE2LT5zaW42X2FkZHIpOworCQkJREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyOnN5c2N0bCIsCisJCQkgICAgICAgICAgICAicHJlZml4X2xlbj0lZFxuIiwgZW50cnktPmlhX3ByZWZpeF9sZW4pKTsKKwkJICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYSA9IChzdHJ1Y3Qgc29ja2FkZHIgKikgKCAoKGNoYXIgKikgYSkgKyBST1VORFVQKGEtPnNhX2xlbikgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCWlmIChlbnRyeS0+aWFfYWRkcmVzc19sZW4gPT0gMCkgeworCSAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXI6c3lzY3RsIiwKKwkgICAgICAgICAgICAgICAgImVudHJ5IHNraXBwZWRcbiIpKTsKKwkgICAgbmV0c25tcF9hY2Nlc3NfaXBhZGRyZXNzX2VudHJ5X2ZyZWUoZW50cnkpOworCX0KKwllbHNlIGlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpIDwgMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwiZXJyb3Igd2l0aCBpcGFkZHJlc3NfZW50cnk6IGluc2VydCBpbnRvIGNvbnRhaW5lciBmYWlsZWQuXG4iKSk7CisgICAgICAgICAgICBuZXRzbm1wX2FjY2Vzc19pcGFkZHJlc3NfZW50cnlfZnJlZShlbnRyeSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChpZl9saXN0ICE9IE5VTEwpCisgICAgICAgIGZyZWUoaWZfbGlzdCk7CisKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zY2FsYXJzX2NvbW1vbi5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnNfY29tbW9uLmgKaW5kZXggMmYwYTYzYS4uZWJlYTIxZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnNfY29tbW9uLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnNfY29tbW9uLmgKQEAgLTE5LDYgKzE5LDggQEAKICAqLwogI2lmIGRlZmluZWQoIGxpbnV4ICkKIGNvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9zY2FsYXJzX2xpbnV4KQorI2VsaWYgZGVmaW5lZCggZnJlZWJzZDQgKSB8fCBkZWZpbmVkKCBuZXRic2Q1ICkgfHwgZGVmaW5lZCggb3BlbmJzZDQgKSB8fCBkZWZpbmVkKCBkcmFnb25mbHkgKSB8fCBkZWZpbmVkKCBkYXJ3aW4gKQorY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnNfc3lzY3RsKQogI2Vsc2UKIC8qCiAgKiBjb3VsZG4ndCBkZXRlcm1pbmUgdGhlIGNvcnJlY3QgZmlsZSEKQEAgLTI2LDQgKzI4LDMgQEAKICAqLwogY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnMtdW5rbm93bi1hcmNoKQogI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zY2FsYXJzX2xpbnV4LmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFyc19saW51eC5jCmluZGV4IDZiYTM1NmIuLjg1ZTkxMmEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zY2FsYXJzX2xpbnV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnNfbGludXguYwpAQCAtNSwxMSArNSwxNiBAQAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBfc2NhbGFycy5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyZWdpc3Rlcl9udW1fZmlsZV9pbnN0YW5jZSkKKwogc3RhdGljIGNvbnN0IGNoYXIgaXBmd19uYW1lW10gPSAiL3Byb2Mvc3lzL25ldC9pcHY0L2NvbmYvYWxsL2ZvcndhcmRpbmciOworc3RhdGljIGNvbnN0IGNoYXIgaXB0dGxfbmFtZVtdID0gIi9wcm9jL3N5cy9uZXQvaXB2NC9pcF9kZWZhdWx0X3R0bCI7CiBzdGF0aWMgY29uc3QgY2hhciBpcGZ3Nl9uYW1lW10gPSAiL3Byb2Mvc3lzL25ldC9pcHY2L2NvbmYvYWxsL2ZvcndhcmRpbmciOworc3RhdGljIGNvbnN0IGNoYXIgaXBob3A2X25hbWVbXSA9ICIvcHJvYy9zeXMvbmV0L2lwdjYvY29uZi9hbGwvaG9wX2xpbWl0IjsKIAogaW50CiBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcEZvcndhcmRpbmdfZ2V0KHVfbG9uZyAqdmFsdWUpCkBAIC04MCw2ICs4NSw3MCBAQAogfQogCiBpbnQKK25ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwRGVmYXVsdFRUTF9nZXQodV9sb25nICp2YWx1ZSkKK3sKKyAgICBGSUxFICpmaWxlcDsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoTlVMTCA9PSB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIC0xOworCisKKyAgICBmaWxlcCA9IGZvcGVuKGlwdHRsX25hbWUsICJyIik7CisgICAgaWYgKE5VTEwgPT0gZmlsZXApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcERlZmF1bHRUVEwiLCAiY291bGQgbm90IG9wZW4gJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGlwdHRsX25hbWUpKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKworICAgIHJjID0gZnNjYW5mKGZpbGVwLCAiJWx1IiwgdmFsdWUpOworICAgIGZjbG9zZShmaWxlcCk7CisgICAgaWYgKDEgIT0gcmMpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcERlZmF1bHRUVEwiLCAiY291bGQgbm90IHJlYWQgJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGlwdHRsX25hbWUpKTsKKyAgICAgICAgcmV0dXJuIC0zOworICAgIH0KKworICAgIGlmICgoMCA9PSAqdmFsdWUpIHx8ICgyNTUgPCAqdmFsdWUpKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBEZWZhdWx0VFRMIiwgInVuZXhwZWN0ZWQgdmFsdWUgJWxkIGluICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAqdmFsdWUsIGlwdHRsX25hbWUpKTsKKyAgICAgICAgcmV0dXJuIC00OworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitpbnQKK25ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwRGVmYXVsdFRUTF9zZXQodV9sb25nIHZhbHVlKQoreworICAgIEZJTEUgKmZpbGVwOworICAgIGludCByYzsKKworICAgIGlmICh2YWx1ZSA9PSAwIHx8IHZhbHVlID4gMjU1KSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBEZWZhdWx0VFRMIiwgImJhZCB2YWx1ZSAlbGQgZm9yICVzXG4iLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgaXB0dGxfbmFtZSkpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdWQUxVRTsKKyAgICB9CisKKyAgICBmaWxlcCA9IGZvcGVuKGlwdHRsX25hbWUsICJ3Iik7CisgICAgaWYgKE5VTEwgPT0gZmlsZXApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcERlZmF1bHRUVEwiLCAiY291bGQgbm90IG9wZW4gJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGlwdHRsX25hbWUpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEU7CisgICAgfQorCisgICAgcmMgPSBmcHJpbnRmKGZpbGVwLCAiJWxkIiwgdmFsdWUpOworICAgIGZjbG9zZShmaWxlcCk7CisgICAgaWYgKDEgIT0gcmMpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcERlZmF1bHRUVEwiLCAiY291bGQgbm90IHdyaXRlICVzXG4iLAorICAgICAgICAgICAgICAgICAgICBpcHR0bF9uYW1lKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2ludAogbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXB2NklwRm9yd2FyZGluZ19nZXQodV9sb25nICp2YWx1ZSkKIHsKICAgICBGSUxFICpmaWxlcDsKQEAgLTE0NiwzICsyMTUsODAgQEAKIAogICAgIHJldHVybiAwOwogfQorCitpbnQKK25ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwdjZJcERlZmF1bHRIb3BMaW1pdF9nZXQodV9sb25nICp2YWx1ZSkKK3sKKyAgICBGSUxFICpmaWxlcDsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoTlVMTCA9PSB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIC0xOworCisKKyAgICBmaWxlcCA9IGZvcGVuKGlwaG9wNl9uYW1lLCAiciIpOworICAgIGlmIChOVUxMID09IGZpbGVwKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBEZWZhdWx0SG9wTGltaXQiLCAiY291bGQgbm90IG9wZW4gJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGlwaG9wNl9uYW1lKSk7CisgICAgICAgIHJldHVybiAtMjsKKyAgICB9CisKKyAgICByYyA9IGZzY2FuZihmaWxlcCwgIiVsdSIsIHZhbHVlKTsKKyAgICBmY2xvc2UoZmlsZXApOworICAgIGlmICgxICE9IHJjKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBEZWZhdWx0SG9wTGltaXQiLCAiY291bGQgbm90IHJlYWQgJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGlwaG9wNl9uYW1lKSk7CisgICAgICAgIHJldHVybiAtMzsKKyAgICB9CisKKyAgICBpZiAoKDAgPT0gKnZhbHVlKSB8fCAoMjU1IDwgKnZhbHVlKSkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwRGVmYXVsdEhvcExpbWl0IiwgInVuZXhwZWN0ZWQgdmFsdWUgJWxkIGluICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAqdmFsdWUsIGlwaG9wNl9uYW1lKSk7CisgICAgICAgIHJldHVybiAtNDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworaW50CituZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcHY2SXBEZWZhdWx0SG9wTGltaXRfc2V0KHVfbG9uZyB2YWx1ZSkKK3sKKyAgICBGSUxFICpmaWxlcDsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAodmFsdWUgPT0gMCB8fCB2YWx1ZSA+IDI1NSkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwRGVmYXVsdEhvcExpbWl0IiwgImJhZCB2YWx1ZSAlbGQgZm9yICVzXG4iLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgaXBob3A2X25hbWUpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVkFMVUU7CisgICAgfQorCisgICAgZmlsZXAgPSBmb3BlbihpcGhvcDZfbmFtZSwgInciKTsKKyAgICBpZiAoTlVMTCA9PSBmaWxlcCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwRGVmYXVsdEhvcExpbWl0IiwgImNvdWxkIG5vdCBvcGVuICVzXG4iLAorICAgICAgICAgICAgICAgICAgICBpcGhvcDZfbmFtZSkpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRTsKKyAgICB9CisKKyAgICByYyA9IGZwcmludGYoZmlsZXAsICIlbGQiLCB2YWx1ZSk7CisgICAgZmNsb3NlKGZpbGVwKTsKKyAgICBpZiAoMSAhPSByYykgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwRGVmYXVsdEhvcExpbWl0IiwgImNvdWxkIG5vdCB3cml0ZSAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgaXBob3A2X25hbWUpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZAorbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfcmVnaXN0ZXJfaGFuZGxlcnModm9pZCkKK3sKKyAgICBzdGF0aWMgb2lkIGlwUmVhc21UaW1lb3V0X29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAxMywgMCB9OworCisgICAgbmV0c25tcF9yZWdpc3Rlcl9udW1fZmlsZV9pbnN0YW5jZQorICAgICAgICAoImlwUmVhc21UaW1lb3V0IiwKKyAgICAgICAgIGlwUmVhc21UaW1lb3V0X29pZCwgT0lEX0xFTkdUSChpcFJlYXNtVGltZW91dF9vaWQpLAorICAgICAgICAgIi9wcm9jL3N5cy9uZXQvaXB2NC9pcGZyYWdfdGltZSIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgSEFORExFUl9DQU5fUk9OTFksIE5VTEwsIE5VTEwpOworCit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFyc19zeXNjdGwuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zY2FsYXJzX3N5c2N0bC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2OWM3NDMKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFyc19zeXNjdGwuYwpAQCAtMCwwICsxLDI5MSBAQAorLyoKKyAqICBJUC1NSUIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKKyAqCisgKiAkSWQkCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pcF9zY2FsYXJzLmg+CisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvcHJvdG9zdy5oPgorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2luX3N5c3RtLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pcC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKy8qIFhYWDogdGhlIHZhbHVlcyBwYXNzZWQgdG8gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnMoLi4pIG1heSBvciBtYXkgbm90IGJlCisgKiBwb3J0YWJsZSB0byB0aGUgb3RoZXIgQlNEcyAtLSBpdCBzZWVtcyB0byBiZSBwb3J0YWJsZSBiYWNrIHRvIEZyZWVCU0QgNC54CisgKiAoRGFyd2luIDEwLjguMCkgYXQgbGVhc3QuCisgKi8KKworc3RhdGljIGludAorbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfc3lzY3RsKGNvbnN0IGNoYXIgKmFjY2Vzc19tb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1pYltdLCBzaXplX3QgbWliX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKm9sZF92YWx1ZSwgdV9sb25nICpuZXdfdmFsdWUpCit7CisgICAgaW50IG5ld2ludCwgb2xkaW50OworICAgIHNpemVfdCBuZWVkZWQ7CisgICAgaW50IHJjOworCisgICAgbmVlZGVkID0gc2l6ZW9mKG9sZGludCk7CisgICAgaWYgKG5ld192YWx1ZSkKKyAgICAgICAgbmV3aW50ID0gKm5ld192YWx1ZTsKKworICAgIHJjID0gc3lzY3RsKG1pYiwgbWliX2xlbiwgJm9sZGludCwgJm5lZWRlZCwKKyAgICAgICAgICAgICAgICBuZXdfdmFsdWUgPyAmbmV3aW50IDogTlVMTCwgKG5ld192YWx1ZSA/IHNpemVvZihuZXdpbnQpIDogMCkpOworICAgIGlmIChyYyA9PSAtMSkgeworICAgICAgICBERUJVR01TR1RMKChhY2Nlc3NfbW9kdWxlLCAic3lzY3RsICVzIGZhaWxlZCAtICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAobmV3X3ZhbHVlID09IE5VTEwgPyAiZ2V0IiA6ICJzZXQiKSwKKyAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKSk7CisgICAgfQorICAgICpvbGRfdmFsdWUgPSBvbGRpbnQ7CisgICAgcmV0dXJuIHJjOworfQorCitpbnQgaXBEZWZhdWx0VFRMX21pYltdID0geworICAgIENUTF9ORVQsCisgICAgUEZfSU5FVCwKKyAgICBJUFBST1RPX0lQLAorICAgIElQQ1RMX0RFRlRUTAorfTsKKworaW50IGlwRm9yd2FyZGluZ19taWJbXSA9IHsKKyAgICBDVExfTkVULAorICAgIFBGX0lORVQsCisgICAgSVBQUk9UT19JUCwKKyAgICBJUENUTF9GT1JXQVJESU5HCit9OworCitpbnQgaXB2NklwRGVmYXVsdEhvcExpbWl0X21pYltdID0geworICAgIENUTF9ORVQsCisgICAgUEZfSU5FVDYsCisgICAgSVBQUk9UT19JUCwKKyAgICBJUFY2Q1RMX0RFRkhMSU0KK307CisKK2ludCBpcHY2SXBGb3J3YXJkaW5nX21pYltdID0geworICAgIENUTF9ORVQsCisgICAgUEZfSU5FVDYsCisgICAgSVBQUk9UT19JUCwKKyAgICBJUFY2Q1RMX0ZPUldBUkRJTkcKK307CisKKyNkZWZpbmUgTUlCX0xFTihhKQkJKHNpemVvZihhKSAvIHNpemVvZigqYSkpCisKKyNkZWZpbmUgSVBERUZBVUxUVFRMX0xFTglNSUJfTEVOKGlwRGVmYXVsdFRUTF9taWIpCisjZGVmaW5lIElQRk9SV0FSRElOR19MRU4JTUlCX0xFTihpcEZvcndhcmRpbmdfbWliKQorI2RlZmluZSBJUFY2SVBERUZBVUxUSE9QTElNSVRfTEVOCU1JQl9MRU4oaXB2NklwRGVmYXVsdEhvcExpbWl0X21pYikKKyNkZWZpbmUgSVBWNklQRk9SV0FSRElOR19MRU4JTUlCX0xFTihpcHY2SXBGb3J3YXJkaW5nX21pYikKKworaW50CituZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcERlZmF1bHRUVExfZ2V0KHVfbG9uZyAqdmFsdWUpCit7CisgICAgaW50IHJjOworCisgICAgaWYgKE5VTEwgPT0gdmFsdWUpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJjID0gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfc3lzY3RsKCJhY2Nlc3M6aXBEZWZhdWx0VFRMIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRUVExfbWliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQREVGQVVMVFRUTF9MRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUsIE5VTEwpOworICAgIGlmIChyYyAhPSAwKQorICAgICAgICByZXR1cm4gLTI7CisKKyAgICByZXR1cm4gMDsKK30KKworaW50CituZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcERlZmF1bHRUVExfc2V0KHVfbG9uZyB2YWx1ZSkKK3sKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoMSA9PSB2YWx1ZSkKKyAgICAgICAgOworICAgIGVsc2UgaWYgKDIgPT0gdmFsdWUpCisgICAgICAgIHZhbHVlID0gMDsKKyAgICBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcERlZmF1bHRUVEwiLCAiYmFkIHZhbHVlICVsZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVkFMVUU7CisgICAgfQorCisgICAgcmMgPSBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19zeXNjdGwoImFjY2VzczppcEZvcndhcmRpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRm9yd2FyZGluZ19taWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBGT1JXQVJESU5HX0xFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAmdmFsdWUpOworICAgIGlmIChyYyAhPSAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gMDsKK30KKworaW50CituZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcEZvcndhcmRpbmdfZ2V0KHVfbG9uZyAqdmFsdWUpCit7CisgICAgaW50IHJjOworCisgICAgaWYgKE5VTEwgPT0gdmFsdWUpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJjID0gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfc3lzY3RsKCJhY2Nlc3M6aXBGb3J3YXJkaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcEZvcndhcmRpbmdfbWliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQRk9SV0FSRElOR19MRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUsIE5VTEwpOworICAgIGlmIChyYyAhPSAwKQorICAgICAgICByZXR1cm4gLTI7CisKKyAgICAvKiBPbiBGcmVlQlNEIDcuMiBhdCBsZWFzdCwgdGhlIHZhbHVlIHBhc3NlZCB0byB0aGUgc3lzY3RsIGNhbiBiZSBjb2VyY2VkCisgICAgICogaW50byBhIG5vbi16ZXJvIHZhbHVlOyBjb252ZXJ0IGl0IGludG8gYSB2YWx1ZSB0aGF0J3Mgc2FuZSBwZXIgdGhlCisgICAgICogSVAtTUlCIGRlZmluaXRpb24uCisgICAgICovCisgICAgaWYgKCp2YWx1ZSAhPSAwKQorICAgICAgICAqdmFsdWUgPSAxOworCisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXBGb3J3YXJkaW5nX3NldCh1X2xvbmcgdmFsdWUpCit7CisgICAgaW50IHJjOworCisgICAgaWYgKDEgPT0gdmFsdWUpCisgICAgICAgIDsKKyAgICBlbHNlIGlmICgyID09IHZhbHVlKQorICAgICAgICB2YWx1ZSA9IDA7CisgICAgZWxzZSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBGb3J3YXJkaW5nIiwgImJhZCB2YWx1ZSAlbGRcbiIsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1ZBTFVFOworICAgIH0KKworICAgIHJjID0gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfc3lzY3RsKCJhY2Nlc3M6aXBGb3J3YXJkaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcEZvcndhcmRpbmdfbWliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQRk9SV0FSRElOR19MRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgJnZhbHVlKTsKKyAgICBpZiAocmMgIT0gMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXB2NklwRGVmYXVsdEhvcExpbWl0X2dldCh1X2xvbmcgKnZhbHVlKQoreworICAgIGludCByYzsKKworICAgIGlmIChOVUxMID09IHZhbHVlKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByYyA9IG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX3N5c2N0bCgiYWNjZXNzOmlwdjZJcERlZmF1bHRIb3BMaW1pdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NklwRGVmYXVsdEhvcExpbWl0X21pYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUFY2SVBERUZBVUxUSE9QTElNSVRfTEVOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLCBOVUxMKTsKKyAgICBpZiAocmMgIT0gMCkKKyAgICAgICAgcmV0dXJuIC0yOworCisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXB2NklwRGVmYXVsdEhvcExpbWl0X3NldCh1X2xvbmcgdmFsdWUpCit7CisgICAgaW50IHJjOworCisgICAgaWYgKDEgPT0gdmFsdWUpCisgICAgICAgIDsKKyAgICBlbHNlIGlmICgyID09IHZhbHVlKQorICAgICAgICB2YWx1ZSA9IDA7CisgICAgZWxzZSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXB2NklwRGVmYXVsdEhvcExpbWl0IiwgImJhZCB2YWx1ZSAlbGRcbiIsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1ZBTFVFOworICAgIH0KKworICAgIHJjID0gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfc3lzY3RsKCJhY2Nlc3M6aXBGb3J3YXJkaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2SXBEZWZhdWx0SG9wTGltaXRfbWliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQVjZJUERFRkFVTFRIT1BMSU1JVF9MRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgJnZhbHVlKTsKKyAgICBpZiAocmMgIT0gMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXB2NklwRm9yd2FyZGluZ19nZXQodV9sb25nICp2YWx1ZSkKK3sKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoTlVMTCA9PSB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmMgPSBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19zeXNjdGwoImFjY2VzczppcHY2SXBGb3J3YXJkaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2SXBGb3J3YXJkaW5nX21pYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUFY2SVBGT1JXQVJESU5HX0xFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgTlVMTCk7CisgICAgaWYgKHJjICE9IDApCisgICAgICAgIHJldHVybiAtMjsKKworICAgIC8qIE9uIEZyZWVCU0QgNy4yIGF0IGxlYXN0LCB0aGUgdmFsdWUgcGFzc2VkIHRvIHRoZSBzeXNjdGwgY2FuIGJlIGNvZXJjZWQKKyAgICAgKiBpbnRvIGEgbm9uLXplcm8gdmFsdWU7IGNvbnZlcnQgaXQgaW50byBhIHZhbHVlIHRoYXQncyBzYW5lIHBlciB0aGUKKyAgICAgKiBJUC1NSUIgZGVmaW5pdGlvbi4KKyAgICAgKi8KKyAgICBpZiAoKnZhbHVlICE9IDApCisgICAgICAgICp2YWx1ZSA9IDE7CisKKyAgICByZXR1cm4gMDsKK30KKworaW50CituZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcHY2SXBGb3J3YXJkaW5nX3NldCh1X2xvbmcgdmFsdWUpCit7CisgICAgaW50IHJjOworCisgICAgaWYgKDEgPT0gdmFsdWUpCisgICAgICAgIDsKKyAgICBlbHNlIGlmICgyID09IHZhbHVlKQorICAgICAgICB2YWx1ZSA9IDA7CisgICAgZWxzZSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBGb3J3YXJkaW5nIiwgImJhZCB2YWx1ZSAlbGRcbiIsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1ZBTFVFOworICAgIH0KKworICAgIHJjID0gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfc3lzY3RsKCJhY2Nlc3M6aXB2NklwRm9yd2FyZGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NklwRm9yd2FyZGluZ19taWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBWNklQRk9SV0FSRElOR19MRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgJnZhbHVlKTsKKyAgICBpZiAocmMgIT0gMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBsb25nIGlwUmVhc21UaW1lb3V0X3ZhbDsKKwordm9pZAorbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfcmVnaXN0ZXJfaGFuZGxlcnModm9pZCkKK3sKKyAgICBzdGF0aWMgb2lkIGlwUmVhc21UaW1lb3V0X29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAxMywgMCB9OworCisgICAgLyogCisgICAgICogVGhpcyB2YWx1ZSBpcyBzdGF0aWMgYXQgY29tcGlsZSB0aW1lIG9uIEZyZWVCU0Q7IGl0IHJlYWxseSBzaG91bGQgYmUgYQorICAgICAqIHByb2JlZCB2aWEgZWl0aGVyIHN5c2N0bCBvciBzeXNjb25mIGF0IHJ1bnRpbWUgYXMgdGhlIGNvbXBpbGVkIHZhbHVlIGFuZAorICAgICAqIHRoZSBydW50aW1lIHZhbHVlIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCBjYW4gdmFyeS4KKyAgICAgKgorICAgICAqIFBsZWFzZSByZWZlciB0byBzeXMvcHJvdG9zdy5oIGZvciBtb3JlIGRldGFpbHMgb24gd2hhdCB0aGlzIHZhbHVlIGlzIChpbgorICAgICAqIHBhcnRpY3VsYXIgUFJfU0xPV0haKS4KKyAgICAgKi8KKyAgICBpcFJlYXNtVGltZW91dF92YWwgPSBJUEZSQUdUVEwgLyBQUl9TTE9XSFo7CisKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX2xvbmdfaW5zdGFuY2UoImlwUmVhc21UaW1lb3V0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBSZWFzbVRpbWVvdXRfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPSURfTEVOR1RIKGlwUmVhc21UaW1lb3V0X29pZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpcFJlYXNtVGltZW91dF92YWwsIE5VTEwpOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHMuaAppbmRleCAyODgxMGUzLi41MTQ4MDdhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHMuaAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHMuaApAQCAtMjIsNiArMjIsOCBAQAogY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2xpbnV4KQogI2VsaWYgZGVmaW5lZCggc29sYXJpczIgKQogY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX3NvbGFyaXMyKQorI2VsaWYgZGVmaW5lZCggZnJlZWJzZDcgKSB8fCBkZWZpbmVkKCBuZXRic2Q1ICkgfHwgZGVmaW5lZCggb3BlbmJzZDQgKSB8fCBkZWZpbmVkKCBkcmFnb25mbHkgKSB8fCBkZWZpbmVkKCBkYXJ3aW4gKQorY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX3N5c2N0bCkKICNlbHNlCiBjb25maWdfZXJyb3IodGhlIHN5c3RlbXN0YXRzIGRhdGEgYWNjZXNzIGxpYnJhcnkgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGlzIGVudmlyb25tZW50LikKICNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX3N5c2N0bC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX3N5c2N0bC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExY2ExNmQKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfc3lzY3RsLmMKQEAgLTAsMCArMSw3OTEgQEAKKy8qCisgKiAgaXBTeXN0ZW1TdGF0c1RhYmxlIGFuZCBpcElmU3RhdHNUYWJsZSBpbnRlcmZhY2UgTUlCIGFyY2hpdGVjdHVyZSBzdXBwb3J0CisgKgorICogJElkJAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBzdGF0cy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzLmg+CisKKyNpbmNsdWRlICIuLi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmgiCisKKyNpZiBkZWZpbmVkKE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMKSAmJiAhZGVmaW5lZChfS0VSTkVMKQorI2RlZmluZSBfS0VSTkVMIDEKKyNkZWZpbmUgX0lfREVGSU5FRF9LRVJORUwKKyNlbmRpZgorI2lmIE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMX1NUUlVDVFVSRVMKKyNkZWZpbmUgX0tFUk5FTF9TVFJVQ1RVUkVTCisjZW5kaWYKKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CisKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CisjaW5jbHVkZSA8c3lzL3Byb3Rvc3cuaD4KKworI2luY2x1ZGUgPG5ldC9pZi5oPgorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2luX3N5c3RtLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pcC5oPgorI2luY2x1ZGUgPG5ldGluZXQvaXBfaWNtcC5oPgorI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+CisjaWYgSEFWRV9ORVRJTkVUNl9JUDZfVkFSX0gKKyNpbmNsdWRlIDxuZXRpbmV0Ni9pcDZfdmFyLmg+CisjZW5kaWYKKyNpZm5kZWYgZnJlZWJzZDcKKyNpbmNsdWRlIDxuZXRpbmV0Ni9pbjZfdmFyLmg+CisjZW5kaWYKKworI2lmZGVmIGRhcndpbgorCisvKiBUaGlzIHN0cnVjdCBpcyBpbiBuZXRpbmV0Ni9pcDZfdmFyLmggd2hpY2ggQXBwbGUgZm9yIG9ic2N1cmUgcmVhc29ucworICogZG8gbm90IGRpc3RyaWJ1dGUgYXMgcGFydCBvZiAvdXNyL2luY2x1ZGUgOi0oCisgKi8KKworc3RydWN0CWlwNnN0YXQgeworCXVfcXVhZF90IGlwNnNfdG90YWw7CQkvKiB0b3RhbCBwYWNrZXRzIHJlY2VpdmVkICovCisJdV9xdWFkX3QgaXA2c190b29zaG9ydDsJCS8qIHBhY2tldCB0b28gc2hvcnQgKi8KKwl1X3F1YWRfdCBpcDZzX3Rvb3NtYWxsOwkJLyogbm90IGVub3VnaCBkYXRhICovCisJdV9xdWFkX3QgaXA2c19mcmFnbWVudHM7CS8qIGZyYWdtZW50cyByZWNlaXZlZCAqLworCXVfcXVhZF90IGlwNnNfZnJhZ2Ryb3BwZWQ7CS8qIGZyYWdzIGRyb3BwZWQoZHVwcywgb3V0IG9mIHNwYWNlKSAqLworCXVfcXVhZF90IGlwNnNfZnJhZ3RpbWVvdXQ7CS8qIGZyYWdtZW50cyB0aW1lZCBvdXQgKi8KKwl1X3F1YWRfdCBpcDZzX2ZyYWdvdmVyZmxvdzsJLyogZnJhZ21lbnRzIHRoYXQgZXhjZWVkZWQgbGltaXQgKi8KKwl1X3F1YWRfdCBpcDZzX2ZvcndhcmQ7CQkvKiBwYWNrZXRzIGZvcndhcmRlZCAqLworCXVfcXVhZF90IGlwNnNfY2FudGZvcndhcmQ7CS8qIHBhY2tldHMgcmN2ZCBmb3IgdW5yZWFjaGFibGUgZGVzdCAqLworCXVfcXVhZF90IGlwNnNfcmVkaXJlY3RzZW50OwkvKiBwYWNrZXRzIGZvcndhcmRlZCBvbiBzYW1lIG5ldCAqLworCXVfcXVhZF90IGlwNnNfZGVsaXZlcmVkOwkvKiBkYXRhZ3JhbXMgZGVsaXZlcmVkIHRvIHVwcGVyIGxldmVsKi8KKwl1X3F1YWRfdCBpcDZzX2xvY2Fsb3V0OwkJLyogdG90YWwgaXAgcGFja2V0cyBnZW5lcmF0ZWQgaGVyZSAqLworCXVfcXVhZF90IGlwNnNfb2Ryb3BwZWQ7CQkvKiBsb3N0IHBhY2tldHMgZHVlIHRvIG5vYnVmcywgZXRjLiAqLworCXVfcXVhZF90IGlwNnNfcmVhc3NlbWJsZWQ7CS8qIHRvdGFsIHBhY2tldHMgcmVhc3NlbWJsZWQgb2sgKi8KKwl1X3F1YWRfdCBpcDZzX2ZyYWdtZW50ZWQ7CS8qIGRhdGFncmFtcyBzdWNlc3NmdWxseSBmcmFnbWVudGVkICovCisJdV9xdWFkX3QgaXA2c19vZnJhZ21lbnRzOwkvKiBvdXRwdXQgZnJhZ21lbnRzIGNyZWF0ZWQgKi8KKwl1X3F1YWRfdCBpcDZzX2NhbnRmcmFnOwkJLyogZG9uJ3QgZnJhZ21lbnQgZmxhZyB3YXMgc2V0LCBldGMuICovCisJdV9xdWFkX3QgaXA2c19iYWRvcHRpb25zOwkvKiBlcnJvciBpbiBvcHRpb24gcHJvY2Vzc2luZyAqLworCXVfcXVhZF90IGlwNnNfbm9yb3V0ZTsJCS8qIHBhY2tldHMgZGlzY2FyZGVkIGR1ZSB0byBubyByb3V0ZSAqLworCXVfcXVhZF90IGlwNnNfYmFkdmVyczsJCS8qIGlwNiB2ZXJzaW9uICE9IDYgKi8KKwl1X3F1YWRfdCBpcDZzX3Jhd291dDsJCS8qIHRvdGFsIHJhdyBpcCBwYWNrZXRzIGdlbmVyYXRlZCAqLworCXVfcXVhZF90IGlwNnNfYmFkc2NvcGU7CQkvKiBzY29wZSBlcnJvciAqLworCXVfcXVhZF90IGlwNnNfbm90bWVtYmVyOwkvKiBkb24ndCBqb2luIHRoaXMgbXVsdGljYXN0IGdyb3VwICovCisJdV9xdWFkX3QgaXA2c19ueHRoaXN0WzI1Nl07CS8qIG5leHQgaGVhZGVyIGhpc3RvcnkgKi8KKwl1X3F1YWRfdCBpcDZzX20xOwkJLyogb25lIG1idWYgKi8KKwl1X3F1YWRfdCBpcDZzX20ybVszMl07CQkvKiB0d28gb3IgbW9yZSBtYnVmICovCisJdV9xdWFkX3QgaXA2c19tZXh0MTsJCS8qIG9uZSBleHQgbWJ1ZiAqLworCXVfcXVhZF90IGlwNnNfbWV4dDJtOwkJLyogdHdvIG9yIG1vcmUgZXh0IG1idWYgKi8KKwl1X3F1YWRfdCBpcDZzX2V4dGhkcnRvb2xvbmc7CS8qIGV4dCBoZHIgYXJlIG5vdCBjb250aW51b3VzICovCisJdV9xdWFkX3QgaXA2c19ub2dpZjsJCS8qIG5vIG1hdGNoIGdpZiBmb3VuZCAqLworCXVfcXVhZF90IGlwNnNfdG9vbWFueWhkcjsJLyogZGlzY2FyZGVkIGR1ZSB0byB0b28gbWFueSBoZWFkZXJzICovCisKKwkvKgorCSAqIHN0YXRpc3RpY3MgZm9yIGltcHJvdmVtZW50IG9mIHRoZSBzb3VyY2UgYWRkcmVzcyBzZWxlY3Rpb24KKwkgKiBhbGdvcml0aG06CisJICogWFhYOiBoYXJkY29kZWQgMTYgPSAjIG9mIGlwNiBtdWx0aWNhc3Qgc2NvcGUgdHlwZXMgKyAxCisJICovCisJLyogbnVtYmVyIG9mIHRpbWVzIHRoYXQgYWRkcmVzcyBzZWxlY3Rpb24gZmFpbHMgKi8KKwl1X3F1YWRfdCBpcDZzX3NvdXJjZXNfbm9uZTsKKwkvKiBudW1iZXIgb2YgdGltZXMgdGhhdCBhbiBhZGRyZXNzIG9uIHRoZSBvdXRnb2luZyBJL0YgaXMgY2hvc2VuICovCisJdV9xdWFkX3QgaXA2c19zb3VyY2VzX3NhbWVpZlsxNl07CisJLyogbnVtYmVyIG9mIHRpbWVzIHRoYXQgYW4gYWRkcmVzcyBvbiBhIG5vbi1vdXRnb2luZyBJL0YgaXMgY2hvc2VuICovCisJdV9xdWFkX3QgaXA2c19zb3VyY2VzX290aGVyaWZbMTZdOworCS8qCisJICogbnVtYmVyIG9mIHRpbWVzIHRoYXQgYW4gYWRkcmVzcyB0aGF0IGhhcyB0aGUgc2FtZSBzY29wZQorCSAqIGZyb20gdGhlIGRlc3RpbmF0aW9uIGlzIGNob3Nlbi4KKwkgKi8KKwl1X3F1YWRfdCBpcDZzX3NvdXJjZXNfc2FtZXNjb3BlWzE2XTsKKwkvKgorCSAqIG51bWJlciBvZiB0aW1lcyB0aGF0IGFuIGFkZHJlc3MgdGhhdCBoYXMgYSBkaWZmZXJlbnQgc2NvcGUKKwkgKiBmcm9tIHRoZSBkZXN0aW5hdGlvbiBpcyBjaG9zZW4uCisJICovCisJdV9xdWFkX3QgaXA2c19zb3VyY2VzX290aGVyc2NvcGVbMTZdOworCS8qIG51bWJlciBvZiB0aW1lcyB0aGF0IGFuIGRlcHJlY2F0ZWQgYWRkcmVzcyBpcyBjaG9zZW4gKi8KKwl1X3F1YWRfdCBpcDZzX3NvdXJjZXNfZGVwcmVjYXRlZFsxNl07CisKKwl1X3F1YWRfdCBpcDZzX2ZvcndhcmRfY2FjaGVoaXQ7CisJdV9xdWFkX3QgaXA2c19mb3J3YXJkX2NhY2hlbWlzczsKK307CisKKyNlbmRpZiAvKiBkYXJ3aW4qLworCitzdGF0aWMgaW50IF9zeXN0ZW1zdGF0c192NChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLCB1X2ludCBsb2FkX2ZsYWdzKTsKKworI2lmIGRlZmluZWQgKE5FVFNOTVBfRU5BQkxFX0lQVjYpCitzdGF0aWMgaW50IF9zeXN0ZW1zdGF0c192NihuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLCB1X2ludCBsb2FkX2ZsYWdzKTsKKyNlbmRpZgorCitzdGF0aWMgaW50IG5jcHVzOworCit2b2lkCituZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19hcmNoX2luaXQodm9pZCkKK3sKKyAgICBpbnQgICAgbmNwdV9taWJbXSAgPSB7IENUTF9IVywgSFdfTkNQVSB9OworICAgIHNpemVfdCBzaXogPSBzaXplb2YobmNwdXMpOworICAgIGlmIChzeXNjdGwobmNwdV9taWIsIDIsICZuY3B1cywgJnNpeiwgTlVMTCwgMCkgPCAwKSB7CisJc25tcF9sb2dfcGVycm9yKCJody5uY3B1Iik7CisgICAgICAgIG5jcHVzID0gMTsKKyAgICB9Cit9CisKKy8qCisgKgorICogQHJldHZhbCAgMCBzdWNjZXNzCisgKiBAcmV0dmFsIC0xIG5vIGNvbnRhaW5lciBzcGVjaWZpZWQKKyAqIEByZXR2YWwgLTIgY291bGQgbm90IG9wZW4gZmlsZQorICogQHJldHZhbCAtMyBjb3VsZCBub3QgY3JlYXRlIGVudHJ5IChwcm9iYWJseSBtYWxsb2MpCisgKiBAcmV0dmFsIC00IGZpbGUgZm9ybWF0IGVycm9yCisgKi8KK2ludAorbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfY29udGFpbmVyX2FyY2hfbG9hZChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBpbnQgcmMxOworI2lmIGRlZmluZWQgKE5FVFNOTVBfRU5BQkxFX0lQVjYpCisgICAgaW50IHJjMjsKKyNlbmRpZgorCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJubyBjb250YWluZXIgc3BlY2lmaWVkL2ZvdW5kIGZvciBhY2Nlc3Nfc3lzdGVtc3RhdHNfXG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAKKyAgICAvKgorICAgICAqIGxvYWQgdjQgYW5kIHY2IHN0YXRzLiBFdmVuIGlmIG9uZSBmYWlscywgdHJ5IHRoZSBvdGhlci4KKyAgICAgKiBJZiB0aGV5IGhhdmUgdGhlIHNhbWUgcmMsIHJldHVybiBpdC4gaWYgdGhlIGRpZmZlciwgcmV0dXJuCisgICAgICogdGhlIHNtYWxsZXIgb25lLiBObyBsb2cgbWVzc2FnZXMsIHNpbmNlIGVhY2ggaW5kaXZpZHVhbCBmdW5jdGlvbgorICAgICAqIHdvdWxkIGhhdmUgbG9nZ2VkIGl0cyBvd24gbWVzc2FnZS4KKyAgICAgKi8KKyAgICByYzEgPSBfc3lzdGVtc3RhdHNfdjQoY29udGFpbmVyLCBsb2FkX2ZsYWdzKTsKKyNpZiBkZWZpbmVkIChORVRTTk1QX0VOQUJMRV9JUFY2KQorICAgIHJjMiA9IF9zeXN0ZW1zdGF0c192Nihjb250YWluZXIsIGxvYWRfZmxhZ3MpOworICAgIGlmICgocmMxID09IHJjMikgfHwgKHJjMSA8IHJjMikpCisgICAgICAgIHJldHVybiByYzE7CisgICAgICAgIAorICAgIHJldHVybiByYzI7CisjZWxzZQorICAgIHJldHVybiByYzE7CisjZW5kaWYKK30KKworLyoKKyAqIEJhc2VkIG9uIGxvYWRfZmxhZ3MsIGxvYWQgaXBTeXN0ZW1TdGF0c1RhYmxlIG9yIGlwSWZTdGF0c1RhYmxlIGZvciBpcHY0IGVudHJpZXMuIAorICovCisjaWZkZWYgX19OZXRCU0RfXworCitzdGF0aWMgaW50Citfc3lzdGVtc3RhdHNfdjQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBuZXRzbm1wX3N5c3RlbXN0YXRzX2VudHJ5ICplbnRyeSA9IE5VTEw7CisgICAgdWludDY0X3QgaXBzdGF0W0lQX05TVEFUU107CisgICAgc2l6ZV90IGxlbiA9IHNpemVvZihpcHN0YXQpOworCisgICAgaWYgKHN5c2N0bGJ5bmFtZSgibmV0LmluZXQuaXAuc3RhdHMiLCAmaXBzdGF0LCAmbGVuLCBOVUxMLCAwKSA8IDApIHsKKwlORVRTTk1QX0xPR09OQ0UoKExPR19FUlIsICJDYW5ub3Qgc3lzY3RsYnluYW1lIG5ldC5pbmV0LmlwLnN0YXRzXG4iKSk7CisJcmV0dXJuIC0yOworICAgIH0KKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHM6Y29udGFpbmVyOmFyY2giLCAibG9hZCB2NCAoZmxhZ3MgJXgpXG4iLAorICAgICAgICAgICAgICAgIGxvYWRfZmxhZ3MpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KGNvbnRhaW5lciAhPSBOVUxMKTsgLyogbG9hZCBmdW5jdGlvbiBzaG91bGRhIGNoZWNrZWQgdGhpcyAqLworCisgICAgaWYgKGxvYWRfZmxhZ3MgJiBORVRTTk1QX0FDQ0VTU19TWVNURU1TVEFUU19MT0FEX0lGVEFCTEUpIHsKKyAgICAgICAgLyogd2UgZG8gbm90IHN1cHBvcnQgaXBJZlN0YXRzVGFibGUgZm9yIGlwdjQgKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19lbnRyeV9jcmVhdGUoMSwgMCwKKwkJImlwU3lzdGVtU3RhdHNUYWJsZS5pcHY0Iik7CisgICAgaWYoTlVMTCA9PSBlbnRyeSkgeworCXNubXBfbG9nKExPR19FUlIsICJzeXN0ZW1zdGF0c192NDogY2Fubm90IGNyZWF0ZSBlbnRyeVxuIik7CisJbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyLAorCQkJCQkJICBORVRTTk1QX0FDQ0VTU19TWVNURU1TVEFUU19GUkVFX05PRkxBR1MpOworCXJldHVybiAtMzsKKyAgICB9CisKKyAgICAvKgorICAgICAqIE9LIC0gd2UndmUgbm93IGdvdCAob3IgY3JlYXRlZCkgdGhlIGRhdGEgc3RydWN0dXJlIGZvcgorICAgICAqICAgICAgdGhpcyBzeXN0ZW1zdGF0cywgaW5jbHVkaW5nIGFueSAic3RhdGljIiBpbmZvcm1hdGlvbi4KKyAgICAgKiBOb3cgcGFyc2UgdGhlIHJlc3Qgb2YgdGhlIGxpbmUgKGkuZS4gc3RhcnRpbmcgZnJvbSAnc3RhdHMnKQorICAgICAqICAgICAgdG8gZXh0cmFjdCB0aGUgcmVsZXZhbnQgc3RhdGlzdGljcywgYW5kIHBvcHVsYXRlCisgICAgICogICAgICBkYXRhIHN0cnVjdHVyZSBhY2NvcmRpbmdseS4KKyAgICAgKi8KKworICAgIGVudHJ5LT5zdGF0cy5IQ0luUmVjZWl2ZXMubG93ID0gaXBzdGF0W0lQX1NUQVRfVE9UQUxdICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENJblJlY2VpdmVzLmhpZ2ggPSBpcHN0YXRbSVBfU1RBVF9UT1RBTF0gPj4gMzI7CisgICAgZW50cnktPnN0YXRzLkluSGRyRXJyb3JzID0gaXBzdGF0W0lQX1NUQVRfQkFEU1VNXQorCQkgICAgKyBpcHN0YXRbSVBfU1RBVF9UT09TSE9SVF0gKyBpcHN0YXRbSVBfU1RBVF9UT09TTUFMTF0KKwkgICAgICAgICAgICArIGlwc3RhdFtJUF9TVEFUX0JBREhMRU5dICsgaXBzdGF0W0lQX1NUQVRfQkFETEVOXTsKKyAgICBlbnRyeS0+c3RhdHMuSW5BZGRyRXJyb3JzID0gaXBzdGF0W0lQX1NUQVRfQ0FOVEZPUldBUkRdOworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZvcndEYXRhZ3JhbXMubG93ID0gaXBzdGF0W0lQX1NUQVRfRk9SV0FSRF0gJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZvcndEYXRhZ3JhbXMuaGlnaCA9IGlwc3RhdFtJUF9TVEFUX0ZPUldBUkRdID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5JblVua25vd25Qcm90b3MgPSBpcHN0YXRbSVBfU1RBVF9OT1BST1RPXTsKKyAgICBlbnRyeS0+c3RhdHMuSW5EaXNjYXJkcyA9IGlwc3RhdFtJUF9TVEFUX0ZSQUdEUk9QUEVEXTsKKyAgICBlbnRyeS0+c3RhdHMuSENJbkRlbGl2ZXJzLmxvdyA9IGlwc3RhdFtJUF9TVEFUX0RFTElWRVJFRF0gJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ0luRGVsaXZlcnMuaGlnaCA9IGlwc3RhdFtJUF9TVEFUX0RFTElWRVJFRF0gPj4gMzI7CisgICAgZW50cnktPnN0YXRzLkhDT3V0UmVxdWVzdHMubG93ID0gaXBzdGF0W0lQX1NUQVRfTE9DQUxPVVRdICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRSZXF1ZXN0cy5oaWdoID0gaXBzdGF0W0lQX1NUQVRfTE9DQUxPVVRdID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5IQ091dERpc2NhcmRzLmxvdyA9IGlwc3RhdFtJUF9TVEFUX09EUk9QUEVEXSAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RGlzY2FyZHMuaGlnaCA9IGlwc3RhdFtJUF9TVEFUX09EUk9QUEVEXSA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXROb1JvdXRlcy5sb3cgPSBpcHN0YXRbSVBfU1RBVF9OT0dJRl0gJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dE5vUm91dGVzLmhpZ2ggPSBpcHN0YXRbSVBfU1RBVF9OT0dJRl0gPj4gMzI7CisgICAgLyogZW50cnktPnN0YXRzLiA9IHNjYW5fdmFsc1sxMl07IC8gKiBSZWFzbVRpbWVvdXQgKi8KKyAgICBlbnRyeS0+c3RhdHMuUmVhc21SZXFkcyA9IGlwc3RhdFtJUF9TVEFUX0ZSQUdNRU5UU107CisgICAgZW50cnktPnN0YXRzLlJlYXNtT0tzID0gaXBzdGF0W0lQX1NUQVRfUkVBU1NFTUJMRURdOworICAgIGVudHJ5LT5zdGF0cy5SZWFzbUZhaWxzID0gaXBzdGF0W0lQX1NUQVRfRlJBR0RST1BQRURdCisJCSAgICArIGlwc3RhdFtJUF9TVEFUX0ZSQUdUSU1FT1VUXTsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnT0tzLmxvdyA9IGlwc3RhdFtJUF9TVEFUX0ZSQUdNRU5UU10gJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdPS3MuaGlnaCA9IGlwc3RhdFtJUF9TVEFUX0ZSQUdNRU5UU10gPj4gMzI7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0ZhaWxzLmxvdyA9IGlwc3RhdFtJUF9TVEFUX0NBTlRGUkFHXSAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0ZhaWxzLmhpZ2ggPSBpcHN0YXRbSVBfU1RBVF9DQU5URlJBR10gPj4gMzI7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0NyZWF0ZXMubG93ID0gaXBzdGF0W0lQX1NUQVRfT0ZSQUdNRU5UU10gJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdDcmVhdGVzLmhpZ2ggPSBpcHN0YXRbSVBfU1RBVF9PRlJBR01FTlRTXSA+PiAzMjsKKworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTlJFQ0VJVkVTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkhEUkVSUk9SU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5BRERSRVJST1JTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZPUldEQVRBR1JBTVNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOVU5LTk9XTlBST1RPU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5ESVNDQVJEU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkRFTElWRVJTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVFJFUVVFU1RTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVERJU0NBUkRTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE5PUk9VVEVTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTVJFUURTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTU9LU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVBU01GQUlMU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHT0tTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdGQUlMU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHQ1JFQVRFU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfRElTQ09OVElOVUlUWVRJTUVdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFRlJFU0hSQVRFXSA9IDE7CisKKyAgICAvKgorICAgICAqIGFkZCB0byBjb250YWluZXIKKyAgICAgKi8KKyAgICBpZiAoQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KSA8IDApCisgICAgeworCXNubXBfbG9nKExPR19FUlIsICJlcnJvciB3aXRoIHN5c3RlbXN0YXRzX3Y0OiBpbnNlcnQgaW50byBjb250YWluZXIgZmFpbGVkLlxuIik7CisJbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfZW50cnlfZnJlZShlbnRyeSk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKworI2lmIGRlZmluZWQgKE5FVFNOTVBfRU5BQkxFX0lQVjYpCisKK3N0YXRpYyBpbnQKK19zeXN0ZW1zdGF0c192Nl9sb2FkX3N5c3RlbXN0YXRzKG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsIHVfaW50IGxvYWRfZmxhZ3MpCit7CisgICAgbmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSAqZW50cnkgPSBOVUxMOworICAgIHVpbnQ2NF90IGlwc3RhdFtJUDZfTlNUQVRTXTsKKyAgICBzaXplX3QgbGVuID0gc2l6ZW9mKGlwc3RhdCk7CisKKyAgICBpZiAoc3lzY3RsYnluYW1lKCJuZXQuaW5ldDYuaXA2LnN0YXRzIiwgJmlwc3RhdCwgJmxlbiwgTlVMTCwgMCkgPCAwKSB7CisJTkVUU05NUF9MT0dPTkNFKChMT0dfRVJSLCAiQ2Fubm90IHN5c2N0bGJ5bmFtZSBuZXQuaW5ldDYuaXA2LnN0YXRzXG4iKSk7CisJcmV0dXJuIC0yOworICAgIH0KKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHM6Y29udGFpbmVyOmFyY2giLCAibG9hZCB2NiAoZmxhZ3MgJXgpXG4iLAorICAgICAgICAgICAgICAgIGxvYWRfZmxhZ3MpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KGNvbnRhaW5lciAhPSBOVUxMKTsgLyogbG9hZCBmdW5jdGlvbiBzaG91bGRhIGNoZWNrZWQgdGhpcyAqLworCisgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19lbnRyeV9jcmVhdGUoMiwgMCwKKwkJImlwU3lzdGVtU3RhdHNUYWJsZS5pcHY2Iik7CisgICAgaWYoTlVMTCA9PSBlbnRyeSkgeworCXNubXBfbG9nKExPR19FUlIsICJzeXN0ZW1zdGF0c192Nl9sb2FkX3N5c3RlbXN0YXRzOiBjYW5ub3QgY3JlYXRlIGVudHJ5XG4iKTsKKwluZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19jb250YWluZXJfZnJlZShjb250YWluZXIsCisJCQkJCQkgIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0ZSRUVfTk9GTEFHUyk7CisJcmV0dXJuIC0zOworICAgIH0KKworICAgIC8qCisgICAgICogT0sgLSB3ZSd2ZSBub3cgZ290IChvciBjcmVhdGVkKSB0aGUgZGF0YSBzdHJ1Y3R1cmUgZm9yCisgICAgICogICAgICB0aGlzIHN5c3RlbXN0YXRzLCBpbmNsdWRpbmcgYW55ICJzdGF0aWMiIGluZm9ybWF0aW9uLgorICAgICAqLworCisgICAgZW50cnktPnN0YXRzLkhDSW5SZWNlaXZlcy5sb3cgPSBpcHN0YXRbSVA2X1NUQVRfVE9UQUxdICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENJblJlY2VpdmVzLmhpZ2ggPSBpcHN0YXRbSVA2X1NUQVRfVE9UQUxdID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5JbkhkckVycm9ycyA9IGlwc3RhdFtJUDZfU1RBVF9CQURPUFRJT05TXQorCQkgICAgKyBpcHN0YXRbSVA2X1NUQVRfVE9PU0hPUlRdICsgaXBzdGF0W0lQNl9TVEFUX1RPT1NNQUxMXQorCQkgICAgKyBpcHN0YXRbSVA2X1NUQVRfVE9PTUFOWUhEUl0gKyBpcHN0YXRbSVA2X1NUQVRfRVhUSERSVE9PTE9OR107CisgICAgZW50cnktPnN0YXRzLkluQWRkckVycm9ycyA9IGlwc3RhdFtJUDZfU1RBVF9DQU5URk9SV0FSRF07CisgICAgZW50cnktPnN0YXRzLkhDT3V0Rm9yd0RhdGFncmFtcy5sb3cgPSBpcHN0YXRbSVA2X1NUQVRfRk9SV0FSRF0gJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZvcndEYXRhZ3JhbXMuaGlnaCA9IGlwc3RhdFtJUDZfU1RBVF9GT1JXQVJEXSA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuSW5EaXNjYXJkcyA9IGlwc3RhdFtJUDZfU1RBVF9GUkFHRFJPUFBFRF07CisgICAgZW50cnktPnN0YXRzLkhDSW5EZWxpdmVycy5sb3cgPSBpcHN0YXRbSVA2X1NUQVRfREVMSVZFUkVEXSAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDSW5EZWxpdmVycy5oaWdoID0gaXBzdGF0W0lQNl9TVEFUX0RFTElWRVJFRF0gPj4gMzI7CisgICAgZW50cnktPnN0YXRzLkhDT3V0UmVxdWVzdHMubG93ID0gaXBzdGF0W0lQNl9TVEFUX0xPQ0FMT1VUXSAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0UmVxdWVzdHMuaGlnaCA9IGlwc3RhdFtJUDZfU1RBVF9MT0NBTE9VVF0gPj4gMzI7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RGlzY2FyZHMubG93ID0gaXBzdGF0W0lQNl9TVEFUX09EUk9QUEVEXSAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RGlzY2FyZHMuaGlnaCA9IGlwc3RhdFtJUDZfU1RBVF9PRFJPUFBFRF0gPj4gMzI7CisgICAgZW50cnktPnN0YXRzLkhDT3V0Tm9Sb3V0ZXMubG93ID0gaXBzdGF0W0lQNl9TVEFUX05PR0lGXSAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0Tm9Sb3V0ZXMuaGlnaCA9IGlwc3RhdFtJUDZfU1RBVF9OT0dJRl0gPj4gMzI7CisgICAgLyogZW50cnktPnN0YXRzLiA9IHNjYW5fdmFsc1sxMl07IC8gKiBSZWFzbVRpbWVvdXQgKi8KKyAgICBlbnRyeS0+c3RhdHMuUmVhc21SZXFkcyA9IGlwc3RhdFtJUDZfU1RBVF9GUkFHTUVOVFNdOworICAgIGVudHJ5LT5zdGF0cy5SZWFzbU9LcyA9IGlwc3RhdFtJUDZfU1RBVF9SRUFTU0VNQkxFRF07CisgICAgZW50cnktPnN0YXRzLlJlYXNtRmFpbHMgPSBpcHN0YXRbSVA2X1NUQVRfRlJBR0RST1BQRURdCisJCSAgICArIGlwc3RhdFtJUDZfU1RBVF9GUkFHVElNRU9VVF07CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ09Lcy5sb3cgPSBpcHN0YXRbSVA2X1NUQVRfRlJBR01FTlRTXSAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ09Lcy5oaWdoID0gaXBzdGF0W0lQNl9TVEFUX0ZSQUdNRU5UU10gPj4gMzI7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0ZhaWxzLmxvdyA9IGlwc3RhdFtJUDZfU1RBVF9DQU5URlJBR10gJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdGYWlscy5oaWdoID0gaXBzdGF0W0lQNl9TVEFUX0NBTlRGUkFHXSA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnQ3JlYXRlcy5sb3cgPSBpcHN0YXRbSVA2X1NUQVRfT0ZSQUdNRU5UU10gJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdDcmVhdGVzLmhpZ2ggPSBpcHN0YXRbSVA2X1NUQVRfT0ZSQUdNRU5UU10gPj4gMzI7CisKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5SRUNFSVZFU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5IRFJFUlJPUlNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOQUREUkVSUk9SU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGT1JXREFUQUdSQU1TXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkRJU0NBUkRTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOREVMSVZFUlNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUUkVRVUVTVFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURElTQ0FSRFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTk9ST1VURVNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNUkVRRFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNT0tTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTUZBSUxTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdPS1NdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0ZBSUxTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdDUkVBVEVTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9ESVNDT05USU5VSVRZVElNRV0gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVGUkVTSFJBVEVdID0gMTsKKworICAgIC8qCisgICAgICogYWRkIHRvIGNvbnRhaW5lcgorICAgICAqLworICAgIGlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpIDwgMCkKKyAgICB7CisJc25tcF9sb2coTE9HX0VSUiwgInN5c3RlbXN0YXRzX3Y2X2xvYWRfc3lzdGVtc3RhdHM6IGNhbm5vdCBpbnNlcnQgZW50cnlcbiIpOworCURFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHM6Y29udGFpbmVyIiwiZXJyb3Igd2l0aCBzeXN0ZW1zdGF0c19lbnRyeTogaW5zZXJ0IGludG8gY29udGFpbmVyIGZhaWxlZC5cbiIpKTsKKwluZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19lbnRyeV9mcmVlKGVudHJ5KTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworCisvKgorICogbG9hZCBpcElmU3RhdHNUYWJsZSBmb3IgaXB2NiBlbnRyaWVzCisgKi8KK3N0YXRpYyBpbnQgCitfc3lzdGVtc3RhdHNfdjZfbG9hZF9pZnN0YXRzKG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsIHVfaW50IGxvYWRfZmxhZ3MpCit7CisgICAgc3RydWN0IGlmX25hbWVpbmRleCAqaWZzID0gaWZfbmFtZWluZGV4KCk7CisgICAgaW50IGl4OworICAgIGludCByYyA9IDA7CisKKyAgICBmb3IgKGl4ID0gMDsgaWZzW2l4XS5pZl9pbmRleDsgaXgrKykgeworCXN0cnVjdCBpbjZfaWZzdGF0ICppZnM2OworCXN0cnVjdCBpbjZfaWZyZXEgaWZyOworCWludCBzOworCisJbWVtc2V0KCZpZnIsIDAsIHNpemVvZihpZnIpKTsKKwlzdHJuY3B5KGlmci5pZnJfbmFtZSwgaWZzW2l4XS5pZl9uYW1lLCBzaXplb2YoaWZyLmlmcl9uYW1lKS0xKTsKKwlpZiAoKHMgPSBzb2NrZXQoQUZfSU5FVDYsIFNPQ0tfREdSQU0sIDApKSA8IDApIHsKKwkgICAgcmMgPSAtMTsKKwkgICAgYnJlYWs7CisJfQorCWlmIChpb2N0bChzLCBTSU9DR0lGU1RBVF9JTjYsIChjYWRkcl90KSZpZnIpIDwgMCkgeworCSAgICByYyA9IC0yOworCSAgICBjbG9zZShzKTsKKwkgICAgYnJlYWs7CisJfQorCWNsb3NlKHMpOworCWlmczYgPSAmaWZyLmlmcl9pZnJ1LmlmcnVfc3RhdDsKKyAgICB9CisgICAgaWZfZnJlZW5hbWVpbmRleChpZnMpOworICAgIHJldHVybiByYzsKK30KKyNlbmRpZgorCisjZWxzZQorCitzdGF0aWMgaW50Citfc3lzdGVtc3RhdHNfdjQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBuZXRzbm1wX3N5c3RlbXN0YXRzX2VudHJ5ICplbnRyeSA9IE5VTEw7CisjaWZkZWYgX19EcmFnb25GbHlfXworICAgIHNpemVfdCBsZW4gPSBuY3B1cypzaXplb2Yoc3RydWN0IGlwX3N0YXRzKTsKKyAgICBzdHJ1Y3QgaXBfc3RhdHMgKmlwc3RhdCA9IG1hbGxvYyhsZW4pOworICAgIGludCBjOworI2Vsc2UKKyAgICBzaXplX3QgbGVuID0gc2l6ZW9mKHN0cnVjdCBpcHN0YXQpOworICAgIHN0cnVjdCBpcHN0YXQgKmlwc3RhdCA9IG1hbGxvYyhsZW4pOworI2VuZGlmCisgICAgaW50IG1pYltdID0geyBDVExfTkVULCBQRl9JTkVULCBJUFBST1RPX0lQLCBJUENUTF9TVEFUUyB9OworCisgICAgaWYgKHN5c2N0bChtaWIsIHNpemVvZihtaWIpIC8gc2l6ZW9mKG1pYlswXSksIGlwc3RhdCwgJmxlbiwgTlVMTCwgMCkgPT0gLTEpIHsKKwlzbm1wX2xvZ19wZXJyb3IoIkNhbm5vdCBzeXNjdGxieW5hbWUgbmV0LmluZXQuaXAuc3RhdHMiKTsKKwlmcmVlKGlwc3RhdCk7CisJcmV0dXJuIC0yOworICAgIH0KKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHM6Y29udGFpbmVyOmFyY2giLCAibG9hZCB2NCAoZmxhZ3MgJXgpXG4iLAorICAgICAgICAgICAgICAgIGxvYWRfZmxhZ3MpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KGNvbnRhaW5lciAhPSBOVUxMKTsgLyogbG9hZCBmdW5jdGlvbiBzaG91bGRhIGNoZWNrZWQgdGhpcyAqLworCisgICAgaWYgKGxvYWRfZmxhZ3MgJiBORVRTTk1QX0FDQ0VTU19TWVNURU1TVEFUU19MT0FEX0lGVEFCTEUpIHsKKyAgICAgICAgLyogd2UgZG8gbm90IHN1cHBvcnQgaXBJZlN0YXRzVGFibGUgZm9yIGlwdjQgKi8KKwlmcmVlKGlwc3RhdCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGVudHJ5ID0gbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfZW50cnlfY3JlYXRlKDEsIDAsCisJCSJpcFN5c3RlbVN0YXRzVGFibGUuaXB2NCIpOworICAgIGlmKE5VTEwgPT0gZW50cnkpIHsKKwluZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19jb250YWluZXJfZnJlZShjb250YWluZXIsCisJCQkJCQkgIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0ZSRUVfTk9GTEFHUyk7CisJZnJlZShpcHN0YXQpOworCXJldHVybiAtMzsKKyAgICB9CisKKyAgICAvKgorICAgICAqIE9LIC0gd2UndmUgbm93IGdvdCAob3IgY3JlYXRlZCkgdGhlIGRhdGEgc3RydWN0dXJlIGZvcgorICAgICAqICAgICAgdGhpcyBzeXN0ZW1zdGF0cywgaW5jbHVkaW5nIGFueSAic3RhdGljIiBpbmZvcm1hdGlvbi4KKyAgICAgKiBOb3cgcGFyc2UgdGhlIHJlc3Qgb2YgdGhlIGxpbmUgKGkuZS4gc3RhcnRpbmcgZnJvbSAnc3RhdHMnKQorICAgICAqICAgICAgdG8gZXh0cmFjdCB0aGUgcmVsZXZhbnQgc3RhdGlzdGljcywgYW5kIHBvcHVsYXRlCisgICAgICogICAgICBkYXRhIHN0cnVjdHVyZSBhY2NvcmRpbmdseS4KKyAgICAgKi8KKworI2lmZGVmIGRyYWdvbmZseQorICAgIGZvciAoYyA9IDE7IGMgPCBuY3B1czsgYysrKSB7CisJaW50IGksIG4gPSBzaXplb2Yoc3RydWN0IGlwX3N0YXRzKS9zaXplb2YodV9sb25nKTsKKwl1X2xvbmcgKnVwID0gKHVfbG9uZyAqKWlwc3RhdDsKKwl1X2xvbmcgKmNwID0gKHVfbG9uZyAqKShpcHN0YXQrYyk7CisJZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworCSAgICAqdXAgKz0gKmNwOworCSAgICB1cCsrOworCSAgICBjcCsrOworCX0KKyAgICB9CisjZW5kaWYKKyAgICBlbnRyeS0+c3RhdHMuSENJblJlY2VpdmVzLmxvdyA9IGlwc3RhdC0+aXBzX3RvdGFsICYgMHhmZmZmZmZmZjsKKyNpZm5kZWYgZGFyd2luCisgICAgZW50cnktPnN0YXRzLkhDSW5SZWNlaXZlcy5oaWdoID0gaXBzdGF0LT5pcHNfdG90YWwgPj4gMzI7CisjZW5kaWYKKyAgICBlbnRyeS0+c3RhdHMuSW5IZHJFcnJvcnMgPSBpcHN0YXQtPmlwc19iYWRzdW0gKyBpcHN0YXQtPmlwc190b29zaG9ydAorCQkgICAgICAgICAgICArIGlwc3RhdC0+aXBzX3Rvb3NtYWxsICsgaXBzdGF0LT5pcHNfYmFkaGxlbgorCQkJICAgICsgaXBzdGF0LT5pcHNfYmFkbGVuOworICAgIGVudHJ5LT5zdGF0cy5JbkFkZHJFcnJvcnMgPSBpcHN0YXQtPmlwc19jYW50Zm9yd2FyZDsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zLmxvdyA9IGlwc3RhdC0+aXBzX2ZvcndhcmQgJiAweGZmZmZmZmZmOworI2lmbmRlZiBkYXJ3aW4KKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zLmhpZ2ggPSBpcHN0YXQtPmlwc19mb3J3YXJkID4+IDMyOworI2VuZGlmCisgICAgZW50cnktPnN0YXRzLkluVW5rbm93blByb3RvcyA9IGlwc3RhdC0+aXBzX25vcHJvdG87CisgICAgZW50cnktPnN0YXRzLkluRGlzY2FyZHMgPSBpcHN0YXQtPmlwc19mcmFnZHJvcHBlZDsKKyAgICBlbnRyeS0+c3RhdHMuSENJbkRlbGl2ZXJzLmxvdyA9IGlwc3RhdC0+aXBzX2RlbGl2ZXJlZCAmIDB4ZmZmZmZmZmY7CisjaWZuZGVmIGRhcndpbgorICAgIGVudHJ5LT5zdGF0cy5IQ0luRGVsaXZlcnMuaGlnaCA9IGlwc3RhdC0+aXBzX2RlbGl2ZXJlZCA+PiAzMjsKKyNlbmRpZgorICAgIGVudHJ5LT5zdGF0cy5IQ091dFJlcXVlc3RzLmxvdyA9IGlwc3RhdC0+aXBzX2xvY2Fsb3V0ICYgMHhmZmZmZmZmZjsKKyNpZm5kZWYgZGFyd2luCisgICAgZW50cnktPnN0YXRzLkhDT3V0UmVxdWVzdHMuaGlnaCA9IGlwc3RhdC0+aXBzX2xvY2Fsb3V0ID4+IDMyOworI2VuZGlmCisgICAgZW50cnktPnN0YXRzLkhDT3V0RGlzY2FyZHMubG93ID0gaXBzdGF0LT5pcHNfb2Ryb3BwZWQgJiAweGZmZmZmZmZmOworI2lmbmRlZiBkYXJ3aW4KKyAgICBlbnRyeS0+c3RhdHMuSENPdXREaXNjYXJkcy5oaWdoID0gaXBzdGF0LT5pcHNfb2Ryb3BwZWQgPj4gMzI7CisjZW5kaWYKKyAgICBlbnRyeS0+c3RhdHMuSENPdXROb1JvdXRlcy5sb3cgPSBpcHN0YXQtPmlwc19ub2dpZiAmIDB4ZmZmZmZmZmY7CisjaWZuZGVmIGRhcndpbgorICAgIGVudHJ5LT5zdGF0cy5IQ091dE5vUm91dGVzLmhpZ2ggPSBpcHN0YXQtPmlwc19ub2dpZiA+PiAzMjsKKyNlbmRpZgorICAgIC8qIGVudHJ5LT5zdGF0cy4gPSBzY2FuX3ZhbHNbMTJdOyAvICogUmVhc21UaW1lb3V0ICovCisgICAgZW50cnktPnN0YXRzLlJlYXNtUmVxZHMgPSBpcHN0YXQtPmlwc19mcmFnbWVudHM7CisgICAgZW50cnktPnN0YXRzLlJlYXNtT0tzID0gaXBzdGF0LT5pcHNfcmVhc3NlbWJsZWQ7CisgICAgZW50cnktPnN0YXRzLlJlYXNtRmFpbHMgPSBpcHN0YXQtPmlwc19mcmFnZHJvcHBlZCArIGlwc3RhdC0+aXBzX2ZyYWd0aW1lb3V0OworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdPS3MubG93ID0gaXBzdGF0LT5pcHNfZnJhZ21lbnRzICYgMHhmZmZmZmZmZjsKKyNpZm5kZWYgZGFyd2luCisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ09Lcy5oaWdoID0gaXBzdGF0LT5pcHNfZnJhZ21lbnRzID4+IDMyOworI2VuZGlmCisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0ZhaWxzLmxvdyA9IGlwc3RhdC0+aXBzX2NhbnRmcmFnICYgMHhmZmZmZmZmZjsKKyNpZm5kZWYgZGFyd2luCisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0ZhaWxzLmhpZ2ggPSBpcHN0YXQtPmlwc19jYW50ZnJhZyA+PiAzMjsKKyNlbmRpZgorICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdDcmVhdGVzLmxvdyA9IGlwc3RhdC0+aXBzX29mcmFnbWVudHMgJiAweGZmZmZmZmZmOworI2lmbmRlZiBkYXJ3aW4KKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnQ3JlYXRlcy5oaWdoID0gaXBzdGF0LT5pcHNfb2ZyYWdtZW50cyA+PiAzMjsKKyNlbmRpZgorCisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOUkVDRUlWRVNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOSERSRVJST1JTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkFERFJFUlJPUlNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURk9SV0RBVEFHUkFNU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5VTktOT1dOUFJPVE9TXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkRJU0NBUkRTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOREVMSVZFUlNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUUkVRVUVTVFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURElTQ0FSRFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTk9ST1VURVNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNUkVRRFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNT0tTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTUZBSUxTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdPS1NdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0ZBSUxTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdDUkVBVEVTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9ESVNDT05USU5VSVRZVElNRV0gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVGUkVTSFJBVEVdID0gMTsKKworICAgIC8qCisgICAgICogYWRkIHRvIGNvbnRhaW5lcgorICAgICAqLworICAgIGlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpIDwgMCkKKyAgICB7CisJREVCVUdNU0dUTCgoImFjY2VzczpzeXN0ZW1zdGF0czpjb250YWluZXIiLCJlcnJvciB3aXRoIHN5c3RlbXN0YXRzX2VudHJ5OiBpbnNlcnQgaW50byBjb250YWluZXIgZmFpbGVkLlxuIikpOworCW5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2ZyZWUoZW50cnkpOworICAgIH0KKworICAgIGZyZWUoaXBzdGF0KTsKKyAgICByZXR1cm4gMDsKK30KKworCisjaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKKworLyoKKyAqIGxvYWQgaXBTeXN0ZW1TdGF0c1RhYmxlIGZvciBpcHY2IGVudHJpZXMKKyAqLworc3RhdGljIGludCAKK19zeXN0ZW1zdGF0c192Nl9sb2FkX3N5c3RlbXN0YXRzKG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsIHVfaW50IGxvYWRfZmxhZ3MpCit7CisgICAgc3RydWN0IGlwNnN0YXQgaXA2c3RhdDsKKyAgICBpbnQgbWliW10gPSB7IENUTF9ORVQsIEFGX0lORVQ2LCBJUFBST1RPX0lQVjYsIElQVjZDVExfU1RBVFMgfTsKKyAgICBzaXplX3QgbGVuID0gc2l6ZW9mKGlwNnN0YXQpOworICAgIG5ldHNubXBfc3lzdGVtc3RhdHNfZW50cnkgKmVudHJ5ID0gTlVMTDsKKworICAgIGlmIChzeXNjdGwobWliLCBzaXplb2YobWliKSAvIHNpemVvZihtaWJbMF0pLCAmaXA2c3RhdCwgJmxlbiwgTlVMTCwgMCkgPT0gLTEpIHsKKyAgCU5FVFNOTVBfTE9HT05DRSgoTE9HX0VSUiwgIkNhbm5vdCBzeXNjdGwoQ1RMX05FVCwgQUZfSU5FVDYsIElQUFJPVE9fSVBWNiwgSVBWNkNUTF9TVEFUUylcbiIpKTsKKwlyZXR1cm4gLTE7CisgICAgfQorICAgIAorICAgIGVudHJ5ID0gbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfZW50cnlfY3JlYXRlKDIsIDAsCisgICAgICAgICAgICAiaXBTeXN0ZW1TdGF0c1RhYmxlLmlwdjYiKTsKKyAgICBpZihOVUxMID09IGVudHJ5KQorICAgICAgICByZXR1cm4gLTM7CisgICAgCisgICAgZW50cnktPnN0YXRzLkhDSW5SZWNlaXZlcy5sb3cgPSBpcDZzdGF0LmlwNnNfdG90YWwgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ0luUmVjZWl2ZXMuaGlnaCA9IGlwNnN0YXQuaXA2c190b3RhbCA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5SRUNFSVZFU10gPSAxOworICAgIC8qCisgICAgZW50cnktPnN0YXRzLkhDSW5PY3RldHMubG93ID0gc2Nhbl92YWwgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ0luT2N0ZXRzLmhpZ2ggPSBzY2FuX3ZhbCAgPj4gMzI7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOT0NURVRTXSA9IDE7CisgICAgKi8KKyAgICBlbnRyeS0+c3RhdHMuSW5IZHJFcnJvcnMgPSBpcDZzdGF0LmlwNnNfYmFkb3B0aW9ucyArIGlwNnN0YXQuaXA2c190b29zaG9ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGlwNnN0YXQuaXA2c190b29zbWFsbCArIGlwNnN0YXQuaXA2c19iYWR2ZXJzCisJCQkgICAgICsgaXA2c3RhdC5pcDZzX3Rvb21hbnloZHI7CisjaWYgSEFWRV9TVFJVQ1RfSVA2U1RBVF9JUDZTX0VYVEhEUlRPT0xPTkcKKyAgICBlbnRyeS0+c3RhdHMuSW5IZHJFcnJvcnMgKz0gaXA2c3RhdC5pcDZzX2V4dGhkcnRvb2xvbmc7CisjZW5kaWYKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOSERSRVJST1JTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLkhDSW5Ob1JvdXRlcy5sb3cgPSBpcDZzdGF0LmlwNnNfY2FudGZvcndhcmQgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ0luTm9Sb3V0ZXMuaGlnaCA9IGlwNnN0YXQuaXA2c19jYW50Zm9yd2FyZCA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5OT1JPVVRFU10gPSAxOworICAgIC8qCisgICAgZW50cnktPnN0YXRzLmluQWRkckVycm9ycyA9IDA7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkFERFJFUlJPUlNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSW5Vbmtub3duUHJvdG9zID0gc2Nhbl92YWw7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTlVOS05PV05QUk9UT1NdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSW5UcnVuY2F0ZWRQa3RzID0gc2Nhbl92YWwgICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOVFJVTkNBVEVEUEtUU10gPSAxOworICAgICovCisgICAgZW50cnktPnN0YXRzLkhDSW5Gb3J3RGF0YWdyYW1zLmxvdyA9IGlwNnN0YXQuaXA2c19mb3J3YXJkICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENJbkZvcndEYXRhZ3JhbXMuaGlnaCA9IGlwNnN0YXQuaXA2c19mb3J3YXJkID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkZPUldEQVRBR1JBTVNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuUmVhc21SZXFkcyA9IGlwNnN0YXQuaXA2c19mcmFnbWVudHM7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTVJFUURTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLlJlYXNtT0tzID0gaXA2c3RhdC5pcDZzX3JlYXNzZW1ibGVkOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVBU01PS1NdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuUmVhc21GYWlscyA9IGlwNnN0YXQuaXA2c19mcmFnZHJvcHBlZCArIGlwNnN0YXQuaXA2c19mcmFndGltZW91dDsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNRkFJTFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSW5EaXNjYXJkcyA9IGlwNnN0YXQuaXA2c19mcmFnZHJvcHBlZDsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lORElTQ0FSRFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSENJbkRlbGl2ZXJzLmxvdyA9IGlwNnN0YXQuaXA2c19kZWxpdmVyZWQgICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENJbkRlbGl2ZXJzLmhpZ2ggPSBpcDZzdGF0LmlwNnNfZGVsaXZlcmVkID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkRFTElWRVJTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLkhDT3V0UmVxdWVzdHMubG93ID0gaXA2c3RhdC5pcDZzX2xvY2Fsb3V0ICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRSZXF1ZXN0cy5oaWdoID0gaXA2c3RhdC5pcDZzX2xvY2Fsb3V0ID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRSRVFVRVNUU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5IQ091dE5vUm91dGVzLmxvdyA9IGlwNnN0YXQuaXA2c19ub3JvdXRlICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXROb1JvdXRlcy5oaWdoID0gaXA2c3RhdC5pcDZzX25vcm91dGUgPj4gMzI7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE5PUk9VVEVTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLkhDT3V0Rm9yd0RhdGFncmFtcy5sb3cgPSBpcDZzdGF0LmlwNnNfZm9yd2FyZCAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0Rm9yd0RhdGFncmFtcy5oaWdoID0gaXA2c3RhdC5pcDZzX2ZvcndhcmQgPj4gMzI7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZPUldEQVRBR1JBTVNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXREaXNjYXJkcy5sb3cgPSBpcDZzdGF0LmlwNnNfb2Ryb3BwZWQgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dERpc2NhcmRzLmhpZ2ggPSBpcDZzdGF0LmlwNnNfb2Ryb3BwZWQgPj4gMzI7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVERJU0NBUkRTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ1JlcWRzLmxvdyA9IChpcDZzdGF0LmlwNnNfZnJhZ21lbnRlZCArIGlwNnN0YXQuaXA2c19jYW50ZnJhZykgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdSZXFkcy5oaWdoID0gKGlwNnN0YXQuaXA2c19mcmFnbWVudGVkICsgaXA2c3RhdC5pcDZzX2NhbnRmcmFnKSA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR1JFUURTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ09Lcy5sb3cgPSBpcDZzdGF0LmlwNnNfZnJhZ21lbnRlZCAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ09Lcy5oaWdoID0gaXA2c3RhdC5pcDZzX2ZyYWdtZW50ZWQgPj4gMzI7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdPS1NdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnRmFpbHMubG93ID0gaXA2c3RhdC5pcDZzX2NhbnRmcmFnICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnRmFpbHMuaGlnaCA9IGlwNnN0YXQuaXA2c19jYW50ZnJhZyA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0ZBSUxTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0NyZWF0ZXMubG93ID0gaXA2c3RhdC5pcDZzX29mcmFnbWVudHMgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdDcmVhdGVzLmhpZ2ggPSBpcDZzdGF0LmlwNnNfb2ZyYWdtZW50cyA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0NSRUFURVNdID0gMTsKKyAgICAvKgorICAgIGVudHJ5LT5zdGF0cy5IQ091dFRyYW5zbWl0cy5sb3cgPSBzY2FuX3ZhbCAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0VHJhbnNtaXRzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUVFJBTlNNSVRTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLkhDT3V0TWNhc3RPY3RldHMubG93ID0gc2Nhbl92YWwgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dE1jYXN0T2N0ZXRzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTUNBU1RPQ1RFVFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSENJbk1jYXN0UGt0cy5sb3cgPSBzY2FuX3ZhbCAgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ0luTWNhc3RQa3RzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5NQ0FTVFBLVFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSENJbk1jYXN0T2N0ZXRzLmxvdyA9IHNjYW5fdmFsICAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDSW5NY2FzdE9jdGV0cy5oaWdoID0gc2Nhbl92YWwgPj4gMzI7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTUNBU1RPQ1RFVFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRNY2FzdFBrdHMubG93ID0gc2Nhbl92YWwgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dE1jYXN0UGt0cy5oaWdoID0gc2Nhbl92YWwgPj4gMzI7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE1DQVNUUEtUU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5IQ091dE9jdGV0cy5sb3cgPSBzY2FuX3ZhbCAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0T2N0ZXRzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUT0NURVRTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLkhDSW5CY2FzdFBrdHMubG93ID0gc2Nhbl92YWwgICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENJbkJjYXN0UGt0cy5oaWdoID0gc2Nhbl92YWwgPj4gMzI7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOQkNBU1RQS1RTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLkhDT3V0QmNhc3RQa3RzLmxvdyA9IHNjYW5fdmFsICAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0QmNhc3RQa3RzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUQkNBU1RQS1RTXSA9IDE7CisgICAgKi8KKworICAgIC8qCisgICAgICogYWRkIHRvIGNvbnRhaW5lcgorICAgICAqLworICAgIGlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpIDwgMCkgeworCURFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHM6Y29udGFpbmVyIiwiZXJyb3Igd2l0aCBzeXN0ZW1zdGF0c19lbnRyeTogaW5zZXJ0IGludG8gY29udGFpbmVyIGZhaWxlZC5cbiIpKTsKKwluZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19lbnRyeV9mcmVlKGVudHJ5KTsKKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworI2RlZmluZSBERVZfU05NUDZfRElSTkFNRSAgICIvcHJvYy9uZXQvZGV2X3NubXA2IgorI2RlZmluZSBJRklOREVYX0xJTkUgICAgICAgICJpZkluZGV4IgorI2RlZmluZSBERVZfRklMRU5BTUVfTEVOICAgIDY0CisKKy8qCisgKiBsb2FkIGlwSWZTdGF0c1RhYmxlIGZvciBpcHY2IGVudHJpZXMKKyAqLworc3RhdGljIGludCAKK19zeXN0ZW1zdGF0c192Nl9sb2FkX2lmc3RhdHMobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBESVIgICAgICAgICAgICAqZGV2X3NubXA2X2RpcjsKKyAgICBzdHJ1Y3QgZGlyZW50ICAqZGV2X3NubXA2X2VudHJ5OworICAgIGNoYXIgICAgICAgICAgIGRldl9maWxlbmFtZVtERVZfRklMRU5BTUVfTEVOXTsKKyAgICBGSUxFICAgICAgICAgICAqZGV2aW47CisgICAgY2hhciAgICAgICAgICAgbGluZVsxMDI0XTsKKyAgICBjaGFyICAgICAgICAgICAqc3RhcnQgPSBsaW5lOworICAgIGludCAgICAgICAgICAgIHJjOworICAgIGNoYXIgICAgICAgICAgICpzY2FuX3N0cjsKKyAgICB1aW50bWF4X3QgICAgICAgc2Nhbl92YWw7CisgICAgbmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSAqZW50cnkgPSBOVUxMOworICAgICAgICAgICAgCisgICAgLyoKKyAgICAgKiB0cnkgdG8gb3BlbiAvcHJvYy9uZXQvZGV2X3NubXA2IGRpcmVjdG9yeS4gSWYgd2UgY2FuJ3QsIHRoYXQnIG9rIC0KKyAgICAgKiBtYXliZSBpdCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBjdXJyZW50IHJ1bm5pbmcga2VybmVsLgorICAgICAqLworICAgIGlmICgoZGV2X3NubXA2X2RpciA9IG9wZW5kaXIoREVWX1NOTVA2X0RJUk5BTUUpKSA9PSBOVUxMKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aWZzdGF0cyIsCisgICAgICAgICJGYWlsZWQgdG8gbG9hZCBJUHY2IElmU3RhdHMgVGFibGUgKGxpbnV4KVxuIikpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgCisgICAgLyoKKyAgICAgKiBSZWFkIGVhY2ggcGVyIGludGVyZmFjZSBzdGF0aXN0aWNzIHByb2MgZmlsZQorICAgICAqLworICAgIHJjID0gMDsKKyAgICB3aGlsZSAoKGRldl9zbm1wNl9lbnRyeSA9IHJlYWRkaXIoZGV2X3NubXA2X2RpcikpICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKGRldl9zbm1wNl9lbnRyeS0+ZF9uYW1lWzBdID09ICcuJykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgIAorICAgICAgICBpZiAoc25wcmludGYoZGV2X2ZpbGVuYW1lLCBERVZfRklMRU5BTUVfTEVOLCAiJXMvJXMiLCBERVZfU05NUDZfRElSTkFNRSwKKyAgICAgICAgICAgICAgICBkZXZfc25tcDZfZW50cnktPmRfbmFtZSkgPiBERVZfRklMRU5BTUVfTEVOKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiSW50ZXJmYWNlIG5hbWUgJXMgaXMgdG9vIGxvbmdcbiIsCisgICAgICAgICAgICAgICAgICAgIGRldl9zbm1wNl9lbnRyeS0+ZF9uYW1lKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChOVUxMID09IChkZXZpbiA9IGZvcGVuKGRldl9maWxlbmFtZSwgInIiKSkpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJGYWlsZWQgdG8gb3BlbiAlc1xuIiwgZGV2X2ZpbGVuYW1lKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgCisgICAgICAgIC8qCisgICAgICAgICAqIElmIGEgc3RhdCBmaWxlIG5hbWUgaXMgbWFkZSBvZiBkaWdpdHMsIHRoZSBuYW1lIGlzIGludGVyZmFjZSBpbmRleC4KKyAgICAgICAgICogSWYgaXQgaXMgYW4gaW50ZXJmYWNlIG5hbWUsIHRoZSBmaWxlIGluY2x1ZGVzIGEgbGluZSBsYWJlbGVkIGlmSW5kZXguCisgICAgICAgICAqLworICAgICAgICBpZiAoaXNkaWdpdChkZXZfc25tcDZfZW50cnktPmRfbmFtZVswXSkpIHsKKyAgICAgICAgICAgIHNjYW5fdmFsID0gc3RydG91bGwoZGV2X3NubXA2X2VudHJ5LT5kX25hbWUsIE5VTEwsIDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKE5VTEwgPT0gKHN0YXJ0ID0gZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBkZXZpbikpKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIiVzIGRvZXNuJ3QgaW5jbHVkZSBhbnkgbGluZXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBkZXZfZmlsZW5hbWUpOworICAgICAgICAgICAgICAgIGZjbG9zZShkZXZpbik7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICBpZiAoMCAhPSBzdHJuY21wKHN0YXJ0LCBJRklOREVYX0xJTkUsIDcpKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIiVzIGRvZXNuJ3QgaW5jbHVkZSBpZkluZGV4IGxpbmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgZGV2X2ZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgICBmY2xvc2UoZGV2aW4pOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzY2FuX3N0ciA9IHN0cnJjaHIobGluZSwgJyAnKTsKKyAgICAgICAgICAgIGlmIChOVUxMID09IHNjYW5fc3RyKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIiVzIGlzIHdyb25nIGZvcm1hdCIsIGRldl9maWxlbmFtZSk7CisgICAgICAgICAgICAgICAgZmNsb3NlKGRldmluKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNjYW5fdmFsID0gc3RydG91bGwoc2Nhbl9zdHIsIE5VTEwsIDApOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2NyZWF0ZSgyLCBzY2FuX3ZhbCwKKyAgICAgICAgICAgICAgICAiaXBJZlN0YXRzVGFibGUuaXB2NiIpOworICAgICAgICBpZihOVUxMID09IGVudHJ5KSB7CisgICAgICAgICAgICBmY2xvc2UoZGV2aW4pOworICAgICAgICAgICAgY2xvc2VkaXIoZGV2X3NubXA2X2Rpcik7CisgICAgICAgICAgICByZXR1cm4gLTM7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8qIF9zeXN0ZW1zdGF0c192Nl9sb2FkX2ZpbGUoZW50cnksIGRldmluKTsgKi8KKyAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KTsKKyAgICAgICAgZmNsb3NlKGRldmluKTsKKyAgICB9CisgICAgY2xvc2VkaXIoZGV2X3NubXA2X2Rpcik7CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYgLyogTkVUU05NUF9FTkFCTEVfSVBWNiAqLworI2VuZGlmCisKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisvKgorICogQmFzZWQgb24gbG9hZF9mbGFncywgbG9hZCBpcFN5c3RlbVN0YXRzVGFibGUgb3IgaXBJZlN0YXRzVGFibGUgZm9yIGlwdjYgZW50cmllcy4gCisgKi8KK3N0YXRpYyBpbnQKK19zeXN0ZW1zdGF0c192NihuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLCB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHM6Y29udGFpbmVyOmFyY2giLCAibG9hZCB2NiAoZmxhZ3MgJXUpXG4iLAorICAgICAgICAgICAgICAgIGxvYWRfZmxhZ3MpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KGNvbnRhaW5lciAhPSBOVUxMKTsgLyogbG9hZCBmdW5jdGlvbiBzaG91bGRhIGNoZWNrZWQgdGhpcyAqLworCisgICAgaWYgKGxvYWRfZmxhZ3MgJiBORVRTTk1QX0FDQ0VTU19TWVNURU1TVEFUU19MT0FEX0lGVEFCTEUpIHsKKyAgICAgICAgLyogbG9hZCBpcElmU3RhdHNUYWJsZSAqLworICAgICAgICByZXR1cm4gX3N5c3RlbXN0YXRzX3Y2X2xvYWRfaWZzdGF0cyhjb250YWluZXIsIGxvYWRfZmxhZ3MpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIGxvYWQgaXBTeXN0ZW1TdGF0c1RhYmxlICovCisgICAgICAgIHJldHVybiBfc3lzdGVtc3RhdHNfdjZfbG9hZF9zeXN0ZW1zdGF0cyhjb250YWluZXIsIGxvYWRfZmxhZ3MpOworICAgIH0KK30KKyNlbmRpZiAvKiBORVRTTk1QX0VOQUJMRV9JUFY2ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmgKaW5kZXggODVhODczOC4uNzNhZmFlNiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuaApAQCAtMTU1LDkgKzE1NSw2IEBACiAgICAgICAgIGludCAgICAgICAgICAgICBpbmV0TmV0VG9NZWRpYVJvd1N0YXR1cywKICAgICAgICAgICAgIGluZXROZXRUb01lZGlhUm93U3RhdHVzX3VuZG87CiAKLSAgICAgICAgLyogZmxhZywgaWYgdGhlIHJvdyB3YXMgcHJlc2VudCBpbiBsYXN0IHJlYWQgZnJvbSBvcGVyYXRpbmcgc3lzdGVtICovCi0gICAgICAgIGludCB2YWxpZDsKLQogICAgICAgICAvKgogICAgICAgICAgKiBzdG9yYWdlIGZvciBmdXR1cmUgZXhwYW5zaW9uCiAgICAgICAgICAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9kYXRhX2FjY2Vzcy5jCmluZGV4IDhmZGRiNzAuLjFlYzhjYzYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfZGF0YV9hY2Nlc3MuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTgsNiArOCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC0xOSw2ICsyMCw5IEBACiAKICNpbmNsdWRlICJpbmV0TmV0VG9NZWRpYVRhYmxlX2RhdGFfYWNjZXNzLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNvbnRhaW5lcl9saWZvKQorc3RhdGljIG5ldHNubXBfYXJwX2FjY2VzcyAqIGFycF9hY2Nlc3MgPSBOVUxMOworCiAvKiogQGluZ3JvdXAgaW50ZXJmYWNlIAogICogQGFkZHRvZ3JvdXAgZGF0YV9hY2Nlc3MgZGF0YV9hY2Nlc3M6IFJvdXRpbmVzIHRvIGFjY2VzcyBkYXRhCiAgKgpAQCAtNzEsNiArNzUsMTIzIEBACiAgKi8KIAogLyoqCisgKiBjaGVjayBlbnRyeSBmb3IgdXBkYXRlCisgKi8KK3N0YXRpYyB2b2lkCitfYWRkX29yX3VwZGF0ZV9hcnBfZW50cnkobmV0c25tcF9hcnBfZW50cnkgKmFycF9lbnRyeSwKKyAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcikKK3sKKyAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHgsICpvbGQ7CisgICAgaW50ICAgICAgICAgICAgIGluZXRBZGRyZXNzVHlwZTsKKworICAgIERFQlVHVFJBQ0U7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGFycF9lbnRyeSk7CisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBjb250YWluZXIpOworCisgICAgLyoKKyAgICAgKiBjb252ZXJ0IHRoZSBhZGRyIGxlbiB0byBhbiBpbmV0QWRkcmVzc1R5cGUKKyAgICAgKi8KKyAgICBzd2l0Y2ggKGFycF9lbnRyeS0+YXJwX2lwYWRkcmVzc19sZW4pIHsKKyAgICBjYXNlIDQ6CisgICAgICAgIGluZXRBZGRyZXNzVHlwZSA9IElORVRBRERSRVNTVFlQRV9JUFY0OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgMTY6CisgICAgICAgIGluZXRBZGRyZXNzVHlwZSA9IElORVRBRERSRVNTVFlQRV9JUFY2OworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJpbmV0TmV0VG9NZWRpYVRhYmxlOl9hZGRfb3JfdXBkYXRlX2FycGVudHJ5OiB1bnN1cHBvcnRlZCBhZGRyZXNzIHR5cGUsIGxlbiA9ICVkXG4iLCBhcnBfZW50cnktPmFycF9pcGFkZHJlc3NfbGVuKTsKKyAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX2VudHJ5X2ZyZWUoYXJwX2VudHJ5KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogYWxsb2NhdGUgYW4gcm93IGNvbnRleHQgYW5kIHNldCB0aGUgaW5kZXgoZXMpLCB0aGVuIHRyeSB0byBmaW5kIGl0IGluCisgICAgICogdGhlIGNhY2hlLgorICAgICAqLworICAgIHJvd3JlcV9jdHggPSBpbmV0TmV0VG9NZWRpYVRhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHgoYXJwX2VudHJ5LCBOVUxMKTsKKyAgICBpZiAoKE5VTEwgIT0gcm93cmVxX2N0eCkgJiYKKyAgICAgICAgKE1GRF9TVUNDRVNTID09IGluZXROZXRUb01lZGlhVGFibGVfaW5kZXhlc19zZXQKKyAgICAgICAgIChyb3dyZXFfY3R4LCByb3dyZXFfY3R4LT5kYXRhLT5pZl9pbmRleCwgaW5ldEFkZHJlc3NUeXBlLAorICAgICAgICAgIChjaGFyICopIHJvd3JlcV9jdHgtPmRhdGEtPmFycF9pcGFkZHJlc3MsCisgICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+YXJwX2lwYWRkcmVzc19sZW4pKSkgeworCisgICAgICAgIC8qIHRyeSB0byBmaW5kIG9sZCBlbnRyeSAqLworICAgICAgICBvbGQgPSAoaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dyZXFfY3R4KilDT05UQUlORVJfRklORChjb250YWluZXIsIHJvd3JlcV9jdHgpOworICAgICAgICBpZiAoYXJwX2VudHJ5LT5mbGFncyAmIE5FVFNOTVBfQUNDRVNTX0FSUF9FTlRSWV9GTEFHX0RFTEVURSkgeworICAgICAgICAgICAgLyogZGVsZXRlIGV4aXN0aW5nIGVudHJ5ICovCisgICAgICAgICAgICBpZiAob2xkICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBDT05UQUlORVJfUkVNT1ZFKGNvbnRhaW5lciwgb2xkKTsKKyAgICAgICAgICAgICAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChvbGQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7CisgICAgICAgIH0gZWxzZSBpZiAob2xkICE9IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIHRoZSBlbnRyeSBpcyBhbHJlYWR5IHRoZXJlLCB1cGRhdGUgaXQgKi8KKyAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV91cGRhdGUob2xkLT5kYXRhLCBhcnBfZW50cnkpOworICAgICAgICAgICAgLyogZGVsZXRlIHRoZSBhdXhpbGlhcnkgY29udGV4dCB3ZSB1c2VkIHRvIGZpbmQgdGhlIGVudHJ5CisgICAgICAgICAgICAgKiAodGhpcyBkZWxldGVzIGFsc28gYXJwX2VudHJ5KSAqLworICAgICAgICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBjcmVhdGUgbmV3IGVudHJ5IGFuZCBhZGQgaXQgdG8gdGhlIGNhY2hlKi8KKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPmluZXROZXRUb01lZGlhUm93U3RhdHVzID0gUk9XU1RBVFVTX0FDVElWRTsKKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPmFycF9sYXN0X3VwZGF0ZWQgPSBuZXRzbm1wX2dldF9hZ2VudF91cHRpbWUoKTsKKyAgICAgICAgICAgIENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCByb3dyZXFfY3R4KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChyb3dyZXFfY3R4KSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3Igc2V0dGluZyBpbmRleCB3aGlsZSBsb2FkaW5nICIKKyAgICAgICAgICAgICAgICAgICAgICJpbmV0TmV0VG9NZWRpYVRhYmxlIGNhY2hlLlxuIik7CisgICAgICAgICAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBuZXRzbm1wX2FjY2Vzc19hcnBfZW50cnlfZnJlZShhcnBfZW50cnkpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgIF9hcnBfaG9va191cGRhdGUobmV0c25tcF9hcnBfYWNjZXNzICphY2Nlc3MsIG5ldHNubXBfYXJwX2VudHJ5ICplbnRyeSkKK3sKKyAgICBfYWRkX29yX3VwZGF0ZV9hcnBfZW50cnkoZW50cnksIGFjY2Vzcy0+bWFnaWMpOworfQorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdW5zaWduZWQgZ2VuZXJhdGlvbjsKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqdG9fZGVsZXRlOworfSBfY29sbGVjdF9jdHg7CisKKy8qKgorICogUHV0IGFsbCBlbnRyaWVzIHdpdGggb3V0ZGF0ZWQgZ2VuZXJhdGlvbiB0byBkZWxldGlvbiBsaXN0LgorICovCitzdGF0aWMgdm9pZAorX2NvbGxlY3RfaW52YWxpZF9hcnBfY3R4KGluZXROZXRUb01lZGlhVGFibGVfcm93cmVxX2N0eCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgIF9jb2xsZWN0X2N0eCAqY2N0eCkKK3sKKyAgICBpZiAoY3R4LT5kYXRhLT5nZW5lcmF0aW9uICE9IGNjdHgtPmdlbmVyYXRpb24pCisgICAgICAgIENPTlRBSU5FUl9JTlNFUlQoY2N0eC0+dG9fZGVsZXRlLCBjdHgpOworfQorCitzdGF0aWMgdm9pZCBfYXJwX2hvb2tfZ2MobmV0c25tcF9hcnBfYWNjZXNzICphY2Nlc3MpCit7CisgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciA9IGFjY2Vzcy0+bWFnaWM7CisgICAgX2NvbGxlY3RfY3R4IGNjdHg7CisKKyAgICBjY3R4LnRvX2RlbGV0ZSA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImxpZm8iKTsKKyAgICBjY3R4LmdlbmVyYXRpb24gPSBhY2Nlc3MtPmdlbmVyYXRpb247CisKKyAgICBDT05UQUlORVJfRk9SX0VBQ0goY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMgKikgX2NvbGxlY3RfaW52YWxpZF9hcnBfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAmY2N0eCk7CisKKyAgICB3aGlsZSAoQ09OVEFJTkVSX1NJWkUoY2N0eC50b19kZWxldGUpKSB7CisgICAgICAgIGluZXROZXRUb01lZGlhVGFibGVfcm93cmVxX2N0eCAqY3R4ID0gKGluZXROZXRUb01lZGlhVGFibGVfcm93cmVxX2N0eCopQ09OVEFJTkVSX0ZJUlNUKGNjdHgudG9fZGVsZXRlKTsKKyAgICAgICAgQ09OVEFJTkVSX1JFTU9WRShjb250YWluZXIsIGN0eCk7CisgICAgICAgIGluZXROZXRUb01lZGlhVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KGN0eCk7CisgICAgICAgIENPTlRBSU5FUl9SRU1PVkUoY2N0eC50b19kZWxldGUsIE5VTEwpOworICAgIH0KKyAgICBDT05UQUlORVJfRlJFRShjY3R4LnRvX2RlbGV0ZSk7Cit9CisKKy8qKgogICogY29udGFpbmVyIGluaXRpYWxpemF0aW9uCiAgKgogICogQHBhcmFtIGNvbnRhaW5lcl9wdHJfcHRyIEEgcG9pbnRlciB0byBhIGNvbnRhaW5lciBwb2ludGVyLiBJZiB5b3UKQEAgLTEyMCwxMDQgKzI0MSwxOSBAQAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLyoKLSAgICAgKiBUT0RPOjM0NTpBOiBTZXQgdXAgaW5ldE5ldFRvTWVkaWFUYWJsZSBjYWNoZSBwcm9wZXJ0aWVzLgotICAgICAqCi0gICAgICogQWxzbyBmb3IgYWR2YW5jZWQgdXNlcnMsIHlvdSBjYW4gc2V0IHBhcmFtZXRlcnMgZm9yIHRoZQotICAgICAqIGNhY2hlLiBEbyBub3QgY2hhbmdlIHRoZSBtYWdpYyBwb2ludGVyLCBhcyBpdCBpcyB1c2VkCi0gICAgICogYnkgdGhlIE1GRCBoZWxwZXIuIFRvIGNvbXBsZXRlbHkgZGlzYWJsZSBjYWNoaW5nLCBzZXQKLSAgICAgKiBjYWNoZS0+ZW5hYmxlZCB0byAwLgotICAgICAqLwotICAgIGNhY2hlLT50aW1lb3V0ID0gSU5FVE5FVFRPTUVESUFUQUJMRV9DQUNIRV9USU1FT1VUOyAvKiBzZWNvbmRzICovCi0KLSAgICAvKiBXZSB3YW50IHRvIG1hbnVhbGx5IGRlbGV0ZSBlbnRyaWVzIGluIHRoZSBjYWNoZSB0byBrZWVwIExhc3RVcGRhdGVkCi0gICAgICogdGltZXN0YW1wLiAqLwotICAgIGNhY2hlLT5mbGFncyB8PSBORVRTTk1QX0NBQ0hFX0RPTlRfRlJFRV9CRUZPUkVfTE9BRAotICAgICAgICAgICAgICAgICAgICB8IE5FVFNOTVBfQ0FDSEVfQVVUT19SRUxPQUQ7Ci19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluZXROZXRUb01lZGlhVGFibGVfY29udGFpbmVyX2luaXQgKi8KLQotLyoqCi0gKiBQdXQgYWxsIGVudHJpZXMgd2l0aCB2YWxpZCAhPTEgdG8gdGhlIGxpc3QgdG8gZGVsZXRlLgotICovCi1zdGF0aWMgdm9pZAotX2NvbGxlY3RfaW52YWxpZF9hcnBfY3R4KGluZXROZXRUb01lZGlhVGFibGVfcm93cmVxX2N0eCAqY3R4LAotICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqdG9fZGVsZXRlKQotewotICAgIGlmIChjdHgtPnZhbGlkKQotICAgICAgICAgICAgY3R4LT52YWxpZCA9IDA7Ci0gICAgZWxzZQotICAgICAgICBDT05UQUlORVJfSU5TRVJUKHRvX2RlbGV0ZSwgY3R4KTsKLX0KLQotLyoqCi0gKiBjaGVjayBlbnRyeSBmb3IgdXBkYXRlCi0gKi8KLXN0YXRpYyB2b2lkCi1fYWRkX29yX3VwZGF0ZV9hcnBfZW50cnkobmV0c25tcF9hcnBfZW50cnkgKmFycF9lbnRyeSwKLSAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcikKLXsKLSAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHgsICpvbGQ7Ci0gICAgaW50ICAgICAgICAgICAgIGluZXRBZGRyZXNzVHlwZTsKLQotICAgIERFQlVHVFJBQ0U7Ci0KLSAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGFycF9lbnRyeSk7Ci0gICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBjb250YWluZXIpOwotCi0gICAgLyoKLSAgICAgKiBjb252ZXJ0IHRoZSBhZGRyIGxlbiB0byBhbiBpbmV0QWRkcmVzc1R5cGUKLSAgICAgKi8KLSAgICBzd2l0Y2ggKGFycF9lbnRyeS0+YXJwX2lwYWRkcmVzc19sZW4pIHsKLSAgICBjYXNlIDQ6Ci0gICAgICAgIGluZXRBZGRyZXNzVHlwZSA9IElORVRBRERSRVNTVFlQRV9JUFY0OwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgMTY6Ci0gICAgICAgIGluZXRBZGRyZXNzVHlwZSA9IElORVRBRERSRVNTVFlQRV9JUFY2OwotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV9mcmVlKGFycF9lbnRyeSk7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ1bnN1cHBvcnRlZCBhZGRyZXNzIHR5cGVcbiIpOworICAgIGFycF9hY2Nlc3MgPSBuZXRzbm1wX2FjY2Vzc19hcnBfY3JlYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9BQ0NFU1NfQVJQX0NSRUFURV9OT0ZMQUdTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgX2FycF9ob29rX3VwZGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hcnBfaG9va19nYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZjYWNoZS0+dGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZjYWNoZS0+ZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2FjaGUtPmV4cGlyZWQpOworICAgIGlmIChhcnBfYWNjZXNzID09IE5VTEwpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBjcmVhdGUgYXJwIGFjY2VzcyBpbiBpbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnRhaW5lcl9pbml0XG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIC8qCi0gICAgICogYWxsb2NhdGUgYW4gcm93IGNvbnRleHQgYW5kIHNldCB0aGUgaW5kZXgoZXMpLCB0aGVuIHRyeSB0byBmaW5kIGl0IGluCi0gICAgICogdGhlIGNhY2hlLgotICAgICAqLwotICAgIHJvd3JlcV9jdHggPSBpbmV0TmV0VG9NZWRpYVRhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHgoYXJwX2VudHJ5LCBOVUxMKTsKLSAgICBpZiAoKE5VTEwgIT0gcm93cmVxX2N0eCkgJiYKLSAgICAgICAgKE1GRF9TVUNDRVNTID09IGluZXROZXRUb01lZGlhVGFibGVfaW5kZXhlc19zZXQKLSAgICAgICAgIChyb3dyZXFfY3R4LCByb3dyZXFfY3R4LT5kYXRhLT5pZl9pbmRleCwgaW5ldEFkZHJlc3NUeXBlLAotICAgICAgICAgIChjaGFyICopIHJvd3JlcV9jdHgtPmRhdGEtPmFycF9pcGFkZHJlc3MsCi0gICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+YXJwX2lwYWRkcmVzc19sZW4pKSkgewotCi0gICAgICAgIC8qIHRyeSB0byBmaW5kIG9sZCBlbnRyeSAqLwotICAgICAgICBvbGQgPSAoaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dyZXFfY3R4KilDT05UQUlORVJfRklORChjb250YWluZXIsIHJvd3JlcV9jdHgpOwotICAgICAgICBpZiAob2xkICE9IE5VTEwpIHsKLSAgICAgICAgICAgIC8qIHRoZSBlbnRyeSBpcyBhbHJlYWR5IHRoZXJlLCB1cGRhdGUgaXQgKi8KLSAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV91cGRhdGUob2xkLT5kYXRhLCBhcnBfZW50cnkpOwotICAgICAgICAgICAgb2xkLT52YWxpZCA9IDE7IC8qIGRvIG5vdCBkZWxldGUgaXQgaW4gZm9sbG93aW5nIHN3ZWVwICovCi0gICAgICAgICAgICAvKiBkZWxldGUgdGhlIGF1eGlsaWFyeSBjb250ZXh0IHdlIHVzZWQgdG8gZmluZCB0aGUgZW50cnkKLSAgICAgICAgICAgICAqICh0aGlzIGRlbGV0ZXMgYWxzbyBhcnBfZW50cnkpICovCi0gICAgICAgICAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIGNyZWF0ZSBuZXcgZW50cnkgYW5kIGFkZCBpdCB0byB0aGUgY2FjaGUqLwotICAgICAgICAgICAgcm93cmVxX2N0eC0+aW5ldE5ldFRvTWVkaWFSb3dTdGF0dXMgPSBST1dTVEFUVVNfQUNUSVZFOwotICAgICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+YXJwX2xhc3RfdXBkYXRlZCA9IG5ldHNubXBfZ2V0X2FnZW50X3VwdGltZSgpOwotICAgICAgICAgICAgcm93cmVxX2N0eC0+dmFsaWQgPSAxOyAvKiBkbyBub3QgZGVsZXRlIGl0IGluIGZvbGxvd2luZyBzd2VlcCAqLwotICAgICAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIHJvd3JlcV9jdHgpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHJvd3JlcV9jdHgpIHsKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBzZXR0aW5nIGluZGV4IHdoaWxlIGxvYWRpbmcgIgotICAgICAgICAgICAgICAgICAgICAgImluZXROZXRUb01lZGlhVGFibGUgY2FjaGUuXG4iKTsKLSAgICAgICAgICAgIGluZXROZXRUb01lZGlhVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV9mcmVlKGFycF9lbnRyeSk7Ci0gICAgfQotfQorfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnRhaW5lcl9pbml0ICovCiAKIC8qKgogICogY29udGFpbmVyIHNodXRkb3duCkBAIC0yNDAsMTIgKzI3NiwxNiBAQAogewogICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmluZXROZXRUb01lZGlhVGFibGU6aW5ldE5ldFRvTWVkaWFUYWJsZV9jb250YWluZXJfc2h1dGRvd24iLCAiY2FsbGVkXG4iKSk7CiAKKyAgICBpZiAoTlVMTCAhPSBhcnBfYWNjZXNzKSB7CisgICAgICAgIG5ldHNubXBfYWNjZXNzX2FycF9kZWxldGUoYXJwX2FjY2Vzcyk7CisgICAgICAgIGFycF9hY2Nlc3MgPSBOVUxMOworICAgIH0KKwogICAgIGlmIChOVUxMID09IGNvbnRhaW5lcl9wdHIpIHsKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKICAgICAgICAgICAgICAgICAgImJhZCBwYXJhbXMgdG8gaW5ldE5ldFRvTWVkaWFUYWJsZV9jb250YWluZXJfc2h1dGRvd25cbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluZXROZXRUb01lZGlhVGFibGVfY29udGFpbmVyX3NodXRkb3duICovCiAKIC8qKgpAQCAtMjg0LDU0ICszMjQsMTEgQEAKIGludAogaW5ldE5ldFRvTWVkaWFUYWJsZV9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyKQogewotICAgIG5ldHNubXBfY29udGFpbmVyICphcnBfY29udGFpbmVyOwotICAgIG5ldHNubXBfY29udGFpbmVyICp0b19kZWxldGUgPSBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJsaWZvIik7Ci0KICAgICBERUJVR01TR1RMKCgidmVyYm9zZTppbmV0TmV0VG9NZWRpYVRhYmxlOmluZXROZXRUb01lZGlhVGFibGVfY2FjaGVfbG9hZCIsICJjYWxsZWRcbiIpKTsKIAotICAgIC8qCi0gICAgICogVE9ETzozNTE6TTogfC0+IExvYWQvdXBkYXRlIGRhdGEgaW4gdGhlIGluZXROZXRUb01lZGlhVGFibGUgY29udGFpbmVyLgotICAgICAqIGxvb3Agb3ZlciB5b3VyIGluZXROZXRUb01lZGlhVGFibGUgZGF0YSwgYWxsb2NhdGUgYSByb3dyZXEgY29udGV4dCwKLSAgICAgKiBzZXQgdGhlIGluZGV4KGVzKSBbYW5kIGRhdGEsIG9wdGlvbmFsbHldIGFuZCBpbnNlcnQgaW50bwotICAgICAqIHRoZSBjb250YWluZXIuCi0gICAgICovCi0gICAgYXJwX2NvbnRhaW5lciA9Ci0gICAgICAgIG5ldHNubXBfYWNjZXNzX2FycF9jb250YWluZXJfbG9hZChOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9BQ0NFU1NfQVJQX0xPQURfTk9GTEFHUyk7Ci0gICAgaWYgKE5VTEwgPT0gYXJwX2NvbnRhaW5lcikKLSAgICAgICAgcmV0dXJuIE1GRF9SRVNPVVJDRV9VTkFWQUlMQUJMRTsgICAgICAgIC8qIG1zZyBhbHJlYWR5IGxvZ2dlZCAqLwotCi0gICAgLyoKLSAgICAgKiB3ZSBqdXN0IGdvdCBhIGZyZXNoIGNvcHkgb2YgZGF0YS4gc25hcmYgZGF0YQotICAgICAqLwotICAgIENPTlRBSU5FUl9GT1JfRUFDSChhcnBfY29udGFpbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMgKikgX2FkZF9vcl91cGRhdGVfYXJwX2VudHJ5LAotICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOwotCi0gICAgLyoKLSAgICAgKiBEZWxldGUgYWxsIGNhY2hlZCBlbnRyaWVzLCB3aGljaCB3ZXJlIG5vdCBwcm92aWRlZCBieQotICAgICAqIG5ldHNubXBfYWNjZXNzX2FycF9jb250YWluZXJfbG9hZAotICAgICAqLwotICAgIENPTlRBSU5FUl9GT1JfRUFDSChjb250YWluZXIsCi0gICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqKSBfY29sbGVjdF9pbnZhbGlkX2FycF9jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgIHRvX2RlbGV0ZSk7Ci0gICAgd2hpbGUgKENPTlRBSU5FUl9TSVpFKHRvX2RlbGV0ZSkpIHsKLSAgICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dyZXFfY3R4ICpjdHggPSAoaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dyZXFfY3R4KilDT05UQUlORVJfRklSU1QodG9fZGVsZXRlKTsKLSAgICAgICAgQ09OVEFJTkVSX1JFTU9WRShjb250YWluZXIsIGN0eCk7Ci0gICAgICAgIGluZXROZXRUb01lZGlhVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KGN0eCk7Ci0gICAgICAgIENPTlRBSU5FUl9SRU1PVkUodG9fZGVsZXRlLCBOVUxMKTsKLSAgICB9Ci0gICAgQ09OVEFJTkVSX0ZSRUUodG9fZGVsZXRlKTsKLQotICAgIC8qCi0gICAgICogZnJlZSB0aGUgY29udGFpbmVyLiB3ZSd2ZSBlaXRoZXIgY2xhaW1lZCBlYWNoIGVudHJ5LCBvciByZWxlYXNlZCBpdCwKLSAgICAgKiBzbyB0aGUgYWNjZXNzIGZ1bmN0aW9uIGRvZXNuJ3QgbmVlZCB0byBjbGVhciB0aGUgY29udGFpbmVyLgotICAgICAqLwotICAgIG5ldHNubXBfYWNjZXNzX2FycF9jb250YWluZXJfZnJlZShhcnBfY29udGFpbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19BUlBfRlJFRV9ET05UX0NMRUFSKTsKLQotICAgIERFQlVHTVNHVCgoInZlcmJvc2U6aW5ldE5ldFRvTWVkaWFUYWJsZTppbmV0TmV0VG9NZWRpYVRhYmxlX2NhY2hlX2xvYWQiLAotICAgICAgICAgICAgICAgIiUiIE5FVFNOTVBfUFJJeiAidSByZWNvcmRzXG4iLCBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisgICAgYXJwX2FjY2Vzcy0+bWFnaWMgPSBjb250YWluZXI7CisgICAgaWYgKG5ldHNubXBfYWNjZXNzX2FycF9sb2FkKGFycF9hY2Nlc3MpIDwgMCkKKyAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5ldE5ldFRvTWVkaWFUYWJsZV9jb250YWluZXJfbG9hZCAqLwpAQCAtMzU0LDYgKzM1MSwxMSBAQAogewogICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmluZXROZXRUb01lZGlhVGFibGU6aW5ldE5ldFRvTWVkaWFUYWJsZV9jb250YWluZXJfZnJlZSIsICJjYWxsZWRcbiIpKTsKIAorICAgIGlmIChOVUxMICE9IGFycF9hY2Nlc3MpIHsKKyAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX3VubG9hZChhcnBfYWNjZXNzKTsKKyAgICAgICAgYXJwX2FjY2Vzcy0+bWFnaWMgPSBOVUxMOworICAgIH0KKwogICAgIC8qCiAgICAgICogVE9ETzozODA6TTogRnJlZSBpbmV0TmV0VG9NZWRpYVRhYmxlIGNvbnRhaW5lciBkYXRhLgogICAgICAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmMKaW5kZXggNjJlMzY0Zi4uYzE4Njg5YSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2ludGVyZmFjZS5jCkBAIC0zMCw2ICszMCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC00Niw2ICs0NywxOSBAQAogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGluZXROZXRUb01lZGlhVGFibGVfZXh0ZXJuYWxfYWNjZXNzLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2NvbnRhaW5lcl9yb3dfaW5zZXJ0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKQorCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnRhaW5lcl9zaXplLCBpbmV0TmV0VG9NZWRpYVRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpbmV0TmV0VG9NZWRpYVRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQsIGluZXROZXRUb01lZGlhVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGluZXROZXRUb01lZGlhVGFibGVfcmVnaXN0cmF0aW9uX2dldCwgaW5ldE5ldFRvTWVkaWFUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW5ldE5ldFRvTWVkaWFUYWJsZV9jb250YWluZXJfZ2V0LCBpbmV0TmV0VG9NZWRpYVRhYmxlX2V4dGVybmFsX2FjY2VzcykKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqCkBAIC04MiwxOSArOTYsMjMgQEAKICAgICAgICAgICAgICAgICBfaW5ldE5ldFRvTWVkaWFUYWJsZV9jb250YWluZXJfc2h1dGRvd24oaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcmZhY2VfY3R4ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZfY3R4KTsKIAotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVE5FVFRPTUVESUFUQUJMRV9DT05UQUlORVJfR0VUCiBuZXRzbm1wX2NvbnRhaW5lciAqCiBpbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaW5ldE5ldFRvTWVkaWFUYWJsZV9pZl9jdHguY29udGFpbmVyOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVE5FVFRPTUVESUFUQUJMRV9DT05UQUlORVJfR0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTkVUTkVUVE9NRURJQVRBQkxFX1JFR0lTVFJBVElPTl9HRVQKIGluZXROZXRUb01lZGlhVGFibGVfcmVnaXN0cmF0aW9uICoKIGluZXROZXRUb01lZGlhVGFibGVfcmVnaXN0cmF0aW9uX2dldCh2b2lkKQogewogICAgIHJldHVybiBpbmV0TmV0VG9NZWRpYVRhYmxlX2lmX2N0eC51c2VyX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lORVRORVRUT01FRElBVEFCTEVfUkVHSVNUUkFUSU9OX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVE5FVFRPTUVESUFUQUJMRV9SRUdJU1RSQVRJT05fU0VUCiBpbmV0TmV0VG9NZWRpYVRhYmxlX3JlZ2lzdHJhdGlvbiAqCiBpbmV0TmV0VG9NZWRpYVRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQoaW5ldE5ldFRvTWVkaWFUYWJsZV9yZWdpc3RyYXRpb24gKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3JlZykKQEAgLTEwNCwxMiArMTIyLDE1IEBACiAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9pZl9jdHgudXNlcl9jdHggPSBuZXdyZWc7CiAgICAgcmV0dXJuIG9sZDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lORVRORVRUT01FRElBVEFCTEVfUkVHSVNUUkFUSU9OX1NFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVE5FVFRPTUVESUFUQUJMRV9DT05UQUlORVJfU0laRQogaW50CiBpbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpCiB7CiAgICAgcmV0dXJuIENPTlRBSU5FUl9TSVpFKGluZXROZXRUb01lZGlhVGFibGVfaWZfY3R4LmNvbnRhaW5lcik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTkVUTkVUVE9NRURJQVRBQkxFX0NPTlRBSU5FUl9TSVpFICovCiAKIHVfaW50CiBpbmV0TmV0VG9NZWRpYVRhYmxlX2RpcnR5X2dldCh2b2lkKQpAQCAtMTMzLDcgKzE1NCw3IEBACiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pbmV0TmV0VG9NZWRpYVRhYmxlX3Bvc3RfcmVxdWVzdDsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2luZXROZXRUb01lZGlhVGFibGVfb2JqZWN0X2xvb2t1cDsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2luZXROZXRUb01lZGlhVGFibGVfZ2V0X3ZhbHVlczsKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaW5ldE5ldFRvTWVkaWFUYWJsZV9jaGVja19vYmplY3RzOwogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaW5ldE5ldFRvTWVkaWFUYWJsZV91bmRvX3NldHVwOwogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaW5ldE5ldFRvTWVkaWFUYWJsZV9zZXRfdmFsdWVzOwpAQCAtMTQ5LDcgKzE3MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciwgaW50IGNvbHVtbik7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKIE5FVFNOTVBfU1RBVElDX0lOTElORSBpbnQKICAgICAgICAgICAgICAgICBfaW5ldE5ldFRvTWVkaWFUYWJsZV9jaGVja19pbmRleGVzKGluZXROZXRUb01lZGlhVGFibGVfcm93cmVxX2N0eCAqCkBAIC0yMzIsNyArMjUzLDcgQEAKICAgICAgICAgX21mZF9pbmV0TmV0VG9NZWRpYVRhYmxlX3Bvc3RfcmVxdWVzdDsKIAogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKICAgICAvKgogICAgICAqIFJFUVVJUkVEIHdyYXBwZXJzIGZvciBzZXQgcmVxdWVzdCBoYW5kbGluZwogICAgICAqLwpAQCAtMjU3LDcgKzI3OCw3IEBACiAgICAgICovCiAgICAgYWNjZXNzX211bHRpcGxleGVyLT5jb25zaXN0ZW5jeV9jaGVja3MgPQogICAgICAgICBfbWZkX2luZXROZXRUb01lZGlhVGFibGVfY2hlY2tfZGVwZW5kZW5jaWVzOwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICAgKgpAQCAtMjkzLDcgKzMxNCw3IEBACiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+c2V0X3ZhbHVlcykKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9TRVRfVkFMVUVTOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmlycmV2ZXJzaWJsZV9jb21taXQpCkBAIC0zMTYsNyArMzM3LDcgQEAKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICBoYW5kbGVyID0gbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfZ2V0KG1mZF9tb2Rlcyk7CiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKQEAgLTEwOTcsNyArMTExOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9jdHgsIHJvd3JlcV9jdHgpOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaW5ldE5ldFRvTWVkaWFUYWJsZV9jaGVja19pbmRleGVzICovCiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogU0VUIHByb2Nlc3NpbmcKQEAgLTE4MjEsNyArMTg0Miw3IEBACiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9pbmV0TmV0VG9NZWRpYVRhYmxlX2lycmV2ZXJzaWJsZV9jb21taXQgKi8KLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtMTk4MCw2ICsyMDAxLDcgQEAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2luZXROZXRUb01lZGlhVGFibGVfY29udGFpbmVyX3NodXRkb3duICovCiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lORVRORVRUT01FRElBVEFCTEVfRVhURVJOQUxfQUNDRVNTCiBpbmV0TmV0VG9NZWRpYVRhYmxlX3Jvd3JlcV9jdHggKgogaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgoaW5ldE5ldFRvTWVkaWFUYWJsZV9taWJfaW5kZXggKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWliX2lkeCkKQEAgLTIwMDcsMyArMjAyOSw0IEBACiAKICAgICByZXR1cm4gcm93cmVxX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lORVRORVRUT01FRElBVEFCTEVfRVhURVJOQUxfQUNDRVNTICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfZGF0YV9hY2Nlc3MuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXRhX2FjY2Vzcy5jCmluZGV4IDRmYjY5MDUuLjQ0Mzc4MjkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXRhX2FjY2Vzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXRhX2FjY2Vzcy5jCkBAIC04LDYgKzgsNyBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtMjEsNiArMjIsMTAgQEAKIAogI2luY2x1ZGUgImlwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcEFkZHJlc3NUYWJsZV9jb250YWluZXJfZ2V0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXBhZGRyZXNzX2NvbW1vbl9jb3B5X3V0aWxpdGllcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGlwYWRkcmVzc19wcmVmaXhfY29weSkKKwogLyoqIEBpbmdyb3VwIGludGVyZmFjZSAKICAqIEBhZGR0b2dyb3VwIGRhdGFfYWNjZXNzIGRhdGFfYWNjZXNzOiBSb3V0aW5lcyB0byBhY2Nlc3MgZGF0YQogICoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9pbnRlcmZhY2UuYwppbmRleCA5NDI0MjVkLi5lMTRhMzM3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2ludGVyZmFjZS5jCkBAIC0zMCw2ICszMCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC00Niw2ICs0NywxNiBAQAogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX2FsbF9yZXF1ZXN0c19lcnJvcikKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwYWRkcmVzc3ByZWZpeHRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleCwgaXBhZGRyZXNzcHJlZml4dGFibGVfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwYWRkcmVzc3ByZWZpeHRhYmxlX2NvbnRhaW5lcl9nZXQsIGlwYWRkcmVzc3ByZWZpeHRhYmxlX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcEFkZHJlc3NQcmVmaXhUYWJsZV9yZWdpc3RyYXRpb25fZ2V0LCBpcGFkZHJlc3NwcmVmaXh0YWJsZV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBBZGRyZXNzUHJlZml4VGFibGVfcmVnaXN0cmF0aW9uX3NldCwgaXBhZGRyZXNzcHJlZml4dGFibGVfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwQWRkcmVzc1ByZWZpeFRhYmxlX2NvbnRhaW5lcl9zaXplLCBpcGFkZHJlc3NwcmVmaXh0YWJsZV9hbGwpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpAQCAtODEsMTggKzkyLDIzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGlmX2N0eCk7CiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1BSRUZJWFRBQkxFX0NPTlRBSU5FUl9HRVQKIG5ldHNubXBfY29udGFpbmVyICoKIGlwQWRkcmVzc1ByZWZpeFRhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaXBBZGRyZXNzUHJlZml4VGFibGVfaWZfY3R4LmNvbnRhaW5lcjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1BSRUZJWFRBQkxFX0NPTlRBSU5FUl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1BSRUZJWFRBQkxFX1JFR0lTVFJBVElPTl9HRVQKIGlwQWRkcmVzc1ByZWZpeFRhYmxlX3JlZ2lzdHJhdGlvbiAqCiBpcEFkZHJlc3NQcmVmaXhUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIGlwQWRkcmVzc1ByZWZpeFRhYmxlX2lmX2N0eC51c2VyX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1BSRUZJWFRBQkxFX1JFR0lTVFJBVElPTl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1BSRUZJWFRBQkxFX1JFR0lTVFJBVElPTl9TRVQKIGlwQWRkcmVzc1ByZWZpeFRhYmxlX3JlZ2lzdHJhdGlvbiAqCiBpcEFkZHJlc3NQcmVmaXhUYWJsZV9yZWdpc3RyYXRpb25fc2V0KGlwQWRkcmVzc1ByZWZpeFRhYmxlX3JlZ2lzdHJhdGlvbiAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3JlZykKQEAgLTEwMiwxMiArMTE4LDE1IEBACiAgICAgaXBBZGRyZXNzUHJlZml4VGFibGVfaWZfY3R4LnVzZXJfY3R4ID0gbmV3cmVnOwogICAgIHJldHVybiBvbGQ7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NQUkVGSVhUQUJMRV9SRUdJU1RSQVRJT05fU0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NQUkVGSVhUQUJMRV9DT05UQUlORVJfU0laRQogaW50CiBpcEFkZHJlc3NQcmVmaXhUYWJsZV9jb250YWluZXJfc2l6ZSh2b2lkKQogewogICAgIHJldHVybiBDT05UQUlORVJfU0laRShpcEFkZHJlc3NQcmVmaXhUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1BSRUZJWFRBQkxFX0NPTlRBSU5FUl9TSVpFICovCiAKIC8qCiAgKiBtZmQgbXVsdGlwbGV4ZXIgbW9kZXMKQEAgLTIyOSw3ICsyNDgsOCBAQAogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QT1NUX1JFUVVFU1Q7CiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQorICAgIC8qIFhYWCAtIGFyZSB0aGVzZSBhY3R1YWxseSBuZWNlc3Nhcnk/ICovCiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+c2V0X3ZhbHVlcykKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9TRVRfVkFMVUVTOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmlycmV2ZXJzaWJsZV9jb21taXQpCkBAIC0yNTIsNyArMjcyLDcgQEAKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICBoYW5kbGVyID0gbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfZ2V0KG1mZF9tb2Rlcyk7CiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKQEAgLTg0OSw3ICs4NjksNyBAQAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lwQWRkcmVzc1ByZWZpeFRhYmxlX2dldF92YWx1ZXMgKi8KIAogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIFNFVCBwcm9jZXNzaW5nCkBAIC0xMDE0LDYgKzEwMzQsNyBAQAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXBBZGRyZXNzUHJlZml4VGFibGVfY29udGFpbmVyX3NodXRkb3duICovCiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1BSRUZJWFRBQkxFX1JPV19GSU5EX0JZX01JQl9JTkRFWAogaXBBZGRyZXNzUHJlZml4VGFibGVfcm93cmVxX2N0eCAqCiBpcEFkZHJlc3NQcmVmaXhUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgoaXBBZGRyZXNzUHJlZml4VGFibGVfbWliX2luZGV4ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KQpAQCAtMTA0MSwzICsxMDYyLDQgQEAKIAogICAgIHJldHVybiByb3dyZXFfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTUFJFRklYVEFCTEVfUk9XX0ZJTkRfQllfTUlCX0lOREVYICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jCmluZGV4IGVjNDhmY2EuLmRlZmY0ZTkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jCkBAIC0xNCw2ICsxNCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC0yOCw2ICsyOSwxMCBAQAogCiAjaW5jbHVkZSAiaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3N0b3JhZ2VfdHJhbnNpdGlvbikKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGlwYWRkcmVzc19lbnRyeV9jb3B5KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXBhZGRyZXNzX3ByZWZpeF9jb3B5KQorCiBjb25zdCBvaWQgICAgICAgaXBBZGRyZXNzVGFibGVfb2lkW10gPSB7IElQQUREUkVTU1RBQkxFX09JRCB9OwogY29uc3QgaW50ICAgICAgIGlwQWRkcmVzc1RhYmxlX29pZF9zaXplID0gT0lEX0xFTkdUSChpcEFkZHJlc3NUYWJsZV9vaWQpOwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfZGF0YV9hY2Nlc3MuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jCmluZGV4IGNhMWFlNDcuLmQ4MGIzZTcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jCkBAIC04LDYgKzgsNyBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtMjIsNiArMjMsOCBAQAogI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNvbnRhaW5lcl9saWZvKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXBhZGRyZXNzX2VudHJ5X3VwZGF0ZSkKIAogLyoqIEBpbmdyb3VwIGludGVyZmFjZSAKICAqIEBhZGR0b2dyb3VwIGRhdGFfYWNjZXNzIGRhdGFfYWNjZXNzOiBSb3V0aW5lcyB0byBhY2Nlc3MgZGF0YQpAQCAtNjczLDkgKzY3Niw5IEBACiAgICAgICogVE9ETzo0MzA6TTogfC0+IFZhbGlkYXRlIHBvdGVudGlhbCBpcEFkZHJlc3NUYWJsZSBpbmRleC4KICAgICAgKgogICAgICAqCi0gICAgICogeHh4LXJrczogd2Ugb25seSBwbGFuIGlwdjQgc3VwcG9ydCBpbml0aWFsbHkKICAgICAgKi8KLSAgICBpZiAoKDQgIT0gcm93cmVxX2N0eC0+dGJsX2lkeC5pcEFkZHJlc3NBZGRyX2xlbikpIHsKKyAgICBpZiAoKDQgIT0gcm93cmVxX2N0eC0+dGJsX2lkeC5pcEFkZHJlc3NBZGRyX2xlbikKKyAgICAgICAgICAgICYmICgxNiAhPSByb3dyZXFfY3R4LT50YmxfaWR4LmlwQWRkcmVzc0FkZHJfbGVuKSkgewogICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgImludmFsaWQgaW5kZXggZm9yIGEgbmV3IHJvdyBpbiB0aGUgIgogICAgICAgICAgICAgICAgICAiaXBBZGRyZXNzVGFibGUgdGFibGUuXG4iKTsKICAgICAgICAgLyoKQEAgLTY5MiwxNSArNjk1LDkgQEAKICAgICAgICAgICAgIHJldHVybiBNRkRfQ0FOTk9UX0NSRUFURV9OT1c7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5pYV9hZGRyZXNzWzBdID0KLSAgICAgICAgICAgIHJvd3JlcV9jdHgtPnRibF9pZHguaXBBZGRyZXNzQWRkclswXTsKLSAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+aWFfYWRkcmVzc1sxXSA9Ci0gICAgICAgICAgICByb3dyZXFfY3R4LT50YmxfaWR4LmlwQWRkcmVzc0FkZHJbMV07Ci0gICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPmlhX2FkZHJlc3NbMl0gPQotICAgICAgICAgICAgcm93cmVxX2N0eC0+dGJsX2lkeC5pcEFkZHJlc3NBZGRyWzJdOwotICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5pYV9hZGRyZXNzWzNdID0KLSAgICAgICAgICAgIHJvd3JlcV9jdHgtPnRibF9pZHguaXBBZGRyZXNzQWRkclszXTsKLSAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+aWFfYWRkcmVzc19sZW4gPSA0OworICAgICAgICBtZW1jcHkocm93cmVxX2N0eC0+ZGF0YS0+aWFfYWRkcmVzcywgcm93cmVxX2N0eC0+dGJsX2lkeC5pcEFkZHJlc3NBZGRyLAorICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgtPnRibF9pZHguaXBBZGRyZXNzQWRkcl9sZW4pOworICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5pYV9hZGRyZXNzX2xlbiA9IHJvd3JlcV9jdHgtPnRibF9pZHguaXBBZGRyZXNzQWRkcl9sZW47CiAgICAgfQogCiAgICAgcmV0dXJuIHJjOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2ludGVyZmFjZS5jCmluZGV4IDk4YzNhZDAuLjQ4NzcwYjAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ2LDYgKzQ3LDE5IEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBBZGRyZXNzVGFibGVfZXh0ZXJuYWxfYWNjZXNzLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2NvbnRhaW5lcl9yb3dfaW5zZXJ0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKQorCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcEFkZHJlc3NUYWJsZV9jb250YWluZXJfc2l6ZSwgaXBBZGRyZXNzVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwQWRkcmVzc1RhYmxlX3JlZ2lzdHJhdGlvbl9zZXQsIGlwQWRkcmVzc1RhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcEFkZHJlc3NUYWJsZV9yZWdpc3RyYXRpb25fZ2V0LCBpcEFkZHJlc3NUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBBZGRyZXNzVGFibGVfY29udGFpbmVyX2dldCwgaXBBZGRyZXNzVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioKQEAgLTgwLDE5ICs5NCwyMyBAQAogc3RhdGljIHZvaWQKICAgICAgICAgICAgICAgICBfaXBBZGRyZXNzVGFibGVfY29udGFpbmVyX3NodXRkb3duKGlwQWRkcmVzc1RhYmxlX2ludGVyZmFjZV9jdHggKiBpZl9jdHgpOwogCi0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NUQUJMRV9DT05UQUlORVJfR0VUCiBuZXRzbm1wX2NvbnRhaW5lciAqCiBpcEFkZHJlc3NUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIGlwQWRkcmVzc1RhYmxlX2lmX2N0eC5jb250YWluZXI7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NUQUJMRV9DT05UQUlORVJfR0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NUQUJMRV9SRUdJU1RSQVRJT05fR0VUCiBpcEFkZHJlc3NUYWJsZV9yZWdpc3RyYXRpb24gKgogaXBBZGRyZXNzVGFibGVfcmVnaXN0cmF0aW9uX2dldCh2b2lkKQogewogICAgIHJldHVybiBpcEFkZHJlc3NUYWJsZV9pZl9jdHgudXNlcl9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NUQUJMRV9SRUdJU1RSQVRJT05fR0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NUQUJMRV9SRUdJU1RSQVRJT05fU0VUCiBpcEFkZHJlc3NUYWJsZV9yZWdpc3RyYXRpb24gKgogaXBBZGRyZXNzVGFibGVfcmVnaXN0cmF0aW9uX3NldChpcEFkZHJlc3NUYWJsZV9yZWdpc3RyYXRpb24gKiBuZXdyZWcpCiB7CkBAIC0xMDAsMTIgKzExOCwxNSBAQAogICAgIGlwQWRkcmVzc1RhYmxlX2lmX2N0eC51c2VyX2N0eCA9IG5ld3JlZzsKICAgICByZXR1cm4gb2xkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTVEFCTEVfUkVHSVNUUkFUSU9OX1NFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTVEFCTEVfQ09OVEFJTkVSX1NJWkUKIGludAogaXBBZGRyZXNzVGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKIHsKICAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUoaXBBZGRyZXNzVGFibGVfaWZfY3R4LmNvbnRhaW5lcik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NUQUJMRV9DT05UQUlORVJfU0laRSAqLwogCiB1X2ludAogaXBBZGRyZXNzVGFibGVfZGlydHlfZ2V0KHZvaWQpCkBAIC0xMjksNyArMTUwLDcgQEAKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lwQWRkcmVzc1RhYmxlX3Bvc3RfcmVxdWVzdDsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lwQWRkcmVzc1RhYmxlX29iamVjdF9sb29rdXA7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcEFkZHJlc3NUYWJsZV9nZXRfdmFsdWVzOwotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcEFkZHJlc3NUYWJsZV9jaGVja19vYmplY3RzOwogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXBBZGRyZXNzVGFibGVfdW5kb19zZXR1cDsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lwQWRkcmVzc1RhYmxlX3NldF92YWx1ZXM7CkBAIC0xNDQsNyArMTY1LDcgQEAKICAgICAgICAgICAgICAgICBfaXBBZGRyZXNzVGFibGVfdW5kb19jb2x1bW4oaXBBZGRyZXNzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbHVtbik7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKIE5FVFNOTVBfU1RBVElDX0lOTElORSBpbnQKICAgICAgICAgICAgICAgICBfaXBBZGRyZXNzVGFibGVfY2hlY2tfaW5kZXhlcyhpcEFkZHJlc3NUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCk7CkBAIC0yMjIsNyArMjQzLDcgQEAKICAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCA9IF9tZmRfaXBBZGRyZXNzVGFibGVfcG9zdF9yZXF1ZXN0OwogCiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogICAgIC8qCiAgICAgICogUkVRVUlSRUQgd3JhcHBlcnMgZm9yIHNldCByZXF1ZXN0IGhhbmRsaW5nCiAgICAgICovCkBAIC0yNDYsNyArMjY3LDcgQEAKICAgICAgKi8KICAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPmNvbnNpc3RlbmN5X2NoZWNrcyA9CiAgICAgICAgIF9tZmRfaXBBZGRyZXNzVGFibGVfY2hlY2tfZGVwZW5kZW5jaWVzOwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICAgKgpAQCAtMjgyLDcgKzMwMyw3IEBACiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+c2V0X3ZhbHVlcykKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9TRVRfVkFMVUVTOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmlycmV2ZXJzaWJsZV9jb21taXQpCkBAIC0zMDUsNyArMzI2LDcgQEAKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICBoYW5kbGVyID0gbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfZ2V0KG1mZF9tb2Rlcyk7CiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKQEAgLTEwNjEsNyArMTA4Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXBBZGRyZXNzVGFibGVfY2hlY2tfaW5kZXhlcyAqLwogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIFNFVCBwcm9jZXNzaW5nCkBAIC0xODkzLDcgKzE5MTQsNyBAQAogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaXBBZGRyZXNzVGFibGVfaXJyZXZlcnNpYmxlX2NvbW1pdCAqLwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0yMDQyLDYgKzIwNjMsNyBAQAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXBBZGRyZXNzVGFibGVfY29udGFpbmVyX3NodXRkb3duICovCiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1RBQkxFX0VYVEVSTkFMX0FDQ0VTUwogaXBBZGRyZXNzVGFibGVfcm93cmVxX2N0eCAqCiBpcEFkZHJlc3NUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgoaXBBZGRyZXNzVGFibGVfbWliX2luZGV4ICogbWliX2lkeCkKIHsKQEAgLTIwNjcsMyArMjA4OSw0IEBACiAKICAgICByZXR1cm4gcm93cmVxX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1RBQkxFX0VYVEVSTkFMX0FDQ0VTUyAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfYWNjZXNzLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9hY2Nlc3MuYwppbmRleCBiMzU0YzNkLi43ZDdkY2ZlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9hY2Nlc3MuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9hY2Nlc3MuYwpAQCAtOCw2ICs4LDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTE5LDYgKzIwLDggQEAKIAogI2luY2x1ZGUgImlwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfYWNjZXNzLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNvbnRhaW5lcl9saWZvKQorCiAvKiogQGluZ3JvdXAgaW50ZXJmYWNlCiAgKiBAYWRkdG9ncm91cCBkYXRhX2FjY2VzcyBkYXRhX2FjY2VzczogUm91dGluZXMgdG8gYWNjZXNzIGRhdGEKICAqCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlLmMKaW5kZXggNTJjYTQ0Zi4uNDBhZDcyYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2UuYwpAQCAtMzAsNiArMzAsNyBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtNDYsNiArNDcsMTAgQEAKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJvd19tZXJnZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGJhYnlfc3RlcHMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpAQCAtMjI3LDcgKzIzMiw3IEBACiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgLyogWFhYIC0gYXJlIHRoZXNlIGFjdHVhbGx5IG5lY2Vzc2FyeT8gKi8KICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CkBAIC0yNTEsNyArMjU2LDcgQEAKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICBoYW5kbGVyID0gbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfZ2V0KG1mZF9tb2Rlcyk7CiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuYwppbmRleCAzZmQxZDA5Li41NTlkMWMxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5jCkBAIC0zMCw2ICszMCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC00Niw2ICs0NywxOCBAQAogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwSWZTdGF0c1RhYmxlX2V4dGVybmFsX2FjY2VzcywgbGlibmV0c25tcG1pYnMpCisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJvd19tZXJnZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGJhYnlfc3RlcHMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaXplLCBpcElmU3RhdHNUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uX3NldCwgaXBJZlN0YXRzVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbl9nZXQsIGlwSWZTdGF0c1RhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcElmU3RhdHNUYWJsZV9jb250YWluZXJfZ2V0LCBpcElmU3RhdHNUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpAQCAtODAsMTkgKzkzLDIzIEBACiBzdGF0aWMgdm9pZCAgICAKIF9pcElmU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24oaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlX2N0eCAqIGlmX2N0eCk7CiAKLQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQSUZTVEFUU1RBQkxFX0NPTlRBSU5FUl9HRVQKIG5ldHNubXBfY29udGFpbmVyICoKIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaXBJZlN0YXRzVGFibGVfaWZfY3R4LmNvbnRhaW5lcjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQSUZTVEFUU1RBQkxFX0NPTlRBSU5FUl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQSUZTVEFUU1RBQkxFX1JFR0lTVFJBVElPTl9HRVQKIGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCiBpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIGlwSWZTdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQSUZTVEFUU1RBQkxFX1JFR0lTVFJBVElPTl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQSUZTVEFUU1RBQkxFX1JFR0lTVFJBVElPTl9TRVQKIGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCiBpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb25fc2V0KGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqIG5ld3JlZykKIHsKQEAgLTEwMCwxMiArMTE3LDE1IEBACiAgICAgaXBJZlN0YXRzVGFibGVfaWZfY3R4LnVzZXJfY3R4ID0gbmV3cmVnOwogICAgIHJldHVybiBvbGQ7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUElGU1RBVFNUQUJMRV9SRUdJU1RSQVRJT05fU0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUElGU1RBVFNUQUJMRV9DT05UQUlORVJfU0laRQogaW50CiBpcElmU3RhdHNUYWJsZV9jb250YWluZXJfc2l6ZSh2b2lkKQogewogICAgIHJldHVybiBDT05UQUlORVJfU0laRShpcElmU3RhdHNUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQSUZTVEFUU1RBQkxFX0NPTlRBSU5FUl9TSVpFICovCiAKIC8qCiAgKiBpcElmU3RhdHNUYWJsZUxhc3RDaGFuZ2VkLCB3aGljaCBpcyB0aGUgbGFzdCB0aW1lIHRoYXQgYSByb3cgaW4KQEAgLTIyNyw2ICsyNDcsMTMgQEAKICAgICAgKi8KICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5vYmplY3RfbG9va3VwKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX09CSkVDVF9MT09LVVA7CisKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wcmVfcmVxdWVzdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QUkVfUkVRVUVTVDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOworCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnNldF92YWx1ZXMpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfU0VUX1ZBTFVFUzsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5pcnJldmVyc2libGVfY29tbWl0KQpAQCAtMjM0LDExICsyNjEsNiBAQAogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9zeW50YXhfY2hlY2tzKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NIRUNLX09CSkVDVDsKIAotICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnByZV9yZXF1ZXN0KQotICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BSRV9SRVFVRVNUOwotICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCkKLSAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QT1NUX1JFUVVFU1Q7Ci0KICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX3NldHVwKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fU0VUVVA7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jbGVhbnVwKQpAQCAtMjU0LDYgKzI3Niw3IEBACiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ09NTUlUOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fY29tbWl0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fQ09NTUlUOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOwpAQCAtMjk1LDcgKzMxOCw3IEBACiAgICAgICovCiAgICAgewogICAgICAgICBvaWQgICAgIGxjX29pZFtdID0geyBJUElGU1RBVFNUQUJMRUxBU1RDSEFOR0VfT0lEIH07Ci0gICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KKyAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcjIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgICAoImlwSWZTdGF0c1RhYmxlTGFzdENoYW5nZWQiLCBOVUxMLAogICAgICAgICAgICAgICAgICBsY19vaWQsIE9JRF9MRU5HVEgobGNfb2lkKSwKICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpLApAQCAtMTM2OCw2ICsxMzkxLDcgQEAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2lwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUElGU1RBVFNUQUJMRV9FWFRFUk5BTF9BQ0NFU1MKIGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgogaXBJZlN0YXRzVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KGlwSWZTdGF0c1RhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpCiB7CkBAIC0xMzkzLDMgKzE0MTcsNCBAQAogCiAgICAgcmV0dXJuIHJvd3JlcV9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUElGU1RBVFNUQUJMRV9FWFRFUk5BTF9BQ0NFU1MgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfaW50ZXJmYWNlLmMKaW5kZXggMDk3Y2ViYi4uZTFjYTJjYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfaW50ZXJmYWNlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ2LDYgKzQ3LDE4IEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBTeXN0ZW1TdGF0c1RhYmxlX2V4dGVybmFsX2FjY2VzcywgbGlibmV0c25tcG1pYnMpCisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJvd19tZXJnZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGJhYnlfc3RlcHMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwU3lzdGVtU3RhdHNUYWJsZV9jb250YWluZXJfc2l6ZSwgaXBTeXN0ZW1TdGF0c1RhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcFN5c3RlbVN0YXRzVGFibGVfcmVnaXN0cmF0aW9uX3NldCwgaXBTeXN0ZW1TdGF0c1RhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcFN5c3RlbVN0YXRzVGFibGVfcmVnaXN0cmF0aW9uX2dldCwgaXBTeXN0ZW1TdGF0c1RhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcFN5c3RlbVN0YXRzVGFibGVfY29udGFpbmVyX2dldCwgaXBTeXN0ZW1TdGF0c1RhYmxlX2V4dGVybmFsX2FjY2VzcykKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqCkBAIC04MCwxOSArOTMsMjMgQEAKICAgICAgICAgICAgICAgICBfaXBTeXN0ZW1TdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihpcFN5c3RlbVN0YXRzVGFibGVfaW50ZXJmYWNlX2N0eCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZfY3R4KTsKIAotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBTWVNURU1TVEFUU1RBQkxFX0NPTlRBSU5FUl9HRVQKIG5ldHNubXBfY29udGFpbmVyICoKIGlwU3lzdGVtU3RhdHNUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIGlwU3lzdGVtU3RhdHNUYWJsZV9pZl9jdHguY29udGFpbmVyOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBTWVNURU1TVEFUU1RBQkxFX0NPTlRBSU5FUl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQU1lTVEVNU1RBVFNUQUJMRV9SRUdJU1RSQVRJT05fR0VUCiBpcFN5c3RlbVN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKIGlwU3lzdGVtU3RhdHNUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIGlwU3lzdGVtU3RhdHNUYWJsZV9pZl9jdHgudXNlcl9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUFNZU1RFTVNUQVRTVEFCTEVfUkVHSVNUUkFUSU9OX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBTWVNURU1TVEFUU1RBQkxFX1JFR0lTVFJBVElPTl9TRVQKIGlwU3lzdGVtU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgogaXBTeXN0ZW1TdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbl9zZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdyZWcpCkBAIC0xMDIsMTIgKzExOSwxNSBAQAogICAgIGlwU3lzdGVtU3RhdHNUYWJsZV9pZl9jdHgudXNlcl9jdHggPSBuZXdyZWc7CiAgICAgcmV0dXJuIG9sZDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQU1lTVEVNU1RBVFNUQUJMRV9SRUdJU1RSQVRJT05fU0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUFNZU1RFTVNUQVRTVEFCTEVfQ09OVEFJTkVSX1NJWkUKIGludAogaXBTeXN0ZW1TdGF0c1RhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpCiB7CiAgICAgcmV0dXJuIENPTlRBSU5FUl9TSVpFKGlwU3lzdGVtU3RhdHNUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQU1lTVEVNU1RBVFNUQUJMRV9DT05UQUlORVJfU0laRSAqLwogCiAvKgogICogbWZkIG11bHRpcGxleGVyIG1vZGVzCkBAIC0yMjAsNyArMjQwLDggQEAKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOwogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKKyAgICAvKiBYWFggLSBhcmUgdGhlc2UgYWN0dWFsbHkgbmVjZXNzYXJ5PyAqLwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnNldF92YWx1ZXMpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfU0VUX1ZBTFVFUzsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5pcnJldmVyc2libGVfY29tbWl0KQpAQCAtMjQzLDcgKzI2NCw3IEBACiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ09NTUlUOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fY29tbWl0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fQ09NTUlUOwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAgICAgaGFuZGxlciA9IG5ldHNubXBfYmFieV9zdGVwc19oYW5kbGVyX2dldChtZmRfbW9kZXMpOwogICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CkBAIC0xMTc1LDcgKzExOTYsNyBAQAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lwU3lzdGVtU3RhdHNUYWJsZV9nZXRfdmFsdWVzICovCiAKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBTRVQgcHJvY2Vzc2luZwpAQCAtMTMzOSw2ICsxMzYwLDcgQEAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2lwU3lzdGVtU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24gKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBTWVNURU1TVEFUU1RBQkxFX0VYVEVSTkFMX0FDQ0VTUwogaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgogaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChpcFN5c3RlbVN0YXRzVGFibGVfbWliX2luZGV4ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWliX2lkeCkKQEAgLTEzNjYsMyArMTM4OCw0IEBACiAKICAgICByZXR1cm4gcm93cmVxX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQU1lTVEVNU1RBVFNUQUJMRV9FWFRFUk5BTF9BQ0NFU1MgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcF9zY2FsYXJzLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jCmluZGV4IDc4MDIxYTkuLjkwOTYyNjkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcF9zY2FsYXJzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwX3NjYWxhcnMuYwpAQCAtNCw2ICs0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTExLDI3ICsxMiwzMyBAQAogCiAjaW5jbHVkZSAiaXBfc2NhbGFycy5oIgogCi1pbnQKK3N0YXRpYyBpbnQKIGhhbmRsZV9pcEZvcndhcmRpbmcobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCiAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cyk7CiAKLWludAorc3RhdGljIGludAogaGFuZGxlX2lwRGVmYXVsdFRUTChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKTsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cyk7CiAKLWludAorc3RhdGljIGludAogaGFuZGxlX2lwdjZJcEZvcndhcmRpbmcobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cyk7CiAKLWludCBpcEFkZHJlc3NTcGluTG9ja1ZhbHVlOworc3RhdGljIGludAoraGFuZGxlX2lwdjZJcERlZmF1bHRIb3BMaW1pdChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKTsKIAotaW50CitzdGF0aWMgaW50IGlwQWRkcmVzc1NwaW5Mb2NrVmFsdWU7CisKK3N0YXRpYyBpbnQKIGhhbmRsZV9pcEFkZHJlc3NTcGluTG9jayhuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCkBAIC00MiwyNiArNDksMjQgQEAKIGluaXRfaXBfc2NhbGFycyh2b2lkKQogewogICAgIHN0YXRpYyBvaWQgCSAgICBpcEZvcndhcmRpbmdfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDQsIDEgfTsKLSAgICBzdGF0aWMgb2lkIAkgICAgaXBEZWZhdWx0VFRMX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAyLCAwIH07Ci0gICAgc3RhdGljIG9pZCAgICAgIGlwUmVhc21UaW1lb3V0X29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAxMywgMCB9OworICAgIHN0YXRpYyBvaWQgCSAgICBpcERlZmF1bHRUVExfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDQsIDIgfTsKICAgICBzdGF0aWMgb2lkICAgICAgaXB2NklwRm9yd2FyZGluZ19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgNCwgMjUgfTsKLSAgICBzdGF0aWMgb2lkICAgICAgaXB2NklwRGVmYXVsdEhvcExpbWl0X29pZFtdID0KLSAgICAgICAgeyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAyNiwgMCB9OworICAgIHN0YXRpYyBvaWQgICAgICBpcHY2SXBEZWZhdWx0SG9wTGltaXRfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDQsIDI2IH07CiAgICAgc3RhdGljIG9pZCAgICAgIGlwQWRkcmVzc1NwaW5Mb2NrX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAzMyB9OwogCiAgICAgREVCVUdNU0dUTCgoImlwX3NjYWxhciIsICJJbml0aWFsaXppbmdcbiIpKTsKIAotICAgIG5ldHNubXBfcmVnaXN0ZXJfbnVtX2ZpbGVfaW5zdGFuY2UKLSAgICAgICAgKCJpcFJlYXNtVGltZW91dCIsCi0gICAgICAgICBpcFJlYXNtVGltZW91dF9vaWQsIE9JRF9MRU5HVEgoaXBSZWFzbVRpbWVvdXRfb2lkKSwKLSAgICAgICAgICIvcHJvYy9zeXMvbmV0L2lwdjQvaXBmcmFnX3RpbWUiLCBBU05fSU5URUdFUiwKLSAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZLCBOVUxMLCBOVUxMKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyKG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiaXBGb3J3YXJkaW5nIiwgaGFuZGxlX2lwRm9yd2FyZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRm9yd2FyZGluZ19vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPSURfTEVOR1RIKGlwRm9yd2FyZGluZ19vaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcihuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImlwRGVmYXVsdFRUTCIsIGhhbmRsZV9pcERlZmF1bHRUVEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRUVExfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0lEX0xFTkdUSChpcERlZmF1bHRUVExfb2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSkpOwogCiAgICAgbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImlwdjZJcEZvcndhcmRpbmciLCBoYW5kbGVfaXB2NklwRm9yd2FyZGluZywKQEAgLTcwLDYgKzc1LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSkpOwogCiAgICAgbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImlwdjZJcERlZmF1bHRIb3BMaW1pdCIsIGhhbmRsZV9pcHY2SXBEZWZhdWx0SG9wTGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZJcERlZmF1bHRIb3BMaW1pdF9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgoaXB2NklwRGVmYXVsdEhvcExpbWl0X29pZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSkpOworCisgICAgbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImlwQWRkcmVzc1NwaW5Mb2NrIiwgaGFuZGxlX2lwQWRkcmVzc1NwaW5Mb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcEFkZHJlc3NTcGluTG9ja19vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgoaXBBZGRyZXNzU3BpbkxvY2tfb2lkKSwKQEAgLTc4LDIxICs4OSw5IEBACiAgICAgLyogSW5pdGlhbGl6ZSBzcGluIGxvY2sgd2l0aCByYW5kb20gdmFsdWUgKi8KICAgICBpcEFkZHJlc3NTcGluTG9ja1ZhbHVlID0gKGludCkgcmFuZG9tKCk7CiAKLSAgICBuZXRzbm1wX3JlZ2lzdGVyX251bV9maWxlX2luc3RhbmNlCi0gICAgICAgICgiaXB2NklwRGVmYXVsdEhvcExpbWl0IiwKLSAgICAgICAgIGlwdjZJcERlZmF1bHRIb3BMaW1pdF9vaWQsIE9JRF9MRU5HVEgoaXB2NklwRGVmYXVsdEhvcExpbWl0X29pZCksCi0gICAgICAgICAiL3Byb2Mvc3lzL25ldC9pcHY2L2NvbmYvZGVmYXVsdC9ob3BfbGltaXQiLCBBU05fSU5URUdFUiwKLSAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSwgTlVMTCwgTlVMTCk7Ci0KLSAgICAgbmV0c25tcF9yZWdpc3Rlcl9udW1fZmlsZV9pbnN0YW5jZQotICAgICAgICAoImlwRGVmYXVsdFRUTCIsCi0gICAgICAgICBpcERlZmF1bHRUVExfb2lkLCBPSURfTEVOR1RIKGlwRGVmYXVsdFRUTF9vaWQpLAotICAgICAgICAgIi9wcm9jL3N5cy9uZXQvaXB2NC9pcF9kZWZhdWx0X3R0bCIsIEFTTl9JTlRFR0VSLAotICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFLCBOVUxMLCBOVUxMKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogfQogCi1pbnQKK3N0YXRpYyBpbnQKIGhhbmRsZV9pcEZvcndhcmRpbmcobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gICAqcmVxaW5mbywKQEAgLTEyMiw2ICsxMjEsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIC8qCiAgICAgICAgICAqIFNFVCBSRVFVRVNUCiAgICAgICAgICAqCkBAIC0xNzksNiArMTc5LDcgQEAKICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywgU05NUF9FUlJfVU5ET0ZBSUxFRCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgLyogd2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBzbyB0aGlzIGlzIGEgcmVhbGx5IGJhZCBlcnJvciAqLwpAQCAtMTkwLDcgKzE5MSwxMDYgQEAKIH0KIAogCi1pbnQKK3N0YXRpYyBpbnQKK2hhbmRsZV9pcERlZmF1bHRUVEwobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gICAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gICAgICAgICAqcmVxdWVzdHMpCit7CisgICAgaW50ICAgICAgcmM7CisgICAgdV9sb25nICAgdmFsdWU7CisKKyAgICAvKiBXZSBhcmUgbmV2ZXIgY2FsbGVkIGZvciBhIEdFVE5FWFQgaWYgaXQncyByZWdpc3RlcmVkIGFzIGEKKyAgICAgICAiaW5zdGFuY2UiLCBhcyBpdCdzICJtYWdpY2FsbHkiIGhhbmRsZWQgZm9yIHVzLiAgKi8KKworICAgIC8qIGEgaW5zdGFuY2UgaGFuZGxlciBhbHNvIG9ubHkgaGFuZHMgdXMgb25lIHJlcXVlc3QgYXQgYSB0aW1lLCBzbworICAgICAgIHdlIGRvbid0IG5lZWQgdG8gbG9vcCBvdmVyIGEgbGlzdCBvZiByZXF1ZXN0czsgd2UnbGwgb25seSBnZXQgb25lLiAqLworCisgICAgc3dpdGNoKHJlcWluZm8tPm1vZGUpIHsKKworICAgICAgICBjYXNlIE1PREVfR0VUOgorICAgICAgICAgICAgcmMgPSBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcERlZmF1bHRUVExfZ2V0KCZ2YWx1ZSk7CisgICAgICAgICAgICBpZiAocmMgIT0gMCkgeworICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfTk9TVUNISU5TVEFOQ0UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3RzLT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikmdmFsdWUsIHNpemVvZih2YWx1ZSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCisgICAgICAgIC8qCisgICAgICAgICAqIFNFVCBSRVFVRVNUCisgICAgICAgICAqCisgICAgICAgICAqIG11bHRpcGxlIHN0YXRlcyBpbiB0aGUgdHJhbnNhY3Rpb24uICBTZWU6CisgICAgICAgICAqIGh0dHA6Ly93d3cubmV0LXNubXAub3JnL3R1dG9yaWFsLTUvdG9vbGtpdC9taWJfbW9kdWxlL3NldC1hY3Rpb25zLmpwZworICAgICAgICAgKi8KKyAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogc3RvcmUgb2xkIGluZm8gZm9yIHVuZG8gbGF0ZXIKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcmMgPSBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcERlZmF1bHRUVExfZ2V0KCZ2YWx1ZSk7CisgICAgICAgICAgICBpZiAocmMgPCAwKSB7CisgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX05PQ1JFQVRJT04pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB1X2xvbmcgKnZhbHVlX3NhdmU7CisgICAgICAgICAgICAgICAgdmFsdWVfc2F2ZSA9IG5ldHNubXBfbWVtZHVwKCZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSk7CisgICAgICAgICAgICAgICAgaWYgKCBOVUxMID09IHZhbHVlX3NhdmUgKQorICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLCBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9hZGRfbGlzdF9kYXRhKHJlcXVlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9kYXRhX2xpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJpcHR0bCIsIHZhbHVlX3NhdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUpKTsKKwkgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9GUkVFOgorICAgICAgICAgICAgLyogWFhYOiBmcmVlIHJlc291cmNlcyBhbGxvY2F0ZWQgaW4gUkVTRVJWRTEgYW5kL29yCisgICAgICAgICAgICAgICBSRVNFUlZFMi4gIFNvbWV0aGluZyBmYWlsZWQgc29tZXdoZXJlLCBhbmQgdGhlIHN0YXRlcworICAgICAgICAgICAgICAgYmVsb3cgd29uJ3QgYmUgY2FsbGVkLiAqLworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CisgICAgICAgICAgICAvKiBYWFg6IHBlcmZvcm0gdGhlIHZhbHVlIGNoYW5nZSBoZXJlICovCisgICAgICAgICAgICB2YWx1ZSA9ICAqKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyKTsKKyAgICAgICAgICAgIHJjID0gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXBEZWZhdWx0VFRMX3NldCh2YWx1ZSk7CisgICAgICAgICAgICBpZiAoIDAgIT0gcmMgKSB7CisgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywgcmMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE1PREVfU0VUX1VORE86CisgICAgICAgICAgICAgdmFsdWUgPQorICAgICAgICAgICAgICAgICAqKCh1X2xvbmcgKikgbmV0c25tcF9yZXF1ZXN0X2dldF9saXN0X2RhdGEocmVxdWVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXB0dGwiKSk7CisgICAgICAgICAgICAgcmMgPSBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcERlZmF1bHRUVExfc2V0KHZhbHVlKTsKKyAgICAgICAgICAgICBpZiAoIDAgIT0gcmMgKSB7CisgICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsIFNOTVBfRVJSX1VORE9GQUlMRUQpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8qIHdlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgc28gdGhpcyBpcyBhIHJlYWxseSBiYWQgZXJyb3IgKi8KKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ1bmtub3duIG1vZGUgKCVkKSBpbiBoYW5kbGVfaXBEZWZhdWx0VFRMXG4iLCByZXFpbmZvLT5tb2RlICk7CisgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOworICAgIH0KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCisKK3N0YXRpYyBpbnQKIGhhbmRsZV9pcHY2SXBGb3J3YXJkaW5nKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCkBAIC0yMjMsNiArMzIzLDcgQEAKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgLyoKICAgICAgICAgICogU0VUIFJFUVVFU1QKICAgICAgICAgICoKQEAgLTI1Miw3ICszNTMsNyBAQAogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2FkZF9saXN0X2RhdGEocmVxdWVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJpcGZ3IiwgdmFsdWVfc2F2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImlwNmZ3IiwgdmFsdWVfc2F2ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yNzUsMTIgKzM3NiwxMyBAQAogICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKICAgICAgICAgdmFsdWUgPQogICAgICAgICAgICAgKigodV9sb25nICopIG5ldHNubXBfcmVxdWVzdF9nZXRfbGlzdF9kYXRhKHJlcXVlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpcGZ3IikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpcDZmdyIpKTsKICAgICAgICAgcmMgPSBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcHY2SXBGb3J3YXJkaW5nX3NldCh2YWx1ZSk7CiAgICAgICAgIGlmICggMCAhPSByYyApIHsKICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsIFNOTVBfRVJSX1VORE9GQUlMRUQpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIC8qCkBAIC0yOTQsNyArMzk2LDggQEAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KIAotaW50CisKK3N0YXRpYyBpbnQKIGhhbmRsZV9pcEFkZHJlc3NTcGluTG9jayhuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAgICpyZXFpbmZvLApAQCAtMzE2LDYgKzQxOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGlwQWRkcmVzc1NwaW5Mb2NrVmFsdWUpKTsKICAgICAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAvKgogICAgICAgICAgKiBTRVQgUkVRVUVTVAogICAgICAgICAgKgpAQCAtMzUxLDYgKzQ1NSw3IEBACiAKICAgICAgICAgY2FzZSBNT0RFX1NFVF9VTkRPOgogICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgLyogd2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBzbyB0aGlzIGlzIGEgcmVhbGx5IGJhZCBlcnJvciAqLwpAQCAtMzYwLDMgKzQ2NSwxMjMgQEAKIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQorCisKK3N0YXRpYyBpbnQKK2hhbmRsZV9pcHY2SXBEZWZhdWx0SG9wTGltaXQobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICB1X2xvbmcgICAgICAgICAgdmFsdWU7CisgICAgaW50ICAgICAgICAgICAgIHJjOworICAgIC8qCisgICAgICogV2UgYXJlIG5ldmVyIGNhbGxlZCBmb3IgYSBHRVRORVhUIGlmIGl0J3MgcmVnaXN0ZXJlZCBhcyBhCisgICAgICogImluc3RhbmNlIiwgYXMgaXQncyAibWFnaWNhbGx5IiBoYW5kbGVkIGZvciB1cy4gIAorICAgICAqLworCisgICAgLyoKKyAgICAgKiBhIGluc3RhbmNlIGhhbmRsZXIgYWxzbyBvbmx5IGhhbmRzIHVzIG9uZSByZXF1ZXN0IGF0IGEgdGltZSwgc28KKyAgICAgKiB3ZSBkb24ndCBuZWVkIHRvIGxvb3Agb3ZlciBhIGxpc3Qgb2YgcmVxdWVzdHM7IHdlJ2xsIG9ubHkgZ2V0IG9uZS4gCisgICAgICovCisKKyAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKKworICAgIGNhc2UgTU9ERV9HRVQ6CisKKyAgICAgICAgcmMgPSBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcHY2SXBEZWZhdWx0SG9wTGltaXRfZ2V0KCZ2YWx1ZSk7CisgICAgICAgIGlmIChyYyAhPSAwKSB7CisgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfTk9TVUNISU5TVEFOQ0UpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3RzLT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSk7CisgICAgICAgIH0KKworICAgICAgICBicmVhazsKKworI2lmZGVmIE5PVFlFVAorICAgICAgICAvKgorICAgICAgICAgKiBTRVQgUkVRVUVTVAorICAgICAgICAgKgorICAgICAgICAgKiBtdWx0aXBsZSBzdGF0ZXMgaW4gdGhlIHRyYW5zYWN0aW9uLiAgU2VlOgorICAgICAgICAgKiBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy90dXRvcmlhbC01L3Rvb2xraXQvbWliX21vZHVsZS9zZXQtYWN0aW9ucy5qcGcKKyAgICAgICAgICovCisgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKKyAgICAgICAgLyoKKyAgICAgICAgICogb3IgeW91IGNvdWxkIHVzZSBuZXRzbm1wX2NoZWNrX3ZiX3R5cGVfYW5kX3NpemUgaW5zdGVhZCAKKyAgICAgICAgICovCisgICAgICAgIHJjID0gbmV0c25tcF9jaGVja192Yl90eXBlKHJlcXVlc3RzLT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSKTsKKyAgICAgICAgaWYgKHJjICE9IFNOTVBfRVJSX05PRVJST1IpIHsKKyAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsIHJjKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CisgICAgICAgIC8qCisgICAgICAgICAqIFhYWCBtYWxsb2MgInVuZG8iIHN0b3JhZ2UgYnVmZmVyIAorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCAvKiBYWFggaWYgbWFsbG9jLCBvciB3aGF0ZXZlciwgZmFpbGVkOiAqLyApIHsKKyAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEUpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBNT0RFX1NFVF9GUkVFOgorICAgICAgICAvKgorICAgICAgICAgKiBYWFg6IGZyZWUgcmVzb3VyY2VzIGFsbG9jYXRlZCBpbiBSRVNFUlZFMSBhbmQvb3IKKyAgICAgICAgICogUkVTRVJWRTIuICBTb21ldGhpbmcgZmFpbGVkIHNvbWV3aGVyZSwgYW5kIHRoZSBzdGF0ZXMKKyAgICAgICAgICogYmVsb3cgd29uJ3QgYmUgY2FsbGVkLiAKKyAgICAgICAgICovCisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CisgICAgICAgIC8qCisgICAgICAgICAqIFhYWDogcGVyZm9ybSB0aGUgdmFsdWUgY2hhbmdlIGhlcmUgCisgICAgICAgICAqLworICAgICAgICBpZiAoIC8qIFhYWDogZXJyb3I/ICovICkgeworICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywgLyogc29tZSBlcnJvciAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6CisgICAgICAgIC8qCisgICAgICAgICAqIFhYWDogZGVsZXRlIHRlbXBvcmFyeSBzdG9yYWdlIAorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCAvKiBYWFg6IGVycm9yPyAqLyApIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiB0cnkgX3JlYWxseV9yZWFsbHlfIGhhcmQgdG8gbmV2ZXIgZ2V0IHRvIHRoaXMgcG9pbnQgCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX0NPTU1JVEZBSUxFRCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1PREVfU0VUX1VORE86CisgICAgICAgIC8qCisgICAgICAgICAqIFhYWDogVU5ETyBhbmQgcmV0dXJuIHRvIHByZXZpb3VzIHZhbHVlIGZvciB0aGUgb2JqZWN0IAorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCAvKiBYWFg6IGVycm9yPyAqLyApIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiB0cnkgX3JlYWxseV9yZWFsbHlfIGhhcmQgdG8gbmV2ZXIgZ2V0IHRvIHRoaXMgcG9pbnQgCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX1VORE9GQUlMRUQpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworI2VuZGlmCisKKyAgICBkZWZhdWx0OgorICAgICAgICAvKgorICAgICAgICAgKiB3ZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIHNvIHRoaXMgaXMgYSByZWFsbHkgYmFkIGVycm9yIAorICAgICAgICAgKi8KKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgInVua25vd24gbW9kZSAoJWQpIGluIGhhbmRsZV9pcHY2SXBEZWZhdWx0SG9wTGltaXRcbiIsCisgICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOworICAgIH0KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9pbnRlcmZhY2UuYwppbmRleCBmMWU3ODQ0Li5hODUxYTMwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9pbnRlcmZhY2UuYwpAQCAtMzAsNiArMzAsNyBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtNDgsNiArNDksMTAgQEAKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJvd19tZXJnZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGJhYnlfc3RlcHMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpAQCAtMzQ3LDcgKzM1Miw3IEBACiAgICAgICovCiAgICAgewogICAgICAgICBvaWQgICAgICAgICAgICAgbGNfb2lkW10gPSB7IElQVjRJTlRFUkZBQ0VUQUJMRUxBU1RDSEFOR0VfT0lEIH07Ci0gICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KKyAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcjIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImlwdjRUYWJsZUxhc3RDaGFuZ2VkIiwgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGNfb2lkLCBPSURfTEVOR1RIKGxjX29pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKSwKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlX3N1YmFnZW50LmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9zdWJhZ2VudC5jCmluZGV4IDNjODVhNTQuLjM1YjJlOTYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlX3N1YmFnZW50LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGVfc3ViYWdlbnQuYwpAQCAtNiw5ICs2LDE0IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShhZ2VudHhfZW5hYmxlX3N1YmFnZW50KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYWdlbnRfY2hlY2tfYW5kX3Byb2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShlbmFibGVfc3RkZXJybG9nKQorCiAvKgogICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKICAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZV9pbnRlcmZhY2UuYwppbmRleCBhYThmYzNmLi5jYmQ1MzNjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZV9pbnRlcmZhY2UuYwpAQCAtMzAsNiArMzAsNyBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtNDgsNiArNDksMTAgQEAKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJvd19tZXJnZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGJhYnlfc3RlcHMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpAQCAtMzQ1LDcgKzM1MCw3IEBACiAgICAgICovCiAgICAgewogICAgICAgICBvaWQgICAgICAgICAgICAgbGNfb2lkW10gPSB7IElQVjZJTlRFUkZBQ0VUQUJMRUxBU1RDSEFOR0VfT0lEIH07Ci0gICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KKyAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcjIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImlwdjZUYWJsZUxhc3RDaGFuZ2VkIiwgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGNfb2lkLCBPSURfTEVOR1RIKGxjX29pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKSwKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuYwppbmRleCBhNmU5NTJlLi5lZjIwODhiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5jCkBAIC0zMCw2ICszMCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC00Niw2ICs0NywxOSBAQAogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2V4dGVybmFsX2FjY2VzcywgbGlibmV0c25tcG1pYnMpCisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJvd19tZXJnZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGJhYnlfc3RlcHMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9jb250YWluZXJfcm93X2luc2VydCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX2FsbF9yZXF1ZXN0c19lcnJvcikKKworCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX3NpemUsIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb25fc2V0LCBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uX2dldCwgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9nZXQsIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2V4dGVybmFsX2FjY2VzcykKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqCkBAIC04NCwxOSArOTgsMjMgQEAKIHN0YXRpYyB2b2lkCiBfY2FjaGVfZnJlZShuZXRzbm1wX2NhY2hlICogY2FjaGUsIHZvaWQgKm1hZ2ljKTsKIAotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfQ09OVEFJTkVSX0dFVAogbmV0c25tcF9jb250YWluZXIgKgogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2dldCh2b2lkKQogewogICAgIHJldHVybiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pZl9jdHguY29udGFpbmVyOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfQ09OVEFJTkVSX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfUkVHSVNUUkFUSU9OX0dFVAogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uICoKIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LnVzZXJfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfUkVHSVNUUkFUSU9OX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfUkVHSVNUUkFUSU9OX1NFVAogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uICoKIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQKICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uICogbmV3cmVnKQpAQCAtMTA2LDEyICsxMjQsMTUgQEAKICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pZl9jdHgudXNlcl9jdHggPSBuZXdyZWc7CiAgICAgcmV0dXJuIG9sZDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX1JFR0lTVFJBVElPTl9TRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX0NPTlRBSU5FUl9TSVpFCiBpbnQKIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpCiB7CiAgICAgcmV0dXJuIENPTlRBSU5FUl9TSVpFKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eC5jb250YWluZXIpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfQ09OVEFJTkVSX1NJWkUgKi8KIAogLyoKICAqIG1mZCBtdWx0aXBsZXhlciBtb2RlcwpAQCAtMjI0LDYgKzI0NSwxMyBAQAogICAgICAqLwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9sb29rdXApCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfT0JKRUNUX0xPT0tVUDsKKworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnByZV9yZXF1ZXN0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BSRV9SRVFVRVNUOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QT1NUX1JFUVVFU1Q7CisKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+c2V0X3ZhbHVlcykKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9TRVRfVkFMVUVTOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmlycmV2ZXJzaWJsZV9jb21taXQpCkBAIC0yMzEsMTEgKzI1OSw2IEBACiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+b2JqZWN0X3N5bnRheF9jaGVja3MpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ0hFQ0tfT0JKRUNUOwogCi0gICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cHJlX3JlcXVlc3QpCi0gICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUFJFX1JFUVVFU1Q7Ci0gICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQotICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKLQogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fc2V0dXApCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19TRVRVUDsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NsZWFudXApCkBAIC0yNTEsNiArMjc0LDcgQEAKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgaGFuZGxlciA9IG5ldHNubXBfYmFieV9zdGVwc19oYW5kbGVyX2dldChtZmRfbW9kZXMpOwogICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CkBAIC0xMDU3LDYgKzEwODEsNyBAQAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX3NodXRkb3duICovCiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX0VYVEVSTkFMX0FDQ0VTUwogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqCiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgKICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfbWliX2luZGV4ICogbWliX2lkeCkKQEAgLTEwODQsNiArMTEwOSw3IEBACiAKICAgICByZXR1cm4gcm93cmVxX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX0VYVEVSTkFMX0FDQ0VTUyAqLwogCiBzdGF0aWMgaW50CiBfY2FjaGVfbG9hZChuZXRzbm1wX2NhY2hlICogY2FjaGUsIHZvaWQgKnZtYWdpYykKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYyBiL2FnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYwppbmRleCBjYTNjODA5Li4zMzFlZTZkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5jCkBAIC0xMTIsNiArMTEyLDggQEAKICAgICB7TUlCX0lQNiwgMjAgKiBzaXplb2YobWliMl9pcHY2SWZTdGF0c0VudHJ5X3QpLCAodm9pZCAqKS0xLCAwLCAzMCwgMCwgMH0sCiAjZW5kaWYKICAgICB7TUlCX0lQNl9BRERSLCAyMCAqIHNpemVvZihtaWIyX2lwdjZBZGRyRW50cnlfdCksICh2b2lkICopLTEsIDAsIDMwLCAwLCAwfSwKKyAgICB7TUlCX0lQNl9ST1VURSwgMjAwICogc2l6ZW9mKG1pYjJfaXB2NkFkZHJFbnRyeV90KSwgKHZvaWQgKiktMSwgMCwgMzAsIDAsIDB9LAorICAgIHtNSUJfSUNNUDYsIDIwICogc2l6ZW9mKG1pYjJfaXB2NklmSWNtcEVudHJ5X3QpLCAodm9pZCAqKS0xLCAwLCAzMCwgMCwgMH0sCiAgICAge01JQl9UQ1A2X0NPTk4sIDEwMDAgKiBzaXplb2YobWliMl90Y3A2Q29ubkVudHJ5X3QpLCAodm9pZCAqKSAtMSwgMCwgMzAsCiAgICAgIDAsIDB9LAogICAgIHtNSUJfVURQNl9FTkRQT0lOVCwgMTAwMCAqIHNpemVvZihtaWIyX3VkcDZFbnRyeV90KSwgKHZvaWQgKikgLTEsIDAsIDMwLApAQCAtMTUyLDYgKzE1NCw4IEBACiAjZW5kaWYKICAgICB7TUlCMl9JUDYsIDB9LAogICAgIHtNSUIyX0lQNiwgTUlCMl9JUDZfQUREUn0sCisgICAge01JQjJfSVA2LCBNSUIyX0lQNl9ST1VURX0sCisgICAge01JQjJfSUNNUDYsIDB9LAogICAgIHtNSUIyX1RDUDYsIE1JQjJfVENQNl9DT05OfSwKICAgICB7TUlCMl9VRFA2LCBNSUIyX1VEUDZfRU5UUll9LAogI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmggYi9hZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmgKaW5kZXggMGJmZmNiOS4uYmYzMzdhZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuaApAQCAtNzYsNiArNzYsOCBAQAogI2VuZGlmCiAgICAgTUlCX0lQNiwKICAgICBNSUJfSVA2X0FERFIsCisgICAgTUlCX0lQNl9ST1VURSwKKyAgICBNSUJfSUNNUDYsCiAgICAgTUlCX1RDUDZfQ09OTiwKICAgICBNSUJfVURQNl9FTkRQT0lOVCwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkuaCBiL2FnZW50L21pYmdyb3VwL21pYklJLmgKaW5kZXggMWI5NGE1OS4uZjMxNTdmYyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkuaAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS5oCkBAIC0yNSwxNSArMjUsMTYgQEAKIAogLyoKICAqIHRoZXNlIG5ldyBtb2R1bGUgcmUtcmV3cml0ZXMgaGF2ZSBvbmx5IGJlZW4gaW1wbGVtZW50ZWQgZm9yCi0gKiBsaW51eC4KKyAqIExpbnV4IGFuZCAqQlNELgogICovCi0jaWYgZGVmaW5lZCggbGludXggKQorI2lmIGRlZmluZWQobGludXgpCitjb25maWdfcmVxdWlyZShpcC1taWIgaXAtZm9yd2FyZC1taWIgdGNwLW1pYiB1ZHAtbWliKQorI2VsaWYgZGVmaW5lZChkcmFnb25mbHkpIHx8IGRlZmluZWQoZnJlZWJzZDcpIHx8IFwKKyAgICBkZWZpbmVkKG5ldGJzZDUpIHx8IGRlZmluZWQob3BlbmJzZDQpIHx8IGRlZmluZWQoIGRhcndpbiApCiBjb25maWdfcmVxdWlyZShpcC1taWIgaXAtZm9yd2FyZC1taWIgdGNwLW1pYiB1ZHAtbWliKQogI2VsaWYgZGVmaW5lZChzb2xhcmlzMikKIGNvbmZpZ19yZXF1aXJlKHRjcC1taWIgdWRwLW1pYikKLSNlbGlmIGRlZmluZWQoZnJlZWJzZDQpIHx8IGRlZmluZWQoZHJhZ29uZmx5KQotY29uZmlnX3JlcXVpcmUodGNwLW1pYiB1ZHAtbWliKQotI2VsaWYgZGVmaW5lZChvcGVuYnNkNCkKKyNlbGlmIGRlZmluZWQoZnJlZWJzZDQpCiBjb25maWdfcmVxdWlyZSh0Y3AtbWliIHVkcC1taWIpCiAjZWxpZiBkZWZpbmVkKG5ldGJzZDEpCiBjb25maWdfcmVxdWlyZSh0Y3AtbWliIHVkcC1taWIpCkBAIC00NCw0ICs0NSw1IEBACiAgKi8KICNpZiBkZWZpbmVkKCBzb2xhcmlzMiApICYmIGRlZmluZWQoIEhBVkVfTUlCMl9JUElGU1RBVFNFTlRSWV9UICkKIGNvbmZpZ19yZXF1aXJlKGlwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUgaXAtbWliL2lwQWRkcmVzc1RhYmxlKQorY29uZmlnX3JlcXVpcmUoaXAtZm9yd2FyZC1taWIpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2F0LmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9hdC5jCmluZGV4IGU5NjgwNzQuLmY1N2JhMmEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2F0LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYwpAQCAtNTI1LDcgKzUyNSw2IEBACiAgKi8KICNkZWZpbmUgQVJQX0NBQ0hFX0lOQ1IgMTAyNAogc3RhdGljIHN0cnVjdCBhcnB0YWIgKmF0ID0gTlVMTDsKLXN0YXRpYyBpbnQgICAgICBhcnB0YWJfY3Vycl9tYXhfc2l6ZSA9IDA7CiAKICNlbmRpZgogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBORVRTTk1QX0NBTl9VU0VfU1lTQ1RMICovCkBAIC02MzEsOCArNjMwLDEwIEBACiAKICAgICBpID0gMDsKICAgICB3aGlsZSAoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBpbikpIHsKKyAgICAgICAgc3RhdGljIGludCAgICAgIGFycHRhYl9jdXJyX21heF9zaXplOwogICAgICAgICB1X2xvbmcgICAgICAgICAgdG1wX2E7CiAgICAgICAgIHVuc2lnbmVkIGludCAgICB0bXBfZmxhZ3M7CisKICAgICAgICAgaWYgKGkgPj0gYXJwdGFiX2N1cnJfbWF4X3NpemUpIHsKICAgICAgICAgICAgIHN0cnVjdCBhcnB0YWIgICpuZXd0YWIgPSAoc3RydWN0IGFycHRhYiAqKQogICAgICAgICAgICAgICAgIHJlYWxsb2MoYXQsIChzaXplb2Yoc3RydWN0IGFycHRhYikgKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jCmluZGV4IDc2MGIxYTQuLmJlODAzZWUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMKQEAgLTcxLDYgKzcxLDk1IEBACiAJICoqKioqKioqKioqKioqKioqKioqKi8KIAogCisjaWZkZWYgaHB1eDExCisjZGVmaW5lIElDTVBfU1RBVF9TVFJVQ1RVUkUJaW50CisjZW5kaWYKKworI2lmZGVmIGxpbnV4CisjZGVmaW5lIElDTVBfU1RBVF9TVFJVQ1RVUkUJc3RydWN0IGljbXBfbWliCisjZGVmaW5lIFVTRVNfU05NUF9ERVNJR05FRF9JQ01QU1RBVAorI3VuZGVmIElDTVBTVEFUX1NZTUJPTAorI2VuZGlmCisKKyNpZmRlZiBzb2xhcmlzMgorI2RlZmluZSBVU0VTX1NOTVBfREVTSUdORURfSUNNUFNUQVQKKyNkZWZpbmUgSUNNUF9TVEFUX1NUUlVDVFVSRQltaWIyX2ljbXBfdAorI2luY2x1ZGUgImtlcm5lbF9taWIuaCIKK3N0YXRpYyBpbnQKK3NvbGFyaXNfcmVhZF9pY21wX3N0YXQoSUNNUF9TVEFUX1NUUlVDVFVSRSAqKTsKK3N0YXRpYyBpbnQKK3NvbGFyaXNfcmVhZF9pY21wX21zZ19zdGF0KElDTVBfU1RBVF9TVFJVQ1RVUkUgKiwgc3RydWN0IGljbXA0X21zZ19taWIgKiwgaW50ICopOworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKK3N0YXRpYyBpbnQKK3NvbGFyaXNfcmVhZF9pY21wNl9zdGF0KHN0cnVjdCBpY21wNl9taWIgKik7CitzdGF0aWMgaW50Citzb2xhcmlzX3JlYWRfaWNtcDZfbXNnX3N0YXQoc3RydWN0IGljbXA2X21pYiAqLCBzdHJ1Y3QgaWNtcDZfbXNnX21pYiAqLCBpbnQgKik7CisjZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgTkVUQlNEX1NUQVRTX1ZJQV9TWVNDVEwKKyNkZWZpbmUgSUNNUF9TVEFUX1NUUlVDVFVSRSAgICAgc3RydWN0IGljbXBfbWliCisjZGVmaW5lIFVTRVNfU05NUF9ERVNJR05FRF9JQ01QU1RBVAorI3VuZGVmIElDTVBfTlNUQVRTCisjZW5kaWYKKworI2lmZGVmIEhBVkVfSVBITFBBUElfSAorI2luY2x1ZGUgPGlwaGxwYXBpLmg+CisjZGVmaW5lIElDTVBfU1RBVF9TVFJVQ1RVUkUgTUlCX0lDTVAKKyNlbmRpZgorCisjaWYgKGRlZmluZWQoTkVUU05NUF9DQU5fVVNFX1NZU0NUTCkgJiYgZGVmaW5lZChJQ01QQ1RMX1NUQVRTKSkKKyNkZWZpbmUgSUNNUF9TVEFUX1NUUlVDVFVSRQlzdHJ1Y3QgaWNtcF9taWIKKyNkZWZpbmUgVVNFU19TTk1QX0RFU0lHTkVEX0lDTVBTVEFUCisjdW5kZWYgSUNNUFNUQVRfU1lNQk9MCisjZW5kaWYKKworI2lmZGVmIEhBVkVfU1lTX0lDTVBJUFNUQVRTX0gKKy8qIG9yICNpZmRlZgkJSEFWRV9TWVNfVENQSVBTVEFUU19IICA/Pz8gKi8KKyNkZWZpbmUgSUNNUF9TVEFUX1NUUlVDVFVSRQlzdHJ1Y3Qga25hCisjZGVmaW5lIFVTRVNfVFJBRElUSU9OQUxfSUNNUFNUQVQKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoSUNNUF9TVEFUX1NUUlVDVFVSRSkKKyNkZWZpbmUgSUNNUF9TVEFUX1NUUlVDVFVSRQlzdHJ1Y3QgaWNtcHN0YXQKKyNkZWZpbmUgVVNFU19UUkFESVRJT05BTF9JQ01QU1RBVAorI2VuZGlmCisKK0lDTVBfU1RBVF9TVFJVQ1RVUkUgaWNtcHN0YXQ7CisjaWYgZGVmaW5lZChzb2xhcmlzMikgJiYgZGVmaW5lZChORVRTTk1QX0VOQUJMRV9JUFY2KQorc3RhdGljIHN0cnVjdCBpY21wNl9taWIgaWNtcDZzdGF0OworI2VuZGlmCisKKy8qIElmIHRoZXkganVzdCBhbGwgYWdyZWVkIC4uLiAqLworCisjaWZuZGVmIElDTVBfREVTVF9VTlJFQUNICisjZGVmaW5lIElDTVBfREVTVF9VTlJFQUNIIElDTVBfVU5SRUFDSAorI2VuZGlmCisjaWZuZGVmIElDTVBfU09VUkNFX1FVRU5DSAorI2RlZmluZSBJQ01QX1NPVVJDRV9RVUVOQ0ggSUNNUF9TT1VSQ0VRVUVOQ0gKKyNlbmRpZgorI2lmbmRlZiBJQ01QX1RJTUVfRVhDRUVERUQKKyNkZWZpbmUgSUNNUF9USU1FX0VYQ0VFREVEIElDTVBfVElNWENFRUQKKyNlbmRpZgorI2lmbmRlZiBJQ01QX1BBUkFNRVRFUlBST0IKKyNkZWZpbmUgSUNNUF9QQVJBTUVURVJQUk9CIElDTVBfUEFSQU1QUk9CCisjZW5kaWYKKyNpZm5kZWYgSUNNUF9USU1FU1RBTVAKKyNkZWZpbmUgSUNNUF9USU1FU1RBTVAgSUNNUF9UU1RBTVAKKyNlbmRpZgorI2lmbmRlZiBJQ01QX1RJTUVTVEFNUFJFUExZCisjZGVmaW5lIElDTVBfVElNRVNUQU1QUkVQTFkgSUNNUF9UU1RBTVBSRVBMWQorI2VuZGlmCisjaWZuZGVmIElDTVBfQUREUkVTUworI2RlZmluZSBJQ01QX0FERFJFU1MgSUNNUF9NQVNLUkVRCisjZW5kaWYKKyNpZm5kZWYgSUNNUF9BRERSRVNTUkVQTFkKKyNkZWZpbmUgSUNNUF9BRERSRVNTUkVQTFkgSUNNUF9NQVNLUkVQTFkKKyNlbmRpZgorI2lmbmRlZiBNTERfTElTVEVORVJfUkVEVUNUSU9OCisjZGVmaW5lIE1MRF9MSVNURU5FUl9SRURVQ1RJT04gTUxEX0xJU1RFTkVSX0RPTkUKKyNlbmRpZgorCiAvKgogICogRGVmaW5lIHRoZSBPSUQgcG9pbnRlciB0byB0aGUgdG9wIG9mIHRoZSBtaWIgdHJlZSB0aGF0IHdlJ3JlCiAgKiByZWdpc3RlcmluZyB1bmRlcm5lYXRoIApAQCAtODQsNyArMTczLDcgQEAKIGV4dGVybiBpbnQgICAgICBpcF9tb2R1bGVfY291bnQ7CiAjZW5kaWYKIAotI2lmZGVmIGxpbnV4CisjaWZkZWYgVVNFU19TTk1QX0RFU0lHTkVEX0lDTVBTVEFUCiBzdHJ1Y3QgaWNtcF9zdGF0c190YWJsZV9lbnRyeSB7CiAJdWludDMyX3QgaXBWZXI7CiAgICAgICAgIHVpbnQzMl90IGljbXBTdGF0c0luTXNnczsKQEAgLTEzMCw1NCArMjE5LDc5IEBACiBpY21wX3N0YXRzX2xvYWQobmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKnZtYWdpYykKIHsKIAotCS8qCi0gICAgICAgICAqIG5vdGUgZG9uJ3QgYm90aGVyIHVzaW5nIHRoZSBwYXNzZWQgaW4gY2FjaGUKLQkgKiBhbmQgdm1hZ2ljIHBvaW50ZXJzLiAgVGhleSBhcmUgdXNlbGVzcyBhcyB0aGV5IAotCSAqIGN1cnJlbnRseSBwb2ludCB0byB0aGUgaWNtcCBzeXN0ZW0gc3RhdHMgY2FjaGUJCi0JICogc2luY2UgSSBzZWUgbGl0dGxlIHBvaW50IGluIHJlZ2lzdGVyaW5nIGFub3RoZXIKLQkgKiBjYWNoZSBmb3IgdGhpcyB0YWJsZS4gIEl0cyBub3QgcmVhbGx5IG5lZWRlZAotCSAqLworICAgIC8qCisgICAgICogbm90ZSBkb24ndCBib3RoZXIgdXNpbmcgdGhlIHBhc3NlZCBpbiBjYWNoZQorICAgICAqIGFuZCB2bWFnaWMgcG9pbnRlcnMuICBUaGV5IGFyZSB1c2VsZXNzIGFzIHRoZXkgCisgICAgICogY3VycmVudGx5IHBvaW50IHRvIHRoZSBpY21wIHN5c3RlbSBzdGF0cyBjYWNoZQkKKyAgICAgKiBzaW5jZSBJIHNlZSBsaXR0bGUgcG9pbnQgaW4gcmVnaXN0ZXJpbmcgYW5vdGhlcgorICAgICAqIGNhY2hlIGZvciB0aGlzIHRhYmxlLiAgSXRzIG5vdCByZWFsbHkgbmVlZGVkCisgICAgICovCiAKLQlpbnQgaTsKLQlzdHJ1Y3QgaWNtcF9taWIgdjRpY21wOwotCXN0cnVjdCBpY21wNl9taWIgdjZpY21wOwotCWZvcihpPTA7aTwyO2krKykgewotCQlzd2l0Y2goaSkgewotCQkJY2FzZSAwOgotCQkJCWxpbnV4X3JlYWRfaWNtcF9zdGF0KCZ2NGljbXApOwotCQkJCWljbXBfc3RhdHNfdGFibGVbaV0uaWNtcFN0YXRzSW5Nc2dzID0gdjRpY21wLmljbXBJbk1zZ3M7Ci0JCQkJaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNJbkVycm9ycyA9IHY0aWNtcC5pY21wSW5FcnJvcnM7Ci0JCQkJaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNPdXRNc2dzID0gdjRpY21wLmljbXBPdXRNc2dzOwotCQkJCWljbXBfc3RhdHNfdGFibGVbaV0uaWNtcFN0YXRzT3V0RXJyb3JzID0gdjRpY21wLmljbXBPdXRFcnJvcnM7Ci0JCQkJYnJlYWs7Ci0JCQlkZWZhdWx0OgotCQkJCW1lbXNldCgmaWNtcF9zdGF0c190YWJsZVtpXSwwLAotCQkJCQlzaXplb2Yoc3RydWN0IGljbXBfc3RhdHNfdGFibGVfZW50cnkpKTsKLQkJCQlsaW51eF9yZWFkX2ljbXA2X3N0YXQoJnY2aWNtcCk7Ci0JCQkJaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNJbk1zZ3MgPSB2NmljbXAuaWNtcDZJbk1zZ3M7Ci0JCQkJaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNJbkVycm9ycyA9IHY2aWNtcC5pY21wNkluRXJyb3JzOwotCQkJCWljbXBfc3RhdHNfdGFibGVbaV0uaWNtcFN0YXRzT3V0TXNncyA9IHY2aWNtcC5pY21wNk91dE1zZ3M7Ci0JCQkJaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNPdXRFcnJvcnMgPSB2NmljbXAuaWNtcDZPdXREZXN0VW5yZWFjaHMgKwotCQkJCQl2NmljbXAuaWNtcDZPdXRQa3RUb29CaWdzICsgIHY2aWNtcC5pY21wNk91dFRpbWVFeGNkcyArCi0JCQkJCXY2aWNtcC5pY21wNk91dFBhcm1Qcm9ibGVtczsKLQkJCQlicmVhazsKLQkJfQotCQlpY21wX3N0YXRzX3RhYmxlW2ldLmlwVmVyPWkrMTsKLQl9CisgICAgaW50IGk7CisgICAgSUNNUF9TVEFUX1NUUlVDVFVSRSB2NGljbXA7CisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorICAgIHN0cnVjdCBpY21wNl9taWIgdjZpY21wOworI2VuZGlmCisgICAgZm9yKGkgPSAwOyBpIDwgMjsgaSsrKSB7CisgICAgICAgIHN3aXRjaChpKSB7CisgICAgICAgIGNhc2UgMDoKKyNpZmRlZiBsaW51eAorICAgICAgICAgICAgbGludXhfcmVhZF9pY21wX3N0YXQoJnY0aWNtcCk7CisjZWxpZiBkZWZpbmVkKE5FVEJTRF9TVEFUU19WSUFfU1lTQ1RMKQorCSAgICBuZXRic2RfcmVhZF9pY21wX3N0YXQoJnY0aWNtcCk7CisjZWxpZiAoZGVmaW5lZChORVRTTk1QX0NBTl9VU0VfU1lTQ1RMKSAmJiBkZWZpbmVkKElDTVBDVExfU1RBVFMpKQorCSAgICBzeXNjdGxfcmVhZF9pY21wX3N0YXQoJnY0aWNtcCk7CisjZWxpZiBkZWZpbmVkKHNvbGFyaXMyKQorCSAgICBzb2xhcmlzX3JlYWRfaWNtcF9zdGF0KCZ2NGljbXApOworI2Vsc2UKKwkgICAgcmV0dXJuIC0xOworI2VuZGlmCisgICAgICAgICAgICBpY21wX3N0YXRzX3RhYmxlW2ldLmljbXBTdGF0c0luTXNncyA9IHY0aWNtcC5pY21wSW5Nc2dzOworICAgICAgICAgICAgaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNJbkVycm9ycyA9IHY0aWNtcC5pY21wSW5FcnJvcnM7CisgICAgICAgICAgICBpY21wX3N0YXRzX3RhYmxlW2ldLmljbXBTdGF0c091dE1zZ3MgPSB2NGljbXAuaWNtcE91dE1zZ3M7CisgICAgICAgICAgICBpY21wX3N0YXRzX3RhYmxlW2ldLmljbXBTdGF0c091dEVycm9ycyA9IHY0aWNtcC5pY21wT3V0RXJyb3JzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMToKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgICAgICAgICBtZW1zZXQoJmljbXBfc3RhdHNfdGFibGVbaV0sMCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBpY21wX3N0YXRzX3RhYmxlX2VudHJ5KSk7CisjaWZkZWYgbGludXgKKyAgICAgICAgICAgIGxpbnV4X3JlYWRfaWNtcDZfc3RhdCgmdjZpY21wKTsKKyNlbGlmIGRlZmluZWQoTkVUQlNEX1NUQVRTX1ZJQV9TWVNDVEwpCisJICAgIG5ldGJzZF9yZWFkX2ljbXA2X3N0YXQoJnY2aWNtcCk7CisjZWxpZiAoZGVmaW5lZChORVRTTk1QX0NBTl9VU0VfU1lTQ1RMKSAmJiBkZWZpbmVkKElDTVBDVExfU1RBVFMpKQorCSAgICBzeXNjdGxfcmVhZF9pY21wNl9zdGF0KCZ2NmljbXApOworI2VsaWYgZGVmaW5lZChzb2xhcmlzMikKKwkgICAgc29sYXJpc19yZWFkX2ljbXA2X3N0YXQoJnY2aWNtcCk7CisjZWxzZQorCSAgICByZXR1cm4gLTE7CisjZW5kaWYKKyAgICAgICAgICAgIGljbXBfc3RhdHNfdGFibGVbaV0uaWNtcFN0YXRzSW5Nc2dzID0gdjZpY21wLmljbXA2SW5Nc2dzOworICAgICAgICAgICAgaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNJbkVycm9ycyA9IHY2aWNtcC5pY21wNkluRXJyb3JzOworICAgICAgICAgICAgaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNPdXRNc2dzID0gdjZpY21wLmljbXA2T3V0TXNnczsKKyAgICAgICAgICAgIGljbXBfc3RhdHNfdGFibGVbaV0uaWNtcFN0YXRzT3V0RXJyb3JzID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHY2aWNtcC5pY21wNk91dERlc3RVbnJlYWNocyArCisgICAgICAgICAgICAgICAgICAgICAgICB2NmljbXAuaWNtcDZPdXRQa3RUb29CaWdzICsgIHY2aWNtcC5pY21wNk91dFRpbWVFeGNkcyArCisgICAgICAgICAgICAgICAgICAgICAgICB2NmljbXAuaWNtcDZPdXRQYXJtUHJvYmxlbXM7CisjZW5kaWYJLyogTkVUU05NUF9FTkFCTEVfSVBWNiAqLworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWNtcF9zdGF0c190YWJsZVtpXS5pcFZlciA9IGkgKyAxOworICAgIH0KIAotCXJldHVybiAwOworICAgIHJldHVybiAwOwogfQogCiBpbnQKIGljbXBfbXNnX3N0YXRzX2xvYWQobmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKnZtYWdpYykKIHsKLSAgICBzdHJ1Y3QgaWNtcF9taWIgdjRpY21wOworICAgIElDTVBfU1RBVF9TVFJVQ1RVUkUgdjRpY21wOwogICAgIHN0cnVjdCBpY21wNF9tc2dfbWliIHY0aWNtcG1zZzsKICNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CiAgICAgc3RydWN0IGljbXA2X21pYiB2NmljbXA7CiAgICAgc3RydWN0IGljbXA2X21zZ19taWIgdjZpY21wbXNnOwogI2VuZGlmCi0gICAgaW50IGksIGosIGssIGZsYWcsIGluYzsKKyAgICBpbnQgaSwgaywgZmxhZywgaW5jOwogCiAgICAgbWVtc2V0KCZpY21wX21zZ19zdGF0c190YWJsZSwgMCwgc2l6ZW9mKGljbXBfbXNnX3N0YXRzX3RhYmxlKSk7CiAKQEAgLTE4NSw3ICsyOTksMTcgQEAKICAgICBmbGFnID0gMDsKICAgICBrID0gMDsKICAgICBpbmMgPSAwOworI2lmZGVmIGxpbnV4CiAgICAgbGludXhfcmVhZF9pY21wX21zZ19zdGF0KCZ2NGljbXAsICZ2NGljbXBtc2csICZmbGFnKTsKKyNlbGlmIGRlZmluZWQoTkVUQlNEX1NUQVRTX1ZJQV9TWVNDVEwpCisgICAgbmV0YnNkX3JlYWRfaWNtcF9tc2dfc3RhdCgmdjRpY21wLCAmdjRpY21wbXNnLCAmZmxhZyk7CisjZWxpZiAoZGVmaW5lZChORVRTTk1QX0NBTl9VU0VfU1lTQ1RMKSAmJiBkZWZpbmVkKElDTVBDVExfU1RBVFMpKQorICAgIHN5c2N0bF9yZWFkX2ljbXBfbXNnX3N0YXQoJnY0aWNtcCwgJnY0aWNtcG1zZywgJmZsYWcpOworI2VsaWYgZGVmaW5lZChzb2xhcmlzMikKKyAgICBzb2xhcmlzX3JlYWRfaWNtcF9tc2dfc3RhdCgmdjRpY21wLCAmdjRpY21wbXNnLCAmZmxhZyk7CisjZWxzZQorICAgIHJldHVybiAtMTsKKyNlbmRpZgogICAgIGlmIChmbGFnKSB7CiAgICAgICAgIHdoaWxlICgyNTUgPj0gaykgewogICAgICAgICAgICAgaWYgKHY0aWNtcG1zZy52YWxzW2tdLkluVHlwZSkgewpAQCAtMjEyLDcwICszMzYsOTYgQEAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfRUNIT1JFUExZOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluRWNob1JlcHM7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NGljbXAuaWNtcE91dEVjaG9SZXBzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMTsKICAgICAgICAgaSsrOwogCiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QX0RFU1RfVU5SRUFDSDsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjRpY21wLmljbXBJbkRlc3RVbnJlYWNoczsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0RGVzdFVucmVhY2hzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMTsKICAgICAgICAgaSsrOwogCiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QX1NPVVJDRV9RVUVOQ0g7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY0aWNtcC5pY21wSW5TcmNRdWVuY2hzOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjRpY21wLmljbXBPdXRTcmNRdWVuY2hzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMTsKICAgICAgICAgaSsrOwogCiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QX1JFRElSRUNUOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluUmVkaXJlY3RzOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjRpY21wLmljbXBPdXRSZWRpcmVjdHM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAxOwogICAgICAgICBpKys7CiAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfRUNITzsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjRpY21wLmljbXBJbkVjaG9zOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjRpY21wLmljbXBPdXRFY2hvczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDE7CiAgICAgICAgIGkrKzsKIAogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUF9USU1FX0VYQ0VFREVEOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluVGltZUV4Y2RzOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjRpY21wLmljbXBPdXRUaW1lRXhjZHM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAxOwogICAgICAgICBpKys7CiAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfUEFSQU1FVEVSUFJPQjsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjRpY21wLmljbXBJblBhcm1Qcm9iczsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0UGFybVByb2JzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMTsKICAgICAgICAgaSsrOwogCiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QX1RJTUVTVEFNUDsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjRpY21wLmljbXBJblRpbWVzdGFtcHM7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NGljbXAuaWNtcE91dFRpbWVzdGFtcHM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAxOwogICAgICAgICBpKys7CiAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfVElNRVNUQU1QUkVQTFk7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY0aWNtcC5pY21wSW5UaW1lc3RhbXBSZXBzOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjRpY21wLmljbXBPdXRUaW1lc3RhbXBSZXBzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMTsKICAgICAgICAgaSsrOwogCiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QX0FERFJFU1M7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY0aWNtcC5pY21wSW5BZGRyTWFza3M7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NGljbXAuaWNtcE91dEFkZHJNYXNrczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDE7CiAgICAgICAgIGkrKzsKIAogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUF9BRERSRVNTUkVQTFk7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY0aWNtcC5pY21wSW5BZGRyTWFza1JlcHM7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NGljbXAuaWNtcE91dEFkZHJNYXNrUmVwczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDE7CiAgICAgICAgIGkrKzsKLQotICAgICAgICAvKiBzZXQgdGhlIElQIHZlcnNpb24gYW5kIGRlZmF1bHQgZmxhZ3MgKi8KLSAgICAgICAgZm9yIChqID0gMDsgaiA8IElDTVBfTVNHX1NUQVRTX0lQVjRfQ09VTlQ7IGorKykgewotICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbal0uaXBWZXIgPSAxOwotICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbal0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOwotICAgICAgICB9CiAgICAgfQogCiAjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgogICAgIGZsYWcgPSAwOwogICAgIGsgPSAwOwogICAgIGluYyA9IDA7CisjaWZkZWYgbGludXgKICAgICBsaW51eF9yZWFkX2ljbXA2X21zZ19zdGF0KCZ2NmljbXAsICZ2NmljbXBtc2csICZmbGFnKTsKKyNlbGlmIGRlZmluZWQoTkVUQlNEX1NUQVRTX1ZJQV9TWVNDVEwpCisgICAgbmV0YnNkX3JlYWRfaWNtcDZfbXNnX3N0YXQoJnY2aWNtcCwgJnY2aWNtcG1zZywgJmZsYWcpOworI2VsaWYgKGRlZmluZWQoTkVUU05NUF9DQU5fVVNFX1NZU0NUTCkgJiYgZGVmaW5lZChJQ01QQ1RMX1NUQVRTKSkKKyAgICBzeXNjdGxfcmVhZF9pY21wNl9tc2dfc3RhdCgmdjZpY21wLCAmdjZpY21wbXNnLCAmZmxhZyk7CisjZWxpZiBkZWZpbmVkKHNvbGFyaXMyKQorICAgIHNvbGFyaXNfcmVhZF9pY21wNl9tc2dfc3RhdCgmdjZpY21wLCAmdjZpY21wbXNnLCAmZmxhZyk7CisjZWxzZQorICAgIHJldHVybiAtMTsKKyNlbmRpZgogICAgIGlmIChmbGFnKSB7CiAgICAgICAgIHdoaWxlICgyNTUgPj0gaykgewogICAgICAgICAgICAgaWYgKHY2aWNtcG1zZy52YWxzW2tdLkluVHlwZSkgewpAQCAtMzAyLDgwICs0NTIsMTAxIEBACiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QNl9EU1RfVU5SRUFDSDsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5EZXN0VW5yZWFjaHM7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXREZXN0VW5yZWFjaHM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMjsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOwogICAgICAgICBpKys7CiAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVA2X1BBQ0tFVF9UT09fQklHOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJblBrdFRvb0JpZ3M7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXRQa3RUb29CaWdzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDI7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKICAgICAgICAgaSsrOwogCiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QNl9USU1FX0VYQ0VFREVEOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJblRpbWVFeGNkczsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY2aWNtcC5pY21wNk91dFRpbWVFeGNkczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAyOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CiAgICAgICAgIGkrKzsKIAogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUDZfUEFSQU1fUFJPQjsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5QYXJtUHJvYmxlbXM7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXRQYXJtUHJvYmxlbXM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMjsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOwogICAgICAgICBpKys7CiAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVA2X0VDSE9fUkVRVUVTVDsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5FY2hvczsKLSAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IDA7Ci0gICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wLmljbXA2T3V0RWNob3M7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMjsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOwogICAgICAgICBpKys7CiAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVA2X0VDSE9fUkVQTFk7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluRWNob1JlcGxpZXM7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXRFY2hvUmVwbGllczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAyOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CiAgICAgICAgIGkrKzsKIAogI2lmZGVmIE1MRF9MSVNURU5FUl9RVUVSWQogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gTUxEX0xJU1RFTkVSX1FVRVJZOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJbkdyb3VwTWVtYlF1ZXJpZXM7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSAwOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDI7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOOwogICAgICAgICBpKys7CisKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IE1MRF9MSVNURU5FUl9SRVBPUlQ7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluR3JvdXBNZW1iUmVzcG9uc2VzOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wLmljbXA2T3V0R3JvdXBNZW1iUmVzcG9uc2VzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDI7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKICAgICAgICAgaSsrOwogCiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBNTERfTElTVEVORVJfUkVEVUNUSU9OOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJbkdyb3VwTWVtYlJlZHVjdGlvbnM7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXRHcm91cE1lbWJSZWR1Y3Rpb25zOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDI7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKICAgICAgICAgaSsrOwotI2VuZGlmCiAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IE5EX1JPVVRFUl9TT0xJQ0lUOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJblJvdXRlclNvbGljaXRzOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wLmljbXA2T3V0Um91dGVyU29saWNpdHM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMjsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOwogICAgICAgICBpKys7CiAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IE5EX1JPVVRFUl9BRFZFUlQ7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluUm91dGVyQWR2ZXJ0aXNlbWVudHM7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSAwOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDI7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOOwogICAgICAgICBpKys7CiAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IE5EX05FSUdIQk9SX1NPTElDSVQ7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluTmVpZ2hib3JTb2xpY2l0czsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY2aWNtcC5pY21wNk91dE5laWdoYm9yU29saWNpdHM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMjsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOwogICAgICAgICBpKys7CiAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IE5EX05FSUdIQk9SX0FEVkVSVDsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5OZWlnaGJvckFkdmVydGlzZW1lbnRzOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wLmljbXA2T3V0TmVpZ2hib3JBZHZlcnRpc2VtZW50czsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAyOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CiAgICAgICAgIGkrKzsKIAogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gTkRfUkVESVJFQ1Q7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluUmVkaXJlY3RzOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wLmljbXA2T3V0UmVkaXJlY3RzOwotCi0gICAgICAgIGZvciAoaiA9IDA7IGogPCBJQ01QX01TR19TVEFUU19JUFY2X0NPVU5UOyBqKyspIHsKLSAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW0lDTVBfTVNHX1NUQVRTX0lQVjRfQ09VTlQgKyBqXS5pcFZlciA9IDI7Ci0gICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtJQ01QX01TR19TVEFUU19JUFY0X0NPVU5UICsgal0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOwotICAgICAgICB9CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMjsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOworI2VuZGlmCiAgICAgfQogI2VuZGlmIC8qIE5FVFNOTVBfRU5BQkxFX0lQVjYgKi8KICAgICByZXR1cm4gMDsKQEAgLTM4NywyNSArNTU4LDI1IEBACiAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICpkYXRhKQogewotCWludCBpID0gKGludCkoaW50cHRyX3QpKCpsb29wX2NvbnRleHQpOwotCW5ldHNubXBfdmFyaWFibGVfbGlzdCAqaWR4ID0gaW5kZXg7CisgICAgaW50IGkgPSAoaW50KShpbnRwdHJfdCkoKmxvb3BfY29udGV4dCk7CisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICppZHggPSBpbmRleDsKIAotCWlmKGkgPiAxKQotCQlyZXR1cm4gTlVMTDsKKyAgICBpZihpID4gMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKIAotCS8qCi0JICpzZXQgSVAgdmVyc2lvbgotCSAqLwotCXNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShpZHgsIEFTTl9JTlRFR0VSLCAodV9jaGFyICopJmljbXBfc3RhdHNfdGFibGVbaV0uaXBWZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih1aW50MzJfdCkpOwotCWlkeCA9IGlkeC0+bmV4dF92YXJpYWJsZTsKKyAgICAvKgorICAgICAqc2V0IElQIHZlcnNpb24KKyAgICAgKi8KKyAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUoaWR4LCBBU05fSU5URUdFUiwgKHVfY2hhciAqKSZpY21wX3N0YXRzX3RhYmxlW2ldLmlwVmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih1aW50MzJfdCkpOworICAgIGlkeCA9IGlkeC0+bmV4dF92YXJpYWJsZTsKIAotCSpkYXRhX2NvbnRleHQgPSAmaWNtcF9zdGF0c190YWJsZVtpXTsKKyAgICAqZGF0YV9jb250ZXh0ID0gJmljbXBfc3RhdHNfdGFibGVbaV07CiAKLQkqbG9vcF9jb250ZXh0ID0gKHZvaWQgKikoaW50cHRyX3QpKCsraSk7Ci0JCi0JcmV0dXJuIGluZGV4OworICAgICpsb29wX2NvbnRleHQgPSAodm9pZCAqKShpbnRwdHJfdCkoKytpKTsKKyAgICAKKyAgICByZXR1cm4gaW5kZXg7CiB9CiAKIApAQCAtNDE1LDEwICs1ODYsOSBAQAogICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICppbmRleCwKICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqZGF0YSkKIHsKLQotICAgICAgICAqbG9vcF9jb250ZXh0ID0gTlVMTDsKLSAgICAgICAgKmRhdGFfY29udGV4dCA9IE5VTEw7Ci0gICAgICAgIHJldHVybiBpY21wX3N0YXRzX25leHRfZW50cnkobG9vcF9jb250ZXh0LCBkYXRhX2NvbnRleHQsIGluZGV4LCBkYXRhKTsKKyAgICAqbG9vcF9jb250ZXh0ID0gTlVMTDsKKyAgICAqZGF0YV9jb250ZXh0ID0gTlVMTDsKKyAgICByZXR1cm4gaWNtcF9zdGF0c19uZXh0X2VudHJ5KGxvb3BfY29udGV4dCwgZGF0YV9jb250ZXh0LCBpbmRleCwgZGF0YSk7CiB9CiAKIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqCkBAIC00NjYsMTMgKzYzNiwxMyBAQAogdm9pZAogaW5pdF9pY21wKHZvaWQpCiB7Ci0jaWZkZWYgbGludXgKLSAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICp0YWJsZV9yZWdpbmZvID0gTlVMTDsKKyNpZmRlZiBVU0VTX1NOTVBfREVTSUdORURfSUNNUFNUQVQKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICptc2dfc3RhdHNfcmVnaW5mbyA9IE5VTEw7Ci0gICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICppaW5mbyA9IE5VTEw7Ci0gICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICptc2dfc3RhdHNfaWluZm8gPSBOVUxMOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8gPSBOVUxMOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKm1zZ19zdGF0c190YWJsZV9pbmZvID0gTlVMTDsKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICp0YWJsZV9yZWdpbmZvID0gTlVMTDsKKyAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKmlpbmZvOworICAgIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqbXNnX3N0YXRzX2lpbmZvOworICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqbXNnX3N0YXRzX3RhYmxlX2luZm87CiAjZW5kaWYKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpzY2FsYXJfcmVnaW5mbyA9IE5VTEw7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICByYzsKQEAgLTQ4MywxNCArNjUzLDkgQEAKICAgICBERUJVR01TR1RMKCgibWliSUkvaWNtcCIsICJJbml0aWFsaXNpbmcgSUNNUCBncm91cFxuIikpOwogICAgIHNjYWxhcl9yZWdpbmZvID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oImljbXAiLCBpY21wX2hhbmRsZXIsCiAJCSAgICBpY21wX29pZCwgT0lEX0xFTkdUSChpY21wX29pZCksIEhBTkRMRVJfQ0FOX1JPTkxZKTsKLSAgICBpZiAoIXNjYWxhcl9yZWdpbmZvKQotICAgICAgICByZXR1cm47Ci0KICAgICByYyA9IG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyX2dyb3VwKHNjYWxhcl9yZWdpbmZvLCBJQ01QSU5NU0dTLCBJQ01QT1VUQUREUk1BU0tSRVBTKTsKLSAgICBpZiAocmMgIT0gU05NUEVSUl9TVUNDRVNTKSB7CisgICAgaWYgKHJjICE9IFNOTVBFUlJfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIC8qCiAgICAgICogLi4uLiB3aXRoIGEgbG9jYWwgY2FjaGUKICAgICAgKiAgICAoZXhjZXB0IGZvciBIUC1VWCAxMSwgd2hpY2ggZXh0cmFjdHMgb2JqZWN0cyBpbmRpdmlkdWFsbHkpCkBAIC01MDEsMjUgKzY2NiwyMiBAQAogCQkJICAgCQlpY21wX2xvYWQsIGljbXBfZnJlZSwKIAkJCQkJaWNtcF9vaWQsIE9JRF9MRU5HVEgoaWNtcF9vaWQpKSk7CiAgICAgaWYgKHJjICE9IFNOTVBFUlJfU1VDQ0VTUykKLSAgICAgICAgZ290byBiYWlsOworCWdvdG8gYmFpbDsKICNlbmRpZgotI2lmZGVmIGxpbnV4CisjaWZkZWYgVVNFU19TTk1QX0RFU0lHTkVEX0lDTVBTVEFUCiAKICAgICAvKiByZWdpc3RlciBpY21wU3RhdHNUYWJsZSAqLwotCiAgICAgdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CiAgICAgaWYgKCF0YWJsZV9pbmZvKQogICAgICAgICBnb3RvIGJhaWw7Ci0KICAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLCBBU05fSU5URUdFUiwgMCk7CiAgICAgdGFibGVfaW5mby0+bWluX2NvbHVtbiA9IElDTVBfU1RBVF9JTk1TRzsKICAgICB0YWJsZV9pbmZvLT5tYXhfY29sdW1uID0gSUNNUF9TVEFUX09VVEVSUjsKIAogCiAgICAgaWluZm8gICAgICA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9pdGVyYXRvcl9pbmZvKTsKLSAgICBpZiAoIWlpbmZvKSAKKyAgICBpZiAoIWlpbmZvKQogICAgICAgICBnb3RvIGJhaWw7Ci0KICAgICBpaW5mby0+Z2V0X2ZpcnN0X2RhdGFfcG9pbnQgPSBpY21wX3N0YXRzX2ZpcnN0X2VudHJ5OwogICAgIGlpbmZvLT5nZXRfbmV4dF9kYXRhX3BvaW50ICA9IGljbXBfc3RhdHNfbmV4dF9lbnRyeTsKICAgICBpaW5mby0+dGFibGVfcmVnaW5mbyAgICAgICAgPSB0YWJsZV9pbmZvOwpAQCAtNTI3LDIwICs2ODksMjEgQEAKICAgICB0YWJsZV9yZWdpbmZvID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oImljbXBTdGF0c1RhYmxlIiwKIAkJaWNtcF9zdGF0c190YWJsZV9oYW5kbGVyLCBpY21wX3N0YXRzX3RibF9vaWQsCiAJCU9JRF9MRU5HVEgoaWNtcF9zdGF0c190Ymxfb2lkKSwgSEFORExFUl9DQU5fUk9OTFkpOwotICAgIGlmICghdGFibGVfcmVnaW5mbykKLSAgICAgICAgZ290byBiYWlsOwogCi0gICAgcmMgPSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yKHRhYmxlX3JlZ2luZm8sIGlpbmZvKTsKKyAgICByYyA9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IyKHRhYmxlX3JlZ2luZm8sIGlpbmZvKTsKICAgICBpZiAocmMgIT0gU05NUEVSUl9TVUNDRVNTKSB7CiAgICAgICAgIHRhYmxlX3JlZ2luZm8gPSBOVUxMOwogICAgICAgICBnb3RvIGJhaWw7CiAgICAgfQorICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIoIHRhYmxlX3JlZ2luZm8sCisgICAgICAgICAgICBuZXRzbm1wX2dldF9jYWNoZV9oYW5kbGVyKElDTVBfU1RBVFNfQ0FDSEVfVElNRU9VVCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGljbXBfbG9hZCwgaWNtcF9mcmVlLAorICAgICAgICAgICAgICAgICAgICAgICAgaWNtcF9zdGF0c190Ymxfb2lkLCBPSURfTEVOR1RIKGljbXBfc3RhdHNfdGJsX29pZCkpKTsKIAogICAgIC8qIHJlZ2lzdGVyIGljbXBNc2dTdGF0c1RhYmxlICovCiAgICAgbXNnX3N0YXRzX3RhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8pOwogICAgIGlmICghbXNnX3N0YXRzX3RhYmxlX2luZm8pCiAgICAgICAgIGdvdG8gYmFpbDsKLQogICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKG1zZ19zdGF0c190YWJsZV9pbmZvLCBBU05fSU5URUdFUiwgQVNOX0lOVEVHRVIsIDApOwogICAgIG1zZ19zdGF0c190YWJsZV9pbmZvLT5taW5fY29sdW1uID0gSUNNUF9NU0dfU1RBVF9JTl9QS1RTOwogICAgIG1zZ19zdGF0c190YWJsZV9pbmZvLT5tYXhfY29sdW1uID0gSUNNUF9NU0dfU1RBVF9PVVRfUEtUUzsKQEAgLTU0OCw3ICs3MTEsNiBAQAogICAgIG1zZ19zdGF0c19paW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9pdGVyYXRvcl9pbmZvKTsKICAgICBpZiAoIW1zZ19zdGF0c19paW5mbykKICAgICAgICAgZ290byBiYWlsOwotCiAgICAgbXNnX3N0YXRzX2lpbmZvLT5nZXRfZmlyc3RfZGF0YV9wb2ludCA9IGljbXBfbXNnX3N0YXRzX2ZpcnN0X2VudHJ5OwogICAgIG1zZ19zdGF0c19paW5mby0+Z2V0X25leHRfZGF0YV9wb2ludCAgPSBpY21wX21zZ19zdGF0c19uZXh0X2VudHJ5OwogICAgIG1zZ19zdGF0c19paW5mby0+dGFibGVfcmVnaW5mbyAgICAgICAgPSBtc2dfc3RhdHNfdGFibGVfaW5mbzsKQEAgLTU1NiwyNiArNzE4LDE4IEBACiAgICAgbXNnX3N0YXRzX3JlZ2luZm8gPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigiaWNtcE1zZ1N0YXRzVGFibGUiLAogICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVfaGFuZGxlciwgaWNtcF9tc2dfc3RhdHNfdGJsX29pZCwKICAgICAgICAgICAgIE9JRF9MRU5HVEgoaWNtcF9tc2dfc3RhdHNfdGJsX29pZCksIEhBTkRMRVJfQ0FOX1JPTkxZKTsKLSAgICBpZiAoIW1zZ19zdGF0c19yZWdpbmZvKQotICAgICAgICBnb3RvIGJhaWw7CiAKLSAgICByYyA9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IobXNnX3N0YXRzX3JlZ2luZm8sIG1zZ19zdGF0c19paW5mbyk7CisgICAgcmMgPSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yMihtc2dfc3RhdHNfcmVnaW5mbywgbXNnX3N0YXRzX2lpbmZvKTsKICAgICBpZiAocmMgIT0gU05NUEVSUl9TVUNDRVNTKSB7CiAgICAgICAgIG1zZ19zdGF0c19yZWdpbmZvID0gTlVMTDsKICAgICAgICAgZ290byBiYWlsOwogICAgIH0KLSAgICAKKwogICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIoIG1zZ19zdGF0c19yZWdpbmZvLAogICAgICAgICAgICAgbmV0c25tcF9nZXRfY2FjaGVfaGFuZGxlcihJQ01QX1NUQVRTX0NBQ0hFX1RJTUVPVVQsCiAgICAgICAgICAgICAgICAgaWNtcF9sb2FkLCBpY21wX2ZyZWUsCiAgICAgICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGJsX29pZCwgT0lEX0xFTkdUSChpY21wX21zZ19zdGF0c190Ymxfb2lkKSkpOwotI2lmbmRlZiBocHV4MTEKLSAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKCB0YWJsZV9yZWdpbmZvLAotCQkgICAgbmV0c25tcF9nZXRfY2FjaGVfaGFuZGxlcihJQ01QX1NUQVRTX0NBQ0hFX1RJTUVPVVQsCi0JCQkgICAJCWljbXBfbG9hZCwgaWNtcF9mcmVlLAotCQkJCQlpY21wX3N0YXRzX3RibF9vaWQsIE9JRF9MRU5HVEgoaWNtcF9zdGF0c190Ymxfb2lkKSkpOwotI2VuZGlmIC8qICEgaHB1eDExICovCi0jZW5kaWYgLyogbGludXggKi8KKyNlbmRpZiAvKiBVU0VTX1NOTVBfREVTSUdORURfSUNNUFNUQVQgKi8KIAogI2lmZGVmIFVTSU5HX01JQklJX0lQX01PRFVMRQogICAgIGlmICgrK2lwX21vZHVsZV9jb3VudCA9PSAyKQpAQCAtNTk2LDcgKzc1MCw3IEBACiAjaWZuZGVmIGhwdXgxMQogYmFpbDoKICNlbmRpZgotI2lmZGVmIGxpbnV4CisjaWZkZWYgVVNFU19TTk1QX0RFU0lHTkVEX0lDTVBTVEFUCiAgICAgaWYgKG1zZ19zdGF0c19yZWdpbmZvKQogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2ZyZWUobXNnX3N0YXRzX3JlZ2luZm8pOwogICAgIGlmICh0YWJsZV9yZWdpbmZvKQpAQCAtNjEzLDQ4ICs3NjcsNiBAQAogCSAqCiAJICoqKioqKioqKioqKioqKioqKioqKi8KIAotI2lmZGVmIGhwdXgxMQotI2RlZmluZSBJQ01QX1NUQVRfU1RSVUNUVVJFCWludAotI2VuZGlmCi0KLSNpZmRlZiBsaW51eAotI2RlZmluZSBJQ01QX1NUQVRfU1RSVUNUVVJFCXN0cnVjdCBpY21wX21pYgotI2RlZmluZSBVU0VTX1NOTVBfREVTSUdORURfSUNNUFNUQVQKLSN1bmRlZiBJQ01QU1RBVF9TWU1CT0wKLSNlbmRpZgotCi0jaWZkZWYgc29sYXJpczIKLSNkZWZpbmUgSUNNUF9TVEFUX1NUUlVDVFVSRQltaWIyX2ljbXBfdAotI2RlZmluZSBVU0VTX1NOTVBfREVTSUdORURfSUNNUFNUQVQKLSNlbmRpZgotCi0jaWZkZWYgTkVUQlNEX1NUQVRTX1ZJQV9TWVNDVEwKLSNkZWZpbmUgSUNNUF9TVEFUX1NUUlVDVFVSRSAgICAgc3RydWN0IGljbXBfbWliCi0jZGVmaW5lIFVTRVNfU05NUF9ERVNJR05FRF9JQ01QU1RBVAotI3VuZGVmIElDTVBfTlNUQVRTCi0jZW5kaWYKLQotI2lmZGVmIEhBVkVfSVBITFBBUElfSAotI2luY2x1ZGUgPGlwaGxwYXBpLmg+Ci0jZGVmaW5lIElDTVBfU1RBVF9TVFJVQ1RVUkUgTUlCX0lDTVAKLSNlbmRpZgotCi0vKiA/PyAjaWYgKGRlZmluZWQoTkVUU05NUF9DQU5fVVNFX1NZU0NUTCkgJiYgZGVmaW5lZChJQ01QQ1RMX1NUQVRTKSkgPz8gKi8KLQotI2lmZGVmIEhBVkVfU1lTX0lDTVBJUFNUQVRTX0gKLS8qIG9yICNpZmRlZgkJSEFWRV9TWVNfVENQSVBTVEFUU19IICA/Pz8gKi8KLSNkZWZpbmUgSUNNUF9TVEFUX1NUUlVDVFVSRQlzdHJ1Y3Qga25hCi0jZGVmaW5lIFVTRVNfVFJBRElUSU9OQUxfSUNNUFNUQVQKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoSUNNUF9TVEFUX1NUUlVDVFVSRSkKLSNkZWZpbmUgSUNNUF9TVEFUX1NUUlVDVFVSRQlzdHJ1Y3QgaWNtcHN0YXQKLSNkZWZpbmUgVVNFU19UUkFESVRJT05BTF9JQ01QU1RBVAotI2VuZGlmCi0KLUlDTVBfU1RBVF9TVFJVQ1RVUkUgaWNtcHN0YXQ7Ci0KLQogICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCiAJICoKIAkgKiAgU3lzdGVtIGluZGVwZW5kZW50IGhhbmRsZXIKQEAgLTY3Miw5ICs3ODQsNiBAQAogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqcmVxdWVzdHZiOwogICAgIGxvbmcgICAgIHJldF92YWx1ZTsKICAgICBvaWQgICAgICBzdWJpZDsKLSNpZmRlZiBVU0VTX1RSQURJVElPTkFMX0lDTVBTVEFUCi0gICAgaW50ICAgICAgaTsKLSNlbmRpZgogCiAgICAgLyoKICAgICAgKiBUaGUgY2FjaGVkIGRhdGEgc2hvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIGxvYWRlZCBieSB0aGUKQEAgLTc4MiwxMyArODkxLDE2IEBACiAgICAgICAgIHJldF92YWx1ZSA9IGljbXBzdGF0LmljbXBPdXRBZGRyTWFza1JlcHM7CiAgICAgICAgIGJyZWFrOwogI2VsaWYgZGVmaW5lZChVU0VTX1RSQURJVElPTkFMX0lDTVBTVEFUKSAmJiAhZGVmaW5lZChfVVNFX1BFUkZTVEFUX1BST1RPQ09MKQotICAgIGNhc2UgSUNNUElOTVNHUzoKKyAgICBjYXNlIElDTVBJTk1TR1M6IHsKKyAgICAgICAgaW50IGk7CisKICAgICAgICAgcmV0X3ZhbHVlID0gaWNtcHN0YXQuaWNwc19iYWRjb2RlICsKICAgICAgICAgICAgIGljbXBzdGF0LmljcHNfdG9vc2hvcnQgKwogICAgICAgICAgICAgaWNtcHN0YXQuaWNwc19jaGVja3N1bSArIGljbXBzdGF0LmljcHNfYmFkbGVuOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IElDTVBfTUFYVFlQRTsgaSsrKQogICAgICAgICAgICAgcmV0X3ZhbHVlICs9IGljbXBzdGF0LmljcHNfaW5oaXN0W2ldOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBJQ01QSU5FUlJPUlM6CiAgICAgICAgIHJldF92YWx1ZSA9IGljbXBzdGF0LmljcHNfYmFkY29kZSArCiAgICAgICAgICAgICBpY21wc3RhdC5pY3BzX3Rvb3Nob3J0ICsKQEAgLTgyNywxMSArOTM5LDE0IEBACiAgICAgY2FzZSBJQ01QSU5BRERSTUFTS1JFUFM6CiAgICAgICAgIHJldF92YWx1ZSA9IGljbXBzdGF0LmljcHNfaW5oaXN0W0lDTVBfTUFTS1JFUExZXTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJQ01QT1VUTVNHUzoKKyAgICBjYXNlIElDTVBPVVRNU0dTOiB7CisgICAgICAgIGludCBpOworCiAgICAgICAgIHJldF92YWx1ZSA9IGljbXBzdGF0LmljcHNfb2xkc2hvcnQgKyBpY21wc3RhdC5pY3BzX29sZGljbXA7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPD0gSUNNUF9NQVhUWVBFOyBpKyspCiAgICAgICAgICAgICByZXRfdmFsdWUgKz0gaWNtcHN0YXQuaWNwc19vdXRoaXN0W2ldOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBJQ01QT1VURVJST1JTOgogICAgICAgICByZXRfdmFsdWUgPSBpY21wc3RhdC5pY3BzX29sZHNob3J0ICsgaWNtcHN0YXQuaWNwc19vbGRpY21wOwogICAgICAgICBicmVhazsKQEAgLTEwMzMsNiArMTE0OCw3IEBACiAKICAgICBjYXNlIE1PREVfR0VUTkVYVDoKICAgICBjYXNlIE1PREVfR0VUQlVMSzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgogICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgpAQCAtMTA0Miw2ICsxMTU4LDcgQEAKICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJtaWJJSS9pY21wOiBVbnN1cHBvcnRlZCBtb2RlICglZClcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxaW5mby0+bW9kZSk7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICBkZWZhdWx0OgogICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIm1pYklJL2ljbXA6IFVucmVjb2duaXNlZCBtb2RlICglZClcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxaW5mby0+bW9kZSk7CkBAIC0xMDUyLDcgKzExNjksNyBAQAogfQogCiAKLSNpZmRlZiBsaW51eAorI2lmZGVmIFVTRVNfU05NUF9ERVNJR05FRF9JQ01QU1RBVAogaW50CiBpY21wX3N0YXRzX3RhYmxlX2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAgKmhhbmRsZXIsCiAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCkBAIC0xMTA1LDYgKzEyMjIsNyBAQAogCQkJYnJlYWs7CiAJCWNhc2UgTU9ERV9HRVRORVhUOgogCQljYXNlIE1PREVfR0VUQlVMSzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAJCWNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAJCWNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CiAJCWNhc2UgTU9ERV9TRVRfQUNUSU9OOgpAQCAtMTExNCw2ICsxMjMyLDcgQEAKIAkJCXNubXBfbG9nKExPR19XQVJOSU5HLCAibWliSUkvaWNtcFN0YXRzVGFibGU6IFVuc3VwcG9ydGVkIG1vZGUgKCVkKVxuIiwKIAkJCQlyZXFpbmZvLT5tb2RlKTsKIAkJCWJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAkJZGVmYXVsdDoKIAkJCXNubXBfbG9nKExPR19XQVJOSU5HLCAibWliSUkvaWNtcFN0YXRzVGFibGU6IFVucmVjb2duaXNlZCBtb2RlICglZClcbiIsCiAJCQkJcmVxaW5mby0+bW9kZSk7CkBAIC0xMTc1LDYgKzEyOTQsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTU9ERV9HRVRORVhUOgogICAgICAgICBjYXNlIE1PREVfR0VUQlVMSzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CiAgICAgICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgpAQCAtMTE4NCw2ICsxMzA0LDcgQEAKICAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAibWliSUkvaWNtcFN0YXRzVGFibGU6IFVuc3VwcG9ydGVkIG1vZGUgKCVkKVxuIiwKICAgICAgICAgICAgICAgICAgICAgcmVxaW5mby0+bW9kZSk7CiAgICAgICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIm1pYklJL2ljbXBTdGF0c1RhYmxlOiBVbnJlY29nbmlzZWQgbW9kZSAoJWQpXG4iLAogICAgICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKQEAgLTExOTMsNyArMTMxNCw3IEBACiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KLSNlbmRpZgkJLyogbGludXggKi8KKyNlbmRpZgkJLyogVVNFU19TTk1QX0RFU0lHTkVEX0lDTVBTVEFUICovCiAKICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKgogCSAqCkBAIC0xMzMyLDcgKzE0NTMsMTEgQEAKIGludAogaWNtcF9sb2FkKG5ldHNubXBfY2FjaGUgKmNhY2hlLCB2b2lkICp2bWFnaWMpCiB7Ci0gICAgbG9uZyAgICAgICAgICAgIHJldF92YWx1ZSA9IC0xOworICAgIGludCByZXRfdmFsdWUgPSAtMTsKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgbWliMl9pcHY2SWZJY21wRW50cnlfdCBpZnN0YXQ7CisgICAgaW50IHJlcSA9IEdFVF9GSVJTVDsKKyNlbmRpZgogCiAgICAgcmV0X3ZhbHVlID0KICAgICAgICAgZ2V0TWlic3RhdChNSUJfSUNNUCwgJmljbXBzdGF0LCBzaXplb2YobWliMl9pY21wX3QpLCBHRVRfRklSU1QsCkBAIC0xMzQzLDggKzE0NjgsODUgQEAKICAgICB9IGVsc2UgewogICAgICAgICBERUJVR01TR1RMKCgibWliSUkvaWNtcCIsICJMb2FkZWQgSUNNUCBHcm91cCAoc29sYXJpcylcbiIpKTsKICAgICB9CisKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgbWVtc2V0KCZpY21wNnN0YXQsIDAsIHNpemVvZihpY21wNnN0YXQpKTsKKyAgICB3aGlsZSAoKHJldF92YWx1ZSA9IGdldE1pYnN0YXQoTUlCX0lDTVA2LCAmaWZzdGF0LCBzaXplb2YoaWZzdGF0KSwgcmVxLAorICAgICAgICAgICAgICAgICAgICZHZXRfZXZlcnl0aGluZywgTlVMTCkpID09IDApIHsKKwlpZiAoIHJldF92YWx1ZSA8IDAgKSB7CisJICAgIERFQlVHTVNHVEwoKCJtaWJJSS9pY21wIiwgIkZhaWxlZCB0byBsb2FkIElDTVA2IEdyb3VwIChzb2xhcmlzKVxuIikpOworCX0gZWxzZSB7CisJICAgIERFQlVHTVNHVEwoKCJtaWJJSS9pY21wIiwgIkxvYWRlZCBJQ01QNiBHcm91cCAoc29sYXJpcylcbiIpKTsKKwl9CisJaWNtcDZzdGF0LmljbXA2T3V0TXNncyArPSBpZnN0YXQuaXB2NklmSWNtcE91dE1zZ3M7CisJaWNtcDZzdGF0LmljbXA2SW5Nc2dzICs9IGlmc3RhdC5pcHY2SWZJY21wSW5Nc2dzOworCWljbXA2c3RhdC5pY21wNkluRXJyb3JzICs9IGlmc3RhdC5pcHY2SWZJY21wSW5FcnJvcnM7CisJaWNtcDZzdGF0LmljbXA2T3V0RGVzdFVucmVhY2hzICs9IGlmc3RhdC5pcHY2SWZJY21wT3V0RGVzdFVucmVhY2hzOworCWljbXA2c3RhdC5pY21wNkluRGVzdFVucmVhY2hzICs9IGlmc3RhdC5pcHY2SWZJY21wSW5EZXN0VW5yZWFjaHM7CisJaWNtcDZzdGF0LmljbXA2T3V0UGt0VG9vQmlncyArPSBpZnN0YXQuaXB2NklmSWNtcE91dFBrdFRvb0JpZ3M7CisJaWNtcDZzdGF0LmljbXA2SW5Qa3RUb29CaWdzICs9IGlmc3RhdC5pcHY2SWZJY21wSW5Qa3RUb29CaWdzOworCWljbXA2c3RhdC5pY21wNk91dFRpbWVFeGNkcyArPSBpZnN0YXQuaXB2NklmSWNtcE91dFRpbWVFeGNkczsKKwlpY21wNnN0YXQuaWNtcDZJblRpbWVFeGNkcyArPSBpZnN0YXQuaXB2NklmSWNtcEluVGltZUV4Y2RzOworCWljbXA2c3RhdC5pY21wNk91dFBhcm1Qcm9ibGVtcyArPSBpZnN0YXQuaXB2NklmSWNtcE91dFBhcm1Qcm9ibGVtczsKKwlpY21wNnN0YXQuaWNtcDZJblBhcm1Qcm9ibGVtcyArPSBpZnN0YXQuaXB2NklmSWNtcEluUGFybVByb2JsZW1zOworCWljbXA2c3RhdC5pY21wNk91dEVjaG9zICs9IGlmc3RhdC5pcHY2SWZJY21wT3V0RWNob3M7CisJaWNtcDZzdGF0LmljbXA2SW5FY2hvcyArPSBpZnN0YXQuaXB2NklmSWNtcEluRWNob3M7CisJaWNtcDZzdGF0LmljbXA2T3V0RWNob1JlcGxpZXMgKz0gaWZzdGF0LmlwdjZJZkljbXBPdXRFY2hvUmVwbGllczsKKwlpY21wNnN0YXQuaWNtcDZJbkVjaG9SZXBsaWVzICs9IGlmc3RhdC5pcHY2SWZJY21wSW5FY2hvUmVwbGllczsKKwlpY21wNnN0YXQuaWNtcDZPdXRSb3V0ZXJTb2xpY2l0cyArPSBpZnN0YXQuaXB2NklmSWNtcE91dFJvdXRlclNvbGljaXRzOworCWljbXA2c3RhdC5pY21wNkluUm91dGVyU29saWNpdHMgKz0gaWZzdGF0LmlwdjZJZkljbXBJblJvdXRlclNvbGljaXRzOworCWljbXA2c3RhdC5pY21wNk91dE5laWdoYm9yQWR2ZXJ0aXNlbWVudHMgKz0gaWZzdGF0LmlwdjZJZkljbXBPdXROZWlnaGJvckFkdmVydGlzZW1lbnRzOworCWljbXA2c3RhdC5pY21wNkluTmVpZ2hib3JBZHZlcnRpc2VtZW50cyArPSBpZnN0YXQuaXB2NklmSWNtcEluTmVpZ2hib3JBZHZlcnRpc2VtZW50czsKKwlpY21wNnN0YXQuaWNtcDZPdXROZWlnaGJvclNvbGljaXRzICs9IGlmc3RhdC5pcHY2SWZJY21wT3V0TmVpZ2hib3JTb2xpY2l0czsKKwlpY21wNnN0YXQuaWNtcDZJbk5laWdoYm9yU29saWNpdHMgKz0gaWZzdGF0LmlwdjZJZkljbXBJbk5laWdoYm9yU29saWNpdHM7CisJaWNtcDZzdGF0LmljbXA2T3V0UmVkaXJlY3RzICs9IGlmc3RhdC5pcHY2SWZJY21wT3V0UmVkaXJlY3RzOworCWljbXA2c3RhdC5pY21wNkluUmVkaXJlY3RzICs9IGlmc3RhdC5pcHY2SWZJY21wSW5SZWRpcmVjdHM7CisJaWNtcDZzdGF0LmljbXA2SW5Hcm91cE1lbWJRdWVyaWVzICs9IGlmc3RhdC5pcHY2SWZJY21wSW5Hcm91cE1lbWJRdWVyaWVzOworCWljbXA2c3RhdC5pY21wNk91dEdyb3VwTWVtYlJlc3BvbnNlcyArPSBpZnN0YXQuaXB2NklmSWNtcE91dEdyb3VwTWVtYlJlc3BvbnNlczsKKwlpY21wNnN0YXQuaWNtcDZJbkdyb3VwTWVtYlJlc3BvbnNlcyArPSBpZnN0YXQuaXB2NklmSWNtcEluR3JvdXBNZW1iUmVzcG9uc2VzOworCWljbXA2c3RhdC5pY21wNk91dEdyb3VwTWVtYlJlZHVjdGlvbnMgKz0gaWZzdGF0LmlwdjZJZkljbXBPdXRHcm91cE1lbWJSZWR1Y3Rpb25zOworCWljbXA2c3RhdC5pY21wNkluR3JvdXBNZW1iUmVkdWN0aW9ucyArPSBpZnN0YXQuaXB2NklmSWNtcEluR3JvdXBNZW1iUmVkdWN0aW9uczsKKwlyZXEgPSBHRVRfTkVYVDsKKyAgICB9CisjZW5kaWYKKworICAgIGljbXBfc3RhdHNfbG9hZChjYWNoZSwgdm1hZ2ljKTsKKyAgICBpY21wX21zZ19zdGF0c19sb2FkKGNhY2hlLCB2bWFnaWMpOwogICAgIHJldHVybiByZXRfdmFsdWU7CiB9CisKK3N0YXRpYyBpbnQKK3NvbGFyaXNfcmVhZF9pY21wX3N0YXQoSUNNUF9TVEFUX1NUUlVDVFVSRSAqbWliKQoreworICAgICptaWIgPSBpY21wc3RhdDsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorc29sYXJpc19yZWFkX2ljbXBfbXNnX3N0YXQoSUNNUF9TVEFUX1NUUlVDVFVSRSAqbWliLCBzdHJ1Y3QgaWNtcDRfbXNnX21pYiAqbXNnX21pYiwgaW50ICpmbGFnKQoreworICAgICptaWIgPSBpY21wc3RhdDsKKyAgICAqZmxhZyA9IDA7CisgICAgcmV0dXJuIDA7Cit9CisKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CitzdGF0aWMgaW50Citzb2xhcmlzX3JlYWRfaWNtcDZfc3RhdChzdHJ1Y3QgaWNtcDZfbWliICptaWIpCit7CisgICAgKm1pYiA9IGljbXA2c3RhdDsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorc29sYXJpc19yZWFkX2ljbXA2X21zZ19zdGF0KHN0cnVjdCBpY21wNl9taWIgKm1pYiwgc3RydWN0IGljbXA2X21zZ19taWIgKm1zZ19taWIsIGludCAqZmxhZykKK3sKKyAgICAqbWliID0gaWNtcDZzdGF0OworICAgICpmbGFnID0gMDsKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiAjZWxpZiBkZWZpbmVkKE5FVEJTRF9TVEFUU19WSUFfU1lTQ1RMKQogaW50CiBpY21wX2xvYWQobmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKnZtYWdpYykKQEAgLTEzNTgsNiArMTU2MCw4IEBACiAgICAgfSBlbHNlIHsKIAlERUJVR01TR1RMKCgibWliSUkvaWNtcCIsICJMb2FkZWQgSUNNUCBHcm91cCAobmV0YnNkKVxuIikpOwogICAgIH0KKyAgICBpY21wX3N0YXRzX2xvYWQoY2FjaGUsIHZtYWdpYyk7CisgICAgaWNtcF9tc2dfc3RhdHNfbG9hZChjYWNoZSwgdm1hZ2ljKTsKICAgICByZXR1cm4gcmV0X3ZhbHVlOwogfQogI2VsaWYgZGVmaW5lZCAoV0lOMzIpIHx8IGRlZmluZWQgKGN5Z3dpbikKQEAgLTEzOTcsMTcgKzE2MDEsMTYgQEAKIGljbXBfbG9hZChuZXRzbm1wX2NhY2hlICpjYWNoZSwgdm9pZCAqdm1hZ2ljKQogewogICAgIGxvbmcgICAgICAgICAgICByZXRfdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgaW50ICAgICAgc25hbWVbNF0gPQotICAgICAgICB7IENUTF9ORVQsIFBGX0lORVQsIElQUFJPVE9fSUNNUCwgSUNNUENUTF9TVEFUUyB9OwotICAgIHNpemVfdCAgICAgICAgICBsZW4gPSBzaXplb2YoaWNtcHN0YXQpOwogCi0gICAgcmV0X3ZhbHVlID0gc3lzY3RsKHNuYW1lLCA0LCAmaWNtcHN0YXQsICZsZW4sIDAsIDApOworICAgIHJldF92YWx1ZSA9IHN5c2N0bF9yZWFkX2ljbXBfc3RhdCgmaWNtcHN0YXQpOwogCiAgICAgaWYgKCByZXRfdmFsdWUgPCAwICkgewotICAgICAgICBERUJVR01TR1RMKCgibWliSUkvaWNtcCIsICJGYWlsZWQgdG8gbG9hZCBJQ01QIEdyb3VwIChzeXNjdGwpXG4iKSk7CisJREVCVUdNU0dUTCgoIm1pYklJL2ljbXAiLCAiRmFpbGVkIHRvIGxvYWQgSUNNUCBHcm91cCAobmV0YnNkKVxuIikpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9pY21wIiwgIkxvYWRlZCBJQ01QIEdyb3VwIChzeXNjdGwpXG4iKSk7CisJREVCVUdNU0dUTCgoIm1pYklJL2ljbXAiLCAiTG9hZGVkIElDTVAgR3JvdXAgKG5ldGJzZClcbiIpKTsKICAgICB9CisgICAgaWNtcF9zdGF0c19sb2FkKGNhY2hlLCB2bWFnaWMpOworICAgIGljbXBfbXNnX3N0YXRzX2xvYWQoY2FjaGUsIHZtYWdpYyk7CiAgICAgcmV0dXJuIHJldF92YWx1ZTsKIH0KICNlbGlmIGRlZmluZWQoSEFWRV9TWVNfVENQSVBTVEFUU19IKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5oCmluZGV4IDkzMDc2NTQuLjczNTMzY2YgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2ljbXAuaAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9pY21wLmgKQEAgLTUsMTAgKzUsMjQgQEAKICNpZm5kZWYgX01JQkdST1VQX0lDTVBfSAogI2RlZmluZSBfTUlCR1JPVVBfSUNNUF9ICiAKLWNvbmZpZ19hcmNoX3JlcXVpcmUoc29sYXJpczIsICAgICAgICBrZXJuZWxfc3Vub3M1KQorY29uZmlnX2FyY2hfcmVxdWlyZShzb2xhcmlzMiwgIGtlcm5lbF9zdW5vczUpCiBjb25maWdfYXJjaF9yZXF1aXJlKGxpbnV4LCAgICAgbWliSUkva2VybmVsX2xpbnV4KQorY29uZmlnX2FyY2hfcmVxdWlyZShmcmVlYnNkNCwgIG1pYklJL2tlcm5lbF9zeXNjdGwpCitjb25maWdfYXJjaF9yZXF1aXJlKGZyZWVic2Q1LCAgbWliSUkva2VybmVsX3N5c2N0bCkKK2NvbmZpZ19hcmNoX3JlcXVpcmUoZnJlZWJzZDYsICBtaWJJSS9rZXJuZWxfc3lzY3RsKQorY29uZmlnX2FyY2hfcmVxdWlyZShmcmVlYnNkNywgIG1pYklJL2tlcm5lbF9zeXNjdGwpCitjb25maWdfYXJjaF9yZXF1aXJlKGZyZWVic2Q4LCAgbWliSUkva2VybmVsX3N5c2N0bCkKK2NvbmZpZ19hcmNoX3JlcXVpcmUoZnJlZWJzZDksICBtaWJJSS9rZXJuZWxfc3lzY3RsKQorY29uZmlnX2FyY2hfcmVxdWlyZShmcmVlYnNkMTAsIG1pYklJL2tlcm5lbF9zeXNjdGwpCiBjb25maWdfYXJjaF9yZXF1aXJlKG5ldGJzZCwgICAgbWliSUkva2VybmVsX25ldGJzZCkKIGNvbmZpZ19hcmNoX3JlcXVpcmUobmV0YnNkZWxmLCBtaWJJSS9rZXJuZWxfbmV0YnNkKQorY29uZmlnX2FyY2hfcmVxdWlyZShvcGVuYnNkNCwgIG1pYklJL2tlcm5lbF9zeXNjdGwpCitjb25maWdfYXJjaF9yZXF1aXJlKG9wZW5ic2Q1LCAgbWliSUkva2VybmVsX3N5c2N0bCkKK2NvbmZpZ19hcmNoX3JlcXVpcmUoZHJhZ29uZmx5MiwgbWliSUkva2VybmVsX3N5c2N0bCkKK2NvbmZpZ19hcmNoX3JlcXVpcmUoZHJhZ29uZmx5MywgbWliSUkva2VybmVsX3N5c2N0bCkKK2NvbmZpZ19hcmNoX3JlcXVpcmUoZGFyd2luMTAsICBtaWJJSS9rZXJuZWxfc3lzY3RsKQorY29uZmlnX2FyY2hfcmVxdWlyZShkYXJ3aW4xMSwgIG1pYklJL2tlcm5lbF9zeXNjdGwpCitjb25maWdfYXJjaF9yZXF1aXJlKGRhcndpbjEyLCAgbWliSUkva2VybmVsX3N5c2N0bCkKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaD4KIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jCmluZGV4IDQ2NzY1N2EuLjI2ZmZlYmIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMKQEAgLTE1LDYgKzE1LDkgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKworbmV0c25tcF9mZWF0dXJlX3Byb3ZpZGUoaW50ZXJmYWNlX2xlZ2FjeSkKIAogI2lmIGRlZmluZWQoTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUwpICYmICFkZWZpbmVkKF9LRVJORUwpICYmICFkZWZpbmVkKE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMX0xBVEUpCiAjZGVmaW5lIF9LRVJORUwgMQpAQCAtMTk1LDYgKzE5OCw3IEBACiAKICNpbmNsdWRlICJpbnRlcmZhY2VzLmgiCiAjaW5jbHVkZSAic3RydWN0LmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy5oIgogI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIKIAogLyogaWYgeW91IHdhbnQgY2FjaGluZyBlbmFibGVkIGZvciBzcGVlZCByZXRyaWV2YWwgcHVycG9zZXMsIHNldCB0aGlzIHRvIDU/Ki8KQEAgLTIyMCw2ICsyMjQsNyBAQAogICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDV9fSwKICAgICB7TkVUU05NUF9JRlBIWVNBRERSRVNTLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKICAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCA2fX0sCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogI2lmIGRlZmluZWQgKFdJTjMyKSB8fCBkZWZpbmVkIChjeWd3aW4pCiAgICAge05FVFNOTVBfSUZBRE1JTlNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCA3fX0sCkBAIC0yMjcsNiArMjMyLDEwIEBACiAgICAge05FVFNOTVBfSUZBRE1JTlNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAogICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDd9fSwKICNlbmRpZgorI2Vsc2UgIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICB7TkVUU05NUF9JRkFETUlOU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgN319LAorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB7TkVUU05NUF9JRk9QRVJTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKICAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCA4fX0sCiAgICAge05FVFNOTVBfSUZMQVNUQ0hBTkdFLCBBU05fVElNRVRJQ0tTLCBORVRTTk1QX09MREFQSV9ST05MWSwKQEAgLTc2OSw5ICs3NzgsNiBAQAogICAgIHN0YXRpYyBjaGFyICAgICBOYW1lWzE2XTsKICAgICBjaGFyICAgICAgICAgICAqY3A7CiAgICAgY29uZl9pZl9saXN0ICAgKmlmX3B0cjsKLSNpZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9MQVNUQ0hBTkdFX1RWX1NFQwotICAgIHN0cnVjdCB0aW1ldmFsICBub3c7Ci0jZW5kaWYKIAogICAgIGludGVyZmFjZSA9CiAgICAgICAgIGhlYWRlcl9pZkVudHJ5KHZwLCBuYW1lLCBsZW5ndGgsIGV4YWN0LCB2YXJfbGVuLCB3cml0ZV9tZXRob2QpOwpAQCAtMTUxOSw3ICsxNTI1LDcgQEAKIAogI2lmZGVmIGxpbnV4CiAgICAgLyogIGRpc2FsbG93IHJlbG9hZGluZyBvZiBzdHJ1Y3R1cmVzIHRvbyBvZnRlbiAqLwotICAgIGdldHRpbWVvZmRheSAoICZldCwgKCBzdHJ1Y3QgdGltZXpvbmUgKiApIDAgKTsgIC8qICBnZXQgdGltZS1vZi1kYXkgKi8KKyAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJmV0KTsKICAgICBpZiAoIGV0LnR2X3NlYyA8IExhc3RMb2FkICsgTUlOTE9BREZSRVEgKSB7ICAgICAvKiAgb25seSByZWxvYWQgc28gb2Z0ZW4gKi8KICAgICAgIGlmbmV0YWRkciA9IGlmbmV0YWRkcl9saXN0OyAgICAgICAgICAgICAgICAgICAvKiAgaW5pdGlhbGl6ZSBwb2ludGVyICovCiAgICAgICByZXR1cm47CkBAIC0xODk2LDYgKzE5MDIsMTAgQEAKICNpZmRlZiBsaW51eAogICAgICAgICBzdHJsY2F0KHNhdmVOYW1lLCBpZm5ldC5pZl91bml0LCBzaXplb2Yoc2F2ZU5hbWUpKTsKICNlbHNlCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX0NIRUNLSU4KKyAgICAgICAgLyogdGhpcyBleGlzdHMgaGVyZSBqdXN0IHNvIHdlIGRvbid0IGNvcHkgaWZkZWYgbG9naWMgZWxzZXdoZXJlICovCisgICAgICAgIG5ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHN0cmluZ19hcHBlbmRfaW50KTsKKyNlbmRpZgogICAgICAgICBzdHJpbmdfYXBwZW5kX2ludChjcCwgaWZuZXQuaWZfdW5pdCk7CiAjZW5kaWYKICAgICAgICAgaWYgKDEgfHwgc3RyY21wKHNhdmVOYW1lLCAibG8wIikgIT0gMCkgeyAgICAgICAgLyogWFhYICovCkBAIC0yMDQ3LDYgKzIwNTcsMTAgQEAKIAogICAgICAgICBzYXZlTmFtZVtzaXplb2Yoc2F2ZU5hbWUpIC0gMV0gPSAnXDAnOwogICAgICAgICBjcCA9IHN0cmNocihzYXZlTmFtZSwgJ1wwJyk7CisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX0NIRUNLSU4KKyAgICAgICAgLyogdGhpcyBleGlzdHMgaGVyZSBqdXN0IHNvIHdlIGRvbid0IGNvcHkgaWZkZWYgbG9naWMgZWxzZXdoZXJlICovCisgICAgICAgIG5ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHN0cmluZ19hcHBlbmRfaW50KTsKKyNlbmRpZgogICAgICAgICBzdHJpbmdfYXBwZW5kX2ludChjcCwgaWZuZXQuaWZfdW5pdCk7CiAjZW5kaWYKICAgICAgICAgaWYgKDEgfHwgc3RyY21wKHNhdmVOYW1lLCAibG8wIikgIT0gMCkgeyAgICAgICAgLyogWFhYICovCkBAIC0yNjUzLDcgKzI2NjcsOSBAQAogI2VsaWYgZGVmaW5lZChIQVZFX0lQSExQQVBJX0gpICAvKiBXSU4zMiBjeWd3aW4gKi8KICNpbmNsdWRlIDxpcGhscGFwaS5oPgogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogV3JpdGVNZXRob2QgICAgIHdyaXRlSWZFbnRyeTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiBsb25nICAgICAgICAgICAgYWRtaW5fc3RhdHVzID0gMDsKIGxvbmcgICAgICAgICAgICBvbGRhZG1pbl9zdGF0dXMgPSAwOwogCkBAIC0yNzk4LDcgKzI4MTQsOSBAQAogICAgIGNhc2UgTkVUU05NUF9JRkFETUlOU1RBVFVTOgogICAgICAgICBsb25nX3JldHVybiA9IGlmUm93LmR3QWRtaW5TdGF0dXM7CiAgICAgICAgIGFkbWluX3N0YXR1cyA9IGxvbmdfcmV0dXJuOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlSWZFbnRyeTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47CiAgICAgY2FzZSBORVRTTk1QX0lGT1BFUlNUQVRVUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPQpAQCAtMjg1NCw2ICsyODcyLDcgQEAKIH0KIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogaW50CiB3cml0ZUlmRW50cnkoaW50IGFjdGlvbiwKICAgICAgICAgICAgICB1X2NoYXIgKiB2YXJfdmFsLApAQCAtMjkyNSw0ICsyOTQ0LDUgQEAKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVuZCBvZiB3cml0ZUlmRW50cnkgKi8KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovIAogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBXSU4zMiBjeWd3aW4gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2lwLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9pcC5jCmluZGV4IDI0ODJhOTEuLmYzOWQzMjIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2lwLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYwpAQCAtNjc3LDYgKzY3Nyw3IEBACiAKICAgICBjYXNlIE1PREVfR0VUTkVYVDoKICAgICBjYXNlIE1PREVfR0VUQlVMSzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKIAkJLyogWFhYIC0gV2luZG93cyBjdXJyZW50bHkgc3VwcG9ydHMgc2V0dGluZyB0aGlzICovCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKQEAgLTY4Nyw2ICs2ODgsNyBAQAogICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIm1pYklJL2lwOiBVbnN1cHBvcnRlZCBtb2RlICglZClcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxaW5mby0+bW9kZSk7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICBkZWZhdWx0OgogICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIm1pYklJL2lwOiBVbnJlY29nbmlzZWQgbW9kZSAoJWQpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYwppbmRleCAzMzI2NjI2Li5hNGQ1NzdlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYwpAQCAtMTUsNiArMTUsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaWYgZGVmaW5lZChORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTCkgJiYgIWRlZmluZWQoX0tFUk5FTCkKICNkZWZpbmUgX0tFUk5FTCAxCkBAIC0xMjAsNiArMTIxLDggQEAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZW5kaWYKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaW50ZXJmYWNlX2xlZ2FjeSkKKwogICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCiAJICoKIAkgKiAgS2VybmVsICYgaW50ZXJmYWNlIGluZm9ybWF0aW9uLApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZS5jCmluZGV4IDA5OWUzOWYuLjg2MDliYjAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2lwQ2lkclJvdXRlVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmMKQEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSAicm91dGVfaGVhZGVycy5oIgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KQEAgLTEzLDYgKzE0LDExIEBACiAKICNpbmNsdWRlICJ2YXJfcm91dGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUob2lkX3N0YXNoKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZ2V0X3JvdXRlcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKG9pZF9zdGFzaF9nZXRfZGF0YSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKG9pZF9zdGFzaF9hZGRfZGF0YSkKKwogc3RhdGljIG5ldHNubXBfb2lkX3N0YXNoX25vZGUgKnVuZG9TdG9yYWdlOwogCiBzdHJ1Y3QgdW5kb0luZm8gewpAQCAtOTksNyArMTA1LDcgQEAKICAgICAgKi8KICAgICBERUJVR01TR1RMKCgiaW5pdGlhbGl6ZV90YWJsZV9pcENpZHJSb3V0ZVRhYmxlIiwKICAgICAgICAgICAgICAgICAiUmVnaXN0ZXJpbmcgdGFibGUgaXBDaWRyUm91dGVUYWJsZSBhcyBhIHRhYmxlIGl0ZXJhdG9yXG4iKSk7Ci0gICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcihteV9oYW5kbGVyLCBpaW5mbyk7CisgICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcjIobXlfaGFuZGxlciwgaWluZm8pOwogfQogCiAvKiogSW5pdGlhbGl6ZXMgdGhlIGlwQ2lkclJvdXRlVGFibGUgbW9kdWxlICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9pcHY2LmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9pcHY2LmMKaW5kZXggMzNhM2RiNy4uOTlkNTBlOCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXB2Ni5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYwpAQCAtNCw2ICs0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpZiBkZWZpbmVkKE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMKSAmJiAhZGVmaW5lZChfS0VSTkVMKQogI2RlZmluZSBfS0VSTkVMIDEKICNkZWZpbmUgX0lfREVGSU5FRF9LRVJORUwKQEAgLTE0Myw2ICsxNDQsOCBAQAogI2luY2x1ZGUgImlwdjYuaCIKICNpbmNsdWRlICJpbnRlcmZhY2VzLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGxpbnV4X3JlYWRfaXA2X3N0YXQpCisKICNpZiBkZWZpbmVkKG5ldGJzZDEpICYmICFkZWZpbmVkKG9wZW5ic2Q0KQogI2RlZmluZSBpbnBfbHBvcnQgaW42cF9scG9ydAogI2RlZmluZSBpbnBfZnBvcnQgaW42cF9mcG9ydApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYwppbmRleCAyNmI4OTljLi45OTMxNGRmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYwpAQCAtNCw2ICs0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ1LDcgKzQ2LDExIEBACiAjZGVmaW5lIElDTVA2X1NUQVRTX1BSRUZJWF9MRU4JNQogI2RlZmluZSBVRFA2X1NUQVRTX1BSRUZJWF9MRU4gICA0CiAKLWludAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGxpbnV4X2lwNl9zdGF0X2FsbCwgbGlibmV0c25tcG1pYnMpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihsaW51eF9yZWFkX2lwNl9zdGF0LCBsaW51eF9pcDZfc3RhdF9hbGwpCisKK3N0YXRpYyBpbnQKIGRlY29kZV9pY21wX21zZyhjaGFyICpsaW5lLCBjaGFyICpkYXRhLCBzdHJ1Y3QgaWNtcDRfbXNnX21pYiAqbXNnKQogewogICAgIGNoYXIgKnRva2VuLCAqc2F2ZXB0ciwgKmxpbmVwdHIsICpzYXZlcHRyMSwgKmRhdGFwdHIsICpkZWxpbSA9IE5VTEw7CkBAIC0xMDMsNyArMTA4LDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAotaW50CitzdGF0aWMgaW50CiBsaW51eF9yZWFkX21pYklJX3N0YXRzKHZvaWQpCiB7CiAgICAgRklMRSAgICAgICAgICAgKmluID0gZm9wZW4oIi9wcm9jL25ldC9zbm1wIiwgInIiKTsKQEAgLTIzOCw2ICsyNDMsNyBAQAogICAgIHJldHVybiAwOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTElOVVhfUkVBRF9JUDZfU1RBVAogaW50IGxpbnV4X3JlYWRfaXA2X3N0YXQoIHN0cnVjdCBpcDZfbWliICppcDZzdGF0KQogewogI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKQEAgLTM0Niw2ICszNTIsNyBAQAogICAgIG1lbWNweSgoY2hhciAqKSBpcDZzdGF0LCAoY2hhciAqKSAmY2FjaGVkX2lwNl9taWIsIHNpemVvZigqaXA2c3RhdCkpOwogICAgIHJldHVybiAwOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTElOVVhfUkVBRF9JUDZfU1RBVCAqLwogCiBpbnQKIGxpbnV4X3JlYWRfaWNtcF9tc2dfc3RhdChzdHJ1Y3QgaWNtcF9taWIgKmljbXBzdGF0LApAQCAtMzc5LDcgKzM4Niw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLWludAorc3RhdGljIGludAogbGludXhfcmVhZF9pY21wNl9wYXJzZShzdHJ1Y3QgaWNtcDZfbWliICppY21wNnN0YXQsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpY21wNl9tc2dfbWliICppY21wNm1zZ3N0YXQsCiAgICAgICAgICAgICAgICAgICAgICAgIGludCAqc3VwcG9ydCkKQEAgLTQ3OSw2ICs0ODYsOCBAQAogICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RybmNtcChsaW5lICsgNSwgIk91dCIsIDMpKSB7ICAvKiBPdXQgKi8KICAgICAgICAgICAgIGlmICgwID09IHN0cmNtcChsaW5lICsgOCwgIkRlc3RVbnJlYWNocyIpKSB7CiAgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNk91dERlc3RVbnJlYWNocyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgOCwgIkVjaG9zIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2T3V0RWNob3MgPSBzdGF0czsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDgsICJFY2hvUmVwbGllcyIpKSB7CiAgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNk91dEVjaG9SZXBsaWVzID0gc3RhdHM7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA4LCAiR3JvdXBNZW1iUmVkdWN0aW9ucyIpKSB7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguaCBiL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5oCmluZGV4IGM2ZGZjYTkuLmIzYzU4ZDMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5oCkBAIC02LDE2MSArNiw3IEBACiAjaWZuZGVmIF9NSUJHUk9VUF9LRVJORUxfTElOVVhfSAogI2RlZmluZSBfTUlCR1JPVVBfS0VSTkVMX0xJTlVYX0gKIAotc3RydWN0IGlwX21pYiB7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwRm9yd2FyZGluZzsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBEZWZhdWx0VFRMOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEluUmVjZWl2ZXM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwSW5IZHJFcnJvcnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwSW5BZGRyRXJyb3JzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEZvcndEYXRhZ3JhbXM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwSW5Vbmtub3duUHJvdG9zOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEluRGlzY2FyZHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwSW5EZWxpdmVyczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBPdXRSZXF1ZXN0czsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBPdXREaXNjYXJkczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBPdXROb1JvdXRlczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBSZWFzbVRpbWVvdXQ7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwUmVhc21SZXFkczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBSZWFzbU9LczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBSZWFzbUZhaWxzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEZyYWdPS3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwRnJhZ0ZhaWxzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEZyYWdDcmVhdGVzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcFJvdXRpbmdEaXNjYXJkczsKLX07Ci0KLXN0cnVjdCBpcDZfbWliIHsKLSAgICB1bnNpZ25lZCBsb25nIGlwNkluUmVjZWl2ZXM7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZJbkhkckVycm9yczsKLSAgICB1bnNpZ25lZCBsb25nIGlwNkluVG9vQmlnRXJyb3JzOwotICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5Ob1JvdXRlczsKLSAgICB1bnNpZ25lZCBsb25nIGlwNkluQWRkckVycm9yczsKLSAgICB1bnNpZ25lZCBsb25nIGlwNkluVW5rbm93blByb3RvczsKLSAgICB1bnNpZ25lZCBsb25nIGlwNkluVHJ1bmNhdGVkUGt0czsKLSAgICB1bnNpZ25lZCBsb25nIGlwNkluRGlzY2FyZHM7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZJbkRlbGl2ZXJzOwotICAgIHVuc2lnbmVkIGxvbmcgaXA2T3V0Rm9yd0RhdGFncmFtczsKLSAgICB1bnNpZ25lZCBsb25nIGlwNk91dFJlcXVlc3RzOwotICAgIHVuc2lnbmVkIGxvbmcgaXA2T3V0RGlzY2FyZHM7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZPdXROb1JvdXRlczsKLSAgICB1bnNpZ25lZCBsb25nIGlwNlJlYXNtVGltZW91dDsKLSAgICB1bnNpZ25lZCBsb25nIGlwNlJlYXNtUmVxZHM7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZSZWFzbU9LczsKLSAgICB1bnNpZ25lZCBsb25nIGlwNlJlYXNtRmFpbHM7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZGcmFnT0tzOwotICAgIHVuc2lnbmVkIGxvbmcgaXA2RnJhZ0ZhaWxzOwotICAgIHVuc2lnbmVkIGxvbmcgaXA2RnJhZ0NyZWF0ZXM7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZJbk1jYXN0UGt0czsKLSAgICB1bnNpZ25lZCBsb25nIGlwNk91dE1jYXN0UGt0czsKLX07Ci0KLXN0cnVjdCBpY21wX21pYiB7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbk1zZ3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbkVycm9yczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluRGVzdFVucmVhY2hzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5UaW1lRXhjZHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJblBhcm1Qcm9iczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluU3JjUXVlbmNoczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluUmVkaXJlY3RzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5FY2hvczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluRWNob1JlcHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJblRpbWVzdGFtcHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJblRpbWVzdGFtcFJlcHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbkFkZHJNYXNrczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluQWRkck1hc2tSZXBzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0TXNnczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dEVycm9yczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dERlc3RVbnJlYWNoczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dFRpbWVFeGNkczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dFBhcm1Qcm9iczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dFNyY1F1ZW5jaHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRSZWRpcmVjdHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRFY2hvczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dEVjaG9SZXBzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0VGltZXN0YW1wczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dFRpbWVzdGFtcFJlcHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRBZGRyTWFza3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRBZGRyTWFza1JlcHM7Ci19OwotCi1zdHJ1Y3QgaWNtcDZfbWliIHsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5Nc2dzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbkVycm9yczsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5EZXN0VW5yZWFjaHM7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNkluUGt0VG9vQmlnczsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5UaW1lRXhjZHM7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNkluUGFybVByb2JsZW1zOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbkVjaG9zOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbkVjaG9SZXBsaWVzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbkdyb3VwTWVtYlF1ZXJpZXM7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNkluR3JvdXBNZW1iUmVzcG9uc2VzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbkdyb3VwTWVtYlJlZHVjdGlvbnM7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNkluUm91dGVyU29saWNpdHM7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNkluUm91dGVyQWR2ZXJ0aXNlbWVudHM7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNkluTmVpZ2hib3JTb2xpY2l0czsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5OZWlnaGJvckFkdmVydGlzZW1lbnRzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJblJlZGlyZWN0czsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0TXNnczsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0RGVzdFVucmVhY2hzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRQa3RUb29CaWdzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRUaW1lRXhjZHM7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNk91dFBhcm1Qcm9ibGVtczsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0RWNob1JlcGxpZXM7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNk91dFJvdXRlclNvbGljaXRzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXROZWlnaGJvclNvbGljaXRzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXROZWlnaGJvckFkdmVydGlzZW1lbnRzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRSZWRpcmVjdHM7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNk91dEdyb3VwTWVtYlJlc3BvbnNlczsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0R3JvdXBNZW1iUmVkdWN0aW9uczsKLX07Ci0KLXN0cnVjdCBpY21wX21zZ19taWIgewotICAgIHVuc2lnbmVkIGxvbmcgSW5UeXBlOwotICAgIHVuc2lnbmVkIGxvbmcgT3V0VHlwZTsKLX07Ci0KLS8qIExldHMgdXNlIHdyYXBwZXIgc3RydWN0dXJlcyBmb3IgZnV0dXJlIGV4cGFuc2lvbiAqLwotc3RydWN0IGljbXA0X21zZ19taWIgewotICAgIHN0cnVjdCBpY21wX21zZ19taWIgdmFsc1syNTZdOwotfTsKLQotc3RydWN0IGljbXA2X21zZ19taWIgewotICAgIHN0cnVjdCBpY21wX21zZ19taWIgdmFsc1syNTZdOwotfTsKLQotc3RydWN0IHVkcF9taWIgewotICAgIHVuc2lnbmVkIGxvbmcgICB1ZHBJbkRhdGFncmFtczsKLSAgICB1bnNpZ25lZCBsb25nICAgdWRwTm9Qb3J0czsKLSAgICB1bnNpZ25lZCBsb25nICAgdWRwSW5FcnJvcnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHVkcE91dERhdGFncmFtczsKLX07Ci0KLXN0cnVjdCB1ZHA2X21pYiB7Ci0gICAgdW5zaWduZWQgbG9uZyB1ZHA2SW5EYXRhZ3JhbXM7Ci0gICAgdW5zaWduZWQgbG9uZyB1ZHA2Tm9Qb3J0czsKLSAgICB1bnNpZ25lZCBsb25nIHVkcDZJbkVycm9yczsKLSAgICB1bnNpZ25lZCBsb25nIHVkcDZPdXREYXRhZ3JhbXM7Ci19OwotCi1zdHJ1Y3QgdGNwX21pYiB7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcFJ0b0FsZ29yaXRobTsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwUnRvTWluOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BSdG9NYXg7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcE1heENvbm47Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcEFjdGl2ZU9wZW5zOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BQYXNzaXZlT3BlbnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcEF0dGVtcHRGYWlsczsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwRXN0YWJSZXNldHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcEN1cnJFc3RhYjsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwSW5TZWdzOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BPdXRTZWdzOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BSZXRyYW5zU2VnczsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwSW5FcnJzOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BPdXRSc3RzOwotICAgIHNob3J0ICAgICAgICAgICB0Y3BJbkVycnNWYWxpZDsKLSAgICBzaG9ydCAgICAgICAgICAgdGNwT3V0UnN0c1ZhbGlkOwotfTsKLQorI2luY2x1ZGUgImtlcm5lbF9taWIuaCIKIAogaW50ICAgICAgICAgICAgIGxpbnV4X3JlYWRfaXBfc3RhdChzdHJ1Y3QgaXBfbWliICopOwogaW50ICAgICAgICAgICAgIGxpbnV4X3JlYWRfaXA2X3N0YXQoc3RydWN0IGlwNl9taWIgKik7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbWliLmggYi9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbWliLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI4NjM5ZgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9taWIuaApAQCAtMCwwICsxLDE2NCBAQAorLyoKKyAqICBNSUIgc3RhdGlzdGljcyBnYXRoZXJpbmcgc3RydWN0dXJlcworICovCisKKyNpZm5kZWYgX01JQkdST1VQX0tFUk5FTF9NSUJfSAorI2RlZmluZSBfTUlCR1JPVVBfS0VSTkVMX01JQl9ICisKK3N0cnVjdCBpcF9taWIgeworICAgIHVuc2lnbmVkIGxvbmcgICBpcEZvcndhcmRpbmc7CisgICAgdW5zaWduZWQgbG9uZyAgIGlwRGVmYXVsdFRUTDsKKyAgICB1bnNpZ25lZCBsb25nICAgaXBJblJlY2VpdmVzOworICAgIHVuc2lnbmVkIGxvbmcgICBpcEluSGRyRXJyb3JzOworICAgIHVuc2lnbmVkIGxvbmcgICBpcEluQWRkckVycm9yczsKKyAgICB1bnNpZ25lZCBsb25nICAgaXBGb3J3RGF0YWdyYW1zOworICAgIHVuc2lnbmVkIGxvbmcgICBpcEluVW5rbm93blByb3RvczsKKyAgICB1bnNpZ25lZCBsb25nICAgaXBJbkRpc2NhcmRzOworICAgIHVuc2lnbmVkIGxvbmcgICBpcEluRGVsaXZlcnM7CisgICAgdW5zaWduZWQgbG9uZyAgIGlwT3V0UmVxdWVzdHM7CisgICAgdW5zaWduZWQgbG9uZyAgIGlwT3V0RGlzY2FyZHM7CisgICAgdW5zaWduZWQgbG9uZyAgIGlwT3V0Tm9Sb3V0ZXM7CisgICAgdW5zaWduZWQgbG9uZyAgIGlwUmVhc21UaW1lb3V0OworICAgIHVuc2lnbmVkIGxvbmcgICBpcFJlYXNtUmVxZHM7CisgICAgdW5zaWduZWQgbG9uZyAgIGlwUmVhc21PS3M7CisgICAgdW5zaWduZWQgbG9uZyAgIGlwUmVhc21GYWlsczsKKyAgICB1bnNpZ25lZCBsb25nICAgaXBGcmFnT0tzOworICAgIHVuc2lnbmVkIGxvbmcgICBpcEZyYWdGYWlsczsKKyAgICB1bnNpZ25lZCBsb25nICAgaXBGcmFnQ3JlYXRlczsKKyAgICB1bnNpZ25lZCBsb25nICAgaXBSb3V0aW5nRGlzY2FyZHM7Cit9OworCitzdHJ1Y3QgaXA2X21pYiB7CisgICAgdW5zaWduZWQgbG9uZyBpcDZJblJlY2VpdmVzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5IZHJFcnJvcnM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZJblRvb0JpZ0Vycm9yczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkluTm9Sb3V0ZXM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZJbkFkZHJFcnJvcnM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZJblVua25vd25Qcm90b3M7CisgICAgdW5zaWduZWQgbG9uZyBpcDZJblRydW5jYXRlZFBrdHM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZJbkRpc2NhcmRzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5EZWxpdmVyczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNk91dEZvcndEYXRhZ3JhbXM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZPdXRSZXF1ZXN0czsKKyAgICB1bnNpZ25lZCBsb25nIGlwNk91dERpc2NhcmRzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2T3V0Tm9Sb3V0ZXM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZSZWFzbVRpbWVvdXQ7CisgICAgdW5zaWduZWQgbG9uZyBpcDZSZWFzbVJlcWRzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2UmVhc21PS3M7CisgICAgdW5zaWduZWQgbG9uZyBpcDZSZWFzbUZhaWxzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2RnJhZ09LczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkZyYWdGYWlsczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkZyYWdDcmVhdGVzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5NY2FzdFBrdHM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZPdXRNY2FzdFBrdHM7Cit9OworCitzdHJ1Y3QgaWNtcF9taWIgeworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5Nc2dzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5FcnJvcnM7CisgICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbkRlc3RVbnJlYWNoczsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluVGltZUV4Y2RzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5QYXJtUHJvYnM7CisgICAgdW5zaWduZWQgbG9uZyAgIGljbXBJblNyY1F1ZW5jaHM7CisgICAgdW5zaWduZWQgbG9uZyAgIGljbXBJblJlZGlyZWN0czsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluRWNob3M7CisgICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbkVjaG9SZXBzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5UaW1lc3RhbXBzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5UaW1lc3RhbXBSZXBzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5BZGRyTWFza3M7CisgICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbkFkZHJNYXNrUmVwczsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dE1zZ3M7CisgICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRFcnJvcnM7CisgICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXREZXN0VW5yZWFjaHM7CisgICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRUaW1lRXhjZHM7CisgICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRQYXJtUHJvYnM7CisgICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRTcmNRdWVuY2hzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0UmVkaXJlY3RzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0RWNob3M7CisgICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRFY2hvUmVwczsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dFRpbWVzdGFtcHM7CisgICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRUaW1lc3RhbXBSZXBzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0QWRkck1hc2tzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0QWRkck1hc2tSZXBzOworfTsKKworc3RydWN0IGljbXA2X21pYiB7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluTXNnczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5FcnJvcnM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluRGVzdFVucmVhY2hzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJblBrdFRvb0JpZ3M7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluVGltZUV4Y2RzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJblBhcm1Qcm9ibGVtczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5FY2hvczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5FY2hvUmVwbGllczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5Hcm91cE1lbWJRdWVyaWVzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbkdyb3VwTWVtYlJlc3BvbnNlczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5Hcm91cE1lbWJSZWR1Y3Rpb25zOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJblJvdXRlclNvbGljaXRzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJblJvdXRlckFkdmVydGlzZW1lbnRzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbk5laWdoYm9yU29saWNpdHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluTmVpZ2hib3JBZHZlcnRpc2VtZW50czsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5SZWRpcmVjdHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dE1zZ3M7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dERlc3RVbnJlYWNoczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0UGt0VG9vQmlnczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0VGltZUV4Y2RzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRQYXJtUHJvYmxlbXM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dEVjaG9zOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRFY2hvUmVwbGllczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0Um91dGVyU29saWNpdHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dE5laWdoYm9yU29saWNpdHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dE5laWdoYm9yQWR2ZXJ0aXNlbWVudHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dFJlZGlyZWN0czsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0R3JvdXBNZW1iUmVzcG9uc2VzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRHcm91cE1lbWJSZWR1Y3Rpb25zOworfTsKKworc3RydWN0IGljbXBfbXNnX21pYiB7CisgICAgdW5zaWduZWQgbG9uZyBJblR5cGU7CisgICAgdW5zaWduZWQgbG9uZyBPdXRUeXBlOworfTsKKworLyogTGV0cyB1c2Ugd3JhcHBlciBzdHJ1Y3R1cmVzIGZvciBmdXR1cmUgZXhwYW5zaW9uICovCitzdHJ1Y3QgaWNtcDRfbXNnX21pYiB7CisgICAgc3RydWN0IGljbXBfbXNnX21pYiB2YWxzWzI1Nl07Cit9OworCitzdHJ1Y3QgaWNtcDZfbXNnX21pYiB7CisgICAgc3RydWN0IGljbXBfbXNnX21pYiB2YWxzWzI1Nl07Cit9OworCitzdHJ1Y3QgdWRwX21pYiB7CisgICAgdW5zaWduZWQgbG9uZyAgIHVkcEluRGF0YWdyYW1zOworICAgIHVuc2lnbmVkIGxvbmcgICB1ZHBOb1BvcnRzOworICAgIHVuc2lnbmVkIGxvbmcgICB1ZHBJbkVycm9yczsKKyAgICB1bnNpZ25lZCBsb25nICAgdWRwT3V0RGF0YWdyYW1zOworfTsKKworc3RydWN0IHVkcDZfbWliIHsKKyAgICB1bnNpZ25lZCBsb25nIHVkcDZJbkRhdGFncmFtczsKKyAgICB1bnNpZ25lZCBsb25nIHVkcDZOb1BvcnRzOworICAgIHVuc2lnbmVkIGxvbmcgdWRwNkluRXJyb3JzOworICAgIHVuc2lnbmVkIGxvbmcgdWRwNk91dERhdGFncmFtczsKK307CisKK3N0cnVjdCB0Y3BfbWliIHsKKyAgICB1bnNpZ25lZCBsb25nICAgdGNwUnRvQWxnb3JpdGhtOworICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BSdG9NaW47CisgICAgdW5zaWduZWQgbG9uZyAgIHRjcFJ0b01heDsKKyAgICB1bnNpZ25lZCBsb25nICAgdGNwTWF4Q29ubjsKKyAgICB1bnNpZ25lZCBsb25nICAgdGNwQWN0aXZlT3BlbnM7CisgICAgdW5zaWduZWQgbG9uZyAgIHRjcFBhc3NpdmVPcGVuczsKKyAgICB1bnNpZ25lZCBsb25nICAgdGNwQXR0ZW1wdEZhaWxzOworICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BFc3RhYlJlc2V0czsKKyAgICB1bnNpZ25lZCBsb25nICAgdGNwQ3VyckVzdGFiOworICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BJblNlZ3M7CisgICAgdW5zaWduZWQgbG9uZyAgIHRjcE91dFNlZ3M7CisgICAgdW5zaWduZWQgbG9uZyAgIHRjcFJldHJhbnNTZWdzOworICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BJbkVycnM7CisgICAgdW5zaWduZWQgbG9uZyAgIHRjcE91dFJzdHM7CisgICAgc2hvcnQgICAgICAgICAgIHRjcEluRXJyc1ZhbGlkOworICAgIHNob3J0ICAgICAgICAgICB0Y3BPdXRSc3RzVmFsaWQ7Cit9OworCisjZW5kaWYgIC8qIF9NSUJHUk9VUF9LRVJORUxfTUlCX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9uZXRic2QuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9uZXRic2QuYwppbmRleCA5M2YzOGI3Li4wODA2MTgwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbmV0YnNkLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX25ldGJzZC5jCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSA8bmV0aW5ldC9pcF9pY21wLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KICNpbmNsdWRlIDxuZXRpbmV0L2ljbXBfdmFyLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pY21wNi5oPgogI2luY2x1ZGUgPG5ldGluZXQvdGNwLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC90Y3BfdGltZXIuaD4KICNpbmNsdWRlIDxuZXRpbmV0L3RjcF92YXIuaD4KQEAgLTM4LDggKzM5LDEwIEBACiAKICAgICAodm9pZCltZW1zZXQobWliLCAwLCBzaXplb2YoKm1pYikpOwogCi0gICAgaWYgKC0xID09IHN5c2N0bGJ5bmFtZSgibmV0LmluZXQuaWNtcC5zdGF0cyIsIGljbXBzdGF0LCAmc2l6ZSwgTlVMTCwgMCkpCisgICAgaWYgKC0xID09IHN5c2N0bGJ5bmFtZSgibmV0LmluZXQuaWNtcC5zdGF0cyIsIGljbXBzdGF0LCAmc2l6ZSwgTlVMTCwgMCkpIHsKKwlzbm1wX3BlcnJvcigibmV0YnNkX3JlYWRfaWNtcF9zdGF0OiBuZXQuaW5ldC5pY21wLnN0YXRzIik7CiAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKICAgICBtaWItPmljbXBJbk1zZ3MgPSBpY21wc3RhdFtJQ01QX1NUQVRfQkFEQ09ERV0KICAgICAgICAgKyBpY21wc3RhdFtJQ01QX1NUQVRfVE9PU0hPUlRdCkBAIC04Niw2ICs4OSwxMDQgQEAKICAgICByZXR1cm4gMDsKIH0KIAorCitpbnQKK25ldGJzZF9yZWFkX2ljbXA2X3N0YXQoc3RydWN0IGljbXA2X21pYiAqbWliKQoreworICAgIHVpbnQ2NF90IGljbXBzdGF0W0lDTVA2X05TVEFUU107CisgICAgc2l6ZV90ICAgc2l6ZSA9IHNpemVvZihpY21wc3RhdCk7CisgICAgaW50ICAgICAgaTsKKworICAgICh2b2lkKW1lbXNldChtaWIsIDAsIHNpemVvZigqbWliKSk7CisKKyAgICBpZiAoLTEgPT0gc3lzY3RsYnluYW1lKCJuZXQuaW5ldDYuaWNtcDYuc3RhdHMiLCBpY21wc3RhdCwgJnNpemUsIE5VTEwsIDApKSB7CisJc25tcF9wZXJyb3IoIm5ldGJzZF9yZWFkX2ljbXA2X3N0YXQ6IG5ldC5pbmV0Ni5pY21wNi5zdGF0cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgbWliLT5pY21wNkluTXNncyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfQkFEQ09ERV0KKyAgICAgICAgICAgICsgaWNtcHN0YXRbSUNNUF9TVEFUX1RPT1NIT1JUXQorCSAgICArIGljbXBzdGF0W0lDTVBfU1RBVF9DSEVDS1NVTV0KKyAgICAgICAgICAgICsgaWNtcHN0YXRbSUNNUF9TVEFUX0JBRExFTl07CisgICAgZm9yIChpID0gMDsgaSA8PSBJQ01QNl9NQVhUWVBFOyBpKyspCisgICAgICAgIG1pYi0+aWNtcDZJbk1zZ3MgICs9IGljbXBzdGF0W0lDTVA2X1NUQVRfSU5ISVNUICsgaV07CisgICAgbWliLT5pY21wNkluRXJyb3JzID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9CQURDT0RFXQorICAgICAgICArIGljbXBzdGF0W0lDTVA2X1NUQVRfVE9PU0hPUlRdCisgICAgICAgICsgaWNtcHN0YXRbSUNNUDZfU1RBVF9DSEVDS1NVTV0KKyAgICAgICAgKyBpY21wc3RhdFtJQ01QNl9TVEFUX0JBRExFTl07CisgICAgbWliLT5pY21wNkluRGVzdFVucmVhY2hzID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9JTkhJU1QgKyBJQ01QNl9EU1RfVU5SRUFDSF07CisgICAgbWliLT5pY21wNkluUGt0VG9vQmlncyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfSU5ISVNUICsgSUNNUDZfUEFDS0VUX1RPT19CSUddOworICAgIG1pYi0+aWNtcDZJblRpbWVFeGNkcyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfSU5ISVNUICsgSUNNUDZfVElNRV9FWENFRURFRF07CisgICAgbWliLT5pY21wNkluUGFybVByb2JsZW1zID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9JTkhJU1QgKyBJQ01QNl9QQVJBTV9QUk9CXTsKKyAgICBtaWItPmljbXA2SW5FY2hvcyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfSU5ISVNUICsgSUNNUDZfRUNIT19SRVFVRVNUXTsKKyAgICBtaWItPmljbXA2SW5FY2hvUmVwbGllcyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfSU5ISVNUICsgSUNNUDZfRUNIT19SRVBMWV07CisgICAgbWliLT5pY21wNkluR3JvdXBNZW1iUXVlcmllcyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfSU5ISVNUICsgTUxEX0xJU1RFTkVSX1FVRVJZXTsKKyAgICBtaWItPmljbXA2SW5Hcm91cE1lbWJSZXNwb25zZXMgPSBpY21wc3RhdFtJQ01QNl9TVEFUX0lOSElTVCArIE1MRF9MSVNURU5FUl9SRVBPUlRdOworICAgIG1pYi0+aWNtcDZJblJvdXRlclNvbGljaXRzID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9JTkhJU1QgKyBORF9ST1VURVJfU09MSUNJVF07CisgICAgbWliLT5pY21wNkluUm91dGVyQWR2ZXJ0aXNlbWVudHMgPSBpY21wc3RhdFtJQ01QNl9TVEFUX0lOSElTVCArIE5EX1JPVVRFUl9BRFZFUlRdOworICAgIG1pYi0+aWNtcDZJbk5laWdoYm9yU29saWNpdHMgPSBpY21wc3RhdFtJQ01QNl9TVEFUX0lOSElTVCArIE5EX05FSUdIQk9SX1NPTElDSVRdOworICAgIG1pYi0+aWNtcDZJbk5laWdoYm9yQWR2ZXJ0aXNlbWVudHMgPSBpY21wc3RhdFtJQ01QNl9TVEFUX0lOSElTVCArIE5EX05FSUdIQk9SX0FEVkVSVF07CisgICAgbWliLT5pY21wNkluUmVkaXJlY3RzID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9JTkhJU1QgKyBORF9SRURJUkVDVF07CisKKyAgICBtaWItPmljbXA2T3V0TXNncyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfQkFEQ09ERV0KKyAgICAgICAgKyBpY21wc3RhdFtJQ01QNl9TVEFUX1RPT1NIT1JUXQorICAgICAgICArIGljbXBzdGF0W0lDTVA2X1NUQVRfQ0hFQ0tTVU1dCisgICAgICAgICsgaWNtcHN0YXRbSUNNUDZfU1RBVF9CQURMRU5dOworICAgIGZvciAoaSA9IDA7IGkgPD0gSUNNUDZfTUFYVFlQRTsgaSsrKQorICAgICAgICBtaWItPmljbXA2T3V0TXNncyArPSBpY21wc3RhdFtJQ01QNl9TVEFUX09VVEhJU1QgKyBpXTsKKyAgICBtaWItPmljbXA2T3V0RGVzdFVucmVhY2hzID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9PVVRISVNUICsgSUNNUDZfRFNUX1VOUkVBQ0hdOworICAgIG1pYi0+aWNtcDZPdXRQa3RUb29CaWdzID0gIGljbXBzdGF0W0lDTVA2X1NUQVRfT1VUSElTVCArIElDTVA2X1BBQ0tFVF9UT09fQklHXTsKKyAgICBtaWItPmljbXA2T3V0VGltZUV4Y2RzID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9PVVRISVNUICsgSUNNUDZfVElNRV9FWENFRURFRF07CisgICAgbWliLT5pY21wNk91dFBhcm1Qcm9ibGVtcyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfT1VUSElTVCArIElDTVA2X1BBUkFNX1BST0JdOworICAgIG1pYi0+aWNtcDZPdXRFY2hvcyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfT1VUSElTVCArIElDTVA2X0VDSE9fUkVRVUVTVF07CisgICAgbWliLT5pY21wNk91dEVjaG9SZXBsaWVzID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9PVVRISVNUICsgSUNNUDZfRUNIT19SRVBMWV07CisgICAgbWliLT5pY21wNk91dFJvdXRlclNvbGljaXRzID0gIGljbXBzdGF0W0lDTVA2X1NUQVRfT1VUSElTVCArIE5EX1JPVVRFUl9TT0xJQ0lUXTsKKyAgICBtaWItPmljbXA2T3V0TmVpZ2hib3JTb2xpY2l0cyA9ICBpY21wc3RhdFtJQ01QNl9TVEFUX09VVEhJU1QgKyBORF9ORUlHSEJPUl9TT0xJQ0lUXTsKKyAgICBtaWItPmljbXA2T3V0TmVpZ2hib3JBZHZlcnRpc2VtZW50cyA9ICBpY21wc3RhdFtJQ01QNl9TVEFUX09VVEhJU1QgKyBORF9ORUlHSEJPUl9BRFZFUlRdOworICAgIG1pYi0+aWNtcDZPdXRSZWRpcmVjdHMgPSBpY21wc3RhdFtJQ01QNl9TVEFUX09VVEhJU1QgKyBORF9SRURJUkVDVF07CisgICAgbWliLT5pY21wNk91dEdyb3VwTWVtYlJlc3BvbnNlcyA9ICBpY21wc3RhdFtJQ01QNl9TVEFUX09VVEhJU1QgKyBNTERfTElTVEVORVJfUkVQT1JUXTsKKyAgICBtaWItPmljbXA2T3V0R3JvdXBNZW1iUmVkdWN0aW9ucyA9ICBpY21wc3RhdFtJQ01QNl9TVEFUX09VVEhJU1QgKyBNTERfTElTVEVORVJfRE9ORV07CisKKyAgICByZXR1cm4gMDsKK30KKworCitpbnQKK25ldGJzZF9yZWFkX2ljbXBfbXNnX3N0YXQoc3RydWN0IGljbXBfbWliICptaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpY21wNF9tc2dfbWliICptc2dtaWIsCisJCQkgIGludCAqZmxhZykKK3sKKyAgICBuZXRic2RfcmVhZF9pY21wX3N0YXQobWliKTsKKyAgICAqZmxhZyA9IDA7CisgICAgcmV0dXJuIDA7Cit9CisKKworaW50CituZXRic2RfcmVhZF9pY21wNl9tc2dfc3RhdChzdHJ1Y3QgaWNtcDZfbWliICptaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWNtcDZfbXNnX21pYiAqbXNnbWliLAorCQkJICAgaW50ICpzdXBwb3J0KQoreworICAgIHVpbnQ2NF90IGljbXBzdGF0W0lDTVA2X05TVEFUU107CisgICAgc2l6ZV90ICAgc2l6ZSA9IHNpemVvZihpY21wc3RhdCk7CisgICAgaW50ICAgICAgaTsKKworICAgIG5ldGJzZF9yZWFkX2ljbXA2X3N0YXQobWliKTsKKworICAgIGlmICgtMSA9PSBzeXNjdGxieW5hbWUoIm5ldC5pbmV0Ni5pY21wNi5zdGF0cyIsIGljbXBzdGF0LCAmc2l6ZSwgTlVMTCwgMCkpIHsKKwlzbm1wX3BlcnJvcigibmV0YnNkX3JlYWRfaWNtcDZfc3RhdDogbmV0LmluZXQ2LmljbXA2LnN0YXRzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKKwltc2dtaWItPnZhbHNbaV0uSW5UeXBlID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9JTkhJU1QraV07CisJbXNnbWliLT52YWxzW2ldLk91dFR5cGUgPSBpY21wc3RhdFtJQ01QNl9TVEFUX09VVEhJU1QraV07CisgICAgfQorICAgICpzdXBwb3J0ID0gMTsKKyAgICByZXR1cm4gMDsKK30KKworCiBpbnQKIG5ldGJzZF9yZWFkX2lwX3N0YXQoc3RydWN0IGlwX21pYiAqbWliKQogewpAQCAtOTcsOCArMTk4LDEwIEBACiAKICAgICAodm9pZCltZW1zZXQobWliLCAwLCBzaXplb2YoKm1pYikpOwogCi0gICAgaWYgKC0xID09IHN5c2N0bGJ5bmFtZSgibmV0LmluZXQuaXAuc3RhdHMiLCBpcHN0YXQsICZzaXplLCBOVUxMLCAwKSkKKyAgICBpZiAoLTEgPT0gc3lzY3RsYnluYW1lKCJuZXQuaW5ldC5pcC5zdGF0cyIsIGlwc3RhdCwgJnNpemUsIE5VTEwsIDApKSB7CisJc25tcF9wZXJyb3IoIm5ldGJzZF9yZWFkX2lwX3N0YXQ6IG5ldC5pbmV0LmlwLnN0YXRzIik7CiAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKICAgICBtaWItPmlwRm9yd2FyZGluZyA9IDA7CiAgICAgbGVuID0gc2l6ZW9mIGk7CkBAIC0xMzgsNiArMjQxLDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAorCiBpbnQKIG5ldGJzZF9yZWFkX3RjcF9zdGF0KHN0cnVjdCB0Y3BfbWliICptaWIpCiB7CkBAIC0xNDYsOCArMjUwLDEwIEBACiAKICAgICAodm9pZCltZW1zZXQobWliLCAwLCBzaXplb2YoKm1pYikpOwogCi0gICAgaWYgKC0xID09IHN5c2N0bGJ5bmFtZSgibmV0LmluZXQudGNwLnN0YXRzIiwgdGNwc3RhdCwgJnNpemUsIE5VTEwsIDApKQorICAgIGlmICgtMSA9PSBzeXNjdGxieW5hbWUoIm5ldC5pbmV0LnRjcC5zdGF0cyIsIHRjcHN0YXQsICZzaXplLCBOVUxMLCAwKSkgeworCXNubXBfcGVycm9yKCJuZXRic2RfcmVhZF90Y3Bfc3RhdDogbmV0LmluZXQudGNwLnN0YXRzIik7CiAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKICAgICBtaWItPnRjcFJ0b0FsZ29yaXRobSA9IDQ7IC8qIEFzc3VtZSBWYW4gSmFjb2JzZW4ncyBhbGdvcml0aG0gKi8KICAgICBtaWItPnRjcFJ0b01pbiA9IFRDUFRWX01JTjsKQEAgLTE3NCw2ICsyODAsNyBAQAogICAgIHJldHVybiAwOwogfQogCisKIGludAogbmV0YnNkX3JlYWRfdWRwX3N0YXQoc3RydWN0IHVkcF9taWIgKm1pYikKIHsKQEAgLTE4MiwxNCArMjg5LDE2IEBACiAKICAgICAodm9pZCltZW1zZXQobWliLCAwLCBzaXplb2YoKm1pYikpOwogCi0gICAgaWYgKC0xID09IHN5c2N0bGJ5bmFtZSgibmV0LmluZXQudWRwLnN0YXRzIiwgdWRwc3RhdCwgJnNpemUsIE5VTEwsIDApKQorICAgIGlmICgtMSA9PSBzeXNjdGxieW5hbWUoIm5ldC5pbmV0LnVkcC5zdGF0cyIsIHVkcHN0YXQsICZzaXplLCBOVUxMLCAwKSkgeworCXNubXBfcGVycm9yKCJuZXRic2RfcmVhZF91ZHBfc3RhdDogbmV0LmluZXQudWRwLnN0YXRzIik7CiAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKICAgICBtaWItPnVkcEluRGF0YWdyYW1zID0gdWRwc3RhdFtVRFBfU1RBVF9JUEFDS0VUU107CiAgICAgbWliLT51ZHBOb1BvcnRzID0gdWRwc3RhdFtVRFBfU1RBVF9OT1BPUlRdOwogICAgIG1pYi0+dWRwT3V0RGF0YWdyYW1zID0gdWRwc3RhdFtVRFBfU1RBVF9PUEFDS0VUU107CiAgICAgbWliLT51ZHBJbkVycm9ycyA9IHVkcHN0YXRbVURQX1NUQVRfSERST1BTXQotICAgICAgICArIHVkcHN0YXRbVURQX1NUQVRfQkFEU1VNXSAvKiArIHVkcHN0YXRbVURQX1NUQVRfRElTQ0FSRF0gLyogRklYTUUgKi8KKyAgICAgICAgKyB1ZHBzdGF0W1VEUF9TVEFUX0JBRFNVTV0gLyogKyB1ZHBzdGF0W1VEUF9TVEFUX0RJU0NBUkRdICovIC8qIEZJWE1FICovCiAgICAgICAgICsgdWRwc3RhdFtVRFBfU1RBVF9GVUxMU09DS10gKyB1ZHBzdGF0W1VEUF9TVEFUX0JBRExFTl07CiAKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9uZXRic2QuaCBiL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9uZXRic2QuaAppbmRleCA5MDAwNjgyLi5hY2NiOWE3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbmV0YnNkLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX25ldGJzZC5oCkBAIC0zLDg1ICszLDE2IEBACiAKICNpZiBkZWZpbmVkKE5FVEJTRF9TVEFUU19WSUFfU1lTQ1RMKQogCi1zdHJ1Y3QgaWNtcF9taWIgewotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5Nc2dzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5FcnJvcnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbkRlc3RVbnJlYWNoczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluVGltZUV4Y2RzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5QYXJtUHJvYnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJblNyY1F1ZW5jaHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJblJlZGlyZWN0czsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluRWNob3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbkVjaG9SZXBzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5UaW1lc3RhbXBzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5UaW1lc3RhbXBSZXBzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5BZGRyTWFza3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbkFkZHJNYXNrUmVwczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dE1zZ3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRFcnJvcnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXREZXN0VW5yZWFjaHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRUaW1lRXhjZHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRQYXJtUHJvYnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRTcmNRdWVuY2hzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0UmVkaXJlY3RzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0RWNob3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRFY2hvUmVwczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dFRpbWVzdGFtcHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRUaW1lc3RhbXBSZXBzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0QWRkck1hc2tzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0QWRkck1hc2tSZXBzOwotfTsKLQotc3RydWN0IGlwX21pYiB7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwRm9yd2FyZGluZzsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBEZWZhdWx0VFRMOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEluUmVjZWl2ZXM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwSW5IZHJFcnJvcnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwSW5BZGRyRXJyb3JzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEZvcndEYXRhZ3JhbXM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwSW5Vbmtub3duUHJvdG9zOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEluRGlzY2FyZHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwSW5EZWxpdmVyczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBPdXRSZXF1ZXN0czsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBPdXREaXNjYXJkczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBPdXROb1JvdXRlczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBSZWFzbVRpbWVvdXQ7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwUmVhc21SZXFkczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBSZWFzbU9LczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBSZWFzbUZhaWxzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEZyYWdPS3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwRnJhZ0ZhaWxzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEZyYWdDcmVhdGVzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcFJvdXRpbmdEaXNjYXJkczsKLX07Ci0KLXN0cnVjdCB0Y3BfbWliIHsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwUnRvQWxnb3JpdGhtOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BSdG9NaW47Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcFJ0b01heDsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwTWF4Q29ubjsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwQWN0aXZlT3BlbnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcFBhc3NpdmVPcGVuczsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwQXR0ZW1wdEZhaWxzOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BFc3RhYlJlc2V0czsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwQ3VyckVzdGFiOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BJblNlZ3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcE91dFNlZ3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcFJldHJhbnNTZWdzOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BJbkVycnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcE91dFJzdHM7Ci0gICAgc2hvcnQgICAgICAgICAgIHRjcEluRXJyc1ZhbGlkOwotICAgIHNob3J0ICAgICAgICAgICB0Y3BPdXRSc3RzVmFsaWQ7Ci19OwotCi1zdHJ1Y3QgdWRwX21pYiB7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHVkcEluRGF0YWdyYW1zOwotICAgIHVuc2lnbmVkIGxvbmcgICB1ZHBOb1BvcnRzOwotICAgIHVuc2lnbmVkIGxvbmcgICB1ZHBJbkVycm9yczsKLSAgICB1bnNpZ25lZCBsb25nICAgdWRwT3V0RGF0YWdyYW1zOwotfTsKKyNpbmNsdWRlICJrZXJuZWxfbWliLmgiCiAKIGludCAgICAgIG5ldGJzZF9yZWFkX2ljbXBfc3RhdChzdHJ1Y3QgaWNtcF9taWIgKik7CitpbnQgICAgICBuZXRic2RfcmVhZF9pY21wNl9zdGF0KHN0cnVjdCBpY21wNl9taWIgKik7CitpbnQgICAgICBuZXRic2RfcmVhZF9pY21wX21zZ19zdGF0KHN0cnVjdCBpY21wX21pYiAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWNtcDRfbXNnX21pYiAqLAorCQkgCQkgIGludCAqZmxhZyk7CitpbnQgICAgICBuZXRic2RfcmVhZF9pY21wNl9tc2dfc3RhdChzdHJ1Y3QgaWNtcDZfbWliICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWNtcDZfbXNnX21pYiAqLAorCQkJCSAgICBpbnQgKnN1cHBvcnQpOwogaW50ICAgICAgbmV0YnNkX3JlYWRfaXBfc3RhdChzdHJ1Y3QgaXBfbWliICopOwogaW50ICAgICAgbmV0YnNkX3JlYWRfdGNwX3N0YXQoc3RydWN0IHRjcF9taWIgKik7CiBpbnQgICAgICBuZXRic2RfcmVhZF91ZHBfc3RhdChzdHJ1Y3QgdWRwX21pYiAqKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9zeXNjdGwuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9zeXNjdGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjZmNjY0Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX3N5c2N0bC5jCkBAIC0wLDAgKzEsMTc1IEBACisvKgorICogc3lzY3RsIGludGVyZmFjZSBmb3IgaWNtcCBzdGF0cyBmb3Igb3RoZXJzIHRoYW4gTmV0QlNECisgKi8KKworI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNpbmNsdWRlIDxzeXMvcHJvdG9zdy5oPgorCisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPG5ldGluZXQvaW5fc3lzdG0uaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2lwLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pcF9pY21wLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2ljbXBfdmFyLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pY21wNi5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSAia2VybmVsX3N5c2N0bC5oIgorCisjaWYgZGVmaW5lZChORVRTTk1QX0NBTl9VU0VfU1lTQ1RMKQorCitpbnQKK3N5c2N0bF9yZWFkX2ljbXBfc3RhdChzdHJ1Y3QgaWNtcF9taWIgKm1pYikKK3sKKyAgICBzdHJ1Y3QgaWNtcHN0YXQgaWNtcHN0YXQ7CisgICAgc2l6ZV90ICAgc2l6ZSA9IHNpemVvZihpY21wc3RhdCk7CisgICAgaW50ICAgICAgaTsKKyAgICBzdGF0aWMgaW50ICAgICAgc25hbWVbNF0gPQorICAgICAgICB7IENUTF9ORVQsIFBGX0lORVQsIElQUFJPVE9fSUNNUCwgSUNNUENUTF9TVEFUUyB9OworCisgICAgKHZvaWQpbWVtc2V0KG1pYiwgMCwgc2l6ZW9mKCptaWIpKTsKKworICAgIGlmICgtMSA9PSBzeXNjdGwoc25hbWUsIDQsICZpY21wc3RhdCwgJnNpemUsIE5VTEwsIDApKSB7CisJc25tcF9wZXJyb3IoInN5c2N0bF9yZWFkX2ljbXBfc3RhdDogbmV0LmluZXQuaWNtcC5zdGF0cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgbWliLT5pY21wSW5Nc2dzID0gaWNtcHN0YXQuaWNwc19iYWRjb2RlCisgICAgICAgICsgaWNtcHN0YXQuaWNwc190b29zaG9ydAorICAgICAgICArIGljbXBzdGF0LmljcHNfY2hlY2tzdW0KKyAgICAgICAgKyBpY21wc3RhdC5pY3BzX2JhZGxlbjsKKyAgICBtaWItPmljbXBJbkVycm9ycyA9IG1pYi0+aWNtcEluTXNnczsKKyAgICBmb3IgKGkgPSAwOyBpIDw9IElDTVBfTUFYVFlQRTsgaSsrKQorICAgICAgICBtaWItPmljbXBJbk1zZ3MgICs9IGljbXBzdGF0LmljcHNfaW5oaXN0W2ldOworICAgIG1pYi0+aWNtcEluRGVzdFVucmVhY2hzID0gaWNtcHN0YXQuaWNwc19pbmhpc3RbSUNNUF9VTlJFQUNIXTsKKyAgICBtaWItPmljbXBJblRpbWVFeGNkcyA9IGljbXBzdGF0LmljcHNfaW5oaXN0W0lDTVBfVElNWENFRURdOworICAgIG1pYi0+aWNtcEluUGFybVByb2JzID0gaWNtcHN0YXQuaWNwc19pbmhpc3RbSUNNUF9QQVJBTVBST0JdOworICAgIG1pYi0+aWNtcEluU3JjUXVlbmNocyA9IGljbXBzdGF0LmljcHNfaW5oaXN0W0lDTVBfU09VUkNFUVVFTkNIXTsKKyAgICBtaWItPmljbXBJblJlZGlyZWN0cyA9IGljbXBzdGF0LmljcHNfaW5oaXN0W0lDTVBfUkVESVJFQ1RdOworICAgIG1pYi0+aWNtcEluRWNob3MgPSBpY21wc3RhdC5pY3BzX2luaGlzdFtJQ01QX0VDSE9dOworICAgIG1pYi0+aWNtcEluRWNob1JlcHMgPSBpY21wc3RhdC5pY3BzX2luaGlzdFtJQ01QX0VDSE9SRVBMWV07CisgICAgbWliLT5pY21wSW5UaW1lc3RhbXBzID0gaWNtcHN0YXQuaWNwc19pbmhpc3RbSUNNUF9UU1RBTVBdOworICAgIG1pYi0+aWNtcEluVGltZXN0YW1wUmVwcyA9IGljbXBzdGF0LmljcHNfaW5oaXN0W0lDTVBfVFNUQU1QUkVQTFldOworICAgIG1pYi0+aWNtcEluQWRkck1hc2tzID0gaWNtcHN0YXQuaWNwc19pbmhpc3RbSUNNUF9NQVNLUkVRXTsKKyAgICBtaWItPmljbXBJbkFkZHJNYXNrUmVwcyA9IGljbXBzdGF0LmljcHNfaW5oaXN0W0lDTVBfTUFTS1JFUExZXTsKKyAgICBtaWItPmljbXBPdXRNc2dzID0gaWNtcHN0YXQuaWNwc19vbGRzaG9ydCArIGljbXBzdGF0LmljcHNfb2xkaWNtcDsKKyAgICBmb3IgKGkgPSAwOyBpIDw9IElDTVBfTUFYVFlQRTsgaSsrKQorICAgICAgICBtaWItPmljbXBPdXRNc2dzICs9IGljbXBzdGF0LmljcHNfb3V0aGlzdFtpXTsKKyAgICBtaWItPmljbXBPdXRFcnJvcnMgPSBpY21wc3RhdC5pY3BzX29sZHNob3J0ICsgaWNtcHN0YXQuaWNwc19vbGRpY21wOworICAgIG1pYi0+aWNtcE91dERlc3RVbnJlYWNocyA9IGljbXBzdGF0LmljcHNfb3V0aGlzdFtJQ01QX1VOUkVBQ0hdOworICAgIG1pYi0+aWNtcE91dFRpbWVFeGNkcyA9IGljbXBzdGF0LmljcHNfb3V0aGlzdFtJQ01QX1RJTVhDRUVEXTsKKyAgICBtaWItPmljbXBPdXRQYXJtUHJvYnMgPSBpY21wc3RhdC5pY3BzX291dGhpc3RbSUNNUF9QQVJBTVBST0JdOworICAgIG1pYi0+aWNtcE91dFNyY1F1ZW5jaHMgPSBpY21wc3RhdC5pY3BzX291dGhpc3RbSUNNUF9TT1VSQ0VRVUVOQ0hdOworICAgIG1pYi0+aWNtcE91dFJlZGlyZWN0cyA9IGljbXBzdGF0LmljcHNfb3V0aGlzdFtJQ01QX1JFRElSRUNUXTsKKyAgICBtaWItPmljbXBPdXRFY2hvcyA9IGljbXBzdGF0LmljcHNfb3V0aGlzdFtJQ01QX0VDSE9dOworICAgIG1pYi0+aWNtcE91dEVjaG9SZXBzID0gaWNtcHN0YXQuaWNwc19vdXRoaXN0W0lDTVBfRUNIT1JFUExZXTsKKyAgICBtaWItPmljbXBPdXRUaW1lc3RhbXBzID0gaWNtcHN0YXQuaWNwc19vdXRoaXN0W0lDTVBfVFNUQU1QXTsKKyAgICBtaWItPmljbXBPdXRUaW1lc3RhbXBSZXBzID0gaWNtcHN0YXQuaWNwc19vdXRoaXN0W0lDTVBfVFNUQU1QUkVQTFldOworICAgIG1pYi0+aWNtcE91dEFkZHJNYXNrcyA9IGljbXBzdGF0LmljcHNfb3V0aGlzdFtJQ01QX01BU0tSRVFdOworICAgIG1pYi0+aWNtcE91dEFkZHJNYXNrUmVwcyA9IGljbXBzdGF0LmljcHNfb3V0aGlzdFtJQ01QX01BU0tSRVBMWV07CisKKyAgICByZXR1cm4gMDsKK30KKworCitpbnQKK3N5c2N0bF9yZWFkX2ljbXA2X3N0YXQoc3RydWN0IGljbXA2X21pYiAqbWliKQoreworICAgIHN0cnVjdCBpY21wNnN0YXQgaWNtcHN0YXQ7CisgICAgc2l6ZV90ICAgc2l6ZSA9IHNpemVvZihpY21wc3RhdCk7CisgICAgaW50ICAgICAgaTsKKyAgICBzdGF0aWMgaW50ICAgICAgc25hbWVbNF0gPQorICAgICAgICB7IENUTF9ORVQsIFBGX0lORVQ2LCBJUFBST1RPX0lDTVBWNiwgSUNNUFY2Q1RMX1NUQVRTIH07CisKKyAgICAodm9pZCltZW1zZXQobWliLCAwLCBzaXplb2YoKm1pYikpOworCisgICAgaWYgKC0xID09IHN5c2N0bChzbmFtZSwgNCwgJmljbXBzdGF0LCAmc2l6ZSwgTlVMTCwgMCkpIHsKKwlzbm1wX3BlcnJvcigic3lzY3RsX3JlYWRfaWNtcDZfc3RhdDogbmV0LmluZXQ2LmljbXA2LnN0YXRzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBtaWItPmljbXA2SW5Nc2dzID0gaWNtcHN0YXQuaWNwNnNfYmFkY29kZQorICAgICAgICAgICAgKyBpY21wc3RhdC5pY3A2c190b29zaG9ydAorCSAgICArIGljbXBzdGF0LmljcDZzX2NoZWNrc3VtCisgICAgICAgICAgICArIGljbXBzdGF0LmljcDZzX2JhZGxlbjsKKyAgICBtaWItPmljbXA2SW5FcnJvcnMgPSBtaWItPmljbXA2SW5Nc2dzOworICAgIGZvciAoaSA9IDA7IGkgPD0gSUNNUDZfTUFYVFlQRTsgaSsrKQorICAgICAgICBtaWItPmljbXA2SW5Nc2dzICArPSBpY21wc3RhdC5pY3A2c19pbmhpc3RbaV07CisgICAgbWliLT5pY21wNkluRGVzdFVucmVhY2hzID0gaWNtcHN0YXQuaWNwNnNfaW5oaXN0W0lDTVA2X0RTVF9VTlJFQUNIXTsKKyAgICBtaWItPmljbXA2SW5Qa3RUb29CaWdzID0gaWNtcHN0YXQuaWNwNnNfaW5oaXN0W0lDTVA2X1BBQ0tFVF9UT09fQklHXTsKKyAgICBtaWItPmljbXA2SW5UaW1lRXhjZHMgPSBpY21wc3RhdC5pY3A2c19pbmhpc3RbSUNNUDZfVElNRV9FWENFRURFRF07CisgICAgbWliLT5pY21wNkluUGFybVByb2JsZW1zID0gaWNtcHN0YXQuaWNwNnNfaW5oaXN0W0lDTVA2X1BBUkFNX1BST0JdOworICAgIG1pYi0+aWNtcDZJbkVjaG9zID0gaWNtcHN0YXQuaWNwNnNfaW5oaXN0W0lDTVA2X0VDSE9fUkVRVUVTVF07CisgICAgbWliLT5pY21wNkluRWNob1JlcGxpZXMgPSBpY21wc3RhdC5pY3A2c19pbmhpc3RbSUNNUDZfRUNIT19SRVBMWV07CisgICAgbWliLT5pY21wNkluR3JvdXBNZW1iUXVlcmllcyA9IGljbXBzdGF0LmljcDZzX2luaGlzdFtNTERfTElTVEVORVJfUVVFUlldOworICAgIG1pYi0+aWNtcDZJbkdyb3VwTWVtYlJlc3BvbnNlcyA9IGljbXBzdGF0LmljcDZzX2luaGlzdFtNTERfTElTVEVORVJfUkVQT1JUXTsKKyAgICBtaWItPmljbXA2SW5Sb3V0ZXJTb2xpY2l0cyA9IGljbXBzdGF0LmljcDZzX2luaGlzdFtORF9ST1VURVJfU09MSUNJVF07CisgICAgbWliLT5pY21wNkluUm91dGVyQWR2ZXJ0aXNlbWVudHMgPSBpY21wc3RhdC5pY3A2c19pbmhpc3RbTkRfUk9VVEVSX0FEVkVSVF07CisgICAgbWliLT5pY21wNkluTmVpZ2hib3JTb2xpY2l0cyA9IGljbXBzdGF0LmljcDZzX2luaGlzdFtORF9ORUlHSEJPUl9TT0xJQ0lUXTsKKyAgICBtaWItPmljbXA2SW5OZWlnaGJvckFkdmVydGlzZW1lbnRzID0gaWNtcHN0YXQuaWNwNnNfaW5oaXN0W05EX05FSUdIQk9SX0FEVkVSVF07CisgICAgbWliLT5pY21wNkluUmVkaXJlY3RzID0gaWNtcHN0YXQuaWNwNnNfaW5oaXN0W05EX1JFRElSRUNUXTsKKworICAgIG1pYi0+aWNtcDZPdXRNc2dzID0gaWNtcHN0YXQuaWNwNnNfY2FudGVycm9yCisgICAgICAgICsgaWNtcHN0YXQuaWNwNnNfdG9vZnJlcTsKKyAgICBmb3IgKGkgPSAwOyBpIDw9IElDTVA2X01BWFRZUEU7IGkrKykKKyAgICAgICAgbWliLT5pY21wNk91dE1zZ3MgKz0gaWNtcHN0YXQuaWNwNnNfb3V0aGlzdFtpXTsKKyAgICBtaWItPmljbXA2T3V0RGVzdFVucmVhY2hzID0gaWNtcHN0YXQuaWNwNnNfb3V0aGlzdFtJQ01QNl9EU1RfVU5SRUFDSF07CisgICAgbWliLT5pY21wNk91dFBrdFRvb0JpZ3MgPSAgaWNtcHN0YXQuaWNwNnNfb3V0aGlzdFtJQ01QNl9QQUNLRVRfVE9PX0JJR107CisgICAgbWliLT5pY21wNk91dFRpbWVFeGNkcyA9IGljbXBzdGF0LmljcDZzX291dGhpc3RbSUNNUDZfVElNRV9FWENFRURFRF07CisgICAgbWliLT5pY21wNk91dFBhcm1Qcm9ibGVtcyA9IGljbXBzdGF0LmljcDZzX291dGhpc3RbSUNNUDZfUEFSQU1fUFJPQl07CisgICAgbWliLT5pY21wNk91dEVjaG9zID0gaWNtcHN0YXQuaWNwNnNfb3V0aGlzdFtJQ01QNl9FQ0hPX1JFUVVFU1RdOworICAgIG1pYi0+aWNtcDZPdXRFY2hvUmVwbGllcyA9IGljbXBzdGF0LmljcDZzX291dGhpc3RbSUNNUDZfRUNIT19SRVBMWV07CisgICAgbWliLT5pY21wNk91dFJvdXRlclNvbGljaXRzID0gIGljbXBzdGF0LmljcDZzX291dGhpc3RbTkRfUk9VVEVSX1NPTElDSVRdOworICAgIG1pYi0+aWNtcDZPdXROZWlnaGJvclNvbGljaXRzID0gIGljbXBzdGF0LmljcDZzX291dGhpc3RbTkRfTkVJR0hCT1JfU09MSUNJVF07CisgICAgbWliLT5pY21wNk91dE5laWdoYm9yQWR2ZXJ0aXNlbWVudHMgPSAgaWNtcHN0YXQuaWNwNnNfb3V0aGlzdFtORF9ORUlHSEJPUl9BRFZFUlRdOworICAgIG1pYi0+aWNtcDZPdXRSZWRpcmVjdHMgPSBpY21wc3RhdC5pY3A2c19vdXRoaXN0W05EX1JFRElSRUNUXTsKKyAgICBtaWItPmljbXA2T3V0R3JvdXBNZW1iUmVzcG9uc2VzID0gIGljbXBzdGF0LmljcDZzX291dGhpc3RbTUxEX0xJU1RFTkVSX1JFUE9SVF07CisgICAgbWliLT5pY21wNk91dEdyb3VwTWVtYlJlZHVjdGlvbnMgPSAgaWNtcHN0YXQuaWNwNnNfb3V0aGlzdFtNTERfTElTVEVORVJfRE9ORV07CisKKyAgICByZXR1cm4gMDsKK30KKworCitpbnQKK3N5c2N0bF9yZWFkX2ljbXBfbXNnX3N0YXQoc3RydWN0IGljbXBfbWliICptaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpY21wNF9tc2dfbWliICptc2dtaWIsCisJCQkgIGludCAqZmxhZykKK3sKKyAgICBzeXNjdGxfcmVhZF9pY21wX3N0YXQobWliKTsKKyAgICAqZmxhZyA9IDA7CisgICAgcmV0dXJuIDA7Cit9CisKKworaW50CitzeXNjdGxfcmVhZF9pY21wNl9tc2dfc3RhdChzdHJ1Y3QgaWNtcDZfbWliICptaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWNtcDZfbXNnX21pYiAqbXNnbWliLAorCQkJICAgaW50ICpzdXBwb3J0KQoreworICAgIHN0cnVjdCBpY21wNnN0YXQgaWNtcHN0YXQ7CisgICAgc2l6ZV90ICAgc2l6ZSA9IHNpemVvZihpY21wc3RhdCk7CisgICAgaW50ICAgICAgaTsKKyAgICBzdGF0aWMgaW50ICAgICAgc25hbWVbNF0gPQorICAgICAgICB7IENUTF9ORVQsIFBGX0lORVQ2LCBJUFBST1RPX0lDTVBWNiwgSUNNUFY2Q1RMX1NUQVRTIH07CisKKyAgICBzeXNjdGxfcmVhZF9pY21wNl9zdGF0KG1pYik7CisKKyAgICBpZiAoLTEgPT0gc3lzY3RsKHNuYW1lLCA0LCAmaWNtcHN0YXQsICZzaXplLCBOVUxMLCAwKSkgeworCXNubXBfcGVycm9yKCJzeXNjdGxfcmVhZF9pY21wNl9zdGF0OiBuZXQuaW5ldDYuaWNtcDYuc3RhdHMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykgeworCW1zZ21pYi0+dmFsc1tpXS5JblR5cGUgPSBpY21wc3RhdC5pY3A2c19pbmhpc3RbaV07CisJbXNnbWliLT52YWxzW2ldLk91dFR5cGUgPSBpY21wc3RhdC5pY3A2c19vdXRoaXN0W2ldOworICAgIH0KKyAgICAqc3VwcG9ydCA9IDE7CisgICAgcmV0dXJuIDA7Cit9CisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfc3lzY3RsLmggYi9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfc3lzY3RsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ4NDk3MwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9zeXNjdGwuaApAQCAtMCwwICsxLDE5IEBACisjaWZuZGVmIF9NSUJHUk9VUF9LRVJORUxfU1lTQ1RMX0gKKyNkZWZpbmUgX01JQkdST1VQX0tFUk5FTF9TWVNDVExfSAorCisjaWYgZGVmaW5lZChORVRTTk1QX0NBTl9VU0VfU1lTQ1RMKQorCisjaW5jbHVkZSAia2VybmVsX21pYi5oIgorCitpbnQgICAgICBzeXNjdGxfcmVhZF9pY21wX3N0YXQoc3RydWN0IGljbXBfbWliICopOworaW50ICAgICAgc3lzY3RsX3JlYWRfaWNtcDZfc3RhdChzdHJ1Y3QgaWNtcDZfbWliICopOworaW50ICAgICAgc3lzY3RsX3JlYWRfaWNtcF9tc2dfc3RhdChzdHJ1Y3QgaWNtcF9taWIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGljbXA0X21zZ19taWIgKiwKKwkJIAkJICBpbnQgKmZsYWcpOworaW50ICAgICAgc3lzY3RsX3JlYWRfaWNtcDZfbXNnX3N0YXQoc3RydWN0IGljbXA2X21pYiAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGljbXA2X21zZ19taWIgKiwKKwkJCQkgICAgaW50ICpzdXBwb3J0KTsKKworI2VuZGlmIC8qIE5FVFNOTVBfQ0FOX1VTRV9TWVNDVEwgKi8KKworI2VuZGlmIC8qIF9NSUJHUk9VUF9LRVJORUxfU1lTQ1RMX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL21pYklJX2NvbW1vbi5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvbWliSUlfY29tbW9uLmgKaW5kZXggMTYwYWI4Mi4uODdlZjlkMSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvbWliSUlfY29tbW9uLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvbWliSUlfY29tbW9uLmgKQEAgLTg4LDcgKzg4LDYgQEAKICNpbmNsdWRlIDxkbWFsbG9jLmg+CiAjZW5kaWYKIAotCiAjaWZkZWYgc29sYXJpczIKICNpbmNsdWRlICJrZXJuZWxfc3Vub3M1LmgiCiAjZWxzZQpAQCAtMTAwLDYgKzk5LDEwIEBACiAjaWZkZWYgTkVUQlNEX1NUQVRTX1ZJQV9TWVNDVEwKICNpbmNsdWRlICJrZXJuZWxfbmV0YnNkLmgiCiAjZW5kaWYKKyNpZiBkZWZpbmVkKE5FVFNOTVBfQ0FOX1VTRV9TWVNDVEwpIC8qICYmIGRlZmluZWQoSUNNUENUTF9TVEFUUykgKi8KKyNpbmNsdWRlICJrZXJuZWxfc3lzY3RsLmgiCisjZW5kaWYKKwogCS8qIG9yIE1JQl94eHhDT1VOVEVSX1NZTUJPTCB8fCBocHV4MTEgKi8KICNpZmRlZiBocHV4CiAjaW5jbHVkZSA8c3lzL21pYi5oPgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvc2V0U2VyaWFsTm8uYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3NldFNlcmlhbE5vLmMKaW5kZXggOTBhMGFiYS4uODVhNDA5OCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvc2V0U2VyaWFsTm8uYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9zZXRTZXJpYWxOby5jCkBAIC0yLDkgKzIsMTMgQEAKICAqICBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgc25tcFNldFNlcmlhbE5vIFRlc3RBbmRJbmNyIGNvdW50ZXIKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh3YXRjaGVyX3NwaW5sb2NrKQorCisKICNpbmNsdWRlICJzZXRTZXJpYWxOby5oIgogCiAvKgpAQCAtNjAsMTMgKzY0LDIxIEBACiAgICAgLyoKICAgICAgKiBSZWdpc3RlciAnc2V0c2VyaWFsbm8nIGFzIGEgd2F0Y2hlZCBzcGlubG9jayBvYmplY3QKICAgICAgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NwaW5sb2NrKAogICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigic25tcFNldFNlcmlhbE5vIiwgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X3NlcmlhbF9vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgoc2V0X3NlcmlhbF9vaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNldHNlcmlhbG5vICk7Ci0KKyNlbHNlICAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NwaW5sb2NrKAorICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigic25tcFNldFNlcmlhbE5vIiwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X3NlcmlhbF9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgoc2V0X3NlcmlhbF9vaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2V0c2VyaWFsbm8gKTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgREVCVUdNU0dUTCgoInNjYWxhcl9pbnQiLCAiRG9uZSBpbml0YWxpemluZyBleGFtcGxlIHNjYWxhciBpbnRcbiIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmMKaW5kZXggMGEyM2M5ZS4uMWViZTY0YyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaD4KQEAgLTYsNiArNywxMCBAQAogI2luY2x1ZGUgInNubXBfbWliLmgiCiAjaW5jbHVkZSAidXBkYXRlcy5oIgogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHJ1dGh2YWx1ZSkKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogc3RhdGljIGNvbnN0IG9pZCBzbm1wX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxMSB9OwogCiBleHRlcm4gbG9uZyBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzOwpAQCAtMzAsMTEgKzM1LDEzIEBACiAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKIHsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgaWYgKHJlcWluZm8tPm1vZGUgPT0gTU9ERV9TRVRfUkVTRVJWRTEpIHsKICAgICAgICAgaW50IHJlcyA9IG5ldHNubXBfY2hlY2tfdmJfdHJ1dGh2YWx1ZShyZXF1ZXN0cy0+cmVxdWVzdHZiKTsKICAgICAgICAgaWYgKHJlcyAhPSBTTk1QX0VSUl9OT0VSUk9SKQogICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcihyZXF1ZXN0cywgcmVzKTsKICAgICB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliXzVfNS5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWJfNV81LmMKaW5kZXggMmVmZmZlYi4uYzYzZWZiNiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWJfNV81LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWJfNV81LmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgpAQCAtOCw2ICs5LDExIEBACiAjaW5jbHVkZSAic25tcF9taWJfNV81LmgiCiAjaW5jbHVkZSAidXBkYXRlcy5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShoZWxwZXJfc3RhdGlzdGljcykKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90cnV0aHZhbHVlKQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAjZGVmaW5lIFNOTVBfT0lEIDEsIDMsIDYsIDEsIDIsIDEsIDExCiAKIHN0YXRpYyBvaWQgc25tcF9vaWRbXSA9IHsgU05NUF9PSUQgfTsKQEAgLTM0LDExICs0MCwxMyBAQAogICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCiAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCiB7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfU0VUX1JFU0VSVkUxKSB7CiAgICAgICAgIGludCByZXMgPSBuZXRzbm1wX2NoZWNrX3ZiX3RydXRodmFsdWUocmVxdWVzdHMtPnJlcXVlc3R2Yik7CiAgICAgICAgIGlmIChyZXMgIT0gU05NUF9FUlJfTk9FUlJPUikKICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3IocmVxdWVzdHMsIHJlcyk7CiAgICAgfQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KIApAQCAtOTEsMTEgKzk5LDIwIEBACiAgICAgICAgIG9pZCBzbm1wRW5hYmxlQXV0aGVuVHJhcHNfb2lkW10gPSB7IFNOTVBfT0lELCAzMCwgMCB9OwogCXN0YXRpYyBuZXRzbm1wX3dhdGNoZXJfaW5mbyBlbmFibGVhdXRoZW5faW5mbzsKICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnID0KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV91cGRhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICAgICAgICAgIm1pYklJL3NubXBFbmFibGVBdXRoZW5UcmFwcyIsCiAgICAgICAgICAgICAgICAgc25tcEVuYWJsZUF1dGhlblRyYXBzX29pZCwKICAgICAgICAgICAgICAgICBPSURfTEVOR1RIKHNubXBFbmFibGVBdXRoZW5UcmFwc19vaWQpLAogICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSwgJnNubXBfZW5hYmxlYXV0aGVudHJhcHNzZXQpOworI2Vsc2UgIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3VwZGF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICAgICAibWliSUkvc25tcEVuYWJsZUF1dGhlblRyYXBzIiwKKyAgICAgICAgICAgICAgICBzbm1wRW5hYmxlQXV0aGVuVHJhcHNfb2lkLAorICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgoc25tcEVuYWJsZUF1dGhlblRyYXBzX29pZCksCisgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFksICZzbm1wX2VuYWJsZWF1dGhlbnRyYXBzc2V0KTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKICAgICAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWcsIG5ldHNubXBfZ2V0X3RydXRodmFsdWUoKSk7CiAgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKICAgICAgICAgICAgIHJlZywKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYwppbmRleCA1Njc0NzhhLi5lZDI2OTE5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jCkBAIC04LDYgKzgsMTEgQEAKIAogI2luY2x1ZGUgInN5c09SVGFibGUuaCIKIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2NvbnRhaW5lcikKKworCiAvKiogVHlwaWNhbCBkYXRhIHN0cnVjdHVyZSBmb3IgYSByb3cgZW50cnkgKi8KIHR5cGVkZWYgc3RydWN0IHN5c09SVGFibGVfZW50cnlfcyB7CiAgICAgbmV0c25tcF9pbmRleCAgICAgICAgICAgIG9pZF9pbmRleDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYwppbmRleCA5YjViZjU2Li42NWIwYjdjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jCkBAIC0xNCw2ICsxNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpZiBIQVZFX1NURExJQl9ICiAjaW5jbHVkZSA8c3RkbGliLmg+CkBAIC00NCw2ICs0NSw4IEBACiAjaW5jbHVkZSAic3lzdGVtX21pYi5oIgogI2luY2x1ZGUgInVwZGF0ZXMuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUod2F0Y2hlcl9yZWFkX29ubHlfaW50X3NjYWxhcikKKwogICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCiAJICoKIAkgKiAgS2VybmVsICYgaW50ZXJmYWNlIGluZm9ybWF0aW9uLApAQCAtODEsMjkgKzg0LDIzIEBACiAJICoqKioqKioqKioqKioqKioqKioqKi8KIAogc3RhdGljIHZvaWQKLXN5c3RlbV9wYXJzZV9jb25maWdfc3lzZGVzY3IoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmNwdHIpCitzeXN0ZW1fcGFyc2VfY29uZmlnX3N0cmluZzIoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmNwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciogdmFsdWUsIHNpemVfdCBzaXplKQogewotICAgIGlmIChzdHJsZW4oY3B0cikgPj0gc2l6ZW9mKHZlcnNpb25fZGVzY3IpKSB7Ci0JbmV0c25tcF9jb25maWdfZXJyb3IoInN5c2Rlc2NyIHRva2VuIHRvbyBsb25nIChtdXN0IGJlIDwgJWx1KTpcblx0JXMiLAotCQkJICAgICAodW5zaWduZWQgbG9uZylzaXplb2YodmVyc2lvbl9kZXNjciksIGNwdHIpOwotICAgIH0gZWxzZSBpZiAoc3RyY21wKGNwdHIsICJcIlwiIikgPT0gMCkgewotICAgICAgICB2ZXJzaW9uX2Rlc2NyWzBdID0gJ1wwJzsKKyAgICBpZiAoc3RybGVuKGNwdHIpIDwgc2l6ZSkgeworICAgICAgICBzdHJjcHkodmFsdWUsIGNwdHIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0cmNweSh2ZXJzaW9uX2Rlc2NyLCBjcHRyKTsKKyAgICAgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIiVzIHRva2VuIHRvbyBsb25nIChtdXN0IGJlIDwgJWx1KTpcblx0JXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiwgKHVuc2lnbmVkIGxvbmcpc2l6ZSwgY3B0cik7CiAgICAgfQogfQogCi1ORVRTTk1QX1NUQVRJQ19JTkxJTkUgdm9pZAorc3RhdGljIHZvaWQKIHN5c3RlbV9wYXJzZV9jb25maWdfc3RyaW5nKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgY2hhciogdmFsdWUsIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBndWFyZCkKIHsKLSAgICBpZiAoc3RybGVuKGNwdHIpID49IHNpemUpIHsKLQluZXRzbm1wX2NvbmZpZ19lcnJvcigiJXMgdG9rZW4gdG9vIGxvbmcgKG11c3QgYmUgPCAlbHUpOlxuXHQlcyIsCi0JCQkgICAgIHRva2VuLCAodW5zaWduZWQgbG9uZylzaXplLCBjcHRyKTsKLSAgICB9Ci0KLSAgICBpZiAoKnRva2VuID09ICdwJyAmJiBzdHJjYXNlY21wKHRva2VuICsgMSwgbmFtZSkgPT0gMCkgeworICAgIGlmICgqdG9rZW4gPT0gJ3AnKSB7CiAgICAgICAgIGlmICgqZ3VhcmQgPCAwKSB7CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogVGhpcyBpcyBib2d1cyAoYW5kIHNob3VsZG4ndCBoYXBwZW4gYW55d2F5KSAtLSB0aGUgdmFsdWUgaXMKQEAgLTExMyw3ICsxMTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgImlnbm9yaW5nIGF0dGVtcHRlZCBvdmVycmlkZSBvZiByZWFkLW9ubHkgJXMuMFxuIiwgbmFtZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICArKygqZ3VhcmQpOworICAgICAgICAgICAgKmd1YXJkID0gMTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICgqZ3VhcmQgPiAwKSB7CkBAIC0xMzAsMTEgKzEyNywxNCBAQAogICAgICAgICAqZ3VhcmQgPSAtMTsKICAgICB9CiAKLSAgICBpZiAoc3RyY21wKGNwdHIsICJcIlwiIikgPT0gMCkgewotICAgICAgICAqdmFsdWUgPSAnXDAnOwotICAgIH0gZWxzZSBpZiAoc3RybGVuKGNwdHIpIDwgc2l6ZSkgewotICAgICAgICBzdHJjcHkodmFsdWUsIGNwdHIpOwotICAgIH0KKyAgICBzeXN0ZW1fcGFyc2VfY29uZmlnX3N0cmluZzIodG9rZW4sIGNwdHIsIHZhbHVlLCBzaXplKTsKK30KKworc3RhdGljIHZvaWQKK3N5c3RlbV9wYXJzZV9jb25maWdfc3lzZGVzY3IoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmNwdHIpCit7CisgICAgc3lzdGVtX3BhcnNlX2NvbmZpZ19zdHJpbmcyKHRva2VuLCBjcHRyLCB2ZXJzaW9uX2Rlc2NyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodmVyc2lvbl9kZXNjcikpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTc1LDcgKzE3NSw4IEBACiAgICAgICAgIHN5c09iamVjdElEQnl0ZUxlbmd0aCA9IHZlcnNpb25fc3lzb2lkX2xlbiAgKiBzaXplb2Yob2lkKTsKICAgICAgICAgbWVtY3B5KHN5c09iamVjdElELCB2ZXJzaW9uX3N5c29pZCwgc3lzT2JqZWN0SURCeXRlTGVuZ3RoKTsKICAgICB9IGVsc2UKLSAgICAgICAgc3lzT2JqZWN0SURCeXRlTGVuZ3RoID0gc3lzT2JqZWN0SURMZW5ndGggKiBzaXplb2Yob2lkKTsKKworCQlzeXNPYmplY3RJREJ5dGVMZW5ndGggPSBzeXNPYmplY3RJRExlbmd0aCAqIHNpemVvZihvaWQpOwogfQogCiAKQEAgLTM1MywxNyArMzU0LDI4IEBACiAgICAgewogICAgICAgICBjb25zdCBvaWQgc3lzQ29udGFjdF9vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMSwgNCB9OwogICAgICAgICBzdGF0aWMgbmV0c25tcF93YXRjaGVyX2luZm8gc3lzQ29udGFjdF93aW5mbzsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCisgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIoCisgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV91cGRhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAgICAgIm1pYklJL3N5c0NvbnRhY3QiLCBzeXNDb250YWN0X29pZCwgT0lEX0xFTkdUSChzeXNDb250YWN0X29pZCksIAorICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSwgJnN5c0NvbnRhY3RTZXQpLAorICAgICAgICAgICAgbmV0c25tcF9pbml0X3dhdGNoZXJfaW5mbygKKyAgICAgICAgICAgICAgICAmc3lzQ29udGFjdF93aW5mbywgc3lzQ29udGFjdCwgU1lTX1NUUklOR19MRU4gLSAxLAorICAgICAgICAgICAgICAgIEFTTl9PQ1RFVF9TVFIsIFdBVENIRVJfTUFYX1NJWkUgfCBXQVRDSEVSX1NJWkVfU1RSTEVOKSk7CisjZWxzZSAgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKAogICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfdXBkYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgICAgICJtaWJJSS9zeXNDb250YWN0Iiwgc3lzQ29udGFjdF9vaWQsIE9JRF9MRU5HVEgoc3lzQ29udGFjdF9vaWQpLAotICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSwgJnN5c0NvbnRhY3RTZXQpLAorICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZLCAmc3lzQ29udGFjdFNldCksCiAgICAgICAgICAgICBuZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvKAotCQkmc3lzQ29udGFjdF93aW5mbywgc3lzQ29udGFjdCwgU1lTX1NUUklOR19MRU4gLSAxLAotCQlBU05fT0NURVRfU1RSLCBXQVRDSEVSX01BWF9TSVpFIHwgV0FUQ0hFUl9TSVpFX1NUUkxFTikpOworICAgICAgICAgICAgICAgICZzeXNDb250YWN0X3dpbmZvLCBzeXNDb250YWN0LCBTWVNfU1RSSU5HX0xFTiAtIDEsCisgICAgICAgICAgICAgICAgQVNOX09DVEVUX1NUUiwgV0FUQ0hFUl9NQVhfU0laRSB8IFdBVENIRVJfU0laRV9TVFJMRU4pKTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogICAgIHsKICAgICAgICAgY29uc3Qgb2lkIHN5c05hbWVfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDEsIDUgfTsKICAgICAgICAgc3RhdGljIG5ldHNubXBfd2F0Y2hlcl9pbmZvIHN5c05hbWVfd2luZm87CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKAogICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfdXBkYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgICAgICJtaWJJSS9zeXNOYW1lIiwgc3lzTmFtZV9vaWQsIE9JRF9MRU5HVEgoc3lzTmFtZV9vaWQpLApAQCAtMzcxLDEwICszODMsMjAgQEAKICAgICAgICAgICAgIG5ldHNubXBfaW5pdF93YXRjaGVyX2luZm8oCiAgICAgICAgICAgICAgICAgJnN5c05hbWVfd2luZm8sIHN5c05hbWUsIFNZU19TVFJJTkdfTEVOIC0gMSwgQVNOX09DVEVUX1NUUiwKICAgICAgICAgICAgICAgICBXQVRDSEVSX01BWF9TSVpFIHwgV0FUQ0hFUl9TSVpFX1NUUkxFTikpOworI2Vsc2UgIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcigKKyAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3VwZGF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICAgICAibWliSUkvc3lzTmFtZSIsIHN5c05hbWVfb2lkLCBPSURfTEVOR1RIKHN5c05hbWVfb2lkKSwKKyAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSwgJnN5c05hbWVTZXQpLAorICAgICAgICAgICAgbmV0c25tcF9pbml0X3dhdGNoZXJfaW5mbygKKyAgICAgICAgICAgICAgICAmc3lzTmFtZV93aW5mbywgc3lzTmFtZSwgU1lTX1NUUklOR19MRU4gLSAxLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgIFdBVENIRVJfTUFYX1NJWkUgfCBXQVRDSEVSX1NJWkVfU1RSTEVOKSk7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KICAgICB7CiAgICAgICAgIGNvbnN0IG9pZCBzeXNMb2NhdGlvbl9vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMSwgNiB9OwogICAgICAgICBzdGF0aWMgbmV0c25tcF93YXRjaGVyX2luZm8gc3lzTG9jYXRpb25fd2luZm87CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKAogICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfdXBkYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgICAgICJtaWJJSS9zeXNMb2NhdGlvbiIsIHN5c0xvY2F0aW9uX29pZCwKQEAgLTM4Myw2ICs0MDUsMTYgQEAKICAgICAgICAgICAgIG5ldHNubXBfaW5pdF93YXRjaGVyX2luZm8oCiAJCSZzeXNMb2NhdGlvbl93aW5mbywgc3lzTG9jYXRpb24sIFNZU19TVFJJTkdfTEVOIC0gMSwKIAkJQVNOX09DVEVUX1NUUiwgV0FUQ0hFUl9NQVhfU0laRSB8IFdBVENIRVJfU0laRV9TVFJMRU4pKTsKKyNlbHNlICAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIoCisgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV91cGRhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAgICAgIm1pYklJL3N5c0xvY2F0aW9uIiwgc3lzTG9jYXRpb25fb2lkLAorICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgoc3lzTG9jYXRpb25fb2lkKSwKKyAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSwgJnN5c0xvY2F0aW9uU2V0KSwKKyAgICAgICAgICAgIG5ldHNubXBfaW5pdF93YXRjaGVyX2luZm8oCisJCSZzeXNMb2NhdGlvbl93aW5mbywgc3lzTG9jYXRpb24sIFNZU19TVFJJTkdfTEVOIC0gMSwKKwkJQVNOX09DVEVUX1NUUiwgV0FUQ0hFUl9NQVhfU0laRSB8IFdBVENIRVJfU0laRV9TVFJMRU4pKTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogICAgIHsKICAgICAgICAgY29uc3Qgb2lkIHN5c1NlcnZpY2VzX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxLCA3IH07CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS90Y3AuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3RjcC5jCmluZGV4IDJiZTk0ODEuLjNjNzlmYWQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3RjcC5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3RjcC5jCkBAIC01LDYgKzUsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgIm1pYklJX2NvbW1vbi5oIgogCiAjaWYgSEFWRV9TVERMSUJfSApAQCAtOTEsNyArOTIsOSBAQAogaW50ICBoeiA9IDEwMDA7CiAjZW5kaWYKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUF9DT1VOVF9DT05ORUNUSU9OUwogZXh0ZXJuIGludCBUQ1BfQ291bnRfQ29ubmVjdGlvbnMoIHZvaWQgKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUF9DT1VOVF9DT05ORUNUSU9OUyAqLwogICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCiAJICoKIAkgKiAgSW5pdGlhbGlzYXRpb24gJiBjb21tb24gaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zCkBAIC0zNzAsMTEgKzM3MywxNCBAQAogICAgICAgICByZXRfdmFsdWUgPSB0Y3BzdGF0LnRjcHNfZHJvcHM7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVENQQ1VSUkVTVEFCOgotI2lmZGVmIFVTSU5HX01JQklJX1RDUFRBQkxFX01PRFVMRQorI2lmZGVmIE5FVFNOTVBfRkVBVFVSRV9DSEVDS0lORworICAgICAgICBuZXRzbm1wX2ZlYXR1cmVfd2FudCh0Y3BfY291bnRfY29ubmVjdGlvbnMpCisjZW5kaWYKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BfQ09VTlRfQ09OTkVDVElPTlMKICAgICAgICAgcmV0X3ZhbHVlID0gVENQX0NvdW50X0Nvbm5lY3Rpb25zKCk7CiAjZWxzZQogICAgICAgICByZXRfdmFsdWUgPSAwOwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BfQ09VTlRfQ09OTkVDVElPTlMgKi8KICAgICAgICAgdHlwZSA9IEFTTl9HQVVHRTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUQ1BJTlNFR1M6CkBAIC01NDksNiArNTU1LDcgQEAKIAogICAgIGNhc2UgTU9ERV9HRVRORVhUOgogICAgIGNhc2UgTU9ERV9HRVRCVUxLOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CiAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CkBAIC01NTgsNiArNTY1LDcgQEAKICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJtaWJJSS90Y3A6IFVuc3VwcG9ydGVkIG1vZGUgKCVkKVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAibWliSUkvdGNwOiBVbnJlY29nbmlzZWQgbW9kZSAoJWQpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMKaW5kZXggYzljOWRkOC4uMDNjODVlNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jCkBAIC0xNSw2ICsxNSw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSAibWliSUlfY29tbW9uLmgiCiAKICNpZiBIQVZFX05FVElORVRfVENQX0gKQEAgLTQyLDYgKzQzLDEwIEBACiAjaW5jbHVkZSAidGNwLmgiCiAjaW5jbHVkZSAidGNwVGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRjcHRhYmxlX2FsbCwgbGlibmV0c25tcG1pYnMpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0Y3BfY291bnRfY29ubmVjdGlvbnMsIHRjcHRhYmxlX2FsbCkKKwogI2lmZGVmIGhwdXgxMQogI2RlZmluZQlUQ1BUQUJMRV9FTlRSWV9UWVBFCW1pYl90Y3BDb25uRW50IAogI2RlZmluZQlUQ1BUQUJMRV9TVEFURQkJU3RhdGUgCkBAIC0xNDIsNyArMTQ3LDcgQEAKICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogICAgIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAgICAgICAgICAgKmlpbmZvOwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZ2luZm87Ci0gICAgaW50IHJjOworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjOwogCiAgICAgREVCVUdNU0dUTCgoIm1pYklJL3RjcFRhYmxlIiwgIkluaXRpYWxpc2luZyBUQ1AgVGFibGVcbiIpKTsKICAgICAvKgpAQCAtMTgyLDcgKzE4Nyw3IEBACiAgICAgICAgICAgICB0Y3BUYWJsZV9oYW5kbGVyLAogICAgICAgICAgICAgdGNwVGFibGVfb2lkLCBPSURfTEVOR1RIKHRjcFRhYmxlX29pZCksCiAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSksCi0gICAgcmMgPSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yKHJlZ2luZm8sIGlpbmZvKTsKKyAgICByYyA9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IyKHJlZ2luZm8sIGlpbmZvKTsKICAgICBpZiAocmMgIT0gU05NUEVSUl9TVUNDRVNTKQogICAgICAgICByZXR1cm47CiAKQEAgLTI3MywxMiArMjc4LDE0IEBACiAKICAgICBjYXNlIE1PREVfR0VUTkVYVDoKICAgICBjYXNlIE1PREVfR0VUQlVMSzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgogICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgogICAgIGNhc2UgTU9ERV9TRVRfQ09NTUlUOgogICAgIGNhc2UgTU9ERV9TRVRfRlJFRToKICAgICBjYXNlIE1PREVfU0VUX1VORE86CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIm1pYklJL3RjcFRhYmxlOiBVbnN1cHBvcnRlZCBtb2RlICglZClcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxaW5mby0+bW9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjkxLDExICsyOTgsMTMgQEAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUF9DT1VOVF9DT05ORUNUSU9OUwogaW50CiBUQ1BfQ291bnRfQ29ubmVjdGlvbnMoIHZvaWQgKSB7CiAgICAgdGNwVGFibGVfbG9hZChOVUxMLCBOVUxMKTsKICAgICByZXR1cm4gdGNwX2VzdGFiOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQX0NPVU5UX0NPTk5FQ1RJT05TICovCiAKIAkvKgogCSAqIFR3byBmb3JtcyBvZiBpdGVyYXRpb24gaG9vayByb3V0aW5lczoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3VkcC5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmMKaW5kZXggYzlmOGE0Zi4uMWRkY2JjNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmMKQEAgLTMyOSw2ICszMjksNyBAQAogCiAgICAgY2FzZSBNT0RFX0dFVE5FWFQ6CiAgICAgY2FzZSBNT0RFX0dFVEJVTEs6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKICAgICBjYXNlIE1PREVfU0VUX0FDVElPTjoKQEAgLTMzOCw2ICszMzksNyBAQAogICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIm1pYklJL3VkcDogVW5zdXBwb3J0ZWQgbW9kZSAoJWQpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUpOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgZGVmYXVsdDoKICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJtaWJJSS91ZHA6IFVucmVjb2duaXNlZCBtb2RlICglZClcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxaW5mby0+bW9kZSk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS91ZHBUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYwppbmRleCBmNDYxZjAyLi4yYzg4NzQ5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS91ZHBUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmMKQEAgLTEyOSw3ICsxMjksNyBAQAogICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICAgICAgICAgICAqaWluZm87CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnaW5mbzsKLSAgICBpbnQgcmM7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmM7CiAKICAgICBERUJVR01TR1RMKCgibWliSUkvdWRwVGFibGUiLCAiSW5pdGlhbGlzaW5nIFVEUCBUYWJsZVxuIikpOwogICAgIC8qCkBAIC0xNjgsNyArMTY4LDcgQEAKICAgICAgICAgICAgIHVkcFRhYmxlX2hhbmRsZXIsCiAgICAgICAgICAgICB1ZHBUYWJsZV9vaWQsIE9JRF9MRU5HVEgodWRwVGFibGVfb2lkKSwKICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKSwKLSAgICByYyA9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IocmVnaW5mbywgaWluZm8pOworICAgIHJjID0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcjIocmVnaW5mbywgaWluZm8pOwogICAgIGlmIChyYyAhPSBTTk1QRVJSX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjM5LDEyICsyMzksMTQgQEAKIAogICAgIGNhc2UgTU9ERV9HRVRORVhUOgogICAgIGNhc2UgTU9ERV9HRVRCVUxLOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CiAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CiAgICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6CiAgICAgY2FzZSBNT0RFX1NFVF9GUkVFOgogICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAibWliSUkvdWRwVGFibGU6IFVuc3VwcG9ydGVkIG1vZGUgKCVkKVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS91cGRhdGVzLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS91cGRhdGVzLmMKaW5kZXggODdiZWQ4OS4uOTM4ZWEyOSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdXBkYXRlcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3VwZGF0ZXMuYwpAQCAtOCw2ICs4LDcgQEAKICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAogICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQogeworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBpbnQgKnNldCA9IChpbnQqKWhhbmRsZXItPm15dm9pZDsKIAogICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfU0VUX1JFU0VSVkUxICYmICpzZXQgPCAwKQpAQCAtMTYsNiArMTcsNyBAQAogICAgICAgICAqc2V0ID0gMTsKICAgICAgICAgc25tcF9zdG9yZV9uZWVkZWQocmVnaW5mby0+aGFuZGxlck5hbWUpOwogICAgIH0KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYwppbmRleCAzMzdhNWZjLi5mMmZhZjg2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYwpAQCAtMjUxLDcgKzI1MSw3IEBACiAgICAgICAgIHJldHVybiBQQVJTRV9GQUlMOwogICAgIH0KIAotICAgIGlmIChzdHJjbXAoKmNvbnRleHQsICJcIlwiIikgPT0gMCkKKyAgICBpZiAoc3RyY21wKCpjb250ZXh0LCAiXCJcIiIpID09IDAgfHwgc3RyY21wKCpjb250ZXh0LCAiXCdcJyIpID09IDApCiAgICAgICAgICoqY29udGV4dCA9IDA7CiAgICAgaWYgKHN0cmNhc2VjbXAobW9kZWwsICJhbnkiKSA9PSAwKQogICAgICAgICAqaW1vZGVsID0gU05NUF9TRUNfTU9ERUxfQU5ZOwpAQCAtMTIwMSw5ICsxMjAxLDExIEBACiAgICAgY2FzZSBTTk1QX01TR19HRVRCVUxLOgogICAgICAgICB2aWV3dHlwZSA9IFZBQ01fVklFV19SRUFEOwogICAgICAgICBicmVhazsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBTTk1QX01TR19TRVQ6CiAgICAgICAgIHZpZXd0eXBlID0gVkFDTV9WSUVXX1dSSVRFOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgY2FzZSBTTk1QX01TR19UUkFQOgogICAgIGNhc2UgU05NUF9NU0dfVFJBUDI6CiAgICAgY2FzZSBTTk1QX01TR19JTkZPUk06CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbnRleHQuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29udGV4dC5jCmluZGV4IGM0NzQxODAuLjhmNDNjZDMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29udGV4dC5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29udGV4dC5jCkBAIC0xMDUsNyArMTA1LDcgQEAKICAgICBpaW5mby0+Z2V0X2ZpcnN0X2RhdGFfcG9pbnQgPSBnZXRfZmlyc3RfY29udGV4dDsKICAgICBpaW5mby0+Z2V0X25leHRfZGF0YV9wb2ludCA9IGdldF9uZXh0X2NvbnRleHQ7CiAgICAgaWluZm8tPnRhYmxlX3JlZ2luZm8gPSB0YWJsZV9pbmZvOwotICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IobXlfaGFuZGxlciwgaWluZm8pOworICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IyKG15X2hhbmRsZXIsIGlpbmZvKTsKIH0KIAogLyoKQEAgLTE0OSw3ICsxNDksNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihjb250ZXh0X3B0ci0+Y29udGV4dF9uYW1lKSk7CiAKICAgICAgICAgICAgIGJyZWFrOwotCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBnZXRuZXh0IGFscmVhZHkgaGF2ZSBiZWVuCkBAIC0xNTksOCArMTU4LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICJ2YWNtX2NvbnRleHQgdGFibGUgYWNjZXNzZWQgYXMgbW9kZT0lZC4gIFdlJ3JlIGltcHJvcGVybHkgcmVnaXN0ZXJlZCEiLAogICAgICAgICAgICAgICAgICAgICAgcmVxaW5mby0+bW9kZSk7CiAgICAgICAgICAgICBicmVhazsKLQotCiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmMKaW5kZXggM2FkNTFkNC4uODVjZWY5NCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmMKQEAgLTE1Niw2ICsxNTYsNyBAQAogICAgICAqLwogCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUIAogICAgIGNhc2UgU0VDVVJJVFlHUk9VUDoKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX3ZhY21Hcm91cE5hbWU7CiAgICAgICAgIGJyZWFrOwpAQCAtMTY1LDEwICsxNjYsMTMgQEAKICAgICBjYXNlIFNFQ1VSSVRZU1RBVFVTOgogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfdmFjbVNlY3VyaXR5VG9Hcm91cFN0YXR1czsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLyAKICAgICBkZWZhdWx0OgogICAgICAgICAqd3JpdGVfbWV0aG9kID0gTlVMTDsKICAgICB9CiAKKwkqdmFyX2xlbiA9IDA7IC8qIGFzc3VtZSAwIGxlbmd0aCB1bnRpbCBmb3VuZCAqLworCiAgICAgaWYgKG1lbWNtcChuYW1lLCB2cC0+bmFtZSwgc2l6ZW9mKG9pZCkgKiB2cC0+bmFtZWxlbikgIT0gMCkgewogICAgICAgICBtZW1jcHkobmFtZSwgdnAtPm5hbWUsIHNpemVvZihvaWQpICogdnAtPm5hbWVsZW4pOwogICAgICAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW47CkBAIC0yNTIsNiArMjU2LDcgQEAKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CisKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtMjc4LDYgKzI4Myw3IEBACiAgICAgICovCiAKICAgICBzd2l0Y2ggKHZwLT5tYWdpYykgeworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgCiAgICAgY2FzZSBBQ0NFU1NNQVRDSDoKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX3ZhY21BY2Nlc3NDb250ZXh0TWF0Y2g7CiAgICAgICAgIGJyZWFrOwpAQCAtMjk2LDEwICszMDIsMTMgQEAKICAgICBjYXNlIEFDQ0VTU1NUQVRVUzoKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX3ZhY21BY2Nlc3NTdGF0dXM7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8gCiAgICAgZGVmYXVsdDoKICAgICAgICAgKndyaXRlX21ldGhvZCA9IE5VTEw7CiAgICAgfQogCisJKnZhcl9sZW4gPSAwOyAvKiBhc3N1bWUgMCBsZW5ndGggdW50aWwgZm91bmQgKi8KKwogICAgIGlmIChtZW1jbXAobmFtZSwgdnAtPm5hbWUsIHNpemVvZihvaWQpICogdnAtPm5hbWVsZW4pICE9IDApIHsKICAgICAgICAgbWVtY3B5KG5hbWUsIHZwLT5uYW1lLCBzaXplb2Yob2lkKSAqIHZwLT5uYW1lbGVuKTsKICAgICAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuOwpAQCAtNDY5LDYgKzQ3OCw3IEBACiAgICAgICAgIGxvbmdfcmV0dXJuID0gZ3AtPnN0YXR1czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKICAgICB9CisKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtNDk1LDYgKzUwNSw3IEBACiAgICAgICovCiAKICAgICBzd2l0Y2ggKHZwLT5tYWdpYykgeworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgCiAgICAgY2FzZSBWSUVXTUFTSzoKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX3ZhY21WaWV3TWFzazsKICAgICAgICAgYnJlYWs7CkBAIC01MDcsMTEgKzUxOCwxMyBAQAogICAgIGNhc2UgVklFV1NUQVRVUzoKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX3ZhY21WaWV3U3RhdHVzOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovIAogICAgIGRlZmF1bHQ6CiAgICAgICAgICp3cml0ZV9tZXRob2QgPSBOVUxMOwogICAgIH0KIAogICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmdfcmV0dXJuKTsKKwogICAgIGlmICh2cC0+bWFnaWMgIT0gVkFDTVZJRVdTUElOTE9DSykgewogICAgICAgICBpZiAobWVtY21wKG5hbWUsIHZwLT5uYW1lLCBzaXplb2Yob2lkKSAqIHZwLT5uYW1lbGVuKSAhPSAwKSB7CiAgICAgICAgICAgICBtZW1jcHkobmFtZSwgdnAtPm5hbWUsIHNpemVvZihvaWQpICogdnAtPm5hbWVsZW4pOwpAQCAtNjIzLDcgKzYzNiw5IEBACiAKICAgICBzd2l0Y2ggKHZwLT5tYWdpYykgewogICAgIGNhc2UgVkFDTVZJRVdTUElOTE9DSzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV92YWNtVmlld1NwaW5Mb2NrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgbG9uZ19yZXR1cm4gPSB2YWNtVmlld1NwaW5Mb2NrOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwogCkBAIC02NTEsMzQgKzY2NiwxMSBAQAogICAgICAgICBsb25nX3JldHVybiA9IGdwLT52aWV3U3RhdHVzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwogICAgIH0KKwogICAgIHJldHVybiBOVUxMOwogfQogCi1vaWQgICAgICAgICAgICAqCi1zZWMyZ3JvdXBfZ2VuZXJhdGVfT0lEKG9pZCAqIHByZWZpeCwgc2l6ZV90IHByZWZpeExlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZhY21fZ3JvdXBFbnRyeSAqIGdlcHRyLCBzaXplX3QgKiBsZW5ndGgpCi17Ci0gICAgb2lkICAgICAgICAgICAgKmluZGV4T2lkOwotICAgIGludCAgICAgICAgICAgICBpLCBzZWN1cml0eU5hbWVMZW47Ci0KLSAgICBzZWN1cml0eU5hbWVMZW4gPSBzdHJsZW4oZ2VwdHItPnNlY3VyaXR5TmFtZSk7Ci0KLSAgICAqbGVuZ3RoID0gMiArIHNlY3VyaXR5TmFtZUxlbiArIHByZWZpeExlbjsKLSAgICBpbmRleE9pZCA9IChvaWQgKikgbWFsbG9jKCpsZW5ndGggKiBzaXplb2Yob2lkKSk7Ci0gICAgaWYgKGluZGV4T2lkKSB7Ci0gICAgICAgIG1lbW1vdmUoaW5kZXhPaWQsIHByZWZpeCwgcHJlZml4TGVuICogc2l6ZW9mKG9pZCkpOwotCi0gICAgICAgIGluZGV4T2lkW3ByZWZpeExlbl0gPSBnZXB0ci0+c2VjdXJpdHlNb2RlbDsKLQotICAgICAgICBpbmRleE9pZFtwcmVmaXhMZW4gKyAxXSA9IHNlY3VyaXR5TmFtZUxlbjsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHNlY3VyaXR5TmFtZUxlbjsgaSsrKQotICAgICAgICAgICAgaW5kZXhPaWRbcHJlZml4TGVuICsgMiArIGldID0gKG9pZCkgZ2VwdHItPnNlY3VyaXR5TmFtZVtpXTsKLQotICAgIH0KLSAgICByZXR1cm4gaW5kZXhPaWQ7Ci0KLX0KLQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgCiBpbnQKIHNlYzJncm91cF9wYXJzZV9vaWQob2lkICogb2lkSW5kZXgsIHNpemVfdCBvaWRMZW4sCiAgICAgICAgICAgICAgICAgICAgIGludCAqbW9kZWwsIHVuc2lnbmVkIGNoYXIgKipuYW1lLCBzaXplX3QgKiBuYW1lTGVuKQpAQCAtOTgxLDQwICs5NzMsNiBAQAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCi1vaWQgICAgICAgICAgICAqCi1hY2Nlc3NfZ2VuZXJhdGVfT0lEKG9pZCAqIHByZWZpeCwgc2l6ZV90IHByZWZpeExlbiwKLSAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZhY21fYWNjZXNzRW50cnkgKiBhcHRyLCBzaXplX3QgKiBsZW5ndGgpCi17Ci0gICAgb2lkICAgICAgICAgICAgKmluZGV4T2lkOwotICAgIGludCAgICAgICAgICAgICBpLCBncm91cE5hbWVMZW4sIGNvbnRleHRQcmVmaXhMZW47Ci0KLSAgICBncm91cE5hbWVMZW4gPSBzdHJsZW4oYXB0ci0+Z3JvdXBOYW1lKTsKLSAgICBjb250ZXh0UHJlZml4TGVuID0gc3RybGVuKGFwdHItPmNvbnRleHRQcmVmaXgpOwotCi0gICAgKmxlbmd0aCA9IDQgKyBncm91cE5hbWVMZW4gKyBjb250ZXh0UHJlZml4TGVuICsgcHJlZml4TGVuOwotICAgIGluZGV4T2lkID0gKG9pZCAqKSBtYWxsb2MoKmxlbmd0aCAqIHNpemVvZihvaWQpKTsKLSAgICBpZiAoaW5kZXhPaWQpIHsKLSAgICAgICAgbWVtbW92ZShpbmRleE9pZCwgcHJlZml4LCBwcmVmaXhMZW4gKiBzaXplb2Yob2lkKSk7Ci0KLSAgICAgICAgaW5kZXhPaWRbcHJlZml4TGVuXSA9IGdyb3VwTmFtZUxlbjsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGdyb3VwTmFtZUxlbjsgaSsrKQotICAgICAgICAgICAgaW5kZXhPaWRbZ3JvdXBOYW1lTGVuICsgMSArIGldID0gKG9pZCkgYXB0ci0+Z3JvdXBOYW1lW2ldOwotCi0gICAgICAgIGluZGV4T2lkW3ByZWZpeExlbiArIGdyb3VwTmFtZUxlbiArIDFdID0gY29udGV4dFByZWZpeExlbjsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbnRleHRQcmVmaXhMZW47IGkrKykKLSAgICAgICAgICAgIGluZGV4T2lkW3ByZWZpeExlbiArIGdyb3VwTmFtZUxlbiArIDIgKyBpXSA9Ci0gICAgICAgICAgICAgICAgKG9pZCkgYXB0ci0+Y29udGV4dFByZWZpeFtpXTsKLQotICAgICAgICBpbmRleE9pZFtwcmVmaXhMZW4gKyBncm91cE5hbWVMZW4gKyBjb250ZXh0UHJlZml4TGVuICsgM10gPQotICAgICAgICAgICAgYXB0ci0+c2VjdXJpdHlNb2RlbDsKLSAgICAgICAgaW5kZXhPaWRbcHJlZml4TGVuICsgZ3JvdXBOYW1lTGVuICsgY29udGV4dFByZWZpeExlbiArIDRdID0KLSAgICAgICAgICAgIGFwdHItPnNlY3VyaXR5TGV2ZWw7Ci0KLSAgICB9Ci0gICAgcmV0dXJuIGluZGV4T2lkOwotCi19Ci0KIGludAogYWNjZXNzX3BhcnNlX29pZChvaWQgKiBvaWRJbmRleCwgc2l6ZV90IG9pZExlbiwKICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKmdyb3VwTmFtZSwgc2l6ZV90ICogZ3JvdXBOYW1lTGVuLApAQCAtMTU1MCwzNSArMTUwOCw2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLW9pZCAgICAgICAgICAgICoKLXZpZXdfZ2VuZXJhdGVfT0lEKG9pZCAqIHByZWZpeCwgc2l6ZV90IHByZWZpeExlbiwKLSAgICAgICAgICAgICAgICAgIHN0cnVjdCB2YWNtX3ZpZXdFbnRyeSAqIHZwdHIsIHNpemVfdCAqIGxlbmd0aCkKLXsKLSAgICBvaWQgICAgICAgICAgICAqaW5kZXhPaWQ7Ci0gICAgaW50ICAgICAgICAgICAgIGksIHZpZXdOYW1lTGVuLCB2aWV3U3VidHJlZUxlbjsKLQotICAgIHZpZXdOYW1lTGVuID0gc3RybGVuKHZwdHItPnZpZXdOYW1lKTsKLSAgICB2aWV3U3VidHJlZUxlbiA9IHZwdHItPnZpZXdTdWJ0cmVlTGVuOwotCi0gICAgKmxlbmd0aCA9IDIgKyB2aWV3TmFtZUxlbiArIHZpZXdTdWJ0cmVlTGVuICsgcHJlZml4TGVuOwotICAgIGluZGV4T2lkID0gKG9pZCAqKSBtYWxsb2MoKmxlbmd0aCAqIHNpemVvZihvaWQpKTsKLSAgICBpZiAoaW5kZXhPaWQpIHsKLSAgICAgICAgbWVtbW92ZShpbmRleE9pZCwgcHJlZml4LCBwcmVmaXhMZW4gKiBzaXplb2Yob2lkKSk7Ci0KLSAgICAgICAgaW5kZXhPaWRbcHJlZml4TGVuXSA9IHZpZXdOYW1lTGVuOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdmlld05hbWVMZW47IGkrKykKLSAgICAgICAgICAgIGluZGV4T2lkW3ZpZXdOYW1lTGVuICsgMSArIGldID0gKG9pZCkgdnB0ci0+dmlld05hbWVbaV07Ci0KLSAgICAgICAgaW5kZXhPaWRbcHJlZml4TGVuICsgdmlld05hbWVMZW4gKyAxXSA9IHZpZXdTdWJ0cmVlTGVuOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdmlld1N1YnRyZWVMZW47IGkrKykKLSAgICAgICAgICAgIGluZGV4T2lkW3ByZWZpeExlbiArIHZpZXdOYW1lTGVuICsgMiArIGldID0KLSAgICAgICAgICAgICAgICAob2lkKSB2cHRyLT52aWV3U3VidHJlZVtpXTsKLQotICAgIH0KLSAgICByZXR1cm4gaW5kZXhPaWQ7Ci0KLX0KLQogc3RydWN0IHZhY21fdmlld0VudHJ5ICoKIHZpZXdfcGFyc2Vfdmlld0VudHJ5KG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lX2xlbikKIHsKQEAgLTE5MTEsMyArMTg0MCw0IEBACiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8gCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuaCBiL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oCmluZGV4IDg4OGMxYjguLjQ3MWY3NTkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oCkBAIC0xOSw2ICsxOSw3IEBACiAgICAgIGV4dGVybiBGaW5kVmFyTWV0aG9kIHZhcl92YWNtX2FjY2VzczsKICAgICAgZXh0ZXJuIEZpbmRWYXJNZXRob2QgdmFyX3ZhY21fdmlldzsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgCiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV92YWNtR3JvdXBOYW1lOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfdmFjbVNlY3VyaXR5VG9Hcm91cFN0YXR1czsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX3ZhY21TZWN1cml0eVRvR3JvdXBTdG9yYWdlVHlwZTsKQEAgLTM2LDcgKzM3LDYgQEAKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX3ZhY21WaWV3U3RvcmFnZVR5cGU7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV92YWNtVmlld1R5cGU7CiAKLQogICAgICBvaWQgICAgICAgICAgICAqYWNjZXNzX2dlbmVyYXRlX09JRChvaWQgKiBwcmVmaXgsIHNpemVfdCBwcmVmaXhMZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2YWNtX2FjY2Vzc0VudHJ5ICphcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKiBsZW5ndGgpOwpAQCAtNjcsNyArNjcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICogc3VidHJlZUxlbik7CiAgICAgIHN0cnVjdCB2YWNtX3ZpZXdFbnRyeSAqdmlld19wYXJzZV92aWV3RW50cnkob2lkICogbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbmFtZV9sZW4pOwotCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLyAKIAogCiAjZGVmaW5lIE9JRF9TTk1QVkFDTU1JQgkJU05NUF9PSURfU05NUE1PRFVMRVMsIDE2CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jCmluZGV4IGU2Mjg2ZGMuLjcyYTUwM2YgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jCkBAIC00Niw2ICs0Niw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlICJyb3V0ZV9oZWFkZXJzLmgiCiAjZGVmaW5lIENBQ0hFX1RJTUUgKDEyMCkgICAgICAgIC8qIFNlY29uZHMgKi8KQEAgLTYxLDYgKzYyLDkgQEAKICNpbmNsdWRlICJrZXJuZWwuaCIKICNpbmNsdWRlICJpbnRlcmZhY2VzLmgiCiAjaW5jbHVkZSAic3RydWN0LmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoZ2V0X3JvdXRlcywgbGlibmV0c25tcG1pYnMpCiAKICNpZm5kZWYgIE1JTgogI2RlZmluZSAgTUlOKGEsYikgICAgICAgICAgICAgICAgICAgICAoKChhKSA8IChiKSkgPyAoYSkgOiAoYikpCkBAIC0zMTcsMTIgKzMyMSwxNCBAQAogCiBzdGF0aWMgdm9pZCAgICAgUm91dGVfU2Nhbl9SZWxvYWQodm9pZCk7CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9HRVRfUk9VVEVTCiBSVEVOVFJZICoqbmV0c25tcF9nZXRfcm91dGVzKHNpemVfdCAqc2l6ZSkgewogICAgIFJvdXRlX1NjYW5fUmVsb2FkKCk7CiAgICAgaWYgKHNpemUpCiAgICAgICAgICpzaXplID0gcnRzaXplOwogICAgIHJldHVybiBydGhlYWQ7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9HRVRfUk9VVEVTICovCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGhwdXgxMSAqLwogCiAjaWYgIShkZWZpbmVkKGxpbnV4KSB8fCBkZWZpbmVkKHNvbGFyaXMyKSB8fCBkZWZpbmVkKGhwdXgxMSkpICYmIGRlZmluZWQoUlRIT1NUX1NZTUJPTCkgJiYgZGVmaW5lZChSVE5FVF9TWU1CT0wpCkBAIC05MjMsNiArOTI5LDEwIEBACiAjZW5kaWYKICAgICAgICAgICAgIG5hbWVbc2l6ZW9mKG5hbWUpIC0gMV0gPSAnXDAnOwogI2Vsc2UKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTgorICAgICAgICAgICAgLyogdGhpcyBleGlzdHMgaGVyZSBqdXN0IHNvIHdlIGRvbid0IGNvcHkgaWZkZWYgbG9naWMgZWxzZXdoZXJlICovCisgICAgICAgICAgICBuZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzdHJpbmdfYXBwZW5kX2ludCk7CisjZW5kaWYKICAgICAgICAgICAgIGlmICghTkVUU05NUF9LTE9PS1VQKGlmbmV0LmlmX25hbWUsIG5hbWUsIHNpemVvZiBuYW1lKSkgewogICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS92YXJfcm91dGUiLCAia2xvb2t1cCBmYWlsZWRcbiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC05MzEsNiArOTQxLDkgQEAKICAgICAgICAgICAgIGNwID0gKGNoYXIgKikgc3RyY2hyKG5hbWUsICdcMCcpOwogICAgICAgICAgICAgc3RyaW5nX2FwcGVuZF9pbnQoY3AsIGlmbmV0LmlmX3VuaXQpOwogI2VuZGlmCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX0NIRUNLSU4KKyAgICAgICAgICAgIG5ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGludGVyZmFjZV9sZWdhY3kpCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX0NIRUNLSU4gKi8KICAgICAgICAgICAgIEludGVyZmFjZV9TY2FuX0luaXQoKTsKICAgICAgICAgICAgIHJ0LnJ0X3VuaXQgPSAwOwogICAgICAgICAgICAgd2hpbGUgKEludGVyZmFjZV9TY2FuX05leHQKQEAgLTEwMzUsMTAgKzEwNDgsMTAgQEAKICAgICBjaGFyICAgICAgICAgICAgbmFtZVsxNl0sIHRlbXBbMTZdOwogICAgIGludCAgICAgICAgICAgICBoYXNoc2l6ZTsKICNlbmRpZgotICAgIHN0YXRpYyBpbnQgICAgICBUaW1lX09mX0xhc3RfUmVsb2FkID0gMDsKKyAgICBzdGF0aWMgdGltZV90ICAgVGltZV9PZl9MYXN0X1JlbG9hZDsKICAgICBzdHJ1Y3QgdGltZXZhbCAgbm93OwogCi0gICAgZ2V0dGltZW9mZGF5KCZub3csIChzdHJ1Y3QgdGltZXpvbmUgKikgMCk7CisgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZub3cpOwogICAgIGlmIChUaW1lX09mX0xhc3RfUmVsb2FkICsgQ0FDSEVfVElNRSA+IG5vdy50dl9zZWMpCiAgICAgICAgIHJldHVybjsKICAgICBUaW1lX09mX0xhc3RfUmVsb2FkID0gbm93LnR2X3NlYzsKQEAgLTEwODAsNiArMTA5MywxMSBAQAogICAgIH0KIAogI2Vsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBydGVudHJ5IGlzIGEgQlNEIDQuMyBjb21wYXQgKi8KKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTgorICAgIC8qIHRoaXMgZXhpc3RzIGhlcmUganVzdCBzbyB3ZSBkb24ndCBjb3B5IGlmZGVmIGxvZ2ljIGVsc2V3aGVyZSAqLworICAgIG5ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHN0cmluZ19hcHBlbmRfaW50KTsKKyAgICBuZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpbnRlcmZhY2VfbGVnYWN5KQorI2VuZGlmCiAgICAgZm9yICh0YWJsZSA9IDA7IHRhYmxlIDwgTlVNX1JPVVRFX1NZTUJPTFM7IHRhYmxlKyspIHsKICAgICAgICAgYXV0b19ubGlzdChSVEhBU0hTSVpFX1NZTUJPTCwgKGNoYXIgKikgJmhhc2hzaXplLAogICAgICAgICAgICAgICAgICAgIHNpemVvZihoYXNoc2l6ZSkpOwpAQCAtMTE2NCw2ICsxMTgyLDggQEAKICNlbHNlCiAKICNpZiBIQVZFX1NZU19NQlVGX0gKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHN0cmluZ19hcHBlbmRfaW50KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaW50ZXJmYWNlX2xlZ2FjeSkKIHN0YXRpYyB2b2lkCiBSb3V0ZV9TY2FuX1JlbG9hZCh2b2lkKQogewpAQCAtMTE3NCwxMSArMTE5NCwxMSBAQAogICAgIGludCAgICAgICAgICAgICBpLCB0YWJsZTsKICAgICByZWdpc3RlciBjaGFyICAqY3A7CiAgICAgY2hhciAgICAgICAgICAgIG5hbWVbMTZdLCB0ZW1wWzE2XTsKLSAgICBzdGF0aWMgaW50ICAgICAgVGltZV9PZl9MYXN0X1JlbG9hZCA9IDA7CisgICAgc3RhdGljIHRpbWVfdCAgIFRpbWVfT2ZfTGFzdF9SZWxvYWQ7CiAgICAgc3RydWN0IHRpbWV2YWwgIG5vdzsKICAgICBpbnQgICAgICAgICAgICAgaGFzaHNpemU7CiAKLSAgICBnZXR0aW1lb2ZkYXkoJm5vdywgKHN0cnVjdCB0aW1lem9uZSAqKSAwKTsKKyAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJm5vdyk7CiAgICAgaWYgKFRpbWVfT2ZfTGFzdF9SZWxvYWQgKyBDQUNIRV9USU1FID4gbm93LnR2X3NlYykKICAgICAgICAgcmV0dXJuOwogICAgIFRpbWVfT2ZfTGFzdF9SZWxvYWQgPSBub3cudHZfc2VjOwpAQCAtMTI5MCwxMCArMTMxMCwxMCBAQAogICAgIGNoYXIgICAgICAgICAgICBsaW5lWzI1Nl07CiAgICAgc3RydWN0IHJ0ZW50cnkgKnJ0OwogICAgIGNoYXIgICAgICAgICAgICBuYW1lWzE2XTsKLSAgICBzdGF0aWMgaW50ICAgICAgVGltZV9PZl9MYXN0X1JlbG9hZCA9IDA7CisgICAgc3RhdGljIHRpbWVfdCAgIFRpbWVfT2ZfTGFzdF9SZWxvYWQ7CiAgICAgc3RydWN0IHRpbWV2YWwgIG5vdzsKIAotICAgIGdldHRpbWVvZmRheSgmbm93LCAoc3RydWN0IHRpbWV6b25lICopIDApOworICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmbm93KTsKICAgICBpZiAoVGltZV9PZl9MYXN0X1JlbG9hZCArIENBQ0hFX1RJTUUgPiBub3cudHZfc2VjKQogICAgICAgICByZXR1cm47CiAgICAgVGltZV9PZl9MYXN0X1JlbG9hZCA9IG5vdy50dl9zZWM7CkBAIC0xNDc3LDcgKzE0OTcsNyBAQAogICAgIERXT1JEICAgICAgICAgICBkd0FjdHVhbFNpemUgPSAwOwogICAgIHN0YXRpYyBQTUlCX0lQRk9SV0FSRFRBQkxFIHBJcFJ0clRhYmxlID0gTlVMTDsKICAgICBzdHJ1Y3QgdGltZXZhbCAgbm93OwotICAgIHN0YXRpYyBsb25nICAgICBUaW1lX09mX0xhc3RfUmVsb2FkID0gMDsKKyAgICBzdGF0aWMgdGltZV90ICAgIFRpbWVfT2ZfTGFzdF9SZWxvYWQ7CiAgICAgc3RhdGljIGluX2FkZHJfdCBhZGRyX3JldDsKIAogCkBAIC0xNDk0LDcgKzE1MTQsNyBAQAogICAgICAgICAgKi8KICAgICAgICAgcm91dGVfcm93ID0gKFBNSUJfSVBGT1JXQVJEUk9XKSBtYWxsb2Moc2l6ZW9mKE1JQl9JUEZPUldBUkRST1cpKTsKICAgICB9Ci0gICAgZ2V0dGltZW9mZGF5KCZub3csIChzdHJ1Y3QgdGltZXpvbmUgKikgMCk7CisgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZub3cpOwogICAgIGlmICgocnRzaXplIDw9IDEpIHx8IChUaW1lX09mX0xhc3RfUmVsb2FkICsgNSA8PSBub3cudHZfc2VjKSkKICAgICAgICAgU2F2ZV9WYWxpZCA9IDA7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jIGIvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jCmluZGV4IGJkNmE4MjEuLmExMmEzMzggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuYworKysgYi9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2lmIEhBVkVfTkVUSU5FVF9JTl9ICkBAIC0xOSw2ICsyMCwxMiBAQAogI2luY2x1ZGUgIm5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaCIKICNpbmNsdWRlICJub3RpZmljYXRpb25fbG9nLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJlZ2lzdGVyX3Vsb25nX2luc3RhbmNlX2NvbnRleHQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyZWdpc3Rlcl9yZWFkX29ubHlfY291bnRlcjMyX2luc3RhbmNlX2NvbnRleHQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShkZWxldGVfdGFibGVfZGF0YV9zZXQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9kYXRhc2V0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZGF0ZV9uX3RpbWUpCisKIC8qCiAgKiBjb2x1bW4gbnVtYmVyIGRlZmluaXRpb25zIGZvciB0YWJsZSBubG1Mb2dUYWJsZQogICovCkBAIC00NjcsOCArNDc0LDEwIEBACiAgICAgICogY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZ2V0IHNldCB0byBhIHZhbHVlIGFuZCB0aHVzCiAgICAgICogbm90aWZpY2F0aW9ucyBtdXN0IGJlIHBvc3NpYmx5IGRlbGV0ZWQgZnJvbSBvdXIgYXJjaGl2ZXMuCiAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfU0VUX0NPTU1JVCkKICAgICAgICAgY2hlY2tfbG9nX3NpemUoMCwgTlVMTCk7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuYwppbmRleCBjM2ZjMzYzLi5lOWIxMWQzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmMKQEAgLTIzLDEyICsyMywxNiBAQAogLyoKICAqIG1pbmltYWwgaW5jbHVkZSBkaXJlY3RpdmVzIAogICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlICJoZWFkZXJfY29tcGxleC5oIgogI2luY2x1ZGUgInNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuaCIKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGhlYWRlcl9jb21wbGV4X2ZpbmRfZW50cnkpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIC8qCiAgKiBzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlX3ZhcmlhYmxlc19vaWQ6CkBAIC0xMzEsNyArMTM1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp0aGVkYXRhKQogewogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycyA9IE5VTEw7Ci0KKyAgICBpbnQgcmV0VmFsOwogCiAgICAgREVCVUdNU0dUTCgoInNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUiLCAiYWRkaW5nIGRhdGEuLi4gICIpKTsKICAgICAvKgpAQCAtMTQzLDEzICsxNDcsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgdGhlZGF0YS0+c25tcFRhcmdldFBhcmFtc05hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5zbm1wVGFyZ2V0UGFyYW1zTmFtZUxlbik7CiAKLSAgICBoZWFkZXJfY29tcGxleF9hZGRfZGF0YSgmc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZVN0b3JhZ2UsIHZhcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YSk7Ci0gICAgREVCVUdNU0dUTCgoInNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUiLCAicmVnaXN0ZXJlZCBhbiBlbnRyeVxuIikpOworICAgIGlmIChoZWFkZXJfY29tcGxleF9tYXliZV9hZGRfZGF0YSgmc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZVN0b3JhZ2UsIHZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEsIDEpICE9IE5VTEwpeworICAgICAgIERFQlVHTVNHVEwoKCJzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlIiwgInJlZ2lzdGVyZWQgYW4gZW50cnlcbiIpKTsKKyAgICAgICByZXRWYWwgPSBTTk1QRVJSX1NVQ0NFU1M7CisgICAgfWVsc2V7CisgICAgICAgcmV0VmFsID0gU05NUEVSUl9HRU5FUlI7ICAJCisgICAgfQogCiAKICAgICBERUJVR01TR1RMKCgic25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZSIsICJkb25lLlxuIikpOwotICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CisgICAgcmV0dXJuIHJldFZhbDsKIH0KIAogCkBAIC0yMDAsNyArMjA4LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU3RvcmFnZVRtcC0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVJvd1N0YXR1cywgJnRtcGludCk7CiAKLSAgICBzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlX2FkZChTdG9yYWdlVG1wKTsKKyAgICBpZiAoc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZV9hZGQoU3RvcmFnZVRtcCkgIT0gU05NUEVSUl9TVUNDRVNTKXsKKyAgICAgICAgU05NUF9GUkVFKFN0b3JhZ2VUbXAtPnNubXBUYXJnZXRQYXJhbXNOYW1lKTsKKyAgICAgICAgU05NUF9GUkVFKFN0b3JhZ2VUbXAtPnNubXBOb3RpZnlGaWx0ZXJQcm9maWxlTmFtZSk7CisgICAgICAgIFNOTVBfRlJFRShTdG9yYWdlVG1wKTsKKyAgICB9CiAKICAgICBERUJVR01TR1RMKCgic25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZSIsICJkb25lLlxuIikpOwogfQpAQCAtMjE4LDcgKzIzMCw2IEBACiB7CiAgICAgY2hhciAgICAgICAgICAgIGxpbmVbU05NUF9NQVhCVUZdOwogICAgIGNoYXIgICAgICAgICAgICpjcHRyOwotICAgIHNpemVfdCAgICAgICAgICB0bXBpbnQ7CiAgICAgc3RydWN0IHNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGVfZGF0YSAqU3RvcmFnZVRtcDsKICAgICBzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKmhjaW5kZXg7CiAKQEAgLTI1MiwxMiArMjYzLDEyIEBACiAgICAgICAgICAgICAgICAgcmVhZF9jb25maWdfc3RvcmVfZGF0YShBU05fSU5URUdFUiwgY3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTdG9yYWdlVG1wLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBOb3RpZnlGaWx0ZXJQcm9maWxlU3RvclR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdG1waW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgICAgICAgICAgY3B0ciA9CiAgICAgICAgICAgICAgICAgcmVhZF9jb25maWdfc3RvcmVfZGF0YShBU05fSU5URUdFUiwgY3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTdG9yYWdlVG1wLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBOb3RpZnlGaWx0ZXJQcm9maWxlUm93U3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRtcGludCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKIAogICAgICAgICAgICAgc25tcGRfc3RvcmVfY29uZmlnKGxpbmUpOwogICAgICAgICB9CkBAIC0zMDEsNiArMzEyLDcgQEAKICAgICB9CiAKICAgICBzd2l0Y2ggKHZwLT5tYWdpYykgeworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIFNOTVBOT1RJRllGSUxURVJQUk9GSUxFTkFNRToKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlTmFtZTsKICAgICAgICAgYnJlYWs7CkBAIC0zMTIsNyArMzI0LDcgQEAKICAgICBjYXNlIFNOTVBOT1RJRllGSUxURVJQUk9GSUxFUk9XU1RBVFVTOgogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfc25tcE5vdGlmeUZpbHRlclByb2ZpbGVSb3dTdGF0dXM7CiAgICAgICAgIGJyZWFrOwotCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIGRlZmF1bHQ6CiAgICAgICAgICp3cml0ZV9tZXRob2QgPSBOVUxMOwogICAgIH0KQEAgLTM0Miw2ICszNTQsNyBAQAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEVSUk9SX01TRygiIik7CiAgICAgfQorCiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTM0OSw2ICszNjIsOCBAQAogCiBzdGF0aWMgc3RydWN0IHNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGVfZGF0YSAqU3RvcmFnZU5ldzsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgCisKIGludAogd3JpdGVfc25tcE5vdGlmeUZpbHRlclByb2ZpbGVOYW1lKGludCBhY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyICogdmFyX3ZhbCwKQEAgLTc5Miw2ICs4MDcsOCBAQAogfQogCiAKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovIAorCiAKIGNoYXIgICAgICAgICAgICoKIGdldF9GaWx0ZXJQcm9maWxlTmFtZShjb25zdCBjaGFyICpwYXJhbU5hbWUsIHNpemVfdCBwYXJhbU5hbWVfbGVuLApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmgKaW5kZXggOTczNGNiZS4uNjE2YmNkYyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5oCkBAIC01NSw5ICs1NSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICopOwogICAgICBTTk1QQ2FsbGJhY2sgICAgc3RvcmVfc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZTsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgCiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZU5hbWU7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVN0b3JUeXBlOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfc25tcE5vdGlmeUZpbHRlclByb2ZpbGVSb3dTdGF0dXM7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgIGNoYXIgICAgICAgICAgICpnZXRfRmlsdGVyUHJvZmlsZU5hbWUoY29uc3QgY2hhciAqcGFyYW1OYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYXJhbU5hbWVfbGVuLApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jCmluZGV4IGY2MjdlZDYuLjkxYWRiMmYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmMKQEAgLTgsNiArOCw3IEBACiAgKiBUaGlzIHNob3VsZCBhbHdheXMgYmUgaW5jbHVkZWQgZmlyc3QgYmVmb3JlIGFueXRoaW5nIGVsc2UgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaWYgSEFWRV9TVERMSUJfSApAQCAtNDEsNiArNDIsMTAgQEAKICMgICBpbmNsdWRlICJub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmgiCiAjZW5kaWYKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGhlYWRlcl9jb21wbGV4X2ZpbmRfZW50cnkpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKIFNOTVBDYWxsYmFjayAgICBzdG9yZV9zbm1wTm90aWZ5VGFibGU7CiAKIC8qCkBAIC01NywxMSArNjIsNiBAQAogc3RhdGljIG9pZCBzbm1wTm90aWZ5RnVsbENvbXBsaWFuY2VbXSA9CiAgICAgeyBTTk1QX09JRF9TTk1QTU9EVUxFUywgMTMsIDMsIDEsIDMgfTsgLyogU05NUC1OT1RJRklDQVRJT04tTUlCOjpzbm1wTm90aWZ5RnVsbENvbXBsaWFuY2UgKi8KIAotdm9pZCBzaHV0ZG93bl9zbm1wTm90aWZ5VGFibGUodm9pZCkKLXsKLSAgICBVTlJFR0lTVEVSX1NZU09SX0VOVFJZKHNubXBOb3RpZnlGdWxsQ29tcGxpYW5jZSk7Ci19Ci0KIAogLyoKICAqIHZhcmlhYmxlMiBzbm1wTm90aWZ5VGFibGVfdmFyaWFibGVzOgpAQCAtMjg1LDcgKzI4NSw3IEBACiAgICAgc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKnB0cjsKICAgICBzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKnBwdHI7CiAgICAgc3RydWN0IHNubXBOb3RpZnlUYWJsZV9kYXRhICpucHRyOwotICAgIGludCAgICAgICAgICAgICBjb25maXJtLCBpOworICAgIGludCAgICAgICAgICAgICBjb25maXJtLCBpLCBidWZMZW47CiAgICAgY2hhciAgICAgICAgICAgIGJ1ZltTTk1QX01BWEJVRl9TTUFMTF07CiAgICAgbmV0c25tcF90cmFuc3BvcnQgKnQgPSBOVUxMOwogICAgIHN0cnVjdCBhZ2VudF9hZGRfdHJhcF9hcmdzICphcmdzID0KQEAgLTMwMiw4ICszMDIsOSBAQAogICAgICAqIFhYWDogU1RBUlQgbW92ZSB0YXJnZXQgY3JlYXRpb24gdG8gdGFyZ2V0IGNvZGUgCiAgICAgICovCiAgICAgZm9yIChpID0gMDsgaSA8IE1BWF9FTlRSSUVTOyBpKyspIHsKLSAgICAgICAgc3ByaW50ZihidWYsICJpbnRlcm5hbCVkIiwgaSk7Ci0gICAgICAgIGlmIChnZXRfYWRkckZvck5hbWUoYnVmKSA9PSBOVUxMICYmIGdldF9wYXJhbUVudHJ5KGJ1ZikgPT0gTlVMTCkKKyAgICAgICAgYnVmTGVuID0gc3ByaW50ZihidWYsICJpbnRlcm5hbCVkIiwgaSk7CisgICAgICAgIGlmIChnZXRfYWRkckZvck5hbWUyKGJ1ZiwgYnVmTGVuKSA9PSBOVUxMICYmCisgICAgICAgICAgICBnZXRfcGFyYW1FbnRyeShidWYpID09IE5VTEwpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgaWYgKGkgPT0gTUFYX0VOVFJJRVMpIHsKQEAgLTMyNSw3ICszMjYsOCBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgcHRyID0gc25tcFRhcmdldEFkZHJUYWJsZV9jcmVhdGUoKTsKLSAgICBwdHItPm5hbWUgPSBzdHJkdXAoYnVmKTsKKyAgICBwdHItPm5hbWVEYXRhID0gbmV0c25tcF9tZW1kdXAoYnVmLCBidWZMZW4pOworICAgIHB0ci0+bmFtZUxlbiA9IGJ1ZkxlbjsKICAgICBtZW1jcHkocHRyLT50RG9tYWluLCB0LT5kb21haW4sIHQtPmRvbWFpbl9sZW5ndGggKiBzaXplb2Yob2lkKSk7CiAgICAgcHRyLT50RG9tYWluTGVuID0gdC0+ZG9tYWluX2xlbmd0aDsKICAgICBwdHItPnRBZGRyZXNzTGVuID0gdC0+cmVtb3RlX2xlbmd0aDsKQEAgLTMzNCw4ICszMzYsOCBAQAogICAgIHB0ci0+dGltZW91dCA9IHNzLT50aW1lb3V0IC8gMTAwMDA7CiAgICAgcHRyLT5yZXRyeUNvdW50ID0gc3MtPnJldHJpZXM7CiAgICAgU05NUF9GUkVFKHB0ci0+dGFnTGlzdCk7Ci0gICAgcHRyLT50YWdMaXN0ID0gc3RyZHVwKHB0ci0+bmFtZSk7Ci0gICAgcHRyLT5wYXJhbXMgPSBzdHJkdXAocHRyLT5uYW1lKTsKKyAgICBwdHItPnRhZ0xpc3QgPSBzdHJkdXAoYnVmKTsgLyogc3RyZHVwIG9rIHNpbmNlIGJ1ZiBjb250YWlucyAnaW50ZXJuYWwlZCcgKi8KKyAgICBwdHItPnBhcmFtcyA9IHN0cmR1cChidWYpOwogICAgIHB0ci0+c3RvcmFnZVR5cGUgPSBTVF9SRUFET05MWTsKICAgICBwdHItPnJvd1N0YXR1cyA9IFJTX0FDVElWRTsKICAgICBwdHItPnNlc3MgPSBzczsKQEAgLTQyMCwxOCArNDIyLDE4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc2VydmVyYXJnLCB2b2lkICpjbGllbnRhcmcpCiB7CiAgICAgc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICpocHRyLCAqbmhwdHI7Ci0gICAgc3RydWN0IHNubXBOb3RpZnlUYWJsZV9kYXRhICpucHRyOwogCiAgICAgZm9yIChocHRyID0gc25tcE5vdGlmeVRhYmxlU3RvcmFnZTsgaHB0cjsgaHB0ciA9IG5ocHRyKSB7Ci0gICAgICAgIG5wdHIgPSAoc3RydWN0IHNubXBOb3RpZnlUYWJsZV9kYXRhICopIGhwdHItPmRhdGE7CisgICAgICAgIHN0cnVjdCBzbm1wTm90aWZ5VGFibGVfZGF0YSAqbnB0ciA9IGhwdHItPmRhdGE7CiAgICAgICAgIG5ocHRyID0gaHB0ci0+bmV4dDsKICAgICAgICAgaWYgKG5wdHItPnNubXBOb3RpZnlTdG9yYWdlVHlwZSA9PSBTVF9SRUFET05MWSkgewogICAgICAgICAgICAgaGVhZGVyX2NvbXBsZXhfZXh0cmFjdF9lbnRyeSgmc25tcE5vdGlmeVRhYmxlU3RvcmFnZSwgaHB0cik7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUobnB0ci0+c25tcE5vdGlmeU5hbWUpOwotICAgICAgICAgICAgU05NUF9GUkVFKG5wdHItPnNubXBOb3RpZnlUYWcpOwotICAgICAgICAgICAgU05NUF9GUkVFKG5wdHIpOworICAgICAgICAgICAgZnJlZShucHRyLT5zbm1wTm90aWZ5TmFtZSk7CisgICAgICAgICAgICBmcmVlKG5wdHItPnNubXBOb3RpZnlUYWcpOworICAgICAgICAgICAgZnJlZShucHRyKTsKICAgICAgICAgfQogICAgIH0KKyAgICBzbm1wTm90aWZ5VGFibGVTdG9yYWdlID0gTlVMTDsKICAgICByZXR1cm4gKDApOwogfQogCkBAIC00OTEsNiArNDkzLDM3IEBACiAgICAgREVCVUdNU0dUTCgoInNubXBOb3RpZnlUYWJsZSIsICJkb25lLlxuIikpOwogfQogCit2b2lkCitzaHV0ZG93bl9zbm1wTm90aWZ5VGFibGUodm9pZCkKK3sKKyAgICBERUJVR01TR1RMKCgic25tcE5vdGlmeVRhYmxlIiwgInNodXR0aW5nIGRvd24gLi4uICIpKTsKKworICAgIG5vdGlmeVRhYmxlX3VucmVnaXN0ZXJfbm90aWZpY2F0aW9ucyhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19QUkVfVVBEQVRFX0NPTkZJRywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisKKyAgICBzbm1wX3VucmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUFJFX1VQREFURV9DT05GSUcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmeVRhYmxlX3VucmVnaXN0ZXJfbm90aWZpY2F0aW9ucywgTlVMTCwgRkFMU0UpOworICAgIHNubXBfdW5yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19SRUdJU1RFUl9OT1RJRklDQVRJT05TLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RpZnlUYWJsZV9yZWdpc3Rlcl9ub3RpZmljYXRpb25zLCBOVUxMLCBGQUxTRSk7CisgICAgc25tcF91bnJlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1NFTkRfVFJBUDIsIHNlbmRfbm90aWZpY2F0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgRkFMU0UpOworI2lmbmRlZiBESVNBQkxFX1NOTVBWMQorICAgIHNubXBfdW5yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19TRU5EX1RSQVAxLCBzZW5kX25vdGlmaWNhdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIEZBTFNFKTsKKyNlbmRpZgorICAgIHNubXBfdW5yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0xJQlJBUlksIFNOTVBfQ0FMTEJBQ0tfU1RPUkVfREFUQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVfc25tcE5vdGlmeVRhYmxlLCBOVUxMLCBGQUxTRSk7CisKKyAgICBVTlJFR0lTVEVSX1NZU09SX0VOVFJZKHNubXBOb3RpZnlGdWxsQ29tcGxpYW5jZSk7CisKKyAgICBERUJVR01TR1RMKCgic25tcE5vdGlmeVRhYmxlIiwgImRvbmUuXG4iKSk7Cit9CiAKIC8qCiAgKiBzbm1wTm90aWZ5VGFibGVfYWRkKCk6IGFkZHMgYSBzdHJ1Y3R1cmUgbm9kZSB0byBvdXIgZGF0YSBzZXQgCkBAIC00OTksNyArNTMyLDcgQEAKIHNubXBOb3RpZnlUYWJsZV9hZGQoc3RydWN0IHNubXBOb3RpZnlUYWJsZV9kYXRhICp0aGVkYXRhKQogewogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycyA9IE5VTEw7Ci0KKyAgICBpbnQgcmV0VmFsOwkKIAogICAgIERFQlVHTVNHVEwoKCJzbm1wTm90aWZ5VGFibGUiLCAiYWRkaW5nIGRhdGEuLi4gICIpKTsKICAgICAvKgpAQCAtNTEyLDEyICs1NDUsMTcgQEAKIAogCiAKLSAgICBoZWFkZXJfY29tcGxleF9hZGRfZGF0YSgmc25tcE5vdGlmeVRhYmxlU3RvcmFnZSwgdmFycywgdGhlZGF0YSk7Ci0gICAgREVCVUdNU0dUTCgoInNubXBOb3RpZnlUYWJsZSIsICJyZWdpc3RlcmVkIGFuIGVudHJ5XG4iKSk7CisgICAgaWYgKGhlYWRlcl9jb21wbGV4X21heWJlX2FkZF9kYXRhKCZzbm1wTm90aWZ5VGFibGVTdG9yYWdlLCB2YXJzLCB0aGVkYXRhLCAxKQorICAgICAgICAhPSBOVUxMKXsKKyAgICAJREVCVUdNU0dUTCgoInNubXBOb3RpZnlUYWJsZSIsICJyZWdpc3RlcmVkIGFuIGVudHJ5XG4iKSk7CisJcmV0VmFsID0gU05NUEVSUl9TVUNDRVNTOworICAgIH1lbHNleworICAgICAgICByZXRWYWwgPSBTTk1QRVJSX0dFTkVSUjsgCisgICAgfQkKIAogCiAgICAgREVCVUdNU0dUTCgoInNubXBOb3RpZnlUYWJsZSIsICJkb25lLlxuIikpOwotICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CisgICAgcmV0dXJuIHJldFZhbDsKIH0KIAogCkBAIC01NzgsNyArNjE2LDExIEBACiAgICAgICAgIFN0b3JhZ2VUbXAtPnNubXBOb3RpZnlSb3dTdGF0dXMgPSBSU19BQ1RJVkU7CiAKIAotICAgIHNubXBOb3RpZnlUYWJsZV9hZGQoU3RvcmFnZVRtcCk7CisgICAgaWYgKHNubXBOb3RpZnlUYWJsZV9hZGQoU3RvcmFnZVRtcCkgIT0gU05NUEVSUl9TVUNDRVNTKXsKKyAgICAgICAgU05NUF9GUkVFKFN0b3JhZ2VUbXAtPnNubXBOb3RpZnlOYW1lKTsKKyAgICAgICAgU05NUF9GUkVFKFN0b3JhZ2VUbXAtPnNubXBOb3RpZnlUYWcpOworICAgICAgICBTTk1QX0ZSRUUoU3RvcmFnZVRtcCk7CisgICAgfQogCiAKICAgICBERUJVR01TR1RMKCgic25tcE5vdGlmeVRhYmxlIiwgImRvbmUuXG4iKSk7CkBAIC02NzksNiArNzIxLDcgQEAKICAgICB9CiAKICAgICBzd2l0Y2ggKHZwLT5tYWdpYykgeworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIFNOTVBOT1RJRllUQUc6CiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9zbm1wTm90aWZ5VGFnOwogICAgICAgICBicmVhazsKQEAgLTY5MSw2ICs3MzQsNyBAQAogICAgIGNhc2UgU05NUE5PVElGWVJPV1NUQVRVUzoKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX3NubXBOb3RpZnlSb3dTdGF0dXM7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICBkZWZhdWx0OgogICAgICAgICAqd3JpdGVfbWV0aG9kID0gTlVMTDsKICAgICB9CkBAIC02OTksNiArNzQzLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisjaWZuZGVmIE5FVFNOTVBfTk9fUkVBRF9TVVBQT1JUCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKICAgICBjYXNlIFNOTVBOT1RJRllUQUc6CiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+c25tcE5vdGlmeVRhZ0xlbjsKQEAgLTcxOSw2ICs3NjQsNyBAQAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEVSUk9SX01TRygiIik7CiAgICAgfQorI2VuZGlmIC8qICFORVRTTk1QX05PX1JFQURfU1VQUE9SVCAqLyAKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtNzQ3LDYgKzc5Myw4IEBACiAKIHN0YXRpYyBzdHJ1Y3Qgc25tcE5vdGlmeVRhYmxlX2RhdGEgKlN0b3JhZ2VOZXc7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUIAorCiBpbnQKIHdyaXRlX3NubXBOb3RpZnlUYWcoaW50IGFjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgdV9jaGFyICogdmFyX3ZhbCwKQEAgLTExNzMsMyArMTIyMSw0IEBACiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuaCBiL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuaAppbmRleCA5YTkzNjQ1Li4xOGJmMWJkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5oCkBAIC02NCwxMCArNjQsMTIgQEAKICAgICAgaW50ICAgICAgICAgICAgIHNubXBOb3RpZnlUYWJsZV9hZGQoc3RydWN0IHNubXBOb3RpZnlUYWJsZV9kYXRhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp0aGVkYXRhKTsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX3NubXBOb3RpZnlUYWc7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9zbm1wTm90aWZ5VHlwZTsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX3NubXBOb3RpZnlTdG9yYWdlVHlwZTsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX3NubXBOb3RpZnlSb3dTdGF0dXM7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZGF0YV9hY2Nlc3MvZXRoZXJzdGF0c19saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZGF0YV9hY2Nlc3MvZXRoZXJzdGF0c19saW51eC5jCmluZGV4IGQ0YjZlNjkuLmE2YTQyYzMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHNfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9kYXRhX2FjY2Vzcy9ldGhlcnN0YXRzX2xpbnV4LmMKQEAgLTM4LDcgKzM4LDggQEAKICAgICBmb3IgKHAgPSBhZGRyczsgcDsgcCA9IHAtPmlmYV9uZXh0KSB7CiAKICAgICAgICAgaWYgKCFsaXN0X2hlYWQpIHsKLSAgICAgICAgICAgIGlmICggKGxpc3RfaGVhZCA9IChzdHJ1Y3QgaWZuYW1lICopIG1hbGxvYyAoc2l6ZW9mKHN0cnVjdCBpZm5hbWUpKSkgPCAwKSB7CisgICAgICAgICAgICBsaXN0X2hlYWQgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBpZm5hbWUpKTsKKyAgICAgICAgICAgIGlmICghbGlzdF9oZWFkKSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW50ZXJmYWNlX25hbWVfbGlzdF9nZXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWRcbiIpKTsKICAgICAgICAgICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2VzczpldGhlclN0YXRzVGFibGUsaW50ZXJmYWNlX25hbWVfbGlzdF9nZXQsIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZFxuIik7CkBAIC01Nyw3ICs1OCw4IEBACiAgICAgICAgIGlmIChuYW1lcHRyMSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmICggKG5hbWVwdHIyLT5pZm5fbmV4dCA9IChzdHJ1Y3QgaWZuYW1lICopIG1hbGxvYyAoc2l6ZW9mKHN0cnVjdCBpZm5hbWUpKSkgPCAwKSB7CisgICAgICAgIG5hbWVwdHIyLT5pZm5fbmV4dCA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IGlmbmFtZSkpOworICAgICAgICBpZiAoIW5hbWVwdHIyLT5pZm5fbmV4dCkgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW50ZXJmYWNlX25hbWVfbGlzdF9nZXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZFxuIikpOwogICAgICAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlLGludGVyZmFjZV9uYW1lX2xpc3RfZ2V0LCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWRcbiIpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jCmluZGV4IDk3NDYzNmEuLjQ4ZDRhY2EgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYworKysgYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTIwMCw3ICsyMDAsNiBAQAogaW50CiBldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIpCiB7Ci0gICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CiAgICAgc2l6ZV90ICAgICAgICAgIGNvdW50ID0gMDsKIAogICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2xvYWQiLApAQCAtMjIwLDkgKzIxOSw3IEBACiAgICAgICogZXRoZXJTdGF0c0luZGV4KDEpL0lOVEVHRVIzMi9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL0Evdy9lL1IvZC9oCiAgICAgICovCiAKLSAgICBsb25nICAgICAgICAgICAgZXRoZXJTdGF0c0luZGV4OwogICAgIGludCAgICAgICAgICAgICBmZDsKLSAgICBpbnQgICAgICAgICAgICAgcmMgPSAwLCByZXR2YWwgPSAwOwogCiAjaWYgZGVmaW5lZChsaW51eCkKICAgICBzdHJ1Y3QgaWZuYW1lICpsaXN0X2hlYWQgPSBOVUxMLCAqcCA9IE5VTEw7CkBAIC0yNDQsNyArMjQxLDExIEBACiAgICAgICovCiAKICNpZiBkZWZpbmVkKGxpbnV4KQotICAgIGxpc3RfaGVhZCA9IGV0aGVyc3RhdHNfaW50ZXJmYWNlX25hbWVfbGlzdF9nZXQgKGxpc3RfaGVhZCwgJnJldHZhbCk7CisgICAgeworICAgICAgICBpbnQgcmV0dmFsOworCisgICAgICAgIGxpc3RfaGVhZCA9IGV0aGVyc3RhdHNfaW50ZXJmYWNlX25hbWVfbGlzdF9nZXQobGlzdF9oZWFkLCAmcmV0dmFsKTsKKyAgICB9CiAKICAgICBpZiAoIWxpc3RfaGVhZCkgewogICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2VzczpldGhlclN0YXRzVGFibGUsIGVycm9yIGdldHRpbmcgdGhlIGludGVyZmFjZSBuYW1lcyBwcmVzZW50IGluIHRoZSBzeXN0ZW1cbiIpOwpAQCAtMjU4LDYgKzI1OSw5IEBACiAgICAgICovCiAKICAgICBmb3IgKHAgPSBsaXN0X2hlYWQ7IHA7IHAgPSBwLT5pZm5fbmV4dCkgeworICAgICAgICBsb25nICAgICAgICAgICAgZXRoZXJTdGF0c0luZGV4OworICAgICAgICBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eDsKKwogICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZSIsICJwcm9jZXNzaW5nICclcydcbiIsIHAtPm5hbWUpKTsKIAogICAgICAgICAvKgpAQCAtMjk2LDIzICszMDAsMjcgQEAKICAgICAgICAgICovCiAKICAgICAgICAgbWVtc2V0ICgmcm93cmVxX2N0eC0+ZGF0YSwgMCwgc2l6ZW9mIChyb3dyZXFfY3R4LT5kYXRhKSk7Ci0gICAgICAgIHJjID0gaW50ZXJmYWNlX2lvY3RsX2V0aGVyc3RhdHNfZ2V0IChyb3dyZXFfY3R4LCBmZCwgcC0+bmFtZSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGludCByYzsKIAotICAgICAgICBpZiAocmMgPCAwKSB7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZSIsICJlcnJvciBnZXR0aW5nIHRoZSBzdGF0aXN0aWNzIGZvciBpbnRlcmZhY2UgfCVzfCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiZXRoZXJTdGF0c1RhYmxlIGRhdGEsIG9wZXJhdGlvbiBtaWdodCBub3QgYmUgc3VwcG9ydGVkXG4iLCBwLT5uYW1lKSk7Ci0gICAgICAgICAgICBldGhlclN0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHJjID0gaW50ZXJmYWNlX2lvY3RsX2V0aGVyc3RhdHNfZ2V0IChyb3dyZXFfY3R4LCBmZCwgcC0+bmFtZSk7CiAKLSAgICAgICAgLyoKLSAgICAgICAgICogaW5zZXJ0IGludG8gdGFibGUgY29udGFpbmVyCi0gICAgICAgICAqLwotICAgICAgICByYyA9IENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCByb3dyZXFfY3R4KTsKLSAgICAgICAgaWYgKHJjIDwgMCkgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGUiLCAiZXJyb3IgaW5zZXJ0aW5nIHwlc3wgIiwgcC0+bmFtZSkpOwotICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKHJjIDwgMCkgeworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlIiwgImVycm9yIGdldHRpbmcgdGhlIHN0YXRpc3RpY3MgZm9yIGludGVyZmFjZSB8JXN8ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXRoZXJTdGF0c1RhYmxlIGRhdGEsIG9wZXJhdGlvbiBtaWdodCBub3QgYmUgc3VwcG9ydGVkXG4iLCBwLT5uYW1lKSk7CisgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIGluc2VydCBpbnRvIHRhYmxlIGNvbnRhaW5lcgorICAgICAgICAgICAgICovCisgICAgICAgICAgICByYyA9IENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCByb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZSIsICJlcnJvciBpbnNlcnRpbmcgfCVzfCAiLCBwLT5uYW1lKSk7CisgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgICsrY291bnQ7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuYwppbmRleCAzOGU5MmFmLi4yMjFjNjA4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ2LDYgKzQ3LDE0IEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyb3dfbWVyZ2UpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShiYWJ5X3N0ZXBzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfY29udGFpbmVyX3Jvd19pbnNlcnQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmMKaW5kZXggYzAzYWVmNC4uZDYwMjNlNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5jCkBAIC0xMyw2ICsxMyw3IEBACiAgKiBjb250ZW50IG9mIHRoZSBzY3RwQXNzb2NMb2NhbEFkZHJUYWJsZSAKICAqLwogc3RhdGljIG5ldHNubXBfY29udGFpbmVyICpzY3RwQXNzb2NMb2NhbEFkZHJUYWJsZV9jb250YWluZXI7CitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogLyoqIEluaXRpYWxpemVzIHRoZSBzY3RwQXNzb2NMb2NhbEFkZHJUYWJsZSBtb2R1bGUgKi8KIHZvaWQKQEAgLTI3LDggKzI4LDcgQEAKIHZvaWQKIHNodXRkb3duX3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlKHZvaWQpCiB7Ci0gICAgc2N0cEFzc29jTG9jYWxBZGRyVGFibGVfY29udGFpbmVyX2NsZWFyCi0gICAgICAgIChzY3RwQXNzb2NMb2NhbEFkZHJUYWJsZV9jb250YWluZXIpOworICAgIHNodXRkb3duX3RhYmxlX3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlKCk7CiB9CiAKIC8qKiBJbml0aWFsaXplIHRoZSBzY3RwQXNzb2NMb2NhbEFkZHJUYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgKi8KQEAgLTQyLDcgKzQyLDYgQEAKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWcgPSBOVUxMOwogICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIgPSBOVUxMOwogICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIgPSBOVUxMOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8gPSBOVUxMOwogCiAgICAgcmVnID0KICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oInNjdHBBc3NvY0xvY2FsQWRkclRhYmxlIiwKQEAgLTEzMiw2ICsxMzEsMTcgQEAKICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9mcmVlKHJlZyk7CiB9CiAKK3ZvaWQKK3NodXRkb3duX3RhYmxlX3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlKHZvaWQpCit7CisgICAgaWYgKHRhYmxlX2luZm8pIHsKKyAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCXRhYmxlX2luZm8gPSBOVUxMOworICAgIH0KKyAgICBzY3RwQXNzb2NMb2NhbEFkZHJUYWJsZV9jb250YWluZXJfY2xlYXIKKyAgICAgICAgKHNjdHBBc3NvY0xvY2FsQWRkclRhYmxlX2NvbnRhaW5lcik7Cit9CisKIC8qKiBoYW5kbGVzIHJlcXVlc3RzIGZvciB0aGUgc2N0cEFzc29jTG9jYWxBZGRyVGFibGUgdGFibGUgKi8KIGludAogc2N0cEFzc29jTG9jYWxBZGRyVGFibGVfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLApAQCAtMjY0LDggKzI3NCw3IEBACiB2b2lkCiBzY3RwQXNzb2NMb2NhbEFkZHJUYWJsZV9lbnRyeV9mcmVlKHNjdHBBc3NvY0xvY2FsQWRkclRhYmxlX2VudHJ5ICogZW50cnkpCiB7Ci0gICAgaWYgKGVudHJ5ICE9IE5VTEwpCi0gICAgICAgIFNOTVBfRlJFRShlbnRyeSk7CisgICAgU05NUF9GUkVFKGVudHJ5KTsKIH0KIAogbmV0c25tcF9jb250YWluZXIgKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmgKaW5kZXggYzJjYzA1NS4uZWZmMDgwZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5oCkBAIC0xMyw2ICsxMyw3IEBACiB2b2lkICAgICAgICAgICAgaW5pdF9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZSh2b2lkKTsKIHZvaWQgICAgICAgICAgICBzaHV0ZG93bl9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZSh2b2lkKTsKIHZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX3RhYmxlX3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlKHZvaWQpOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgc2N0cEFzc29jTG9jYWxBZGRyVGFibGVfaGFuZGxlcjsKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMKaW5kZXggYWQxNGE0Ni4uMzhjYThhMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMKQEAgLTEzLDYgKzEzLDcgQEAKICAqIGNvbnRlbnQgb2YgdGhlIHNjdHBBc3NvY1JlbUFkZHJUYWJsZSAKICAqLwogc3RhdGljIG5ldHNubXBfY29udGFpbmVyICpzY3RwQXNzb2NSZW1BZGRyVGFibGVfY29udGFpbmVyOworc3RhdGljIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKIC8qKiBJbml0aWFsaXplcyB0aGUgc2N0cEFzc29jUmVtQWRkclRhYmxlIG1vZHVsZSAqLwogdm9pZApAQCAtMjcsNyArMjgsNyBAQAogdm9pZAogc2h1dGRvd25fc2N0cEFzc29jUmVtQWRkclRhYmxlKHZvaWQpCiB7Ci0gICAgc2N0cEFzc29jUmVtQWRkclRhYmxlX2NvbnRhaW5lcl9jbGVhcihzY3RwQXNzb2NSZW1BZGRyVGFibGVfY29udGFpbmVyKTsKKyAgICBzaHV0ZG93bl90YWJsZV9zY3RwQXNzb2NSZW1BZGRyVGFibGUoKTsKIH0KIAogLyoqIEluaXRpYWxpemUgdGhlIHNjdHBBc3NvY1JlbUFkZHJUYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgKi8KQEAgLTQxLDcgKzQyLDYgQEAKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWcgPSBOVUxMOwogICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIgPSBOVUxMOwogICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIgPSBOVUxMOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8gPSBOVUxMOwogCiAgICAgcmVnID0KICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oInNjdHBBc3NvY1JlbUFkZHJUYWJsZSIsCkBAIC0xMzAsNiArMTMwLDE2IEBACiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZShyZWcpOwogfQogCit2b2lkCitzaHV0ZG93bl90YWJsZV9zY3RwQXNzb2NSZW1BZGRyVGFibGUodm9pZCkKK3sKKyAgICBpZiAodGFibGVfaW5mbykgeworICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisJdGFibGVfaW5mbyA9IE5VTEw7CisgICAgfQorICAgIHNjdHBBc3NvY1JlbUFkZHJUYWJsZV9jb250YWluZXJfY2xlYXIoc2N0cEFzc29jUmVtQWRkclRhYmxlX2NvbnRhaW5lcik7Cit9CisKIAogLyoqIGhhbmRsZXMgcmVxdWVzdHMgZm9yIHRoZSBzY3RwQXNzb2NSZW1BZGRyVGFibGUgdGFibGUgKi8KIGludApAQCAtMzA5LDggKzMxOSw3IEBACiB2b2lkCiBzY3RwQXNzb2NSZW1BZGRyVGFibGVfZW50cnlfZnJlZShzY3RwQXNzb2NSZW1BZGRyVGFibGVfZW50cnkgKiBlbnRyeSkKIHsKLSAgICBpZiAoZW50cnkgIT0gTlVMTCkKLSAgICAgICAgU05NUF9GUkVFKGVudHJ5KTsKKyAgICBTTk1QX0ZSRUUoZW50cnkpOwogfQogCiBuZXRzbm1wX2NvbnRhaW5lciAqCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5oCmluZGV4IGNjNjVjN2UuLjUwNjg1NjEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5oCkBAIC0xMyw2ICsxMyw3IEBACiB2b2lkICAgICAgICAgICAgaW5pdF9zY3RwQXNzb2NSZW1BZGRyVGFibGUodm9pZCk7CiB2b2lkICAgICAgICAgICAgc2h1dGRvd25fc2N0cEFzc29jUmVtQWRkclRhYmxlKHZvaWQpOwogdm9pZCAgICAgICAgICAgIGluaXRpYWxpemVfdGFibGVfc2N0cEFzc29jUmVtQWRkclRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX3RhYmxlX3NjdHBBc3NvY1JlbUFkZHJUYWJsZSh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIHNjdHBBc3NvY1JlbUFkZHJUYWJsZV9oYW5kbGVyOwogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmMKaW5kZXggZjNhNjhhMy4uOTkxOTA3NSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5jCkBAIC0xNiw2ICsxNiw3IEBACiAgKiBjb250ZW50IG9mIHRoZSBzY3RwQXNzb2NUYWJsZSAKICAqLwogc3RhdGljIG5ldHNubXBfY29udGFpbmVyICpzY3RwQXNzb2NUYWJsZV9jb250YWluZXI7CitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogLyoqIEluaXRpYWxpemVzIHRoZSBzY3RwQXNzb2NUYWJsZSBtb2R1bGUgKi8KIHZvaWQKQEAgLTMwLDcgKzMxLDcgQEAKIHZvaWQKIHNodXRkb3duX3NjdHBBc3NvY1RhYmxlKHZvaWQpCiB7Ci0gICAgc2N0cEFzc29jVGFibGVfY29udGFpbmVyX2NsZWFyKHNjdHBBc3NvY1RhYmxlX2NvbnRhaW5lcik7CisgICAgc2h1dGRvd25fdGFibGVfc2N0cEFzc29jVGFibGUoKTsKIH0KIAogLyoqIEluaXRpYWxpemUgdGhlIHNjdHBBc3NvY1RhYmxlIHRhYmxlIGJ5IGRlZmluaW5nIGl0cyBjb250ZW50cyBhbmQgaG93IGl0J3Mgc3RydWN0dXJlZCAqLwpAQCAtNDMsNyArNDQsNiBAQAogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZyA9IE5VTEw7CiAgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciA9IE5VTEw7CiAgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciA9IE5VTEw7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbyA9IE5VTEw7CiAgICAgbmV0c25tcF9jYWNoZSAgKmNhY2hlID0gTlVMTDsKIAogICAgIHJlZyA9CkBAIC0xMjAsNiArMTIwLDggQEAKICAgICAgICAgZ290byBiYWlsOwogICAgIH0KIAorICAgIG5ldHNubXBfY2FjaGVfaGFuZGxlcl9vd25zX2NhY2hlKGhhbmRsZXIpOworCiAgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPSBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZywgaGFuZGxlcikpIHsKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKICAgICAgICAgICAgICAgICAgImVycm9yIGluamVjdGluZyBjYWNoZSBoYW5kbGVyIGZvciBzY3RwQXNzb2NUYWJsZVxuIik7CkBAIC0xNjUsNiArMTY3LDE3IEBACiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZShyZWcpOwogfQogCit2b2lkCitzaHV0ZG93bl90YWJsZV9zY3RwQXNzb2NUYWJsZSh2b2lkKQoreworICAgIGlmICh0YWJsZV9pbmZvKSB7CisJbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCXRhYmxlX2luZm8gPSBOVUxMOworICAgIH0KKyAgICBpZiAoc2N0cEFzc29jVGFibGVfY29udGFpbmVyKQorCXNjdHBBc3NvY1RhYmxlX2NvbnRhaW5lcl9jbGVhcihzY3RwQXNzb2NUYWJsZV9jb250YWluZXIpOworfQorCiAKIC8qKiBoYW5kbGVzIHJlcXVlc3RzIGZvciB0aGUgc2N0cEFzc29jVGFibGUgdGFibGUgKi8KIGludApAQCAtNDk0LDggKzUwNyw3IEBACiB2b2lkCiBzY3RwQXNzb2NUYWJsZV9lbnRyeV9mcmVlKHNjdHBBc3NvY1RhYmxlX2VudHJ5ICogZW50cnkpCiB7Ci0gICAgaWYgKGVudHJ5ICE9IE5VTEwpCi0gICAgICAgIFNOTVBfRlJFRShlbnRyeSk7CisgICAgU05NUF9GUkVFKGVudHJ5KTsKIH0KIAogbmV0c25tcF9jb250YWluZXIgKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmgKaW5kZXggYTZhOWYzYy4uYzYyNTdiMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5oCkBAIC0xMyw2ICsxMyw3IEBACiB2b2lkICAgICAgICAgICAgaW5pdF9zY3RwQXNzb2NUYWJsZSh2b2lkKTsKIHZvaWQgICAgICAgICAgICBzaHV0ZG93bl9zY3RwQXNzb2NUYWJsZSh2b2lkKTsKIHZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX3NjdHBBc3NvY1RhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX3RhYmxlX3NjdHBBc3NvY1RhYmxlKHZvaWQpOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgc2N0cEFzc29jVGFibGVfaGFuZGxlcjsKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmMKaW5kZXggN2EyYjBiMi4uMWE2ZmQzNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmMKQEAgLTEwLDYgKzEwLDcgQEAKICNpbmNsdWRlICJzY3RwTG9va3VwTG9jYWxQb3J0VGFibGUuaCIKIAogc3RhdGljIG5ldHNubXBfY29udGFpbmVyICpzY3RwTG9va3VwTG9jYWxQb3J0VGFibGVfY29udGFpbmVyOworc3RhdGljIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKIC8qKiBJbml0aWFsaXplcyB0aGUgc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlIG1vZHVsZSAqLwogdm9pZApAQCAtMjQsOCArMjUsNyBAQAogdm9pZAogc2h1dGRvd25fc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlKHZvaWQpCiB7Ci0gICAgc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlX2NvbnRhaW5lcl9jbGVhcgotICAgICAgICAoc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlX2NvbnRhaW5lcik7CisgICAgc2h1dGRvd25fdGFibGVfc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlKCk7CiB9CiAKIC8qKiBJbml0aWFsaXplIHRoZSBzY3RwTG9va3VwTG9jYWxQb3J0VGFibGUgdGFibGUgYnkgZGVmaW5pbmcgaXRzIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkICovCkBAIC0zOSw3ICszOSw2IEBACiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnID0gTlVMTDsKICAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyID0gTlVMTDsKICAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyID0gTlVMTDsKLSAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvID0gTlVMTDsKIAogICAgIHJlZyA9CiAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJzY3RwTG9va3VwTG9jYWxQb3J0VGFibGUiLApAQCAtMTI3LDYgKzEyNiwxNiBAQAogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2ZyZWUocmVnKTsKIH0KIAordm9pZAorc2h1dGRvd25fdGFibGVfc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlKHZvaWQpCit7CisgICAgaWYgKHRhYmxlX2luZm8pIHsKKwluZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisJdGFibGVfaW5mbyA9IE5VTEw7CisgICAgfQorICAgIHNjdHBMb29rdXBMb2NhbFBvcnRUYWJsZV9jb250YWluZXJfY2xlYXIKKyAgICAgICAgKHNjdHBMb29rdXBMb2NhbFBvcnRUYWJsZV9jb250YWluZXIpOworfQogCiAvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIHNjdHBMb29rdXBMb2NhbFBvcnRUYWJsZSB0YWJsZSAqLwogaW50CkBAIC0yNDksOCArMjU4LDcgQEAKIHZvaWQKIHNjdHBMb29rdXBMb2NhbFBvcnRUYWJsZV9lbnRyeV9mcmVlKHNjdHBMb29rdXBMb2NhbFBvcnRUYWJsZV9lbnRyeSAqIGVudHJ5KQogewotICAgIGlmIChlbnRyeSAhPSBOVUxMKQotICAgICAgICBTTk1QX0ZSRUUoZW50cnkpOworICAgIFNOTVBfRlJFRShlbnRyeSk7CiB9CiAKIG5ldHNubXBfY29udGFpbmVyICoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmgKaW5kZXggOWRhNmNkOS4uMjI2YzE2OCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmgKQEAgLTEzLDYgKzEzLDcgQEAKIHZvaWQgICAgICAgICAgICBpbml0X3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZSh2b2lkKTsKIHZvaWQgICAgICAgICAgICBzaHV0ZG93bl9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUodm9pZCk7CiB2b2lkICAgICAgICAgICAgaW5pdGlhbGl6ZV90YWJsZV9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25fdGFibGVfc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlKHZvaWQpOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlX2hhbmRsZXI7CiAKIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUuYwppbmRleCAzMzcwZjUyLi5hZTJlYzkxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmMKQEAgLTEwLDYgKzEwLDcgQEAKICNpbmNsdWRlICJzY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5oIgogCiBzdGF0aWMgbmV0c25tcF9jb250YWluZXIgKnNjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlX2NvbnRhaW5lcjsKK3N0YXRpYyBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogCiAvKiogSW5pdGlhbGl6ZXMgdGhlIHNjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlIG1vZHVsZSAqLwogdm9pZApAQCAtMjQsOCArMjUsNyBAQAogdm9pZAogc2h1dGRvd25fc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUodm9pZCkKIHsKLSAgICBzY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZV9jb250YWluZXJfY2xlYXIKLSAgICAgICAgKHNjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlX2NvbnRhaW5lcik7CisgICAgc2h1dGRvd25fdGFibGVfc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUoKTsKIH0KIAogLyoqIEluaXRpYWxpemUgdGhlIHNjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlIHRhYmxlIGJ5IGRlZmluaW5nIGl0cyBjb250ZW50cyBhbmQgaG93IGl0J3Mgc3RydWN0dXJlZCAqLwpAQCAtMzksNyArMzksNiBAQAogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZyA9IE5VTEw7CiAgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciA9IE5VTEw7CiAgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciA9IE5VTEw7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbyA9IE5VTEw7CiAKICAgICByZWcgPQogICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigic2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUiLApAQCAtMTI5LDYgKzEyOCwxNyBAQAogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2ZyZWUocmVnKTsKIH0KIAordm9pZAorc2h1dGRvd25fdGFibGVfc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUodm9pZCkKK3sKKyAgICBpZiAodGFibGVfaW5mbykgeworICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisJdGFibGVfaW5mbyA9IE5VTEw7CisgICAgfQorICAgIHNjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlX2NvbnRhaW5lcl9jbGVhcgorICAgICAgICAoc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGVfY29udGFpbmVyKTsKK30KKwogLyoqIGhhbmRsZXMgcmVxdWVzdHMgZm9yIHRoZSBzY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZSB0YWJsZSAqLwogaW50CiBzY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZV9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCkBAIC0yNTMsOCArMjYzLDcgQEAKIHNjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlX2VudHJ5X2ZyZWUoc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGVfZW50cnkgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeSkKIHsKLSAgICBpZiAoZW50cnkgIT0gTlVMTCkKLSAgICAgICAgU05NUF9GUkVFKGVudHJ5KTsKKyAgICBTTk1QX0ZSRUUoZW50cnkpOwogfQogCiBuZXRzbm1wX2NvbnRhaW5lciAqCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUuaAppbmRleCA0ODRjYjU4Li41YmQzYzQ4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmgKQEAgLTEzLDYgKzEzLDcgQEAKIHZvaWQgICAgICAgICAgICBpbml0X3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlKHZvaWQpOwogdm9pZCAgICAgICAgICAgIHNodXRkb3duX3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlKHZvaWQpOwogdm9pZCAgICAgICAgICAgIGluaXRpYWxpemVfdGFibGVfc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25fdGFibGVfc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUodm9pZCk7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBzY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZV9oYW5kbGVyOwogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuYwppbmRleCAyNTQyZWE2Li4zNjhkZDUxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuYwpAQCAtMTAsNiArMTAsNyBAQAogI2luY2x1ZGUgInNjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5oIgogCiBzdGF0aWMgbmV0c25tcF9jb250YWluZXIgKnNjdHBMb29rdXBSZW1JUEFkZHJUYWJsZV9jb250YWluZXI7CitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogLyoqIEluaXRpYWxpemVzIHRoZSBzY3RwTG9va3VwUmVtSVBBZGRyVGFibGUgbW9kdWxlICovCiB2b2lkCkBAIC0yNCw4ICsyNSw3IEBACiB2b2lkCiBzaHV0ZG93bl9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUodm9pZCkKIHsKLSAgICBzY3RwTG9va3VwUmVtSVBBZGRyVGFibGVfY29udGFpbmVyX2NsZWFyCi0gICAgICAgIChzY3RwTG9va3VwUmVtSVBBZGRyVGFibGVfY29udGFpbmVyKTsKKyAgICBzaHV0ZG93bl90YWJsZV9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUoKTsKIH0KIAogLyoqIEluaXRpYWxpemUgdGhlIHNjdHBMb29rdXBSZW1JUEFkZHJUYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgKi8KQEAgLTM5LDcgKzM5LDYgQEAKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWcgPSBOVUxMOwogICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIgPSBOVUxMOwogICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIgPSBOVUxMOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8gPSBOVUxMOwogCiAgICAgcmVnID0KICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oInNjdHBMb29rdXBSZW1JUEFkZHJUYWJsZSIsCkBAIC0xMjMsNiArMTIyLDE3IEBACiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZShyZWcpOwogfQogCit2b2lkCitzaHV0ZG93bl90YWJsZV9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUodm9pZCkKK3sKKyAgICBpZiAodGFibGVfaW5mbykgeworICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisJdGFibGVfaW5mbyA9IE5VTEw7CisgICAgfQorICAgIHNjdHBMb29rdXBSZW1JUEFkZHJUYWJsZV9jb250YWluZXJfY2xlYXIKKyAgICAgICAgKHNjdHBMb29rdXBSZW1JUEFkZHJUYWJsZV9jb250YWluZXIpOworfQorCiAvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIHNjdHBMb29rdXBSZW1JUEFkZHJUYWJsZSB0YWJsZSAqLwogaW50CiBzY3RwTG9va3VwUmVtSVBBZGRyVGFibGVfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLApAQCAtMjUzLDggKzI2Myw3IEBACiB2b2lkCiBzY3RwTG9va3VwUmVtSVBBZGRyVGFibGVfZW50cnlfZnJlZShzY3RwTG9va3VwUmVtSVBBZGRyVGFibGVfZW50cnkgKiBlbnRyeSkKIHsKLSAgICBpZiAoZW50cnkgIT0gTlVMTCkKLSAgICAgICAgU05NUF9GUkVFKGVudHJ5KTsKKyAgICBTTk1QX0ZSRUUoZW50cnkpOwogfQogCiBuZXRzbm1wX2NvbnRhaW5lciAqCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5oCmluZGV4IGUzMTVkNmQuLmI3NDUxNGMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5oCkBAIC0xMyw2ICsxMyw3IEBACiB2b2lkICAgICAgICAgICAgaW5pdF9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUodm9pZCk7CiB2b2lkICAgICAgICAgICAgc2h1dGRvd25fc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlKHZvaWQpOwogdm9pZCAgICAgICAgICAgIGluaXRpYWxpemVfdGFibGVfc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX3RhYmxlX3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZSh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIHNjdHBMb29rdXBSZW1JUEFkZHJUYWJsZV9oYW5kbGVyOwogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5jCmluZGV4IGE3Njc0ZTQuLmM4YTg4NzQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmMKQEAgLTEwLDYgKzEwLDcgQEAKICNpbmNsdWRlICJzY3RwTG9va3VwUmVtUG9ydFRhYmxlLmgiCiAKIHN0YXRpYyBuZXRzbm1wX2NvbnRhaW5lciAqc2N0cExvb2t1cFJlbVBvcnRUYWJsZV9jb250YWluZXI7CitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogLyoqIEluaXRpYWxpemVzIHRoZSBzY3RwTG9va3VwUmVtUG9ydFRhYmxlIG1vZHVsZSAqLwogdm9pZApAQCAtMjQsOCArMjUsNyBAQAogdm9pZAogc2h1dGRvd25fc2N0cExvb2t1cFJlbVBvcnRUYWJsZSh2b2lkKQogewotICAgIHNjdHBMb29rdXBSZW1Qb3J0VGFibGVfY29udGFpbmVyX2NsZWFyCi0gICAgICAgIChzY3RwTG9va3VwUmVtUG9ydFRhYmxlX2NvbnRhaW5lcik7CisgICAgc2h1dGRvd25fdGFibGVfc2N0cExvb2t1cFJlbVBvcnRUYWJsZSgpOwogfQogCiAvKiogSW5pdGlhbGl6ZSB0aGUgc2N0cExvb2t1cFJlbVBvcnRUYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgKi8KQEAgLTM5LDcgKzM5LDYgQEAKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWcgPSBOVUxMOwogICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIgPSBOVUxMOwogICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIgPSBOVUxMOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8gPSBOVUxMOwogCiAgICAgcmVnID0KICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oInNjdHBMb29rdXBSZW1Qb3J0VGFibGUiLApAQCAtMTIyLDYgKzEyMSwxNyBAQAogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2ZyZWUocmVnKTsKIH0KIAordm9pZAorc2h1dGRvd25fdGFibGVfc2N0cExvb2t1cFJlbVBvcnRUYWJsZSh2b2lkKQoreworICAgIGlmICh0YWJsZV9pbmZvKSB7CisJbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCXRhYmxlX2luZm8gPSBOVUxMOworICAgIH0KKyAgICBzY3RwTG9va3VwUmVtUG9ydFRhYmxlX2NvbnRhaW5lcl9jbGVhcgorICAgICAgICAoc2N0cExvb2t1cFJlbVBvcnRUYWJsZV9jb250YWluZXIpOworfQorCiAvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIHNjdHBMb29rdXBSZW1Qb3J0VGFibGUgdGFibGUgKi8KIGludAogc2N0cExvb2t1cFJlbVBvcnRUYWJsZV9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCkBAIC0yNDMsOCArMjUzLDcgQEAKIHZvaWQKIHNjdHBMb29rdXBSZW1Qb3J0VGFibGVfZW50cnlfZnJlZShzY3RwTG9va3VwUmVtUG9ydFRhYmxlX2VudHJ5ICogZW50cnkpCiB7Ci0gICAgaWYgKGVudHJ5ICE9IE5VTEwpCi0gICAgICAgIFNOTVBfRlJFRShlbnRyeSk7CisgICAgU05NUF9GUkVFKGVudHJ5KTsKIH0KIAogbmV0c25tcF9jb250YWluZXIgKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5oCmluZGV4IDk2ZDQ5Y2UuLmIyYWM4MTEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmgKQEAgLTEzLDYgKzEzLDcgQEAKIHZvaWQgICAgICAgICAgICBpbml0X3NjdHBMb29rdXBSZW1Qb3J0VGFibGUodm9pZCk7CiB2b2lkICAgICAgICAgICAgc2h1dGRvd25fc2N0cExvb2t1cFJlbVBvcnRUYWJsZSh2b2lkKTsKIHZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX3NjdHBMb29rdXBSZW1Qb3J0VGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25fdGFibGVfc2N0cExvb2t1cFJlbVBvcnRUYWJsZSh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIHNjdHBMb29rdXBSZW1Qb3J0VGFibGVfaGFuZGxlcjsKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUuYwppbmRleCA2YmMwZGU2Li5kOTk2NmZjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5jCkBAIC0xMCw2ICsxMCw3IEBACiAjaW5jbHVkZSAic2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5oIgogCiBzdGF0aWMgbmV0c25tcF9jb250YWluZXIgKnNjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGVfY29udGFpbmVyOworc3RhdGljIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKIC8qKiBJbml0aWFsaXplcyB0aGUgc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZSBtb2R1bGUgKi8KIHZvaWQKQEAgLTI0LDggKzI1LDcgQEAKIHZvaWQKIHNodXRkb3duX3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUodm9pZCkKIHsKLSAgICBzY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlX2NvbnRhaW5lcl9jbGVhcgotICAgICAgICAoc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZV9jb250YWluZXIpOworICAgIHNodXRkb3duX3RhYmxlX3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUoKTsKIH0KIAogLyoqIEluaXRpYWxpemUgdGhlIHNjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUgdGFibGUgYnkgZGVmaW5pbmcgaXRzIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkICovCkBAIC0zOSw3ICszOSw2IEBACiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnID0gTlVMTDsKICAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyID0gTlVMTDsKICAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyID0gTlVMTDsKLSAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvID0gTlVMTDsKIAogICAgIHJlZyA9CiAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJzY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlIiwKQEAgLTEyNCw2ICsxMjMsMTcgQEAKICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9mcmVlKHJlZyk7CiB9CiAKK3ZvaWQKK3NodXRkb3duX3RhYmxlX3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUodm9pZCkKK3sKKyAgICBpZiAodGFibGVfaW5mbykgeworICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisJdGFibGVfaW5mbyA9IE5VTEw7CisgICAgfQorICAgIHNjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGVfY29udGFpbmVyX2NsZWFyCisgICAgICAgIChzY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlX2NvbnRhaW5lcik7Cit9CisKIC8qKiBoYW5kbGVzIHJlcXVlc3RzIGZvciB0aGUgc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZSB0YWJsZSAqLwogaW50CiBzY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlX2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKQEAgLTI1OCw4ICsyNjgsNyBAQAogc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZV9lbnRyeV9mcmVlKHNjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGVfZW50cnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGVudHJ5KQogewotICAgIGlmIChlbnRyeSAhPSBOVUxMKQotICAgICAgICBTTk1QX0ZSRUUoZW50cnkpOworICAgIFNOTVBfRlJFRShlbnRyeSk7CiB9CiAKIG5ldHNubXBfY29udGFpbmVyICoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUuaAppbmRleCBhYWE1YTBiLi5mM2JlY2RjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5oCkBAIC0xMyw2ICsxMyw3IEBACiB2b2lkICAgICAgICAgICAgaW5pdF9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlKHZvaWQpOwogdm9pZCAgICAgICAgICAgIHNodXRkb3duX3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUodm9pZCk7CiB2b2lkICAgICAgICAgICAgaW5pdGlhbGl6ZV90YWJsZV9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX3RhYmxlX3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUodm9pZCk7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBzY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlX2hhbmRsZXI7CiAKIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXguYwppbmRleCAxMTU3M2MzLi42ZGE1YTZiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmMKQEAgLTE0Myw4ICsxNDMsOCBAQAogICAgICAgICBpZiAocmV0IDwgMCkgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoInNjdHA6c2NhbGFyczpzdGF0czphcmNoX2xvYWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24gZW50cnk6ICVzXG4iLCBsaW5lKSk7Ci0gICAgICAgICAgICAvLyBmY2xvc2UoZik7Ci0gICAgICAgICAgICAvLyByZXR1cm4gcmV0OworICAgICAgICAgICAgLyogZmNsb3NlKGYpOyAqLworICAgICAgICAgICAgLyogcmV0dXJuIHJldDsgKi8KIAkgICAgcmV0ID0gMDsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmMgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5jCmluZGV4IDIzNzY3OTUuLmIyOGVhMDMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24uYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtMTIsNiArMTMsOCBAQAogI2luY2x1ZGUgInNjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUuaCIKICNpbmNsdWRlICJzY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY29udGFpbmVyX2xpZm8pCisKIHN0YXRpYyB2b2lkCiBzY3RwQXNzb2NUYWJsZV9jb2xsZWN0X2ludmFsaWQodm9pZCAqd2hhdCwgdm9pZCAqbWFnaWMpCiB7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmMgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmMKaW5kZXggMTU4NjU1NC4uOGU2Mjg2MCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXguYwpAQCAtMjgxLDYgKzI4MSw4IEBACiAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgfQogCisgICAgbmV0c25tcF9nZXRfcGlkX2Zyb21faW5vZGVfaW5pdCgpOworCiAgICAgLyoKICAgICAgKiBpZ25vcmUgdGhlIGhlYWRlci4gCiAgICAgICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbXV4L3NtdXguYyBiL2FnZW50L21pYmdyb3VwL3NtdXgvc211eC5jCmluZGV4IDY5ODcxN2MuLjQ1OThjMmIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NtdXgvc211eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NtdXgvc211eC5jCkBAIC00LDYgKzQsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPGN0eXBlLmg+CiAKQEAgLTY4LDYgKzY5LDggQEAKICNpbmNsdWRlICJtaWJkZWZzLmgiCiAjaW5jbHVkZSAic25tcGQuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoc25wcmludF9vYmppZCkKKwogbG9uZyAgICAgICAgICAgIHNtdXhfbG9uZzsKIHVfbG9uZyAgICAgICAgICBzbXV4X3Vsb25nOwogc3RydWN0IHNvY2thZGRyX2luIHNtdXhfc2E7CkBAIC00MTQsNyArNDE3LDcgQEAKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc2VuZHRvKHJwdHItPnNyX2ZkLCBidWYsIGxlbiwgMCwgTlVMTCwgMCkgPCAwKSB7CisgICAgICAgIGlmIChzZW5kdG8ocnB0ci0+c3JfZmQsICh2b2lkICopIGJ1ZiwgbGVuLCAwLCBOVUxMLCAwKSA8IDApIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbXV4IiwgIlt2YXJfc211eF93cml0ZV0gc2VuZCBmYWlsZWRcbiIpKTsKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgICAgIH0KQEAgLTQyMyw3ICs0MjYsNyBAQAogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIHBlZWsgYXQgd2hhdCdzIHJlY2VpdmVkIAogICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAoKGxlbiA9IHJlY3Zmcm9tKHJwdHItPnNyX2ZkLCBidWYsCisgICAgICAgICAgICBpZiAoKGxlbiA9IHJlY3Zmcm9tKHJwdHItPnNyX2ZkLCAodm9pZCAqKSBidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01VWE1BWFBLVFNJWkUsIE1TR19QRUVLLCBOVUxMLCBOVUxMKSkgPD0gMCkgewogICAgICAgICAgICAgICAgIGlmICgobGVuID09IC0xKSAmJiAoKGVycm5vID09IEVJTlRSKSB8fCAoZXJybm8gPT0gRUFHQUlOKSkpCiAgICAgICAgICAgICAgICAgewpAQCAtNDYzLDcgKzQ2Niw3IEBACiAgICAgICAgICAgICBkbwogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbGVuID0gdG1wX2xlbjsKLSAgICAgICAgICAgICAgIGxlbiA9IHJlY3Zmcm9tKHJwdHItPnNyX2ZkLCBidWYsIGxlbiwgMCwgTlVMTCwgTlVMTCk7CisgICAgICAgICAgICAgICBsZW4gPSByZWN2ZnJvbShycHRyLT5zcl9mZCwgKHZvaWQgKikgYnVmLCBsZW4sIDAsIE5VTEwsIE5VTEwpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgd2hpbGUoKGxlbiA9PSAtMSkgJiYgKChlcnJubyA9PSBFSU5UUikgfHwgKGVycm5vID09IEVBR0FJTikpKTsKIApAQCAtNTQ3LDcgKzU1MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiW3Zhcl9zbXV4X3dyaXRlXSBlbnRlcmluZyBGUkVFIC0gc2VuZGluZyBDb21taXQgXG4iKSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoKHNlbmR0byhycHRyLT5zcl9mZCwgc291dCwgMywgMCwgTlVMTCwgMCkpIDwgMCkgeworICAgICAgICBpZiAoKHNlbmR0byhycHRyLT5zcl9mZCwgKHZvaWQgKikgc291dCwgMywgMCwgTlVMTCwgMCkpIDwgMCkgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoInNtdXgiLAogICAgICAgICAgICAgICAgICAgICAgICAgIlt2YXJfc211eF93cml0ZV0gc2VuZCByb2xsYmFjay9jb21taXQgZmFpbGVkXG4iKSk7CiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmMKaW5kZXggNWI1NmYxZi4uZDFjNTc1ZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS5jCkBAIC0xNCw2ICsxNCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC0yNiw2ICsyNyw4IEBACiAKICNpbmNsdWRlICJzbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3N0b3JhZ2VfdHJhbnNpdGlvbikKKwogY29uc3Qgb2lkICAgICAgIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9vaWRbXSA9CiAgICAgeyBTTk1QTk9USUZZRklMVEVSVEFCTEVfT0lEIH07CiBjb25zdCBpbnQgICAgICAgc25tcE5vdGlmeUZpbHRlclRhYmxlX29pZF9zaXplID0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLmMgYi9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jCmluZGV4IDk0ZDg2ODcuLjk0MmE4NjUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3MuYwpAQCAtOCw2ICs4LDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS92YWNtLmg+CkBAIC0yMCw2ICsyMSw4IEBACiAKICNpbmNsdWRlICJzbm1wTm90aWZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3MuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoc25tcE5vdGlmeUZpbHRlclRhYmxlX2NvbnRhaW5lcl9nZXQpCisKIC8qKiBAaW5ncm91cCBpbnRlcmZhY2UgCiAgKiBAYWRkdG9ncm91cCBkYXRhX2FjY2VzcyBkYXRhX2FjY2VzczogUm91dGluZXMgdG8gYWNjZXNzIGRhdGEKICAqCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jCmluZGV4IGFmNGFkMzcuLjQwNDBlM2YgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jCkBAIC0zMCw2ICszMCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC00Niw2ICs0NywyMiBAQAogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9leHRlcm5hbF9hY2Nlc3MsIGxpYm5ldHNubXBtaWJzKQorCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyb3dfbWVyZ2UpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShiYWJ5X3N0ZXBzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfY29udGFpbmVyX3Jvd19pbnNlcnQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9jb250YWluZXJfc2l6ZSwgc25tcE5vdGlmeUZpbHRlclRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzbm1wTm90aWZ5RmlsdGVyVGFibGVfcmVnaXN0cmF0aW9uX3NldCwgc25tcE5vdGlmeUZpbHRlclRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzbm1wTm90aWZ5RmlsdGVyVGFibGVfcmVnaXN0cmF0aW9uX2dldCwgc25tcE5vdGlmeUZpbHRlclRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzbm1wTm90aWZ5RmlsdGVyVGFibGVfY29udGFpbmVyX2dldCwgc25tcE5vdGlmeUZpbHRlclRhYmxlX2V4dGVybmFsX2FjY2VzcykKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqCkBAIC05NiwxOSArMTEzLDIzIEBACiAgICAgX3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9jb250YWluZXJfc2h1dGRvd24KICAgICAoc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZV9jdHggKiBpZl9jdHgpOwogCi0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QTk9USUZZRklMVEVSVEFCTEVfQ09OVEFJTkVSX0dFVAogbmV0c25tcF9jb250YWluZXIgKgogc25tcE5vdGlmeUZpbHRlclRhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gc25tcE5vdGlmeUZpbHRlclRhYmxlX2lmX2N0eC5jb250YWluZXI7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QTk9USUZZRklMVEVSVEFCTEVfQ09OVEFJTkVSX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUE5PVElGWUZJTFRFUlRBQkxFX1JFR0lTVFJBVElPTl9HRVQKIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9yZWdpc3RyYXRpb24gKgogc25tcE5vdGlmeUZpbHRlclRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gc25tcE5vdGlmeUZpbHRlclRhYmxlX2lmX2N0eC51c2VyX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBOT1RJRllGSUxURVJUQUJMRV9SRUdJU1RSQVRJT05fR0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QTk9USUZZRklMVEVSVEFCTEVfUkVHSVNUUkFUSU9OX1NFVAogc25tcE5vdGlmeUZpbHRlclRhYmxlX3JlZ2lzdHJhdGlvbiAqCiBzbm1wTm90aWZ5RmlsdGVyVGFibGVfcmVnaXN0cmF0aW9uX3NldChzbm1wTm90aWZ5RmlsdGVyVGFibGVfcmVnaXN0cmF0aW9uICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3JlZykKQEAgLTExOCwxMiArMTM5LDE1IEBACiAgICAgc25tcE5vdGlmeUZpbHRlclRhYmxlX2lmX2N0eC51c2VyX2N0eCA9IG5ld3JlZzsKICAgICByZXR1cm4gb2xkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUE5PVElGWUZJTFRFUlRBQkxFX1JFR0lTVFJBVElPTl9TRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBOT1RJRllGSUxURVJUQUJMRV9DT05UQUlORVJfU0laRQogaW50CiBzbm1wTm90aWZ5RmlsdGVyVGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKIHsKICAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUoc25tcE5vdGlmeUZpbHRlclRhYmxlX2lmX2N0eC5jb250YWluZXIpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUE5PVElGWUZJTFRFUlRBQkxFX0NPTlRBSU5FUl9TSVpFICovCiAKIHVfaW50CiBzbm1wTm90aWZ5RmlsdGVyVGFibGVfZGlydHlfZ2V0KHZvaWQpCkBAIC0yNjEsNyArMjg1LDcgQEAKICAgICAgICAgX21mZF9zbm1wTm90aWZ5RmlsdGVyVGFibGVfcG9zdF9yZXF1ZXN0OwogCiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogICAgIC8qCiAgICAgICogUkVRVUlSRUQgd3JhcHBlcnMgZm9yIHNldCByZXF1ZXN0IGhhbmRsaW5nCiAgICAgICovCkBAIC0yODcsNyArMzExLDcgQEAKICAgICAgKi8KICAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPmNvbnNpc3RlbmN5X2NoZWNrcyA9CiAgICAgICAgIF9tZmRfc25tcE5vdGlmeUZpbHRlclRhYmxlX2NoZWNrX2RlcGVuZGVuY2llczsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAgICoKQEAgLTMwMyw4ICszMjcsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wTm90aWZ5RmlsdGVyVGFibGVfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wTm90aWZ5RmlsdGVyVGFibGVfb2lkX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX0JBQllfU1RFUAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSEFORExFUl9DQU5fUldSSVRFCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEhBTkRMRVJfQ0FOX1JXUklURQogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgIGlmIChOVUxMID09IHJlZ2luZm8pIHsKQEAgLTMyNSw3ICszNDksNyBAQAogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QT1NUX1JFUVVFU1Q7CiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnNldF92YWx1ZXMpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfU0VUX1ZBTFVFUzsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5pcnJldmVyc2libGVfY29tbWl0KQpAQCAtMzQ4LDcgKzM3Miw3IEBACiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ09NTUlUOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fY29tbWl0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fQ09NTUlUOwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAgICAgaGFuZGxlciA9IG5ldHNubXBfYmFieV9zdGVwc19oYW5kbGVyX2dldChtZmRfbW9kZXMpOwogICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CkBAIC0xMDgzLDcgKzExMDcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9jdHgsIHJvd3JlcV9jdHgpOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfc25tcE5vdGlmeUZpbHRlclRhYmxlX2NoZWNrX2luZGV4ZXMgKi8KIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBTRVQgcHJvY2Vzc2luZwpAQCAtMTgzOSw3ICsxODYzLDcgQEAKIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pcnJldmVyc2libGVfY29tbWl0ICovCi0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTIwMTQsMTUgKzIwMzgsMTggQEAKIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9jb250YWluZXJfaW5pdF9wZXJzaXN0ZW5jZShuZXRzbm1wX2NvbnRhaW5lcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjb250YWluZXIpCiB7CisgICAgbmV0c25tcF9jb250YWluZXIgKipjb250YWluZXJfcDsKICAgICBpbnQgICAgICAgICAgICAgcmM7CiAKICAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcihOVUxMLCByb3dfdG9rZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9jb250YWluZXJfcm93X3Jlc3RvcmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7CisgICAgY29udGFpbmVyX3AgPSBuZXRzbm1wX21lbWR1cCgmY29udGFpbmVyLCBzaXplb2YoY29udGFpbmVyKSk7CisgICAgbmV0c25tcF9hc3NlcnQoY29udGFpbmVyX3ApOwogICAgIHJjID0gc25tcF9yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0xJQlJBUlksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfQ0FMTEJBQ0tfU1RPUkVfREFUQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9jb250YWluZXJfc2F2ZV9yb3dzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJfcCk7CiAKICAgICBpZiAocmMgIT0gU05NUF9FUlJfTk9FUlJPUikKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIHJlZ2lzdGVyaW5nIGZvciBTVE9SRV9EQVRBIGNhbGxiYWNrICIKQEAgLTIwNDAsNyArMjA2Nyw3IEBACiAgICAgICAgICIjXG4iICIjIHNubXBOb3RpZnlGaWx0ZXJUYWJsZSBwZXJzaXN0ZW50IGRhdGFcbiIgIiMiOwogICAgIGNoYXIgICAgICAgICAgICp0eXBlID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9BUFBUWVBFKTsKLSAgICBuZXRzbm1wX2NvbnRhaW5lciAqYyA9IChuZXRzbm1wX2NvbnRhaW5lciAqKSBjbGllbnRhcmc7CisgICAgbmV0c25tcF9jb250YWluZXIgKmMgPSAqKG5ldHNubXBfY29udGFpbmVyICoqKWNsaWVudGFyZzsKIAogICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpzbm1wTm90aWZ5RmlsdGVyVGFibGU6IgogICAgICAgICAgICAgICAgICJfc25tcE5vdGlmeUZpbHRlclRhYmxlX2NvbnRhaW5lcl9zYXZlX3Jvd3MiLApAQCAtMjQwNiw2ICsyNDMzLDcgQEAKIH0KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUE5PVElGWUZJTFRFUlRBQkxFX0VYVEVSTkFMX0FDQ0VTUwogc25tcE5vdGlmeUZpbHRlclRhYmxlX3Jvd3JlcV9jdHggKgogc25tcE5vdGlmeUZpbHRlclRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChzbm1wTm90aWZ5RmlsdGVyVGFibGVfbWliX2luZGV4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogbWliX2lkeCkKQEAgLTI0MzMsMyArMjQ2MSw0IEBACiAKICAgICByZXR1cm4gcm93cmVxX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBOT1RJRllGSUxURVJUQUJMRV9FWFRFUk5BTF9BQ0NFU1MgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VyS2V5VGFibGVfaW50ZXJmYWNlLmMKaW5kZXggYmVhNjdlZC4uMDQyMzFmOSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VyS2V5VGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VyS2V5VGFibGVfaW50ZXJmYWNlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ2LDYgKzQ3LDEwIEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyb3dfbWVyZ2UpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShiYWJ5X3N0ZXBzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wRW5naW5lLmMgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5jCmluZGV4IDg3ZjRkOTEuLmU3NTY3ODggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wRW5naW5lLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuYwpAQCAtMyw2ICszLDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgpAQCAtMTAsOSArMTEsMTQgQEAKICNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAjaW5jbHVkZSAic25tcEVuZ2luZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc25tcGVuZ2luZV9hbGwsIGxpYm5ldHNubXBtaWJzKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVnaXN0ZXJfc25tcEVuZ2luZV9zY2FsYXJzX2NvbnRleHQsIHNubXBlbmdpbmVfYWxsKQorCiBzdHJ1Y3QgdmFyaWFibGUyIHNubXBFbmdpbmVfdmFyaWFibGVzW10gPSB7CiAgICAge1NOTVBFTkdJTkVJRCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCiAgICAgIHZhcl9zbm1wRW5naW5lLCAxLCB7MX19LAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgCiAjaWZkZWYgTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFCiAgICAge1NOTVBFTkdJTkVCT09UUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3NubXBFbmdpbmUsIDEsIHsyfX0sCkBAIC0yNCw2ICszMCwxMiBAQAogICAgIHtTTk1QRU5HSU5FVElNRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAogICAgICB2YXJfc25tcEVuZ2luZSwgMSwgezN9fSwKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFICovCisjZWxzZSAgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLyAKKyAgICB7U05NUEVOR0lORUJPT1RTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9zbm1wRW5naW5lLCAxLCB7Mn19LAorICAgIHtTTk1QRU5HSU5FVElNRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfc25tcEVuZ2luZSwgMSwgezN9fSwKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovIAogICAgIHtTTk1QRU5HSU5FTUFYTUVTU0FHRVNJWkUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKICAgICAgdmFyX3NubXBFbmdpbmUsIDEsIHs0fX0sCiB9OwpAQCAtNDEsNiArNTMsNyBAQAogICAgICAgICAgICAgICAgICBzbm1wRW5naW5lX3ZhcmlhYmxlc19vaWQpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfU05NUEVOR0lORV9TQ0FMQVJTX0NPTlRFWFQKIHZvaWQKIHJlZ2lzdGVyX3NubXBFbmdpbmVfc2NhbGFyc19jb250ZXh0KGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKQogewpAQCAtNTMsNiArNjYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIERFRkFVTFRfTUlCX1BSSU9SSVRZLCAwLCAwLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHROYW1lLCAtMSwgMCk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9TTk1QRU5HSU5FX1NDQUxBUlNfQ09OVEVYVCAqLwogCiB2b2lkCiBpbml0X3NubXBFbmdpbmUodm9pZCkKQEAgLTYyLDEyICs3NiwxNCBAQAogICAgIHJlZ2lzdGVyX3NubXBFbmdpbmVfc2NhbGFycygpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogI2lmZGVmIE5FVFNOTVBfRU5BQkxFX1RFU1RJTkdfQ09ERQogaW50ICAgICAgICAgICAgIHdyaXRlX2VuZ2luZUJvb3RzKGludCwgdV9jaGFyICosIHVfY2hhciwgc2l6ZV90LCB1X2NoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiwgc2l6ZV90KTsKIGludCAgICAgICAgICAgICB3cml0ZV9lbmdpbmVUaW1lKGludCwgdV9jaGFyICosIHVfY2hhciwgc2l6ZV90LCB1X2NoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqLCBzaXplX3QpOwogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBORVRTTk1QX0VOQUJMRV9URVNUSU5HX0NPREUgKi8KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogdV9jaGFyICAgICAgICAgKgogdmFyX3NubXBFbmdpbmUoc3RydWN0IHZhcmlhYmxlICp2cCwKQEAgLTEwMSwxNiArMTE3LDIwIEBACiAgICAgICAgIHJldHVybiAodW5zaWduZWQgY2hhciAqKSBlbmdpbmVJRDsKIAogICAgIGNhc2UgU05NUEVOR0lORUJPT1RTOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICNpZmRlZiBORVRTTk1QX0VOQUJMRV9URVNUSU5HX0NPREUKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX2VuZ2luZUJvb3RzOwogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBORVRTTk1QX0VOQUJMRV9URVNUSU5HX0NPREUgKi8KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIGxvbmdfcmV0ID0gc25tcHYzX2xvY2FsX3NubXBFbmdpbmVCb290cygpOwogICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGNoYXIgKikgJmxvbmdfcmV0OwogCiAgICAgY2FzZSBTTk1QRU5HSU5FVElNRToKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAjaWZkZWYgTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9lbmdpbmVUaW1lOwogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBORVRTTk1QX0VOQUJMRV9URVNUSU5HX0NPREUgKi8KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIGxvbmdfcmV0ID0gc25tcHYzX2xvY2FsX3NubXBFbmdpbmVUaW1lKCk7CiAgICAgICAgIHJldHVybiAodW5zaWduZWQgY2hhciAqKSAmbG9uZ19yZXQ7CiAKQEAgLTEyNSw2ICsxNDUsOCBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAjaWZkZWYgTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFCiAvKgogICogd3JpdGVfZW5naW5lQm9vdHMoKToKQEAgLTIyMSwzICsyNDMsNCBAQAogfQogCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5FVFNOTVBfRU5BQkxFX1RFU1RJTkdfQ09ERSAqLworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0c181XzUuYyBiL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmMKaW5kZXggZmEyM2RkNS4uYTdmYzJjZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0c181XzUuYworKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5jCkBAIC00LDYgKzQsOCBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaD4KQEAgLTE2LDYgKzE4LDggQEAKICNkZWZpbmUgc25tcE1QRE1JQk9iamVjdHMgc25tcE1QRE1JQiwgMgogI2RlZmluZSBzbm1wTVBETUlCQ29tcGxpYW5jZXMgc25tcE1QRE1JQiwgMywgMQogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShoZWxwZXJfc3RhdGlzdGljcykKKwogc3RhdGljIG9pZCBzbm1wTVBEU3RhdHNbXSA9IHsgc25tcE1QRE1JQk9iamVjdHMsIDEgfTsKIAogc3RhdGljIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24qIHNubXBNUERTdGF0c19yZWcgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmMgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHMuYwppbmRleCAxYWE0MTA1Li43MThlMDcxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHMuYworKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHMuYwpAQCAtNzEsNSArNzEsNiBAQAogICAgICAgICBsb25nX3JldCA9IHNubXBfZ2V0X3N0YXRpc3RpYyh0bWFnaWMgKyBTVEFUX1VTTV9TVEFUU19TVEFSVCk7CiAgICAgICAgIHJldHVybiAodW5zaWduZWQgY2hhciAqKSAmbG9uZ19yZXQ7CiAgICAgfQorCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHNfNV81LmMgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHNfNV81LmMKaW5kZXggYjU2ZjE5Yi4uYmNkMDRlMSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzXzVfNS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0c181XzUuYwpAQCAtNCw2ICs0LDggQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmg+CkBAIC0yMCw2ICsyMiw4IEBACiBzdGF0aWMgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiogdXNtU3RhdHNfcmVnID0gTlVMTDsKIHN0YXRpYyBvaWQgdXNtTUlCQ29tcGxpYW5jZVtdID0geyB1c21NSUJDb21wbGlhbmNlcywgMSB9OwogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShoZWxwZXJfc3RhdGlzdGljcykKKwogdm9pZAogaW5pdF91c21TdGF0c181XzUodm9pZCkKIHsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmMgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jCmluZGV4IDg5MWY5ZmMuLjlmMDUwM2QgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYwpAQCAtMyw2ICszLDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KIAogI2lmIEhBVkVfU1RSSU5HX0gKQEAgLTE3LDcgKzE4LDEyIEBACiAjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogI2luY2x1ZGUgInVzbVVzZXIuaCIKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgCiBpbnQgdXNtU3RhdHVzQ2hlY2soc3RydWN0IHVzbVVzZXIgKnVwdHIpOworI2VuZGlmICAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1c211c2VyX2FsbCwgbGlibmV0c25tcG1pYnMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW5pdF9yZWdpc3Rlcl91c211c2VyX2NvbnRleHQsIHVzbXVzZXJfYWxsKQogCiBzdHJ1Y3QgdmFyaWFibGU0IHVzbVVzZXJfdmFyaWFibGVzW10gPSB7CiAgICAge1VTTVVTRVJTUElOTE9DSywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKQEAgLTY0LDYgKzcwLDcgQEAKICAgICAgICAgICAgICAgICAgdXNtVXNlcl92YXJpYWJsZXNfb2lkKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lOSVRfUkVHSVNURVJfVVNNVVNFUl9DT05URVhUCiB2b2lkCiBpbml0X3JlZ2lzdGVyX3VzbVVzZXJfY29udGV4dChjb25zdCBjaGFyICpjb250ZXh0TmFtZSkgewogICAgIHJlZ2lzdGVyX21pYl9jb250ZXh0KCJzbm1wdjMvdXNtVXNlciIsCkBAIC03NSw2ICs4Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgREVGQVVMVF9NSUJfUFJJT1JJVFksIDAsIDAsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dE5hbWUsIC0xLCAwKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lOSVRfUkVHSVNURVJfVVNNVVNFUl9DT05URVhUICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLW8tKioqKioqCiAgKiB1c21fZ2VuZXJhdGVfT0lECkBAIC0zMDMsOCArMzExLDExIEBACiAgICAgaWYgKCF2cCB8fCAhbmFtZSB8fCAhbGVuZ3RoIHx8ICF2YXJfbGVuKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgICp3cml0ZV9tZXRob2QgPSAoV3JpdGVNZXRob2QqKTA7ICAgIC8qIGFzc3VtZSBpdCBpc250IHdyaXRhYmxlIGZvciB0aGUgdGltZSBiZWluZyAqLwotICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmdfcmV0KTsgICAgICAgIC8qIGFzc3VtZSBhbiBpbnRlZ2VyIGFuZCBjaGFuZ2UgbGF0ZXIgaWYgbm90ICovCisgICAgLyogYXNzdW1lIGl0IGlzbnQgd3JpdGFibGUgZm9yIHRoZSB0aW1lIGJlaW5nICovCisgICAgKndyaXRlX21ldGhvZCA9IChXcml0ZU1ldGhvZCopMDsgICAgCisKKyAgICAvKiBhc3N1bWUgYW4gaW50ZWdlciBhbmQgY2hhbmdlIGxhdGVyIGlmIG5vdCAqLworICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmdfcmV0KTsKIAogICAgIGlmICh2cC0+bWFnaWMgIT0gVVNNVVNFUlNQSU5MT0NLKSB7CiAgICAgICAgIG9pZCAgICAgICAgICAgICBuZXduYW1lW01BWF9PSURfTEVOXTsKQEAgLTM3NCw2ICszODUsNyBAQAogICAgICAgICAgICAgaW5kZXhPaWQgPSB1c21fZ2VuZXJhdGVfT0lEKHZwLT5uYW1lLCB2cC0+bmFtZWxlbiwgdXB0ciwgJmxlbik7CiAgICAgICAgICAgICAqbGVuZ3RoID0gbGVuOwogICAgICAgICAgICAgbWVtbW92ZShuYW1lLCBpbmRleE9pZCwgbGVuICogc2l6ZW9mKG9pZCkpOworCiAgICAgICAgICAgICBERUJVR01TR1RMKCgidXNtVXNlciIsICJGb3VuZCB1c2VyOiAlcyAtICIsIHVwdHItPm5hbWUpKTsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAoaW50KSB1cHRyLT5lbmdpbmVJRExlbjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0coKCJ1c21Vc2VyIiwgIiAleCIsIHVwdHItPmVuZ2luZUlEW2ldKSk7CkBAIC0zOTAsNiArNDAyLDcgQEAKICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZW5kaWYgLS0gdnAtPm1hZ2ljICE9IFVTTVVTRVJTUElOTE9DSyAqLwogCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUIAogICAgIGNhc2UgVVNNVVNFUlNQSU5MT0NLOgogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfdXNtVXNlclNwaW5Mb2NrOwogICAgICAgICBsb25nX3JldCA9IHVzbVVzZXJTcGluTG9jazsKQEAgLTQ4NSwxNSArNDk4LDIxIEBACiAgICAgICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGNoYXIgKikgJmxvbmdfcmV0OwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgZGVmYXVsdDoKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBkIiwgInVua25vd24gc3ViLWlkICVkIGluIHZhcl91c21Vc2VyXG4iLAogICAgICAgICAgICAgICAgICAgICB2cC0+bWFnaWMpKTsKKyNlbHNlIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8gCisgICAgZGVmYXVsdDoKKyAgICAgICAgREVCVUdNU0dUTCgoInNubXBkIiwgIm5vIHdyaXRlIHN1cHBvcnQgZm9yIHZhcl91c21Vc2VyXG4iKSk7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLyAKICAgICB9CiAgICAgcmV0dXJuIE5VTEw7CiAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZW5kIHZhcl91c21Vc2VyKCkgKi8KIAorCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAKKwogLyoKICAqIHdyaXRlX3VzbVVzZXJTcGluTG9jaygpOiBjYWxsZWQgd2hlbiBhIHNldCBpcyBwZXJmb3JtZWQgb24gdGhlCiAgKiB1c21Vc2VyU3BpbkxvY2sgb2JqZWN0IApAQCAtNzQ3LDcgKzc2Niw2IEBACiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PSBDT01NSVQpIHsKICAgICAgICAgU05NUF9GUkVFKG9wdHIpOwotICAgICAgICBvcHRyID0gTlVMTDsKICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PSBGUkVFIHx8IGFjdGlvbiA9PSBVTkRPKSB7CiAgICAgICAgIGlmICgodXB0ciA9IHVzbV9wYXJzZV91c2VyKG5hbWUsIG5hbWVfbGVuKSkgIT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKHJlc2V0T25GYWlsKSB7CkBAIC04OTAsNyArOTA4LDYgQEAKICAgICAgICAgdXB0ci0+YXV0aEtleUxlbiA9IGJ1ZmxlbjsKICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PSBDT01NSVQpIHsKICAgICAgICAgU05NUF9GUkVFKG9sZGtleSk7Ci0gICAgICAgIG9sZGtleSA9IE5VTEw7CiAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gVU5ETykgewogICAgICAgICBpZiAoKHVwdHIgPSB1c21fcGFyc2VfdXNlcihuYW1lLCBuYW1lX2xlbikpICE9IE5VTEwgJiYgcmVzZXRPbkZhaWwpIHsKICAgICAgICAgICAgIFNOTVBfRlJFRSh1cHRyLT5hdXRoS2V5KTsKQEAgLTEwMTUsNyArMTAzMiw2IEBACiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PSBDT01NSVQpIHsKICAgICAgICAgU05NUF9GUkVFKG9wdHIpOwotICAgICAgICBvcHRyID0gTlVMTDsKICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PSBGUkVFIHx8IGFjdGlvbiA9PSBVTkRPKSB7CiAgICAgICAgIGlmICgodXB0ciA9IHVzbV9wYXJzZV91c2VyKG5hbWUsIG5hbWVfbGVuKSkgIT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKHJlc2V0T25GYWlsKSB7CkBAIC0xMTQwLDcgKzExNTYsNiBAQAogICAgICAgICB1cHRyLT5wcml2S2V5TGVuID0gYnVmbGVuOwogICAgIH0gZWxzZSBpZiAoYWN0aW9uID09IENPTU1JVCkgewogICAgICAgICBTTk1QX0ZSRUUob2xka2V5KTsKLSAgICAgICAgb2xka2V5ID0gTlVMTDsKICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PSBVTkRPKSB7CiAgICAgICAgIGlmICgodXB0ciA9IHVzbV9wYXJzZV91c2VyKG5hbWUsIG5hbWVfbGVuKSkgIT0gTlVMTCAmJiByZXNldE9uRmFpbCkgewogICAgICAgICAgICAgU05NUF9GUkVFKHVwdHItPnByaXZLZXkpOwpAQCAtMTI3Niw2ICsxMjkxLDcgQEAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZW5kIHdyaXRlX3VzbVVzZXJTdG9yYWdlVHlwZSgpICovCiAKKwogLyoKICAqIFJldHVybiAxIGlmIGVub3VnaCBvYmplY3RzIGhhdmUgYmVlbiBzZXQgdXAgdG8gdHJhbnNpdGlvbiByb3dTdGF0dXMgdG8KICAqIG5vdEluU2VydmljZSgyKSBvciBhY3RpdmUoMSkuICAKQEAgLTE0ODIsNyArMTQ5OCw5IEBACiAgICAgfQogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci19Cit9ICAvKiB3cml0ZV91c21Vc2VyU3RhdHVzICovCisKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovIAogCiAjaWYgMAogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5oIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuaAppbmRleCAyYWZlY2I0Li41M2QxNDEyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5oCisrKyBiL2FnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmgKQEAgLTU0LDYgKzU0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICogZW5naW5lSURMZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKipuYW1lLCBzaXplX3QgKiBuYW1lTGVuKTsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgCiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV91c21Vc2VyU3BpbkxvY2s7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV91c21Vc2VyQ2xvbmVGcm9tOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfdXNtVXNlckF1dGhQcm90b2NvbDsKQEAgLTYzLDUgKzY0LDYgQEAKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX3VzbVVzZXJQdWJsaWM7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV91c21Vc2VyU3RvcmFnZVR5cGU7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV91c21Vc2VyU3RhdHVzOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8gCiAKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX01JQkdST1VQX1VTTVVTRVJfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzbWlicy5oIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzbWlicy5oCmluZGV4IGE1NjIxZTUuLjBjY2E5YTMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXB2M21pYnMuaAorKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjNtaWJzLmgKQEAgLTgsNyArOCw5IEBACiAKIGNvbmZpZ19yZXF1aXJlKHNubXB2My9zbm1wRW5naW5lKQogY29uZmlnX3ZlcnNpb25fcmVxdWlyZSgoc25tcHYzL3NubXBNUERTdGF0cywgNS41LCBzbm1wdjMvc25tcE1QRFN0YXRzXzVfNSkpCisjaWZkZWYgTkVUU05NUF9TRUNNT0RfVVNNCiBjb25maWdfdmVyc2lvbl9yZXF1aXJlKChzbm1wdjMvdXNtU3RhdHMsIDUuNSwgc25tcHYzL3VzbVN0YXRzXzVfNSkpCiBjb25maWdfcmVxdWlyZShzbm1wdjMvdXNtQ29uZikKIGNvbmZpZ19yZXF1aXJlKHNubXB2My91c21Vc2VyKQorI2VuZGlmIC8qIE5FVFNOTVBfU0VDTU9EX1VTTSAqLwogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTTk1QVjNNSUJTX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3N0cnVjdC5oIGIvYWdlbnQvbWliZ3JvdXAvc3RydWN0LmgKaW5kZXggMDg3ODBjYy4uZDAyNWVkMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc3RydWN0LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc3RydWN0LmgKQEAgLTE4LDcgKzE4LDggQEAKICAgICBzdHJ1Y3QgZXh0ZW5zaWJsZSAqbmV4dDsKICAgICBvaWQgICAgICAgICAgICAgbWlib2lkW01JQk1BWF07CiAgICAgc2l6ZV90ICAgICAgICAgIG1pYmxlbjsKLSAgICBpbnQgICAgICAgICAgICAgcGlkOworICAgIGludCAgICAgICAgICAgICBtaWJwcmlvcml0eTsKKyAgICBuZXRzbm1wX3BpZF90ICAgcGlkOwogI2lmIGRlZmluZWQoV0lOMzIpCiAgICAgSEFORExFICAgICAgICAgIHRpZDsgICAgICAgICAgICAgICAgLyogV0lOMzIgdGhyZWFkICovCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMgYi9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5jCmluZGV4IDdkYzFiMmEuLmIxZWIwMGEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuYwpAQCAtMjUsMTMgKzI1LDE3IEBACiAjZGVmaW5lIHNubXBUYXJnZXRBZGRyT0lETGVuIDExIC8qVGhpcyBpcyBiYXNlK2NvbHVtbiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGkuZS4gZXZlcnl0aGluZyBidXQgaW5kZXggKi8KIAotb2lkICAgICAgICAgICAgIHNubXBUYXJnZXRBZGRyT0lEW3NubXBUYXJnZXRBZGRyT0lETGVuXSA9CitzdGF0aWMgb2lkICAgICAgc25tcFRhcmdldEFkZHJPSURbc25tcFRhcmdldEFkZHJPSURMZW5dID0KICAgICB7IDEsIDMsIDYsIDEsIDYsIDMsIDEyLCAxLCAyLCAxLCAwIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBsb25nIHNubXBUYXJnZXRTcGluTG9jayA9IDA7CiBzdGF0aWMgc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKmFBZGRyVGFibGUgPSBOVUxMOwogCiAKK3N0YXRpYyBpbnQKK3N0b3JlX3NubXBUYXJnZXRBZGRyRW50cnkoaW50IG1ham9ySUQsIGludCBtaW5vcklELCB2b2lkICpzZXJ2ZXJhcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsaWVudGFyZyk7CisKIC8qCiAgKiBVdGlsaXR5IHJvdXRpbmVzIAogICovCkBAIC00MiwxMSArNDYsMTIgQEAKIH0KIAogc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKgotZ2V0X2FkZHJGb3JOYW1lKGNoYXIgKm5hbWUpCitnZXRfYWRkckZvck5hbWUyKGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGNoYXIgbmFtZUxlbikKIHsKICAgICBzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqcHRyOwogICAgIGZvciAocHRyID0gYUFkZHJUYWJsZTsgcHRyICE9IE5VTEw7IHB0ciA9IHB0ci0+bmV4dCkgewotICAgICAgICBpZiAocHRyLT5uYW1lICYmIHN0cmNtcChwdHItPm5hbWUsIG5hbWUpID09IDApCisgICAgICAgIGlmIChwdHItPm5hbWVMZW4gPT0gbmFtZUxlbiAmJgorICAgICAgICAgICAgbWVtY21wKHB0ci0+bmFtZURhdGEsIG5hbWUsIG5hbWVMZW4pID09IDApCiAgICAgICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KICAgICByZXR1cm4gTlVMTDsKQEAgLTY0LDcgKzY5LDggQEAKICAgICBuZXdFbnRyeSA9IG1hbGxvYyhzaXplb2YoKm5ld0VudHJ5KSk7CiAKICAgICBpZiAobmV3RW50cnkpIHsKLSAgICAgICAgbmV3RW50cnktPm5hbWUgPSBOVUxMOworICAgICAgICBuZXdFbnRyeS0+bmFtZURhdGEgPSBOVUxMOworICAgICAgICBuZXdFbnRyeS0+bmFtZUxlbiA9IDA7CiAKICAgICAgICAgbmV3RW50cnktPnREb21haW5MZW4gPSAwOwogICAgICAgICBuZXdFbnRyeS0+dEFkZHJlc3MgPSBOVUxMOwpAQCAtOTIsMTEgKzk4LDExIEBACiB2b2lkCiBzbm1wVGFyZ2V0QWRkclRhYmxlX2Rpc3Bvc2Uoc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKnJlYXBlZCkKIHsKLSAgICBpZiAocmVhcGVkLT5zZXNzICE9IE5VTEwpIHsKKyAgICBpZiAocmVhcGVkLT5zZXNzKQogICAgICAgICBzbm1wX2Nsb3NlKHJlYXBlZC0+c2Vzcyk7Ci0gICAgfQotICAgIFNOTVBfRlJFRShyZWFwZWQtPm5hbWUpOwotICAgIFNOTVBfRlJFRShyZWFwZWQtPnRBZGRyZXNzKTsKKyAgICBlbHNlCisgICAgICAgIFNOTVBfRlJFRShyZWFwZWQtPnRBZGRyZXNzKTsKKyAgICBTTk1QX0ZSRUUocmVhcGVkLT5uYW1lRGF0YSk7CiAgICAgU05NUF9GUkVFKHJlYXBlZC0+dGFnTGlzdCk7CiAgICAgU05NUF9GUkVFKHJlYXBlZC0+cGFyYW1zKTsKIApAQCAtMTE2LDggKzEyMiw2IEBACiB7CiAgICAgc3RhdGljIHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICpjdXJyX3N0cnVjdCwgKnByZXZfc3RydWN0OwogICAgIGludCAgICAgICAgICAgICBpOwotICAgIHNpemVfdCAgICAgICAgICBuZXdPSURMZW4gPSAwLCBjdXJyT0lETGVuID0gMDsKLSAgICBvaWQgICAgICAgICAgICAgbmV3T0lEWzEyOF0sIGN1cnJPSURbMTI4XTsKIAogICAgIC8qCiAgICAgICogaWYgdGhlIGxpc3QgaXMgZW1wdHksIGFkZCB0aGUgbmV3IGVudHJ5IHRvIHRoZSB0b3AgCkBAIC0xMjcsMjMgKzEzMSwxOSBAQAogICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIHsKICAgICAgICAgLyoKLSAgICAgICAgICogZ2V0IHRoZSAnT0lEJyB2YWx1ZSBvZiB0aGUgbmV3IGVudHJ5IAotICAgICAgICAgKi8KLSAgICAgICAgbmV3T0lETGVuID0gc3RybGVuKG5ld0VudHJ5LT5uYW1lKTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IChpbnQpIG5ld09JRExlbjsgaSsrKSB7Ci0gICAgICAgICAgICBuZXdPSURbaV0gPSBuZXdFbnRyeS0+bmFtZVtpXTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qCiAgICAgICAgICAqIHNlYXJjaCB0aHJvdWdoIHRoZSBsaXN0IGZvciBhbiBlcXVhbCBvciBncmVhdGVyIE9JRCB2YWx1ZSAKICAgICAgICAgICovCiAgICAgICAgIHdoaWxlIChjdXJyX3N0cnVjdCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBjdXJyT0lETGVuID0gc3RybGVuKGN1cnJfc3RydWN0LT5uYW1lKTsKLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAoaW50KSBjdXJyT0lETGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICBjdXJyT0lEW2ldID0gY3Vycl9zdHJ1Y3QtPm5hbWVbaV07CisgICAgICAgICAgICBpID0gbWVtY21wKG5ld0VudHJ5LT5uYW1lRGF0YSwgY3Vycl9zdHJ1Y3QtPm5hbWVEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICBuZXdFbnRyeS0+bmFtZUxlbiA8IGN1cnJfc3RydWN0LT5uYW1lTGVuID8KKyAgICAgICAgICAgICAgICAgICAgICAgbmV3RW50cnktPm5hbWVMZW4gOiBjdXJyX3N0cnVjdC0+bmFtZUxlbik7CisgICAgICAgICAgICBpZiAoaSA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKG5ld0VudHJ5LT5uYW1lTGVuIDwgY3Vycl9zdHJ1Y3QtPm5hbWVMZW4pCisgICAgICAgICAgICAgICAgICAgIGkgPSAtMTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChuZXdFbnRyeS0+bmFtZUxlbiA+IGN1cnJfc3RydWN0LT5uYW1lTGVuKQorICAgICAgICAgICAgICAgICAgICBpID0gMTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaSA9IHNubXBfb2lkX2NvbXBhcmUobmV3T0lELCBuZXdPSURMZW4sIGN1cnJPSUQsIGN1cnJPSURMZW4pOwogICAgICAgICAgICAgaWYgKGkgPT0gMCkgeyAgICAgICAvKiBFeGFjdCBtYXRjaCwgb3ZlcndyaXRlIHdpdGggbmV3IHN0cnVjdCAqLwogICAgICAgICAgICAgICAgIG5ld0VudHJ5LT5uZXh0ID0gY3Vycl9zdHJ1Y3QtPm5leHQ7CiAgICAgICAgICAgICAgICAgLyoKQEAgLTIzMywxMCArMjMzLDEwIEBACiAKICAgICBmb3IgKHRlbXBfc3RydWN0ID0gYUFkZHJUYWJsZTsgdGVtcF9zdHJ1Y3QgIT0gTlVMTDsKICAgICAgICAgIHRlbXBfc3RydWN0ID0gdGVtcF9zdHJ1Y3QtPm5leHQpIHsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IChpbnQpIHN0cmxlbih0ZW1wX3N0cnVjdC0+bmFtZSk7IGkrKykgewotICAgICAgICAgICAgbmV3TnVtW2Jhc2VOYW1lTGVuICsgaV0gPSB0ZW1wX3N0cnVjdC0+bmFtZVtpXTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHRlbXBfc3RydWN0LT5uYW1lTGVuOyBpKyspIHsKKyAgICAgICAgICAgIG5ld051bVtiYXNlTmFtZUxlbiArIGldID0gKHVuc2lnbmVkIGNoYXIpdGVtcF9zdHJ1Y3QtPm5hbWVEYXRhW2ldOwogICAgICAgICB9Ci0gICAgICAgIG15T0lETGVuID0gYmFzZU5hbWVMZW4gKyBzdHJsZW4odGVtcF9zdHJ1Y3QtPm5hbWUpOworICAgICAgICBteU9JRExlbiA9IGJhc2VOYW1lTGVuICsgdGVtcF9zdHJ1Y3QtPm5hbWVMZW47CiAgICAgICAgIGkgPSBzbm1wX29pZF9jb21wYXJlKG5hbWUsICpsZW5ndGgsIG5ld051bSwgbXlPSURMZW4pOwogICAgICAgICAvKgogICAgICAgICAgKiBBc3N1bWVzIHRoYXQgdGhlIGxpbmtlZCBsaXN0IHNvcnRlZCBieSBPSUQsIGxvdyB0byBoaWdoIApAQCAtMjc0LDcgKzI3NCw3IEBACiAgKiBmb3IgdGhlIHNubXBUYXJnZXRBZGRyRW50cnkgbWliIAogICovCiAKLXN0cnVjdCB2YXJpYWJsZTIgc25tcFRhcmdldEFkZHJFbnRyeV92YXJpYWJsZXNbXSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdmFyaWFibGUyIHNubXBUYXJnZXRBZGRyRW50cnlfdmFyaWFibGVzW10gPSB7CiAgICAge1NOTVBUQVJHRVRBRERSVERPTUFJTiwgQVNOX09CSkVDVF9JRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfc25tcFRhcmdldEFkZHJFbnRyeSwgMSwge1NOTVBUQVJHRVRBRERSVERPTUFJTkNPTFVNTn19LAogICAgIHtTTk1QVEFSR0VUQUREUlRBRERSRVNTLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCkBAIC0yOTQsMTcgKzI5NCwxNyBAQAogCiB9OwogCi1zdHJ1Y3QgdmFyaWFibGUyIHNubXBUYXJnZXRTcGluTG9ja192YXJbXSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdmFyaWFibGUyIHNubXBUYXJnZXRTcGluTG9ja192YXJbXSA9IHsKICAgICB7U05NUFRBUkdFVFNQSU5MT0NLLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfdGFyZ2V0U3BpbkxvY2ssIDEsIHsxfX0KIH07CiAKLXN0YXRpYyBvaWQgICAgICBzbm1wVGFyZ2V0U3BpbkxvY2tfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDEyLCAxIH07CitzdGF0aWMgY29uc3Qgb2lkIHNubXBUYXJnZXRTcGluTG9ja19vaWRbXSA9IHsgMSwgMywgNiwgMSwgNiwgMywgMTIsIDEgfTsKIAogLyoKICAqIG5vdyBsb2FkIHRoaXMgbWliIGludG8gdGhlIGFnZW50cyBtaWIgdGFibGUgCiAgKi8KLW9pZCAgICAgICAgICAgICBzbm1wVGFyZ2V0QWRkckVudHJ5X3ZhcmlhYmxlc19vaWRbXSA9CitzdGF0aWMgY29uc3Qgb2lkIHNubXBUYXJnZXRBZGRyRW50cnlfdmFyaWFibGVzX29pZFtdID0KICAgICB7IDEsIDMsIDYsIDEsIDYsIDMsIDEyLCAxLCAyLCAxIH07CiAKIApAQCAtMzIxLDcgKzMyMSw3IEBACiAKICAgICBzbm1wZF9yZWdpc3Rlcl9jb25maWdfaGFuZGxlcigidGFyZ2V0QWRkciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcGRfcGFyc2VfY29uZmlnX3RhcmdldEFkZHIsCi0JCQkJICAodm9pZCAoKikodm9pZCkpMCwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKCopKHZvaWQpKTAsIE5VTEwpOwogCiAgICAgLyoKICAgICAgKiB3ZSBuZWVkIHRvIGJlIGNhbGxlZCBiYWNrIGxhdGVyIApAQCAtMzMxLDMwICszMzEsMjEgQEAKIAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbml0X3NubXBUYXJnZXRBZGRyRW50cnkgKi8KIAotCi1pbnQKLXNubXBUYXJnZXRBZGRyX2FkZE5hbWUoc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKmVudHJ5LCBjaGFyICpjcHRyKQordm9pZAorc2h1dGRvd25fc25tcFRhcmdldEFkZHJFbnRyeSh2b2lkKQogewotICAgIHNpemVfdCAgICAgICAgICBsZW47Ci0gICAgaWYgKGNwdHIgPT0gTlVMTCkgewotICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCi0gICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0QWRkckVudHJ5OiBubyBuYW1lIGluIGNvbmZpZyBzdHJpbmdcbiIpKTsKLSAgICAgICAgcmV0dXJuICgwKTsKLSAgICB9IGVsc2UgewotICAgICAgICBsZW4gPSBzdHJsZW4oY3B0cik7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIHNwZWMgY2hlY2sgZm9yIHN0cmluZyAxLTMyIAotICAgICAgICAgKi8KLSAgICAgICAgaWYgKGxlbiA8IDEgfHwgbGVuID4gMzIpIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0QWRkckVudHJ5OiBuYW1lIG91dCBvZiByYW5nZSBpbiBjb25maWcgc3RyaW5nXG4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gKDApOwotICAgICAgICB9Ci0gICAgICAgIGVudHJ5LT5uYW1lID0gc3RyZHVwKGNwdHIpOwotICAgIH0KLSAgICByZXR1cm4gKDEpOwotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhZGROYW1lICovCisgICAgc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKnB0cjsKKyAgICBzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqbmV4dDsKIAorICAgIGZvciAocHRyID0gYUFkZHJUYWJsZTsgcHRyOyBwdHIgPSBuZXh0KSB7CisgICAgICAgIG5leHQgPSBwdHItPm5leHQ7CisgICAgICAgIHNubXBUYXJnZXRBZGRyVGFibGVfZGlzcG9zZShwdHIpOworICAgIH0KKyAgICBhQWRkclRhYmxlID0gTlVMTDsKKworICAgIHNubXBfdW5yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0xJQlJBUlksIFNOTVBfQ0FMTEJBQ0tfU1RPUkVfREFUQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVfc25tcFRhcmdldEFkZHJFbnRyeSwgTlVMTCwgRkFMU0UpOworfQogCiBpbnQKIHNubXBUYXJnZXRBZGRyX2FkZFREb21haW4oc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKmVudHJ5LCBjaGFyICpjcHRyKQpAQCAtNTM4LDcgKzUyOSw3IEBACiAgICAgICAgICAgICAgKGVudHJ5LT5zdG9yYWdlVHlwZSAhPSBTTk1QX1NUT1JBR0VfTk9OVk9MQVRJTEUpICYmCiAgICAgICAgICAgICAgKGVudHJ5LT5zdG9yYWdlVHlwZSAhPSBTTk1QX1NUT1JBR0VfUEVSTUFORU5UKSAmJgogICAgICAgICAgICAgIChlbnRyeS0+c3RvcmFnZVR5cGUgIT0gU05NUF9TVE9SQUdFX1JFQURPTkxZKSkgewotCURFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwKKyAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLAogICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogc3RvcmFnZSB0eXBlIG5vdCBhIHZhbGlkICIKICAgICAgICAgICAgICAgICAgICAgInZhbHVlIG9mIG90aGVyKCVkKSwgdm9sYXRpbGUoJWQpLCBub252b2xhdGlsZSglZCksICIKICAgICAgICAgICAgICAgICAgICAgInBlcm1hbmVudCglZCksIG9yIHJlYWRvbmx5KCVkKSBpbiBjb25maWcgc3RyaW5nLlxuIiwKQEAgLTU4NywyNCArNTc4LDQyIEBACiB2b2lkCiBzbm1wZF9wYXJzZV9jb25maWdfdGFyZ2V0QWRkcihjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY2hhcl9wdHIpCiB7Ci0gICAgY2hhciAgICAgICAgICAgKmNwdHIgPSBjaGFyX3B0ciwgYnVmZlsxMDI0XTsKKyAgICBjb25zdCBjaGFyICAgICAqY3B0ciA9IGNoYXJfcHRyOworICAgIGNoYXIgICAgICAgICAgICBidWZmWzEwMjRdLCAqYnB0cjsKICAgICBzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqbmV3RW50cnk7CiAgICAgaW50ICAgICAgICAgICAgIGk7CisgICAgc2l6ZV90ICAgICAgICAgIGJ1Zmw7CiAKICAgICBuZXdFbnRyeSA9IHNubXBUYXJnZXRBZGRyVGFibGVfY3JlYXRlKCk7CiAKLSAgICBjcHRyID0gY29weV9ud29yZChjcHRyLCBidWZmLCBzaXplb2YoYnVmZikpOwotICAgIGlmIChzbm1wVGFyZ2V0QWRkcl9hZGROYW1lKG5ld0VudHJ5LCBidWZmKSA9PSAwKSB7CisgICAgY3B0ciA9IHNraXBfd2hpdGVfY29uc3QoY3B0cik7CisgICAgaWYgKGNwdHIgPT0gTlVMTCkgeworICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCisgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0QWRkckVudHJ5OiBubyBuYW1lIGluIGNvbmZpZyBzdHJpbmdcbiIpKTsKICAgICAgICAgc25tcFRhcmdldEFkZHJUYWJsZV9kaXNwb3NlKG5ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjcHRyID0gY29weV9ud29yZChjcHRyLCBidWZmLCBzaXplb2YoYnVmZikpOworCisgICAgYnVmbCA9IDA7CisgICAgY3B0ciA9IHJlYWRfY29uZmlnX3JlYWRfb2N0ZXRfc3RyaW5nX2NvbnN0KGNwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIqKikmbmV3RW50cnktPm5hbWVEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnVmbCk7CisgICAgaWYgKGJ1ZmwgPCAxIHx8IGJ1ZmwgPiAzMikgeworICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCisgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0QWRkckVudHJ5OiBuYW1lIG91dCBvZiByYW5nZSBpbiBjb25maWcgIgorICAgICAgICAgICAgICAgICAgICAic3RyaW5nXG4iKSk7CisgICAgICAgIHNubXBUYXJnZXRBZGRyVGFibGVfZGlzcG9zZShuZXdFbnRyeSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbmV3RW50cnktPm5hbWVMZW4gPSBidWZsOworCisgICAgY3B0ciA9IGNvcHlfbndvcmRfY29uc3QoY3B0ciwgYnVmZiwgc2l6ZW9mKGJ1ZmYpKTsKICAgICBpZiAoc25tcFRhcmdldEFkZHJfYWRkVERvbWFpbihuZXdFbnRyeSwgYnVmZikgPT0gMCkgewogICAgICAgICBzbm1wVGFyZ2V0QWRkclRhYmxlX2Rpc3Bvc2UobmV3RW50cnkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNwdHIgPQotICAgICAgICByZWFkX2NvbmZpZ19yZWFkX29jdGV0X3N0cmluZyhjcHRyLAorICAgICAgICByZWFkX2NvbmZpZ19yZWFkX29jdGV0X3N0cmluZ19jb25zdChjcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICoqKSAmIG5ld0VudHJ5LT50QWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld0VudHJ5LT50QWRkcmVzc0xlbik7CiAgICAgaWYgKCFjcHRyIHx8ICEobmV3RW50cnktPnRBZGRyZXNzKSkgewpAQCAtNjEzLDUwICs2MjIsNTIgQEAKICAgICAgICAgc25tcFRhcmdldEFkZHJUYWJsZV9kaXNwb3NlKG5ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjcHRyID0gY29weV9ud29yZChjcHRyLCBidWZmLCBzaXplb2YoYnVmZikpOworICAgIGNwdHIgPSBjb3B5X253b3JkX2NvbnN0KGNwdHIsIGJ1ZmYsIHNpemVvZihidWZmKSk7CiAgICAgaWYgKHNubXBUYXJnZXRBZGRyX2FkZFRpbWVvdXQobmV3RW50cnksIGJ1ZmYpID09IDApIHsKICAgICAgICAgc25tcFRhcmdldEFkZHJUYWJsZV9kaXNwb3NlKG5ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjcHRyID0gY29weV9ud29yZChjcHRyLCBidWZmLCBzaXplb2YoYnVmZikpOworICAgIGNwdHIgPSBjb3B5X253b3JkX2NvbnN0KGNwdHIsIGJ1ZmYsIHNpemVvZihidWZmKSk7CiAgICAgaWYgKHNubXBUYXJnZXRBZGRyX2FkZFJldHJ5Q291bnQobmV3RW50cnksIGJ1ZmYpID09IDApIHsKICAgICAgICAgc25tcFRhcmdldEFkZHJUYWJsZV9kaXNwb3NlKG5ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjcHRyID0gY29weV9ud29yZChjcHRyLCBidWZmLCBzaXplb2YoYnVmZikpOworICAgIGNwdHIgPSBjb3B5X253b3JkX2NvbnN0KGNwdHIsIGJ1ZmYsIHNpemVvZihidWZmKSk7CiAgICAgaWYgKHNubXBUYXJnZXRBZGRyX2FkZFRhZ0xpc3QobmV3RW50cnksIGJ1ZmYpID09IDApIHsKICAgICAgICAgc25tcFRhcmdldEFkZHJUYWJsZV9kaXNwb3NlKG5ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjcHRyID0gY29weV9ud29yZChjcHRyLCBidWZmLCBzaXplb2YoYnVmZikpOworICAgIGNwdHIgPSBjb3B5X253b3JkX2NvbnN0KGNwdHIsIGJ1ZmYsIHNpemVvZihidWZmKSk7CiAgICAgaWYgKHNubXBUYXJnZXRBZGRyX2FkZFBhcmFtcyhuZXdFbnRyeSwgYnVmZikgPT0gMCkgewogICAgICAgICBzbm1wVGFyZ2V0QWRkclRhYmxlX2Rpc3Bvc2UobmV3RW50cnkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNwdHIgPSBjb3B5X253b3JkKGNwdHIsIGJ1ZmYsIHNpemVvZihidWZmKSk7CisgICAgY3B0ciA9IGNvcHlfbndvcmRfY29uc3QoY3B0ciwgYnVmZiwgc2l6ZW9mKGJ1ZmYpKTsKICAgICBpZiAoc25tcFRhcmdldEFkZHJfYWRkU3RvcmFnZVR5cGUobmV3RW50cnksIGJ1ZmYpID09IDApIHsKICAgICAgICAgc25tcFRhcmdldEFkZHJUYWJsZV9kaXNwb3NlKG5ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjcHRyID0gY29weV9ud29yZChjcHRyLCBidWZmLCBzaXplb2YoYnVmZikpOworICAgIGNwdHIgPSBjb3B5X253b3JkX2NvbnN0KGNwdHIsIGJ1ZmYsIHNpemVvZihidWZmKSk7CiAgICAgaWYgKHNubXBUYXJnZXRBZGRyX2FkZFJvd1N0YXR1cyhuZXdFbnRyeSwgYnVmZikgPT0gMCkgewogICAgICAgICBzbm1wVGFyZ2V0QWRkclRhYmxlX2Rpc3Bvc2UobmV3RW50cnkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHNucHJpbnRmKGJ1ZmYsIHNpemVvZihidWZmKSwgInNubXBfcGFyc2VfY29uZmlnX3RhcmdldEFkZHIsIHJlYWQ6ICVzXG4iLAotICAgICAgICAgICAgbmV3RW50cnktPm5hbWUpOwotICAgIGJ1ZmZbIHNpemVvZihidWZmKS0xIF0gPSAwOworICAgIGJwdHIgPSBidWZmOworICAgIGJwdHIgKz0gc3ByaW50ZihicHRyLCAic25tcF9wYXJzZV9jb25maWdfdGFyZ2V0QWRkciwgcmVhZDogIik7CisgICAgYnB0ciA9IHJlYWRfY29uZmlnX3NhdmVfb2N0ZXRfc3RyaW5nKGJwdHIsICh1X2NoYXIqKW5ld0VudHJ5LT5uYW1lRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RW50cnktPm5hbWVMZW4pOworICAgICpicHRyKysgPSAnXG4nOwogICAgIGZvciAoaSA9IDA7IGkgPCBuZXdFbnRyeS0+dERvbWFpbkxlbjsgaSsrKSB7Ci0gICAgICAgIHNucHJpbnRmKCZidWZmW3N0cmxlbihidWZmKV0sIHNpemVvZihidWZmKS1zdHJsZW4oYnVmZiktMSwKLSAgICAgICAgICAgICAgICAgIi4lZCIsIChpbnQpIG5ld0VudHJ5LT50RG9tYWluW2ldKTsKLSAgICAgICAgYnVmZlsgc2l6ZW9mKGJ1ZmYpLTEgXSA9IDA7CisgICAgICAgIGJwdHIgKz0gc25wcmludGYoYnB0ciwgYnVmZiArIHNpemVvZihidWZmKSAtIGJwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIi4lZCIsIChpbnQpIG5ld0VudHJ5LT50RG9tYWluW2ldKTsKICAgICB9Ci0gICAgc25wcmludGYoJmJ1ZmZbc3RybGVuKGJ1ZmYpXSwgc2l6ZW9mKGJ1ZmYpLXN0cmxlbihidWZmKS0xLAotICAgICAgICAgICAgIiAlcyAlZCAlZCAlcyAlcyAlZCAlZFxuIiwKLSAgICAgICAgICAgIG5ld0VudHJ5LT50QWRkcmVzcywgbmV3RW50cnktPnRpbWVvdXQsIG5ld0VudHJ5LT5yZXRyeUNvdW50LAotICAgICAgICAgICAgbmV3RW50cnktPnRhZ0xpc3QsIG5ld0VudHJ5LT5wYXJhbXMsIG5ld0VudHJ5LT5zdG9yYWdlVHlwZSwKLSAgICAgICAgICAgIG5ld0VudHJ5LT5yb3dTdGF0dXMpOwotICAgIGJ1ZmZbIHNpemVvZihidWZmKS0xIF0gPSAwOworICAgIGJwdHIgKz0gc25wcmludGYoYnB0ciwgYnVmZiArIHNpemVvZihidWZmKSAtIGJwdHIsCisgICAgICAgICAgICAgICAgICAgICAiICVzICVkICVkICVzICVzICVkICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgbmV3RW50cnktPnRBZGRyZXNzLCBuZXdFbnRyeS0+dGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgIG5ld0VudHJ5LT5yZXRyeUNvdW50LCBuZXdFbnRyeS0+dGFnTGlzdCwKKyAgICAgICAgICAgICAgICAgICAgIG5ld0VudHJ5LT5wYXJhbXMsIG5ld0VudHJ5LT5zdG9yYWdlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgIG5ld0VudHJ5LT5yb3dTdGF0dXMpOworICAgIGJ1ZmZbIHNpemVvZihidWZmKSAtIDEgXSA9IDA7CiAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLCAiJXMiLCBidWZmKSk7CiAKICAgICBzbm1wVGFyZ2V0QWRkclRhYmxlX2FkZFRvTGlzdChuZXdFbnRyeSwgJmFBZGRyVGFibGUpOwpAQCAtNjczLDUzICs2ODQsNDggQEAKICAqIGZvciB0aGlzIE1JQiB0YWJsZS4gSXQgd3JpdGVzIG91dCBhbGwgdGhlIG5vbi12b2xhdGlsZSByb3dzIAogICogdG8gcGVybWFuZW50IHN0b3JhZ2Ugb24gYSBzaHV0ZG93biAgCiAgKi8KLWludAorc3RhdGljIGludAogc3RvcmVfc25tcFRhcmdldEFkZHJFbnRyeShpbnQgbWFqb3JJRCwgaW50IG1pbm9ySUQsIHZvaWQgKnNlcnZlcmFyZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xpZW50YXJnKQogewotICAgIHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICpjdXJyX3N0cnVjdDsKLSAgICBjaGFyICAgICAgICAgICAgbGluZVsxMDI0XTsKKyAgICBjb25zdCBzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqY3Vycl9zdHJ1Y3Q7CisgICAgY2hhciAgICAgICAgICAgIGxpbmVbMTAyNF0sICpjdXIsICplcCA9IGxpbmUgKyBzaXplb2YobGluZSk7CiAgICAgaW50ICAgICAgICAgICAgIGk7CiAKLSAgICBpZiAoKGN1cnJfc3RydWN0ID0gYUFkZHJUYWJsZSkgIT0gTlVMTCkgewotICAgICAgICB3aGlsZSAoY3Vycl9zdHJ1Y3QgIT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKChjdXJyX3N0cnVjdC0+c3RvcmFnZVR5cGUgPT0gU05NUF9TVE9SQUdFX05PTlZPTEFUSUxFIHx8Ci0gICAgICAgICAgICAgICAgIGN1cnJfc3RydWN0LT5zdG9yYWdlVHlwZSA9PSBTTk1QX1NUT1JBR0VfUEVSTUFORU5UKQotICAgICAgICAgICAgICAgICYmCi0gICAgICAgICAgICAgICAgKGN1cnJfc3RydWN0LT5yb3dTdGF0dXMgPT0gU05NUF9ST1dfQUNUSVZFIHx8Ci0gICAgICAgICAgICAgICAgIGN1cnJfc3RydWN0LT5yb3dTdGF0dXMgPT0gU05NUF9ST1dfTk9USU5TRVJWSUNFKSkgewotICAgICAgICAgICAgICAgIHNucHJpbnRmKGxpbmUsIHNpemVvZihsaW5lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0YXJnZXRBZGRyICVzICIsIGN1cnJfc3RydWN0LT5uYW1lKTsKLSAgICAgICAgICAgICAgICBsaW5lWyBzaXplb2YobGluZSktMSBdID0gMDsKLSAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY3Vycl9zdHJ1Y3QtPnREb21haW5MZW47IGkrKykgewotICAgICAgICAgICAgICAgICAgICBzbnByaW50ZigmbGluZVtzdHJsZW4obGluZSldLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihsaW5lKS1zdHJsZW4obGluZSktMSwgIi4laSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkgY3Vycl9zdHJ1Y3QtPnREb21haW5baV0pOwotICAgICAgICAgICAgICAgICAgICBsaW5lWyBzaXplb2YobGluZSktMSBdID0gMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3RybGNhdChsaW5lLCAiICIsIHNpemVvZihsaW5lKSk7Ci0gICAgICAgICAgICAgICAgcmVhZF9jb25maWdfc2F2ZV9vY3RldF9zdHJpbmcoJmxpbmVbc3RybGVuKGxpbmUpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyX3N0cnVjdC0+dEFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vycl9zdHJ1Y3QtPnRBZGRyZXNzTGVuKTsKLQotICAgICAgICAgICAgICAgIHNucHJpbnRmKCZsaW5lW3N0cmxlbihsaW5lKV0sIHNpemVvZihsaW5lKS1zdHJsZW4obGluZSktMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICIgJWkgJWkgXCIlc1wiICVzICVpICVpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJfc3RydWN0LT50aW1lb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgY3Vycl9zdHJ1Y3QtPnJldHJ5Q291bnQsIGN1cnJfc3RydWN0LT50YWdMaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgY3Vycl9zdHJ1Y3QtPnBhcmFtcywgY3Vycl9zdHJ1Y3QtPnN0b3JhZ2VUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgY3Vycl9zdHJ1Y3QtPnJvd1N0YXR1cyk7Ci0gICAgICAgICAgICAgICAgbGluZVsgc2l6ZW9mKGxpbmUpLTEgXSA9IDA7Ci0KLSAgICAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgICAqIHN0b3JlIHRvIGZpbGUgCi0gICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgc25tcGRfc3RvcmVfY29uZmlnKGxpbmUpOworICAgIGN1cnJfc3RydWN0ID0gYUFkZHJUYWJsZTsKKyAgICB3aGlsZSAoY3Vycl9zdHJ1Y3QgIT0gTlVMTCkgeworICAgICAgICBpZiAoKGN1cnJfc3RydWN0LT5zdG9yYWdlVHlwZSA9PSBTTk1QX1NUT1JBR0VfTk9OVk9MQVRJTEUgfHwKKyAgICAgICAgICAgICBjdXJyX3N0cnVjdC0+c3RvcmFnZVR5cGUgPT0gU05NUF9TVE9SQUdFX1BFUk1BTkVOVCkgJiYKKyAgICAgICAgICAgIChjdXJyX3N0cnVjdC0+cm93U3RhdHVzID09IFNOTVBfUk9XX0FDVElWRSB8fAorICAgICAgICAgICAgIGN1cnJfc3RydWN0LT5yb3dTdGF0dXMgPT0gU05NUF9ST1dfTk9USU5TRVJWSUNFKSkgeworICAgICAgICAgICAgY3VyID0gbGluZSArIHNucHJpbnRmKGxpbmUsIHNpemVvZihsaW5lKSwgInRhcmdldEFkZHIgIik7CisgICAgICAgICAgICBjdXIgPSByZWFkX2NvbmZpZ19zYXZlX29jdGV0X3N0cmluZygKKyAgICAgICAgICAgICAgICBjdXIsICh1X2NoYXIqKWN1cnJfc3RydWN0LT5uYW1lRGF0YSwgY3Vycl9zdHJ1Y3QtPm5hbWVMZW4pOworICAgICAgICAgICAgKmN1cisrID0gJyAnOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGN1cnJfc3RydWN0LT50RG9tYWluTGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBjdXIgKz0gc25wcmludGYoY3VyLCBlcCAtIGN1ciwgIi4laSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpIGN1cnJfc3RydWN0LT50RG9tYWluW2ldKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGN1cnJfc3RydWN0ID0gY3Vycl9zdHJ1Y3QtPm5leHQ7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKKyAgICAgICAgICAgICpjdXIrKyA9ICcgJzsKKyAgICAgICAgICAgIGN1ciA9IHJlYWRfY29uZmlnX3NhdmVfb2N0ZXRfc3RyaW5nKAorICAgICAgICAgICAgICAgIGN1ciwgY3Vycl9zdHJ1Y3QtPnRBZGRyZXNzLCBjdXJyX3N0cnVjdC0+dEFkZHJlc3NMZW4pOworICAgICAgICAgICAgY3VyICs9IHNucHJpbnRmKGN1ciwgZXAgLSBjdXIsICIgJWkgJWkgXCIlc1wiICVzICVpICVpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyX3N0cnVjdC0+dGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyX3N0cnVjdC0+cmV0cnlDb3VudCwgY3Vycl9zdHJ1Y3QtPnRhZ0xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vycl9zdHJ1Y3QtPnBhcmFtcywgY3Vycl9zdHJ1Y3QtPnN0b3JhZ2VUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJfc3RydWN0LT5yb3dTdGF0dXMpOworICAgICAgICAgICAgbGluZVsgc2l6ZW9mKGxpbmUpLTEgXSA9IDA7CiAKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBzdG9yZSB0byBmaWxlCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHNubXBkX3N0b3JlX2NvbmZpZyhsaW5lKTsKKyAgICAgICAgfQorCisgICAgICAgIGN1cnJfc3RydWN0ID0gY3Vycl9zdHJ1Y3QtPm5leHQ7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIHN0b3JlX3NubXBUYXJnZXRBZGRyRW50cnkgICovCiAKIApAQCAtNzUzLDYgKzc1OSw3IEBACiAgICAgICovCiAKICAgICBzd2l0Y2ggKHZwLT5tYWdpYykgeworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIFNOTVBUQVJHRVRBRERSVERPTUFJTjoKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX3NubXBUYXJnZXRBZGRyVERvbWFpbjsKICAgICAgICAgYnJlYWs7CkBAIC03NzcsMTEgKzc4NCwxMyBAQAogICAgIGNhc2UgU05NUFRBUkdFVEFERFJST1dTVEFUVVM6CiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9zbm1wVGFyZ2V0QWRkclJvd1N0YXR1czsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICBkZWZhdWx0OgogICAgICAgICAqd3JpdGVfbWV0aG9kID0gTlVMTDsKICAgICB9CiAKLSAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nX3JldCk7ICAgICAgICAvKiBhc3N1bWUgYW4gaW50ZWdlciBhbmQgY2hhbmdlIGxhdGVyIGlmIG5vdCAqLworICAgIC8qIGFzc3VtZSBhbiBpbnRlZ2VyIGFuZCBjaGFuZ2UgbGF0ZXIgaWYgbm90ICovCisgICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZ19yZXQpOwogCiAgICAgLyoKICAgICAgKiBsb29rIGZvciBPSUQgaW4gY3VycmVudCB0YWJsZSAKQEAgLTg1MywxMCArODYyLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICJ1bmtub3duIHN1Yi1pZCAlZCBpbiB2YXJfc25tcFRhcmdldEFkZHJFbnRyeVxuIiwKICAgICAgICAgICAgICAgICAgICAgdnAtPm1hZ2ljKSk7CiAgICAgfQorCiAgICAgcmV0dXJuIE5VTEw7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHZhcl9zbm1wVGFyZ2V0QWRkckVudHJ5ICovCiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIGludAogd3JpdGVfc25tcFRhcmdldEFkZHJURG9tYWluKGludCBhY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyICogdmFyX3ZhbCwKQEAgLTkyMSw2ICs5MzIsOCBAQAogICAgICAgICAgICAgICAgIHRhcmdldC0+cm93U3RhdHVzID0gU05NUF9ST1dfTk9USU5TRVJWSUNFOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gQ09NTUlUKSB7CisgICAgICAgIHNubXBfc3RvcmVfbmVlZGVkKE5VTEwpOwogICAgIH0gZWxzZSBpZiAoYWN0aW9uID09IEZSRUUgfHwgYWN0aW9uID09IFVORE8pIHsKICAgICAgICAgLyoKICAgICAgICAgICogVHJ5IHRvIHVuZG8gdGhlIFNFVCBoZXJlIChhYm5vcm1hbCB1c2FnZSBvZiBGUkVFIGNsYXVzZSkgIApAQCAtMTAwOCw2ICsxMDIxLDcgQEAKICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PSBDT01NSVQpIHsKICAgICAgICAgU05NUF9GUkVFKG9sZF9hZGRyKTsKICAgICAgICAgb2xkX2FkZHIgPSBOVUxMOworICAgICAgICBzbm1wX3N0b3JlX25lZWRlZChOVUxMKTsKICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PSBGUkVFIHx8IGFjdGlvbiA9PSBVTkRPKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIFRyeSB0byB1bmRvIHRoZSBTRVQgaGVyZSAoYWJub3JtYWwgdXNhZ2Ugb2YgRlJFRSBjbGF1c2UpICAKQEAgLTExMDMsNiArMTExNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSkpICE9IE5VTEwpIHsKICAgICAgICAgICAgIHRlbXBfc3RydWN0LT50aW1lb3V0ID0gbG9uZ19yZXQ7CiAgICAgICAgIH0KKyAgICAgICAgc25tcF9zdG9yZV9uZWVkZWQoTlVMTCk7CiAgICAgfQogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CkBAIC0xMTYwLDYgKzExNzUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpKSAhPSBOVUxMKSB7CiAgICAgICAgICAgICB0YXJnZXQtPnJldHJ5Q291bnQgPSBsb25nX3JldDsKICAgICAgICAgfQorICAgICAgICBzbm1wX3N0b3JlX25lZWRlZChOVUxMKTsKICAgICB9CiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKQEAgLTEyNTAsNiArMTI2Niw3IEBACiAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gQ09NTUlUKSB7CiAgICAgICAgIFNOTVBfRlJFRShvbGRfdGxpc3QpOwogICAgICAgICBvbGRfdGxpc3QgPSBOVUxMOworICAgICAgICBzbm1wX3N0b3JlX25lZWRlZChOVUxMKTsKICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PSBGUkVFIHx8IGFjdGlvbiA9PSBVTkRPKSB7CiAgICAgICAgIHNubXBUYXJnZXRBZGRyT0lEW3NubXBUYXJnZXRBZGRyT0lETGVuIC0gMV0gPQogICAgICAgICAgICAgU05NUFRBUkdFVEFERFJUQUdMSVNUQ09MVU1OOwpAQCAtMTMyNyw2ICsxMzQ0LDcgQEAKICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PSBDT01NSVQpIHsKICAgICAgICAgU05NUF9GUkVFKG9sZF9wYXJhbXMpOwogICAgICAgICBvbGRfcGFyYW1zID0gTlVMTDsKKyAgICAgICAgc25tcF9zdG9yZV9uZWVkZWQoTlVMTCk7CiAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gRlJFRSB8fCBhY3Rpb24gPT0gVU5ETykgewogICAgICAgICAvKgogICAgICAgICAgKiBUcnkgdG8gdW5kbyB0aGUgU0VUIGhlcmUgKGFibm9ybWFsIHVzYWdlIG9mIEZSRUUgY2xhdXNlKSAgCkBAIC0xNDEzLDYgKzE0MzEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpKSAhPSBOVUxMKSB7CiAgICAgICAgICAgICB0YXJnZXQtPnN0b3JhZ2VUeXBlID0gbG9uZ19yZXQ7CiAgICAgICAgIH0KKyAgICAgICAgc25tcF9zdG9yZV9uZWVkZWQoTlVMTCk7CiAgICAgfQogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CkBAIC0xNDQxLDE4ICsxNDYwLDE4IEBACiAgICAgICAgIHRlbXBfc3RydWN0ID0gc25tcFRhcmdldEFkZHJUYWJsZV9jcmVhdGUoKTsKICAgICAgICAgaWYgKCF0ZW1wX3N0cnVjdCkKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7Ci0gICAgICAgIHRlbXBfc3RydWN0LT5uYW1lID0gKGNoYXIgKikgbWFsbG9jKG5ld05hbWVMZW4gKyAxKTsKLSAgICAgICAgaWYgKHRlbXBfc3RydWN0LT5uYW1lID09IE5VTEwpIHsKKyAgICAgICAgdGVtcF9zdHJ1Y3QtPm5hbWVEYXRhID0gKGNoYXIgKikgbWFsbG9jKG5ld05hbWVMZW4pOworICAgICAgICBpZiAodGVtcF9zdHJ1Y3QtPm5hbWVEYXRhID09IE5VTEwpIHsKICAgICAgICAgICAgIFNOTVBfRlJFRSh0ZW1wX3N0cnVjdC0+dGFnTGlzdCk7CiAgICAgICAgICAgICBTTk1QX0ZSRUUodGVtcF9zdHJ1Y3QpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KIAorICAgICAgICB0ZW1wX3N0cnVjdC0+bmFtZUxlbiA9IG5ld05hbWVMZW47CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAoaW50KSBuZXdOYW1lTGVuOyBpKyspIHsKLSAgICAgICAgICAgIHRlbXBfc3RydWN0LT5uYW1lW2ldID0gKGNoYXIpIG5hbWVbaSArIHNubXBUYXJnZXRBZGRyT0lETGVuXTsKKyAgICAgICAgICAgIHRlbXBfc3RydWN0LT5uYW1lRGF0YVtpXSA9IChjaGFyKSBuYW1lW2kgKyBzbm1wVGFyZ2V0QWRkck9JRExlbl07CiAgICAgICAgIH0KIAotICAgICAgICB0ZW1wX3N0cnVjdC0+bmFtZVtuZXdOYW1lTGVuXSA9ICdcMCc7CiAgICAgICAgIHRlbXBfc3RydWN0LT5yb3dTdGF0dXMgPSBTTk1QX1JPV19OT1RSRUFEWTsKIAogICAgICAgICBzbm1wVGFyZ2V0QWRkclRhYmxlX2FkZFRvTGlzdCh0ZW1wX3N0cnVjdCwgJmFBZGRyVGFibGUpOwpAQCAtMTY0OCw2ICsxNjY3LDcgQEAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KIAorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogCiB1X2NoYXIgICAgICAgICAqCkBAIC0xNjU5LDEyICsxNjc5LDIwIEBACiB7CiAgICAgaWYgKGhlYWRlcl9nZW5lcmljKHZwLCBuYW1lLCBsZW5ndGgsIGV4YWN0LCB2YXJfbGVuLCB3cml0ZV9tZXRob2QpID09CiAgICAgICAgIE1BVENIX0ZBSUxFRCkgeworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX3RhcmdldFNwaW5Mb2NrOworI2Vsc2UKKwkJKndyaXRlX21ldGhvZCA9IE5VTEw7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKHZwLT5tYWdpYyA9PSBTTk1QVEFSR0VUU1BJTkxPQ0spIHsKLSAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX3RhcmdldFNwaW5Mb2NrOwogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZih1bnNpZ25lZCBsb25nKTsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCisgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV90YXJnZXRTcGluTG9jazsKKyNlbHNlCisJCSp3cml0ZV9tZXRob2QgPSBOVUxMOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiAoc25tcFRhcmdldFNwaW5Mb2NrKTsKICAgICB9CiAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5oIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuaAppbmRleCA3ZWQ4MzhmLi4wYjcwYWY1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5oCisrKyBiL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmgKQEAgLTQ2LDcgKzQ2LDggQEAKICAgICAgKiBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMgCiAgICAgICovCiAgICAgIHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0IHsKLSAgICAgICAgIGNoYXIgICAgICAgICAgICpuYW1lOworICAgICAgICAgY2hhciAgICAgICAgICAgKm5hbWVEYXRhOworICAgICAgICAgdW5zaWduZWQgY2hhciAgIG5hbWVMZW47CiAgICAgICAgICBvaWQgICAgICAgICAgICAgdERvbWFpbltNQVhfT0lEX0xFTl07CiAgICAgICAgICBpbnQgICAgICAgICAgICAgdERvbWFpbkxlbjsKICAgICAgICAgIHVuc2lnbmVkIGNoYXIgICp0QWRkcmVzczsKQEAgLTY3LDE5ICs2OCwxOSBAQAogICovCiAKICAgICAgdm9pZCAgICAgICAgICAgIGluaXRfc25tcFRhcmdldEFkZHJFbnRyeSh2b2lkKTsKLSAgICAgaW50ICAgICAgICAgICAgIHN0b3JlX3NubXBUYXJnZXRBZGRyRW50cnkoaW50IG1ham9ySUQsIGludCBtaW5vcklELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzZXJ2ZXJhcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsaWVudGFyZyk7CisgICAgIHZvaWQgICAgICAgICAgICBzaHV0ZG93bl9zbm1wVGFyZ2V0QWRkckVudHJ5KHZvaWQpOwogICAgICBGaW5kVmFyTWV0aG9kICAgdmFyX3NubXBUYXJnZXRBZGRyRW50cnk7CiAKICAgICAgc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKmdldF9hZGRyVGFibGUodm9pZCk7Ci0gICAgIHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICpnZXRfYWRkckZvck5hbWUoY2hhciAqbmFtZSk7CisgICAgIHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICpnZXRfYWRkckZvck5hbWUyKGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbmFtZUxlbik7CiAgICAgIHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICpzbm1wVGFyZ2V0QWRkclRhYmxlX2NyZWF0ZSh2b2lkKTsKICAgICAgdm9pZCAgICAgICAgICAgIHNubXBUYXJnZXRBZGRyVGFibGVfYWRkKHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmV3RW50cnkpOwogCiAgICAgIHZvaWQgICAgICAgICAgICBzbm1wZF9wYXJzZV9jb25maWdfdGFyZ2V0QWRkcihjb25zdCBjaGFyICosIGNoYXIgKik7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9zbm1wVGFyZ2V0QWRkclREb21haW47CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9zbm1wVGFyZ2V0QWRkclRBZGRyZXNzOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfc25tcFRhcmdldEFkZHJUaW1lb3V0OwpAQCAtODksNyArOTAsOCBAQAogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfc25tcFRhcmdldEFkZHJTdG9yYWdlVHlwZTsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX3NubXBUYXJnZXRBZGRyUm93U3RhdHVzOwogCi0gICAgIEZpbmRWYXJNZXRob2QgICB2YXJfdGFyZ2V0U3BpbkxvY2s7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV90YXJnZXRTcGluTG9jazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgIEZpbmRWYXJNZXRob2QgICB2YXJfdGFyZ2V0U3BpbkxvY2s7CiAKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX01JQkdST1VQX1NOTVBUQVJHRVRBRERSRU5UUllfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5jIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5jCmluZGV4IGU1MTUzNzkuLjRlMWY0ZTIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuYworKysgYi9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmMKQEAgLTI5Miw2ICsyOTIsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlX3NubXBUYXJnZXRQYXJhbXNFbnRyeSwgTlVMTCk7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBpbml0X3NubXBUYXJnZXRQYXJtc0VudHJ5ICAqLwogCit2b2lkCitzaHV0ZG93bl9zbm1wVGFyZ2V0UGFyYW1zRW50cnkodm9pZCkKK3sKKyAgICB3aGlsZSAoYVBUYWJsZSkKKwlzbm1wVGFyZ2V0UGFyYW1UYWJsZV9yZW1Gcm9tTGlzdChhUFRhYmxlLCAmYVBUYWJsZSk7Cit9CisKIAogaW50CiBzbm1wVGFyZ2V0UGFyYW1zX2FkZFBhcmFtTmFtZShzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKmVudHJ5LApAQCAtNjA4LDYgKzYxNSw3IEBACiAgICAgc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0ICp0ZW1wX3N0cnVjdDsKIAogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgU05NUFRBUkdFVFBBUkFNU01QTU9ERUw6CiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9zbm1wVGFyZ2V0UGFyYW1zTVBNb2RlbDsKICAgICAgICAgYnJlYWs7CkBAIC02MjYsMTEgKzYzNCwxMyBAQAogICAgIGNhc2UgU05NUFRBUkdFVFBBUkFNU1JPV1NUQVRVUzoKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX3NubXBUYXJnZXRQYXJhbXNSb3dTdGF0dXM7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICBkZWZhdWx0OgogICAgICAgICAqd3JpdGVfbWV0aG9kID0gTlVMTDsKICAgICB9CiAKLSAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nX3JldCk7ICAgICAgICAvKiBhc3N1bWUgYW4gaW50ZWdlciBhbmQgY2hhbmdlIGxhdGVyIGlmIG5vdCAqLworICAgIC8qIGFzc3VtZSBhbiBpbnRlZ2VyIGFuZCBjaGFuZ2UgbGF0ZXIgaWYgbm90ICovCisgICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZ19yZXQpOwogCiAgICAgLyoKICAgICAgKiBsb29rIGZvciBPSUQgaW4gY3VycmVudCB0YWJsZSAKQEAgLTcwMyw5ICs3MTMsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgInVua25vd24gc3ViLWlkICVkIGluIHZhcl9zbm1wVGFyZ2V0UGFyYW1zRW50cnlcbiIsCiAgICAgICAgICAgICAgICAgICAgIHZwLT5tYWdpYykpOwogICAgIH0KKwogICAgIHJldHVybiBOVUxMOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB2YXJfc25tcFRhcmdldFBhcmFtc0VudHJ5ICovCiAKKworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIC8qCiAgKiBBc3NpZ24gYSB2YWx1ZSB0byB0aGUgbXBNb2RlbCB2YXJpYWJsZS4gIAogICovCkBAIC0xMzc4LDYgKzEzOTEsOSBAQAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCisKIHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqCiBnZXRfcGFyYW1FbnRyeShjaGFyICpuYW1lKQogewpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oCmluZGV4IDgyODZhNjQuLmJkMzA1ODIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuaAorKysgYi9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmgKQEAgLTEsNzIgKzEsNzUgQEAKIAotLyoKLSAqIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IG1pYjJjIGFuZCBpcyBpbnRlbmRlZCBmb3IgdXNlIGFzIGEgbWliIG1vZHVsZQotICogZm9yIHRoZSB1Y2Qtc25tcCBzbm1wZCBhZ2VudC4gRWRpdGVkIGJ5IE1pY2hhZWwgQmFlcgotICogCi0gKiBsYXN0IGNoYW5nZWQgMi8yLzk5LgotICovCi0KLSNpZm5kZWYgX01JQkdST1VQX1NOTVBUQVJHRVRQQVJBTVNFTlRSWV9ICi0jZGVmaW5lIF9NSUJHUk9VUF9TTk1QVEFSR0VUUEFSQU1TRU5UUllfSAotCi0gICAgLyoKLSAgICAgKiBNYWdpYyBudW1iZXIgZGVmaW5pdGlvbnM6IAotICAgICAqLwotI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNNUE1PREVMICAgICAgICAxCi0jZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU1NFQ1VSSVRZTU9ERUwgIDIKLSNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TU0VDVVJJVFlOQU1FICAgMwotI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNTRUNVUklUWUxFVkVMICA0Ci0jZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU1NUT1JBR0VUWVBFICAgIDUKLSNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TUk9XU1RBVFVTICAgICAgNgotI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNNUE1PREVMQ09MVU1OICAgICAgICAyCi0jZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU1NFQ1VSSVRZTU9ERUxDT0xVTU4gIDMKLSNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TU0VDVVJJVFlOQU1FQ09MVU1OICAgNAotI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNTRUNVUklUWUxFVkVMQ09MVU1OICA1Ci0jZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU1NUT1JBR0VUWVBFQ09MVU1OICAgIDYKLSNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TUk9XU1RBVFVTQ09MVU1OICAgICAgNwotICAgIC8qCi0gICAgICogc3RydWN0dXJlIGRlZmluaXRpb25zIAotICAgICAqLwotICAgICBzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgewotICAgICAgICAgY2hhciAgICAgICAgICAgKnBhcmFtTmFtZTsKLSAgICAgICAgIGludCAgICAgICAgICAgICBtcE1vZGVsOwotICAgICAgICAgaW50ICAgICAgICAgICAgIHNlY01vZGVsOwotICAgICAgICAgY2hhciAgICAgICAgICAgKnNlY05hbWU7Ci0gICAgICAgICBpbnQgICAgICAgICAgICAgc2VjTGV2ZWw7Ci0gICAgICAgICBpbnQgICAgICAgICAgICAgc3RvcmFnZVR5cGU7Ci0gICAgICAgICBpbnQgICAgICAgICAgICAgcm93U3RhdHVzOwotICAgICAgICAgc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0ICpuZXh0OwotICAgICAgICAgdGltZV90ICAgICAgICAgIHVwZGF0ZVRpbWU7Ci0gICAgIH07Ci0KLS8qCi0gKiB1dGlsaXR5IGZ1bmN0aW9ucyAKLSAqLwotICAgICBzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKmdldF9wYXJhbUVudHJ5KGNoYXIgKm5hbWUpOwotICAgICB2b2lkICAgICAgICAgICAgc25tcFRhcmdldFBhcmFtVGFibGVfYWRkKHN0cnVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFBhcmFtVGFibGVfc3RydWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5ld0VudHJ5KTsKLSAgICAgc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0ICpzbm1wVGFyZ2V0UGFyYW1UYWJsZV9jcmVhdGUodm9pZCk7Ci0gICAgIHZvaWQgc25tcFRhcmdldFBhcmFtVGFibGVfZGlzcG9zZShzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKik7Ci0KLS8qCi0gKiBmdW5jdGlvbiBkZWZpbml0aW9ucyAKLSAqLwotCi0gICAgIHZvaWQgICAgICAgICAgICBpbml0X3NubXBUYXJnZXRQYXJhbXNFbnRyeSh2b2lkKTsKLSAgICAgaW50ICAgICAgICAgICAgIHN0b3JlX3NubXBUYXJnZXRQYXJhbXNFbnRyeShpbnQgbWFqb3JJRCwgaW50IG1pbm9ySUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc2VydmVyYXJnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsaWVudGFyZyk7Ci0gICAgIGV4dGVybiBGaW5kVmFyTWV0aG9kIHZhcl9zbm1wVGFyZ2V0UGFyYW1zRW50cnk7Ci0KLSAgICAgdm9pZCAgICAgICAgICAgIHNubXBkX3BhcnNlX2NvbmZpZ190YXJnZXRQYXJhbXMoY29uc3QgY2hhciAqLCBjaGFyICopOwotCisgIC8qCisgICAqIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IG1pYjJjIGFuZCBpcyBpbnRlbmRlZCBmb3IgdXNlIGFzIGEgbWliIG1vZHVsZQorICAgKiBmb3IgdGhlIHVjZC1zbm1wIHNubXBkIGFnZW50LiBFZGl0ZWQgYnkgTWljaGFlbCBCYWVyCisgICAqIAorICAgKiBsYXN0IGNoYW5nZWQgMi8yLzk5LgorICAgKi8KKyAKKyAgI2lmbmRlZiBfTUlCR1JPVVBfU05NUFRBUkdFVFBBUkFNU0VOVFJZX0gKKyAgI2RlZmluZSBfTUlCR1JPVVBfU05NUFRBUkdFVFBBUkFNU0VOVFJZX0gKKyAKKyAgICAgIC8qCisgICAgICAgKiBNYWdpYyBudW1iZXIgZGVmaW5pdGlvbnM6IAorICAgICAgICovCisgICNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TTVBNT0RFTCAgICAgICAgMQorICAjZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU1NFQ1VSSVRZTU9ERUwgIDIKKyAgI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNTRUNVUklUWU5BTUUgICAzCisgICNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TU0VDVVJJVFlMRVZFTCAgNAorICAjZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU1NUT1JBR0VUWVBFICAgIDUKKyAgI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNST1dTVEFUVVMgICAgICA2CisgICNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TTVBNT0RFTENPTFVNTiAgICAgICAgMgorICAjZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU1NFQ1VSSVRZTU9ERUxDT0xVTU4gIDMKKyAgI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNTRUNVUklUWU5BTUVDT0xVTU4gICA0CisgICNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TU0VDVVJJVFlMRVZFTENPTFVNTiAgNQorICAjZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU1NUT1JBR0VUWVBFQ09MVU1OICAgIDYKKyAgI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNST1dTVEFUVVNDT0xVTU4gICAgICA3CisgICAgICAvKgorICAgICAgICogc3RydWN0dXJlIGRlZmluaXRpb25zIAorICAgICAgICovCisgICAgICAgc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0IHsKKyAgICAgICAgICAgY2hhciAgICAgICAgICAgKnBhcmFtTmFtZTsKKyAgICAgICAgICAgaW50ICAgICAgICAgICAgIG1wTW9kZWw7CisgICAgICAgICAgIGludCAgICAgICAgICAgICBzZWNNb2RlbDsKKyAgICAgICAgICAgY2hhciAgICAgICAgICAgKnNlY05hbWU7CisgICAgICAgICAgIGludCAgICAgICAgICAgICBzZWNMZXZlbDsKKyAgICAgICAgICAgaW50ICAgICAgICAgICAgIHN0b3JhZ2VUeXBlOworICAgICAgICAgICBpbnQgICAgICAgICAgICAgcm93U3RhdHVzOworICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKm5leHQ7CisgICAgICAgICAgIHRpbWVfdCAgICAgICAgICB1cGRhdGVUaW1lOworICAgICAgIH07CisgCisgIC8qCisgICAqIHV0aWxpdHkgZnVuY3Rpb25zIAorICAgKi8KKyAgICAgICBzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKmdldF9wYXJhbUVudHJ5KGNoYXIgKm5hbWUpOworICAgICAgIHZvaWQgICAgICAgICAgICBzbm1wVGFyZ2V0UGFyYW1UYWJsZV9hZGQoc3RydWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5ld0VudHJ5KTsKKyAgICAgICBzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKnNubXBUYXJnZXRQYXJhbVRhYmxlX2NyZWF0ZSh2b2lkKTsKKyAgICAgICB2b2lkIHNubXBUYXJnZXRQYXJhbVRhYmxlX2Rpc3Bvc2Uoc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0ICopOworIAorICAvKgorICAgKiBmdW5jdGlvbiBkZWZpbml0aW9ucyAKKyAgICovCisgCisgICAgICAgdm9pZCAgICAgICAgICAgIGluaXRfc25tcFRhcmdldFBhcmFtc0VudHJ5KHZvaWQpOworICAgICAgIHZvaWQgICAgICAgICAgICBzaHV0ZG93bl9zbm1wVGFyZ2V0UGFyYW1zRW50cnkodm9pZCk7CisgICAgICAgaW50ICAgICAgICAgICAgIHN0b3JlX3NubXBUYXJnZXRQYXJhbXNFbnRyeShpbnQgbWFqb3JJRCwgaW50IG1pbm9ySUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzZXJ2ZXJhcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnRhcmcpOworICAgICAgIGV4dGVybiBGaW5kVmFyTWV0aG9kIHZhcl9zbm1wVGFyZ2V0UGFyYW1zRW50cnk7CisgCisgICAgICAgdm9pZCAgICAgICAgICAgIHNubXBkX3BhcnNlX2NvbmZpZ190YXJnZXRQYXJhbXMoY29uc3QgY2hhciAqLCBjaGFyICopOworIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX3NubXBUYXJnZXRQYXJhbXNNUE1vZGVsOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfc25tcFRhcmdldFBhcmFtc1NlY01vZGVsOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfc25tcFRhcmdldFBhcmFtc1NlY05hbWU7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9zbm1wVGFyZ2V0UGFyYW1zU2VjTGV2ZWw7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9zbm1wVGFyZ2V0UGFyYW1zU3RvcmFnZVR5cGU7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9zbm1wVGFyZ2V0UGFyYW1zUm93U3RhdHVzOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9NSUJHUk9VUF9TTk1QVEFSR0VUUEFSQU1TRU5UUllfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jCmluZGV4IDU4NzgzYWQuLjU2MTllMzUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXQuYworKysgYi9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0LmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2lmIEhBVkVfU1RSSU5HX0gKICNpbmNsdWRlIDxzdHJpbmcuaD4KQEAgLTI1LDYgKzI2LDEwIEBACiAjaW5jbHVkZSAic25tcFRhcmdldFBhcmFtc0VudHJ5LmgiCiAjaW5jbHVkZSAidGFyZ2V0LmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRkb21haW5fc3VwcG9ydCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRkb21haW5fdHJhbnNwb3J0X29pZCkKK25ldHNubXBfZmVhdHVyZV93YW50KG5ldHNubXBfdGxzdG1BZGRyX2dldF9zZXJ2ZXJJZCkKKwogI2RlZmluZSBNQVhfVEFHUyAxMjgKIAogbmV0c25tcF9zZXNzaW9uICoKQEAgLTY2LDcgKzcxLDcgQEAKICAgICAgICAgICAgICh0YXJnYWRkcnMtPnREb21haW4sIHRhcmdhZGRycy0+dERvbWFpbkxlbiwgTlVMTCwgTlVMTCkgPT0gMCkgewogICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKICAgICAgICAgICAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBkb21haW4gZm9yIHRhcmdldCBhZGRyZXNzIHRhYmxlIGVudHJ5ICVzXG4iLAotICAgICAgICAgICAgICAgICAgICAgdGFyZ2FkZHJzLT5uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgIHRhcmdhZGRycy0+bmFtZURhdGEpOwogICAgICAgICB9CiAKICAgICAgICAgLyoKQEAgLTE5MSw3ICsxOTYsOCBAQAogI2lmIGRlZmluZWQoTkVUU05NUF9UUkFOU1BPUlRfRFRMU1VEUF9ET01BSU4pIHx8IGRlZmluZWQoTkVUU05NUF9UUkFOU1BPUlRfVExTVENQX0RPTUFJTikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRscykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NlcnQgKmNlcnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgICAqc2VydmVyX2lkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgKnNlcnZlcl9pZCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIJICAgICAgYnVmWzMzXTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgidGFyZ2V0X3Nlc3Npb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgbG9va2luZyB1cCBvdXIgaWQ6ICVzXG4iLApAQCAtMjA1LDI1ICsyMTEsMjkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ0YXJnZXRfc2Vzc2lvbnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICBmb3VuZCBmaW5nZXJwcmludDogJXNcbiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydC0+ZmluZ2VycHJpbnQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQtPmZfY29uZmlnKHQsICJvdXJfaWRlbnRpdHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC0+Zl9jb25maWcodCwgImxvY2FsQ2VydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0LT5maW5nZXJwcmludCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KGJ1ZiwgdGFyZ2FkZHJzLT5uYW1lRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdhZGRycy0+bmFtZUxlbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zlt0YXJnYWRkcnMtPm5hbWVMZW5dID0gJ1wwJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInRhcmdldF9zZXNzaW9ucyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIGxvb2tpbmcgdXAgdGhlaXIgaWQ6ICVzXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnYWRkcnMtPm5hbWUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnQgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jZXJ0X2ZpbmQoTlNfQ0VSVF9SRU1PVEVfUEVFUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TX0NFUlRLRVlfVEFSR0VUX0FERFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnYWRkcnMtPm5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlcnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ0YXJnZXRfc2Vzc2lvbnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICBmb3VuZCBmaW5nZXJwcmludDogJXNcbiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydC0+ZmluZ2VycHJpbnQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQtPmZfY29uZmlnKHQsICJ0aGVpcl9pZGVudGl0eSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LT5mX2NvbmZpZyh0LCAicGVlckNlcnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydC0+ZmluZ2VycHJpbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9pZCA9IG5ldHNubXBfdGxzdG1BZGRyX2dldF9zZXJ2ZXJJZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdhZGRycy0+bmFtZSk7CisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVExTVE1BRERSX0dFVF9TRVJWRVJJRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQgPSBuZXRzbm1wX3Rsc3RtQWRkcl9nZXRfc2VydmVySWQoYnVmKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RMU1RNQUREUl9HRVRfU0VSVkVSSUQgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlcnZlcl9pZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInRhcmdldF9zZXNzaW9ucyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIGZvdW5kIHNlcnZlcklkOiAlc1xuIiwgCkBAIC0yNDYsNyArMjU2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuc3VwcG9ydGVkIG1wTW9kZWwvc2VjTW9kZWwgY29tYm8gJWQvJWQgZm9yIHRhcmdldCAlc1xuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0tPm1wTW9kZWwsIHBhcmFtLT5zZWNNb2RlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2FkZHJzLT5uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2FkZHJzLT5uYW1lRGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFhYWDogbWVtbGVhayAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmMgYi9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmMKaW5kZXggOGEyZjBkMS4uMDEwOTk3NCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5jCisrKyBiL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuYwpAQCAtNDQsNiArNDQsNyBAQAogCiB9CiAKKwogaW50CiBnZXRfdW5rbm93bl9jb250ZXh0X2NvdW50KG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmggYi9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmgKaW5kZXggYzQ4NWM0Yy4uMzU1ZjM5MSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5oCisrKyBiL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuaApAQCAtNSw1ICs1LDYgQEAKIGNvbmZpZ19leGNsdWRlKHRhcmdldC90YXJnZXRfY291bnRlcnMpCiAKIHZvaWQgICAgICAgICAgICBpbml0X3RhcmdldF9jb3VudGVycyh2b2lkKTsKKwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgZ2V0X3VuYXZhaWxhYmxlX2NvbnRleHRfY291bnQ7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBnZXRfdW5rbm93bl9jb250ZXh0X2NvdW50OwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuYyBiL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmMKaW5kZXggN2JlN2RlMy4uYTMyMjA3YiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuYworKysgYi9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5jCkBAIC0xLDUgKzEsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKwogI2lmIEhBVkVfU1RSSU5HX0gKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNlbHNlCkBAIC0xMyw2ICsxNSw4IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaGVscGVyX3N0YXRpc3RpY3MpCisKIHZvaWQKIGluaXRfdGFyZ2V0X2NvdW50ZXJzXzVfNSh2b2lkKQogewpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uLmggYi9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm4uaAppbmRleCAwZjM5YTdmLi4wYzEzYTBmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm4uaAorKysgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm4uaApAQCAtMjMsNyArMjMsNyBAQAogY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUpCiAjZWxpZiBkZWZpbmVkKCBzb2xhcmlzMiApCiBjb25maWdfcmVxdWlyZSh0Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fc29sYXJpczIpCi0jZWxpZiBkZWZpbmVkKGZyZWVic2Q0KSB8fCBkZWZpbmVkKGRyYWdvbmZseSkKKyNlbGlmIGRlZmluZWQoZnJlZWJzZDQpIHx8IGRlZmluZWQoZHJhZ29uZmx5KSB8fCBkZWZpbmVkKGRhcndpbikKIGNvbmZpZ19yZXF1aXJlKHRjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9mcmVlYnNkNCkKICNlbGlmIGRlZmluZWQob3BlbmJzZDQpCiBjb25maWdfcmVxdWlyZSh0Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fb3BlbmJzZCkKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9jb21tb24uYyBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9jb21tb24uYwppbmRleCBlOWYyYjhmLi5iYmEwMWZlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fY29tbW9uLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2NvbW1vbi5jCkBAIC0xNjQsNiArMTY0LDEzIEBACiAgICAgZnJlZShlbnRyeSk7CiB9CiAKKyNpZmRlZiBUQ1BDT05OX0RFTEVURV9TVVBQT1JURUQKKworLyogWFhYIFRPRE86IHRoZXNlIGFyZSBjdXJyZW50bHkgdW5zdXBwb3J0ZWQgZXZlcnl3aGVyZTsgdG8gZW5hYmxlIHRoZQorICAgZnVuY3Rpb25zIGZpcnN0IGltcGxlbWVudCBuZXRzbm1wX2FyY2hfdGNwY29ubl9lbnRyeV9kZWxldGUgaW4gdGhlCisgICB0Y3BDb25uX3tPU30uYyBmaWxlIGFuZCB0aGVuIGRlZmluZSBUQ1BDT05OX0RFTEVURV9TVVBQT1JURUQgaW4gdGhlCisgICB0Y3BDb25uX3tPU30uaCBmaWxlICh3aGljaCBtYXkgbmVlZCB0byBiZSBjcmVhdGVkIGZpcnN0KS4gKi8KKwogLyoqCiAgKiB1cGRhdGUgdW5kZXJseWluZyBkYXRhIHN0b3JlIChrZXJuZWwpIGZvciBlbnRyeQogICoKQEAgLTE5Myw2ICsyMDAsNyBAQAogICAgIAogICAgIHJldHVybiByYzsKIH0KKyNlbmRpZiAvKiBUQ1BDT05OX0RFTEVURV9TVVBQT1JURUQgKi8KIAogLyoqCiAgKiB1cGRhdGUgYW4gb2xkIHRjcGNvbm5fZW50cnkgZnJvbSBhIG5ldyBvbmUKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2xpbnV4LmMKaW5kZXggMmJmNTg4YS4uNWY5M2JlMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2xpbnV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2xpbnV4LmMKQEAgLTU2LDYgKzU2LDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAorI2lmZGVmIFRDUENPTk5fREVMRVRFX1NVUFBPUlRFRAogLyoKICAqIGRlbGV0ZSBhbiBlbnRyeQogICovCkBAIC02Nyw3ICs2OCw3IEBACiAgICAgLyoqIHh4eC1ya3M6OSB0Y3BDb25uIGRlbGV0ZSBub3QgaW1wbGVtZW50ZWQgKi8KICAgICByZXR1cm4gLTE7CiB9Ci0KKyNlbmRpZiAvKiBUQ1BDT05OX0RFTEVURV9TVVBQT1JURUQgKi8KIAogLyoqCiAgKgpAQCAtODMsNiArODQsOSBAQAogICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6dGNwY29ubjpjb250YWluZXIiLAogICAgICAgICAgICAgICAgICJ0Y3Bjb25uX2NvbnRhaW5lcl9hcmNoX2xvYWQgKGZsYWdzICV4KVxuIiwgbG9hZF9mbGFncykpOwogCisgICAgLyogU2V0dXAgdGhlIHBpZF9mcm9tX2lub2RlIHRhYmxlLCBhbmQgZmlsbCBpdC4qLworICAgIG5ldHNubXBfZ2V0X3BpZF9mcm9tX2lub2RlX2luaXQoKTsKKwogICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgewogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibm8gY29udGFpbmVyIHNwZWNpZmllZC9mb3VuZCBmb3IgYWNjZXNzX3RjcGNvbm5cbiIpOwogICAgICAgICByZXR1cm4gLTE7CkBAIC0xODQsNyArMTg4LDcgQEAKICAgICAgICAgZW50cnktPnJtdF9wb3J0ID0gKHVuc2lnbmVkIHNob3J0KSByZW1vdGVfcG9ydDsKICAgICAgICAgZW50cnktPnRjcENvbm5TdGF0ZSA9IHN0YXRlOwogICAgICAgICBlbnRyeS0+cGlkID0gbmV0c25tcF9nZXRfcGlkX2Zyb21faW5vZGUoaW5vZGUpOwotICAgICAgICAKKwogICAgICAgICAvKiogdGhlIGFkZHIgc3RyaW5nIG1heSBuZWVkIHdvcmsgKi8KICAgICAgICAgYnVmX2xlbiA9IHN0cmxlbihsb2NhbF9hZGRyKTsKICAgICAgICAgaWYgKCg4ICE9IGJ1Zl9sZW4pIHx8CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fc29sYXJpczIuYyBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9zb2xhcmlzMi5jCmluZGV4IDk1OWQ3MDguLjg4OTI5OWEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9zb2xhcmlzMi5jCisrKyBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9zb2xhcmlzMi5jCkBAIC0zOSw2ICszOSw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZmRlZiBUQ1BDT05OX0RFTEVURV9TVVBQT1JURUQKIGludCAKIG5ldHNubXBfYXJjaF90Y3Bjb25uX2VudHJ5X2RlbGV0ZShuZXRzbm1wX3RjcGNvbm5fZW50cnkgKmVwKQogewpAQCAtNDcsNiArNDgsNyBAQAogICAgICAqLwogICAgIHJldHVybiAoLTEpOwogfQorI2VuZGlmIC8qIFRDUENPTk5fREVMRVRFX1NVUFBPUlRFRCAqLwogCiBpbnQgCiBuZXRzbm1wX2FyY2hfdGNwY29ubl9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lciwgCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfaW50ZXJmYWNlLmMKaW5kZXggZDFjMmZiMy4uZDBiMjdlNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2ludGVyZmFjZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmZhY2UuYwpAQCAtMzAsNiArMzAsNyBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtNDYsNiArNDcsMTggQEAKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0Y3BDb25uZWN0aW9uVGFibGVfZXh0ZXJuYWxfYWNjZXNzLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX2FsbF9yZXF1ZXN0c19lcnJvcikKKworCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGNwQ29ubmVjdGlvblRhYmxlX2NvbnRhaW5lcl9zaXplLCB0Y3BDb25uZWN0aW9uVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRjcENvbm5lY3Rpb25UYWJsZV9yZWdpc3RyYXRpb25fc2V0LCB0Y3BDb25uZWN0aW9uVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRjcENvbm5lY3Rpb25UYWJsZV9yZWdpc3RyYXRpb25fZ2V0LCB0Y3BDb25uZWN0aW9uVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRjcENvbm5lY3Rpb25UYWJsZV9jb250YWluZXJfZ2V0LCB0Y3BDb25uZWN0aW9uVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioKQEAgLTgyLDE5ICs5NSwyMyBAQAogICAgICAgICAgICAgICAgIF90Y3BDb25uZWN0aW9uVGFibGVfY29udGFpbmVyX3NodXRkb3duKHRjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmZhY2VfY3R4ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9jdHgpOwogCi0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BDT05ORUNUSU9OVEFCTEVfQ09OVEFJTkVSX0dFVAogbmV0c25tcF9jb250YWluZXIgKgogdGNwQ29ubmVjdGlvblRhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gdGNwQ29ubmVjdGlvblRhYmxlX2lmX2N0eC5jb250YWluZXI7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BDT05ORUNUSU9OVEFCTEVfQ09OVEFJTkVSX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQQ09OTkVDVElPTlRBQkxFX1JFR0lTVFJBVElPTl9HRVQKIHRjcENvbm5lY3Rpb25UYWJsZV9yZWdpc3RyYXRpb24gKgogdGNwQ29ubmVjdGlvblRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gdGNwQ29ubmVjdGlvblRhYmxlX2lmX2N0eC51c2VyX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUENPTk5FQ1RJT05UQUJMRV9SRUdJU1RSQVRJT05fR0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BDT05ORUNUSU9OVEFCTEVfUkVHSVNUUkFUSU9OX1NFVAogdGNwQ29ubmVjdGlvblRhYmxlX3JlZ2lzdHJhdGlvbiAqCiB0Y3BDb25uZWN0aW9uVGFibGVfcmVnaXN0cmF0aW9uX3NldCh0Y3BDb25uZWN0aW9uVGFibGVfcmVnaXN0cmF0aW9uICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3JlZykKQEAgLTEwNCwxMiArMTIxLDE1IEBACiAgICAgdGNwQ29ubmVjdGlvblRhYmxlX2lmX2N0eC51c2VyX2N0eCA9IG5ld3JlZzsKICAgICByZXR1cm4gb2xkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQQ09OTkVDVElPTlRBQkxFX1JFR0lTVFJBVElPTl9TRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUENPTk5FQ1RJT05UQUJMRV9DT05UQUlORVJfU0laRQogaW50CiB0Y3BDb25uZWN0aW9uVGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKIHsKICAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUodGNwQ29ubmVjdGlvblRhYmxlX2lmX2N0eC5jb250YWluZXIpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQQ09OTkVDVElPTlRBQkxFX0NPTlRBSU5FUl9TSVpFICovCiAKIHVfaW50CiB0Y3BDb25uZWN0aW9uVGFibGVfZGlydHlfZ2V0KHZvaWQpCkBAIC0xMzMsNyArMTUzLDcgQEAKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX3RjcENvbm5lY3Rpb25UYWJsZV9wb3N0X3JlcXVlc3Q7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF90Y3BDb25uZWN0aW9uVGFibGVfb2JqZWN0X2xvb2t1cDsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX3RjcENvbm5lY3Rpb25UYWJsZV9nZXRfdmFsdWVzOwotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF90Y3BDb25uZWN0aW9uVGFibGVfY2hlY2tfb2JqZWN0czsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX3RjcENvbm5lY3Rpb25UYWJsZV91bmRvX3NldHVwOwogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfdGNwQ29ubmVjdGlvblRhYmxlX3NldF92YWx1ZXM7CkBAIC0xNDgsNyArMTY4LDcgQEAKICAgICAgICAgICAgICAgICBfdGNwQ29ubmVjdGlvblRhYmxlX3VuZG9fY29sdW1uKHRjcENvbm5lY3Rpb25UYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIsIGludCBjb2x1bW4pOwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAvKioKICAqIEBpbnRlcm5hbApAQCAtMjMyLDggKzI1Miw3IEBACiAgICAgYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QgPQogICAgICAgICBfbWZkX3RjcENvbm5lY3Rpb25UYWJsZV9wb3N0X3JlcXVlc3Q7CiAKLQotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgLyoKICAgICAgKiBSRVFVSVJFRCB3cmFwcGVycyBmb3Igc2V0IHJlcXVlc3QgaGFuZGxpbmcKICAgICAgKi8KQEAgLTI1OCw3ICsyNzcsNyBAQAogICAgICAqLwogICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+Y29uc2lzdGVuY3lfY2hlY2tzID0KICAgICAgICAgX21mZF90Y3BDb25uZWN0aW9uVGFibGVfY2hlY2tfZGVwZW5kZW5jaWVzOwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICAgKgpAQCAtMjczLDcgKzI5Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjcENvbm5lY3Rpb25UYWJsZV9vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjcENvbm5lY3Rpb25UYWJsZV9vaWRfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fQkFCWV9TVEVQCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSEFORExFUl9DQU5fUldSSVRFCiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CkBAIC0yOTQsNyArMzEzLDcgQEAKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOwogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCkKQEAgLTMxNyw3ICszMzYsNyBAQAogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NPTU1JVDsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOwpAQCAtOTkwLDcgKzEwMDksNyBAQAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX3RjcENvbm5lY3Rpb25UYWJsZV9nZXRfdmFsdWVzICovCiAKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBTRVQgcHJvY2Vzc2luZwpAQCAtMTYxOCw3ICsxNjM3LDcgQEAKIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX3RjcENvbm5lY3Rpb25UYWJsZV9pcnJldmVyc2libGVfY29tbWl0ICovCi0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTE3NzUsNiArMTc5NCw3IEBACiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF90Y3BDb25uZWN0aW9uVGFibGVfY29udGFpbmVyX3NodXRkb3duICovCiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUENPTk5FQ1RJT05UQUJMRV9FWFRFUk5BTF9BQ0NFU1MKIHRjcENvbm5lY3Rpb25UYWJsZV9yb3dyZXFfY3R4ICoKIHRjcENvbm5lY3Rpb25UYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgodGNwQ29ubmVjdGlvblRhYmxlX21pYl9pbmRleCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pYl9pZHgpCkBAIC0xODAyLDMgKzE4MjIsNCBAQAogCiAgICAgcmV0dXJuIHJvd3JlcV9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BDT05ORUNUSU9OVEFCTEVfRVhURVJOQUxfQUNDRVNTICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2ludGVyZmFjZS5jCmluZGV4IGE1Yzk1MTAuLjJlNDEzODAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2ludGVyZmFjZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2ludGVyZmFjZS5jCkBAIC0zMCw2ICszMCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC00Niw2ICs0NywxOCBAQAogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRjcExpc3RlbmVyVGFibGVfZXh0ZXJuYWxfYWNjZXNzLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX2FsbF9yZXF1ZXN0c19lcnJvcikKKworCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGNwTGlzdGVuZXJUYWJsZV9jb250YWluZXJfc2l6ZSwgdGNwTGlzdGVuZXJUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGNwTGlzdGVuZXJUYWJsZV9yZWdpc3RyYXRpb25fc2V0LCB0Y3BMaXN0ZW5lclRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0Y3BMaXN0ZW5lclRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQsIHRjcExpc3RlbmVyVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRjcExpc3RlbmVyVGFibGVfY29udGFpbmVyX2dldCwgdGNwTGlzdGVuZXJUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpAQCAtNzksMTkgKzkyLDIzIEBACiAgICAgICAgICAgICAgICAgX3RjcExpc3RlbmVyVGFibGVfY29udGFpbmVyX3NodXRkb3duKHRjcExpc3RlbmVyVGFibGVfaW50ZXJmYWNlX2N0eCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmX2N0eCk7CiAKLQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUExJU1RFTkVSVEFCTEVfQ09OVEFJTkVSX0dFVAogbmV0c25tcF9jb250YWluZXIgKgogdGNwTGlzdGVuZXJUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIHRjcExpc3RlbmVyVGFibGVfaWZfY3R4LmNvbnRhaW5lcjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUExJU1RFTkVSVEFCTEVfQ09OVEFJTkVSX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQTElTVEVORVJUQUJMRV9SRUdJU1RSQVRJT05fR0VUCiB0Y3BMaXN0ZW5lclRhYmxlX3JlZ2lzdHJhdGlvbiAqCiB0Y3BMaXN0ZW5lclRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gdGNwTGlzdGVuZXJUYWJsZV9pZl9jdHgudXNlcl9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BMSVNURU5FUlRBQkxFX1JFR0lTVFJBVElPTl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUExJU1RFTkVSVEFCTEVfUkVHSVNUUkFUSU9OX1NFVAogdGNwTGlzdGVuZXJUYWJsZV9yZWdpc3RyYXRpb24gKgogdGNwTGlzdGVuZXJUYWJsZV9yZWdpc3RyYXRpb25fc2V0KHRjcExpc3RlbmVyVGFibGVfcmVnaXN0cmF0aW9uICogbmV3cmVnKQogewpAQCAtOTksMTIgKzExNiwxNSBAQAogICAgIHRjcExpc3RlbmVyVGFibGVfaWZfY3R4LnVzZXJfY3R4ID0gbmV3cmVnOwogICAgIHJldHVybiBvbGQ7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BMSVNURU5FUlRBQkxFX1JFR0lTVFJBVElPTl9TRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUExJU1RFTkVSVEFCTEVfQ09OVEFJTkVSX1NJWkUKIGludAogdGNwTGlzdGVuZXJUYWJsZV9jb250YWluZXJfc2l6ZSh2b2lkKQogewogICAgIHJldHVybiBDT05UQUlORVJfU0laRSh0Y3BMaXN0ZW5lclRhYmxlX2lmX2N0eC5jb250YWluZXIpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQTElTVEVORVJUQUJMRV9DT05UQUlORVJfU0laRSAqLwogCiAvKgogICogbWZkIG11bHRpcGxleGVyIG1vZGVzCkBAIC0yMjAsNyArMjQwLDggQEAKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOwogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKKyAgICAvKiBYWFggLSBhcmUgdGhlc2UgYWN0dWFsbHkgbmVjZXNzYXJ5PyAqLwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnNldF92YWx1ZXMpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfU0VUX1ZBTFVFUzsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5pcnJldmVyc2libGVfY29tbWl0KQpAQCAtMjQzLDcgKzI2NCw3IEBACiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ09NTUlUOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fY29tbWl0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fQ09NTUlUOwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAgICAgaGFuZGxlciA9IG5ldHNubXBfYmFieV9zdGVwc19oYW5kbGVyX2dldChtZmRfbW9kZXMpOwogICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CkBAIC05NTcsNiArOTc4LDcgQEAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX3RjcExpc3RlbmVyVGFibGVfY29udGFpbmVyX3NodXRkb3duICovCiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUExJU1RFTkVSVEFCTEVfRVhURVJOQUxfQUNDRVNTCiB0Y3BMaXN0ZW5lclRhYmxlX3Jvd3JlcV9jdHggKgogdGNwTGlzdGVuZXJUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgodGNwTGlzdGVuZXJUYWJsZV9taWJfaW5kZXggKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWliX2lkeCkKQEAgLTk4NCwzICsxMDA2LDQgQEAKIAogICAgIHJldHVybiByb3dyZXFfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQTElTVEVORVJUQUJMRV9FWFRFUk5BTF9BQ0NFU1MgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmMgYi9hZ2VudC9taWJncm91cC90ZXN0aGFuZGxlci5jCmluZGV4IGMwODY2ZGQuLmY3NDY4ZjAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGVzdGhhbmRsZXIuYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaWZkZWYgSEFWRV9TVERMSUJfSAogI2luY2x1ZGUgPHN0ZGxpYi5oPgpAQCAtOSw2ICsxMCwxMSBAQAogI2luY2x1ZGUgPHN0cmluZ3MuaD4KICNlbmRpZgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh1bG9uZ19pbnN0YW5jZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJlZ2lzdGVyX3JlYWRfb25seV90YWJsZV9kYXRhKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfYnVpbGRfcmVzdWx0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfZGF0YXNldCkKKwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtMzI5LDYgKzMzNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopICYgYWNjZXNzZXMsIHNpemVvZihhY2Nlc3NlcykpOwogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgICAgICBpZiAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dHlwZSAhPSBBU05fVU5TSUdORUQpCiAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLApAQCAtMzcxLDYgKzM3OCw3IEBACiAgICAgICAgICAqIG5vdGhpbmcgdG8gZG8gCiAgICAgICAgICAqLwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1BZGRyVGFibGUvc25tcFRsc3RtQWRkclRhYmxlLmMgYi9hZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQWRkclRhYmxlL3NubXBUbHN0bUFkZHJUYWJsZS5jCmluZGV4IGVkYTY0ZjMuLjU0OTNmZjkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1BZGRyVGFibGUvc25tcFRsc3RtQWRkclRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUFkZHJUYWJsZS9zbm1wVGxzdG1BZGRyVGFibGUuYwpAQCAtNCw2ICs0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8b3BlbnNzbC9zc2wuaD4KQEAgLTEyLDYgKzEzLDE3IEBACiAjaW5jbHVkZSAidGxzdG0tbWliLmgiCiAjaW5jbHVkZSAic25tcFRsc3RtQWRkclRhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGxzdG1hZGRyX2NvbnRhaW5lcikKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhX2RlbGV0ZV90YWJsZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhX2V4dHJhY3RfdGFibGUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YV9yZW1vdmVfcm93KQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3N0b3JhZ2V0eXBlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YV9pbnNlcnRfcm93KQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAvKiogWFhYIC0gbW92ZSB0aGVzZSB0byB0YWJsZV9kYXRhIGhlYWRlcj8gKi8KICNkZWZpbmUgRkFURV9ORVdMWV9DUkVBVEVEICAgIDEKICNkZWZpbmUgRkFURV9OT19DSEFOR0UgICAgICAgIDAKQEAgLTE5OCw3ICsyMTAsNyBAQAogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAogICAgICAgICAgICAgICAgICAiY291bGQgbm90IGNyZWF0ZSBoYW5kbGVyIGZvciBzbm1wVGxzdG1BZGRyVGFibGVMYXN0Q2hhbmdlZFxuIik7CiAgICAgZWxzZQotICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKHJlZywgd2F0Y2hlcik7CisgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIyKHJlZywgd2F0Y2hlcik7CiAKICAgICAvKgogICAgICAqIEluaXRpYWxpc2UgdGhlIGNvbnRlbnRzIG9mIHRoZSB0YWJsZSBoZXJlIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlLmMgYi9hZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUuYwppbmRleCAzZjc5MTk3Li44NGQxYWZiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUuYwpAQCAtNCw2ICs0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8b3BlbnNzbC9zc2wuaD4KQEAgLTEyLDYgKzEzLDE5IEBACiAjaW5jbHVkZSAidGxzdG0tbWliLmgiCiAjaW5jbHVkZSAic25tcFRsc3RtQ2VydFRvVFNOVGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGEpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjZXJ0X2ZpbmdlcnByaW50cykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhX2RlbGV0ZV90YWJsZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhX2V4dHJhY3RfdGFibGUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YV9yZW1vdmVfcm93KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGxzX2ZpbmdlcnByaW50X2J1aWxkKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3N0b3JhZ2V0eXBlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl9yb3dzdGF0dXNfd2l0aF9zdG9yYWdldHlwZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhX2luc2VydF9yb3cpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKIC8qKiBYWFggLSBtb3ZlIHRoZXNlIHRvIHRhYmxlX2RhdGEgaGVhZGVyPyAqLwogI2RlZmluZSBGQVRFX05FV0xZX0NSRUFURUQgICAgMQogI2RlZmluZSBGQVRFX05PX0NIQU5HRSAgICAgICAgMApAQCAtMjA1LDcgKzIxOSw3IEBACiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChOVUxMICE9IGNvbnRleHROYW1lKQogICAgICAgICAgICAgcmVnLT5jb250ZXh0TmFtZSA9IHN0cmR1cChjb250ZXh0TmFtZSk7Ci0gICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIocmVnLCB3YXRjaGVyKTsKKyAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcjIocmVnLCB3YXRjaGVyKTsKICAgICB9CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bVBhcmFtc1RhYmxlL3NubXBUbHN0bVBhcmFtc1RhYmxlLmMgYi9hZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtUGFyYW1zVGFibGUvc25tcFRsc3RtUGFyYW1zVGFibGUuYwppbmRleCBhODM1NTMzLi5jZDU0NDUyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtUGFyYW1zVGFibGUvc25tcFRsc3RtUGFyYW1zVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtUGFyYW1zVGFibGUvc25tcFRsc3RtUGFyYW1zVGFibGUuYwpAQCAtNCw2ICs0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTE0LDYgKzE1LDIwIEBACiAKICNpbmNsdWRlICJzbm1wVGxzdG1QYXJhbXNUYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRsc3RtcGFyYW1zX2ZpbmQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0bHN0bXBhcmFtc19leHRlcm5hbCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNlcnRfZmluZ2VycHJpbnRzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGFfZGVsZXRlX3RhYmxlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGFfZXh0cmFjdF90YWJsZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhX3JlbW92ZV9yb3cpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfc3RvcmFnZXR5cGUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90eXBlX2FuZF9tYXhfc2l6ZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3Jvd3N0YXR1c193aXRoX3N0b3JhZ2V0eXBlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGFfaW5zZXJ0X3JvdykKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogLyoqIFhYWCAtIG1vdmUgdGhlc2UgdG8gdGFibGVfZGF0YSBoZWFkZXI/ICovCiAjZGVmaW5lIEZBVEVfTkVXTFlfQ1JFQVRFRCAgICAxCiAjZGVmaW5lIEZBVEVfTk9fQ0hBTkdFICAgICAgICAwCkBAIC0xNjcsNyArMTgyLDcgQEAKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBjcmVhdGUgaGFuZGxlciBmb3Igc25tcFRsc3RtUGFyYW1zVGFibGVMYXN0Q2hhbmdlZFxuIik7CiAgICAgZWxzZQotICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKHJlZywgd2F0Y2hlcik7CisgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIyKHJlZywgd2F0Y2hlcik7CiAKICAgICAvKgogICAgICAqIEluaXRpYWxpc2UgdGhlIGNvbnRlbnRzIG9mIHRoZSB0YWJsZSBoZXJlCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90c20tbWliL3NubXBUc21TdGF0cy9zbm1wVHNtU3RhdHMuYyBiL2FnZW50L21pYmdyb3VwL3RzbS1taWIvc25tcFRzbVN0YXRzL3NubXBUc21TdGF0cy5jCmluZGV4IDZlMWI3OTYuLmE1NjdkMmUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RzbS1taWIvc25tcFRzbVN0YXRzL3NubXBUc21TdGF0cy5jCisrKyBiL2FnZW50L21pYmdyb3VwL3RzbS1taWIvc25tcFRzbVN0YXRzL3NubXBUc21TdGF0cy5jCkBAIC0zLDYgKzMsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg+CkBAIC0xMCw2ICsxMSwxMCBAQAogCiBzdGF0aWMgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiogX215cmVnID0gTlVMTDsKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaGVscGVyX3N0YXRpc3RpY3MpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzaHV0ZG93bl9zbm1wdHNtc2Vzc2lvbiwgbmV0c25tcF91bnVzZWQpCisKIC8qKiBJbml0aWFsaXplcyB0aGUgc25tcFRzbVN0YXRzIG1vZHVsZSAqLwogdm9pZAogaW5pdF9zbm1wVHNtU3RhdHModm9pZCkKQEAgLTM2LDYgKzQxLDcgQEAKICAgICB9CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TSFVURE9XTl9TTk1QVFNNU0VTU0lPTgogdm9pZAogc2h1dGRvd25fc25tcFRzbVNlc3Npb24odm9pZCkKIHsKQEAgLTQ0LDMgKzUwLDQgQEAKICAgICAgICAgX215cmVnID0gTlVMTDsKICAgICB9CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TSFVURE9XTl9TTk1QVFNNU0VTU0lPTiAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jCmluZGV4IDMyNGZiYzQuLjExNDdlZWYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmMKQEAgLTU2OCw3ICs1NjgsNiBAQAogICBGSUxFICAgICAgICAgICAqbW50ZnA7CiAjZWxpZiBIQVZFX0ZTVEFCX0gKICAgc3RydWN0IGZzdGFiICAgKmZzdGFiOwotICBzdHJ1Y3Qgc3RhdCAgICAgc3RhdDE7CiAjZWxpZiBIQVZFX1NUQVRGUwogICBzdHJ1Y3Qgc3RhdGZzICAgc3RhdGY7CiAjZW5kaWYKQEAgLTYyMiw3ICs2MjEsNiBAQAogICAgIHN0cmxjcHkoZGV2aWNlLCBtbnR0YWIubW50X3NwZWNpYWwsIHNpemVvZihkZXZpY2UpKTsKICNlbmRpZiAvKiBIQVZFX1NFVE1OVEVOVCAqLwogI2VsaWYgSEFWRV9GU1RBQl9ICi0gIHN0YXQocGF0aCwgJnN0YXQxKTsKICAgc2V0ZnNlbnQoKTsKICAgaWYgKChmc3RhYiA9IGdldGZzZmlsZShwYXRoKSkpCiAgICAgc3RybGNweShkZXZpY2UsIGZzdGFiLT5mc19zcGVjLCBzaXplb2YoZGV2aWNlKSk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrX2h3LmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrX2h3LmMKaW5kZXggOTNlY2RlMy4uZWEzNzYxMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza19ody5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tfaHcuYwpAQCAtMzA1LDggKzMwNSwxMSBAQAogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWw7CiAgICAgc3RhdGljIGxvbmcgICAgIGxvbmdfcmV0OwogICAgIHN0YXRpYyBjaGFyICAgICBlcnJtc2dbMzAwXTsKKyAgICBuZXRzbm1wX2NhY2hlICAqY2FjaGU7CiAKLSAgICBuZXRzbm1wX2ZzeXNfbG9hZCggTlVMTCwgTlVMTCApOyAgLyogVXBkYXRlIHRoZSBmc3lzIEgvVyBtb2R1bGUgKi8KKyAgICAvKiBVcGRhdGUgdGhlIGZzeXMgSC9XIG1vZHVsZSAqLworICAgIGNhY2hlID0gbmV0c25tcF9mc3lzX2dldF9jYWNoZSgpOworICAgIG5ldHNubXBfY2FjaGVfY2hlY2tfYW5kX3JlbG9hZChjYWNoZSk7CiAKIHRyeUFnYWluOgogICAgIGlmIChoZWFkZXJfc2ltcGxlX3RhYmxlCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrX2h3LmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrX2h3LmgKaW5kZXggMTQ3Yjk4Zi4uZmY0MmVkOSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza19ody5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tfaHcuaApAQCAtOCw2ICs4LDcgQEAKIHZvaWQgICAgICAgICAgICBpbml0X2Rpc2tfaHcodm9pZCk7CiAKIGNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZSkKK2NvbmZpZ19yZXF1aXJlKGhhcmR3YXJlL2ZzeXMpCiAKICAgICAgZXh0ZXJuIEZpbmRWYXJNZXRob2QgdmFyX2V4dGVuc2libGVfZGlzazsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uYwppbmRleCBhODE5YWE2Li40ZWE4OTg3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uYwpAQCAtMTEyLDcgKzExMiw3IEBACiBzdGF0aWMgbWFjaF9wb3J0X3QgbWFzdGVyUG9ydDsJCS8qIHRvIGNvbW11bmljYXRlIHdpdGggSS9PIEtpdAkqLwogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkYXJ3aW4gKi8KIAotI2lmbmRlZiBzb2xhcmlzMgorI2lmICFkZWZpbmVkKHNvbGFyaXMyKSAmJiAhKGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpIHx8IGRlZmluZWQoYWl4NykpCiBzdGF0aWMgaW50ICAgICAgZ2V0c3RhdHModm9pZCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmMKaW5kZXggNTdiZjg3ZS4uMGI3MTFmYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jCkBAIC0zLDYgKzMsNyBAQAogICoKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxjdHlwZS5oPgogI2lmIEhBVkVfU1RETElCX0gKQEAgLTE0LDE3ICsxNSwxMCBAQAogI2Vsc2UKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjZW5kaWYKLSNpZiBIQVZFX1VOSVNURF9ICi0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxjdHlwZS5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCi0jaW5jbHVkZSAic3RydWN0LmgiCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgotCiAjaWYgZGVmaW5lZChXSU4zMikKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZWxzZQpAQCAtMzIsNzMgKzI2LDMzIEBACiAjZW5kaWYKICNpbmNsdWRlICJkbG1vZC5oIgogCisjaWZuZGVmIFNOTVBETE1PRFBBVEgKKyNkZWZpbmUgU05NUERMTU9EUEFUSCAiL3Vzci9sb2NhbC9saWIvc25tcC9kbG1vZCIKKyNlbmRpZgorCitzdHJ1Y3QgZGxtb2QgeworICBzdHJ1Y3QgZGxtb2QgICAqbmV4dDsKKyAgaW50ICAgICAgICAgICAgIGluZGV4OworICBjaGFyICAgICAgICAgICAgbmFtZVs2NCArIDFdOworICBjaGFyICAgICAgICAgICAgcGF0aFsyNTUgKyAxXTsKKyAgY2hhciAgICAgICAgICAgIGVycm9yWzI1NSArIDFdOworICB2b2lkICAgICAgICAgICAqaGFuZGxlOworICBpbnQgICAgICAgICAgICAgc3RhdHVzOworfTsKKworI2RlZmluZSBETE1PRF9MT0FERUQJCTEKKyNkZWZpbmUgRExNT0RfVU5MT0FERUQJCTIKKyNkZWZpbmUgRExNT0RfRVJST1IJCTMKKyNkZWZpbmUgRExNT0RfTE9BRAkJNAorI2RlZmluZSBETE1PRF9VTkxPQUQJCTUKKyNkZWZpbmUgRExNT0RfQ1JFQVRFCQk2CisjZGVmaW5lIERMTU9EX0RFTEVURQkJNworCiBzdGF0aWMgc3RydWN0IGRsbW9kICpkbG1vZHM7CiBzdGF0aWMgdW5zaWduZWQgaW50IGRsbW9kX25leHRfaW5kZXggPSAxOwogc3RhdGljIGNoYXIgICAgIGRsbW9kX3BhdGhbMTAyNF07CiAKLXN0YXRpYyB2b2lkICAgICBkbG1vZF9wYXJzZV9jb25maWcoY29uc3QgY2hhciAqLCBjaGFyICopOwotc3RhdGljIHZvaWQgICAgIGRsbW9kX2ZyZWVfY29uZmlnKHZvaWQpOwotCi0vKgotICogdGhpcyB2YXJpYWJsZSBkZWZpbmVzIGZ1bmN0aW9uIGNhbGxiYWNrcyBhbmQgdHlwZSByZXR1cm4KLSAqIGluZm9ybWF0aW9uIGZvciB0aGUgZGxtb2QgbWliCi0gKi8KLXN0YXRpYyBzdHJ1Y3QgdmFyaWFibGU0IGRsbW9kX3ZhcmlhYmxlc1tdID0gewotICAgIHtETE1PRE5FWFRJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAotICAgICB2YXJfZGxtb2QsIDEsIHsxfX0sCi0gICAge0RMTU9ETkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAotICAgICB2YXJfZGxtb2RFbnRyeSwgMywgezIsIDEsIDJ9fSwKLSAgICB7RExNT0RQQVRILCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCi0gICAgIHZhcl9kbG1vZEVudHJ5LCAzLCB7MiwgMSwgM319LAotICAgIHtETE1PREVSUk9SLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKLSAgICAgdmFyX2RsbW9kRW50cnksIDMsIHsyLCAxLCA0fX0sCi0gICAge0RMTU9EU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAotICAgICB2YXJfZGxtb2RFbnRyeSwgMywgezIsIDEsIDV9fSwKLX07Ci0KLXN0YXRpYyBvaWQgICAgICBkbG1vZF92YXJpYWJsZXNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDIwMjEsIDEzLCAxNCB9Owotc3RhdGljIGludCAgICAgIGRsbW9kX3ZhcmlhYmxlc19vaWRfbGVuID0gOTsKLQotdm9pZAotaW5pdF9kbG1vZCh2b2lkKQotewotICAgIFJFR0lTVEVSX01JQigiZGxtb2QiLCBkbG1vZF92YXJpYWJsZXMsIHZhcmlhYmxlNCwgZGxtb2RfdmFyaWFibGVzX29pZCk7Ci0KLSAgICAvKgotICAgICAqIFRPRE86IFJFR0lTVEVSX1NZU09SX0VOVFJZIAotICAgICAqLwotCi0gICAgREVCVUdNU0dUTCgoImRsbW9kIiwgInJlZ2lzdGVyIG1pYlxuIikpOwotCi0gICAgc25tcGRfcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoImRsbW9kIiwgZGxtb2RfcGFyc2VfY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRsbW9kX2ZyZWVfY29uZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUtbmFtZSBtb2R1bGUtcGF0aCIpOwotCi0gICAgewotICAgICAgICBjb25zdCBjaGFyICogY29uc3QgcCA9IGdldGVudigiU05NUERMTU9EUEFUSCIpOwotICAgICAgICBzdHJsY3B5KGRsbW9kX3BhdGgsIFNOTVBETE1PRFBBVEgsIHNpemVvZihkbG1vZF9wYXRoKSk7Ci0gICAgICAgIGlmIChwKSB7Ci0gICAgICAgICAgICBpZiAocFswXSA9PSBFTlZfU0VQQVJBVE9SX0NIQVIpIHsKLSAgICAgICAgICAgICAgICBpbnQgbGVuID0gc3RybGVuKGRsbW9kX3BhdGgpOwotICAgICAgICAgICAgICAgIGlmIChsZW4gPj0gMSAmJiBkbG1vZF9wYXRoW2xlbiAtIDFdICE9IEVOVl9TRVBBUkFUT1JfQ0hBUikKLSAgICAgICAgICAgICAgICAgICAgc3RybGNhdChkbG1vZF9wYXRoLCBFTlZfU0VQQVJBVE9SLCBzaXplb2YoZGxtb2RfcGF0aCkpOwotICAgICAgICAgICAgICAgIHN0cmxjYXQoZGxtb2RfcGF0aCwgcCArIDEsIHNpemVvZihkbG1vZF9wYXRoKSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzdHJsY3B5KGRsbW9kX3BhdGgsIHAsIHNpemVvZihkbG1vZF9wYXRoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBERUJVR01TR1RMKCgiZGxtb2QiLCAiZGxtb2RfcGF0aDogJXNcbiIsIGRsbW9kX3BhdGgpKTsKLX0KLQotdm9pZAotZGVpbml0X2RsbW9kKHZvaWQpCi17Ci0gICAgdW5yZWdpc3Rlcl9taWIoZGxtb2RfdmFyaWFibGVzX29pZCwgZGxtb2RfdmFyaWFibGVzX29pZF9sZW4pOwotICAgIHNubXBkX3VucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoImRsbW9kIik7Ci19Ci0KLXN0cnVjdCBkbG1vZCAgICoKK3N0YXRpYyBzdHJ1Y3QgZGxtb2QgICAqCiBkbG1vZF9jcmVhdGVfbW9kdWxlKHZvaWQpCiB7CiAgICAgc3RydWN0IGRsbW9kICAqKnBkbG1vZCwgKmRsbTsKQEAgLTExOCw3ICs3Miw3IEBACiAgICAgcmV0dXJuIGRsbTsKIH0KIAotdm9pZAorc3RhdGljIHZvaWQKIGRsbW9kX2RlbGV0ZV9tb2R1bGUoc3RydWN0IGRsbW9kICpkbG0pCiB7CiAgICAgc3RydWN0IGRsbW9kICAqKnBkbG1vZDsKQEAgLTIyNSwxNCArMTc5LDkgQEAKICNlbmRpZgogfQogCi12b2lkCitzdGF0aWMgdm9pZAogZGxtb2RfbG9hZF9tb2R1bGUoc3RydWN0IGRsbW9kICpkbG0pCiB7Ci0gICAgY2hhciAgICAgICAgICAgIHN5bV9pbml0WzY0XTsKLSAgICBjaGFyICAgICAgICAgICAqcCwgdG1wX3BhdGhbMjU1XTsKLSAgICBkbF9mdW5jdGlvbl9wdHIgZGxfaW5pdDsKLSAgICBjaGFyICAgICAgICAgICAqc3Q7Ci0KICAgICBERUJVR01TR1RMKCgiZGxtb2QiLCAiZGxtb2RfbG9hZF9tb2R1bGUgJXM6ICVzXG4iLCBkbG0tPm5hbWUsCiAgICAgICAgICAgICAgICAgZGxtLT5wYXRoKSk7CiAKQEAgLTI0OSw2ICsxOTgsOCBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKKyAgICAgICAgY2hhciAqc3QsICpwLCB0bXBfcGF0aFsyNTVdOworCiAgICAgICAgIGZvciAocCA9IHN0cnRva19yKGRsbW9kX3BhdGgsIEVOVl9TRVBBUkFUT1IsICZzdCk7IHA7CiAgICAgICAgICAgICAgcCA9IHN0cnRva19yKE5VTEwsIEVOVl9TRVBBUkFUT1IsICZzdCkpIHsKICAgICAgICAgICAgIHNucHJpbnRmKHRtcF9wYXRoLCBzaXplb2YodG1wX3BhdGgpLCAiJXMvJXMuJXMiLCBwLCBkbG0tPnBhdGgsCkBAIC0yNjUsMjUgKzIxNiwzMCBAQAogICAgICAgICBpZiAoZGxtLT5zdGF0dXMgPT0gRExNT0RfRVJST1IpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHNucHJpbnRmKHN5bV9pbml0LCBzaXplb2Yoc3ltX2luaXQpLCAiaW5pdF8lcyIsIGRsbS0+bmFtZSk7Ci0gICAgZGxfaW5pdCA9IGRsbW9kX2Rsc3ltKGRsbS0+aGFuZGxlLCBzeW1faW5pdCk7Ci0gICAgaWYgKGRsX2luaXQgPT0gTlVMTCkgewotICAgICAgICBkbG1vZF9kbGNsb3NlKGRsbS0+aGFuZGxlKTsKLSAgICAgICAgc25wcmludGYoZGxtLT5lcnJvciwgc2l6ZW9mKGRsbS0+ZXJyb3IpLAotICAgICAgICAgICAgICAgICAiZGxzeW0gZmFpbGVkOiBjYW4ndCBmaW5kIFwnJXNcJyIsIHN5bV9pbml0KTsKLSAgICAgICAgZGxtLT5zdGF0dXMgPSBETE1PRF9FUlJPUjsKLSAgICAgICAgcmV0dXJuOworICAgIHsKKyAgICAgICAgY2hhciBzeW1faW5pdFs2NCArIHNpemVvZigiaW5pdF8iKV07CisgICAgICAgIGRsX2Z1bmN0aW9uX3B0ciBkbF9pbml0OworCisgICAgICAgIHNucHJpbnRmKHN5bV9pbml0LCBzaXplb2Yoc3ltX2luaXQpLCAiaW5pdF8lcyIsIGRsbS0+bmFtZSk7CisgICAgICAgIGRsX2luaXQgPSBkbG1vZF9kbHN5bShkbG0tPmhhbmRsZSwgc3ltX2luaXQpOworICAgICAgICBpZiAoZGxfaW5pdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBkbG1vZF9kbGNsb3NlKGRsbS0+aGFuZGxlKTsKKyAgICAgICAgICAgIHNucHJpbnRmKGRsbS0+ZXJyb3IsIHNpemVvZihkbG0tPmVycm9yKSwKKyAgICAgICAgICAgICAgICAgICAgICJkbHN5bSBmYWlsZWQ6IGNhbid0IGZpbmQgXCclc1wnIiwgc3ltX2luaXQpOworICAgICAgICAgICAgZGxtLT5zdGF0dXMgPSBETE1PRF9FUlJPUjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBkbF9pbml0KCk7CiAgICAgfQogCi0gICAgZGxfaW5pdCgpOwogICAgIGRsbS0+ZXJyb3JbMF0gPSAnXDAnOwogICAgIGRsbS0+c3RhdHVzID0gRExNT0RfTE9BREVEOwogfQogCi12b2lkCitzdGF0aWMgdm9pZAogZGxtb2RfdW5sb2FkX21vZHVsZShzdHJ1Y3QgZGxtb2QgKmRsbSkKIHsKLSAgICBjaGFyICAgICAgICAgICAgc3ltX2RlaW5pdFs2NF07CisgICAgY2hhciAgICAgICAgICAgIHN5bV9kZWluaXRbNjQgKyBzaXplb2YoInNodXRkb3duXyIpXTsKICAgICBkbF9mdW5jdGlvbl9wdHIgZGxfZGVpbml0OwogCiAgICAgaWYgKCFkbG0gfHwgZGxtLT5zdGF0dXMgIT0gRExNT0RfTE9BREVEKQpAQCAtMjkxLDI1ICsyNDcsMjIgQEAKIAogICAgIHNucHJpbnRmKHN5bV9kZWluaXQsIHNpemVvZihzeW1fZGVpbml0KSwgImRlaW5pdF8lcyIsIGRsbS0+bmFtZSk7CiAgICAgZGxfZGVpbml0ID0gZGxtb2RfZGxzeW0oZGxtLT5oYW5kbGUsIHN5bV9kZWluaXQpOwotICAgIGlmIChkbF9kZWluaXQpIHsKLSAgICAgICAgREVCVUdNU0dUTCgoImRsbW9kIiwgIkNhbGxpbmcgZGVpbml0XyVzKClcbiIsIGRsbS0+bmFtZSkpOwotICAgICAgICBkbF9kZWluaXQoKTsKLSAgICB9IGVsc2UgeworICAgIGlmICghZGxfZGVpbml0KSB7CiAgICAgICAgIHNucHJpbnRmKHN5bV9kZWluaXQsIHNpemVvZihzeW1fZGVpbml0KSwgInNodXRkb3duXyVzIiwgZGxtLT5uYW1lKTsKICAgICAgICAgZGxfZGVpbml0ID0gZGxtb2RfZGxzeW0oZGxtLT5oYW5kbGUsIHN5bV9kZWluaXQpOwotICAgICAgICBpZiAoZGxfZGVpbml0KSB7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgiZGxtb2QiLCAiQ2FsbGluZyBzaHV0ZG93bl8lcygpXG4iLCBkbG0tPm5hbWUpKTsKLSAgICAgICAgICAgIGRsX2RlaW5pdCgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoImRsbW9kIiwgIk5vIGRlc3RydWN0b3IgZm9yICVzXG4iLCBkbG0tPm5hbWUpKTsKLSAgICAgICAgfQorICAgIH0KKyAgICBpZiAoZGxfZGVpbml0KSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJkbG1vZCIsICJDYWxsaW5nICVzKClcbiIsIHN5bV9kZWluaXQpKTsKKyAgICAgICAgZGxfZGVpbml0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImRsbW9kIiwgIk5vIGRlc3RydWN0b3IgZm9yICVzXG4iLCBkbG0tPm5hbWUpKTsKICAgICB9CiAgICAgZGxtb2RfZGxjbG9zZShkbG0tPmhhbmRsZSk7CiAgICAgZGxtLT5zdGF0dXMgPSBETE1PRF9VTkxPQURFRDsKICAgICBERUJVR01TR1RMKCgiZGxtb2QiLCAiTW9kdWxlICVzIHVubG9hZGVkXG4iLCBkbG0tPm5hbWUpKTsKIH0KIAotc3RydWN0IGRsbW9kICAgKgorc3RhdGljIHN0cnVjdCBkbG1vZCAgICoKIGRsbW9kX2dldF9ieV9pbmRleChpbnQgaWluZGV4KQogewogICAgIHN0cnVjdCBkbG1vZCAgICpkbG1vZDsKQEAgLTMyMSw2ICsyNzQsMTAgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorLyoKKyAqIEZ1bmN0aW9ucyB0byBwYXJzZSBjb25maWcgbGluZXMKKyAqLworCiBzdGF0aWMgdm9pZAogZGxtb2RfcGFyc2VfY29uZmlnKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQogewpAQCAtMzMzLDcgKzI5MCw3IEBACiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLyoKLSAgICAgKiByZW1vdmUgY29tbWVudHMgCisgICAgICogcmVtb3ZlIGNvbW1lbnRzCiAgICAgICovCiAgICAgKihjcHRyICsgc3RyY3NwbihjcHRyLCAiIztcclxuIikpID0gJ1wwJzsKIApAQCAtMzQyLDcgKzI5OSw3IEBACiAgICAgICAgIHJldHVybjsKIAogICAgIC8qCi0gICAgICogZHluYW1pYyBtb2R1bGUgbmFtZSAKKyAgICAgKiBkeW5hbWljIG1vZHVsZSBuYW1lCiAgICAgICovCiAgICAgZGxtX25hbWUgPSBzdHJ0b2tfcihjcHRyLCAiXHQgIiwgJnN0KTsKICAgICBpZiAoZGxtX25hbWUgPT0gTlVMTCkgewpAQCAtMzUzLDcgKzMxMCw3IEBACiAgICAgc3RybGNweShkbG0tPm5hbWUsIGRsbV9uYW1lLCBzaXplb2YoZGxtLT5uYW1lKSk7CiAKICAgICAvKgotICAgICAqIGR5bmFtaWMgbW9kdWxlIHBhdGggCisgICAgICogZHluYW1pYyBtb2R1bGUgcGF0aAogICAgICAqLwogICAgIGRsbV9wYXRoID0gc3RydG9rX3IoTlVMTCwgIlx0ICIsICZzdCk7CiAgICAgaWYgKGRsbV9wYXRoKQpAQCAtMzgxLDEzICszMzgsMjMgQEAKICAgICBkbG1vZHMgPSBOVUxMOwogfQogCisvKgorICogRnVuY3Rpb25zIHRvIGhhbmRsZSBTTk1QIG1hbmFnZW1lbnQKKyAqLworCisjZGVmaW5lIERMTU9ETkVYVElOREVYIAkJMQorI2RlZmluZSBETE1PRElOREVYICAgICAJCTIKKyNkZWZpbmUgRExNT0ROQU1FICAgICAgCQkzCisjZGVmaW5lIERMTU9EUEFUSCAgICAgIAkJNAorI2RlZmluZSBETE1PREVSUk9SICAgICAJCTUKKyNkZWZpbmUgRExNT0RTVEFUVVMgICAgCQk2CiAKIC8qCiAgKiBoZWFkZXJfZGxtb2QoLi4uCiAgKiBBcmd1bWVudHM6CiAgKiB2cCAgICAgSU4gICAgICAtIHBvaW50ZXIgdG8gdmFyaWFibGUgZW50cnkgdGhhdCBwb2ludHMgaGVyZQogICogbmFtZSAgICBJTi9PVVQgIC0gSU4vbmFtZSByZXF1ZXN0ZWQsIE9VVC9uYW1lIGZvdW5kCi0gKiBsZW5ndGggIElOL09VVCAgLSBsZW5ndGggb2YgSU4vT1VUIG9pZCdzIAorICogbGVuZ3RoICBJTi9PVVQgIC0gbGVuZ3RoIG9mIElOL09VVCBvaWQncwogICogZXhhY3QgICBJTiAgICAgIC0gVFJVRSBpZiBhbiBleGFjdCBtYXRjaCB3YXMgcmVxdWVzdGVkCiAgKiB2YXJfbGVuIE9VVCAgICAgLSBsZW5ndGggb2YgdmFyaWFibGUgb3IgMCBpZiBmdW5jdGlvbiByZXR1cm5lZAogICogd3JpdGVfbWV0aG9kCkBAIC00MTksNyArMzg2LDcgQEAKIH0KIAogCi11X2NoYXIgICAgICAgICAqCitzdGF0aWMgdV9jaGFyICAgICAgICAgKgogdmFyX2RsbW9kKHN0cnVjdCB2YXJpYWJsZSAqIHZwLAogICAgICAgICAgIG9pZCAqIG5hbWUsCiAgICAgICAgICAgc2l6ZV90ICogbGVuZ3RoLApAQCAtNDI3LDcgKzM5NCw3IEBACiB7CiAKICAgICAvKgotICAgICAqIHZhcmlhYmxlcyB3ZSBtYXkgdXNlIGxhdGVyIAorICAgICAqIHZhcmlhYmxlcyB3ZSBtYXkgdXNlIGxhdGVyCiAgICAgICovCiAKICAgICAqd3JpdGVfbWV0aG9kID0gMDsgICAgICAgICAvKiBhc3N1bWUgaXQgaXNuJ3Qgd3JpdGFibGUgZm9yIHRoZSB0aW1lIGJlaW5nICovCkBAIC00MzgsNyArNDA1LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKgotICAgICAqIHRoaXMgaXMgd2hlcmUgd2UgZG8gdGhlIHZhbHVlIGFzc2lnbm1lbnRzIGZvciB0aGUgbWliIHJlc3VsdHMuIAorICAgICAqIHRoaXMgaXMgd2hlcmUgd2UgZG8gdGhlIHZhbHVlIGFzc2lnbm1lbnRzIGZvciB0aGUgbWliIHJlc3VsdHMuCiAgICAgICovCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKICAgICBjYXNlIERMTU9ETkVYVElOREVYOgpAQCAtNDUyLDE2ICs0MTksMTI3IEBACiB9CiAKIAorc3RhdGljIGludAord3JpdGVfZGxtb2ROYW1lKGludCBhY3Rpb24sCisgICAgICAgICAgICAgICAgdV9jaGFyICogdmFyX3ZhbCwKKyAgICAgICAgICAgICAgICB1X2NoYXIgdmFyX3ZhbF90eXBlLAorICAgICAgICAgICAgICAgIHNpemVfdCB2YXJfdmFsX2xlbiwKKyAgICAgICAgICAgICAgICB1X2NoYXIgKiBzdGF0UCwgb2lkICogbmFtZSwgc2l6ZV90IG5hbWVfbGVuKQoreworICAgIHN0YXRpYyBzdHJ1Y3QgZGxtb2QgKmRsbTsKKworICAgIGlmICh2YXJfdmFsX3R5cGUgIT0gQVNOX09DVEVUX1NUUikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAid3JpdGUgdG8gZGxtb2ROYW1lIG5vdCBBU05fT0NURVRfU1RSXG4iKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVFlQRTsKKyAgICB9CisgICAgaWYgKHZhcl92YWxfbGVuID4gc2l6ZW9mKGRsbS0+bmFtZSktMSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAid3JpdGUgdG8gZGxtb2ROYW1lOiBiYWQgbGVuZ3RoOiB0b28gbG9uZ1xuIik7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR0xFTkdUSDsKKyAgICB9CisgICAgaWYgKGFjdGlvbiA9PSBDT01NSVQpIHsKKyAgICAgICAgZGxtID0gZGxtb2RfZ2V0X2J5X2luZGV4KG5hbWVbMTJdKTsKKyAgICAgICAgaWYgKCFkbG0gfHwgZGxtLT5zdGF0dXMgPT0gRExNT0RfTE9BREVEKQorICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEU7CisgICAgICAgIHN0cm5jcHkoZGxtLT5uYW1lLCAoY29uc3QgY2hhciAqKSB2YXJfdmFsLCB2YXJfdmFsX2xlbik7CisgICAgICAgIGRsbS0+bmFtZVt2YXJfdmFsX2xlbl0gPSAwOworICAgIH0KKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KKworc3RhdGljIGludAord3JpdGVfZGxtb2RQYXRoKGludCBhY3Rpb24sCisgICAgICAgICAgICAgICAgdV9jaGFyICogdmFyX3ZhbCwKKyAgICAgICAgICAgICAgICB1X2NoYXIgdmFyX3ZhbF90eXBlLAorICAgICAgICAgICAgICAgIHNpemVfdCB2YXJfdmFsX2xlbiwKKyAgICAgICAgICAgICAgICB1X2NoYXIgKiBzdGF0UCwgb2lkICogbmFtZSwgc2l6ZV90IG5hbWVfbGVuKQoreworICAgIHN0YXRpYyBzdHJ1Y3QgZGxtb2QgKmRsbTsKKworICAgIGlmICh2YXJfdmFsX3R5cGUgIT0gQVNOX09DVEVUX1NUUikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAid3JpdGUgdG8gZGxtb2RQYXRoIG5vdCBBU05fT0NURVRfU1RSXG4iKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVFlQRTsKKyAgICB9CisgICAgaWYgKHZhcl92YWxfbGVuID4gc2l6ZW9mKGRsbS0+cGF0aCktMSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAid3JpdGUgdG8gZGxtb2RQYXRoOiBiYWQgbGVuZ3RoOiB0b28gbG9uZ1xuIik7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR0xFTkdUSDsKKyAgICB9CisgICAgaWYgKGFjdGlvbiA9PSBDT01NSVQpIHsKKyAgICAgICAgZGxtID0gZGxtb2RfZ2V0X2J5X2luZGV4KG5hbWVbMTJdKTsKKyAgICAgICAgaWYgKCFkbG0gfHwgZGxtLT5zdGF0dXMgPT0gRExNT0RfTE9BREVEKQorICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEU7CisgICAgICAgIHN0cm5jcHkoZGxtLT5wYXRoLCAoY29uc3QgY2hhciAqKSB2YXJfdmFsLCB2YXJfdmFsX2xlbik7CisgICAgICAgIGRsbS0+cGF0aFt2YXJfdmFsX2xlbl0gPSAwOworICAgIH0KKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KKworc3RhdGljIGludAord3JpdGVfZGxtb2RTdGF0dXMoaW50IGFjdGlvbiwKKyAgICAgICAgICAgICAgICAgIHVfY2hhciAqIHZhcl92YWwsCisgICAgICAgICAgICAgICAgICB1X2NoYXIgdmFyX3ZhbF90eXBlLAorICAgICAgICAgICAgICAgICAgc2l6ZV90IHZhcl92YWxfbGVuLAorICAgICAgICAgICAgICAgICAgdV9jaGFyICogc3RhdFAsIG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lX2xlbikKK3sKKyAgICAvKgorICAgICAqIHZhcmlhYmxlcyB3ZSBtYXkgdXNlIGxhdGVyCisgICAgICovCisgICAgc3RydWN0IGRsbW9kICAgKmRsbTsKKworICAgIGlmICh2YXJfdmFsX3R5cGUgIT0gQVNOX0lOVEVHRVIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIndyaXRlIHRvIGRsbW9kU3RhdHVzIG5vdCBBU05fSU5URUdFUlxuIik7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1RZUEU7CisgICAgfQorICAgIGlmICh2YXJfdmFsX2xlbiA+IHNpemVvZihsb25nKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAid3JpdGUgdG8gZGxtb2RTdGF0dXM6IGJhZCBsZW5ndGhcbiIpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdMRU5HVEg7CisgICAgfQorICAgIGlmIChhY3Rpb24gPT0gQ09NTUlUKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIG9iamVjdCBpZGVudGlmaWVyIGluIGZvcm0gLjEuMy42LjEuNC4xLjIwMjEuMTMuMTQuMi4xLjQueAorICAgICAgICAgKiB3aGVyZSBYIGlzIGluZGV4IHdpdGggb2Zmc2V0IDEyCisgICAgICAgICAqLworCisgICAgICAgIGRsbSA9IGRsbW9kX2dldF9ieV9pbmRleChuYW1lWzEyXSk7CisgICAgICAgIHN3aXRjaCAoKigobG9uZyAqKSB2YXJfdmFsKSkgeworICAgICAgICBjYXNlIERMTU9EX0NSRUFURToKKyAgICAgICAgICAgIGlmIChkbG0gfHwgKG5hbWVbMTJdICE9IGRsbW9kX25leHRfaW5kZXgpKQorICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFOworICAgICAgICAgICAgZGxtID0gZGxtb2RfY3JlYXRlX21vZHVsZSgpOworICAgICAgICAgICAgaWYgKCFkbG0pCisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBETE1PRF9MT0FEOgorICAgICAgICAgICAgaWYgKCFkbG0gfHwgZGxtLT5zdGF0dXMgPT0gRExNT0RfTE9BREVEKQorICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFOworICAgICAgICAgICAgZGxtb2RfbG9hZF9tb2R1bGUoZGxtKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERMTU9EX1VOTE9BRDoKKyAgICAgICAgICAgIGlmICghZGxtIHx8IGRsbS0+c3RhdHVzICE9IERMTU9EX0xPQURFRCkKKyAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRTsKKyAgICAgICAgICAgIGRsbW9kX3VubG9hZF9tb2R1bGUoZGxtKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERMTU9EX0RFTEVURToKKyAgICAgICAgICAgIGlmICghZGxtIHx8IGRsbS0+c3RhdHVzID09IERMTU9EX0xPQURFRCkKKyAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRTsKKyAgICAgICAgICAgIGRsbW9kX2RlbGV0ZV9tb2R1bGUoZGxtKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVkFMVUU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKIC8qCiAgKiBoZWFkZXJfZGxtb2RFbnRyeSguLi4KICAqIEFyZ3VtZW50czoKICAqIHZwICAgICBJTiAgICAgIC0gcG9pbnRlciB0byB2YXJpYWJsZSBlbnRyeSB0aGF0IHBvaW50cyBoZXJlCiAgKiBuYW1lICAgIElOL09VVCAgLSBJTi9uYW1lIHJlcXVlc3RlZCwgT1VUL25hbWUgZm91bmQKLSAqIGxlbmd0aCAgSU4vT1VUICAtIGxlbmd0aCBvZiBJTi9PVVQgb2lkJ3MgCisgKiBsZW5ndGggIElOL09VVCAgLSBsZW5ndGggb2YgSU4vT1VUIG9pZCdzCiAgKiBleGFjdCAgIElOICAgICAgLSBUUlVFIGlmIGFuIGV4YWN0IG1hdGNoIHdhcyByZXF1ZXN0ZWQKICAqIHZhcl9sZW4gT1VUICAgICAtIGxlbmd0aCBvZiB2YXJpYWJsZSBvciAwIGlmIGZ1bmN0aW9uIHJldHVybmVkCiAgKiB3cml0ZV9tZXRob2QKLSAqIAorICoKICAqLwogCiAKQEAgLTUwOSwxNCArNTg3LDE0IEBACiAgICAgcmV0dXJuIGRsbTsKIH0KIAotdV9jaGFyICAgICAgICAgKgorc3RhdGljIHVfY2hhciAgICAgICAgICoKIHZhcl9kbG1vZEVudHJ5KHN0cnVjdCB2YXJpYWJsZSAqIHZwLAogICAgICAgICAgICAgICAgb2lkICogbmFtZSwKICAgICAgICAgICAgICAgIHNpemVfdCAqIGxlbmd0aCwKICAgICAgICAgICAgICAgIGludCBleGFjdCwgc2l6ZV90ICogdmFyX2xlbiwgV3JpdGVNZXRob2QgKiogd3JpdGVfbWV0aG9kKQogewogICAgIC8qCi0gICAgICogdmFyaWFibGVzIHdlIG1heSB1c2UgbGF0ZXIgCisgICAgICogdmFyaWFibGVzIHdlIG1heSB1c2UgbGF0ZXIKICAgICAgKi8KICAgICBzdHJ1Y3QgZGxtb2QgICAqZGxtOwogCkBAIC01MjgsNyArNjA2LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKgotICAgICAqIHRoaXMgaXMgd2hlcmUgd2UgZG8gdGhlIHZhbHVlIGFzc2lnbm1lbnRzIGZvciB0aGUgbWliIHJlc3VsdHMuIAorICAgICAqIHRoaXMgaXMgd2hlcmUgd2UgZG8gdGhlIHZhbHVlIGFzc2lnbm1lbnRzIGZvciB0aGUgbWliIHJlc3VsdHMuCiAgICAgICovCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKICAgICBjYXNlIERMTU9ETkFNRToKQEAgLTU1MywxMTMgKzYzMSw2NiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1pbnQKLXdyaXRlX2RsbW9kTmFtZShpbnQgYWN0aW9uLAotICAgICAgICAgICAgICAgIHVfY2hhciAqIHZhcl92YWwsCi0gICAgICAgICAgICAgICAgdV9jaGFyIHZhcl92YWxfdHlwZSwKLSAgICAgICAgICAgICAgICBzaXplX3QgdmFyX3ZhbF9sZW4sCi0gICAgICAgICAgICAgICAgdV9jaGFyICogc3RhdFAsIG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lX2xlbikKKy8qCisgKiB0aGlzIHZhcmlhYmxlIGRlZmluZXMgZnVuY3Rpb24gY2FsbGJhY2tzIGFuZCB0eXBlIHJldHVybgorICogaW5mb3JtYXRpb24gZm9yIHRoZSBkbG1vZCBtaWIKKyAqLworc3RhdGljIHN0cnVjdCB2YXJpYWJsZTQgZGxtb2RfdmFyaWFibGVzW10gPSB7CisgICAge0RMTU9ETkVYVElOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9kbG1vZCwgMSwgezF9fSwKKyAgICB7RExNT0ROQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9kbG1vZEVudHJ5LCAzLCB7MiwgMSwgMn19LAorICAgIHtETE1PRFBBVEgsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2RsbW9kRW50cnksIDMsIHsyLCAxLCAzfX0sCisgICAge0RMTU9ERVJST1IsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZGxtb2RFbnRyeSwgMywgezIsIDEsIDR9fSwKKyAgICB7RExNT0RTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9kbG1vZEVudHJ5LCAzLCB7MiwgMSwgNX19LAorfTsKKworc3RhdGljIG9pZCBkbG1vZF92YXJpYWJsZXNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDIwMjEsIDEzLCAxNCB9OworCit2b2lkCitpbml0X2RsbW9kKHZvaWQpCiB7Ci0gICAgc3RhdGljIHN0cnVjdCBkbG1vZCAqZGxtOworICAgIFJFR0lTVEVSX01JQigiZGxtb2QiLCBkbG1vZF92YXJpYWJsZXMsIHZhcmlhYmxlNCwgZGxtb2RfdmFyaWFibGVzX29pZCk7CiAKLSAgICBpZiAodmFyX3ZhbF90eXBlICE9IEFTTl9PQ1RFVF9TVFIpIHsKLSAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIndyaXRlIHRvIGRsbW9kTmFtZSBub3QgQVNOX09DVEVUX1NUUlxuIik7Ci0gICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1RZUEU7Ci0gICAgfQotICAgIGlmICh2YXJfdmFsX2xlbiA+IHNpemVvZihkbG0tPm5hbWUpLTEpIHsKLSAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIndyaXRlIHRvIGRsbW9kTmFtZTogYmFkIGxlbmd0aDogdG9vIGxvbmdcbiIpOwotICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdMRU5HVEg7Ci0gICAgfQotICAgIGlmIChhY3Rpb24gPT0gQ09NTUlUKSB7Ci0gICAgICAgIGRsbSA9IGRsbW9kX2dldF9ieV9pbmRleChuYW1lWzEyXSk7Ci0gICAgICAgIGlmICghZGxtIHx8IGRsbS0+c3RhdHVzID09IERMTU9EX0xPQURFRCkKLSAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFOwotICAgICAgICBtZW1jcHkoZGxtLT5uYW1lLCB2YXJfdmFsLCB2YXJfdmFsX2xlbik7Ci0gICAgICAgIGRsbS0+bmFtZVt2YXJfdmFsX2xlbl0gPSAwOwotICAgIH0KLSAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLX0KLQotaW50Ci13cml0ZV9kbG1vZFBhdGgoaW50IGFjdGlvbiwKLSAgICAgICAgICAgICAgICB1X2NoYXIgKiB2YXJfdmFsLAotICAgICAgICAgICAgICAgIHVfY2hhciB2YXJfdmFsX3R5cGUsCi0gICAgICAgICAgICAgICAgc2l6ZV90IHZhcl92YWxfbGVuLAotICAgICAgICAgICAgICAgIHVfY2hhciAqIHN0YXRQLCBvaWQgKiBuYW1lLCBzaXplX3QgbmFtZV9sZW4pCi17Ci0gICAgc3RhdGljIHN0cnVjdCBkbG1vZCAqZGxtOwotCi0gICAgaWYgKHZhcl92YWxfdHlwZSAhPSBBU05fT0NURVRfU1RSKSB7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ3cml0ZSB0byBkbG1vZFBhdGggbm90IEFTTl9PQ1RFVF9TVFJcbiIpOwotICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdUWVBFOwotICAgIH0KLSAgICBpZiAodmFyX3ZhbF9sZW4gPiBzaXplb2YoZGxtLT5wYXRoKS0xKSB7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ3cml0ZSB0byBkbG1vZFBhdGg6IGJhZCBsZW5ndGg6IHRvbyBsb25nXG4iKTsKLSAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HTEVOR1RIOwotICAgIH0KLSAgICBpZiAoYWN0aW9uID09IENPTU1JVCkgewotICAgICAgICBkbG0gPSBkbG1vZF9nZXRfYnlfaW5kZXgobmFtZVsxMl0pOwotICAgICAgICBpZiAoIWRsbSB8fCBkbG0tPnN0YXR1cyA9PSBETE1PRF9MT0FERUQpCi0gICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRTsKLSAgICAgICAgbWVtY3B5KGRsbS0+cGF0aCwgdmFyX3ZhbCwgdmFyX3ZhbF9sZW4pOwotICAgICAgICBkbG0tPnBhdGhbdmFyX3ZhbF9sZW5dID0gMDsKLSAgICB9Ci0gICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci19Ci0KLWludAotd3JpdGVfZGxtb2RTdGF0dXMoaW50IGFjdGlvbiwKLSAgICAgICAgICAgICAgICAgIHVfY2hhciAqIHZhcl92YWwsCi0gICAgICAgICAgICAgICAgICB1X2NoYXIgdmFyX3ZhbF90eXBlLAotICAgICAgICAgICAgICAgICAgc2l6ZV90IHZhcl92YWxfbGVuLAotICAgICAgICAgICAgICAgICAgdV9jaGFyICogc3RhdFAsIG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lX2xlbikKLXsKICAgICAvKgotICAgICAqIHZhcmlhYmxlcyB3ZSBtYXkgdXNlIGxhdGVyIAorICAgICAqIFRPRE86IFJFR0lTVEVSX1NZU09SX0VOVFJZCiAgICAgICovCi0gICAgc3RydWN0IGRsbW9kICAgKmRsbTsKIAotICAgIGlmICh2YXJfdmFsX3R5cGUgIT0gQVNOX0lOVEVHRVIpIHsKLSAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIndyaXRlIHRvIGRsbW9kU3RhdHVzIG5vdCBBU05fSU5URUdFUlxuIik7Ci0gICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1RZUEU7Ci0gICAgfQotICAgIGlmICh2YXJfdmFsX2xlbiA+IHNpemVvZihsb25nKSkgewotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAid3JpdGUgdG8gZGxtb2RTdGF0dXM6IGJhZCBsZW5ndGhcbiIpOwotICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdMRU5HVEg7Ci0gICAgfQotICAgIGlmIChhY3Rpb24gPT0gQ09NTUlUKSB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIG9iamVjdCBpZGVudGlmaWVyIGluIGZvcm0gLjEuMy42LjEuNC4xLjIwMjEuMTMuMTQuMi4xLjQueCAKLSAgICAgICAgICogd2hlcmUgWCBpcyBpbmRleCB3aXRoIG9mZnNldCAxMiAKLSAgICAgICAgICovCisgICAgREVCVUdNU0dUTCgoImRsbW9kIiwgInJlZ2lzdGVyIG1pYlxuIikpOwogCi0gICAgICAgIGRsbSA9IGRsbW9kX2dldF9ieV9pbmRleChuYW1lWzEyXSk7Ci0gICAgICAgIHN3aXRjaCAoKigobG9uZyAqKSB2YXJfdmFsKSkgewotICAgICAgICBjYXNlIERMTU9EX0NSRUFURToKLSAgICAgICAgICAgIGlmIChkbG0gfHwgKG5hbWVbMTJdICE9IGRsbW9kX25leHRfaW5kZXgpKQotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFOwotICAgICAgICAgICAgZGxtID0gZGxtb2RfY3JlYXRlX21vZHVsZSgpOwotICAgICAgICAgICAgaWYgKCFkbG0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBETE1PRF9MT0FEOgotICAgICAgICAgICAgaWYgKCFkbG0gfHwgZGxtLT5zdGF0dXMgPT0gRExNT0RfTE9BREVEKQotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFOwotICAgICAgICAgICAgZGxtb2RfbG9hZF9tb2R1bGUoZGxtKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERMTU9EX1VOTE9BRDoKLSAgICAgICAgICAgIGlmICghZGxtIHx8IGRsbS0+c3RhdHVzICE9IERMTU9EX0xPQURFRCkKLSAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRTsKLSAgICAgICAgICAgIGRsbW9kX3VubG9hZF9tb2R1bGUoZGxtKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERMTU9EX0RFTEVURToKLSAgICAgICAgICAgIGlmICghZGxtIHx8IGRsbS0+c3RhdHVzID09IERMTU9EX0xPQURFRCkKLSAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRTsKLSAgICAgICAgICAgIGRsbW9kX2RlbGV0ZV9tb2R1bGUoZGxtKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVkFMVUU7CisgICAgc25tcGRfcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoImRsbW9kIiwgZGxtb2RfcGFyc2VfY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRsbW9kX2ZyZWVfY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUtbmFtZSBtb2R1bGUtcGF0aCIpOworCisgICAgeworICAgICAgICBjb25zdCBjaGFyICogY29uc3QgcCA9IGdldGVudigiU05NUERMTU9EUEFUSCIpOworICAgICAgICBzdHJuY3B5KGRsbW9kX3BhdGgsIFNOTVBETE1PRFBBVEgsIHNpemVvZihkbG1vZF9wYXRoKSk7CisgICAgICAgIGRsbW9kX3BhdGhbIHNpemVvZihkbG1vZF9wYXRoKSAtIDEgXSA9IDA7CisgICAgICAgIGlmIChwKSB7CisgICAgICAgICAgICBpZiAocFswXSA9PSAnOicpIHsKKyAgICAgICAgICAgICAgICBpbnQgbGVuID0gc3RybGVuKGRsbW9kX3BhdGgpOworICAgICAgICAgICAgICAgIGlmIChkbG1vZF9wYXRoW2xlbiAtIDFdICE9ICc6JykgeworICAgICAgICAgICAgICAgICAgICBzdHJuY2F0KGRsbW9kX3BhdGgsICI6Iiwgc2l6ZW9mKGRsbW9kX3BhdGgpIC0gbGVuIC0gMSk7CisgICAgICAgICAgICAgICAgICAgIGxlbisrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdHJuY2F0KGRsbW9kX3BhdGgsIHAgKyAxLCAgIHNpemVvZihkbG1vZF9wYXRoKSAtIGxlbik7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzdHJuY3B5KGRsbW9kX3BhdGgsIHAsIHNpemVvZihkbG1vZF9wYXRoKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisKKyAgICBkbG1vZF9wYXRoWyBzaXplb2YoZGxtb2RfcGF0aCktMSBdID0gMDsKKyAgICBERUJVR01TR1RMKCgiZGxtb2QiLCAiZGxtb2RfcGF0aDogJXNcbiIsIGRsbW9kX3BhdGgpKTsKK30KKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoc25tcGRfdW5yZWdpc3Rlcl9jb25maWdfaGFuZGxlcikKKwordm9pZAorc2h1dGRvd25fZGxtb2Qodm9pZCkKK3sKKyAgICBzbm1wZF91bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJkbG1vZCIpOworICAgIHVucmVnaXN0ZXJfbWliKGRsbW9kX3ZhcmlhYmxlc19vaWQsIE9JRF9MRU5HVEgoZGxtb2RfdmFyaWFibGVzX29pZCkpOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuaCBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmgKaW5kZXggNGZiZmI5ZS4uOTU5MmJkZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5oCkBAIC0zLDYxICszLDE2IEBACiAgKgogICovCiAKLSNpZm5kZWYgX01JQkdST1VQX0RMTU9EX0gKLSNkZWZpbmUgX01JQkdST1VQX0RMTU9EX0gKKyNpZm5kZWYgTUlCR1JPVVBfRExNT0RfSAorI2RlZmluZSBNSUJHUk9VUF9ETE1PRF9ICiAKLS8qCi0gKiBUT0RPICNpbmNsdWRlICJtaWJkZWZzLmgiCi0gKi8KICNpZiAoIWRlZmluZWQoSEFWRV9ETEZDTl9IKSB8fCAhZGVmaW5lZChIQVZFX0RMT1BFTikpICYmICFkZWZpbmVkKFdJTjMyKQogY29uZmlnX2Vycm9yKER5bmFtaWMgbW9kdWxlcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0pCiAjZW5kaWYKIAogY29uZmlnX2FkZF9taWIoVUNELURMTU9ELU1JQikKLSNpZm5kZWYgU05NUERMTU9EUEFUSAotI2RlZmluZSBTTk1QRExNT0RQQVRIICIvdXNyL2xvY2FsL2xpYi9zbm1wL2RsbW9kIgotI2VuZGlmCi0gICAgIHN0cnVjdCBkbG1vZCB7Ci0gICAgICAgICBzdHJ1Y3QgZGxtb2QgICAqbmV4dDsKLSAgICAgICAgIGludCAgICAgICAgICAgICBpbmRleDsKLSAgICAgICAgIGNoYXIgICAgICAgICAgICBuYW1lWzY0ICsgMV07Ci0gICAgICAgICBjaGFyICAgICAgICAgICAgcGF0aFsyNTUgKyAxXTsKLSAgICAgICAgIGNoYXIgICAgICAgICAgICBlcnJvclsyNTUgKyAxXTsKLSAgICAgICAgIHZvaWQgICAgICAgICAgICpoYW5kbGU7Ci0gICAgICAgICBpbnQgICAgICAgICAgICAgc3RhdHVzOwotICAgICB9OwogCi0gICAgIHZvaWQgICAgICAgICAgICBkbG1vZF9sb2FkX21vZHVsZShzdHJ1Y3QgZGxtb2QgKik7Ci0gICAgIHZvaWQgICAgICAgICAgICBkbG1vZF91bmxvYWRfbW9kdWxlKHN0cnVjdCBkbG1vZCAqKTsKLSAgICAgc3RydWN0IGRsbW9kICAgKmRsbW9kX2NyZWF0ZV9tb2R1bGUodm9pZCk7Ci0gICAgIHZvaWQgICAgICAgICAgICBkbG1vZF9kZWxldGVfbW9kdWxlKHN0cnVjdCBkbG1vZCAqKTsKLSAgICAgc3RydWN0IGRsbW9kICAgKmRsbW9kX2dldF9ieV9pbmRleChpbnQpOwordm9pZCBpbml0X2RsbW9kKHZvaWQpOwordm9pZCBzaHV0ZG93bl9kbG1vZCh2b2lkKTsKIAotICAgICB2b2lkICAgICAgICAgICAgZGxtb2RfaW5pdCh2b2lkKTsKLSAgICAgdm9pZCAgICAgICAgICAgIGRsbW9kX2RlaW5pdCh2b2lkKTsKLQotICAgICBleHRlcm4gdm9pZCAgICAgaW5pdF9kbG1vZCh2b2lkKTsKLSAgICAgZXh0ZXJuIHZvaWQgICAgIGRlaW5pdF9kbG1vZCh2b2lkKTsKLQotICAgICBleHRlcm4gRmluZFZhck1ldGhvZCB2YXJfZGxtb2Q7Ci0gICAgIGV4dGVybiBGaW5kVmFyTWV0aG9kIHZhcl9kbG1vZEVudHJ5OwotICAgICBleHRlcm4gV3JpdGVNZXRob2Qgd3JpdGVfZGxtb2ROYW1lOwotICAgICBleHRlcm4gV3JpdGVNZXRob2Qgd3JpdGVfZGxtb2RQYXRoOwotICAgICBleHRlcm4gV3JpdGVNZXRob2Qgd3JpdGVfZGxtb2RTdGF0dXM7Ci0KLSNkZWZpbmUgRExNT0RORVhUSU5ERVggCQkxCi0jZGVmaW5lIERMTU9ESU5ERVggICAgIAkJMgotI2RlZmluZSBETE1PRE5BTUUgICAgICAJCTMKLSNkZWZpbmUgRExNT0RQQVRIICAgICAgCQk0Ci0jZGVmaW5lIERMTU9ERVJST1IgICAgIAkJNQotI2RlZmluZSBETE1PRFNUQVRVUyAgICAJCTYKLQotI2RlZmluZSBETE1PRF9MT0FERUQJCTEKLSNkZWZpbmUgRExNT0RfVU5MT0FERUQJCTIKLSNkZWZpbmUgRExNT0RfRVJST1IJCTMKLSNkZWZpbmUgRExNT0RfTE9BRAkJNAotI2RlZmluZQlETE1PRF9VTkxPQUQJCTUKLSNkZWZpbmUgRExNT0RfQ1JFQVRFCQk2Ci0jZGVmaW5lIERMTU9EX0RFTEVURQkJNwotCi0jZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9NSUJHUk9VUF9ETE1PRF9IICovCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE1JQkdST1VQX0RMTU9EX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYwppbmRleCAzN2E1ZWViLi4xNGIwODRhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpZiBIQVZFX1NURExJQl9ICiAjaW5jbHVkZSA8c3RkbGliLmg+CkBAIC0xMDksNiArMTEwLDkgQEAKICNpbmNsdWRlICJ1dGlsaXRpZXMvZXhlY3V0ZS5oIgogI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShnZXRfZXh0ZW5faW5zdGFuY2UpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShwYXJzZV9taWJvaWQpCisKIGV4dGVybiBzdHJ1Y3QgbXlwcm9jICpwcm9jd2F0Y2g7ICAgICAgICAvKiBtb3ZlZCB0byBwcm9jLmMgKi8KIGV4dGVybiBpbnQgICAgICBudW1wcm9jczsgICAgICAgLyogZGl0dG8gKi8KIGV4dGVybiBzdHJ1Y3QgZXh0ZW5zaWJsZSAqZXh0ZW5zOyAgICAgICAvKiBJbiBleGVjLmMgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtU2Vuc29ycy5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1TZW5zb3JzLmMKaW5kZXggNjA1ZWUxNi4uMDVjNjBiNyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1TZW5zb3JzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1TZW5zb3JzLmMKQEAgLTY2LDYgKzY2LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTc2LDYgKzc3LDkgQEAKICNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCIKICNpbmNsdWRlIDx0aW1lLmg+CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2NvbnRhaW5lcikKKworCiAvKgogICogTG9hZCByZXF1aXJlZCBkcml2ZXJzIGFuZCBsaWJyYXJpZXMuCiAgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1zZW5zb3JzTWliLmMKaW5kZXggNWE1MDY5Ny4uMjU1Nzc5NiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1zZW5zb3JzTWliLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1zZW5zb3JzTWliLmMKQEAgLTgzLDcgKzgzLDcgQEAKICAgICAgKiBSZWdpc3RlciB0aGUgdGFibGUgdXNpbmcgdGhlIGZpbHRlcmVkIGNvbnRhaW5lcgogICAgICAqIEluY2x1ZGUgYW4gaW5kaWNhdG9yIG9mIGFueSBzY2FsaW5nIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHNlbnNvciB2YWx1ZQogICAgICAqLwotICAgIHJlZy0+bXlfcmVnX3ZvaWQgPSAodm9pZCAqKW11bHQ7CisgICAgcmVnLT5teV9yZWdfdm9pZCA9ICh2b2lkICopKHVpbnRwdHJfdCltdWx0OwogICAgIHRhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKCBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICk7CiAgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGFibGVfaW5mbywgQVNOX0lOVEVHRVIsIDApOwogICAgIHRhYmxlX2luZm8tPm1pbl9jb2x1bW4gPSBDT0xVTU5fTE1TRU5TT1JTX0lOREVYOwpAQCAtMTU0LDcgKzE1NCw3IEBACiAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gICAgICAgKnJlcXVlc3Q7CiAgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRhYmxlX2luZm87CiAgICAgbmV0c25tcF9zZW5zb3JfaW5mbyAgICAgICAgKnNlbnNvcl9pbmZvOwotICAgIGludCBtdWx0ICA9IChpbnQpcmVnaW5mby0+bXlfcmVnX3ZvaWQ7CisgICAgaW50IG11bHQgID0gKHVpbnRwdHJfdClyZWdpbmZvLT5teV9yZWdfdm9pZDsKIAogICAgIERFQlVHTVNHVEwoKCAidWNkLXNubXAvbG1zZW5zb3JzTWliIiwibG1TZW5zb3JzVGFibGVzX2hhbmRsZXIgLSByb290OiAiKSk7CiAgICAgREVCVUdNU0dPSUQoKCJ1Y2Qtc25tcC9sbXNlbnNvcnNNaWIiLCByZWdpbmZvLT5yb290b2lkLCByZWdpbmZvLT5yb290b2lkX2xlbikpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5jCmluZGV4IDZlZmM1ZTkuLjMxNzgzMzAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2FkYXZlLmMKQEAgLTI1OCwxMiArMjU4LDYgQEAKIGludAogdHJ5X2dldGxvYWRhdmcoZG91YmxlICpyX2F2ZSwgc2l6ZV90IHNfYXZlKQogewotI2lmIGRlZmluZWQoSEFWRV9HRVRMT0FEQVZHKSB8fCBkZWZpbmVkKGxpbnV4KSB8fCBkZWZpbmVkKHVsdHJpeCkgXAotICAgIHx8IGRlZmluZWQoc3VuKSB8fCBkZWZpbmVkKF9fYWxwaGEpIHx8IGRlZmluZWQoZHluaXgpIFwKLSAgICB8fCAhZGVmaW5lZChjeWd3aW4pICYmIGRlZmluZWQoTkVUU05NUF9DQU5fVVNFX05MSVNUKSBcCi0gICAgICAgJiYgZGVmaW5lZChMT0FEQVZFX1NZTUJPTCkKLSAgICBkb3VibGUgICAgICAgICAqcGF2ZSA9IHJfYXZlOwotI2VuZGlmCiAjaWZuZGVmIEhBVkVfR0VUTE9BREFWRwogI2lmZGVmIEhBVkVfU1lTX0ZJWFBPSU5UX0gKICAgICBmaXggICAgICAgICAgICAgZmF2ZW5ydW5bM107CkBAIC0yNzgsNyArMjcyLDYgQEAKICNlbmRpZgogI2VuZGlmCiAjaWYgZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikgfHwgZGVmaW5lZChhaXg3KQotICAgIGludCAgICAgICAgICAgICBmYXZlbnJ1blszXTsKICAgICBwZXJmc3RhdF9jcHVfdG90YWxfdCBjczsKICNlbmRpZgogI2lmIGRlZmluZWQoaHB1eDEwKSB8fCBkZWZpbmVkKGhwdXgxMSkKQEAgLTI5MSw3ICsyODQsNyBAQAogI2VuZGlmCS8qICFIQVZFX0dFVExPQURBVkcgKi8KIAogI2lmZGVmIEhBVkVfR0VUTE9BREFWRwotICAgIGlmIChnZXRsb2FkYXZnKHBhdmUsIHNfYXZlKSA9PSAtMSkKKyAgICBpZiAoZ2V0bG9hZGF2ZyhyX2F2ZSwgc19hdmUpID09IC0xKQogICAgICAgICByZXR1cm4gKC0xKTsKICNlbGlmIGRlZmluZWQobGludXgpCiAgICAgewpAQCAtMzAwLDcgKzI5Myw3IEBACiAgICAgICAgICAgICBORVRTTk1QX0xPR09OQ0UoKExPR19FUlIsICJzbm1wZDogY2Fubm90IG9wZW4gL3Byb2MvbG9hZGF2Z1xuIikpOwogICAgICAgICAgICAgcmV0dXJuICgtMSk7CiAgICAgICAgIH0KLSAgICAgICAgZnNjYW5mKGluLCAiJWxmICVsZiAlbGYiLCBwYXZlLCAocGF2ZSArIDEpLCAocGF2ZSArIDIpKTsKKyAgICAgICAgZnNjYW5mKGluLCAiJWxmICVsZiAlbGYiLCByX2F2ZSwgKHJfYXZlICsgMSksIChyX2F2ZSArIDIpKTsKICAgICAgICAgZmNsb3NlKGluKTsKICAgICB9CiAjZWxpZiAoZGVmaW5lZCh1bHRyaXgpIHx8IGRlZmluZWQoc3VuKSB8fCBkZWZpbmVkKF9fYWxwaGEpIHx8IGRlZmluZWQoZHluaXgpKQpAQCAtMzA4LDcgKzMwMSw3IEBACiAgICAgICAgIDApCiAgICAgICAgIHJldHVybiAoLTEpOwogICAgIGZvciAoaSA9IDA7IGkgPCBzX2F2ZTsgaSsrKQotICAgICAgICAqKHBhdmUgKyBpKSA9IEZJWF9UT19EQkwoZmF2ZW5ydW5baV0pOworICAgICAgICAqKHJfYXZlICsgaSkgPSBGSVhfVE9fREJMKGZhdmVucnVuW2ldKTsKICNlbGlmIGRlZmluZWQoaHB1eDEwKSB8fCBkZWZpbmVkKGhwdXgxMSkKICAgICBpZiAocHN0YXRfZ2V0ZHluYW1pYygmcHN0X2J1Ziwgc2l6ZW9mKHN0cnVjdCBwc3RfZHluYW1pYyksIDEsIDApIDwgMCkKICAgICAgICAgcmV0dXJuKC0xKTsKQEAgLTMzMCw3ICszMjMsNyBAQAogICAgIERFQlVHTVNHVEwoKCJ1Y2Qtc25tcC9sb2FkYXZlIiwgImlyaXg2OiAlZCAlZCAlZFxuIiwgZmF2ZW5ydW5bMF0sIGZhdmVucnVuWzFdLCBmYXZlbnJ1blsyXSkpOwogI2VsaWYgIWRlZmluZWQoY3lnd2luKQogI2lmIGRlZmluZWQoTkVUU05NUF9DQU5fVVNFX05MSVNUKSAmJiBkZWZpbmVkKExPQURBVkVfU1lNQk9MKQotICAgIGlmIChhdXRvX25saXN0KExPQURBVkVfU1lNQk9MLCAoY2hhciAqKSBwYXZlLCBzaXplb2YoZG91YmxlKSAqIHNfYXZlKQorICAgIGlmIChhdXRvX25saXN0KExPQURBVkVfU1lNQk9MLCAoY2hhciAqKSByX2F2ZSwgc2l6ZW9mKGRvdWJsZSkgKiBzX2F2ZSkKICAgICAgICAgPT0gMCkKICNlbmRpZgogICAgICAgICByZXR1cm4gKC0xKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuYwppbmRleCA5OGVhY2JiLi44ZDYwMmMxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpZiBIQVZFX1NURExJQl9ICiAjaW5jbHVkZSA8c3RkbGliLmg+CkBAIC0zNiw2ICszNyw5IEBACiAjaW5jbHVkZSAiZXh0ZW5zaWJsZS5oIgogI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZ2V0X2V4dGVuX2luc3RhbmNlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocGFyc2VfbWlib2lkKQorCiBzdHJ1Y3QgZXh0ZW5zaWJsZSAqcGFzc3RocnVzID0gTlVMTDsKIGludCAgICAgICAgICAgICBudW1wYXNzdGhydXMgPSAwOwogCkBAIC0xMTMsNiArMTE3LDcgQEAKICAgICBpZiAoKnBwYXNzID09IE5VTEwpCiAgICAgICAgIHJldHVybjsKICAgICAoKnBwYXNzKS0+dHlwZSA9IFBBU1NUSFJVOworICAgICgqcHBhc3MpLT5taWJwcmlvcml0eSA9IHByaW9yaXR5OwogCiAgICAgKCpwcGFzcyktPm1pYmxlbiA9IHBhcnNlX21pYm9pZChjcHRyLCAoKnBwYXNzKS0+bWlib2lkKTsKICAgICB3aGlsZSAoaXNkaWdpdCgodW5zaWduZWQgY2hhcikoKmNwdHIpKSB8fCAqY3B0ciA9PSAnLicpCkBAIC0xMzIsOSArMTM3LDEwIEBACiAgICAgc3RybGNweSgoKnBwYXNzKS0+bmFtZSwgKCpwcGFzcyktPmNvbW1hbmQsIHNpemVvZigoKnBwYXNzKS0+bmFtZSkpOwogICAgICgqcHBhc3MpLT5uZXh0ID0gTlVMTDsKIAotICAgIHJlZ2lzdGVyX21pYl9wcmlvcml0eSgicGFzcyIsIChzdHJ1Y3QgdmFyaWFibGUgKikgZXh0ZW5zaWJsZV9wYXNzdGhydV92YXJpYWJsZXMsCi0JCQkgIHNpemVvZihzdHJ1Y3QgdmFyaWFibGUyKSwKLQkJCSAgMSwgKCpwcGFzcyktPm1pYm9pZCwgKCpwcGFzcyktPm1pYmxlbiwgcHJpb3JpdHkpOworICAgIHJlZ2lzdGVyX21pYl9wcmlvcml0eSgicGFzcyIsCisgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdmFyaWFibGUgKikgZXh0ZW5zaWJsZV9wYXNzdGhydV92YXJpYWJsZXMsCisgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgdmFyaWFibGUyKSwgMSwgKCpwcGFzcyktPm1pYm9pZCwKKyAgICAgICAgICAgICAgICAgKCpwcGFzcyktPm1pYmxlbiwgKCpwcGFzcyktPm1pYnByaW9yaXR5KTsKIAogICAgIC8qCiAgICAgICogYXJnZ2dnIC0tIHBhc3N0aHJ1cyBtdXN0IGJlIHNvcnRlZCAKQEAgLTE3MCw3ICsxNzYsNyBAQAogICAgIGZvciAoZXRtcCA9IHBhc3N0aHJ1czsgZXRtcCAhPSBOVUxMOykgewogICAgICAgICBldG1wMiA9IGV0bXA7CiAgICAgICAgIGV0bXAgPSBldG1wLT5uZXh0OwotICAgICAgICB1bnJlZ2lzdGVyX21pYihldG1wMi0+bWlib2lkLCBldG1wMi0+bWlibGVuKTsKKyAgICAgICAgdW5yZWdpc3Rlcl9taWJfcHJpb3JpdHkoZXRtcDItPm1pYm9pZCwgZXRtcDItPm1pYmxlbiwgZXRtcDItPm1pYnByaW9yaXR5KTsKICAgICAgICAgZnJlZShldG1wMik7CiAgICAgfQogICAgIHBhc3N0aHJ1cyA9IE5VTEw7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jCmluZGV4IGJkOWI2MDMuLjIyMTc2MWEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpZiBIQVZFX0lPX0gKICNpbmNsdWRlIDxpby5oPgpAQCAtNDEsMTIgKzQyLDE1IEBACiAjaW5jbHVkZSAiZXh0ZW5zaWJsZS5oIgogI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZ2V0X2V4dGVuX2luc3RhbmNlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocGFyc2VfbWlib2lkKQorCiBzdHJ1Y3QgZXh0ZW5zaWJsZSAqcGVyc2lzdHBhc3N0aHJ1cyA9IE5VTEw7CiBpbnQgICAgICAgICAgICAgbnVtcGVyc2lzdHBhc3N0aHJ1cyA9IDA7CiBzdHJ1Y3QgcGVyc2lzdF9waXBlX3R5cGUgewogICAgIEZJTEUgICAgICAgICAgICpmSW4sICpmT3V0OwogICAgIGludCAgICAgICAgICAgICBmZEluLCBmZE91dDsKLSAgICBpbnQgICAgICAgICAgICAgcGlkOworICAgIG5ldHNubXBfcGlkX3QgICBwaWQ7CiB9ICAgICAgICAgICAgICAqcGVyc2lzdF9waXBlcyA9IChzdHJ1Y3QgcGVyc2lzdF9waXBlX3R5cGUgKikgTlVMTDsKIHN0YXRpYyB1bnNpZ25lZCBwaXBlX2NoZWNrX2FsYXJtX2lkOwogc3RhdGljIGludCAgICAgIGluaXRfcGVyc2lzdF9waXBlcyh2b2lkKTsKQEAgLTE0Myw2ICsxNDcsNyBAQAogICAgIGlmICgqcHBhc3MgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuOwogICAgICgqcHBhc3MpLT50eXBlID0gUEFTU1RIUlVfUEVSU0lTVDsKKyAgICAoKnBwYXNzKS0+bWlicHJpb3JpdHkgPSBwcmlvcml0eTsKIAogICAgICgqcHBhc3MpLT5taWJsZW4gPSBwYXJzZV9taWJvaWQoY3B0ciwgKCpwcGFzcyktPm1pYm9pZCk7CiAgICAgd2hpbGUgKGlzZGlnaXQoKHVuc2lnbmVkIGNoYXIpKCpjcHRyKSkgfHwgKmNwdHIgPT0gJy4nKQpAQCAtMTY1LDcgKzE3MCw3IEBACiAgICAgcmVnaXN0ZXJfbWliX3ByaW9yaXR5KCJwYXNzX3BlcnNpc3QiLAogICAgICAgICAgICAgICAgICAoc3RydWN0IHZhcmlhYmxlICopIGV4dGVuc2libGVfcGVyc2lzdF9wYXNzdGhydV92YXJpYWJsZXMsCiAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgdmFyaWFibGUyKSwgMSwgKCpwcGFzcyktPm1pYm9pZCwKLSAgICAgICAgICAgICAgICAgKCpwcGFzcyktPm1pYmxlbiwgcHJpb3JpdHkpOworICAgICAgICAgICAgICAgICAoKnBwYXNzKS0+bWlibGVuLCAoKnBwYXNzKS0+bWlicHJpb3JpdHkpOwogCiAgICAgLyoKICAgICAgKiBhcmdnZ2cgLS0gcGFzdGhydXMgbXVzdCBiZSBzb3J0ZWQgCkBAIC0xOTYsMTMgKzIwMSwxOSBAQAogcGFzc19wZXJzaXN0X2ZyZWVfY29uZmlnKHZvaWQpCiB7CiAgICAgc3RydWN0IGV4dGVuc2libGUgKmV0bXAsICpldG1wMjsKKyAgICBpbnQgaTsKIAogICAgIGZvciAoZXRtcCA9IHBlcnNpc3RwYXNzdGhydXM7IGV0bXAgIT0gTlVMTDspIHsKICAgICAgICAgZXRtcDIgPSBldG1wOwogICAgICAgICBldG1wID0gZXRtcC0+bmV4dDsKLSAgICAgICAgdW5yZWdpc3Rlcl9taWIoZXRtcDItPm1pYm9pZCwgZXRtcDItPm1pYmxlbik7CisgICAgICAgIHVucmVnaXN0ZXJfbWliX3ByaW9yaXR5KGV0bXAyLT5taWJvaWQsIGV0bXAyLT5taWJsZW4sIGV0bXAyLT5taWJwcmlvcml0eSk7CiAgICAgICAgIGZyZWUoZXRtcDIpOwogICAgIH0KKyAgICBpZiAocGVyc2lzdF9waXBlcykgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IG51bXBlcnNpc3RwYXNzdGhydXM7IGkrKykgeworICAgICAgICAgICAgY2xvc2VfcGVyc2lzdF9waXBlKGkpOworICAgICAgICB9CisgICAgfQogICAgIHBlcnNpc3RwYXNzdGhydXMgPSBOVUxMOwogICAgIG51bXBlcnNpc3RwYXNzdGhydXMgPSAwOwogfQpAQCAtNDI2LDcgKzQzNyw3IEBACiAgICAgICAgIGZvciAoaSA9IDA7IGkgPD0gbnVtcGVyc2lzdHBhc3N0aHJ1czsgaSsrKSB7CiAgICAgICAgICAgICBwZXJzaXN0X3BpcGVzW2ldLmZJbiA9IHBlcnNpc3RfcGlwZXNbaV0uZk91dCA9IChGSUxFICopIDA7CiAgICAgICAgICAgICBwZXJzaXN0X3BpcGVzW2ldLmZkSW4gPSBwZXJzaXN0X3BpcGVzW2ldLmZkT3V0ID0gLTE7Ci0gICAgICAgICAgICBwZXJzaXN0X3BpcGVzW2ldLnBpZCA9IC0xOworICAgICAgICAgICAgcGVyc2lzdF9waXBlc1tpXS5waWQgPSBORVRTTk1QX05PX1NVQ0hfUFJPQ0VTUzsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcGVyc2lzdF9waXBlcyA/IDEgOiAwOwpAQCAtNDQwLDcgKzQ1MSw3IEBACiAgKi8KIHN0YXRpYyBpbnQgcHJvY2Vzc19zdG9wcGVkKGludCBpZHgpCiB7Ci0gICAgaWYgKHBlcnNpc3RfcGlwZXNbaWR4XS5waWQgIT0gLTEpIHsKKyAgICBpZiAocGVyc2lzdF9waXBlc1tpZHhdLnBpZCAhPSBORVRTTk1QX05PX1NVQ0hfUFJPQ0VTUykgewogI2lmIEhBVkVfU1lTX1dBSVRfSAogICAgICAgICByZXR1cm4gd2FpdHBpZChwZXJzaXN0X3BpcGVzW2lkeF0ucGlkLCBOVUxMLCBXTk9IQU5HKSA+IDA7CiAjZW5kaWYKQEAgLTUwNywxNCArNTE4LDE1IEBACiAgICAgLyoKICAgICAgKiBPcGVuIGlmIGl0J3Mgbm90IGFscmVhZHkgb3BlbiAKICAgICAgKi8KLSAgICBpZiAocGVyc2lzdF9waXBlc1tpaW5kZXhdLnBpZCA9PSAtMSkgewotICAgICAgICBpbnQgICAgICAgICAgICAgZmRJbiwgZmRPdXQsIHBpZDsKKyAgICBpZiAocGVyc2lzdF9waXBlc1tpaW5kZXhdLnBpZCA9PSBORVRTTk1QX05PX1NVQ0hfUFJPQ0VTUykgeworICAgICAgICBpbnQgICAgICAgICAgICAgZmRJbiwgZmRPdXQ7CisgICAgICAgIG5ldHNubXBfcGlkX3QgICBwaWQ7CiAKICAgICAgICAgLyoKICAgICAgICAgICogRGlkIHdlIGZhaWw/IAogICAgICAgICAgKi8KICAgICAgICAgaWYgKCgwID09IGdldF9leGVjX3BpcGVzKGNvbW1hbmQsICZmZEluLCAmZmRPdXQsICZwaWQpKSB8fAotICAgICAgICAgICAgKHBpZCA9PSAtMSkpIHsKKyAgICAgICAgICAgIChwaWQgPT0gTkVUU05NUF9OT19TVUNIX1BST0NFU1MpKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgidWNkLXNubXAvcGFzc19wZXJzaXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICJvcGVuX3BlcnNpc3RfcGlwZTogcGlkID09IC0xXG4iKSk7CiAgICAgICAgICAgICByZWN1cnNlID0gMDsKQEAgLTU5MSw3ICs2MDMsNyBAQAogICAgIC8qCiAgICAgICogRG9uJ3Qgd3JpdGUgdG8gYSBub24tZXhpc3RhbnQgcHJvY2VzcyAKICAgICAgKi8KLSAgICBpZiAocGVyc2lzdF9waXBlc1tpaW5kZXhdLnBpZCA9PSAtMSkgeworICAgIGlmIChwZXJzaXN0X3BpcGVzW2lpbmRleF0ucGlkID09IE5FVFNOTVBfTk9fU1VDSF9QUk9DRVNTKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJ1Y2Qtc25tcC9wYXNzX3BlcnNpc3QiLAogICAgICAgICAgICAgICAgICAgICAid3JpdGVfcGVyc2lzdF9waXBlOiBub3Qgd3JpdGluZyAlcywgcHJvY2VzcyBpcyBub24tZXhpc3RlbnQiLAogICAgICAgICAgICAgICAgICAgICBkYXRhKSk7CkBAIC03MDksMTYgKzcyMSwyMSBAQAogCXVubGluayhmaWZvX291dF9wYXRoKTsKICNlbmRpZgogCi0gICAgaWYgKHBlcnNpc3RfcGlwZXNbaWluZGV4XS5waWQgIT0gLTEpIHsKKyAgICBpZiAocGVyc2lzdF9waXBlc1tpaW5kZXhdLnBpZCAhPSBORVRTTk1QX05PX1NVQ0hfUFJPQ0VTUykgeworICAgICAgICAvKgorICAgICAgICAgKiBraWxsIHRoZSBjaGlsZCwgaW4gY2FzZSB3ZSBnb3QgYW4gZXJyb3IgYW5kIHRoZSBjaGlsZCBpcyBub3QKKyAgICAgICAgICogY29vcGVyYXRpbmcuICBJZ25vcmUgdGhlIHJldHVybiBjb2RlLgorICAgICAgICAgKi8KKyAgICAgICAgKHZvaWQpa2lsbChwZXJzaXN0X3BpcGVzW2lpbmRleF0ucGlkLCBTSUdLSUxMKTsKICNpZiBIQVZFX1NZU19XQUlUX0gKICAgICAgICAgd2FpdHBpZChwZXJzaXN0X3BpcGVzW2lpbmRleF0ucGlkLCBOVUxMLCAwKTsKICNlbmRpZgogI2lmIGRlZmluZWQoV0lOMzIpICYmICFkZWZpbmVkIChtaW5ndzMyKSAmJiAhZGVmaW5lZCAoSEFWRV9TSUdOQUwpCi0gICAgICAgIGlmICghQ2xvc2VIYW5kbGUoKEhBTkRMRSlwZXJzaXN0X3BpcGVzW2lpbmRleF0ucGlkKSkgeworICAgICAgICBpZiAoIUNsb3NlSGFuZGxlKHBlcnNpc3RfcGlwZXNbaWluZGV4XS5waWQpKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgidWNkLXNubXAvcGFzc19wZXJzaXN0IiwiY2xvc2VfcGVyc2lzdF9waXBlIHBpZDogY2xvc2UgZXJyb3JcbiIpKTsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIHBlcnNpc3RfcGlwZXNbaWluZGV4XS5waWQgPSAtMTsKKyAgICAgICAgcGVyc2lzdF9waXBlc1tpaW5kZXhdLnBpZCA9IE5FVFNOTVBfTk9fU1VDSF9QUk9DRVNTOwogICAgIH0KIAogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jCmluZGV4IDcwMGFjZjIuLmU5MGMyZTggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm9jLmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2lmZGVmIHNvbGFyaXMyCiAjZGVmaW5lIF9LTUVNVVNFUiAgICAgICAgICAgICAgIC8qIE5lZWRlZCBieSA8c3lzL3VzZXIuaD4gKi8KQEAgLTM1OSw2ICszNjAsNyBAQAogfQogCiAjaWZkZWYgVVNJTkdfSE9TVF9EQVRBX0FDQ0VTU19TV1JVTl9NT0RVTEUKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHN3cnVuX2NvdW50X3Byb2Nlc3Nlc19ieV9uYW1lKQogaW50CiBzaF9jb3VudF9wcm9jcyhjaGFyICpwcm9jbmFtZSkKIHsKQEAgLTgxMiw2ICs4MTQsNyBAQAogfQogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfU0xBU0hfUFJPQ19NRVRIT0RfICovCiAjZWxzZQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZmluZF9maWVsZCkKIGludAogc2hfY291bnRfcHJvY3MoY2hhciAqcHJvY25hbWUpCiB7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYwppbmRleCA5YTBlMzU2Li4wMTdmZDVjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmMKQEAgLTksNiArOSw3IEBACiAgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2lmIEhBVkVfU1RSSU5HX0gKQEAgLTIzLDYgKzI0LDkgQEAKIAogI2luY2x1ZGUgInByb3h5LmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGhhbmRsZXJfbWFya19yZXF1ZXN0c19hc19kZWxlZ2F0ZWQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyZXF1ZXN0X3NldF9lcnJvcl9pZHgpCisKIHN0YXRpYyBzdHJ1Y3Qgc2ltcGxlX3Byb3h5ICpwcm94aWVzID0gTlVMTDsKIAogb2lkICAgICAgICAgICAgIHRlc3RvaWRbXSA9IHsgMSwgMywgNiwgMSwgNCwgMSwgMjAyMSwgODg4OCwgMSB9OwpAQCAtMzU2LDYgKzM2MCw3IEBACiAgICAgICAgIHBkdSA9IHNubXBfcGR1X2NyZWF0ZShyZXFpbmZvLT5tb2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CiAgICAgICAgIHBkdSA9IHNubXBfcGR1X2NyZWF0ZShTTk1QX01TR19TRVQpOwogICAgICAgICBicmVhazsKQEAgLTM4Myw2ICszODgsNyBAQAogICAgICAgICAgKiAgTm90aGluZyB0byBkbyBpbiB0aGlzIHBhc3MKICAgICAgICAgICovCiAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAidW5zdXBwb3J0ZWQgbW9kZSBmb3IgcHJveHkgY2FsbGVkICglZClcbiIsCkBAIC00MDMsNyArNDA5LDMzIEBACiAgICAgICAgIG91cm5hbWUgPSByZXF1ZXN0LT5yZXF1ZXN0dmItPm5hbWU7CiAgICAgICAgIG91cmxlbmd0aCA9IHJlcXVlc3QtPnJlcXVlc3R2Yi0+bmFtZV9sZW5ndGg7CiAKLSAgICAgICAgaWYgKHNwLT5iYXNlX2xlbiA+IDApIHsKKyAgICAgICAgaWYgKHNwLT5iYXNlX2xlbiAmJgorICAgICAgICAgICAgcmVxaW5mby0+bW9kZSA9PSBNT0RFX0dFVE5FWFQgJiYKKyAgICAgICAgICAgIChzbm1wX29pZF9jb21wYXJlKG91cm5hbWUsIG91cmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwLT5iYXNlLCBzcC0+YmFzZV9sZW4pIDwgMCkpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCAicHJveHkiLCAicmVxdWVzdCBpcyBvdXQgb2YgcmVnaXN0ZXJlZCByYW5nZVxuIikpOworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIENyZWF0ZSBHRVRORVhUIHJlcXVlc3Qgd2l0aCBhbiBPSUQgc28gdGhlCisgICAgICAgICAgICAgKiBtYXN0ZXIgcmV0dXJucyB0aGUgZmlyc3QgT0lEIGluIHRoZSByZWdpc3RlcmVkIHJhbmdlLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBtZW1jcHkob3VybmFtZSwgc3AtPmJhc2UsIHNwLT5iYXNlX2xlbiAqIHNpemVvZihvaWQpKTsKKyAgICAgICAgICAgIG91cmxlbmd0aCA9IHNwLT5iYXNlX2xlbjsKKyAgICAgICAgICAgIGlmIChvdXJuYW1lW291cmxlbmd0aC0xXSA8PSAxKSB7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBUaGUgcmVnaXN0ZXJlZCByYW5nZSBlbmRzIHdpdGggeC55LnouMQorICAgICAgICAgICAgICAgICAqIC0+IGFzayBmb3IgdGhlIG5leHQgb2YgeC55LnoKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBvdXJsZW5ndGgtLTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBUaGUgcmVnaXN0ZXJlZCByYW5nZSBlbmRzIHdpdGggeC55LnouQQorICAgICAgICAgICAgICAgICAqIC0+IGFzayBmb3IgdGhlIG5leHQgb2YgeC55LnouQS0xLk1BWF9TVUJJRAorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIG91cm5hbWVbb3VybGVuZ3RoLTFdLS07CisgICAgICAgICAgICAgICAgb3VybmFtZVtvdXJsZW5ndGhdID0gTUFYX1NVQklEOworICAgICAgICAgICAgICAgIG91cmxlbmd0aCsrOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHNwLT5iYXNlX2xlbiA+IDApIHsKICAgICAgICAgICAgIGlmICgob3VybGVuZ3RoIC0gc3AtPm5hbWVfbGVuICsgc3AtPmJhc2VfbGVuKSA+IE1BWF9PSURfTEVOKSB7CiAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgKiB0b28gbGFyZ2UgCkBAIC01MjksNiArNTYxLDcgQEAKICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfbWFya19yZXF1ZXN0c19hc19kZWxlZ2F0ZWQocmVxdWVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFUVVFU1RfSVNfTk9UX0RFTEVHQVRFRCk7CiAgICAgICAgICAgICB9CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogCSAgICBlbHNlIGlmIChjYWNoZS0+cmVxaW5mby0+bW9kZSA9PSBNT0RFX1NFVF9BQ1RJT04pIHsKIAkJLyoKIAkJICogSW4gb3JkZXIgZm9yIG5ldHNubXBfd3JhcF91cF9yZXF1ZXN0IHRvIGNvbnNpZGVyIHRoZQpAQCAtNTQ1LDYgKzU3OCw3IEBACiAJCW5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3JfaWR4KHJlcXVlc3RzLCBwZHUtPmVycnN0YXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdS0+ZXJyaW5kZXgpOwogCSAgICB9CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAgICAgZWxzZSB7CiAJCW5ldHNubXBfaGFuZGxlcl9tYXJrX3JlcXVlc3RzX2FzX2RlbGVnYXRlZCggcmVxdWVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVFVRVNUX0lTX05PVF9ERUxFR0FURUQpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmMKaW5kZXggZjQyOTMyYS4uZjdhOGM2MyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpZiBUSU1FX1dJVEhfU1lTX1RJTUUKQEAgLTIzLDcgKzI0LDEyIEBACiAKICNpbmNsdWRlICJzdHJ1Y3QuaCIKICNpbmNsdWRlICJ2ZXJzaW9uaW5mby5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9yZXN0YXJ0LmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy5oIiAvKiBjbGVhcl9jYWNoZSAqLworCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjbGVhcl9jYWNoZSkKKwogCiB2b2lkCiBpbml0X3ZlcnNpb25pbmZvKHZvaWQpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uaAppbmRleCBkOTkxMTQ3Li4wMDc0MjRlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmgKQEAgLTI4LDUgKzI4LDggQEAKICNkZWZpbmUgVkVSU0FWRVBFUlNJU1RFTlQgMTMKICNkZWZpbmUgVkVSREVCVUdHSU5HIDIwCiAKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL3Jlc3RhcnQpCiBjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9NSUJHUk9VUF9WRVJTSU9OSU5GT19IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5jCmluZGV4IGVhZGJmNWEuLmQ1MmE1YjYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5jCkBAIC0yMCw3ICsyMCw3IEBACiAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJ2bXN0YXQiLCB2bXN0YXRfaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm1zdGF0X29pZCwgT0lEX0xFTkdUSCh2bXN0YXRfb2lkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpLAotICAgICAgICBNSUJJTkRFWCwgUkFXU1dBUE9VVCk7CisgICAgICAgIE1JQklOREVYLCBDUFVSQVdHVUVTVE5JQ0UpOwogfQogCiAKQEAgLTM4LDYgKzM4LDcgQEAKICAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKICAgICBjYXNlIE1PREVfR0VUOgogICAgICAgICBvYmogPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lWyByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lX2xlbmd0aC0yIF07CisKICAgICAgICAgc3dpdGNoIChvYmopIHsKICAgICAgICAgY2FzZSBNSUJJTkRFWDogICAgICAgICAgICAgLyogZHVtbXkgdmFsdWUgKi8KICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihyZXF1ZXN0cy0+cmVxdWVzdHZiLCBBU05fSU5URUdFUiwgMSk7CkBAIC0xMTIsNiArMTEzLDE4IEBACiAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIocmVxdWVzdHMtPnJlcXVlc3R2YiwgQVNOX0NPVU5URVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+c2lycV90aWNrcyAmIDB4ZmZmZmZmZmYpOwogICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENQVVJBV1NURUFMOgorICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF9pbnRlZ2VyKHJlcXVlc3RzLT5yZXF1ZXN0dmIsIEFTTl9DT1VOVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8tPnN0ZWFsX3RpY2tzICYgMHhmZmZmZmZmZik7CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1BVUkFXR1VFU1Q6CisgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIocmVxdWVzdHMtPnJlcXVlc3R2YiwgQVNOX0NPVU5URVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+Z3Vlc3RfdGlja3MgJiAweGZmZmZmZmZmKTsKKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDUFVSQVdHVUVTVE5JQ0U6CisgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIocmVxdWVzdHMtPnJlcXVlc3R2YiwgQVNOX0NPVU5URVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+Z3Vlc3RuaWNlX3RpY2tzICYgMHhmZmZmZmZmZik7CisgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgLyoKICAgICAgICAgICogICdDb29rZWQnIENQVSBzdGF0aXN0aWNzCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuaCBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5oCmluZGV4IGI4ZDUyMDIuLmVlZGI1YjQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5oCkBAIC0zNiw1ICszNiw4IEBACiAjZGVmaW5lIENQVVJBV1NPRlRJUlEgNjEKICNkZWZpbmUgUkFXU1dBUElOIDYyCiAjZGVmaW5lIFJBV1NXQVBPVVQgNjMKKyNkZWZpbmUgQ1BVUkFXU1RFQUwgNjQKKyNkZWZpbmUgQ1BVUkFXR1VFU1QgNjUKKyNkZWZpbmUgQ1BVUkFXR1VFU1ROSUNFIDY2CiAKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX01JQkdST1VQX1ZNU1RBVF9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbGludXguYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jCmluZGV4IDc1MzhhMTQuLmQ2ZWZmNTAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpZiBIQVZFX0xJTUlUU19ICiAjaW5jbHVkZSA8bGltaXRzLmg+CkBAIC0xMTEsNiArMTEyLDkgQEAKICNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAjaW5jbHVkZSAidm1zdGF0LmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGhhcmR3YXJlX2NwdV9sb2FkKQorCisKIEZpbmRWYXJNZXRob2QgdmFyX2V4dGVuc2libGVfdm1zdGF0OwogCiBzdGF0aWMgaW50IGhhc192bXN0YXQgPSAxOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnQuaCBiL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50LmgKaW5kZXggMWVkYjZkNi4uZDlkZWMxZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnQuaAorKysgYi9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludC5oCkBAIC0yMyw3ICsyMyw3IEBACiBjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZSkKICNlbGlmIGRlZmluZWQoIHNvbGFyaXMyICkKIGNvbmZpZ19yZXF1aXJlKHVkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X3NvbGFyaXMyKQotI2VsaWYgZGVmaW5lZChmcmVlYnNkNCkgfHwgZGVmaW5lZChkcmFnb25mbHkpCisjZWxpZiBkZWZpbmVkKGZyZWVic2Q0KSB8fCBkZWZpbmVkKGRyYWdvbmZseSkgfHwgZGVmaW5lZChkYXJ3aW4pCiBjb25maWdfcmVxdWlyZSh1ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9mcmVlYnNkNCkKICNlbGlmIGRlZmluZWQob3BlbmJzZDQpCiBjb25maWdfcmVxdWlyZSh1ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9vcGVuYnNkKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfY29tbW9uLmMgYi9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9jb21tb24uYwppbmRleCBiY2IwMDJlLi42M2Y4NTQ5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9jb21tb24uYworKysgYi9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9jb21tb24uYwpAQCAtNCw2ICs0LDcgQEAKICAqICRJZCQKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJ1ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9jb25zdGFudHMuaCIKIApAQCAtMTMsNiArMTQsMTAgQEAKIAogI2luY2x1ZGUgInVkcF9lbmRwb2ludF9wcml2YXRlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1ZHBfZW5kcG9pbnRfY29tbW9uLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVkcF9lbmRwb2ludF9lbnRyeV9jcmVhdGUsIHVkcF9lbmRwb2ludF9jb21tb24pCisKIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKgogICogbG9jYWwgc3RhdGljIHZhcnMKQEAgLTI0LDExICsyOSw2IEBACiAgKiBpbml0aWFsaXphdGlvbgogICovCiAKLXZvaWQKLW5ldHNubXBfYWNjZXNzX3VkcF9lbmRwb2ludF9pbml0KHZvaWQpCi17Ci19Ci0KIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKgogICogY29udGFpbmVyIGZ1bmN0aW9ucwpAQCAtMTIwLDYgKzEyMCw3IEBACiAgKi8KIC8qKgogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVURQX0VORFBPSU5UX0VOVFJZX0NSRUFURQogbmV0c25tcF91ZHBfZW5kcG9pbnRfZW50cnkgKgogbmV0c25tcF9hY2Nlc3NfdWRwX2VuZHBvaW50X2VudHJ5X2NyZWF0ZSh2b2lkKQogewpAQCAtMTM2LDYgKzEzNyw3IEBACiAKICAgICByZXR1cm4gZW50cnk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VRFBfRU5EUE9JTlRfRU5UUllfQ1JFQVRFICovCiAKIC8qKgogICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbGludXguYwppbmRleCA0M2IzMjMwLi42ZWRiZGMxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2xpbnV4LmMKQEAgLTQsNiArNCw3IEBACiAgKiAkSWQkCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgpAQCAtMTksNiArMjAsMTAgQEAKIAogI2luY2x1ZGUgPGZjbnRsLmg+CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRleHRfdXRpbHMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodWRwX2VuZHBvaW50X2FsbCwgbGlibmV0c25tcG1pYnMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodWRwX2VuZHBvaW50X3dyaXRhYmxlLCB1ZHBfZW5kcG9pbnRfYWxsKQorCiBzdGF0aWMgaW50IF9sb2FkNChuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBmbGFncyk7CiAjaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKIHN0YXRpYyBpbnQgX2xvYWQ2KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIHVfaW50IGZsYWdzKTsKQEAgLTMwLDYgKzM1LDcgQEAKICAqIEByZXR2YWwgIDA6IHN1Y2Nlc3MKICAqIEByZXR2YWwgPDA6IGVycm9yCiAgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VRFBfRU5EUE9JTlRfV1JJVEFCTEUKIGludAogbmV0c25tcF9hcmNoX3VkcF9lbmRwb2ludF9lbnRyeV9pbml0KG5ldHNubXBfdWRwX2VuZHBvaW50X2VudHJ5ICplbnRyeSkKIHsKQEAgLTcxLDYgKzc3LDcgQEAKICAgICAvKiogeHh4LXJrczo5IHVkcF9lbmRwb2ludCBkZWxldGUgbm90IGltcGxlbWVudGVkICovCiAgICAgcmV0dXJuIC0xOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVURQX0VORFBPSU5UX1dSSVRBQkxFICovCiAKIAogLyoqCkBAIC04NCw2ICs5MSw5IEBACiB7CiAgICAgaW50IHJjID0gMDsKIAorICAgIC8qIFNldHVwIHRoZSBwaWRfZnJvbV9pbm9kZSB0YWJsZSwgYW5kIGZpbGwgaXQuKi8KKyAgICBuZXRzbm1wX2dldF9waWRfZnJvbV9pbm9kZV9pbml0KCk7CisKICAgICByYyA9IF9sb2FkNChjb250YWluZXIsIGxvYWRfZmxhZ3MpOwogICAgIGlmKHJjIDwgMCkgewogICAgICAgICB1X2ludCBmbGFncyA9IE5FVFNOTVBfQUNDRVNTX1VEUF9FTkRQT0lOVF9GUkVFX0tFRVBfQ09OVEFJTkVSOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfc29sYXJpczIuYyBiL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X3NvbGFyaXMyLmMKaW5kZXggZjRiNjlkZi4uZjUyMjQ0YSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfc29sYXJpczIuYworKysgYi9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9zb2xhcmlzMi5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CkBAIC0xMCwxMSArMTEsMTYgQEAKIAogI2luY2x1ZGUgImtlcm5lbF9zdW5vczUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUobmV0c25tcF9hY2Nlc3NfdWRwX2VuZHBvaW50X2VudHJ5X2NyZWF0ZSkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1ZHBfZW5kcG9pbnRfYWxsLCBsaWJuZXRzbm1wbWlicykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1ZHBfZW5kcG9pbnRfd3JpdGFibGUsIHVkcF9lbmRwb2ludF9hbGwpCisKIHN0YXRpYyBpbnQgX2xvYWRfdWRwX2VuZHBvaW50X3RhYmxlX3Y0KG5ldHNubXBfY29udGFpbmVyICosIGludCk7CiAjaWYgZGVmaW5lZChORVRTTk1QX0VOQUJMRV9JUFY2KSAmJiBkZWZpbmVkKFNPTEFSSVNfSEFWRV9JUFY2X01JQl9TVVBQT1JUKQogc3RhdGljIGludCBfbG9hZF91ZHBfZW5kcG9pbnRfdGFibGVfdjYobmV0c25tcF9jb250YWluZXIgKiwgaW50KTsKICNlbmRpZgogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVURQX0VORFBPSU5UX1dSSVRBQkxFCiBpbnQgCiBuZXRzbm1wX2FyY2hfdWRwX2VuZHBvaW50X2VudHJ5X2luaXQobmV0c25tcF91ZHBfZW5kcG9pbnRfZW50cnkgKmVwKQogewpAQCAtNDgsNiArNTQsNyBAQAogICAgICAqLwogICAgIHJldHVybiAoLTEpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVURQX0VORFBPSU5UX1dSSVRBQkxFICovCiAKIGludCAKIG5ldHNubXBfYXJjaF91ZHBfZW5kcG9pbnRfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIsIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuYwppbmRleCAxYjZkYzY3Li42MGQzN2U5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuYwpAQCAtMzAsNiArMzAsNyBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtNDYsNiArNDcsMTggQEAKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1ZHBFbmRwb2ludFRhYmxlX2V4dGVybmFsX2FjY2VzcywgbGlibmV0c25tcG1pYnMpCisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJvd19tZXJnZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGJhYnlfc3RlcHMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVkcEVuZHBvaW50VGFibGVfY29udGFpbmVyX3NpemUsIHVkcEVuZHBvaW50VGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVkcEVuZHBvaW50VGFibGVfcmVnaXN0cmF0aW9uX3NldCwgdWRwRW5kcG9pbnRUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodWRwRW5kcG9pbnRUYWJsZV9yZWdpc3RyYXRpb25fZ2V0LCB1ZHBFbmRwb2ludFRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1ZHBFbmRwb2ludFRhYmxlX2NvbnRhaW5lcl9nZXQsIHVkcEVuZHBvaW50VGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioKQEAgLTc5LDE5ICs5MiwyMyBAQAogICAgICAgICAgICAgICAgIF91ZHBFbmRwb2ludFRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bih1ZHBFbmRwb2ludFRhYmxlX2ludGVyZmFjZV9jdHggKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9jdHgpOwogCi0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VRFBFTkRQT0lOVFRBQkxFX0NPTlRBSU5FUl9HRVQKIG5ldHNubXBfY29udGFpbmVyICoKIHVkcEVuZHBvaW50VGFibGVfY29udGFpbmVyX2dldCh2b2lkKQogewogICAgIHJldHVybiB1ZHBFbmRwb2ludFRhYmxlX2lmX2N0eC5jb250YWluZXI7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VRFBFTkRQT0lOVFRBQkxFX0NPTlRBSU5FUl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VEUEVORFBPSU5UVEFCTEVfUkVHSVNUUkFUSU9OX0dFVAogdWRwRW5kcG9pbnRUYWJsZV9yZWdpc3RyYXRpb24gKgogdWRwRW5kcG9pbnRUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIHVkcEVuZHBvaW50VGFibGVfaWZfY3R4LnVzZXJfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVURQRU5EUE9JTlRUQUJMRV9SRUdJU1RSQVRJT05fR0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VRFBFTkRQT0lOVFRBQkxFX1JFR0lTVFJBVElPTl9TRVQKIHVkcEVuZHBvaW50VGFibGVfcmVnaXN0cmF0aW9uICoKIHVkcEVuZHBvaW50VGFibGVfcmVnaXN0cmF0aW9uX3NldCh1ZHBFbmRwb2ludFRhYmxlX3JlZ2lzdHJhdGlvbiAqIG5ld3JlZykKIHsKQEAgLTk5LDEyICsxMTYsMTUgQEAKICAgICB1ZHBFbmRwb2ludFRhYmxlX2lmX2N0eC51c2VyX2N0eCA9IG5ld3JlZzsKICAgICByZXR1cm4gb2xkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVURQRU5EUE9JTlRUQUJMRV9SRUdJU1RSQVRJT05fU0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VRFBFTkRQT0lOVFRBQkxFX0NPTlRBSU5FUl9TSVpFCiBpbnQKIHVkcEVuZHBvaW50VGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKIHsKICAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUodWRwRW5kcG9pbnRUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VEUEVORFBPSU5UVEFCTEVfQ09OVEFJTkVSX1NJWkUgKi8KIAogLyoKICAqIG1mZCBtdWx0aXBsZXhlciBtb2RlcwpAQCAtMjI4LDcgKzI0OCw4IEBACiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCisgICAgLyogWFhYIC0gYXJlIHRoZXNlIGFjdHVhbGx5IG5lY2Vzc2FyeT8gKi8KICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCkKQEAgLTI1MSw3ICsyNzIsNyBAQAogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NPTU1JVDsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOwpAQCAtMTA0Nyw2ICsxMDY4LDcgQEAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX3VkcEVuZHBvaW50VGFibGVfY29udGFpbmVyX3NodXRkb3duICovCiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VEUEVORFBPSU5UVEFCTEVfRVhURVJOQUxfQUNDRVNTCiB1ZHBFbmRwb2ludFRhYmxlX3Jvd3JlcV9jdHggKgogdWRwRW5kcG9pbnRUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgodWRwRW5kcG9pbnRUYWJsZV9taWJfaW5kZXggKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWliX2lkeCkKQEAgLTEwNzQsMyArMTA5Niw0IEBACiAKICAgICByZXR1cm4gcm93cmVxX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VEUEVORFBPSU5UVEFCTEVfRVhURVJOQUxfQUNDRVNTICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMgYi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMKaW5kZXggZmI3NjA4My4uNTQwNjhjNiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYwpAQCAtOSw2ICs5LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2lmIEhBVkVfSU9fSApAQCAtOTYsNiArOTcsMjQgQEAKICNkZWZpbmUgc2V0UGVycm9yc3RhdHVzKHgpIHNubXBfbG9nX3BlcnJvcih4KQogI2VuZGlmCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1dGlsX2Z1bmNzLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNoZWxsX2NvbW1hbmQsIHV0aWxfZnVuY3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoZ2V0X2V4dGVuX2luc3RhbmNlLCB1dGlsX2Z1bmNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNsZWFyX2NhY2hlLCB1dGlsX2Z1bmNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGZpbmRfZmllbGQsIHV0aWxfZnVuY3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocGFyc2VfbWlib2lkLCB1dGlsX2Z1bmNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHN0cmluZ19hcHBlbmRfaW50LCB1dGlsX2Z1bmNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGludGVybmFsX21pYl90YWJsZSwgdXRpbF9mdW5jcykKKworI2lmIGRlZmluZWQoSEFWRV9MSU5VWF9SVE5FVExJTktfSCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihwcmVmaXhfaW5mb19hbGwsIHV0aWxfZnVuY3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocHJlZml4X2luZm8sIHByZWZpeF9pbmZvX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1cGRhdGVfcHJlZml4X2luZm8sIHByZWZpeF9pbmZvX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihkZWxldGVfcHJlZml4X2luZm8sIHByZWZpeF9pbmZvX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihmaW5kX3ByZWZpeF9pbmZvLCBwcmVmaXhfaW5mb19hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY3JlYXRlX3ByZWZpeF9pbmZvLCBwcmVmaXhfaW5mb19hbGwpCisjZW5kaWYgLyogSEFWRV9MSU5VWF9SVE5FVExJTktfSCAqLwogCiAjaWZkZWYgTkVUU05NUF9FWENBQ0hFVElNRQogc3RhdGljIGxvbmcgICAgIGNhY2hldGltZTsKQEAgLTExMCw2ICsxMjksNyBAQAogICAgIHJldHVybiBuZXRzbm1wX21rdGVtcCgpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU0hFTExfQ09NTUFORAogaW50CiBzaGVsbF9jb21tYW5kKHN0cnVjdCBleHRlbnNpYmxlICpleCkKIHsKQEAgLTE0Myw2ICsxNjMsNyBAQAogI2VuZGlmCiAgICAgcmV0dXJuIChleC0+cmVzdWx0KTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NIRUxMX0NPTU1BTkQgKi8KIAogI2RlZmluZSBNQVhPVVRQVVQgMzAwCiAKQEAgLTE2OSw2ICsxOTAsNyBAQAogICAgIHJldHVybiAoZXgtPnJlc3VsdCk7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9HRVRfRVhURU5fSU5TVEFOQ0UKIHN0cnVjdCBleHRlbnNpYmxlICoKIGdldF9leHRlbl9pbnN0YW5jZShzdHJ1Y3QgZXh0ZW5zaWJsZSAqZXh0ZW4sIHNpemVfdCBpbnN0KQogewpAQCAtMTgwLDYgKzIwMiw3IEBACiAgICAgICAgIGV4dGVuID0gZXh0ZW4tPm5leHQ7CiAgICAgcmV0dXJuIChleHRlbik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9HRVRfRVhURU5fSU5TVEFOQ0UgKi8KIAogdm9pZAogd2FpdF9vbl9leGVjKHN0cnVjdCBleHRlbnNpYmxlICpleCkKQEAgLTE4OCw3ICsyMTEsNyBAQAogICBpbnQgcmM7CiAgIGlmIChleC0+dGlkICE9IDAgJiYgZXgtPnBpZCAhPSAwKSB7CiAgICAgSEFORExFIGhUaHJlYWQgPSBleC0+dGlkOwotICAgIEhBTkRMRSBoUHJvY2VzcyA9IChIQU5ETEUpIGV4LT5waWQ7CisgICAgSEFORExFIGhQcm9jZXNzID0gZXgtPnBpZDsKICAgICByYyA9IFdhaXRGb3JTaW5nbGVPYmplY3QoaFByb2Nlc3MsIE5FVFNOTVBfVElNRU9VVF9XQUlURk9SU0lOR0xFT0JKRUNUKTsKICAgICBERUJVR01TR1QoKCJleGVjOndhaXRfb25fZXhlYyIsIldhaXRGb3JTaW5nbGVPYmplY3QgcmM9KCVkKVxuIixyYyApKTsKICAgICByYyA9IENsb3NlSGFuZGxlKCBoVGhyZWFkICk7CkBAIC0zNDUsNyArMzY4LDcgQEAKICAgICB9CiAgICAgCiAgICAgLyogU2V0IGdsb2JhbCBjaGlsZCBwcm9jZXNzIGhhbmRsZSAqLwotICAgIGV4LT5waWQgPSAoaW50KXBpLmhQcm9jZXNzOworICAgIGV4LT5waWQgPSBwaS5oUHJvY2VzczsKICAgICBleC0+dGlkID0gcGkuaFRocmVhZDsKIAogICAgIC8qIENsb3NlIHBpcGUgaGFuZGxlcyB0byBtYWtlIHN1cmUgdGhhdCBubyBoYW5kbGVzIHRvIHRoZSB3cml0ZSBlbmQgb2YgdGhlCkBAIC0zNzEsNyArMzk0LDcgQEAKICAgICByZXR1cm4gLTE7CiB9CiBpbnQKLWdldF9leGVjX3BpcGVzKGNoYXIgKmNtZCwgaW50ICpmZEluLCBpbnQgKmZkT3V0LCBpbnQgKnBpZCkKK2dldF9leGVjX3BpcGVzKGNoYXIgKmNtZCwgaW50ICpmZEluLCBpbnQgKmZkT3V0LCBuZXRzbm1wX3BpZF90ICpwaWQpCiB7CiAvKiAJQWxleGFuZGVyIFByw7ZtZWwsIGFsZXhhbmRlckBwcm9lbWVsLmRlIDA4LzI0LzIwMDYKIAlUaGUgZm9sbG93aW5nIGNvZGUsIGlzIHRlc3RlZCBvbiBwaWNvdHV4IHJldi4gMS4wMS4KQEAgLTYwNCw3ICs2MjcsNyBAQAogICAgIERFQlVHTVNHVEwoKCJ1dGlsX2Z1bmNzIiwiY2hpbGQgZHdQcm9jZXNzSWQgKHRhc2sgbWFuYWdlcik6ICVkXG4iLChpbnQpcGkuZHdQcm9jZXNzSWQpKTsKIAogICAgIC8qIFNldCBnbG9iYWwgY2hpbGQgcHJvY2VzcyBoYW5kbGUgKi8KLSAgICAqcGlkID0gKGludClwaS5oUHJvY2VzczsKKyAgICAqcGlkID0gcGkuaFByb2Nlc3M7CiAKICAgICAvKiBDbGVhbnVwICovCiAgICAgaWYgKCFDbG9zZUhhbmRsZShwaS5oVGhyZWFkKSkKQEAgLTYzMyw2ICs2NTYsNyBAQAogICAgIHJldHVybiAwOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0xFQVJfQ0FDSEUKIGludAogY2xlYXJfY2FjaGUoaW50IGFjdGlvbiwKICAgICAgICAgICAgIHVfY2hhciAqIHZhcl92YWwsCkBAIC02NTUsNiArNjc5LDcgQEAKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DTEVBUl9DQUNIRSAqLwogCiB2b2lkCiBwcmludF9taWJfb2lkKG9pZCBuYW1lW10sIHNpemVfdCBsZW4pCkBAIC02OTUsNiArNzIwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlX21ldGhvZCwgbWF4KSk7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GSU5EX0ZJRUxECiBjaGFyICAgICAgICAgICAqCiBmaW5kX2ZpZWxkKGNoYXIgKnB0ciwgaW50IGZpZWxkKQogewpAQCAtNzM1LDcgKzc2MSw5IEBACiAgICAgfQogICAgIHJldHVybiAoTlVMTCk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GSU5EX0ZJRUxEICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9QQVJTRV9NSUJPSUQKIGludAogcGFyc2VfbWlib2lkKGNvbnN0IGNoYXIgKmJ1Ziwgb2lkICogb2lkb3V0KQogewpAQCAtNzU5LDcgKzc4Nyw5IEBACiAgICAgICovCiAgICAgcmV0dXJuIGk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9QQVJTRV9NSUJPSUQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUUklOR19BUFBFTkRfSU5UCiB2b2lkCiBzdHJpbmdfYXBwZW5kX2ludChjaGFyICpzLCBpbnQgdmFsKQogewpAQCAtNzc0LDEzICs4MDQsMTYgQEAKICAgICBzdHJjcHkocywgdGV4dFZhbCk7CiAgICAgcmV0dXJuOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RSSU5HX0FQUEVORF9JTlQgKi8KKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lOVEVSTkFMX01JQl9UQUJMRQogCiBzdHJ1Y3QgaW50ZXJuYWxfbWliX3RhYmxlIHsKICAgICBpbnQgICAgICAgICAgICAgbWF4X3NpemU7ICAgLyogU2l6ZSBvZiB0aGUgY3VycmVudCBkYXRhIHRhYmxlICovCiAgICAgaW50ICAgICAgICAgICAgIG5leHRfaW5kZXg7IC8qIEluZGV4IG9mIHRoZSBuZXh0IGZyZWUgZW50cnkgKi8KICAgICBpbnQgICAgICAgICAgICAgY3VycmVudF9pbmRleDsgICAgICAvKiBJbmRleCBvZiB0aGUgJ2N1cnJlbnQnIGVudHJ5ICovCiAgICAgaW50ICAgICAgICAgICAgIGNhY2hlX3RpbWVvdXQ7Ci0gICAgbWFya2VyX3QgICAgICAgIGNhY2hlX21hcmtlcjsKKyAgICBtYXJrZXJfdCAgICAgICAgY2FjaGVfbWFya2VyTTsKICAgICBSRUxPQUQgICAgICAgICAqcmVsb2FkOyAgICAgLyogUm91dGluZSB0byByZWFkIGluIHRoZSBkYXRhICovCiAgICAgQ09NUEFSRSAgICAgICAgKmNvbXBhcmU7ICAgIC8qIFJvdXRpbmUgdG8gY29tcGFyZSB0d28gZW50cmllcyAqLwogICAgIGludCAgICAgICAgICAgICBkYXRhX3NpemU7ICAvKiBTaXplIG9mIGFuIGluZGl2aWR1YWwgZW50cnkgKi8KQEAgLTgwMSw3ICs4MzQsNyBAQAogICAgIHQtPm5leHRfaW5kZXggPSAxOyAgICAgICAgICAvKiBEb24ndCB1c2UgaW5kZXggMCAqLwogICAgIHQtPmN1cnJlbnRfaW5kZXggPSAxOwogICAgIHQtPmNhY2hlX3RpbWVvdXQgPSB0aW1lb3V0OwotICAgIHQtPmNhY2hlX21hcmtlciA9IE5VTEw7CisgICAgdC0+Y2FjaGVfbWFya2VyTSA9IE5VTEw7CiAgICAgdC0+cmVsb2FkID0gcmVsb2FkOwogICAgIHQtPmNvbXBhcmUgPSBjb21wYXJlOwogICAgIHQtPmRhdGFfc2l6ZSA9IHNpemU7CkBAIC04MjMsOCArODU2LDkgQEAKICAgICAgKiBJZiB0aGUgc2F2ZWQgZGF0YSBpcyBmYWlybHkgcmVjZW50LAogICAgICAqICAgIHdlIGRvbid0IG5lZWQgdG8gcmVsb2FkIGl0CiAgICAgICovCi0gICAgaWYgKHRhYmxlLT5jYWNoZV9tYXJrZXIgJiYKLSAgICAgICAgIShhdGltZV9yZWFkeSh0YWJsZS0+Y2FjaGVfbWFya2VyLCB0YWJsZS0+Y2FjaGVfdGltZW91dCAqIDEwMDApKSkKKyAgICBpZiAodGFibGUtPmNhY2hlX21hcmtlck0gJiYKKyAgICAgICAgIShuZXRzbm1wX3JlYWR5X21vbm90b25pYyh0YWJsZS0+Y2FjaGVfbWFya2VyTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS0+Y2FjaGVfdGltZW91dCAqIDEwMDApKSkKICAgICAgICAgcmV0dXJuIDE7CiAKIApAQCAtODM0LDE1ICs4NjgsMTIgQEAKICAgICAgKiBOLkI6ICBVcGRhdGUgdGhlIGNhY2hlIG1hcmtlciAqYmVmb3JlKiBjYWxsaW5nCiAgICAgICogICB0aGlzIHJvdXRpbmUsIHRvIGF2b2lkIHByb2JsZW1zIHdpdGggcmVjdXJzaW9uCiAgICAgICovCi0gICAgaWYgKCF0YWJsZS0+Y2FjaGVfbWFya2VyKQotICAgICAgICB0YWJsZS0+Y2FjaGVfbWFya2VyID0gYXRpbWVfbmV3TWFya2VyKCk7Ci0gICAgZWxzZQotICAgICAgICBhdGltZV9zZXRNYXJrZXIodGFibGUtPmNhY2hlX21hcmtlcik7CisgICAgbmV0c25tcF9zZXRfbW9ub3RvbmljX21hcmtlcigmdGFibGUtPmNhY2hlX21hcmtlck0pOwogCiAgICAgdGFibGUtPm5leHRfaW5kZXggPSAxOwogICAgIGlmICh0YWJsZS0+cmVsb2FkKChtaWJfdGFibGVfdCkgdGFibGUpIDwgMCkgewotICAgICAgICBmcmVlKHRhYmxlLT5jYWNoZV9tYXJrZXIpOwotICAgICAgICB0YWJsZS0+Y2FjaGVfbWFya2VyID0gTlVMTDsKKyAgICAgICAgZnJlZSh0YWJsZS0+Y2FjaGVfbWFya2VyTSk7CisgICAgICAgIHRhYmxlLT5jYWNoZV9tYXJrZXJNID0gTlVMTDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIHRhYmxlLT5jdXJyZW50X2luZGV4ID0gMTsKQEAgLTk1Miw4ICs5ODMsMTEgQEAKICAgICAqbWF4X2lkeCA9IHRhYmxlLT5uZXh0X2luZGV4IC0gMTsKICAgICByZXR1cm4gdGFibGUtPmRhdGE7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTlRFUk5BTF9NSUJfVEFCTEUgKi8KIAogI2lmIGRlZmluZWQoSEFWRV9MSU5VWF9SVE5FVExJTktfSCkKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NSRUFURV9QUkVGSVhfSU5GTwogcHJlZml4X2NieCAqbmV0X3NubXBfY3JlYXRlX3ByZWZpeF9pbmZvKHVuc2lnbmVkIGxvbmcgT25MaW5rRmxhZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIEF1dG9ub21vdXNGbGFnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmluNnB0cikKQEAgLTk3NCw3ICsxMDA4LDkgQEAKIAogICAgcmV0dXJuIG5vZGU7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DUkVBVEVfUFJFRklYX0lORk8gKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZJTkRfUFJFRklYX0lORk8KIGludCBuZXRfc25tcF9maW5kX3ByZWZpeF9pbmZvKHByZWZpeF9jYnggKipoZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeF9jYnggKm5vZGVfdG9fZmluZCkKQEAgLTk5NSw3ICsxMDMxLDkgQEAKICAgICB9IGVsc2UKICAgICAgICByZXR1cm4gMDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZJTkRfUFJFRklYX0lORk8gKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VQREFURV9QUkVGSVhfSU5GTwogaW50IG5ldF9zbm1wX3VwZGF0ZV9wcmVmaXhfaW5mbyhwcmVmaXhfY2J4ICoqaGVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4X2NieCAqbm9kZV90b191cGRhdGUpCiB7CkBAIC0xMDEwLDYgKzEwNDgsNyBAQAogICAgIH0gZWxzZQogICAgICAgIHJldHVybiAwOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVVBEQVRFX1BSRUZJWF9JTkZPICovCiAKIGludCBuZXRfc25tcF9zZWFyY2hfdXBkYXRlX3ByZWZpeF9pbmZvKHByZWZpeF9jYnggKipoZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4X2NieCAqbm9kZV90b191c2UsCkBAIC0xMDU4LDYgKzEwOTcsNyBAQAogICAgIH0KIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RFTEVURV9QUkVGSVhfSU5GTwogaW50IG5ldF9zbm1wX2RlbGV0ZV9wcmVmaXhfaW5mbyhwcmVmaXhfY2J4ICoqaGVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYWRkcmVzcykKIHsKQEAgLTEwODMsNSArMTEyMyw3IEBACiAgICAgfQogICAgIHJldHVybiAwOwogfQotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ERUxFVEVfUFJFRklYX0lORk8gKi8KIAorI2VuZGlmIC8qIEhBVkVfTElOVVhfUlRORVRMSU5LX0ggKi8KKyAgICAgICAgIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oCmluZGV4IGQxNmI2YzQuLjdmNTk3ODAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaAorKysgYi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmgKQEAgLTQsMTUgKzQsMTQgQEAKICNpZm5kZWYgX01JQkdST1VQX1VUSUxfRlVOQ1NfSAogI2RlZmluZSBfTUlCR1JPVVBfVVRJTF9GVU5DU19ICiAKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvRXhpdCkKIGNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCiBjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUpCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL3Jlc3RhcnQpCiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzL0V4aXQuaCIKKyNpZmRlZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKICNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgiCi0jaW5jbHVkZSAidXRpbF9mdW5jcy9yZXN0YXJ0LmgiCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC0zNyw3ICszNiwxMSBAQAogaW50ICAgICAgICAgICAgIGV4ZWNfY29tbWFuZChzdHJ1Y3QgZXh0ZW5zaWJsZSAqKTsKIHN0cnVjdCBleHRlbnNpYmxlICpnZXRfZXh0ZW5faW5zdGFuY2Uoc3RydWN0IGV4dGVuc2libGUgKiwgc2l6ZV90KTsKIGludCAgICAgICAgICAgICBnZXRfZXhlY19vdXRwdXQoc3RydWN0IGV4dGVuc2libGUgKik7Ci1pbnQgICAgICAgICAgICAgZ2V0X2V4ZWNfcGlwZXMoY2hhciAqY21kLCBpbnQgKmZkSW4sIGludCAqZmRPdXQsIGludCAqcGlkKTsKKyNpZiBkZWZpbmVkKFdJTjMyKSAmJiAhZGVmaW5lZChjeWd3aW4pCitpbnQgICAgICAgICAgICAgZ2V0X2V4ZWNfcGlwZXMoY2hhciAqY21kLCBpbnQgKmZkSW4sIGludCAqZmRPdXQsIEhBTkRMRSAqcGlkKTsKKyNlbHNlCitpbnQgICAgICAgICAgICAgZ2V0X2V4ZWNfcGlwZXMoY2hhciAqY21kLCBpbnQgKmZkSW4sIGludCAqZmRPdXQsIHBpZF90ICpwaWQpOworI2VuZGlmCiBXcml0ZU1ldGhvZCAgICAgY2xlYXJfY2FjaGU7CiB2b2lkICAgICAgICAgICAgcHJpbnRfbWliX29pZChvaWQgKiwgc2l6ZV90KTsKIHZvaWQgICAgICAgICAgICBzcHJpbnRfbWliX29pZChjaGFyICosIGNvbnN0IG9pZCAqLCBzaXplX3QpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuYyBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmMKaW5kZXggMWM5NDFiMy4uOGUxNTdhZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuYworKysgYi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5jCkBAIC0yMiwyOSArMjIsMTA2IEBACiAjIGRlZmluZSBTT0NLRVRfVFlQRV8xICAgICAgInNvY2tldDpbIgogIyBkZWZpbmUgU09DS0VUX1RZUEVfMiAgICAgICJbMDAwMF06IgogCi1waWRfdAotbmV0c25tcF9nZXRfcGlkX2Zyb21faW5vZGUoaW5vNjRfdCBpbm9kZSkKKy8qIERlZmluaXRpb24gb2YgYSBzaW1wbGUgb3BlbiBhZGRyZXNzaW5nIGhhc2ggdGFibGUuKi8KKy8qIFdoZW4gaW5vZGUgPT0gMCB0aGVuIHRoZSBlbnRyeSBpcyBlbXB0eS4qLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGlubzY0X3QgaW5vZGU7CisgICAgcGlkX3QgICBwaWQ7Cit9IGlub2RlX3BpZF9lbnRfdDsKKworI2RlZmluZSBJTk9ERV9QSURfVEFCTEVfTUFYX0NPTExJU0lPTlMgMTAwMAorI2RlZmluZSBJTk9ERV9QSURfVEFCTEVfTEVOR1RIIDIwMDAwCisjZGVmaW5lIElOT0RFX1BJRF9UQUJMRV9TSVpFIChJTk9ERV9QSURfVEFCTEVfTEVOR1RIICogc2l6ZW9mIChpbm9kZV9waWRfZW50X3QpKQorc3RhdGljIGlub2RlX3BpZF9lbnRfdCAgaW5vZGVfcGlkX3RhYmxlW0lOT0RFX1BJRF9UQUJMRV9MRU5HVEhdOworCitzdGF0aWMgdWludDMyX3QKK19oYXNoKHVpbnQ2NF90IGtleSkKK3sKKyAgICBrZXkgPSAofmtleSkgKyAoa2V5IDw8IDE4KTsKKyAgICBrZXkgPSBrZXkgXiAoa2V5ID4+IDMxKTsKKyAgICBrZXkgPSBrZXkgKiAyMTsKKyAgICBrZXkgPSBrZXkgXiAoa2V5ID4+IDExKTsKKyAgICBrZXkgPSBrZXkgKyAoa2V5IDw8IDYpOworICAgIGtleSA9IGtleSBeIChrZXkgPj4gMjIpOworICAgIHJldHVybiBrZXk7Cit9CisKK3N0YXRpYyB2b2lkCitfY2xlYXIodm9pZCkKK3sKKyAgICAvKiBDbGVhciB0aGUgaW5vZGUvcGlkIGhhc2ggdGFibGUuKi8KKyAgICBtZW1zZXQoaW5vZGVfcGlkX3RhYmxlLCAwLCBJTk9ERV9QSURfVEFCTEVfU0laRSk7Cit9CisKK3N0YXRpYyB2b2lkCitfc2V0KGlubzY0X3QgaW5vZGUsIHBpZF90IHBpZCkKK3sKKyAgICB1aW50MzJfdCAgICAgICAgaGFzaCA9IF9oYXNoKGlub2RlKTsKKyAgICB1aW50MzJfdCAgICAgICAgaTsKKyAgICBpbm9kZV9waWRfZW50X3QgKmVudHJ5OworCisgICAgLyogV2Ugd2lsbCB0cnkgZm9yIGEgbWF4aW11bSBudW1iZXIgb2YgY29sbGlzaW9ucy4qLworICAgIGZvciAoaSA9IDA7IGkgPCBJTk9ERV9QSURfVEFCTEVfTUFYX0NPTExJU0lPTlM7IGkrKykgeworICAgICAgICBlbnRyeSA9ICZpbm9kZV9waWRfdGFibGVbKGhhc2ggKyBpKSAlIElOT0RFX1BJRF9UQUJMRV9MRU5HVEhdOworCisgICAgICAgIC8qIENoZWNrIGlmIHRoaXMgZW50cnkgaXMgZW1wdHksIG9yIHRoZSBhY3R1YWwgaW5vZGUgd2Ugd2VyZSBsb29raW5nIGZvci4qLworICAgICAgICAvKiBUaGUgc2Vjb25kIHBhcnQgc2hvdWxkIG5ldmVyIGhhcHBlbiwgYnV0IGl0IGlzIGhlcmUgZm9yIGNvbXBsZXRlbmVzcy4qLworICAgICAgICBpZiAoZW50cnktPmlub2RlID09IDAgfHwgZW50cnktPmlub2RlID09IGlub2RlKSB7CisgICAgICAgICAgICBlbnRyeS0+aW5vZGUgPSBpbm9kZTsKKyAgICAgICAgICAgIGVudHJ5LT5waWQgPSBwaWQ7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBXZSB3aWxsIHNpbGVudGx5IGZhaWwgdG8gaW5zZXJ0IHRoZSBpbm9kZSBpZiB3ZSBnZXQgdG9vIG1hbnkgY29sbGlzaW9ucy4qLworICAgIC8qIHRoZSBfZ2V0IGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGEgemVybyBwaWQuKi8KK30KKworc3RhdGljIHBpZF90IF9nZXQoaW5vNjRfdCBpbm9kZSkKK3sKKyAgICB1aW50MzJfdCAgICAgICAgaGFzaCA9IF9oYXNoKGlub2RlKTsKKyAgICB1aW50MzJfdCAgICAgICAgaTsKKyAgICBpbm9kZV9waWRfZW50X3QgKmVudHJ5OworCisgICAgLyogV2Ugd2lsbCB0cnkgZm9yIGEgbWF4aW11bSBudW1iZXIgb2YgY29sbGlzaW9ucy4qLworICAgIGZvciAoaSA9IDA7IGkgPCBJTk9ERV9QSURfVEFCTEVfTUFYX0NPTExJU0lPTlM7IGkrKykgeworICAgICAgICBlbnRyeSA9ICZpbm9kZV9waWRfdGFibGVbKGhhc2ggKyBpKSAlIElOT0RFX1BJRF9UQUJMRV9MRU5HVEhdOworCisgICAgICAgIC8qIENoZWNrIGlmIHRoaXMgZW50cnkgaXMgZW1wdHksIG9yIHRoZSBhY3R1YWwgaW5vZGUgd2Ugd2VyZSBsb29raW5nIGZvci4qLworICAgICAgICAvKiBJZiB0aGUgZW50cnkgaXMgZW1wdHkgaXQgbWVhbnMgdGhlIGlub2RlIGlzIG5vdCBpbiB0aGUgdGFibGUgYW5kIHdlKi8KKyAgICAgICAgLyogc2hvdWxkIHJldHVybiAwLCB0aGUgZW50cnkgd2lsbCBhbHNvIGhhdmUgYSB6ZXJvIHBpZC4qLworICAgICAgICBpZiAoZW50cnktPmlub2RlID09IDAgfHwgZW50cnktPmlub2RlID09IGlub2RlKSB7CisgICAgICAgICAgICByZXR1cm4gZW50cnktPnBpZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIFdlIGNvdWxkIG5vdCBmaW5kIHRoZSBwaWQuKi8KKyAgICByZXR1cm4gMDsKK30KKwordm9pZAorbmV0c25tcF9nZXRfcGlkX2Zyb21faW5vZGVfaW5pdCh2b2lkKQogewogICAgIERJUiAgICAgICAgICAgICpwcm9jZGlycyA9IE5VTEwsICpwaWRkaXJzID0gTlVMTDsKICAgICBjaGFyICAgICAgICAgICAgcGF0aF9uYW1lW1BBVEhfTUFYICsgMV07CiAgICAgY2hhciAgICAgICAgICAgIHNvY2tldF9sbmtbTkFNRV9NQVggKyAxXTsKLSAgICBpbnQgICAgICAgICAgICAgZmlsZWxlbiA9IDAsIHJlYWRsZW4gPSAwLCBpZmxhZyA9IDA7CisgICAgaW50ICAgICAgICAgICAgIGZpbGVsZW4gPSAwLCByZWFkbGVuID0gMDsKICAgICBzdHJ1Y3QgZGlyZW50ICAqcHJvY2luZm8sICpwaWRpbmZvOwogICAgIHBpZF90ICAgICAgICAgICBwaWQgPSAwOwogICAgIGlubzY0X3QgICAgICAgICB0ZW1wX2lub2RlOwogCi0gICAgaWYgKGlub2RlID09IDApIHsKLSAgICAgICAgLyogYW4gaW5vZGUgc2V0IHRvIHplcm8gbWVhbnMgaXQgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhIHByb2Nlc3MuICovCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBfY2xlYXIoKTsKIAorICAgIC8qIHdhbGsgb3ZlciBhbGwgZGlyZWN0b3JpZXMgaW4gL3Byb2MqLwogICAgIGlmICghKHByb2NkaXJzID0gb3BlbmRpcihQUk9DX1BBVEgpKSkgewogICAgICAgICBORVRTTk1QX0xPR09OQ0UoKExPR19FUlIsICJzbm1wZDogY2Fubm90IG9wZW4gL3Byb2NcbiIpKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICB3aGlsZSAoKHByb2NpbmZvID0gcmVhZGRpcihwcm9jZGlycykpICE9IE5VTEwpIHsKLQljb25zdCBjaGFyKiBuYW1lID0gcHJvY2luZm8tPmRfbmFtZTsKKyAgICAgICAgY29uc3QgY2hhciogbmFtZSA9IHByb2NpbmZvLT5kX25hbWU7CisKKyAgICAgICAgLyogQSBwaWQgZGlyZWN0b3J5IG9ubHkgY29udGFpbnMgZGlnaXRzLCBjaGVjayBmb3IgdGhvc2UuKi8KICAgICAgICAgZm9yICg7ICpuYW1lOyBuYW1lKyspIHsKICAgICAgICAgICAgIGlmICghaXNkaWdpdCgqbmFtZSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01MiwxNCArMTI5LDE2IEBACiAgICAgICAgIGlmKCpuYW1lKQogICAgICAgICAgICAgY29udGludWU7CiAKKyAgICAgICAgLyogQ3JlYXRlIHRoZSAvcHJvYy88cGlkPi9mZC8gcGF0aCBuYW1lLiovCiAgICAgICAgIG1lbXNldChwYXRoX25hbWUsICdcMCcsIFBBVEhfTUFYICsgMSk7CiAgICAgICAgIGZpbGVsZW4gPSBzbnByaW50ZihwYXRoX25hbWUsIFBBVEhfTUFYLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPQ19QQVRIICIvJXMvZmQvIiwgcHJvY2luZm8tPmRfbmFtZSk7CiAgICAgICAgIGlmIChmaWxlbGVuIDw9IDAgfHwgUEFUSF9NQVggPCBmaWxlbGVuKQogICAgICAgICAgICAgY29udGludWU7CiAKKyAgICAgICAgLyogd2FsayBvdmVyIGFsbCB0aGUgZmlsZXMgaW4gL3Byb2MvPHBpZD4vZmQvKi8KICAgICAgICAgaWYgKCEocGlkZGlycyA9IG9wZW5kaXIocGF0aF9uYW1lKSkpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgY29udGludWU7CiAKICAgICAgICAgd2hpbGUgKChwaWRpbmZvID0gcmVhZGRpcihwaWRkaXJzKSkgIT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKGZpbGVsZW4gKyBzdHJsZW4ocGlkaW5mby0+ZF9uYW1lKSA+IFBBVEhfTUFYKQpAQCAtNjcsMjkgKzE0Niw0MSBAQAogCiAgICAgICAgICAgICBzdHJjcHkocGF0aF9uYW1lICsgZmlsZWxlbiwgcGlkaW5mby0+ZF9uYW1lKTsKIAorICAgICAgICAgICAgLyogVGhlIGZpbGUgZGlzY3JpcHRvciBpcyBhIHN5bWJvbGljIGxpbmsgdG8gYSBzb2NrZXQgb3IgYSBmaWxlLiovCisgICAgICAgICAgICAvKiBUaHVzIHJlYWQgdGhlIHN5bWJvbGljIGxpbmsuKi8KICAgICAgICAgICAgIG1lbXNldChzb2NrZXRfbG5rLCAnXDAnLCBOQU1FX01BWCArIDEpOwogICAgICAgICAgICAgcmVhZGxlbiA9IHJlYWRsaW5rKHBhdGhfbmFtZSwgc29ja2V0X2xuaywgTkFNRV9NQVgpOwogICAgICAgICAgICAgaWYgKHJlYWRsZW4gPCAwKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgICAgICBzb2NrZXRfbG5rW3JlYWRsZW5dID0gJ1wwJzsKIAorICAgICAgICAgICAgLyogQ2hlY2sgaWYgdG8gc2VlIGlmIHRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgYSBzb2NrZXQgYnkgY29tcGFyaW5nKi8KKyAgICAgICAgICAgIC8qIHRoZSBzdGFydCB0byBhIHN0cmluZy4gQWxzbyBleHRyYWN0IHRoZSBpbm9kZSBudW1iZXIgZnJvbSB0aGlzKi8KKyAgICAgICAgICAgIC8qIHN5bWJvbGljIGxpbmsuKi8KICAgICAgICAgICAgIGlmICghc3RybmNtcChzb2NrZXRfbG5rLCBTT0NLRVRfVFlQRV8xLCA4KSkgewogICAgICAgICAgICAgICAgIHRlbXBfaW5vZGUgPSBzdHJ0b3VsbChzb2NrZXRfbG5rICsgOCwgTlVMTCwgMCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJuY21wKHNvY2tldF9sbmssIFNPQ0tFVF9UWVBFXzIsIDcpKSB7CiAgICAgICAgICAgICAgICAgdGVtcF9pbm9kZSA9IHN0cnRvdWxsKHNvY2tldF9sbmsgKyA3LCBOVUxMLCAwKTsKLSAgICAgICAgICAgIH0gZWxzZQotCQl0ZW1wX2lub2RlID0gMDsKLSAgICAgICAgICAgIGlmIChpbm9kZSA9PSB0ZW1wX2lub2RlKSB7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRlbXBfaW5vZGUgPSAwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBBZGQgdGhlIGlub2RlL3BpZCBjb21iaW5hdGlvbiB0byBvdXIgaGFzaCB0YWJsZS4qLworICAgICAgICAgICAgaWYgKHRlbXBfaW5vZGUgIT0gMCkgewogICAgICAgICAgICAgICAgIHBpZCA9IHN0cnRvdWwocHJvY2luZm8tPmRfbmFtZSwgTlVMTCwgMCk7Ci0gICAgICAgICAgICAgICAgaWZsYWcgPSAxOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIF9zZXQodGVtcF9pbm9kZSwgcGlkKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBjbG9zZWRpcihwaWRkaXJzKTsKLSAgICAgICAgaWYgKGlmbGFnID09IDEpCi0gICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgaWYgKHByb2NkaXJzKQogICAgICAgICBjbG9zZWRpcihwcm9jZGlycyk7Ci0gICAgcmV0dXJuIHBpZDsKIH0KKworcGlkX3QKK25ldHNubXBfZ2V0X3BpZF9mcm9tX2lub2RlKGlubzY0X3QgaW5vZGUpCit7CisgICAgcmV0dXJuIF9nZXQoaW5vZGUpOworfQorCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5oIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuaAppbmRleCAyYWQwNGUxLi43YzU4NzYwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogCit2b2lkIG5ldHNubXBfZ2V0X3BpZF9mcm9tX2lub2RlX2luaXQodm9pZCk7CiBwaWRfdCBuZXRzbm1wX2dldF9waWRfZnJvbV9pbm9kZShpbm82NF90KTsKIAogI2VuZGlmIC8qIE5FVFNOTVBfTUlCR1JPVVBfVVRJTF9GVU5DU19IRUFERVJfU0lNUExFX1RBQkxFX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuYyBiL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuYwppbmRleCAzYmVlYmM2Li44NjA1OTBmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5jCkBAIC0xLDkgKzEsMTkgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAogI2luY2x1ZGUgInV0aWxpdGllcy9pcXVlcnkuaCIKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlxdWVyeV9hbGwsIGxpYm5ldHNubXBtaWJzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlxdWVyeSwgaXF1ZXJ5X2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcXVlcnlfY29tbXVuaXR5X3Nlc3Npb24sIGlxdWVyeV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXF1ZXJ5X3BkdV9zZXNzaW9uLCBpcXVlcnlfYWxsKQorCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShxdWVyeV9zZXRfZGVmYXVsdF9zZXNzaW9uKQorCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVFVRVJZCisKIHZvaWQKIG5ldHNubXBfcGFyc2VfaXF1ZXJ5U2VjTGV2ZWwoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmxpbmUpCiB7CkBAIC0xMjAsNiArMTMwLDcgQEAKICAgICAgKgogICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lRVUVSWV9QRFVfU0VTU0lPTgogbmV0c25tcF9zZXNzaW9uICpuZXRzbm1wX2lxdWVyeV9wZHVfc2Vzc2lvbihuZXRzbm1wX3BkdSogcGR1KSB7CiAgICAgaWYgKCFwZHUpCiAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMzgsNiArMTQ5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdS0+c2VjdXJpdHlFbmdpbmVJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdS0+c2VjdXJpdHlFbmdpbmVJRExlbik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUVVFUllfUERVX1NFU1NJT04gKi8KIAogbmV0c25tcF9zZXNzaW9uICpuZXRzbm1wX2lxdWVyeV91c2VyX3Nlc3Npb24oY2hhciogc2VjTmFtZSl7CiAgICAgdV9jaGFyIGVJRFtTTk1QX01BWEJVRl9TTUFMTF07CkBAIC0xNDksNiArMTYxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfU0VDX0xFVkVMX0FVVEhOT1BSSVYsIGVJRCwgZWxlbik7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUVVFUllfQ09NTVVOSVRZX1NFU1NJT04KIG5ldHNubXBfc2Vzc2lvbiAqbmV0c25tcF9pcXVlcnlfY29tbXVuaXR5X3Nlc3Npb24oIGNoYXIqIGNvbW11bml0eSwgaW50IHZlcnNpb24gKSB7IAogICAgIHVfY2hhciBlSURbU05NUF9NQVhCVUZfU01BTExdOwogICAgIHNpemVfdCBlbGVuID0gc25tcHYzX2dldF9lbmdpbmVJRChlSUQsIHNpemVvZihlSUQpKTsKQEAgLTE1Niw2ICsxNjksNyBAQAogICAgIHJldHVybiBuZXRzbm1wX2lxdWVyeV9zZXNzaW9uKCBjb21tdW5pdHksIHZlcnNpb24sIHZlcnNpb24rMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfU0VDX0xFVkVMX05PQVVUSCwgZUlELCBlbGVuKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lRVUVSWV9DT01NVU5JVFlfU0VTU0lPTiAqLwogCiBuZXRzbm1wX3Nlc3Npb24gKm5ldHNubXBfaXF1ZXJ5X3Nlc3Npb24oY2hhciogc2VjTmFtZSwgICBpbnQgICB2ZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgIHNlY01vZGVsLCAgaW50ICAgc2VjTGV2ZWwsCkBAIC0xOTIsMyArMjA2LDcgQEAKICAgICByZXR1cm4gc3M7CiB9CiAKKyNlbHNlIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVFVRVJZICovCituZXRzbm1wX2ZlYXR1cmVfdW51c2VkKGlxdWVyeSk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUVVFUlkgKi8KKwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmMgYi9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvb3ZlcnJpZGUuYwppbmRleCBkNTBiNmU0Li40OGFjMjgxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvb3ZlcnJpZGUuYworKysgYi9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvb3ZlcnJpZGUuYwpAQCAtNTAsNiArNTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSBkYXRhLT52YWx1ZSwgZGF0YS0+dmFsdWVfbGVuKTsKICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICAgICAgaWYgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnR5cGUgIT0gZGF0YS0+dHlwZSkKICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsIFNOTVBfRVJSX1dST05HVFlQRSk7CkBAIC04Nyw2ICs4OCw3IEBACiAgICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6CiAgICAgICAgIFNOTVBfRlJFRShkYXRhLT5zZXRfc3BhY2UpOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICBkZWZhdWx0OgogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidW5zdXBwb3J0ZWQgbW9kZSBpbiBvdmVycmlkZSBoYW5kbGVyXG4iKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3dpbkV4dERMTC5jIGIvYWdlbnQvbWliZ3JvdXAvd2luRXh0RExMLmMKaW5kZXggZDc4YzE4NS4uZjQ0Zjg0ZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvd2luRXh0RExMLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvd2luRXh0RExMLmMKQEAgLTgyLDYgKzgyLDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oPgogCiAjaWZkZWYgVVNJTkdfV0lORVhURExMX01PRFVMRQpAQCAtMTAxLDYgKzEwMiw4IEBACiAjaW5jbHVkZSAidXRpbF9mdW5jcy5oIgogI2luY2x1ZGUgIndpbkV4dERMTC5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShvaWRfaXNfc3VidHJlZSkKKwogCiAjZGVmaW5lIE1BWF9WQUxVRV9OQU1FICAgICAgICAgIDE2MzgzCiAjZGVmaW5lIE1TX0FTTl9VSU5URUdFUjMyIE1TX0FTTl9VTlNJR05FRDMyCkBAIC03NTMsNiArNzU2LDc5IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qCisgKiBUcmFuc2xhdGUgTmV0LVNOTVAgcmVxdWVzdCBtb2RlIGludG8gYW4gU25tcEV4dGVuc2lvblF1ZXJ5KCkgUERVIHR5cGUKKyAqIG9yIGludG8gYW4gU25tcEV4dGVuc2lvblF1ZXJ5RXgoKSByZXF1ZXN0IHR5cGUuCisgKi8KK3N0YXRpYyBpbnQKK2dldF9yZXF1ZXN0X3R5cGUoaW50IG1vZGUsIGludCByZXF1ZXN0X3R5cGUsIFVJTlQgKm5SZXF1ZXN0VHlwZSkKK3sKKyAgICBzd2l0Y2ggKHJlcXVlc3RfdHlwZSkgeworICAgIGNhc2UgMDoKKyAgICAgICAgLyogU25tcEV4dGVuc2lvblF1ZXJ5KCkgUERVIHR5cGUgKi8KKyAgICAgICAgc3dpdGNoIChtb2RlKSB7CisgICAgICAgIGNhc2UgTU9ERV9HRVQ6CisgICAgICAgICAgICAqblJlcXVlc3RUeXBlID0gU05NUF9QRFVfR0VUOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgTU9ERV9HRVRORVhUOgorICAgICAgICAgICAgKm5SZXF1ZXN0VHlwZSA9IFNOTVBfUERVX0dFVE5FWFQ7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKKyAgICAgICAgICAgICpuUmVxdWVzdFR5cGUgPSBTTk1QX1BEVV9TRVQ7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9GUkVFOgorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBERUJVR01TRygoIndpbkV4dERMTCIsICJpbnRlcm5hbCBlcnJvcjogaW52YWxpZCBtb2RlICVkLlxuIiwgbW9kZSkpOworICAgICAgICAgICAgbmV0c25tcF9hc3NlcnQoMCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIGNhc2UgMToKKyAgICAgICAgLyogU25tcEV4dGVuc2lvblF1ZXJ5RXgoKSByZXF1ZXN0IHR5cGUgKi8KKyAgICAgICAgc3dpdGNoIChtb2RlKSB7CisgICAgICAgIGNhc2UgTU9ERV9HRVQ6CisgICAgICAgICAgICAqblJlcXVlc3RUeXBlID0gU05NUF9FWFRFTlNJT05fR0VUOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgTU9ERV9HRVRORVhUOgorICAgICAgICAgICAgKm5SZXF1ZXN0VHlwZSA9IFNOTVBfRVhURU5TSU9OX0dFVF9ORVhUOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CisgICAgICAgICAgICAqblJlcXVlc3RUeXBlID0gU05NUF9FWFRFTlNJT05fU0VUX1RFU1Q7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlIE1PREVfU0VUX0FDVElPTjoKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlIE1PREVfU0VUX1VORE86CisgICAgICAgICAgICAqblJlcXVlc3RUeXBlID0gU05NUF9FWFRFTlNJT05fU0VUX1VORE87CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6CisgICAgICAgICAgICAqblJlcXVlc3RUeXBlID0gU05NUF9FWFRFTlNJT05fU0VUX0NPTU1JVDsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIE1PREVfU0VUX0ZSRUU6CisgICAgICAgICAgICAqblJlcXVlc3RUeXBlID0gU05NUF9FWFRFTlNJT05fU0VUX0NMRUFOVVA7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIERFQlVHTVNHKCgid2luRXh0RExMIiwgImludGVybmFsIGVycm9yOiBpbnZhbGlkIG1vZGUgJWQuXG4iLCBtb2RlKSk7CisgICAgICAgICAgICBuZXRzbm1wX2Fzc2VydCgwKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgREVCVUdNU0coKCJ3aW5FeHRETEwiLCAiaW50ZXJuYWwgZXJyb3I6IGludmFsaWQgYXJndW1lbnQgJWQuXG4iLAorICAgICAgICAgICAgICAgICAgcmVxdWVzdF90eXBlKSk7CisgICAgICAgIG5ldHNubXBfYXNzZXJ0KDApOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIHN0YXRpYyBpbnQKIHZhcl93aW5FeHRETEwobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKQEAgLTc3OSwzNSArODU1LDggQEAKICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKLSAgICBjYXNlIE1PREVfR0VUOgotICAgICAgICBuUmVxdWVzdFR5cGUgPSBTTk1QX0VYVEVOU0lPTl9HRVQ7Ci0gICAgICAgIG5ldHNubXBfYXNzZXJ0KCFjb250ZXh0X2luZm9faGVhZCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTU9ERV9HRVRORVhUOgotICAgICAgICBuUmVxdWVzdFR5cGUgPSBTTk1QX0VYVEVOU0lPTl9HRVRfTkVYVDsKLSAgICAgICAgbmV0c25tcF9hc3NlcnQoIWNvbnRleHRfaW5mb19oZWFkKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKLSAgICAgICAgblJlcXVlc3RUeXBlID0gU05NUF9FWFRFTlNJT05fU0VUX1RFU1Q7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6Ci0gICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgotICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLSAgICBjYXNlIE1PREVfU0VUX1VORE86Ci0gICAgICAgIG5SZXF1ZXN0VHlwZSA9IFNOTVBfRVhURU5TSU9OX1NFVF9VTkRPOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKLSAgICAgICAgblJlcXVlc3RUeXBlID0gU05NUF9FWFRFTlNJT05fU0VUX0NPTU1JVDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT0RFX1NFVF9GUkVFOgotICAgICAgICBuUmVxdWVzdFR5cGUgPSBTTk1QX0VYVEVOU0lPTl9TRVRfQ0xFQU5VUDsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgREVCVUdNU0coKCJ3aW5FeHRETEwiLAotICAgICAgICAgICAgICAgICAgImludGVybmFsIGVycm9yOiBpbnZhbGlkIG1vZGUgJWQuXG4iLCByZXFpbmZvLT5tb2RlKSk7Ci0gICAgICAgIG5ldHNubXBfYXNzZXJ0KDApOworICAgIGlmICghZ2V0X3JlcXVlc3RfdHlwZShyZXFpbmZvLT5tb2RlLCAhIWV4dF9kbGxfaW5mby0+cGZTbm1wRXh0ZW5zaW9uUXVlcnlFeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJm5SZXF1ZXN0VHlwZSkpIHsKICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiAgICAgfQogCmRpZmYgLS1naXQgYS9hZ2VudC9zbm1wX2FnZW50LmMgYi9hZ2VudC9zbm1wX2FnZW50LmMKaW5kZXggMDk0NjQyMy4uYjk2ZDY1MCAxMDA2NDQKLS0tIGEvYWdlbnQvc25tcF9hZ2VudC5jCisrKyBiL2FnZW50L3NubXBfYWdlbnQuYwpAQCAtNDQsNiArNDQsNyBAQAogICogQHsKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpZmRlZiBIQVZFX0xJTUlUU19ICkBAIC0xMDcsNiArMTA4LDI1IEBACiAjaW5jbHVkZSAic211eC9zbXV4LmgiCiAjZW5kaWYKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNubXBfYWdlbnQsIGxpYm5ldHNubXBhZ2VudCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihhZ2VudF9kZWJ1Z2dpbmdfdXRpbGl0aWVzLCBsaWJuZXRzbm1wYWdlbnQpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihhbGxvY2F0ZV9nbG9iYWxjYWNoZWlkLCBzbm1wX2FnZW50KQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGZyZWVfYWdlbnRfc25tcF9zZXNzaW9uX2J5X3Nlc3Npb24sIHNubXBfYWdlbnQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yLCBzbm1wX2FnZW50KQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNoZWNrX3JlcXVlc3RzX2Vycm9yLCBzbm1wX2FnZW50KQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlcXVlc3Rfc2V0X2Vycm9yX2lkeCwgc25tcF9hZ2VudCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzZXRfYWdlbnRfdXB0aW1lLCBzbm1wX2FnZW50KQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGFnZW50X2NoZWNrX2FuZF9wcm9jZXNzLCBzbm1wX2FnZW50KQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoZHVtcF9zZXNzX2xpc3QsIGFnZW50X2RlYnVnZ2luZ191dGlsaXRpZXMpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihhZ2VudF9yZW1vdmVfbGlzdF9kYXRhLCBuZXRzbm1wX3VudXNlZCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzZXRfYWxsX3JlcXVlc3RzX2Vycm9yLCBuZXRzbm1wX3VudXNlZCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihhZGRyY2FjaGVfYWdlLCBuZXRzbm1wX3VudXNlZCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihkZWxldGVfc3VidHJlZV9jYWNoZSwgbmV0c25tcF91bnVzZWQpCisKKwogTkVUU05NUF9JTkxJTkUgdm9pZAogbmV0c25tcF9hZ2VudF9hZGRfbGlzdF9kYXRhKG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphcmksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9kYXRhX2xpc3QgKm5vZGUpCkBAIC0xMjAsNiArMTQwLDcgQEAKICAgICB9CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9BR0VOVF9SRU1PVkVfTElTVF9EQVRBCiBORVRTTk1QX0lOTElORSBpbnQKIG5ldHNubXBfYWdlbnRfcmVtb3ZlX2xpc3RfZGF0YShuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYXJpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBuYW1lKQpAQCAtMTI5LDYgKzE1MCw3IEBACiAKICAgICByZXR1cm4gbmV0c25tcF9yZW1vdmVfbGlzdF9ub2RlKCZhcmktPmFnZW50X2RhdGEsIG5hbWUpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQUdFTlRfUkVNT1ZFX0xJU1RfREFUQSAqLwogCiBORVRTTk1QX0lOTElORSB2b2lkICAgICoKIG5ldHNubXBfYWdlbnRfZ2V0X2xpc3RfZGF0YShuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYXJpLApAQCAtMTgxLDcgKzIwMyw3IEBACiBzdHJ1Y3QgYWRkckNhY2hlIHsKICAgICBjaGFyICAgICAgICAgICAqYWRkcjsKICAgICBpbnQgICAgICAgICAgICBzdGF0dXM7Ci0gICAgc3RydWN0IHRpbWV2YWwgbGFzdEhpdDsKKyAgICBzdHJ1Y3QgdGltZXZhbCBsYXN0SGl0TTsKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgYWRkckNhY2hlIGFkZHJDYWNoZVtTTk1QX0FERFJDQUNIRV9TSVpFXTsKQEAgLTIyNywxMSArMjQ5LDEzIEBACiAKIGludCAgICAgIG5ldHNubXBfcnVubmluZyA9IDE7CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9BTExPQ0FURV9HTE9CQUxDQUNIRUlECiBpbnQKIG5ldHNubXBfYWxsb2NhdGVfZ2xvYmFsY2FjaGVpZCh2b2lkKQogewogICAgIHJldHVybiArK2N1cnJlbnRfZ2xvYmFsaWQ7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9BTExPQ0FURV9HTE9CQUxDQUNIRUlEICovCiAKIGludAogbmV0c25tcF9nZXRfbG9jYWxfY2FjaGlkKG5ldHNubXBfY2FjaGVtYXAgKmNhY2hlX3N0b3JlLCBpbnQgZ2xvYmFsaWQpCkBAIC01OTQsMTUgKzYxOCw3IEBACiAgICAgfQogfQogCi0KLWludAotZ2V0TmV4dFNlc3NJRCh2b2lkKQotewotICAgIHN0YXRpYyBpbnQgICAgICBTZXNzaW9uSUQgPSAwOwotCi0gICAgcmV0dXJuICsrU2Vzc2lvbklEOwotfQotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQUdFTlRfQ0hFQ0tfQU5EX1BST0NFU1MKIC8qKgogICogVGhpcyBmdW5jdGlvbiBjaGVja3MgZm9yIHBhY2tldHMgYXJyaXZpbmcgb24gdGhlIFNOTVAgcG9ydCBhbmQKICAqIHByb2Nlc3NlcyB0aGVtKHNubXBfcmVhZCkgaWYgc29tZSBhcmUgZm91bmQsIHVzaW5nIHRoZSBzZWxlY3QoKS4gSWYgYmxvY2sKQEAgLTY4NSw3ICs3MDEsNyBAQAogCiAgICAgcmV0dXJuIGNvdW50OwogfQotCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9BR0VOVF9DSEVDS19BTkRfUFJPQ0VTUyAqLwogCiAvKgogICogU2V0IHVwIHRoZSBhZGRyZXNzIGNhY2hlLiAgCkBAIC03NDEsNyArNzU3LDcgQEAKICAgICAvKgogICAgICAqIEZpcnN0IGdldCB0aGUgY3VycmVudCBhbmQgb2xkZXN0IGFsbG93YWJsZSB0aW1lc3RhbXBzCiAgICAgICovCi0gICAgZ2V0dGltZW9mZGF5KCZub3csIChzdHJ1Y3QgdGltZXpvbmUqKSBOVUxMKTsKKyAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJm5vdyk7CiAgICAgYWdlZC50dl9zZWMgPSBub3cudHZfc2VjIC0gU05NUF9BRERSQ0FDSEVfTUFYQUdFOwogICAgIGFnZWQudHZfdXNlYyA9IG5vdy50dl91c2VjOwogCkBAIC03NjEsOCArNzc3LDggQEAKICAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgICAqIGZvdW5kIGEgbWF0Y2gKICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBhZGRyQ2FjaGVbaV0ubGFzdEhpdCA9IG5vdzsKLSAgICAgICAgICAgICAgICBpZiAodGltZXJjbXAoJmFkZHJDYWNoZVtpXS5sYXN0SGl0LCAmYWdlZCwgPCkpCisgICAgICAgICAgICAgICAgYWRkckNhY2hlW2ldLmxhc3RIaXRNID0gbm93OworICAgICAgICAgICAgICAgIGlmICh0aW1lcmNtcCgmYWRkckNhY2hlW2ldLmxhc3RIaXRNLCAmYWdlZCwgPCkpCiAJCSAgICByYyA9IDE7IC8qIHNob3VsZCBoYXZlIGV4cGlyZWQsIHNvIGlzIG5ldyAqLwogCQllbHNlCiAJCSAgICByYyA9IDA7IC8qIG5vdCBleHBpcmVkLCBzbyBpcyBleGlzdGluZyBlbnRyeSAqLwpAQCAtNzcyLDcgKzc4OCw3IEBACiAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgKiBVc2VkLCBidXQgbm90IHRoaXMgYWRkcmVzcy4gY2hlY2sgaWYgaXQncyBzdGFsZS4KICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBpZiAodGltZXJjbXAoJmFkZHJDYWNoZVtpXS5sYXN0SGl0LCAmYWdlZCwgPCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodGltZXJjbXAoJmFkZHJDYWNoZVtpXS5sYXN0SGl0TSwgJmFnZWQsIDwpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICAgICAqIFN0YWxlLCByZXVzZQogICAgICAgICAgICAgICAgICAgICAgKi8KQEAgLTc5MCw4ICs4MDYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICAgICAgaWYgKG9sZGVzdCA8IDApCiAgICAgICAgICAgICAgICAgICAgICAgICBvbGRlc3QgPSBpOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aW1lcmNtcCgmYWRkckNhY2hlW2ldLmxhc3RIaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZGRyQ2FjaGVbb2xkZXN0XS5sYXN0SGl0LCA8KSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGltZXJjbXAoJmFkZHJDYWNoZVtpXS5sYXN0SGl0TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFkZHJDYWNoZVtvbGRlc3RdLmxhc3RIaXRNLCA8KSkKICAgICAgICAgICAgICAgICAgICAgICAgIG9sZGVzdCA9IGk7CiAgICAgICAgICAgICAgICAgfSAvKiBmcmVzaCAqLwogICAgICAgICAgICAgfSAvKiB1c2VkLCBubyBtYXRjaCAqLwpAQCAtODA4LDcgKzgyNCw3IEBACiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGFkZHJDYWNoZVt1bnVzZWRdLmFkZHIgPSBzdHJkdXAoYWRkcik7CiAgICAgICAgICAgICBhZGRyQ2FjaGVbdW51c2VkXS5zdGF0dXMgPSBTTk1QX0FERFJDQUNIRV9VU0VEOwotICAgICAgICAgICAgYWRkckNhY2hlW3VudXNlZF0ubGFzdEhpdCA9IG5vdzsKKyAgICAgICAgICAgIGFkZHJDYWNoZVt1bnVzZWRdLmxhc3RIaXRNID0gbm93OwogICAgICAgICB9CiAgICAgICAgIGVsc2UgeyAvKiBPdGhlcndpc2UsIHJlcGxhY2Ugb2xkZXN0IGVudHJ5ICovCiAgICAgICAgICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELApAQCAtODE4LDcgKzgzNCw3IEBACiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZyZWUoYWRkckNhY2hlW29sZGVzdF0uYWRkcik7CiAgICAgICAgICAgICBhZGRyQ2FjaGVbb2xkZXN0XS5hZGRyID0gc3RyZHVwKGFkZHIpOwotICAgICAgICAgICAgYWRkckNhY2hlW29sZGVzdF0ubGFzdEhpdCA9IG5vdzsKKyAgICAgICAgICAgIGFkZHJDYWNoZVtvbGRlc3RdLmxhc3RIaXRNID0gbm93OwogICAgICAgICB9CiAgICAgICAgIHJjID0gMTsKICAgICB9CkBAIC04MzYsMTEgKzg1MiwxMyBAQAogICoKICAqIGJhY2t3YXJkcyBjb21wYXRhYmlsaXR5OyBub3QgdXNlZCBhbnl3aGVyZQogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQUREUkNBQ0hFX0FHRQogdm9pZAogbmV0c25tcF9hZGRyY2FjaGVfYWdlKHZvaWQpCiB7CiAgICAgKHZvaWQpbmV0c25tcF9hZGRyY2FjaGVfYWRkKE5VTEwpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQUREUkNBQ0hFX0FHRSAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi1vLSoqKioqKgogICogbmV0c25tcF9hZ2VudF9jaGVja19wYWNrZXQKQEAgLTk3MSw5ICs5ODksMTEgQEAKICAgICAgICAgICAgIGNhc2UgU05NUF9NU0dfUkVTUE9OU0U6CiAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0RFQlVHLCAiICBSRVNQT05TRSBtZXNzYWdlXG4iKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICAgICBjYXNlIFNOTVBfTVNHX1NFVDoKICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfREVCVUcsICIgIFNFVCBtZXNzYWdlXG4iKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgICAgIGNhc2UgU05NUF9NU0dfVFJBUDoKICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfREVCVUcsICIgIFRSQVAgbWVzc2FnZVxuIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC05OTEsNiArMTAxMSw3IEBACiAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0RFQlVHLCAiICBSRVBPUlQgbWVzc2FnZVxuIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICAgICBjYXNlIFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9SRVNFUlZFMToKICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfREVCVUcsICIgIElOVEVSTkFMIFJFU0VSVkUxIG1lc3NhZ2VcbiIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTAxNCw2ICsxMDM1LDcgQEAKICAgICAgICAgICAgIGNhc2UgU05NUF9NU0dfSU5URVJOQUxfU0VUX1VORE86CiAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0RFQlVHLCAiICBJTlRFUk5BTCBVTkRPIG1lc3NhZ2VcbiIpOwogICAgICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19ERUJVRywgIiAgVU5LTk9XTiBtZXNzYWdlLCB0eXBlPSUwMlhcbiIsCkBAIC0xMDc1LDcgKzEwOTcsNiBAQAogICAgIGFnZW50X25zYXAgICAgICphID0gTlVMTCwgKm4gPSBOVUxMLCAqKnByZXZOZXh0ID0gJmFnZW50X25zYXBfbGlzdDsKICAgICBpbnQgICAgICAgICAgICAgaGFuZGxlID0gMDsKICAgICB2b2lkICAgICAgICAgICAqaXNwID0gTlVMTDsKLSAgICBpbnQgICAgICAgICAgICAgcmM7CiAKICAgICBpZiAodCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTExMDgsNyArMTEyOSw3IEBACiAKICAgICAvKiBPcHRpb25hbCBzdXBwbGltZW50YWwgdHJhbnNwb3J0IGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYW5kCiAgICAgICAgZmluYWwgY2FsbCB0byBhY3R1YWxseSBvcGVuIHRoZSB0cmFuc3BvcnQgKi8KLSAgICBpZiAoKHJjID0gbmV0c25tcF9zZXNzX2NvbmZpZ190cmFuc3BvcnQocy0+dHJhbnNwb3J0X2NvbmZpZ3VyYXRpb24sIHQpKQorICAgIGlmIChuZXRzbm1wX3Nlc3NfY29uZmlnX3RyYW5zcG9ydChzLT50cmFuc3BvcnRfY29uZmlndXJhdGlvbiwgdCkKICAgICAgICAgIT0gU05NUEVSUl9TVUNDRVNTKSB7CiAgICAgICAgIFNOTVBfRlJFRShzKTsKICAgICAgICAgU05NUF9GUkVFKG4pOwpAQCAtMTI2Myw2ICsxMjg0LDcgQEAKICAgICAgICAgcmV0dXJuIDA7ICAgICAgICAgICAgICAgLyogIE5vIGVycm9yIGlmICEgTUFTVEVSX0FHRU5UICAqLwogICAgIH0KIAorI2lmbmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCiAgICAgLyoKICAgICAgKiBIYXZlIHNwZWNpZmljIGFnZW50IHBvcnRzIGJlZW4gc3BlY2lmaWVkPyAgCiAgICAgICovCkBAIC0xMzMyLDYgKzEzNTQsNyBAQAogICAgICAgICB9CiAgICAgfSB3aGlsZShzdCAmJiAqc3QgIT0gJ1wwJyk7CiAgICAgU05NUF9GUkVFKGJ1Zik7CisjZW5kaWYgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLwogCiAjaWZkZWYgVVNJTkdfQUdFTlRYX01BU1RFUl9NT0RVTEUKICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKQEAgLTE0MTAsMTIgKzE0MzMsOCBAQAogICAgICAgICBzbm1wX2ZyZWVfcGR1KGFzcC0+cGR1KTsKICAgICBpZiAoYXNwLT5yZXFpbmZvKQogICAgICAgICBuZXRzbm1wX2ZyZWVfYWdlbnRfcmVxdWVzdF9pbmZvKGFzcC0+cmVxaW5mbyk7Ci0gICAgaWYgKGFzcC0+dHJlZWNhY2hlKSB7Ci0gICAgICAgIFNOTVBfRlJFRShhc3AtPnRyZWVjYWNoZSk7Ci0gICAgfQotICAgIGlmIChhc3AtPmJ1bGtjYWNoZSkgewotICAgICAgICBTTk1QX0ZSRUUoYXNwLT5idWxrY2FjaGUpOwotICAgIH0KKyAgICBTTk1QX0ZSRUUoYXNwLT50cmVlY2FjaGUpOworICAgIFNOTVBfRlJFRShhc3AtPmJ1bGtjYWNoZSk7CiAgICAgaWYgKGFzcC0+cmVxdWVzdHMpIHsKICAgICAgICAgaW50ICAgICAgICAgICAgIGk7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhc3AtPnZiY291bnQ7IGkrKykgewpAQCAtMTYwMCw5ICsxNjE5LDYgQEAKIGludAogbmV0c25tcF93cmFwX3VwX3JlcXVlc3QobmV0c25tcF9hZ2VudF9zZXNzaW9uICphc3AsIGludCBzdGF0dXMpCiB7Ci0gICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJfcHRyOwotICAgIGludCAgICAgICAgICAgICBpOwotCiAgICAgLyoKICAgICAgKiBpZiB0aGlzIHJlcXVlc3Qgd2FzIGEgc2V0LCBjbGVhciB0aGUgZ2xvYmFsIG5vdyB0aGF0IHdlIGFyZQogICAgICAqIGRvbmUuCkBAIC0xNjIyLDYgKzE2MzgsNyBAQAogICAgICAgICAgICAgYXNwLT5zdGF0dXMgPSBzdGF0dXM7CiAKICAgICAgICAgc3dpdGNoIChhc3AtPnBkdS0+Y29tbWFuZCkgeworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgICAgIGNhc2UgU05NUF9NU0dfSU5URVJOQUxfU0VUX0JFR0lOOgogICAgICAgICAgICAgY2FzZSBTTk1QX01TR19JTlRFUk5BTF9TRVRfUkVTRVJWRTE6CiAgICAgICAgICAgICBjYXNlIFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9SRVNFUlZFMjoKQEAgLTE2MzEsNiArMTY0OCw3IEBACiAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgc2F2ZV9zZXRfY2FjaGUoYXNwKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgICAgICAgICAgY2FzZSBTTk1QX01TR19HRVRORVhUOgogICAgICAgICAgICAgICAgIF9maXhfZW5kb2ZtaWJ2aWV3KGFzcCk7CkBAIC0xNjQ5LDYgKzE2NjcsNyBAQAogICAgICAgICAgKiB2MSBxdWVyeS4gIFNlZSBSRkMyNTc2IC0gc2VjdGlvbiA0LjMKICAgICAgICAgICovCiAjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TTk1QVjEKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIGlmICgoYXNwLT5wZHUtPmNvbW1hbmQgPT0gU05NUF9NU0dfU0VUKSAmJgogICAgICAgICAgICAgKGFzcC0+cGR1LT52ZXJzaW9uID09IFNOTVBfVkVSU0lPTl8xKSkgewogICAgICAgICAgICAgc3dpdGNoIChhc3AtPnN0YXR1cykgewpAQCAtMTY4Myw4ICsxNzAyLDEwIEBACiAgICAgICAgICAqLwogICAgICAgICBpZiAoKGFzcC0+cGR1LT5jb21tYW5kICE9IFNOTVBfTVNHX1NFVCkgJiYKICAgICAgICAgICAgIChhc3AtPnBkdS0+dmVyc2lvbiA9PSBTTk1QX1ZFUlNJT05fMSkpIHsKLSAgICAgICAgICAgIGZvciAodmFyX3B0ciA9IGFzcC0+cGR1LT52YXJpYWJsZXMsIGkgPSAxOwotICAgICAgICAgICAgICAgICB2YXJfcHRyICE9IE5VTEw7IHZhcl9wdHIgPSB2YXJfcHRyLT5uZXh0X3ZhcmlhYmxlLCBpKyspIHsKKyAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyX3B0ciA9IGFzcC0+cGR1LT52YXJpYWJsZXM7CisgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgIGkgPSAxOworCisgICAgICAgICAgICB3aGlsZSAodmFyX3B0ciAhPSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgc3dpdGNoICh2YXJfcHRyLT50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgU05NUF9OT1NVQ0hPQkpFQ1Q6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgU05NUF9OT1NVQ0hJTlNUQU5DRToKQEAgLTE2OTUsOCArMTcxNiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYXNwLT5pbmRleCA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdmFyX3B0ciA9IHZhcl9wdHItPm5leHRfdmFyaWFibGU7CisgICAgICAgICAgICAgICAgKytpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAjZW5kaWYgLyogc25tcHYxIHN1cHBvcnQgKi8KICAgICB9IC8qKiBpZiBhc3AtPnBkdSAqLwogCkBAIC0xNzQyLDEwICsxNzY2LDE2IEBACiAgICAgfQogCiAgICAgaWYgKChzdGF0dXMgPT0gU05NUF9FUlJfTk9FUlJPUikgJiYgKGFzcC0+cGR1KSkgeworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljX2J5KChhc3AtPnBkdS0+Y29tbWFuZCA9PSBTTk1QX01TR19TRVQgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQVRfU05NUElOVE9UQUxTRVRWQVJTIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFUX1NOTVBJTlRPVEFMUkVRVkFSUyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudF92YXJiaW5kcyhhc3AtPnBkdS0+dmFyaWFibGVzKSk7CisjZWxzZSAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljX2J5KFNUQVRfU05NUElOVE9UQUxSRVFWQVJTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRfdmFyYmluZHMoYXNwLT5wZHUtPnZhcmlhYmxlcykpOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAgICAgfSBlbHNlIHsKICAgICAgICAgLyoKICAgICAgICAgICogVXNlIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgcmVxdWVzdApAQCAtMTc5MCw2ICsxODIwLDcgQEAKICAgICByZXR1cm4gMTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RVTVBfU0VTU19MSVNUCiB2b2lkCiBkdW1wX3Nlc3NfbGlzdCh2b2lkKQogewpAQCAtMTgwMSw2ICsxODMyLDcgQEAKICAgICB9CiAgICAgREVCVUdNU0coKCJzbm1wX2FnZW50IiwgIltOSUxdXG4iKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9EVU1QX1NFU1NfTElTVCAqLwogCiB2b2lkCiBuZXRzbm1wX3JlbW92ZV9hbmRfZnJlZV9hZ2VudF9zbm1wX3Nlc3Npb24obmV0c25tcF9hZ2VudF9zZXNzaW9uICphc3ApCkBAIC0xODI5LDYgKzE4NjEsNyBAQAogICAgIH0KIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZSRUVfQUdFTlRfU05NUF9TRVNTSU9OX0JZX1NFU1NJT04KIHZvaWQKIG5ldHNubXBfZnJlZV9hZ2VudF9zbm1wX3Nlc3Npb25fYnlfc2Vzc2lvbihuZXRzbm1wX3Nlc3Npb24gKiBzZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpmcmVlX3JlcXVlc3QpCkBAIC0xODQ5LDYgKzE4ODIsNyBAQAogICAgICAgICB9CiAgICAgfQogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRlJFRV9BR0VOVF9TTk1QX1NFU1NJT05fQllfU0VTU0lPTiAqLwogCiAvKiogaGFuZGxlcyBhbiBpbmNvbWluZyBTTk1QIHBhY2tldCBpbnRvIHRoZSBhZ2VudCAqLwogaW50CkBAIC0xOTY2LDcgKzIwMDAsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3N1YnRyZWUgKnRwKQogewogICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0ID0gTlVMTDsKLSAgICBpbnQgICAgICAgICAgICAgY2FjaGVpZDsKIAogICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwgImFkZF92Yl90b19jYWNoZSglOHAsICVkLCAiLCBhc3AsIHZiY291bnQpKTsKICAgICBERUJVR01TR09JRCgoInNubXBfYWdlbnQiLCB2YXJiaW5kX3B0ci0+bmFtZSwKQEAgLTIwMzAsNyArMjA2Myw5IEBACiAgICAgICAgICAgICB2YXJiaW5kX3B0ci0+dHlwZSA9IFNOTVBfRU5ET0ZNSUJWSUVXOwogICAgICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIGNhc2UgU05NUF9NU0dfU0VUOgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICBjYXNlIFNOTVBfTVNHX0dFVDoKICAgICAgICAgICAgIHZhcmJpbmRfcHRyLT50eXBlID0gU05NUF9OT1NVQ0hPQkpFQ1Q7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIwMzksNiArMjA3NCw4IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgIC8qIHNob3VsZG4ndCBnZXQgaGVyZSAqLwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKKyAgICAgICAgaW50IGNhY2hlaWQ7CisKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCAidHAtPnN0YXJ0ICIpKTsKICAgICAgICAgREVCVUdNU0dPSUQoKCJzbm1wX2FnZW50IiwgdHAtPnN0YXJ0X2EsIHRwLT5zdGFydF9sZW4pKTsKICAgICAgICAgREVCVUdNU0coKCJzbm1wX2FnZW50IiwgIiwgdHAtPmVuZCAiKSk7CkBAIC0yMDY0LDggKzIxMDEsMTAgQEAKICAgICAgICAgLyoKICAgICAgICAgICogZm9yIG5vbi1TRVQgbW9kZXMsIHNldCB0aGUgdHlwZSB0byBOVUxMIAogICAgICAgICAgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIGlmICghTU9ERV9JU19TRVQoYXNwLT5wZHUtPmNvbW1hbmQpKSB7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmFzcCIsICJhc3AgJXAgcmVxaW5mbyAlcCBhc3NpZ25lZCB0byByZXF1ZXN0XG4iLAorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgICAgICAgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6YXNwIiwgImFzcCAlcCByZXFpbmZvICVwIGFzc2lnbmVkIHRvIHJlcXVlc3RcbiIsCiAgICAgICAgICAgICAgICAgICAgIGFzcCwgYXNwLT5yZXFpbmZvKSk7CiAgICAgICAgICAgICBpZiAodmFyYmluZF9wdHItPnR5cGUgPT0gQVNOX1BSSVZfSU5DTF9SQU5HRSkgewogICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwgInZhcmJpbmQgJWQgaXMgaW5jbHVzaXZlXG4iLApAQCAtMjA3Myw3ICsyMTEyLDkgQEAKICAgICAgICAgICAgICAgICByZXF1ZXN0LT5pbmNsdXNpdmUgPSAxOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdmFyYmluZF9wdHItPnR5cGUgPSBBU05fTlVMTDsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIH0KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgICAgICAvKgogICAgICAgICAgKiBwbGFjZSB0aGVtIGluIGEgY2FjaGUgCkBAIC0yNDAwLDYgKzI0NDEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwKTsKICAgICAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBjYXNlIFNOTVBfTVNHX1NFVDoKICAgICAgICAgICAgIHZpZXcgPSBpbl9hX3ZpZXcodmFyYmluZF9wdHItPm5hbWUsICZ2YXJiaW5kX3B0ci0+bmFtZV9sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzcC0+cGR1LCB2YXJiaW5kX3B0ci0+dHlwZSk7CkBAIC0yNDA4LDYgKzI0NTAsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0FDQ0VTUzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgICAgIGNhc2UgU05NUF9NU0dfR0VUTkVYVDoKICAgICAgICAgY2FzZSBTTk1QX01TR19HRVRCVUxLOgpAQCAtMjQ3OCwxMCArMjUyMSw3IEBACiAgICAgICAgICAgICBpZiAoIW5ldHNubXBfYWRkX3ZhcmJpbmRfdG9fY2FjaGUoYXNwLCBhc3AtPnJlcXVlc3RzW2ldLmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzcC0+cmVxdWVzdHNbaV0ucmVxdWVzdHZiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzcC0+cmVxdWVzdHNbaV0uc3VidHJlZS0+bmV4dCkpIHsKLSAgICAgICAgICAgICAgICBpZiAob2xkX3RyZWVjYWNoZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFNOTVBfRlJFRShvbGRfdHJlZWNhY2hlKTsKLSAgICAgICAgICAgICAgICAgICAgb2xkX3RyZWVjYWNoZSA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFNOTVBfRlJFRShvbGRfdHJlZWNhY2hlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChhc3AtPnJlcXVlc3RzW2ldLnJlcXVlc3R2Yi0+dHlwZSA9PSBBU05fUFJJVl9SRVRSWSkgewogICAgICAgICAgICAgLyoKQEAgLTI0OTEsMTcgKzI1MzEsMTIgQEAKICAgICAgICAgICAgIGlmICghbmV0c25tcF9hZGRfdmFyYmluZF90b19jYWNoZShhc3AsIGFzcC0+cmVxdWVzdHNbaV0uaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNwLT5yZXF1ZXN0c1tpXS5yZXF1ZXN0dmIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNwLT5yZXF1ZXN0c1tpXS5zdWJ0cmVlKSkgewotICAgICAgICAgICAgICAgIGlmIChvbGRfdHJlZWNhY2hlICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgU05NUF9GUkVFKG9sZF90cmVlY2FjaGUpOwotICAgICAgICAgICAgICAgICAgICBvbGRfdHJlZWNhY2hlID0gTlVMTDsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgU05NUF9GUkVFKG9sZF90cmVlY2FjaGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKG9sZF90cmVlY2FjaGUgIT0gTlVMTCkgewotICAgICAgICBTTk1QX0ZSRUUob2xkX3RyZWVjYWNoZSk7Ci0gICAgfQorICAgIFNOTVBfRlJFRShvbGRfdHJlZWNhY2hlKTsKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KIApAQCAtMjUxNCw2ICsyNTQ5LDcgQEAKICAgICB9CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ERUxFVEVfU1VCVFJFRV9DQUNIRQogdm9pZAogbmV0c25tcF9kZWxldGVfc3VidHJlZV9jYWNoZShuZXRzbm1wX2FnZW50X3Nlc3Npb24gKmFzcCkKIHsKQEAgLTI1MjYsNyArMjU2Miw5IEBACiAgICAgICAgIGFzcC0+dHJlZWNhY2hlX251bS0tOwogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RFTEVURV9TVUJUUkVFX0NBQ0hFICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DSEVDS19BTExfUkVRVUVTVFNfRVJST1IKIC8qCiAgKiBjaGVjayBhbGwgcmVxdWVzdHMgZm9yIGVycm9ycwogICoKQEAgLTI1NTcsNyArMjU5NSw5IEBACiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX0FMTF9SRVFVRVNUU19FUlJPUiAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfUkVRVUVTVFNfRVJST1IKIGludAogbmV0c25tcF9jaGVja19yZXF1ZXN0c19lcnJvcihuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCiB7CkBAIC0yNTcwLDYgKzI2MTAsNyBAQAogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1JFUVVFU1RTX0VSUk9SICovCiAKIGludAogbmV0c25tcF9jaGVja19yZXF1ZXN0c19zdGF0dXMobmV0c25tcF9hZ2VudF9zZXNzaW9uICphc3AsCkBAIC0yNjQ1LDYgKzI2ODYsNyBAQAogICAgICAgICAgKiBlcnJvcnMpLgogICAgICAgICAgKi8KICAgICAgICAgc3dpdGNoIChhc3AtPm1vZGUpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIGNhc2UgTU9ERV9TRVRfQ09NTUlUOgogICAgICAgICAgICAgcmV0c3RhdHVzID0gbmV0c25tcF9jaGVja19yZXF1ZXN0c19zdGF0dXMoYXNwLAogCQkJCQkJICAgICAgYXNwLT50cmVlY2FjaGVbaV0uCkBAIC0yNjU4LDYgKzI3MDAsNyBAQAogCQkJCQkJICAgICAgcmVxdWVzdHNfYmVnaW4sCiAJCQkJCQkgICAgICBTTk1QX0VSUl9VTkRPRkFJTEVEKTsKICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXRzdGF0dXMgPSBuZXRzbm1wX2NoZWNrX3JlcXVlc3RzX3N0YXR1cyhhc3AsCkBAIC0yNzY4LDYgKzI4MTEsNyBAQAogICAgICAgICAgKiBpZiB0aGUgdG9wIHJlcXVlc3QgaXMgYSBzZXQsIGRvbid0IHBvcCBpdAogICAgICAgICAgKiBvZmYgaWYgdGhlcmUgYXJlIGRlbGVnYXRlZCByZXF1ZXN0cwogICAgICAgICAgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIGlmICgobmV0c25tcF9hZ2VudF9xdWV1ZWRfbGlzdC0+cGR1LT5jb21tYW5kID09IFNOTVBfTVNHX1NFVCkgJiYKICAgICAgICAgICAgIChhZ2VudF9kZWxlZ2F0ZWRfbGlzdCkpIHsKIApAQCAtMjc3OCw2ICsyODIyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxlZ2F0ZWQgcmVxdWVzdHMgZmluaXNoLCBhc3AgPSAlOHBcbiIsIGFzcCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgICAgICAvKgogICAgICAgICAgKiBwb3AgdGhlIGZpcnN0IHJlcXVlc3QgYW5kIHByb2Nlc3MgaXQKQEAgLTI4NDksNiArMjg5NCw3IEBACiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6CiAgICAgICAgIG5ldHNubXBfY2hlY2tfYWxsX3JlcXVlc3RzX3N0YXR1cyhhc3AsIFNOTVBfRVJSX0NPTU1JVEZBSUxFRCk7CiAgICAgICAgIGdvdG8gc2V0dG9wOwpAQCAtMjg4NCw2ICsyOTMwLDcgQEAKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC0zMDgzLDYgKzMxMzAsNyBAQAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogaW50CiBoYW5kbGVfc2V0KG5ldHNubXBfYWdlbnRfc2Vzc2lvbiAqYXNwKQogewpAQCAtMzE4MCw2ICszMjI4LDcgQEAKICAgICB9CiAgICAgcmV0dXJuIGFzcC0+c3RhdHVzOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiBpbnQKIG5ldHNubXBfaGFuZGxlX3JlcXVlc3QobmV0c25tcF9hZ2VudF9zZXNzaW9uICphc3AsIGludCBzdGF0dXMpCkBAIC0zMjA3LDYgKzMyNTYsNyBAQAogICAgICAgICAvKgogICAgICAgICAgKiBjaGVjayBmb3Igc2V0IHJlcXVlc3QKICAgICAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBpZiAoYXNwLT5wZHUtPmNvbW1hbmQgPT0gU05NUF9NU0dfU0VUKSB7CiAgICAgICAgICAgICBuZXRzbm1wX3Byb2Nlc3Npbmdfc2V0ID0gYXNwOwogCkBAIC0zMjIyLDYgKzMyNzIsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgfQogICAgICAgICB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogCiAgICAgLyoKQEAgLTMyNzMsNiArMzMyNCw3IEBACiAgICAgICovCiAgICAgc3dpdGNoIChhc3AtPnBkdS0+Y29tbWFuZCkgewogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgU05NUF9NU0dfSU5URVJOQUxfU0VUX1JFU0VSVkUyOgogICAgIGNhc2UgU05NUF9NU0dfSU5URVJOQUxfU0VUX0FDVElPTjoKICAgICBjYXNlIFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9DT01NSVQ6CkBAIC0zMjgyLDYgKzMzMzQsNyBAQAogICAgICAgICBpZiAoc3RhdHVzICE9IFNOTVBfRVJSX05PRVJST1IpCiAgICAgICAgICAgICByZXR1cm4gc3RhdHVzOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIGNhc2UgU05NUF9NU0dfR0VUOgogICAgIGNhc2UgU05NUF9NU0dfR0VUTkVYVDoKQEAgLTMzMDUsOCArMzM1OCwxMCBAQAogICAgICAgICAgKiBmYWxsIHRocm91Z2ggCiAgICAgICAgICAqLwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgU05NUF9NU0dfSU5URVJOQUxfU0VUX0JFR0lOOgogICAgIGNhc2UgU05NUF9NU0dfSU5URVJOQUxfU0VUX1JFU0VSVkUxOgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGFzcC0+dmJjb3VudCA9IGNvdW50X3ZhcmJpbmRzKGFzcC0+cGR1LT52YXJpYWJsZXMpOwogICAgICAgICBpZiAoYXNwLT52YmNvdW50KSAvKiBlZmVuY2UgZG9lc24ndCBsaWtlIDAgc2l6ZSBhbGxvY3MgKi8KQEAgLTMzOTYsNiArMzQ1MSw3IEBACiAgICAgICAgIHN0YXR1cyA9IGhhbmRsZV9nZXRuZXh0X2xvb3AoYXNwKTsKICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBTTk1QX01TR19TRVQ6CiAjaWZkZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCiAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT1RXUklUQUJMRTsKQEAgLTM0MjQsNiArMzQ4MCw3IEBACiAgICAgICAgICAqIGFzcCByZWxhdGVkIGNhY2hlIGlzIHNhdmVkIGluIGNsZWFudXAgCiAgICAgICAgICAqLwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIGNhc2UgU05NUF9NU0dfUkVTUE9OU0U6CiAgICAgICAgIHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1NOTVBJTkdFVFJFU1BPTlNFUyk7CkBAIC0zNDg2LDkgKzM1NDMsMTEgQEAKICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX1ZBTFVFOwogICAgICAgICAgICAgICovCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIGNhc2UgU05NUF9NU0dfSU5URVJOQUxfU0VUX1JFU0VSVkUxOgogICAgICAgICAgICAgcmVxdWVzdC0+c3RhdHVzID0gU05NUF9FUlJfTk9DUkVBVElPTjsKICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXF1ZXN0LT5zdGF0dXMgPSBTTk1QX0VSUl9OT1NVQ0hOQU1FOyAgICAgIC8qIFdXVzogY29ycmVjdD8gKi8KQEAgLTM1MzIsNiArMzU5MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl92YWx1ZSk7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRVFVRVNUX1NFVF9FUlJPUl9JRFgKIC8qKiBzZXQgZXJyb3IgZm9yIGEgcmVxdWVzdCB3aXRoaW4gYSByZXF1ZXN0IGxpc3QKICAqIEBwYXJhbSByZXF1ZXN0IGhlYWQgb2YgdGhlIHJlcXVlc3QgbGlzdAogICogQHBhcmFtIGVycm9yX3ZhbHVlIGVycm9yIHZhbHVlIGZvciByZXF1ZXN0CkBAIC0zNTU5LDYgKzM2MTksNyBAQAogICAgIHJldHVybiBfcmVxdWVzdF9zZXRfZXJyb3IocmVxLCByZXF1ZXN0LT5hZ2VudF9yZXFfaW5mby0+bW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3ZhbHVlKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFUVVFU1RfU0VUX0VSUk9SX0lEWCAqLwogCiAvKiogc2V0IGVycm9yIGZvciBhbGwgcmVxdWVzdHMKICAqIEBwYXJhbSByZXF1ZXN0cyByZXF1ZXN0IGxpc3QKQEAgLTM1OTQsMTEgKzM2NTUsMTEgQEAKIH0KIAogLyoqCi0gKiBSZXR1cm4gdGhlIHZhbHVlIG9mICdzeXNVcFRpbWUnIGF0IHRoZSBnaXZlbiBtYXJrZXIKKyAqIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHBtIGFuZCB0aGUgYWdlbnQgc3RhcnQgdGltZSBpbiBodW5kcmVkdGhzIG9mCisgKiBhIHNlY29uZC4KKyAqIFxkZXByZWNhdGVkIERvbid0IHVzZSBpbiBuZXcgY29kZS4KICAqCi0gKiBAbm90ZSBVc2UgbmV0c25tcF9nZXRfYWdlbnRfcnVudGltZSgpIGluc3RlYWQgb2YgdGhpcyBmdW5jdGlvbiBpZiB5b3UgbmVlZAotICogICB0byBrbm93IGhvdyBtdWNoIHRpbWUgZWxhcHNlZCBzaW5jZSBuZXRzbm1wX3NldF9hZ2VudF9zdGFydHRpbWUoKSBoYXMgYmVlbgotICogICBjYWxsZWQuCisgKiBAcGFyYW1baW5dIHBtIEFuIGFic29sdXRlIHRpbWUgYXMgZS5nLiByZXBvcnRlZCBieSBnZXR0aW1lb2ZkYXkoKS4KICAqLwogdV9sb25nCiBuZXRzbm1wX21hcmtlcl91cHRpbWUobWFya2VyX3QgcG0pCkBAIC0zNjEwLDkgKzM2NzEsMTQgQEAKICAgICByZXR1cm4gcmVzOwogfQogCi0gICAgICAgICAgICAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgICAgICAgICAgICogc3RydWN0IHRpbWV2YWwgZXF1aXZhbGVudHMgb2YgdGhlc2UgCi0gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKgorICogUmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHYgYW5kIHRoZSBhZ2VudCBzdGFydCB0aW1lIGluIGh1bmRyZWR0aHMgb2YKKyAqIGEgc2Vjb25kLgorICoKKyAqIFxkZXByZWNhdGVkIFVzZSBuZXRzbm1wX2dldF9hZ2VudF91cHRpbWUoKSBpbnN0ZWFkLgorICoKKyAqIEBwYXJhbVtpbl0gdHYgQW4gYWJzb2x1dGUgdGltZSBhcyBlLmcuIHJlcG9ydGVkIGJ5IGdldHRpbWVvZmRheSgpLgorICovCiB1X2xvbmcKIG5ldHNubXBfdGltZXZhbF91cHRpbWUoc3RydWN0IHRpbWV2YWwgKiB0dikKIHsKQEAgLTM2MjEsMTAgKzM2ODcsMTUgQEAKIAogCiBzdHJ1Y3QgdGltZXZhbCAgc3RhcnR0aW1lOworc3RhdGljIHN0cnVjdCB0aW1ldmFsIHN0YXJ0dGltZU07CiAKIC8qKgogICogUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgdmFyaWFibGUgaW4gd2hpY2ggdGhlIE5ldC1TTk1QIHN0YXJ0IHRpbWUgaGFzCiAgKiBiZWVuIHN0b3JlZC4KKyAqCisgKiBAbm90ZSBVc2UgbmV0c25tcF9nZXRfYWdlbnRfcnVudGltZSgpIGluc3RlYWQgb2YgdGhpcyBmdW5jdGlvbiBpZiB5b3UgbmVlZAorICogICB0byBrbm93IGhvdyBtdWNoIHRpbWUgZWxhcHNlZCBzaW5jZSBuZXRzbm1wX3NldF9hZ2VudF9zdGFydHRpbWUoKSBoYXMgYmVlbgorICogICBjYWxsZWQuCiAgKi8KIGNvbnN0X21hcmtlcl90ICAgICAgICAKIG5ldHNubXBfZ2V0X2FnZW50X3N0YXJ0dGltZSh2b2lkKQpAQCAtMzY0Myw0OCArMzcxNCw3MCBAQAogewogICAgIHN0cnVjdCB0aW1ldmFsIG5vdywgZGVsdGE7CiAKLSAgICBnZXR0aW1lb2ZkYXkoJm5vdywgTlVMTCk7Ci0gICAgTkVUU05NUF9USU1FUlNVQigmbm93LCAmc3RhcnR0aW1lLCAmZGVsdGEpOworICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmbm93KTsKKyAgICBORVRTTk1QX1RJTUVSU1VCKCZub3csICZzdGFydHRpbWVNLCAmZGVsdGEpOwogICAgIHJldHVybiBkZWx0YS50dl9zZWMgKiAodWludDY0X3QpMTAwICsgZGVsdGEudHZfdXNlYyAvIDEwMDAwOwogfQogCiAvKioKICAqIFNldCB0aGUgdGltZSBhdCB3aGljaCBOZXQtU05NUCBzdGFydGVkIGVpdGhlciB0byB0aGUgY3VycmVudCB0aW1lCiAgKiAoaWYgcyA9PSBOVUxMKSBvciB0byAqcyAoaWYgcyBpcyBub3QgTlVMTCkuCisgKgorICogQHNlZSBTZWUgYWxzbyBuZXRzbm1wX3NldF9hZ2VudF91cHRpbWUoKS4KICAqLwogdm9pZCAgICAgICAgICAgIAogbmV0c25tcF9zZXRfYWdlbnRfc3RhcnR0aW1lKG1hcmtlcl90IHMpCiB7Ci0gICAgaWYgKHMpCisgICAgaWYgKHMpIHsKKyAgICAgICAgc3RydWN0IHRpbWV2YWwgbm93QSwgbm93TTsKKwogICAgICAgICBzdGFydHRpbWUgPSAqKHN0cnVjdCB0aW1ldmFsKilzOwotICAgIGVsc2UKKyAgICAgICAgZ2V0dGltZW9mZGF5KCZub3dBLCBOVUxMKTsKKyAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZub3dNKTsKKyAgICAgICAgTkVUU05NUF9USU1FUlNVQigmc3RhcnR0aW1lLCAmbm93QSwgJnN0YXJ0dGltZU0pOworICAgICAgICBORVRTTk1QX1RJTUVSQUREKCZzdGFydHRpbWVNLCAmbm93TSwgJnN0YXJ0dGltZU0pOworICAgIH0gZWxzZSB7CiAgICAgICAgIGdldHRpbWVvZmRheSgmc3RhcnR0aW1lLCBOVUxMKTsKKyAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZzdGFydHRpbWVNKTsKKyAgICB9CiB9CiAKIAotICAgICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgICogUmV0dXJuIHRoZSBjdXJyZW50IHZhbHVlIG9mICdzeXNVcFRpbWUnIAotICAgICAgICAgICAgICAgICAqLworLyoqCisgKiBSZXR1cm4gdGhlIGN1cnJlbnQgdmFsdWUgb2YgJ3N5c1VwVGltZScgCisgKi8KIHVfbG9uZwogbmV0c25tcF9nZXRfYWdlbnRfdXB0aW1lKHZvaWQpCiB7Ci0gICAgc3RydWN0IHRpbWV2YWwgIG5vdzsKLSAgICBnZXR0aW1lb2ZkYXkoJm5vdywgTlVMTCk7CisgICAgc3RydWN0IHRpbWV2YWwgbm93LCBkZWx0YTsKIAotICAgIHJldHVybiBuZXRzbm1wX3RpbWV2YWxfdXB0aW1lKCZub3cpOworICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmbm93KTsKKyAgICBORVRTTk1QX1RJTUVSU1VCKCZub3csICZzdGFydHRpbWVNLCAmZGVsdGEpOworICAgIHJldHVybiBkZWx0YS50dl9zZWMgKiAxMDBVTCArIGRlbHRhLnR2X3VzZWMgLyAxMDAwMDsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NFVF9BR0VOVF9VUFRJTUUKKy8qKgorICogU2V0IHRoZSBzdGFydCB0aW1lIGZyb20gd2hpY2ggJ3N5c1VwVGltZScgaXMgY29tcHV0ZWQuCisgKgorICogQHBhcmFtW2luXSBoc2VjIE5ldyBzeXNVcFRpbWUgaW4gaHVuZHJlZHRocyBvZiBhIHNlY29uZC4KKyAqCisgKiBAc2VlIFNlZSBhbHNvIG5ldHNubXBfc2V0X2FnZW50X3N0YXJ0dGltZSgpLgorICovCiB2b2lkCiBuZXRzbm1wX3NldF9hZ2VudF91cHRpbWUodV9sb25nIGhzZWMpCiB7Ci0gICAgc3RydWN0IHRpbWV2YWwgIG5vdzsKKyAgICBzdHJ1Y3QgdGltZXZhbCAgbm93QSwgbm93TTsKICAgICBzdHJ1Y3QgdGltZXZhbCAgbmV3X3VwdGltZTsKIAotICAgIGdldHRpbWVvZmRheSgmbm93LCBOVUxMKTsKKyAgICBnZXR0aW1lb2ZkYXkoJm5vd0EsIE5VTEwpOworICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmbm93TSk7CiAgICAgbmV3X3VwdGltZS50dl9zZWMgPSBoc2VjIC8gMTAwOwotICAgIG5ld191cHRpbWUudHZfdXNlYyA9IChoc2VjIC0gbmV3X3VwdGltZS50dl9zZWMgKiAxMDApICogMTAwMDBMOwotICAgIE5FVFNOTVBfVElNRVJTVUIoJm5vdywgJm5ld191cHRpbWUsICZzdGFydHRpbWUpOworICAgIG5ld191cHRpbWUudHZfdXNlYyA9ICh1aW50MzJfdCkoaHNlYyAtIG5ld191cHRpbWUudHZfc2VjICogMTAwKSAqIDEwMDAwTDsKKyAgICBORVRTTk1QX1RJTUVSU1VCKCZub3dBLCAmbmV3X3VwdGltZSwgJnN0YXJ0dGltZSk7CisgICAgTkVUU05NUF9USU1FUlNVQigmbm93TSwgJm5ld191cHRpbWUsICZzdGFydHRpbWVNKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NFVF9BR0VOVF9VUFRJTUUgKi8KIAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMzczNSw2ICszODI4LDcgQEAKICAqIEBwYXJhbSBlcnJvcl92YWx1ZSBlcnJvciB2YWx1ZSBmb3IgcmVxdWVzdHMKICAqIEByZXR1cm4gZXJyb3JfdmFsdWUKICAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NFVF9BTExfUkVRVUVTVFNfRVJST1IKIGludAogbmV0c25tcF9zZXRfYWxsX3JlcXVlc3RzX2Vycm9yKG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cywKQEAgLTM3NDMsNCArMzgzNyw1IEBACiAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcl9hbGwocmVxdWVzdHMsIGVycm9yX3ZhbHVlKTsKICAgICByZXR1cm4gZXJyb3JfdmFsdWU7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TRVRfQUxMX1JFUVVFU1RTX0VSUk9SICovCiAvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L3NubXBfcGVybC5jIGIvYWdlbnQvc25tcF9wZXJsLmMKaW5kZXggM2YwYTIxNi4uNDhkOTY5NSAxMDA2NDQKLS0tIGEvYWdlbnQvc25tcF9wZXJsLmMKKysrIGIvYWdlbnQvc25tcF9wZXJsLmMKQEAgLTM2LDYgKzM2LDcgQEAKICAgICBjb25zdCBjaGFyICAgICAqcGVybF9pbml0X2ZpbGUgPSBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKIAkJCQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX1BFUkxfSU5JVF9GSUxFKTsKICAgICBjaGFyICAgICAgICAgICAgaW5pdF9maWxlW1NOTVBfTUFYQlVGXTsKKyAgICBpbnQgICAgICAgICAgICAgcmVzOwogCiAgICAgc3RhdGljIGludCAgICAgIGhhdmVfZG9uZV9pbml0ID0gMDsKIApAQCAtNTcsOCArNTgsMTEgQEAKICAgICBlbnYgPSBOVUxMOwogICAgIFBFUkxfU1lTX0lOSVQzKCZhcmdjLCAmYXJndiwgJmVudik7CiAgICAgbXlfcGVybCA9IHBlcmxfYWxsb2MoKTsKLSAgICBpZiAoIW15X3BlcmwpCisgICAgaWYgKCFteV9wZXJsKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJlbWJlZGRlZCBwZXJsIHN1cHBvcnQgZmFpbGVkIHRvIGluaXRpYWxpemUgKHBlcmxfYWxsb2MoKSlcbiIpOwogICAgICAgICBnb3RvIGJhaWxfb3V0OworICAgIH0KIAogICAgIHBlcmxfY29uc3RydWN0KG15X3BlcmwpOwogCkBAIC02NiwxMSArNzAsMjEgQEAKICAgICBQTF9leGl0X2ZsYWdzIHw9IFBFUkxfRVhJVF9ERVNUUlVDVF9FTkQ7CiAjZW5kaWYKIAotICAgIGlmIChwZXJsX3BhcnNlKG15X3BlcmwsIHhzX2luaXQsIDIsIGVtYmVkYXJncywgTlVMTCkpCisgICAgcmVzID0gcGVybF9wYXJzZShteV9wZXJsLCB4c19pbml0LCAyLCBlbWJlZGFyZ3MsIE5VTEwpOworICAgIGlmIChyZXMpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImVtYmVkZGVkIHBlcmwgc3VwcG9ydCBmYWlsZWQgdG8gaW5pdGlhbGl6ZSAocGVybF9wYXJzZSglcykiCisgICAgICAgICAgICAgICAgICIgcmV0dXJuZWQgJWQpXG4iLCBlbWJlZGFyZ3NbMV0sIHJlcyk7CiAgICAgICAgIGdvdG8gYmFpbF9vdXQ7CisgICAgfQogCi0gICAgaWYgKHBlcmxfcnVuKG15X3BlcmwpKQorICAgIHJlcyA9IHBlcmxfcnVuKG15X3BlcmwpOworICAgIGlmIChyZXMpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImVtYmVkZGVkIHBlcmwgc3VwcG9ydCBmYWlsZWQgdG8gaW5pdGlhbGl6ZSAocGVybF9ydW4oKSIKKyAgICAgICAgICAgICAgICAgIiByZXR1cm5lZCAlZClcbiIsIHJlcyk7CiAgICAgICAgIGdvdG8gYmFpbF9vdXQ7CisgICAgfQogCiAgICAgZnJlZShlbWJlZGFyZ3NbMF0pOwogICAgIGZyZWUoZW1iZWRhcmdzWzFdKTsKQEAgLTgyLDcgKzk2LDYgQEAKICAgYmFpbF9vdXQ6CiAgICAgZnJlZShlbWJlZGFyZ3NbMF0pOwogICAgIGZyZWUoZW1iZWRhcmdzWzFdKTsKLSAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZW1iZWRkZWQgcGVybCBzdXBwb3J0IGZhaWxlZCB0byBpbml0aWFsaXplXG4iKTsKICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAogCQkJICAgTkVUU05NUF9EU19BR0VOVF9ESVNBQkxFX1BFUkwsIDEpOwogICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL2FnZW50L3NubXBfdmFycy5jIGIvYWdlbnQvc25tcF92YXJzLmMKaW5kZXggYTRlYTM3OS4uMmY5ZTZlZiAxMDA2NDQKLS0tIGEvYWdlbnQvc25tcF92YXJzLmMKKysrIGIvYWdlbnQvc25tcF92YXJzLmMKQEAgLTM3NSw3ICszNzUsNyBAQAogICAgIGNsZWFyX3NlY19tb2QoKTsKICAgICBjbGVhcl9zbm1wX2VudW0oKTsKICAgICBjbGVhcl9jYWxsYmFjaygpOwotICAgIGNsZWFyX3VzZXJfbGlzdCgpOworICAgIHNodXRkb3duX3NlY21vZCgpOwogICAgIG5ldHNubXBfYWRkcmNhY2hlX2Rlc3Ryb3koKTsKICNpZmRlZiBORVRTTk1QX0NBTl9VU0VfTkxJU1QKICAgICBmcmVlX2ttZW0oKTsKZGlmZiAtLWdpdCBhL2FnZW50L3NubXBkLmMgYi9hZ2VudC9zbm1wZC5jCmluZGV4IGIzY2ZlMzIuLmNmYzdiY2UgMTAwNjQ0Ci0tLSBhL2FnZW50L3NubXBkLmMKKysrIGIvYWdlbnQvc25tcGQuYwpAQCAtMzYsNiArMzYsNyBAQAogICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KIAogI2lmIEhBVkVfSU9fSApAQCAtMTExLDYgKzExMiw5IEBACiAjaWYgSEFWRV9HUlBfSAogI2luY2x1ZGUgPGdycC5oPgogI2VuZGlmCisjaWZkZWYgSEFWRV9DUlREQkdfSAorI2luY2x1ZGUgPGNydGRiZy5oPgorI2VuZGlmCiAKICNpZm5kZWYgUEFUSF9NQVgKICMgaWZkZWYgX1BPU0lYX1BBVEhfTUFYCkBAIC0xMzYsMTkgKzE0MCwxNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0Lmg+CiAKICNpbmNsdWRlICJtMm0uaCIKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaD4KIAogI2luY2x1ZGUgInNubXBkLmgiCi0jaW5jbHVkZSAibWliZ3JvdXAvc3RydWN0LmgiCi0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbWliX21vZHVsZXMuaD4KIAotI2luY2x1ZGUgIm1pYmdyb3VwL3V0aWxfZnVuY3MuaCIKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGUuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oPgotI2luY2x1ZGUgIm1pYl9tb2R1bGVfaW5jbHVkZXMuaCIKIAogLyoKICAqIEluY2x1ZGUgd2luc2VydmljZS5oIHRvIHN1cHBvcnQgV2luZG93cyBTZXJ2aWNlCkBAIC0xNjIsNiArMTY0LDEwIEBACiAKICNlbmRpZgogCituZXRzbm1wX2ZlYXR1cmVfd2FudChsb2dnaW5nX2ZpbGUpCituZXRzbm1wX2ZlYXR1cmVfd2FudChsb2dnaW5nX3N0ZGlvKQorbmV0c25tcF9mZWF0dXJlX3dhbnQobG9nZ2luZ19zeXNsb2cpCisKIC8qCiAgKiBHbG9iYWxzLgogICovCkBAIC0xODksOSArMTk1LDExIEBACiBjb25zdCBjaGFyICAgICAqYXBwX25hbWUgPSAic25tcGQiOwogCiBleHRlcm4gaW50ICAgICAgbmV0c25tcF9ydW5uaW5nOworI2lmZGVmIFVTSU5HX1VUSUxfRlVOQ1NfUkVTVEFSVF9NT0RVTEUKIGV4dGVybiBjaGFyICAgKiphcmd2cmVzdGFydHA7CiBleHRlcm4gY2hhciAgICAqYXJndnJlc3RhcnQ7CiBleHRlcm4gY2hhciAgICAqYXJndnJlc3RhcnRuYW1lOworI2VuZGlmIC8qIFVTSU5HX1VUSUxfRlVOQ1NfUkVTVEFSVF9NT0RVTEUgKi8KIAogI2lmZGVmIFVTSU5HX1NNVVhfTU9EVUxFCiAjaW5jbHVkZSA8bWliZ3JvdXAvc211eC9zbXV4Lmg+CkBAIC0zODYsOSArMzk0LDEzIEBACiB7CiAgICAgLyogRGlzYWJsZSBhbGwgbG9ncyBhbmQgbG9nIHRoZSBlcnJvciB2aWEgc3lzbG9nICovCiAgICAgc25tcF9kaXNhYmxlX2xvZygpOworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HCiAgICAgc25tcF9lbmFibGVfc3lzbG9nKCk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRyAqLwogICAgIHNubXBfbG9nKExPR19FUlIsICJFeGl0aW5nIG9uIHNpZ25hbCAlZFxuIiwgYSk7CisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cKICAgICBzbm1wX2Rpc2FibGVfc3lzbG9nKCk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRyAqLwogICAgIGV4aXQoMSk7CiB9CiAKQEAgLTQyOSwxNiArNDQxLDEyIEBACiAgICAgaW50ICAgICAgICAgICAgIGRvbnRfZm9yayA9IDAsIGRvX2hlbHAgPSAwOwogICAgIGludCAgICAgICAgICAgICBsb2dfc2V0ID0gMDsKICAgICBpbnQgICAgICAgICAgICAgYWdlbnRfbW9kZSA9IC0xOwotICAgIGNoYXIgICAgICAgICAgICpjcHRyLCAqKmFyZ3ZwdHI7CiAgICAgY2hhciAgICAgICAgICAgKnBpZF9maWxlID0gTlVMTDsKICAgICBjaGFyICAgICAgICAgICAgb3B0aW9uX2NvbXBhdGFiaWxpdHlbXSA9ICItTGUiOwogI2lmIEhBVkVfR0VUUElECiAgICAgaW50IGZkOwogICAgIEZJTEUgICAgICAgICAgICpQSUQ7CiAjZW5kaWYKLSNpZiBIQVZFX0dFVFBXTkFNICYmIEhBVkVfUFdEX0gKLSAgICBzdHJ1Y3QgcGFzc3dkICAqaW5mbzsKLSNlbmRpZgogCiAjaWZuZGVmIFdJTjMyCiAgICAgLyoKQEAgLTUxOCwxMSArNTI2LDEzIEBACiAgICAgICAgICAgICBhcmd2W2ldID0gb3B0aW9uX2NvbXBhdGFiaWxpdHk7ICAgICAgICAgICAgCiAgICAgfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cKICNpZmRlZiBXSU4zMgogICAgIHNubXBfbG9nX3N5c2xvZ25hbWUoYXBwX25hbWVfbG9uZyk7CiAjZWxzZQogICAgIHNubXBfbG9nX3N5c2xvZ25hbWUoYXBwX25hbWUpOwogI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRyAqLwogICAgIG5ldHNubXBfZHNfc2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0FQUFRZUEUsIGFwcF9uYW1lKTsKIApAQCAtNTY2LDkgKzU3Niw5IEBACiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICdkJzoKLSAgICAgICAgICAgIHNubXBfc2V0X2R1bXBfcGFja2V0KCsrc25tcF9kdW1wX3BhY2tldCk7Ci0gICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfVkVSQk9TRSwgMSk7CisgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfRFVNUF9QQUNLRVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrc25tcF9kdW1wX3BhY2tldCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICdEJzoKQEAgLTU5MiwxOSArNjAyLDE4IEBACiAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgIGdpZDsKIAogICAgICAgICAgICAgICAgIGdpZCA9IHN0cnRvdWwob3B0YXJnLCAmZWNwLCAxMCk7CisjaWYgSEFWRV9HRVRHUk5BTSAmJiBIQVZFX1BXRF9ICiAgICAgICAgICAgICAgICAgaWYgKCplY3ApIHsKLSNpZiBIQVZFX0dFVFBXTkFNICYmIEhBVkVfUFdEX0gKICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGdyb3VwICAqaW5mbzsKKwogICAgICAgICAgICAgICAgICAgICBpbmZvID0gZ2V0Z3JuYW0ob3B0YXJnKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGluZm8pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdpZCA9IGluZm8tPmdyX2dpZDsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZ2lkID0gaW5mbyA/IGluZm8tPmdyX2dpZCA6IC0xOworICAgICAgICAgICAgICAgICAgICBlbmRncmVudCgpOworICAgICAgICAgICAgICAgIH0KICNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJCYWQgZ3JvdXAgaWQ6ICVzXG4iLCBvcHRhcmcpOwotICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCgxKTsKLSNpZiBIQVZFX0dFVFBXTkFNICYmIEhBVkVfUFdEX0gKLSAgICAgICAgICAgICAgICAgICAgfQotI2VuZGlmCisgICAgICAgICAgICAgICAgaWYgKGdpZCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJCYWQgZ3JvdXAgaWQ6ICVzXG4iLCBvcHRhcmcpOworICAgICAgICAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCiAJCQkJICAgTkVUU05NUF9EU19BR0VOVF9HUk9VUElELCBnaWQpOwpAQCAtNjMwLDYgKzYzOSw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRQogICAgICAgICBjYXNlICdsJzoKICAgICAgICAgICAgIHByaW50ZigiV2FybmluZzogLWwgb3B0aW9uIGlzIGRlcHJlY2F0ZWQsIHVzZSAtTGYgPGZpbGU+IGluc3RlYWRcbiIpOwogICAgICAgICAgICAgaWYgKG9wdGFyZyAhPSBOVUxMKSB7CkBAIC02NDcsNiArNjU3LDcgQEAKICAgICAgICAgICAgICAgICB1c2FnZShhcmd2WzBdKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19GSUxFICovCiAKICAgICAgICAgY2FzZSAnTCc6CiAJICAgIGlmICAoc25tcF9sb2dfb3B0aW9ucyggb3B0YXJnLCBhcmdjLCBhcmd2ICkgPCAwICkgewpAQCAtNjkyLDcgKzcwMyw4IEBACiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICdxJzoKLSAgICAgICAgICAgIHNubXBfc2V0X3F1aWNrX3ByaW50KDEpOworICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9RVUlDS19QUklOVCwgMSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICdyJzoKQEAgLTcwMCw2ICs3MTIsNyBAQAogCQkJCSAgICAgIE5FVFNOTVBfRFNfQUdFTlRfTk9fUk9PVF9BQ0NFU1MpOwogICAgICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgIHByaW50ZigiV2FybmluZzogLXMgb3B0aW9uIGlzIGRlcHJlY2F0ZWQsIHVzZSAtTHNkIGluc3RlYWRcbiIpOwogICAgICAgICAgICAgc25tcF9lbmFibGVfc3lzbG9nKCk7CkBAIC03NTMsNiArNzY2LDcgQEAKICAgICAgICAgICAgICAgICB1c2FnZShhcmd2WzBdKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cgKi8KIAogICAgICAgICBjYXNlICdVJzoKICAgICAgICAgICAgIG5ldHNubXBfZHNfdG9nZ2xlX2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCkBAIC03NjYsMTggKzc4MCwxOCBAQAogICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICB1aWQ7CiAKICAgICAgICAgICAgICAgICB1aWQgPSBzdHJ0b3VsKG9wdGFyZywgJmVjcCwgMTApOworI2lmIEhBVkVfR0VUUFdOQU0gJiYgSEFWRV9QV0RfSAogICAgICAgICAgICAgICAgIGlmICgqZWNwKSB7Ci0jaWYgSEFWRV9HRVRQV05BTSAmJiBIQVZFX1BXRF9ICisgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwYXNzd2QgICppbmZvOworCiAgICAgICAgICAgICAgICAgICAgIGluZm8gPSBnZXRwd25hbShvcHRhcmcpOwotICAgICAgICAgICAgICAgICAgICBpZiAoaW5mbykgewotICAgICAgICAgICAgICAgICAgICAgICAgdWlkID0gaW5mby0+cHdfdWlkOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB1aWQgPSBpbmZvID8gaW5mby0+cHdfdWlkIDogLTE7CisgICAgICAgICAgICAgICAgICAgIGVuZHB3ZW50KCk7CisgICAgICAgICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkJhZCB1c2VyIGlkOiAlc1xuIiwgb3B0YXJnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQoMSk7Ci0jaWYgSEFWRV9HRVRQV05BTSAmJiBIQVZFX1BXRF9ICi0gICAgICAgICAgICAgICAgICAgIH0KLSNlbmRpZgorICAgICAgICAgICAgICAgIGlmICh1aWQgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQmFkIHVzZXIgaWQ6ICVzXG4iLCBvcHRhcmcpOworICAgICAgICAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCiAJCQkJICAgTkVUU05NUF9EU19BR0VOVF9VU0VSSUQsIHVpZCk7CkBAIC04NDEsNiArODU1LDcgQEAKICAgICB9CiAKICAgICBpZiAob3B0aW5kIDwgYXJnYykgeworI2lmbmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCiAgICAgICAgIC8qCiAgICAgICAgICAqIFRoZXJlIGFyZSBvcHRpb25hbCB0cmFuc3BvcnQgYWRkcmVzc2VzIG9uIHRoZSBjb21tYW5kIGxpbmUuICAKICAgICAgICAgICovCkBAIC04NjYsNTEgKzg4MSw2MiBAQAogICAgICAgICBERUJVR01TR1RMKCgic25tcGQvbWFpbiIsICJwb3J0IHNwZWM6ICVzXG4iLAogICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCiAJCQkJCSAgTkVUU05NUF9EU19BR0VOVF9QT1JUUykpKTsKKyNlbHNlIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJZb3Ugc3BlY2lmaWVkIHBvcnRzIHRvIG9wZW47IHRoaXMgYWdlbnQgd2FzIGJ1aWx0IHRvIG9ubHkgc2VuZCBub3RpZmljYXRpb25zXG4iKTsKKyAgICAgICAgZXhpdCgxKTsKKyNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCiAgICAgfQogCiAjaWZkZWYgTkVUU05NUF9MT0dGSUxFCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19GSUxFCiAgICAgaWYgKDAgPT0gbG9nX3NldCkKICAgICAgICAgc25tcF9lbmFibGVfZmlsZWxvZyhORVRTTk1QX0xPR0ZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9BUFBFTkRfTE9HRklMRVMpKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRSAqLwogI2VuZGlmCiAKLSAgICAvKgotICAgICAqIEluaXRpYWxpemUgYSBhcmd2IHNldCB0byB0aGUgY3VycmVudCBmb3IgcmVzdGFydGluZyB0aGUgYWdlbnQuICAgCi0gICAgICovCi0gICAgYXJndnJlc3RhcnRwID0gKGNoYXIgKiopbWFsbG9jKChhcmdjICsgMikgKiBzaXplb2YoY2hhciAqKSk7Ci0gICAgYXJndnB0ciA9IGFyZ3ZyZXN0YXJ0cDsKLSAgICBmb3IgKGkgPSAwLCByZXQgPSAxOyBpIDwgYXJnYzsgaSsrKSB7Ci0gICAgICAgIHJldCArPSBzdHJsZW4oYXJndltpXSkgKyAxOworI2lmZGVmIFVTSU5HX1VUSUxfRlVOQ1NfUkVTVEFSVF9NT0RVTEUKKyAgICB7CisgICAgICAgIC8qCisgICAgICAgICAqIEluaXRpYWxpemUgYSBhcmd2IHNldCB0byB0aGUgY3VycmVudCBmb3IgcmVzdGFydGluZyB0aGUgYWdlbnQuCisgICAgICAgICAqLworICAgICAgICBjaGFyICpjcHRyLCAqKmFyZ3ZwdHI7CisKKyAgICAgICAgYXJndnJlc3RhcnRwID0gKGNoYXIgKiopbWFsbG9jKChhcmdjICsgMikgKiBzaXplb2YoY2hhciAqKSk7CisgICAgICAgIGFyZ3ZwdHIgPSBhcmd2cmVzdGFydHA7CisgICAgICAgIGZvciAoaSA9IDAsIHJldCA9IDE7IGkgPCBhcmdjOyBpKyspIHsKKyAgICAgICAgICAgIHJldCArPSBzdHJsZW4oYXJndltpXSkgKyAxOworICAgICAgICB9CisgICAgICAgIGFyZ3ZyZXN0YXJ0ID0gKGNoYXIgKikgbWFsbG9jKHJldCk7CisgICAgICAgIGFyZ3ZyZXN0YXJ0bmFtZSA9IChjaGFyICopIG1hbGxvYyhzdHJsZW4oYXJndlswXSkgKyAxKTsKKyAgICAgICAgaWYgKCFhcmd2cmVzdGFydHAgfHwgIWFyZ3ZyZXN0YXJ0IHx8ICFhcmd2cmVzdGFydG5hbWUpIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAibWFsbG9jIGZhaWx1cmUgcHJvY2Vzc2luZyBhcmd2cmVzdGFydFxuIik7CisgICAgICAgICAgICBleGl0KDEpOworICAgICAgICB9CisgICAgICAgIHN0cmNweShhcmd2cmVzdGFydG5hbWUsIGFyZ3ZbMF0pOworCisgICAgICAgIGZvciAoY3B0ciA9IGFyZ3ZyZXN0YXJ0LCBpID0gMDsgaSA8IGFyZ2M7IGkrKykgeworICAgICAgICAgICAgc3RyY3B5KGNwdHIsIGFyZ3ZbaV0pOworICAgICAgICAgICAgKihhcmd2cHRyKyspID0gY3B0cjsKKyAgICAgICAgICAgIGNwdHIgKz0gc3RybGVuKGFyZ3ZbaV0pICsgMTsKKyAgICAgICAgfQogICAgIH0KLSAgICBhcmd2cmVzdGFydCA9IChjaGFyICopIG1hbGxvYyhyZXQpOwotICAgIGFyZ3ZyZXN0YXJ0bmFtZSA9IChjaGFyICopIG1hbGxvYyhzdHJsZW4oYXJndlswXSkgKyAxKTsKLSAgICBpZiAoIWFyZ3ZyZXN0YXJ0cCB8fCAhYXJndnJlc3RhcnQgfHwgIWFyZ3ZyZXN0YXJ0bmFtZSkgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIm1hbGxvYyBmYWlsdXJlIHByb2Nlc3NpbmcgYXJndnJlc3RhcnRcbiIpOwotICAgICAgICBleGl0KDEpOwotICAgIH0KLSAgICBzdHJjcHkoYXJndnJlc3RhcnRuYW1lLCBhcmd2WzBdKTsKKyNlbmRpZiAvKiBVU0lOR19VVElMX0ZVTkNTX1JFU1RBUlRfTU9EVUxFICovCisKICAgICBpZiAoYWdlbnRfbW9kZSA9PSAtMSkgewotICAgICAgICBpZiAoc3Ryc3RyKGFyZ3ZyZXN0YXJ0bmFtZSwgImFnZW50eGQiKSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAorICAgICAgICBpZiAoc3Ryc3RyKGFyZ3ZbMF0sICJhZ2VudHhkIikgIT0gTlVMTCkgeworICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAogCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfUk9MRSwgU1VCX0FHRU5UKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCisgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCiAJCQkJICAgTkVUU05NUF9EU19BR0VOVF9ST0xFLCBNQVNURVJfQUdFTlQpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKKyAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAogCQkJICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfUk9MRSwgYWdlbnRfbW9kZSk7CiAgICAgfQogCi0gICAgZm9yIChjcHRyID0gYXJndnJlc3RhcnQsIGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7Ci0gICAgICAgIHN0cmNweShjcHRyLCBhcmd2W2ldKTsKLSAgICAgICAgKihhcmd2cHRyKyspID0gY3B0cjsKLSAgICAgICAgY3B0ciArPSBzdHJsZW4oYXJndltpXSkgKyAxOwotICAgIH0KLSAgICAqY3B0ciA9IDA7Ci0gICAgKmFyZ3ZwdHIgPSBOVUxMOwotCiAgICAgU09DS19TVEFSVFVQOwogICAgIGlmIChpbml0X2FnZW50KGFwcF9uYW1lKSAhPSAwKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJBZ2VudCBpbml0aWFsaXphdGlvbiBmYWlsZWRcbiIpOwpAQCAtOTI3LDcgKzk1Myw4IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIFNvbWUgZXJyb3Igb3BlbmluZyBvbmUgb2YgdGhlIHNwZWNpZmllZCBhZ2VudCB0cmFuc3BvcnRzLiAgCiAgICAgICAgICAqLwotICAgICAgICBFeGl0KDEpOyAgICAgICAgICAgICAgICAvKiAgRXhpdCBsb2dzIGV4aXQgdmFsIGZvciB1cyAgKi8KKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIlNlcnZlciBFeGl0aW5nIHdpdGggY29kZSAxXG4iKTsKKyAgICAgICAgZXhpdCgxKTsKICAgICB9CiAKICAgICAvKgpAQCAtOTM2LDEyICs5NjMsMjAgQEAKICAgICBpZighZG9udF9mb3JrKSB7CiAgICAgICAgIGludCBxdWl0ID0gISBuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfUVVJVF9JTU1FRElBVEVMWSk7Ci0gICAgICAgIHJldCA9IG5ldHNubXBfZGFlbW9uaXplKHF1aXQsIHNubXBfc3RkZXJybG9nX3N0YXR1cygpKTsKKyAgICAgICAgcmV0ID0gbmV0c25tcF9kYWVtb25pemUocXVpdCwKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NURElPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfc3RkZXJybG9nX3N0YXR1cygpCisjZWxzZSAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1RESU8gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTyAqLworICAgICAgICAgICAgKTsKICAgICAgICAgLyoKICAgICAgICAgICogeHh4LXJrczogZG8gd2UgY2FyZSBpZiBmb3JrIGZhaWxzPyBJIHRoaW5rIHdlIHNob3VsZC4uLgogICAgICAgICAgKi8KLSAgICAgICAgaWYocmV0ICE9IDApCi0gICAgICAgICAgICBFeGl0KDEpOyAgICAgICAgICAgICAgICAvKiAgRXhpdCBsb2dzIGV4aXQgdmFsIGZvciB1cyAgKi8KKyAgICAgICAgaWYocmV0ICE9IDApIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJTZXJ2ZXIgRXhpdGluZyB3aXRoIGNvZGUgMVxuIik7CisgICAgICAgICAgICBleGl0KDEpOworICAgICAgICB9CiAgICAgfQogCiAjaWYgSEFWRV9HRVRQSUQKQEAgLTEwMTUsNiArMTA1MCw4IEBACiAgICAgaWYgKCh1aWQgPSBuZXRzbm1wX2RzX2dldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCiAJCQkJICBORVRTTk1QX0RTX0FHRU5UX1VTRVJJRCkpID4gMCkgewogI2lmIEhBVkVfR0VUUFdOQU0gJiYgSEFWRV9QV0RfSCAmJiBIQVZFX0lOSVRHUk9VUFMKKyAgICAgICAgc3RydWN0IHBhc3N3ZCAqaW5mbzsKKwogICAgICAgICAvKgogICAgICAgICAgKiBTZXQgc3VwcGxlbWVudGFyeSBncm91cHMgYmVmb3JlIGNoYW5naW5nIFVJRAogICAgICAgICAgKiAgICh3aGljaCBwcm9iYWJseSBpbnZvbHZlcyBnaXZpbmcgdXAgcHJpdmlsZWdlcykKQEAgLTEwMzAsNiArMTA2Nyw3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGVuZHB3ZW50KCk7CiAjZW5kaWYKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBkL21haW4iLCAiQ2hhbmdpbmcgdWlkIHRvICVkLlxuIiwgdWlkKSk7CiAgICAgICAgIGlmIChzZXR1aWQodWlkKSA9PSAtMSkgewpAQCAtMTA5MSw5ICsxMTI5LDEyIEBACiAgICAgYWdlbnRfc3RhdHVzID0gQUdFTlRfU1RPUFBFRDsKICNlbmRpZgogCisjaWZkZWYgVVNJTkdfVVRJTF9GVU5DU19SRVNUQVJUX01PRFVMRQogICAgIFNOTVBfRlJFRShhcmd2cmVzdGFydG5hbWUpOwogICAgIFNOTVBfRlJFRShhcmd2cmVzdGFydCk7CiAgICAgU05NUF9GUkVFKGFyZ3ZyZXN0YXJ0cCk7CisjZW5kaWYgLyogVVNJTkdfVVRJTF9GVU5DU19SRVNUQVJUX01PRFVMRSAqLworCiAgICAgU09DS19DTEVBTlVQOwogICAgIHJldHVybiAwOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBFbmQgbWFpbigpIC0tIHNubXBkICovCkBAIC0xMjI3LDIyICsxMjY4LDI3IEBACiAgICAgICAgIH0KICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVVNJTkdfU01VWF9NT0RVTEUgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZEX0VWRU5UX01BTkFHRVIKICAgICAgICAgbmV0c25tcF9leHRlcm5hbF9ldmVudF9pbmZvMigmbnVtZmRzLCAmcmVhZGZkcywgJndyaXRlZmRzLCAmZXhjZXB0ZmRzKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZEX0VWRU5UX01BTkFHRVIgKi8KIAogICAgIHJlc2VsZWN0OgorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX1NJR05BTAogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgTlVNX0VYVEVSTkFMX1NJR1M7IGkrKykgewogICAgICAgICAgICAgaWYgKGV4dGVybmFsX3NpZ25hbF9zY2hlZHVsZWRbaV0pIHsKICAgICAgICAgICAgICAgICBleHRlcm5hbF9zaWduYWxfc2NoZWR1bGVkW2ldLS07CiAgICAgICAgICAgICAgICAgZXh0ZXJuYWxfc2lnbmFsX2hhbmRsZXJbaV0oaSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX1NJR05BTCAqLwogCiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wZC9zZWxlY3QiLCAic2VsZWN0KCBudW1mZHM9JWQsIC4uLiwgdHZwPSVwKVxuIiwKICAgICAgICAgICAgICAgICAgICAgbnVtZmRzLCB0dnApKTsKLSAgICAgICAgaWYodHZwKQotICAgICAgICAgICAgREVCVUdNU0dUTCgoInRpbWVyIiwgInR2cCAlbGQuJWxkXG4iLCB0dnAtPnR2X3NlYywgdHZwLT50dl91c2VjKSk7Ci0gICAgICAgIGNvdW50ID0gbmV0X3NubXBfbGFyZ2VfZmRfc2V0X3NlbGVjdChudW1mZHMsICZyZWFkZmRzLCAmd3JpdGVmZHMsICZleGNlcHRmZHMsCi0JCQkJICAgICAgdHZwKTsKKyAgICAgICAgaWYgKHR2cCkKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ0aW1lciIsICJ0dnAgJWxkLiVsZFxuIiwgKGxvbmcpIHR2cC0+dHZfc2VjLAorICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpIHR2cC0+dHZfdXNlYykpOworICAgICAgICBjb3VudCA9IG5ldHNubXBfbGFyZ2VfZmRfc2V0X3NlbGVjdChudW1mZHMsICZyZWFkZmRzLCAmd3JpdGVmZHMsICZleGNlcHRmZHMsCisJCQkJICAgICB0dnApOwogICAgICAgICBERUJVR01TR1RMKCgic25tcGQvc2VsZWN0IiwgInJldHVybmVkLCBjb3VudCA9ICVkXG4iLCBjb3VudCkpOwogCiAgICAgICAgIGlmIChjb3VudCA+IDApIHsKQEAgLTEyNzEsOCArMTMxNywxMiBAQAogICAgICAgICAgICAgfQogCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFVTSU5HX1NNVVhfTU9EVUxFICovCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GRF9FVkVOVF9NQU5BR0VSCiAgICAgICAgICAgICBuZXRzbm1wX2Rpc3BhdGNoX2V4dGVybmFsX2V2ZW50czIoJmNvdW50LCAmcmVhZGZkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd3JpdGVmZHMsICZleGNlcHRmZHMpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRkRfRVZFTlRfTUFOQUdFUiAqLworCiAgICAgICAgICAgICAvKiBJZiB0aGVyZSBhcmUgc3RpbGwgZXZlbnRzIGxlZnRvdmVyLCBwcm9jZXNzIHRoZW0gKi8KICAgICAgICAgICAgIGlmIChjb3VudCA+IDApIHsKICAgICAgICAgICAgICAgc25tcF9yZWFkMigmcmVhZGZkcyk7CkBAIC0xNDEwLDYgKzE0NjAsMTAgQEAKICAgICBpbnQgICAgICAgICAgICAgblJ1blR5cGUgPSBSVU5fQVNfQ09OU09MRTsKICAgICBpbnQgICAgICAgICAgICAgcXVpZXQgPSAwOwogICAgIAorI2lmIDAKKyAgICBfQ3J0U2V0RGJnRmxhZyhfQ1JUREJHX0FMTE9DX01FTV9ERiB8IF9DUlREQkdfTEVBS19DSEVDS19ERiAvKnwgX0NSVERCR19DSEVDS19BTFdBWVNfREYqLyk7CisjZW5kaWYKKwogICAgIG5SdW5UeXBlID0gUGFyc2VDbWRMaW5lRm9yU2VydmljZU9wdGlvbihhcmdjLCBhcmd2LCAmcXVpZXQpOwogCiAgICAgc3dpdGNoIChuUnVuVHlwZSkgewpkaWZmIC0tZ2l0IGEvYXBwcy9NYWtlZmlsZS5kZXBlbmQgYi9hcHBzL01ha2VmaWxlLmRlcGVuZAppbmRleCA5ODVjMmM5Li4xNWNiMTc2IDEwMDY0NAotLS0gYS9hcHBzL01ha2VmaWxlLmRlcGVuZAorKysgYi9hcHBzL01ha2VmaWxlLmRlcGVuZApAQCAtNSw2ICs1LDcgQEAKIC4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCiAuL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAogLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMjQsMTEgKzI1LDggQEAKIC4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC03Myw0NCArNzEsOSBAQAogLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAogLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9hZ2VudHh0cmFwLmxvOiAuLi9hZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5oCiAuL2FnZW50eHRyYXAubG86IC4uL2FnZW50L21pYmdyb3VwL2FnZW50eC9jbGllbnQuaAogLi9hZ2VudHh0cmFwLmxvOiAuLi9hZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuaApAQCAtMTM0LDExICs5Nyw4IEBACiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTQ4LDYgKzEwOCw3IEBACiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTgyLDkgKzE0MywxMSBAQAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKQEAgLTIwMiwxMSArMTY1LDggQEAKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0yMTYsNiArMTc2LDcgQEAKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjUwLDYgKzIxMSw3IEBACiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKQEAgLTI3MSwxMSArMjMzLDggQEAKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0yODUsNiArMjQ0LDcgQEAKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTMxOSw2ICsyNzksNyBAQAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKQEAgLTMzOSwxMSArMzAwLDggQEAKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0zNTMsNiArMzExLDcgQEAKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTM4NywxMSArMzQ2LDExIEBACiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCkBAIC00MDcsMTEgKzM2Niw4IEBACiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtNDIwLDYgKzM3Niw3IEBACiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNDUzLDkgKzQxMCwxMSBAQAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKQEAgLTQ3MywxMSArNDMyLDggQEAKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC00ODYsNiArNDQyLDcgQEAKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNTIwLDYgKzQ3Nyw3IEBACiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaApAQCAtNTQxLDExICs0OTksOCBAQAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTU1NSw2ICs1MTAsNyBAQAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC01ODksMTEgKzU0NSwxMSBAQAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaApAQCAtNjEwLDExICs1NjYsOCBAQAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTYyMyw2ICs1NzYsNyBAQAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC02NTYsNiArNjEwLDcgQEAKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC02NzYsMTEgKzYzMSw4IEBACiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtNjkwLDYgKzY0Miw3IEBACiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNzI0LDYgKzY3Nyw3IEBACiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCkBAIC03NDQsMTEgKzY5OCw4IEBACiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtNzU4LDYgKzcwOSw3IEBACiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC03OTIsMTEgKzc0NCwxMSBAQAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKQEAgLTgxMywxMSArNzY1LDggQEAKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC04MjcsNiArNzc2LDcgQEAKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtODYwLDEwICs4MTAsMTMgQEAKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9zbm1wdGxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9zbm1wdGxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCkBAIC04ODAsMTEgKzgzMyw4IEBACiAuL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wdGxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wdGxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wdGxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtOTI2LDYgKzg3Niw3IEBACiAuL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wdGxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtOTg5LDExICs5NDAsOCBAQAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTEwMDMsNiArOTUxLDcgQEAKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMDQ3LDExICs5OTYsOCBAQAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTEwNjEsNiArMTAwNyw3IEBACiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTEwOTQsNiArMTA0MSw3IEBACiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCkBAIC0xMTE1LDExICsxMDYzLDggQEAKIC4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xMTI5LDYgKzEwNzQsNyBAQAogLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMTYzLDYgKzExMDksNyBAQAogLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcHRyYXBkX2F1dGgubG86IHNubXB0cmFwZF9oYW5kbGVycy5oIHNubXB0cmFwZF9hdXRoLmggc25tcHRyYXBkX2RzLmgKIC4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMTg4LDExICsxMTM1LDggQEAKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xMjAyLDYgKzExNDYsNyBAQAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTIzNiw2ICsxMTgxLDcgQEAKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEyODAsNiArMTIyNiw3IEBACiAuL3NubXB0cmFwZC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaApAQCAtMTI5OSwxMSArMTI0Niw4IEBACiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTM0Nyw2ICsxMjkxLDcgQEAKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE0MDksMTEgKzEzNTQsOCBAQAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTE0MjMsNiArMTM2NSw3IEBACiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTQ1NywxMyArMTQwMCwxNCBAQAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oIHNubXB0cmFwZF9sb2cuaAogLi9zbm1wdHJhcGRfbG9nLmxvOiBzbm1wdHJhcGRfZHMuaAogLi9zbm1wdHJhcGRfc3FsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXB0cmFwZF9zcWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCkBAIC0xNDgwLDExICsxNDI0LDggQEAKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xNDkzLDYgKzE0MzQsNyBAQAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNTI2LDExICsxNDY4LDExIEBACiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCkBAIC0xNTQ3LDExICsxNDg5LDggQEAKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xNTYxLDYgKzE1MDAsNyBAQAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNTk0LDYgKzE1MzQsNyBAQAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaApAQCAtMTYxNSwxMSArMTU1Niw4IEBACiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTYyOSw2ICsxNTY3LDcgQEAKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTY2Miw2ICsxNjAxLDcgQEAKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NzaHRvc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaApAQCAtMTY4NCwxMSArMTYyNCw4IEBACiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTY5OCw2ICsxNjM1LDcgQEAKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTczMiw2ICsxNjcwLDcgQEAKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuL3NubXBuZXRzdGF0L21haW4uaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi9zbm1wbmV0c3RhdC9uZXRzdGF0LmgKQEAgLTE3NTUsMTEgKzE2OTQsOCBAQAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTE3NjksNiArMTcwNSw3IEBACiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE4MDMsNiArMTc0MCw3IEBACiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi9zbm1wbmV0c3RhdC9tYWluLmggLi9zbm1wbmV0c3RhdC9uZXRzdGF0LmgKIC4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaApAQCAtMTgyNSwxMSArMTc2Myw4IEBACiAuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTgzOSw2ICsxNzc0LDcgQEAKIC4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xODczLDggKzE4MDksNzggQEAKIC4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuL3NubXBuZXRzdGF0L21haW4uaCAuL3NubXBuZXRzdGF0L25ldHN0YXQuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuL3NubXBuZXRzdGF0L21haW4uaCAuL3NubXBuZXRzdGF0L25ldHN0YXQuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKQEAgLTE4OTUsMTEgKzE5MDEsOCBAQAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTE5MDksNiArMTkxMiw3IEBACiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTk0Myw2ICsxOTQ3LDcgQEAKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuL3NubXBuZXRzdGF0L21haW4uaCAuL3NubXBuZXRzdGF0L25ldHN0YXQuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaApAQCAtMTk2NSwxMSArMTk3MCw4IEBACiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTk3OSw2ICsxOTgxLDcgQEAKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjAxMyw4ICsyMDE2LDc4IEBACiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi9zbm1wbmV0c3RhdC9tYWluLmggLi9zbm1wbmV0c3RhdC9uZXRzdGF0LmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi9zbm1wbmV0c3RhdC9tYWluLmggLi9zbm1wbmV0c3RhdC9uZXRzdGF0LmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCkBAIC0yMDM1LDExICsyMTA4LDggQEAKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0yMDQ5LDYgKzIxMTksNyBAQAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTIwODMsNCArMjE1NCw1IEBACiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKZGlmZiAtLWdpdCBhL2FwcHMvTWFrZWZpbGUuaW4gYi9hcHBzL01ha2VmaWxlLmluCmluZGV4IDc2OTM1MmQuLjc3NDA0ZGQgMTAwNjQ0Ci0tLSBhL2FwcHMvTWFrZWZpbGUuaW4KKysrIGIvYXBwcy9NYWtlZmlsZS5pbgpAQCAtNCw2ICs0LDcgQEAKICMKIAogdG9wX2J1aWxkZGlyPS4uCitteXN1YmRpcj1hcHBzCiAKICMgdXNlIEdOVSB2cGF0aCwgaWYgYXZhaWxhYmxlLCB0byBvbmx5IHNldCBhIHBhdGggZm9yIHNvdXJjZSBhbmQgaGVhZGVycwogIyBWUEFUSCB3aWxsIHBpY2sgdXAgb2JqZWN0cyB0b28sIHdoaWNoIGlzIGJhZCBpZiB5b3UgYXJlIHNoYXJpbmcgYQpAQCAtMTksMTYgKzIwLDM1IEBACiAKIEBORVRTTk1QX0JVSUxEX1NTSF9QUk9HX1RSVUVAU1NISU5TVEFMTEJJTlBST0cgPSBzc2h0b3NubXAkKEVYRUVYVCkKIEBORVRTTk1QX0JVSUxEX1NTSF9QUk9HX0ZBTFNFQFNTSElOU1RBTExCSU5QUk9HID0KK0BORVRTTk1QX0JVSUxEX1NTSF9QUk9HX1RSVUVAU1NIRkVBVFVSRVBST0cgPSBzc2h0b3NubXAuZnQKK0BORVRTTk1QX0JVSUxEX1NTSF9QUk9HX0ZBTFNFQFNTSEZFQVRVUkVQUk9HID0KIEBORVRTTk1QX0JVSUxEX1RMU19QUk9HX1RSVUVAVExTSU5TVEFMTEJJTlBST0cgPSBzbm1wdGxzJChFWEVFWFQpCiBATkVUU05NUF9CVUlMRF9UTFNfUFJPR19GQUxTRUBUTFNJTlNUQUxMQklOUFJPRyA9CitATkVUU05NUF9CVUlMRF9UTFNfUFJPR19UUlVFQFRMU0ZFQVRVUkVQUk9HID0gc25tcHRscy5mdAorQE5FVFNOTVBfQlVJTERfVExTX1BST0dfRkFMU0VAVExTRkVBVFVSRVBST0cgPQorQE5FVFNOTVBfQlVJTERfVVNNX1BST0dfVFJVRUBVU01JTlNUQUxMQklOUFJPRyA9IHNubXB1c20kKEVYRUVYVCkKK0BORVRTTk1QX0JVSUxEX1VTTV9QUk9HX0ZBTFNFQFVTTUlOU1RBTExCSU5QUk9HID0KK0BORVRTTk1QX0JVSUxEX1VTTV9QUk9HX1RSVUVAVVNNRkVBVFVSRVBST0cgPSBzbm1wdXNtLmZ0CitATkVUU05NUF9CVUlMRF9VU01fUFJPR19GQUxTRUBVU01GRUFUVVJFUFJPRyA9CitATkVUU05NUF9CVUlMRF9VU01fUFJPR19UUlVFQEVLQ1NUQUxMQklOUFJPRyA9IGVuY29kZV9rZXljaGFuZ2UkKEVYRUVYVCkKK0BORVRTTk1QX0JVSUxEX1VTTV9QUk9HX0ZBTFNFQEVLQ1NUQUxMQklOUFJPRyA9CitATkVUU05NUF9CVUlMRF9VU01fUFJPR19UUlVFQEVLQ0ZFQVRVUkVQUk9HID0gZW5jb2RlX2tleWNoYW5nZS5mdAorQE5FVFNOTVBfQlVJTERfVVNNX1BST0dfRkFMU0VARUtDRkVBVFVSRVBST0cgPQorQE5FVFNOTVBfQlVJTERfU0VUX1BST0dfVFJVRUBTTk1QU0VUSU5TVEFMTEJJTlBST0cgPSBzbm1wc2V0JChFWEVFWFQpCitATkVUU05NUF9CVUlMRF9TRVRfUFJPR19GQUxTRUBTTk1QU0VUSU5TVEFMTEJJTlBST0cgPSAKK0BORVRTTk1QX0JVSUxEX1NFVF9QUk9HX1RSVUVAU05NUFNFVEZFQVRVUkVQUk9HID0gc25tcHNldC5mdAorQE5FVFNOTVBfQlVJTERfU0VUX1BST0dfRkFMU0VAU05NUFNFVEZFQVRVUkVQUk9HID0gCitATkVUU05NUF9CVUlMRF9TRVRfUFJPR19UUlVFQFNOTVBWQUNNSU5TVEFMTEJJTlBST0cgPSBzbm1wdmFjbSQoRVhFRVhUKQorQE5FVFNOTVBfQlVJTERfU0VUX1BST0dfRkFMU0VAU05NUFZBQ01JTlNUQUxMQklOUFJPRyA9IAorQE5FVFNOTVBfQlVJTERfU0VUX1BST0dfVFJVRUBTTk1QVkFDTUZFQVRVUkVQUk9HID0gc25tcHZhY20uZnQKK0BORVRTTk1QX0JVSUxEX1NFVF9QUk9HX0ZBTFNFQFNOTVBWQUNNRkVBVFVSRVBST0cgPSAKIAogQE5FVFNOTVBfSEFWRV9BR0VOVFhfTElCU19UUlVFQEFHRU5UWFRSQVAgPSBhZ2VudHh0cmFwJChFWEVFWFQpCiBATkVUU05NUF9IQVZFX0FHRU5UWF9MSUJTX0ZBTFNFQEFHRU5UWFRSQVAgPQogCiBJTlNUQUxMQklOUFJPR1MJPSBzbm1wZ2V0JChFWEVFWFQpIAkJCVwKIAkJc25tcGdldG5leHQkKEVYRUVYVCkgCQkJXAotCQlzbm1wc2V0JChFWEVFWFQpIAkJCVwKLQkJc25tcHVzbSQoRVhFRVhUKQkJCVwKKwkJJChTTk1QU0VUSU5TVEFMTEJJTlBST0cpCSAgICAgICAgXAogCQlzbm1wd2FsayQoRVhFRVhUKSAJCQlcCiAJCXNubXBidWxrd2FsayQoRVhFRVhUKSAJCQlcCiAJCXNubXB0YWJsZSQoRVhFRVhUKQkJCVwKQEAgLTM4LDExICs1OCwxMSBAQAogCQlzbm1wc3RhdHVzJChFWEVFWFQpIAkJCVwKIAkJc25tcGRlbHRhJChFWEVFWFQpIAkJCVwKIAkJc25tcHRlc3QkKEVYRUVYVCkJCQlcCi0JCWVuY29kZV9rZXljaGFuZ2UkKEVYRUVYVCkgCQlcCiAJCXNubXBkZiQoRVhFRVhUKSAJCQlcCiAJCSQoQUdFTlRYVFJBUCkJCQkJXAotCQlzbm1wdmFjbSQoRVhFRVhUKSAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICQoU1NISU5TVEFMTEJJTlBST0cpICQoVExTSU5TVEFMTEJJTlBST0cpCisJCSQoU05NUFZBQ01JTlNUQUxMQklOUFJPRykJICAgICAgICBcCisgICAgICAgICAgICAgICAgJChTU0hJTlNUQUxMQklOUFJPRykgJChUTFNJTlNUQUxMQklOUFJPRykgXAorCQkkKFVTTUlOU1RBTExCSU5QUk9HKSAkKEVLQ1NUQUxMQklOUFJPRykKIAogSU5TVEFMTFNCSU5QUk9HUyA9IHNubXB0cmFwZCQoRVhFRVhUKQogCkBAIC01MCw2ICs3MCw4IEBACiAKIFNVQkRJUlMJCT0gc25tcG5ldHN0YXQKIAorRkVBVFVSRUZJTEU9Li4vaW5jbHVkZS9uZXQtc25tcC9mZWF0dXJlcy1hcHBzLmgKKwogIwogIyBidWlsZCB2YXJpYWJsZXMuCiAjCkBAIC02MiwxNCArODQsMTUgQEAKIE1ZU1FMX0xJQlMJPSBATVlTUUxfTElCU0AKIE1ZU1FMX0lOQ0xVREVTCT0gQE1ZU1FMX0lOQ0xVREVTQAogCi1MSUJTCQk9ICQoVVNFTElCUykgQExJQlNACitWQUxfTElCUwk9IEBWQUxfTElCU0AKK0xJQlMJCT0gJChVU0VMSUJTKSAkKFZBTF9MSUJTKSBATElCU0AKIFBFUkxMRE9QVFNfRk9SX0FQUFMgPSBAUEVSTExET1BUU19GT1JfQVBQU0AKIFBFUkxMRE9QVFNfRk9SX0xJQlMgPSBAUEVSTExET1BUU19GT1JfTElCU0AKIAogIwogIyBoYWNrIGZvciBjb21waWxpbmcgdHJhcGQgd2hlbiBhZ2VudCBpcyBkaXNhYmxlZAotVFJBUERXSVRIQUdFTlQgID0gJChVU0VUUkFQTElCUykgJChNWVNRTF9MSUJTKSBAQUdFTlRMSUJTQAotVFJBUERXSVRIT1VUQUdFTlQgPSAkKExJQlMpICQoTVlTUUxfTElCUykKK1RSQVBEV0lUSEFHRU5UICA9ICQoVVNFVFJBUExJQlMpICQoTVlTUUxfTElCUykgJChWQUxfTElCUykgQEFHRU5UTElCU0AKK1RSQVBEV0lUSE9VVEFHRU5UID0gJChMSUJTKSAkKE1ZU1FMX0xJQlMpICQoVkFMX0xJQlMpCiAKICMgdGhlc2Ugd2lsbCBiZSBzZXQgYnkgY29uZmlndXJlIHRvIG9uZSBvZiB0aGUgYWJvdmUgMiBsaW5lcwogVFJBUExJQlMJPSBAVFJBUExJQlNAICQoUEVSTExET1BUU19GT1JfQVBQUykKQEAgLTg1LDggKzEwOCwzMSBAQAogCQkgIHNubXB0cmFwZF9hdXRoLm8gc25tcHRyYXBkX3NxbC5vCiBMTElCVFJBUERfT0JKUyAgPSBzbm1wdHJhcGRfaGFuZGxlcnMubG8gc25tcHRyYXBkX2xvZy5sbyBcCiAJCSAgc25tcHRyYXBkX2F1dGgubG8gc25tcHRyYXBkX3NxbC5sbworTElCVFJBUERfRlRTICAgID0gc25tcHRyYXBkX2hhbmRsZXJzLmZ0IHNubXB0cmFwZF9sb2cuZnQgXAorCQkgIHNubXB0cmFwZF9hdXRoLmZ0IHNubXB0cmFwZF9zcWwuZnQKIE9CSlMgID0gKi5vCiBMT0JKUyA9ICoubG8KK0ZUT0JKUz0kKExJQlRSQVBEX0ZUUykgXAorICAgICAgIHNubXB3YWxrLmZ0IFwKKyAgICAgICBzbm1wYnVsa3dhbGsuZnQgXAorICAgICAgIHNubXBidWxrZ2V0LmZ0IFwKKyAgICAgICBzbm1wdHJhbnNsYXRlLmZ0IFwKKyAgICAgICBzbm1wc3RhdHVzLmZ0IFwKKyAgICAgICBzbm1wZ2V0LmZ0IFwKKyAgICAgICBzbm1wZGVsdGEuZnQgXAorICAgICAgIHNubXB0YWJsZS5mdCBcCisgICAgICAgc25tcHRlc3QuZnQgXAorICAgICAgIHNubXB0cmFwZC5mdCBcCisgICAgICAgc25tcHRyYXAuZnQgXAorICAgICAgICQoU05NUFNFVEZFQVRVUkVQUk9HKSBcCisgICAgICAgJChTTk1QVkFDTUZFQVRVUkVQUk9HKSBcCisgICAgICAgJChVU01GRUFUVVJFUFJPRykgXAorICAgICAgICQoVExTRkVBVFVSRVBST0cpIFwKKyAgICAgICBhZ2VudHh0cmFwLmZ0IFwKKyAgICAgICBzbm1wZ2V0bmV4dC5mdCBcCisgICAgICAgJChFS0NGRUFUVVJFUFJPRykgXAorICAgICAgIHNubXBkZi5mdCBcCisgICAgICAgJChTU0hGRUFUVVJFUFJPRykKIAogYWxsOiBzdGFuZGFyZGFsbAogCmRpZmYgLS1naXQgYS9hcHBzL2FnZW50eHRyYXAuYyBiL2FwcHMvYWdlbnR4dHJhcC5jCmluZGV4IDM0MGYxMTQuLjRkZjQyM2MgMTAwNjQ0Ci0tLSBhL2FwcHMvYWdlbnR4dHJhcC5jCisrKyBiL2FwcHMvYWdlbnR4dHJhcC5jCkBAIC0xLDQgKzEsNSBAQAotICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxzaWduYWwuaD4KQEAgLTgsMTIgKzksMTYgQEAKICNlbmRpZgogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2RzX2FnZW50Lmg+CiAKICNpbmNsdWRlICIuLi9hZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5oIgogI2luY2x1ZGUgIi4uL2FnZW50L21pYmdyb3VwL2FnZW50eC9jbGllbnQuaCIKICNpbmNsdWRlICIuLi9hZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoc25tcF9zcGxpdF9wZHUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzbm1wX3Jlc2V0X3Zhcl90eXBlcykKKworCiAjaWZkZWYgX19HTlVDX18KICNkZWZpbmUgVU5VU0VEIF9fYXR0cmlidXRlX18oKHVudXNlZCkpCiAjZWxzZQpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wZGVsdGEuYyBiL2FwcHMvc25tcGRlbHRhLmMKaW5kZXggNzEwZmM3Ny4uMDhlMmViYyAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wZGVsdGEuYworKysgYi9hcHBzL3NubXBkZWx0YS5jCkBAIC0yMTQsNyArMjE0LDcgQEAKICAgICAvKgogICAgICAqIE5vdyBmaWd1cmUgb3V0IHRoZSBhbW91bnQgb2YgdGltZSB0byBzbGVlcCAKICAgICAgKi8KLSAgICB0YXJnZXQgPSAoU2Vjb25kc0F0TmV4dEhvdXIgLSB0di0+dHZfc2VjKSAlIHNlY29uZHM7CisgICAgdGFyZ2V0ID0gKGludCkoU2Vjb25kc0F0TmV4dEhvdXIgLSB0di0+dHZfc2VjKSAlIHNlY29uZHM7CiAKICAgICByZXR1cm4gdGFyZ2V0OwogfQpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wZGYuYyBiL2FwcHMvc25tcGRmLmMKaW5kZXggMmI0MzhmOS4uMTQ0YTUwNSAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wZGYuYworKysgYi9hcHBzL3NubXBkZi5jCkBAIC04Nyw5ICs4NywxNCBAQAogICAgICAgICAgICAgIlx0LUN1XHRVc2UgVUNELVNOTVAgZHNrVGFibGUgdG8gZG8gdGhlIGNhbGN1bGF0aW9ucy5cbiIpOwogICAgIGZwcmludGYoc3RkZXJyLAogICAgICAgICAgICAgIlx0XHRbTm9ybWFsbHkgdGhlIEhPU1QtUkVTT1VSQ0VTLU1JQiBpcyBjb25zdWx0ZWQgZmlyc3QuXVxuIik7CisgICAgZnByaW50ZihzdGRlcnIsCisgICAgICAgICAgICAiXHQtQ2hcdFByaW50IHVzaW5nIGh1bWFuIHJlYWRhYmxlIGZvcm1hdCAoTWlCLCBHaUIsIFRpQilcbiIpOworICAgIGZwcmludGYoc3RkZXJyLAorICAgICAgICAgICAgIlx0LUNIXHRQcmludCB1c2luZyBodW1hbiByZWFkYWJsZSBTSSBmb3JtYXQgKE1CLCBHQiwgVEIpXG4iKTsKIH0KIAogaW50ICAgICAgICAgICAgIHVjZF9taWIgPSAwOworaW50ICAgICAgICAgICAgIGh1bWFuX3VuaXRzID0gMDsKIAogc3RhdGljIHZvaWQKIG9wdFByb2MoaW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2LCBpbnQgb3B0KQpAQCAtMTAxLDYgKzEwNiwxMiBAQAogICAgICAgICAgICAgY2FzZSAndSc6CiAgICAgICAgICAgICAgICAgdWNkX21pYiA9IDE7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdoJzoKKyAgICAgICAgICAgICAgICBodW1hbl91bml0cyA9IDEwMjQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdIJzoKKyAgICAgICAgICAgICAgICBodW1hbl91bml0cyA9IDEwMDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAogICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24gZmxhZyBwYXNzZWQgdG8gLUM6ICVjXG4iLCBvcHRhcmdbLTFdKTsKQEAgLTE2NiwxNCArMTc3LDE0IEBACiAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXNwb25zZS0+ZXJyc3RhdCAhPSBTTk1QX0VSUl9OT0VSUk9SKSB7Ci0JICAgIGZwcmludGYoc3RkZXJyLCAic25tcGRmOiBFcnJvciBpbiBwYWNrZXQ6ICVzXG4iLAorICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJzbm1wZGY6IEVycm9yIGluIHBhY2tldDogJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgIHNubXBfZXJyc3RyaW5nKHJlc3BvbnNlLT5lcnJzdGF0KSk7CiAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgICB9CiAgICAgICAgIGlmIChzbm1wX29pZF9jb21wYXJlKHJlc3BvbnNlLT52YXJpYWJsZXMtPm5hbWUsCi0JCQkgICAgIFNOTVBfTUlOKGJhc2VfbGVuZ3RoLAotCQkJCSAgICAgIHJlc3BvbnNlLT52YXJpYWJsZXMtPm5hbWVfbGVuZ3RoKSwKLQkJCSAgICAgYmFzZSwgYmFzZV9sZW5ndGgpICE9IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfTUlOKGJhc2VfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS0+dmFyaWFibGVzLT5uYW1lX2xlbmd0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UsIGJhc2VfbGVuZ3RoKSAhPSAwKQogICAgICAgICAgICAgcnVubmluZyA9IDA7CiAgICAgICAgIGVsc2UgaWYgKHJlc3BvbnNlLT52YXJpYWJsZXMtPnR5cGUgPT0gU05NUF9OT1NVQ0hJTlNUQU5DRSB8fAogICAgICAgICAgICAgICAgICByZXNwb25zZS0+dmFyaWFibGVzLT50eXBlID09IFNOTVBfTk9TVUNIT0JKRUNUIHx8CkBAIC0yMDMsNiArMjE0LDI3IEBACiAgICAgcmV0dXJuIHNhdmVkOwogfQogCisKKworY2hhciAqZm9ybWF0X2h1bWFuKGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbiwgdW5zaWduZWQgbG9uZyBtZW0sIHVuc2lnbmVkIGxvbmcgc2NhbGUpCit7CisgICAgaWYgKG1lbSA+PSBzY2FsZSpzY2FsZSpzY2FsZSpzY2FsZSkKKyAgICAgICAgc25wcmludGYoYnVmLCBsZW4sICIlNC4yZlAlc0IiLCAoZmxvYXQpbWVtLyhzY2FsZSpzY2FsZSpzY2FsZSpzY2FsZSksCisJCXNjYWxlID09IDEwMjQgPyAiaSIgOiAiIik7CisgICAgZWxzZSBpZiAobWVtID49IHNjYWxlKnNjYWxlKnNjYWxlKQorICAgICAgICBzbnByaW50ZihidWYsIGxlbiwgIiU0LjJmVCVzQiIsIChmbG9hdCltZW0vKHNjYWxlKnNjYWxlKnNjYWxlKSwKKwkJc2NhbGUgPT0gMTAyNCA/ICJpIiA6ICIiKTsKKyAgICBlbHNlIGlmIChtZW0gPj0gc2NhbGUqc2NhbGUpCisgICAgICAgIHNucHJpbnRmKGJ1ZiwgbGVuLCAiJTQuMmZHJXNCIiwgKGZsb2F0KW1lbS8oc2NhbGUqc2NhbGUpLAorCQlzY2FsZSA9PSAxMDI0ID8gImkiIDogIiIpOworICAgIGVsc2UgaWYgKG1lbSA+PSBzY2FsZSkKKyAgICAgICAgc25wcmludGYoYnVmLCBsZW4sICIlNC4yZk0lc0IiLCAoZmxvYXQpbWVtL3NjYWxlLAorCQlzY2FsZSA9PSAxMDI0ID8gImkiIDogIiIpOworICAgIGVsc2UKKyAgICAgICAgc25wcmludGYoYnVmLCBsZW4sICIlNC4yZmtCIiwgKGZsb2F0KW1lbSk7CisgICAgcmV0dXJuIGJ1ZjsKK30KKwogLyogQ29tcHV0ZXMgdmFsdWUqdW5pdHMvZGl2aXNvciBpbiBhbiBvdmVyZmxvdy1wcm9vZiB3YXkuCiAgKi8KIHVuc2lnbmVkIGxvbmcKQEAgLTI2MCw4ICsyOTIsMTQgQEAKICAgICAgICAgZXhpdCgxKTsKICAgICB9CiAKLSAgICBwcmludGYoIiUtMThzICUxNXMgJTE1cyAlMTVzICU1c1xuIiwgIkRlc2NyaXB0aW9uIiwgInNpemUgKGtCKSIsCisgICAgaWYgKGh1bWFuX3VuaXRzKSB7CisgICAgICAgIHByaW50ZigiJS0xOHMgJTEwcyAlMTBzICUxMHMgJTVzXG4iLCAiRGVzY3JpcHRpb24iLCAiU2l6ZSIsCiAgICAgICAgICAgICJVc2VkIiwgIkF2YWlsYWJsZSIsICJVc2VkJSIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcHJpbnRmKCIlLTE4cyAlMTVzICUxNXMgJTE1cyAlNXNcbiIsICJEZXNjcmlwdGlvbiIsICJTaXplIChrQikiLAorICAgICAgICAgICAiVXNlZCIsICJBdmFpbGFibGUiLCAiVXNlZCUiKTsKKyAgICB9CiAgICAgaWYgKHVjZF9taWIgPT0gMCkgewogICAgICAgICAvKgogICAgICAgICAgKiAqIEJlZ2luIGJ5IGZpbmRpbmcgYWxsIHRoZSBzdG9yYWdlIHBpZWNlcyB0aGF0IGFyZSBvZgpAQCAtMzE2LDEyICszNTQsMjYgQEAKICAgICAgICAgICAgIGlmICh2bHAyLT50eXBlID09IFNOTVBfTk9TVUNISU5TVEFOQ0UpIGdvdG8gbmV4dDsKICAgICAgICAgICAgIGhzdXNlZCA9IHZscDItPnZhbC5pbnRlZ2VyID8gKih2bHAyLT52YWwuaW50ZWdlcikgOiAwOwogCi0gICAgICAgICAgICBwcmludGYoIiUtMThzICUxNWx1ICUxNWx1ICUxNWx1ICU0bHUlJVxuIiwgZGVzY3IsCi0gICAgICAgICAgICAgICAgICAgdW5pdHMgPyBjb252ZXJ0X3VuaXRzKGhzc2l6ZSwgdW5pdHMsIDEwMjQpIDogaHNzaXplLAotICAgICAgICAgICAgICAgICAgIHVuaXRzID8gY29udmVydF91bml0cyhoc3VzZWQsIHVuaXRzLCAxMDI0KSA6IGhzdXNlZCwKLSAgICAgICAgICAgICAgICAgICB1bml0cyA/IGNvbnZlcnRfdW5pdHMoaHNzaXplLWhzdXNlZCwgdW5pdHMsIDEwMjQpIDogaHNzaXplIC0KLSAgICAgICAgICAgICAgICAgICBoc3VzZWQsIGhzc2l6ZSA/IGNvbnZlcnRfdW5pdHMoaHN1c2VkLCAxMDAsIGhzc2l6ZSkgOgotICAgICAgICAgICAgICAgICAgIGhzdXNlZCk7CisgICAgICAgICAgICBpZiAoaHVtYW5fdW5pdHMpIHsKKyAgICAgICAgICAgICAgICBjaGFyIHNpemVbMTBdLCB1c2VkWzEwXSwgYXZhaWxbMTBdOworICAgICAgICAgICAgICAgIHByaW50ZigiJS0xOHMgJTEwcyAlMTBzICUxMHMgJTRsdSUlXG4iLCBkZXNjciwKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2h1bWFuKHNpemUsIHNpemVvZiBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHMgPyBjb252ZXJ0X3VuaXRzKGhzc2l6ZSwgdW5pdHMsIDEwMjQpIDogaHNzaXplLCBodW1hbl91bml0cyksCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9odW1hbih1c2VkLCBzaXplb2YgdXNlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRzID8gY29udmVydF91bml0cyhoc3VzZWQsIHVuaXRzLCAxMDI0KSA6IGhzdXNlZCwgaHVtYW5fdW5pdHMpLAorICAgICAgICAgICAgICAgICAgICBmb3JtYXRfaHVtYW4oYXZhaWwsIHNpemVvZiBhdmFpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRzID8gY29udmVydF91bml0cyhoc3NpemUtaHN1c2VkLCB1bml0cywgMTAyNCkgOiBoc3NpemUgLQorICAgICAgICAgICAgICAgICAgICBoc3VzZWQsIGh1bWFuX3VuaXRzKSwKKyAgICAgICAgICAgICAgICAgICAgaHNzaXplID8gY29udmVydF91bml0cyhoc3VzZWQsIDEwMCwgaHNzaXplKSA6IGhzdXNlZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIiUtMThzICUxNWx1ICUxNWx1ICUxNWx1ICU0bHUlJVxuIiwgZGVzY3IsCisgICAgICAgICAgICAgICAgICAgIHVuaXRzID8gY29udmVydF91bml0cyhoc3NpemUsIHVuaXRzLCAxMDI0KSA6IGhzc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgdW5pdHMgPyBjb252ZXJ0X3VuaXRzKGhzdXNlZCwgdW5pdHMsIDEwMjQpIDogaHN1c2VkLAorICAgICAgICAgICAgICAgICAgICB1bml0cyA/IGNvbnZlcnRfdW5pdHMoaHNzaXplLWhzdXNlZCwgdW5pdHMsIDEwMjQpIDogaHNzaXplIC0KKyAgICAgICAgICAgICAgICAgICAgaHN1c2VkLAorICAgICAgICAgICAgICAgICAgICBoc3NpemUgPyBjb252ZXJ0X3VuaXRzKGhzdXNlZCwgMTAwLCBoc3NpemUpIDogaHN1c2VkKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICBuZXh0OgogICAgICAgICAgICAgdmxwID0gdmxwLT5uZXh0X3ZhcmlhYmxlOwpAQCAtMzMxLDcgKzM4Myw2IEBACiAgICAgfQogCiAgICAgaWYgKGNvdW50ID09IDApIHsKLSAgICAgICAgc2l6ZV90ICAgICAgICAgIHVuaXRzID0gMDsKICAgICAgICAgLyoKICAgICAgICAgICogdGhlIGhvc3QgcmVzb3VyY2VzIG1pYiBtdXN0IG5vdCBiZSBzdXBwb3J0ZWQuICBMZXRzIHRyeSB0aGUKICAgICAgICAgICogVUNELVNOTVAtTUlCIGFuZCBpdHMgZHNrVGFibGUgCkBAIC0zNzgsMTIgKzQyOSwxOSBAQAogICAgICAgICAgICAgaWYgKHZscDItPnR5cGUgPT0gU05NUF9OT1NVQ0hJTlNUQU5DRSkgZ290byBuZXh0MjsKICAgICAgICAgICAgIGhzdXNlZCA9ICoodmxwMi0+dmFsLmludGVnZXIpOwogCi0gICAgICAgICAgICBwcmludGYoIiUtMThzICUxNWx1ICUxNWx1ICUxNWx1ICU0bHUlJVxuIiwgZGVzY3IsCi0gICAgICAgICAgICAgICAgICAgdW5pdHMgPyBjb252ZXJ0X3VuaXRzKGhzc2l6ZSwgdW5pdHMsIDEwMjQpIDogaHNzaXplLAotICAgICAgICAgICAgICAgICAgIHVuaXRzID8gY29udmVydF91bml0cyhoc3VzZWQsIHVuaXRzLCAxMDI0KSA6IGhzdXNlZCwKLSAgICAgICAgICAgICAgICAgICB1bml0cyA/IGNvbnZlcnRfdW5pdHMoaHNzaXplLWhzdXNlZCwgdW5pdHMsIDEwMjQpIDogaHNzaXplIC0KLSAgICAgICAgICAgICAgICAgICBoc3VzZWQsIGhzc2l6ZSA/IGNvbnZlcnRfdW5pdHMoaHN1c2VkLCAxMDAsIGhzc2l6ZSkgOgotICAgICAgICAgICAgICAgICAgIGhzdXNlZCk7CisgICAgICAgICAgICBpZiAoaHVtYW5fdW5pdHMpIHsKKyAgICAgICAgICAgICAgICBjaGFyIHNpemVbMTBdLCB1c2VkWzEwXSwgYXZhaWxbMTBdOworICAgICAgICAgICAgICAgIHByaW50ZigiJS0xOHMgJTEwcyAlMTBzICUxMHMgJTRsdSUlXG4iLCBkZXNjciwKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2h1bWFuKHNpemUsIHNpemVvZiBzaXplLCBoc3NpemUsIGh1bWFuX3VuaXRzKSwKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2h1bWFuKHVzZWQsIHNpemVvZiB1c2VkLCBoc3VzZWQsIGh1bWFuX3VuaXRzKSwKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2h1bWFuKGF2YWlsLCBzaXplb2YgYXZhaWwsIGhzc2l6ZSAtIGhzdXNlZCwgaHVtYW5fdW5pdHMpLAorICAgICAgICAgICAgICAgICAgICBoc3NpemUgPyBjb252ZXJ0X3VuaXRzKGhzdXNlZCwgMTAwLCBoc3NpemUpIDogaHN1c2VkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHByaW50ZigiJS0xOHMgJTE1bHUgJTE1bHUgJTE1bHUgJTRsdSUlXG4iLCBkZXNjciwKKyAgICAgICAgICAgICAgICAgICAgIGhzc2l6ZSwgaHN1c2VkLCBoc3NpemUgLSBoc3VzZWQsCisgICAgICAgICAgICAgICAgICAgICBoc3NpemUgPyBjb252ZXJ0X3VuaXRzKGhzdXNlZCwgMTAwLCBoc3NpemUpIDogaHN1c2VkKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICBuZXh0MjoKICAgICAgICAgICAgIHZscCA9IHZscC0+bmV4dF92YXJpYWJsZTsKZGlmZiAtLWdpdCBhL2FwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuZGVwZW5kIGIvYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQKaW5kZXggYzFmYWVjZi4uOGQxMTY5OSAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQKKysrIGIvYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQKQEAgLTIzLDExICsyMyw4IEBACiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMzcsNiArMzQsNyBAQAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC03MSw2ICs2OSw3IEBACiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9pZi5sbzogbWFpbi5oCiAuL2lmLmxvOiBuZXRzdGF0LmgKQEAgLTk0LDExICs5Myw4IEBACiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTA4LDYgKzEwNCw3IEBACiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE0Miw2ICsxMzksNyBAQAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmggbWFpbi5oIG5ldHN0YXQuaAogLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaApAQCAtMTYzLDExICsxNjEsOCBAQAogLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTE3Nyw2ICsxNzIsNyBAQAogLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTIxMSw3ICsyMDcsNzYgQEAKIC4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCBtYWluLmggbmV0c3RhdC5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmggbWFpbi5oIG5ldHN0YXQuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKQEAgLTIzMiwxMSArMjk3LDggQEAKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0yNDYsNiArMzA4LDcgQEAKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0yODAsNiArMzQzLDcgQEAKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCBtYWluLmggbmV0c3RhdC5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKQEAgLTMwMSwxMSArMzY1LDggQEAKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0zMTUsNiArMzc2LDcgQEAKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMzQ5LDcgKzQxMSw3NiBAQAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmggbWFpbi5oIG5ldHN0YXQuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmggbWFpbi5oIG5ldHN0YXQuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKQEAgLTM3MCwxMSArNTAxLDggQEAKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0zODQsNiArNTEyLDcgQEAKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC00MTgsNCArNTQ3LDUgQEAKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaApkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbiBiL2FwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4KaW5kZXggNGEwN2ViYi4uMDRhZWI0MCAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbgorKysgYi9hcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmluCkBAIC0zLDYgKzMsOCBAQAogIwogCiB0b3BfYnVpbGRkaXI9Li4vLi4KK215c3ViZGlyPWFwcHMvc25tcG5ldHN0YXQKKwogSU5TVEFMTEJJTlBST0dTPXNubXBuZXRzdGF0JChFWEVFWFQpCiAKICMgdXNlIEdOVSB2cGF0aCwgaWYgYXZhaWxhYmxlLCB0byBvbmx5IHNldCBhIHBhdGggZm9yIHNvdXJjZSBhbmQgaGVhZGVycwpAQCAtMTYsMTUgKzE4LDE5IEBACiAjCiAjIGJ1aWxkIGluZm8KICMKLVNSQ1M9CWluZXQuYyBpbmV0Ni5jIGlmLmMgbWFpbi5jIHJvdXRlLmMgd2luc3R1Yi5jIGZmcy5jCi1PQkpTPQlpbmV0Lm8gaW5ldDYubyBpZi5vIG1haW4ubyByb3V0ZS5vIHdpbnN0dWIubyBmZnMubwotTE9CSlM9CWluZXQubG8gaW5ldDYubG8gaWYubG8gbWFpbi5sbyByb3V0ZS5sbyB3aW5zdHViLmxvIGZmcy5sbworU1JDUz0JaW5ldC5jIGluZXQ2LmMgaW5ldHguYyBpZi5jIG1haW4uYyByb3V0ZS5jIHJvdXRleC5jIHdpbnN0dWIuYyBmZnMuYworT0JKUz0JaW5ldC5vIGluZXQ2Lm8gaW5ldHgubyBpZi5vIG1haW4ubyByb3V0ZS5vIHJvdXRleC5vIHdpbnN0dWIubyBmZnMubworTE9CSlM9CWluZXQubG8gaW5ldDYubG8gaW5ldHgubG8gaWYubG8gbWFpbi5sbyByb3V0ZS5sbyByb3V0ZXgubG8gd2luc3R1Yi5sbyBmZnMubG8KK0ZUT0JKUz0JaW5ldC5mdCBpbmV0Ni5mdCBpbmV0eC5mdCBpZi5mdCBtYWluLmZ0IHJvdXRlLmZ0IHJvdXRleC5mdCB3aW5zdHViLmZ0IGZmcy5mdAogVEFSRz0gc25tcG5ldHN0YXQkKEVYRUVYVCkKIAorRkVBVFVSRUZJTEU9Li4vLi4vaW5jbHVkZS9uZXQtc25tcC9mZWF0dXJlcy1zbm1wbmV0c3RhdC5oCisKIENQUEZMQUdTPSAkKFRPUF9JTkNMVURFUykgIEBDUFBGTEFHU0AKIAorVkFMX0xJQlMJPSBAVkFMX0xJQlNACiBVU0VMSUJTPSAuLi8uLi9zbm1wbGliL2xpYm5ldHNubXAuJChMSUJfRVhURU5TSU9OKSQoTElCX1ZFUlNJT04pCi1MSUJTPQkgLi4vLi4vc25tcGxpYi9saWJuZXRzbm1wLiQoTElCX0VYVEVOU0lPTikkKExJQl9WRVJTSU9OKSBATElCU0AKK0xJQlM9CSAuLi8uLi9zbm1wbGliL2xpYm5ldHNubXAuJChMSUJfRVhURU5TSU9OKSQoTElCX1ZFUlNJT04pICQoVkFMX0xJQlMpIEBMSUJTQAogCiBhbGw6IHN0YW5kYXJkYWxsCiAKZGlmZiAtLWdpdCBhL2FwcHMvc25tcG5ldHN0YXQvaWYuYyBiL2FwcHMvc25tcG5ldHN0YXQvaWYuYwppbmRleCA4MTMzNGY3Li4xMjVlNmEzIDEwMDY0NAotLS0gYS9hcHBzL3NubXBuZXRzdGF0L2lmLmMKKysrIGIvYXBwcy9zbm1wbmV0c3RhdC9pZi5jCkBAIC0xNTEsMTYgKzE1MSwxNiBAQAogICAgICAgICAgKiAgIGRpc3BsYXlpbmcgdGhlIGxvY2FsIG5ldHdvcmsgaW5mb3JtYXRpb24KICAgICAgICAgICovCiAgICAgICAgIGNwID0gdG1wQWRkci5kYXRhOwotICAgICAgICBjcFswXSA9IHZwMi0+bmFtZVsgMTAgXSAmIDB4ZmY7Ci0gICAgICAgIGNwWzFdID0gdnAyLT5uYW1lWyAxMSBdICYgMHhmZjsKLSAgICAgICAgY3BbMl0gPSB2cDItPm5hbWVbIDEyIF0gJiAweGZmOwotICAgICAgICBjcFszXSA9IHZwMi0+bmFtZVsgMTMgXSAmIDB4ZmY7CisgICAgICAgIGNwWzBdID0gKHVpbnQ4X3QpIHZwMi0+bmFtZVsxMF07CisgICAgICAgIGNwWzFdID0gKHVpbnQ4X3QpIHZwMi0+bmFtZVsxMV07CisgICAgICAgIGNwWzJdID0gKHVpbnQ4X3QpIHZwMi0+bmFtZVsxMl07CisgICAgICAgIGNwWzNdID0gKHVpbnQ4X3QpIHZwMi0+bmFtZVsxM107CiAgICAgICAgIGlmQWRkciA9IHRtcEFkZHIuYWRkcjsKICAgICAgICAgY3AgPSB0bXBBZGRyLmRhdGE7Ci0gICAgICAgIGNwWzBdID0gdnAyLT52YWwuc3RyaW5nWyAwIF0gJiAweGZmOwotICAgICAgICBjcFsxXSA9IHZwMi0+dmFsLnN0cmluZ1sgMSBdICYgMHhmZjsKLSAgICAgICAgY3BbMl0gPSB2cDItPnZhbC5zdHJpbmdbIDIgXSAmIDB4ZmY7Ci0gICAgICAgIGNwWzNdID0gdnAyLT52YWwuc3RyaW5nWyAzIF0gJiAweGZmOworICAgICAgICBjcFswXSA9ICh1aW50OF90KSB2cDItPnZhbC5zdHJpbmdbMF07CisgICAgICAgIGNwWzFdID0gKHVpbnQ4X3QpIHZwMi0+dmFsLnN0cmluZ1sxXTsKKyAgICAgICAgY3BbMl0gPSAodWludDhfdCkgdnAyLT52YWwuc3RyaW5nWzJdOworICAgICAgICBjcFszXSA9ICh1aW50OF90KSB2cDItPnZhbC5zdHJpbmdbM107CiAgICAgICAgIG1hc2sgPSB0bXBBZGRyLmFkZHI7CiAgICAgICAgIHNucHJpbnRmKCBjdXJfaWYtPnJvdXRlLCAxMjgsICIlcyIsIG5ldG5hbWUoaWZBZGRyLCBtYXNrKSk7CiAgICAgfQpAQCAtMjkxLDcgKzI5MSw2IEBACiAgICAgICAgICAgICAgICAgICogWFhYIC0gVHJ5IHRvIHJlY292ZXIgPwogICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgIFNOTVBfRlJFRSggY3VyX2lmICk7Ci0gICAgICAgICAgICAgICAgY3VyX2lmID0gTlVMTDsKICAgICAgICAgICAgICAgICBicmVhazsgICAgLyogbm90IGZvciBub3csIG5vICovCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzd2l0Y2ggKCB2cC0+bmFtZVsgdmFyLT5uYW1lX2xlbmd0aC0yIF0gKSB7CkBAIC0zOTYsNyArMzk1LDYgQEAKICAgICAgICAgICovCiAgICAgICAgIGlmICggaW50cmZhY2UgJiYgc3RyY21wKCBjdXJfaWYtPm5hbWUsIGludHJmYWNlKSAhPSAwICYmIHN0cmNtcCggY3VyX2lmLT5kZXNjciwgaW50cmZhY2UpICE9IDApIHsKICAgICAgICAgICAgIFNOTVBfRlJFRSggY3VyX2lmICk7Ci0gICAgICAgICAgICBjdXJfaWYgPSBOVUxMOwogICAgICAgICB9CiAKICAgICAgICAgLyoKZGlmZiAtLWdpdCBhL2FwcHMvc25tcG5ldHN0YXQvaW5ldC5jIGIvYXBwcy9zbm1wbmV0c3RhdC9pbmV0LmMKaW5kZXggNmY3YzFlMS4uMDUzNzM0MCAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wbmV0c3RhdC9pbmV0LmMKKysrIGIvYXBwcy9zbm1wbmV0c3RhdC9pbmV0LmMKQEAgLTEyNiw3ICsxMjYsNyBAQAogCQlpZiAoYWZsYWcpCiAJCQlwcmludGYoIiAoaW5jbHVkaW5nIHNlcnZlcnMpIik7CiAJCXB1dGNoYXIoJ1xuJyk7Ci0JCXdpZHRoID0gQWZsYWcgPyAxOCA6IDIyOworCQl3aWR0aCA9IDI3OwogCQlwcmludGYoIiUtNS41cyAlKi4qcyAlKi4qcyAlc1xuIiwKIAkJCSAgICJQcm90byIsIC13aWR0aCwgd2lkdGgsICJMb2NhbCBBZGRyZXNzIiwKIAkJCQkJCS13aWR0aCwgd2lkdGgsICJSZW1vdGUgQWRkcmVzcyIsICIoc3RhdGUpIik7CkBAIC0xMzUsMjcgKzEzNSwyNyBAQAogCQogCS8qIEV4dHJhY3QgdGhlIGxvY2FsL3JlbW90ZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBpbmRleCB2YWx1ZXMgKi8KIAljcCA9IHRtcEFkZHIuZGF0YTsKLQljcFswXSA9IHZwLT5uYW1lWyAxMCBdICYgMHhmZjsKLQljcFsxXSA9IHZwLT5uYW1lWyAxMSBdICYgMHhmZjsKLQljcFsyXSA9IHZwLT5uYW1lWyAxMiBdICYgMHhmZjsKLQljcFszXSA9IHZwLT5uYW1lWyAxMyBdICYgMHhmZjsKKwljcFswXSA9ICh1aW50OF90KSB2cC0+bmFtZVsxMF07CisJY3BbMV0gPSAodWludDhfdCkgdnAtPm5hbWVbMTFdOworCWNwWzJdID0gKHVpbnQ4X3QpIHZwLT5uYW1lWzEyXTsKKwljcFszXSA9ICh1aW50OF90KSB2cC0+bmFtZVsxM107CiAJbG9jYWxBZGRyLnNfYWRkciA9IHRtcEFkZHIuYWRkci5zX2FkZHI7Ci0JbG9jYWxQb3J0ICAgICAgICA9IG50b2hzKHZwLT5uYW1lWyAxNCBdKTsKKwlsb2NhbFBvcnQgICAgICAgID0gdnAtPm5hbWVbIDE0IF07CiAJY3AgPSB0bXBBZGRyLmRhdGE7Ci0JY3BbMF0gPSB2cC0+bmFtZVsgMTUgXSAmIDB4ZmY7Ci0JY3BbMV0gPSB2cC0+bmFtZVsgMTYgXSAmIDB4ZmY7Ci0JY3BbMl0gPSB2cC0+bmFtZVsgMTcgXSAmIDB4ZmY7Ci0JY3BbM10gPSB2cC0+bmFtZVsgMTggXSAmIDB4ZmY7CisJY3BbMF0gPSAodWludDhfdCkgdnAtPm5hbWVbMTVdOworCWNwWzFdID0gKHVpbnQ4X3QpIHZwLT5uYW1lWzE2XTsKKwljcFsyXSA9ICh1aW50OF90KSB2cC0+bmFtZVsxN107CisJY3BbM10gPSAodWludDhfdCkgdnAtPm5hbWVbMThdOwogCXJlbW90ZUFkZHIuc19hZGRyID0gdG1wQWRkci5hZGRyLnNfYWRkcjsKLQlyZW1vdGVQb3J0ICAgICAgICA9IG50b2hzKHZwLT5uYW1lWyAxOSBdKTsKKwlyZW1vdGVQb3J0ICAgICAgICA9IHZwLT5uYW1lWyAxOSBdOwogCiAJcHJpbnRmKCIlLTUuNXMiLCBuYW1lKTsKIAlpbmV0cHJpbnQoJmxvY2FsQWRkciwgIGxvY2FsUG9ydCwgIG5hbWUsIDEpOwogCWluZXRwcmludCgmcmVtb3RlQWRkciwgcmVtb3RlUG9ydCwgbmFtZSwgMCk7CiAJaWYgKHN0YXRlIDwgMSB8fCBzdGF0ZSA+IFRDUF9OU1RBVEVTKSB7Ci0JCXByaW50ZigiJWRcbiIsIHN0YXRlICk7CisJCXByaW50ZigiICVkXG4iLCBzdGF0ZSApOwogCX0gZWxzZSB7Ci0JCXByaW50ZigiJXNcbiIsIHRjcHN0YXRlc1tzdGF0ZV0pOworCQlwcmludGYoIiAlc1xuIiwgdGNwc3RhdGVzW3N0YXRlXSk7CiAJfQogfQogCkBAIC0xNzYsNiArMTc2LDggQEAKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChuZXRzbm1wX3F1ZXJ5X3dhbGsoIHZhciwgc3MgKSAhPSBTTk1QX0VSUl9OT0VSUk9SKQogICAgICAgICByZXR1cm47CisgICAgaWYgKCh2YXItPnR5cGUgJiAweEYwKSA9PSAweDgwKQkvKiBFeGNlcHRpb24gKi8KKwlyZXR1cm47CiAKICAgICBmb3IgKHZwID0gdmFyOyB2cCA7IHZwPXZwLT5uZXh0X3ZhcmlhYmxlKSB7CiAgICAgICAgIHRjcHByb3RvcHJpbnRfbGluZShuYW1lLCB2cCwgJmZpcnN0KTsKQEAgLTIxMiw5ICsyMTQsMTEgQEAKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChuZXRzbm1wX3F1ZXJ5X3dhbGsoIHZhciwgc3MgKSAhPSBTTk1QX0VSUl9OT0VSUk9SKQogICAgICAgICByZXR1cm47CisgICAgaWYgKCh2YXItPnR5cGUgJiAweEYwKSA9PSAweDgwKQkvKiBFeGNlcHRpb24gKi8KKwlyZXR1cm47CiAKICAgICBwcmludGYoIkFjdGl2ZSBJbnRlcm5ldCAoJXMpIENvbm5lY3Rpb25zXG4iLCBuYW1lKTsKLSAgICBwcmludGYoIiUtNS41cyAlLTI4LjI4c1xuIiwgIlByb3RvIiwgIkxvY2FsIEFkZHJlc3MiKTsKKyAgICBwcmludGYoIiUtNS41cyAlLTI3LjI3c1xuIiwgIlByb3RvIiwgIkxvY2FsIEFkZHJlc3MiKTsKICAgICBmb3IgKHZwID0gdmFyOyB2cCA7IHZwPXZwLT5uZXh0X3ZhcmlhYmxlKSB7CiAgICAgICAgIHByaW50ZigiJS01LjVzIiwgbmFtZSk7CiAgICAgICAgIC8qCkBAIC0yMjMsMTIgKzIyNywxMiBAQAogICAgICAgICAgKiAgIHdlIHdhbGtlZCB1ZHBMb2NhbEFkZHJlc3MgcmF0aGVyIHRoYW4gdWRwTG9jYWxQb3J0KQogICAgICAgICAgKi8KICAgICAgICAgY3AgPSB0bXBBZGRyLmRhdGE7Ci0gICAgICAgIGNwWzBdID0gdnAtPm5hbWVbIDEwIF0gJiAweGZmOwotICAgICAgICBjcFsxXSA9IHZwLT5uYW1lWyAxMSBdICYgMHhmZjsKLSAgICAgICAgY3BbMl0gPSB2cC0+bmFtZVsgMTIgXSAmIDB4ZmY7Ci0gICAgICAgIGNwWzNdID0gdnAtPm5hbWVbIDEzIF0gJiAweGZmOworICAgICAgICBjcFswXSA9ICh1aW50OF90KSB2cC0+bmFtZVsxMF07CisgICAgICAgIGNwWzFdID0gKHVpbnQ4X3QpIHZwLT5uYW1lWzExXTsKKyAgICAgICAgY3BbMl0gPSAodWludDhfdCkgdnAtPm5hbWVbMTJdOworICAgICAgICBjcFszXSA9ICh1aW50OF90KSB2cC0+bmFtZVsxM107CiAgICAgICAgIGxvY2FsQWRkci5zX2FkZHIgPSB0bXBBZGRyLmFkZHIuc19hZGRyOwotICAgICAgICBsb2NhbFBvcnQgICAgICAgID0gbnRvaHMoICh1X3Nob3J0KSh2cC0+bmFtZVsgMTQgXSkpOworICAgICAgICBsb2NhbFBvcnQgICAgICAgID0gdnAtPm5hbWVbIDE0IF07CiAgICAgICAgIGluZXRwcmludCgmbG9jYWxBZGRyLCBsb2NhbFBvcnQsIG5hbWUsIDEpOwogICAgICAgICBwdXRjaGFyKCdcbicpOwogICAgIH0KQEAgLTI4MSwxMSArMjg1LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgfQogCi0JCQkJCXRjcHByb3RvcHJpbnRfbGluZShuYW1lLCB2cCwgJmZpcnN0KTsKLQogICAgICAgICAgICAgICAgICAgICBpZiAoKHZwLT50eXBlICE9IFNOTVBfRU5ET0ZNSUJWSUVXKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgKHZwLT50eXBlICE9IFNOTVBfTk9TVUNIT0JKRUNUKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgKHZwLT50eXBlICE9IFNOTVBfTk9TVUNISU5TVEFOQ0UpKSB7CisKKwkJCXRjcHByb3RvcHJpbnRfbGluZShuYW1lLCB2cCwgJmZpcnN0KTsKKwogICAgICAgICAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgICAgICAgICAqIENoZWNrIGlmIGxhc3QgdmFyaWFibGUsIGFuZCBpZiBzbywgc2F2ZSBmb3IgbmV4dCByZXF1ZXN0LgogICAgICAgICAgICAgICAgICAgICAgICAgICovCkBAIC0zMjQsMTkgKzMyOSwxOSBAQAogewogICAgIG9pZCAgICB0Y3BDb25uU3RhdGVfb2lkW10gPSB7IDEsMyw2LDEsMiwxLDYsMTMsMSwxIH07CiAgICAgc2l6ZV90IHRjcENvbm5TdGF0ZV9sZW4gICA9IE9JRF9MRU5HVEgoIHRjcENvbm5TdGF0ZV9vaWQgKTsKLQlpbnQgICAgdXNlX2dldGJ1bGsgPSAxOworICAgIGludCAgICB1c2VfZ2V0YnVsayA9IDE7CiAKICNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NOTVBWMQogICAgIGlmIChzcy0+dmVyc2lvbiA9PSBTTk1QX1ZFUlNJT05fMSkgewogICAgICAgICB1c2VfZ2V0YnVsayA9IDA7Ci0JfQorICAgIH0KICNlbmRpZgogCi0JaWYgKHVzZV9nZXRidWxrKSB7Ci0JCXRjcHByb3RvcHJfYnVsa2dldChuYW1lLCB0Y3BDb25uU3RhdGVfb2lkLCB0Y3BDb25uU3RhdGVfbGVuKTsKLQl9IGVsc2UgewotCQl0Y3Bwcm90b3ByX2dldChuYW1lLCB0Y3BDb25uU3RhdGVfb2lkLCB0Y3BDb25uU3RhdGVfbGVuKTsKLQl9CisgICAgaWYgKHVzZV9nZXRidWxrKSB7CisJICAgIHRjcHByb3RvcHJfYnVsa2dldChuYW1lLCB0Y3BDb25uU3RhdGVfb2lkLCB0Y3BDb25uU3RhdGVfbGVuKTsKKyAgICB9IGVsc2UgeworCSAgICB0Y3Bwcm90b3ByX2dldChuYW1lLCB0Y3BDb25uU3RhdGVfb2lkLCB0Y3BDb25uU3RhdGVfbGVuKTsKKyAgICB9CiB9CiAKIApAQCAtMzkxLDcgKzM5Niw2IEBACiAgICAgICAgICAqICAgdGhlbiBvbmx5IGRpc3BsYXkgbm9uLXplcm8gc3RhdHMuCiAgICAgICAgICAqLwogICAgICAgICBpZiAoICp2cC0+dmFsLmludGVnZXIgPiAwIHx8IHNmbGFnID09IDEgKSB7Ci0gICAgICAgICAgICBwdXRjaGFyKCdcdCcpOwogICAgICAgICAgICAgcHJpbnRmKHNwLT5kZXNjcmlwdGlvbiwgKnZwLT52YWwuaW50ZWdlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1cmFsKCp2cC0+dmFsLmludGVnZXIpKTsKICAgICAgICAgICAgIHB1dGNoYXIoJ1xuJyk7CkBAIC00MTAsMjQgKzQxNCwyNCBAQAogICAgIG9pZCAgICAgICAgICAgICAgIGlwc3RhdHNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDQsIDAsIDAgfTsKICAgICBzaXplX3QgICAgICAgICAgICBpcHN0YXRzX2xlbiAgID0gT0lEX0xFTkdUSCggaXBzdGF0c19vaWQgKTsKICAgICBzdHJ1Y3Qgc3RhdF90YWJsZSBpcHN0YXRzX3RibFtdID0gewotICAgICAgICB7MywgIiVkIHRvdGFsIGRhdGFncmFtJXMgcmVjZWl2ZWQifSwKLSAgICAgICAgezQsICIlZCBkYXRhZ3JhbSVzIHdpdGggaGVhZGVyIGVycm9ycyJ9LAotICAgICAgICB7NSwgIiVkIGRhdGFncmFtJXMgd2l0aCBhbiBpbnZhbGlkIGRlc3RpbmF0aW9uIGFkZHJlc3MifSwKLSAgICAgICAgezYsICIlZCBkYXRhZ3JhbSVzIGZvcndhcmRlZCJ9LAotICAgICAgICB7NywgIiVkIGRhdGFncmFtJXMgd2l0aCB1bmtub3duIHByb3RvY29sIn0sCi0gICAgICAgIHs4LCAiJWQgZGF0YWdyYW0lcyBkaXNjYXJkZWQifSwKLSAgICAgICAgezksICIlZCBkYXRhZ3JhbSVzIGRlbGl2ZXJlZCJ9LAotICAgICAgICB7MTAsICIlZCBvdXRwdXQgZGF0YWdyYW0gcmVxdWVzdCVzIn0sCi0gICAgICAgIHsxMSwgIiVkIG91dHB1dCBkYXRhZ3JhbSVzIGRpc2NhcmRlZCJ9LAotICAgICAgICB7MTIsICIlZCBkYXRhZ3JhbSVzIHdpdGggbm8gcm91dGUifSwKLSAgICAgICAgezE0LCAiJWQgZnJhZ21lbnQlcyByZWNlaXZlZCJ9LAotICAgICAgICB7MTUsICIlZCBkYXRhZ3JhbSVzIHJlYXNzZW1ibGVkIn0sCi0gICAgICAgIHsxNiwgIiVkIHJlYXNzZW1ibHkgZmFpbHVyZSVzIn0sCi0gICAgICAgIHsxNywgIiVkIGRhdGFncmFtJXMgZnJhZ21lbnRlZCJ9LAotICAgICAgICB7MTgsICIlZCBmcmFnbWVudGF0aW9uIGZhaWx1cmUlcyJ9LAotICAgICAgICB7MTksICIlZCBmcmFnbWVudCVzIGNyZWF0ZWQifSwKLSAgICAgICAgezIzLCAiJWQgcm91dGUlcyBkaXNjYXJkZWQifSwKLSAgICAgICAgezAsICIifQorICAgICAgICB7IDMsICIlMTRkIHRvdGFsIGRhdGFncmFtJXMgcmVjZWl2ZWQifSwKKyAgICAgICAgeyA0LCAiJTE0ZCBkYXRhZ3JhbSVzIHdpdGggaGVhZGVyIGVycm9ycyJ9LAorICAgICAgICB7IDUsICIlMTRkIGRhdGFncmFtJXMgd2l0aCBhbiBpbnZhbGlkIGRlc3RpbmF0aW9uIGFkZHJlc3MifSwKKyAgICAgICAgeyA2LCAiJTE0ZCBkYXRhZ3JhbSVzIGZvcndhcmRlZCJ9LAorICAgICAgICB7IDcsICIlMTRkIGRhdGFncmFtJXMgd2l0aCB1bmtub3duIHByb3RvY29sIn0sCisgICAgICAgIHsgOCwgIiUxNGQgZGF0YWdyYW0lcyBkaXNjYXJkZWQifSwKKyAgICAgICAgeyA5LCAiJTE0ZCBkYXRhZ3JhbSVzIGRlbGl2ZXJlZCJ9LAorICAgICAgICB7MTAsICIlMTRkIG91dHB1dCBkYXRhZ3JhbSByZXF1ZXN0JXMifSwKKyAgICAgICAgezExLCAiJTE0ZCBvdXRwdXQgZGF0YWdyYW0lcyBkaXNjYXJkZWQifSwKKyAgICAgICAgezEyLCAiJTE0ZCBkYXRhZ3JhbSVzIHdpdGggbm8gcm91dGUifSwKKyAgICAgICAgezE0LCAiJTE0ZCBmcmFnbWVudCVzIHJlY2VpdmVkIn0sCisgICAgICAgIHsxNSwgIiUxNGQgZGF0YWdyYW0lcyByZWFzc2VtYmxlZCJ9LAorICAgICAgICB7MTYsICIlMTRkIHJlYXNzZW1ibHkgZmFpbHVyZSVzIn0sCisgICAgICAgIHsxNywgIiUxNGQgZGF0YWdyYW0lcyBmcmFnbWVudGVkIn0sCisgICAgICAgIHsxOCwgIiUxNGQgZnJhZ21lbnRhdGlvbiBmYWlsdXJlJXMifSwKKyAgICAgICAgezE5LCAiJTE0ZCBmcmFnbWVudCVzIGNyZWF0ZWQifSwKKyAgICAgICAgezIzLCAiJTE0ZCByb3V0ZSVzIGRpc2NhcmRlZCJ9LAorICAgICAgICB7IDAsICIifQogICAgIH07CiAKICAgICBfZHVtcF9zdGF0cyggbmFtZSwgaXBzdGF0c19vaWQsIGlwc3RhdHNfbGVuLCBpcHN0YXRzX3RibCApOwpAQCAtNDQzLDM4ICs0NDcsMzggQEAKICAgICBvaWQgICAgICAgICAgICAgICBpY21wc3RhdHNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDUsIDAsIDAgfTsKICAgICBzaXplX3QgICAgICAgICAgICBpY21wc3RhdHNfbGVuICAgPSBPSURfTEVOR1RIKCBpY21wc3RhdHNfb2lkICk7CiAgICAgc3RydWN0IHN0YXRfdGFibGUgaWNtcHN0YXRzX3RibFtdID0gewotICAgICAgICB7MSwgIiVkIHRvdGFsIG1lc3NhZ2UlcyByZWNlaXZlZCJ9LAotICAgICAgICB7MiwgIiVkIG1lc3NhZ2UlcyBkcm9wcGVkIGR1ZSB0byBlcnJvcnMifSwKLSAgICAgICAgezE0LCAiJWQgb3VwdXQgbWVzc2FnZSByZXF1ZXN0JXMifSwKLSAgICAgICAgezE1LCAiJWQgb3V0cHV0IG1lc3NhZ2UlcyBkaXNjYXJkZWQifSwKLSAgICAgICAgezAsICIifQorICAgICAgICB7IDEsICIlMTRkIHRvdGFsIG1lc3NhZ2UlcyByZWNlaXZlZCJ9LAorICAgICAgICB7IDIsICIlMTRkIG1lc3NhZ2UlcyBkcm9wcGVkIGR1ZSB0byBlcnJvcnMifSwKKyAgICAgICAgezE0LCAiJTE0ZCBvdXB1dCBtZXNzYWdlIHJlcXVlc3QlcyJ9LAorICAgICAgICB7MTUsICIlMTRkIG91dHB1dCBtZXNzYWdlJXMgZGlzY2FyZGVkIn0sCisgICAgICAgIHsgMCwgIiJ9CiAgICAgfTsKICAgICBzdHJ1Y3Qgc3RhdF90YWJsZSBpY21wX2luaGlzdG9ncmFtW10gPSB7Ci0gICAgICAgIHszLCAiRGVzdGluYXRpb24gdW5yZWFjaGFibGU6ICVkIn0sCi0gICAgICAgIHs0LCAiVGltZSBFeGNlZWRlZDogJWQifSwKLSAgICAgICAgezUsICJQYXJhbWV0ZXIgUHJvYmxlbTogJWQifSwKLSAgICAgICAgezYsICJTb3VyY2UgUXVlbmNoOiAlZCJ9LAotICAgICAgICB7NywgIlJlZGlyZWN0OiAlZCJ9LAotICAgICAgICB7OCwgIkVjaG8gUmVxdWVzdDogJWQifSwKLSAgICAgICAgezksICJFY2hvIFJlcGx5OiAlZCJ9LAotICAgICAgICB7MTAsICJUaW1lc3RhbXAgUmVxdWVzdDogJWQifSwKLSAgICAgICAgezExLCAiVGltZXN0YW1wIFJlcGx5OiAlZCJ9LAotICAgICAgICB7MTIsICJBZGRyZXNzIE1hc2sgUmVxdWVzdDogJWQifSwKLSAgICAgICAgezEzLCAiQWRkcmVzcyBNYXNrIFJlcGx5OiAlZCJ9LAotICAgICAgICB7MCwgIiJ9CisgICAgICAgIHsgMywgIiAgICAgICAgRGVzdGluYXRpb24gdW5yZWFjaGFibGU6ICVkIn0sCisgICAgICAgIHsgNCwgIiAgICAgICAgVGltZSBFeGNlZWRlZDogJWQifSwKKyAgICAgICAgeyA1LCAiICAgICAgICBQYXJhbWV0ZXIgUHJvYmxlbTogJWQifSwKKyAgICAgICAgeyA2LCAiICAgICAgICBTb3VyY2UgUXVlbmNoOiAlZCJ9LAorICAgICAgICB7IDcsICIgICAgICAgIFJlZGlyZWN0OiAlZCJ9LAorICAgICAgICB7IDgsICIgICAgICAgIEVjaG8gUmVxdWVzdDogJWQifSwKKyAgICAgICAgeyA5LCAiICAgICAgICBFY2hvIFJlcGx5OiAlZCJ9LAorICAgICAgICB7MTAsICIgICAgICAgIFRpbWVzdGFtcCBSZXF1ZXN0OiAlZCJ9LAorICAgICAgICB7MTEsICIgICAgICAgIFRpbWVzdGFtcCBSZXBseTogJWQifSwKKyAgICAgICAgezEyLCAiICAgICAgICBBZGRyZXNzIE1hc2sgUmVxdWVzdDogJWQifSwKKyAgICAgICAgezEzLCAiICAgICAgICBBZGRyZXNzIE1hc2sgUmVwbHk6ICVkIn0sCisgICAgICAgIHsgMCwgIiJ9CiAgICAgfTsKICAgICBzdHJ1Y3Qgc3RhdF90YWJsZSBpY21wX291dGhpc3RvZ3JhbVtdID0gewotICAgICAgICB7MTYsICJEZXN0aW5hdGlvbiB1bnJlYWNoYWJsZTogJWQifSwKLSAgICAgICAgezE3LCAiVGltZSBFeGNlZWRlZDogJWQifSwKLSAgICAgICAgezE4LCAiUGFyYW1ldGVyIFByb2JsZW06ICVkIn0sCi0gICAgICAgIHsxOSwgIlNvdXJjZSBRdWVuY2g6ICVkIn0sCi0gICAgICAgIHsyMCwgIlJlZGlyZWN0OiAlZCJ9LAotICAgICAgICB7MjEsICJFY2hvIFJlcXVlc3Q6ICVkIn0sCi0gICAgICAgIHsyMiwgIkVjaG8gUmVwbHk6ICVkIn0sCi0gICAgICAgIHsyMywgIlRpbWVzdGFtcCBSZXF1ZXN0OiAlZCJ9LAotICAgICAgICB7MjQsICJUaW1lc3RhbXAgUmVwbHk6ICVkIn0sCi0gICAgICAgIHsyNSwgIkFkZHJlc3MgTWFzayBSZXF1ZXN0OiAlZCJ9LAotICAgICAgICB7MjYsICJBZGRyZXNzIE1hc2sgUmVwbHk6ICVkIn0sCisgICAgICAgIHsxNiwgIiAgICAgICAgRGVzdGluYXRpb24gdW5yZWFjaGFibGU6ICVkIn0sCisgICAgICAgIHsxNywgIiAgICAgICAgVGltZSBFeGNlZWRlZDogJWQifSwKKyAgICAgICAgezE4LCAiICAgICAgICBQYXJhbWV0ZXIgUHJvYmxlbTogJWQifSwKKyAgICAgICAgezE5LCAiICAgICAgICBTb3VyY2UgUXVlbmNoOiAlZCJ9LAorICAgICAgICB7MjAsICIgICAgICAgIFJlZGlyZWN0OiAlZCJ9LAorICAgICAgICB7MjEsICIgICAgICAgIEVjaG8gUmVxdWVzdDogJWQifSwKKyAgICAgICAgezIyLCAiICAgICAgICBFY2hvIFJlcGx5OiAlZCJ9LAorICAgICAgICB7MjMsICIgICAgICAgIFRpbWVzdGFtcCBSZXF1ZXN0OiAlZCJ9LAorICAgICAgICB7MjQsICIgICAgICAgIFRpbWVzdGFtcCBSZXBseTogJWQifSwKKyAgICAgICAgezI1LCAiICAgICAgICBBZGRyZXNzIE1hc2sgUmVxdWVzdDogJWQifSwKKyAgICAgICAgezI2LCAiICAgICAgICBBZGRyZXNzIE1hc2sgUmVwbHk6ICVkIn0sCiAgICAgICAgIHswLCAiIn0KICAgICB9OwogCkBAIC00OTUsMTkgKzQ5OSwxOSBAQAogICAgIG9pZCAgICAgICAgICAgICAgIHRjcHN0YXRzX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA2LCAwLCAwIH07CiAgICAgc2l6ZV90ICAgICAgICAgICAgdGNwc3RhdHNfbGVuICAgPSBPSURfTEVOR1RIKCB0Y3BzdGF0c19vaWQgKTsKICAgICBzdHJ1Y3Qgc3RhdF90YWJsZSB0Y3BzdGF0c190YmxbXSA9IHsKLSAgICAgICAgezUsICIlZCBhY3RpdmUgb3BlbiVzIn0sCi0gICAgICAgIHs2LCAiJWQgcGFzc2l2ZSBvcGVuJXMifSwKLSAgICAgICAgezcsICIlZCBmYWlsZWQgYXR0ZW1wdCVzIn0sCi0gICAgICAgIHs4LCAiJWQgcmVzZXQlcyBvZiBlc3RhYmxpc2hlZCBjb25uZWN0aW9ucyJ9LAotICAgICAgICB7OSwgIiVkIGN1cnJlbnQgZXN0YWJsaXNoZWQgY29ubmVjdGlvbiVzIn0sCi0gICAgICAgIHsxMCwgIiVkIHNlZ21lbnQlcyByZWNlaXZlZCJ9LAotICAgICAgICB7MTEsICIlZCBzZWdtZW50JXMgc2VudCJ9LAotICAgICAgICB7MTIsICIlZCBzZWdtZW50JXMgcmV0cmFuc21pdHRlZCJ9LAotICAgICAgICB7MTQsICIlZCBpbnZhbGlkIHNlZ21lbnQlcyByZWNlaXZlZCJ9LAotICAgICAgICB7MTUsICIlZCByZXNldCVzIHNlbnQifSwKLSAgICAgICAgezAsICIifQorICAgICAgICB7IDUsICIlMTRkIGFjdGl2ZSBvcGVuJXMifSwKKyAgICAgICAgeyA2LCAiJTE0ZCBwYXNzaXZlIG9wZW4lcyJ9LAorICAgICAgICB7IDcsICIlMTRkIGZhaWxlZCBhdHRlbXB0JXMifSwKKyAgICAgICAgeyA4LCAiJTE0ZCByZXNldCVzIG9mIGVzdGFibGlzaGVkIGNvbm5lY3Rpb25zIn0sCisgICAgICAgIHsgOSwgIiUxNGQgY3VycmVudGx5IGVzdGFibGlzaGVkIGNvbm5lY3Rpb24lcyJ9LAorICAgICAgICB7MTAsICIlMTRkIHNlZ21lbnQlcyByZWNlaXZlZCJ9LAorICAgICAgICB7MTEsICIlMTRkIHNlZ21lbnQlcyBzZW50In0sCisgICAgICAgIHsxMiwgIiUxNGQgc2VnbWVudCVzIHJldHJhbnNtaXR0ZWQifSwKKyAgICAgICAgezE0LCAiJTE0ZCBpbnZhbGlkIHNlZ21lbnQlcyByZWNlaXZlZCJ9LAorICAgICAgICB7MTUsICIlMTRkIHJlc2V0JXMgc2VudCJ9LAorICAgICAgICB7IDAsICIifQogICAgIH07Ci0gICAgX2R1bXBfc3RhdHMoIG5hbWUsIHRjcHN0YXRzX29pZCwgdGNwc3RhdHNfbGVuLCB0Y3BzdGF0c190YmwgKTsKKyAgICBfZHVtcF9zdGF0cyggInRjcCIsIHRjcHN0YXRzX29pZCwgdGNwc3RhdHNfbGVuLCB0Y3BzdGF0c190YmwgKTsKIH0KIAogCkBAIC01MjAsMTMgKzUyNCwxMyBAQAogICAgIG9pZCAgICAgICAgICAgICAgIHVkcHN0YXRzX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA3LCAwLCAwIH07CiAgICAgc2l6ZV90ICAgICAgICAgICAgdWRwc3RhdHNfbGVuICAgPSBPSURfTEVOR1RIKCB1ZHBzdGF0c19vaWQgKTsKICAgICBzdHJ1Y3Qgc3RhdF90YWJsZSB1ZHBzdGF0c190YmxbXSA9IHsKLSAgICAgICAgezEsICIlZCB0b3RhbCBkYXRhZ3JhbSVzIHJlY2VpdmVkIn0sCi0gICAgICAgIHsyLCAiJWQgZGF0YWdyYW0lcyB0byBpbnZhbGlkIHBvcnQifSwKLSAgICAgICAgezMsICIlZCBkYXRhZ3JhbSVzIGRyb3BwZWQgZHVlIHRvIGVycm9ycyJ9LAotICAgICAgICB7NCwgIiVkIG91dHB1dCBkYXRhZ3JhbSByZXF1ZXN0JXMifSwKKyAgICAgICAgezEsICIlMTRkIHRvdGFsIGRhdGFncmFtJXMgcmVjZWl2ZWQifSwKKyAgICAgICAgezIsICIlMTRkIGRhdGFncmFtJXMgdG8gaW52YWxpZCBwb3J0In0sCisgICAgICAgIHszLCAiJTE0ZCBkYXRhZ3JhbSVzIGRyb3BwZWQgZHVlIHRvIGVycm9ycyJ9LAorICAgICAgICB7NCwgIiUxNGQgb3V0cHV0IGRhdGFncmFtIHJlcXVlc3QlcyJ9LAogICAgICAgICB7MCwgIiJ9CiAgICAgfTsKLSAgICBfZHVtcF9zdGF0cyggbmFtZSwgdWRwc3RhdHNfb2lkLCB1ZHBzdGF0c19sZW4sIHVkcHN0YXRzX3RibCApOworICAgIF9kdW1wX3N0YXRzKCAidWRwIiwgdWRwc3RhdHNfb2lkLCB1ZHBzdGF0c19sZW4sIHVkcHN0YXRzX3RibCApOwogfQogCiAKQEAgLTU2MCwyMiArNTY0LDI1IEBACiB7CiAJc3RydWN0IHNlcnZlbnQgKnNwID0gTlVMTDsKIAljaGFyIGxpbmVbODBdLCAqY3A7Ci0JaW50IHdpZHRoOworCWludCB3aWR0aCA9IDI3OwogCi0Jc25wcmludGYobGluZSwgc2l6ZW9mIGxpbmUsICIlLipzLiIsIChBZmxhZyAmJiAhbmZsYWcpID8gMTIgOiAxNiwKLQkgICAgaW5ldG5hbWUoaW4pKTsKKwlpZiAodmZsYWcpCisJICAgIHNucHJpbnRmKGxpbmUsIHNpemVvZiBsaW5lLCAiJXMuIiwgaW5ldG5hbWUoaW4pKTsKKwllbHNlCisJICAgIHNucHJpbnRmKGxpbmUsIHNpemVvZiBsaW5lLCAiJS4qcy4iLCB3aWR0aC05LCBpbmV0bmFtZShpbikpOwogCWNwID0gc3RyY2hyKGxpbmUsICdcMCcpOwogCWlmICghbmZsYWcgJiYgcG9ydCkKLQkJc3AgPSBnZXRzZXJ2Ynlwb3J0KChpbnQpcG9ydCwgcHJvdG8pOworCQlzcCA9IGdldHNlcnZieXBvcnQoaHRvbnMoKHVpbnQxNl90KSBwb3J0KSwgcHJvdG8pOwogCWlmIChzcCB8fCBwb3J0ID09IDApCi0JCXNucHJpbnRmKGNwLCBsaW5lICsgc2l6ZW9mIGxpbmUgLSBjcCwgIiUuOHMiLAorCQlzbnByaW50ZihjcCwgbGluZSArIHNpemVvZiBsaW5lIC0gY3AsIHZmbGFnID8gIiVzIiA6ICIlLjhzIiwKIAkJICAgIHNwID8gc3AtPnNfbmFtZSA6ICIqIik7CiAgICAgIC8qCiAgICAgICAqIFRyYW5zbGF0aW9uIG9mIFJQQyBzZXJ2aWNlIG5hbWVzIC0gT21pdHRlZAogICAgICAgKi8KIAllbHNlCi0JCXNucHJpbnRmKGNwLCBsaW5lICsgc2l6ZW9mIGxpbmUgLSBjcCwgIiVkIiwgbnRvaHMocG9ydCkpOwotCXdpZHRoID0gQWZsYWcgPyAxOCA6IDIyOworCQlzbnByaW50ZihjcCwgbGluZSArIHNpemVvZiBsaW5lIC0gY3AsICIlZCIsIHBvcnQpOworCWlmICh2ZmxhZyAmJiB3aWR0aCA8IHN0cmxlbihsaW5lKSkKKwkgICAgd2lkdGggPSBzdHJsZW4obGluZSk7CiAJcHJpbnRmKCIgJS0qLipzIiwgd2lkdGgsIHdpZHRoLCBsaW5lKTsKIH0KIApAQCAtNTk4LDkgKzYwNSwxMCBAQAogI2VuZGlmCiAKIAlpZiAoZmlyc3QgJiYgIW5mbGFnKSB7CisJCWNoYXIgdG1wW01BWEhPU1ROQU1FTEVOXTsKIAkJZmlyc3QgPSAwOwotCQlpZiAoZ2V0aG9zdG5hbWUoZG9tYWluLCBzaXplb2YoZG9tYWluKSkgPT0gMCAmJgotCQkgICAgKGNwID0gc3RyY2hyKGRvbWFpbiwgJy4nKSkpCisJCWlmIChnZXRob3N0bmFtZSh0bXAsIHNpemVvZih0bXApKSA9PSAwICYmCisJCSAgICAoY3AgPSBzdHJjaHIodG1wLCAnLicpKSkKIAkJCSh2b2lkKSBzdHJsY3B5KGRvbWFpbiwgY3AgKyAxLCBzaXplb2YgZG9tYWluKTsKIAkJZWxzZQogCQkJZG9tYWluWzBdID0gJ1wwJzsKQEAgLTYxNiw3ICs2MjQsOCBAQAogCQkJCWNwID0gbnAtPm5fbmFtZTsKIAkJfQogCQlpZiAoY3AgPT0gTlVMTCkgewotCQkJaHAgPSBnZXRob3N0YnlhZGRyKChjaGFyICopaW5wLCBzaXplb2YgKCppbnApLCBBRl9JTkVUKTsKKwkJCWhwID0gbmV0c25tcF9nZXRob3N0YnlhZGRyKChjaGFyICopaW5wLCBzaXplb2YgKCppbnApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUZfSU5FVCk7CiAJCQlpZiAoaHApIHsKIAkJCQlpZiAoKGNwID0gc3RyY2hyKGhwLT5oX25hbWUsICcuJykpICYmCiAJCQkJICAgICFzdHJjbXAoY3AgKyAxLCBkb21haW4pKQpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wbmV0c3RhdC9pbmV0Ni5jIGIvYXBwcy9zbm1wbmV0c3RhdC9pbmV0Ni5jCmluZGV4IDQyNzE4ZjIuLjcxMDliODcgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcG5ldHN0YXQvaW5ldDYuYworKysgYi9hcHBzL3NubXBuZXRzdGF0L2luZXQ2LmMKQEAgLTEyNCw3ICsxMjQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9OVUxMLCBOVUxMLCAgMCk7CiAgICAgaWYgKG5ldHNubXBfcXVlcnlfd2FsayggdmFyLCBzcyApICE9IFNOTVBfRVJSX05PRVJST1IpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAodmFyLT50eXBlID09IEFTTl9OVUxMKSAgICAvKiBObyBlbnRyaWVzICovCisgICAgaWYgKCh2YXItPnR5cGUgJiAweEYwKSA9PSAweDgwKQkJLyogZXhjZXB0aW9uICovCiAgICAgICAgIHJldHVybjsKIAogICAgIGZvciAodnAgPSB2YXI7IHZwIDsgdnA9dnAtPm5leHRfdmFyaWFibGUpIHsKQEAgLTEzNyw3ICsxMzcsNyBAQAogICAgICAgICAgICAgaWYgKGFmbGFnKQogICAgICAgICAgICAgICAgIHByaW50ZigiIChpbmNsdWRpbmcgc2VydmVycykiKTsKICAgICAgICAgICAgIHB1dGNoYXIoJ1xuJyk7Ci0gICAgICAgICAgICBwcmludGYoIiUtNS41cyAlLTI4LjI4cyAlLTI4LjI4cyAlNHMgJXNcbiIsCisgICAgICAgICAgICBwcmludGYoIiUtNS41cyAlLTI3LjI3cyAlLTI3LjI3cyAlNHMgJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgIlByb3RvIiwgIkxvY2FsIEFkZHJlc3MiLCAiUmVtb3RlIEFkZHJlc3MiLCAiSS9GIiwgIihzdGF0ZSkiKTsKICAgICAgICAgICAgIGZpcnN0ID0gMDsKICAgICAgICAgfQpAQCAtMTg0LDExICsxODQsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU05fTlVMTCwgTlVMTCwgIDApOwogICAgIGlmIChuZXRzbm1wX3F1ZXJ5X3dhbGsoIHZhciwgc3MgKSAhPSBTTk1QX0VSUl9OT0VSUk9SKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKHZhci0+dHlwZSA9PSBBU05fTlVMTCkgICAgLyogTm8gZW50cmllcyAqLworICAgIGlmICgodmFyLT50eXBlICYgMHhGMCkgPT0gMHg4MCkJCS8qIGV4Y2VwdGlvbiAqLwogICAgICAgICByZXR1cm47CiAKICAgICBwcmludGYoIkFjdGl2ZSBJbnRlcm5ldCBDb25uZWN0aW9uc1xuIik7Ci0gICAgcHJpbnRmKCIlLTUuNXMgJS0yOC4yOHMgJTRzXG4iLCAiUHJvdG8iLCAiTG9jYWwgQWRkcmVzcyIsICJJL0YiKTsKKyAgICBwcmludGYoIiUtNS41cyAlLTI3LjI3cyAlNHNcbiIsICJQcm90byIsICJMb2NhbCBBZGRyZXNzIiwgIkkvRiIpOwogICAgIGZvciAodnAgPSB2YXI7IHZwIDsgdnA9dnAtPm5leHRfdmFyaWFibGUpIHsKICAgICAgICAgcHJpbnRmKCIlLTUuNXMiLCBuYW1lKTsKICAgICAgICAgLyoKQEAgLTI0NSw2ICsyNDUsOCBAQAogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIGlmIChuZXRzbm1wX3F1ZXJ5X2dldG5leHQoIHZhciwgc3MgKSAhPSBTTk1QX0VSUl9OT0VSUk9SKQogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICgodmFyLT50eXBlICYgMHhGMCkgPT0gMHg4MCkJCS8qIGV4Y2VwdGlvbiAqLworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmICggc25tcF9vaWRfY29tcGFyZSggb2lkX2J1ZiwgICBidWZfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhci0+bmFtZSwgYnVmX2xlbikgIT0gMCApCiAgICAgICAgICAgICBicmVhazsgICAgLyogRW5kIG9mIFRhYmxlICovCkBAIC0yNzEsNyArMjczLDYgQEAKICAgICAgICAgICogICB0aGVuIG9ubHkgZGlzcGxheSBub24temVybyBzdGF0cy4KICAgICAgICAgICovCiAgICAgICAgIGlmICggc3RhdHNbc3AtPmVudHJ5XSA+IDAgfHwgc2ZsYWcgPT0gMSApIHsKLSAgICAgICAgICAgIHB1dGNoYXIoJ1x0Jyk7CiAgICAgICAgICAgICBwcmludGYoc3AtPmRlc2NyaXB0aW9uLCBzdGF0c1tzcC0+ZW50cnldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVyYWwoc3RhdHNbc3AtPmVudHJ5XSkpOwogICAgICAgICAgICAgcHV0Y2hhcignXG4nKTsKQEAgLTI5MSwyNyArMjkyLDI3IEBACiAgICAgb2lkICAgICAgICAgICAgICAgaXA2c3RhdHNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDU1LCAxLCA2LCAxLCAwIH07CiAgICAgc2l6ZV90ICAgICAgICAgICAgaXA2c3RhdHNfbGVuICAgPSBPSURfTEVOR1RIKCBpcDZzdGF0c19vaWQgKTsKICAgICBzdHJ1Y3Qgc3RhdF90YWJsZSBpcDZzdGF0c190YmxbXSA9IHsKLSAgICAgICAgezEsICIlZCB0b3RhbCBkYXRhZ3JhbSVzIHJlY2VpdmVkIn0sCi0gICAgICAgIHsyLCAiJWQgZGF0YWdyYW0lcyB3aXRoIGhlYWRlciBlcnJvcnMifSwKLSAgICAgICAgezMsICIlZCBvdmVyc2l6ZWQgZGF0YWdyYW0lcyJ9LAotICAgICAgICB7NCwgIiVkIGRhdGFncmFtJXMgd2l0aCBubyByb3V0ZSJ9LAotICAgICAgICB7NSwgIiVkIGRhdGFncmFtJXMgd2l0aCBhbiBpbnZhbGlkIGRlc3RpbmF0aW9uIGFkZHJlc3MifSwKLSAgICAgICAgezYsICIlZCBkYXRhZ3JhbSVzIHdpdGggdW5rbm93biBwcm90b2NvbCJ9LAotICAgICAgICB7NywgIiVkIHNob3J0IGRhdGFncmFtJXMgZGlzY2FyZGVkIn0sCi0gICAgICAgIHs4LCAiJWQgZGF0YWdyYW0lcyBkaXNjYXJkZWQifSwKLSAgICAgICAgezksICIlZCBkYXRhZ3JhbSVzIGRlbGl2ZXJlZCJ9LAotICAgICAgICB7MTAsICIlZCBkYXRhZ3JhbSVzIGZvcndhcmRlZCJ9LAotICAgICAgICB7MTEsICIlZCBvdXRwdXQgZGF0YWdyYW0gcmVxdWVzdCVzIn0sCi0gICAgICAgIHsxMiwgIiVkIG91dHB1dCBkYXRhZ3JhbSVzIGRpc2NhcmRlZCJ9LAotICAgICAgICB7MTMsICIlZCBkYXRhZ3JhbSVzIGZyYWdtZW50ZWQifSwKLSAgICAgICAgezE0LCAiJWQgZnJhZ21lbnRhdGlvbiBmYWlsdXJlJXMifSwKLSAgICAgICAgezE1LCAiJWQgZnJhZ21lbnQlcyBjcmVhdGVkIn0sCi0gICAgICAgIHsxNiwgIiVkIGZyYWdtZW50JXMgcmVjZWl2ZWQifSwKLSAgICAgICAgezE3LCAiJWQgZGF0YWdyYW0lcyByZWFzc2VtYmxlZCJ9LAotICAgICAgICB7MTgsICIlZCByZWFzc2VtYmx5IGZhaWx1cmUlcyJ9LAotICAgICAgICB7MTksICIlZCBtdWx0aWNhc3QgZGF0YWdyYW0lcyByZWNlaXZlZCJ9LAotICAgICAgICB7MjAsICIlZCBtdWx0aWNhc3QgZGF0YWdyYW0lcyB0cmFuc21pdHRlZCJ9LAotICAgICAgICB7MCwgIiJ9CisgICAgICAgIHsgMSwgIiUxNGQgdG90YWwgZGF0YWdyYW0lcyByZWNlaXZlZCJ9LAorICAgICAgICB7IDIsICIlMTRkIGRhdGFncmFtJXMgd2l0aCBoZWFkZXIgZXJyb3JzIn0sCisgICAgICAgIHsgMywgIiUxNGQgb3ZlcnNpemVkIGRhdGFncmFtJXMifSwKKyAgICAgICAgeyA0LCAiJTE0ZCBkYXRhZ3JhbSVzIHdpdGggbm8gcm91dGUifSwKKyAgICAgICAgeyA1LCAiJTE0ZCBkYXRhZ3JhbSVzIHdpdGggYW4gaW52YWxpZCBkZXN0aW5hdGlvbiBhZGRyZXNzIn0sCisgICAgICAgIHsgNiwgIiUxNGQgZGF0YWdyYW0lcyB3aXRoIHVua25vd24gcHJvdG9jb2wifSwKKyAgICAgICAgeyA3LCAiJTE0ZCBzaG9ydCBkYXRhZ3JhbSVzIGRpc2NhcmRlZCJ9LAorICAgICAgICB7IDgsICIlMTRkIGRhdGFncmFtJXMgZGlzY2FyZGVkIn0sCisgICAgICAgIHsgOSwgIiUxNGQgZGF0YWdyYW0lcyBkZWxpdmVyZWQifSwKKyAgICAgICAgezEwLCAiJTE0ZCBkYXRhZ3JhbSVzIGZvcndhcmRlZCJ9LAorICAgICAgICB7MTEsICIlMTRkIG91dHB1dCBkYXRhZ3JhbSByZXF1ZXN0JXMifSwKKyAgICAgICAgezEyLCAiJTE0ZCBvdXRwdXQgZGF0YWdyYW0lcyBkaXNjYXJkZWQifSwKKyAgICAgICAgezEzLCAiJTE0ZCBkYXRhZ3JhbSVzIGZyYWdtZW50ZWQifSwKKyAgICAgICAgezE0LCAiJTE0ZCBmcmFnbWVudGF0aW9uIGZhaWx1cmUlcyJ9LAorICAgICAgICB7MTUsICIlMTRkIGZyYWdtZW50JXMgY3JlYXRlZCJ9LAorICAgICAgICB7MTYsICIlMTRkIGZyYWdtZW50JXMgcmVjZWl2ZWQifSwKKyAgICAgICAgezE3LCAiJTE0ZCBkYXRhZ3JhbSVzIHJlYXNzZW1ibGVkIn0sCisgICAgICAgIHsxOCwgIiUxNGQgcmVhc3NlbWJseSBmYWlsdXJlJXMifSwKKyAgICAgICAgezE5LCAiJTE0ZCBtdWx0aWNhc3QgZGF0YWdyYW0lcyByZWNlaXZlZCJ9LAorICAgICAgICB7MjAsICIlMTRkIG11bHRpY2FzdCBkYXRhZ3JhbSVzIHRyYW5zbWl0dGVkIn0sCisgICAgICAgIHsgMCwgIiJ9CiAgICAgfTsKIAogICAgIF9kdW1wX3Y2c3RhdHMoIG5hbWUsIGlwNnN0YXRzX29pZCwgaXA2c3RhdHNfbGVuLCBpcDZzdGF0c190YmwgKTsKQEAgLTMzMSw0NiArMzMyLDQ2IEBACiAgICAgb2lkICAgICAgICAgICAgICAgaWNtcDZzdGF0c19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgNTYsIDEsIDEsIDEsIDAgfTsKICAgICBzaXplX3QgICAgICAgICAgICBpY21wNnN0YXRzX2xlbiAgID0gT0lEX0xFTkdUSCggaWNtcDZzdGF0c19vaWQgKTsKICAgICBzdHJ1Y3Qgc3RhdF90YWJsZSBpY21wNnN0YXRzX3RibFtdID0gewotICAgICAgICB7MSwgIiVkIHRvdGFsIG1lc3NhZ2UlcyByZWNlaXZlZCJ9LAotICAgICAgICB7MiwgIiVkIG1lc3NhZ2UlcyBkcm9wcGVkIGR1ZSB0byBlcnJvcnMifSwKLSAgICAgICAgezE4LCAiJWQgb3VwdXQgbWVzc2FnZSByZXF1ZXN0JXMifSwKLSAgICAgICAgezE5LCAiJWQgb3V0cHV0IG1lc3NhZ2UlcyBkaXNjYXJkZWQifSwKLSAgICAgICAgezAsICIifQorICAgICAgICB7IDEsICIlMTRkIHRvdGFsIG1lc3NhZ2UlcyByZWNlaXZlZCJ9LAorICAgICAgICB7IDIsICIlMTRkIG1lc3NhZ2UlcyBkcm9wcGVkIGR1ZSB0byBlcnJvcnMifSwKKyAgICAgICAgezE4LCAiJTE0ZCBvdXB1dCBtZXNzYWdlIHJlcXVlc3QlcyJ9LAorICAgICAgICB7MTksICIlMTRkIG91dHB1dCBtZXNzYWdlJXMgZGlzY2FyZGVkIn0sCisgICAgICAgIHsgMCwgIiJ9CiAgICAgfTsKICAgICBzdHJ1Y3Qgc3RhdF90YWJsZSBpY21wNl9pbmhpc3RvZ3JhbVtdID0gewotICAgICAgICB7MywgIkRlc3RpbmF0aW9uIHVucmVhY2hhYmxlOiAlZCJ9LAotICAgICAgICB7NCwgIkFkbWluIFByb2hpYml0OiAlZCJ9LAotICAgICAgICB7NSwgIlRpbWUgRXhjZWVkZWQ6ICVkIn0sCi0gICAgICAgIHs2LCAiUGFyYW1ldGVyIFByb2JsZW06ICVkIn0sCi0gICAgICAgIHs3LCAiVG9vIEJpZzogJWQifSwKLSAgICAgICAgezgsICJFY2hvIFJlcXVlc3Q6ICVkIn0sCi0gICAgICAgIHs5LCAiRWNobyBSZXBseTogJWQifSwKLSAgICAgICAgezEwLCAiUm91dGVyIFNvbGljaXQ6ICVkIn0sCi0gICAgICAgIHsxMSwgIlJvdXRlciBBZHZlcnQ6ICVkIn0sCi0gICAgICAgIHsxMiwgIk5laWdoYm9yIFNvbGljaXQ6ICVkIn0sCi0gICAgICAgIHsxMywgIk5laWdoYm9yIEFkdmVydDogJWQifSwKLSAgICAgICAgezE0LCAiUmVkaXJlY3Q6ICVkIn0sCi0gICAgICAgIHsxNSwgIkdyb3VwIE1lbWJlciBSZXF1ZXN0OiAlZCJ9LAotICAgICAgICB7MTYsICJHcm91cCBNZW1iZXIgUmVwbHk6JWQifSwKLSAgICAgICAgezE3LCAiR3JvdXAgTWVtYmVyIFJlZHVjZTolZCJ9LAotICAgICAgICB7MCwgIiJ9CisgICAgICAgIHsgMywgIiAgICAgICAgRGVzdGluYXRpb24gdW5yZWFjaGFibGU6ICVkIn0sCisgICAgICAgIHsgNCwgIiAgICAgICAgQWRtaW4gUHJvaGliaXQ6ICVkIn0sCisgICAgICAgIHsgNSwgIiAgICAgICAgVGltZSBFeGNlZWRlZDogJWQifSwKKyAgICAgICAgeyA2LCAiICAgICAgICBQYXJhbWV0ZXIgUHJvYmxlbTogJWQifSwKKyAgICAgICAgeyA3LCAiICAgICAgICBUb28gQmlnOiAlZCJ9LAorICAgICAgICB7IDgsICIgICAgICAgIEVjaG8gUmVxdWVzdDogJWQifSwKKyAgICAgICAgeyA5LCAiICAgICAgICBFY2hvIFJlcGx5OiAlZCJ9LAorICAgICAgICB7MTAsICIgICAgICAgIFJvdXRlciBTb2xpY2l0OiAlZCJ9LAorICAgICAgICB7MTEsICIgICAgICAgIFJvdXRlciBBZHZlcnQ6ICVkIn0sCisgICAgICAgIHsxMiwgIiAgICAgICAgTmVpZ2hib3IgU29saWNpdDogJWQifSwKKyAgICAgICAgezEzLCAiICAgICAgICBOZWlnaGJvciBBZHZlcnQ6ICVkIn0sCisgICAgICAgIHsxNCwgIiAgICAgICAgUmVkaXJlY3Q6ICVkIn0sCisgICAgICAgIHsxNSwgIiAgICAgICAgR3JvdXAgTWVtYmVyIFJlcXVlc3Q6ICVkIn0sCisgICAgICAgIHsxNiwgIiAgICAgICAgR3JvdXAgTWVtYmVyIFJlcGx5OiAlZCJ9LAorICAgICAgICB7MTcsICIgICAgICAgIEdyb3VwIE1lbWJlciBSZWR1Y2U6ICVkIn0sCisgICAgICAgIHsgMCwgIiJ9CiAgICAgfTsKICAgICBzdHJ1Y3Qgc3RhdF90YWJsZSBpY21wNl9vdXRoaXN0b2dyYW1bXSA9IHsKLSAgICAgICAgezIwLCAiRGVzdGluYXRpb24gdW5yZWFjaGFibGU6ICVkIn0sCi0gICAgICAgIHsyMSwgIkFkbWluIFByb2hpYml0OiAlZCJ9LAotICAgICAgICB7MjIsICJUaW1lIEV4Y2VlZGVkOiAlZCJ9LAotICAgICAgICB7MjMsICJQYXJhbWV0ZXIgUHJvYmxlbTogJWQifSwKLSAgICAgICAgezI0LCAiVG9vIEJpZzogJWQifSwKLSAgICAgICAgezI1LCAiRWNobyBSZXF1ZXN0OiAlZCJ9LAotICAgICAgICB7MjYsICJFY2hvIFJlcGx5OiAlZCJ9LAotICAgICAgICB7MjcsICJSb3V0ZXIgU29saWNpdDogJWQifSwKLSAgICAgICAgezI4LCAiUm91dGVyIEFkdmVydDogJWQifSwKLSAgICAgICAgezI5LCAiTmVpZ2hib3IgU29saWNpdDogJWQifSwKLSAgICAgICAgezMwLCAiTmVpZ2hib3IgQWR2ZXJ0OiAlZCJ9LAotICAgICAgICB7MzEsICJSZWRpcmVjdDogJWQifSwKLSAgICAgICAgezMyLCAiR3JvdXAgTWVtYmVyIFJlcXVlc3Q6ICVkIn0sCi0gICAgICAgIHszMywgIkdyb3VwIE1lbWJlciBSZXBseTolZCJ9LAotICAgICAgICB7MzQsICJHcm91cCBNZW1iZXIgUmVkdWNlOiVkIn0sCisgICAgICAgIHsyMCwgIiAgICAgICAgRGVzdGluYXRpb24gdW5yZWFjaGFibGU6ICVkIn0sCisgICAgICAgIHsyMSwgIiAgICAgICAgQWRtaW4gUHJvaGliaXQ6ICVkIn0sCisgICAgICAgIHsyMiwgIiAgICAgICAgVGltZSBFeGNlZWRlZDogJWQifSwKKyAgICAgICAgezIzLCAiICAgICAgICBQYXJhbWV0ZXIgUHJvYmxlbTogJWQifSwKKyAgICAgICAgezI0LCAiICAgICAgICBUb28gQmlnOiAlZCJ9LAorICAgICAgICB7MjUsICIgICAgICAgIEVjaG8gUmVxdWVzdDogJWQifSwKKyAgICAgICAgezI2LCAiICAgICAgICBFY2hvIFJlcGx5OiAlZCJ9LAorICAgICAgICB7MjcsICIgICAgICAgIFJvdXRlciBTb2xpY2l0OiAlZCJ9LAorICAgICAgICB7MjgsICIgICAgICAgIFJvdXRlciBBZHZlcnQ6ICVkIn0sCisgICAgICAgIHsyOSwgIiAgICAgICAgTmVpZ2hib3IgU29saWNpdDogJWQifSwKKyAgICAgICAgezMwLCAiICAgICAgICBOZWlnaGJvciBBZHZlcnQ6ICVkIn0sCisgICAgICAgIHszMSwgIiAgICAgICAgUmVkaXJlY3Q6ICVkIn0sCisgICAgICAgIHszMiwgIiAgICAgICAgR3JvdXAgTWVtYmVyIFJlcXVlc3Q6ICVkIn0sCisgICAgICAgIHszMywgIiAgICAgICAgR3JvdXAgTWVtYmVyIFJlcGx5OiAlZCJ9LAorICAgICAgICB7MzQsICIgICAgICAgIEdyb3VwIE1lbWJlciBSZWR1Y2U6ICVkIn0sCiAgICAgICAgIHswLCAiIn0KICAgICB9OwogCkBAIC00MTQsMTAgKzQxNSw5IEBACiAKIAlzdHJ1Y3Qgc2VydmVudCAqc3AgPSBOVUxMOwogCWNoYXIgbGluZVs4MF0sICpjcDsKLQl1bnNpZ25lZCB3aWR0aDsKKwlpbnQgd2lkdGggPSAyNy05OwogCWludCBsZW4gPSBzaXplb2YgbGluZTsKIAotCXdpZHRoID0gQWZsYWcgPyAxMiA6IDE2OwogCWlmICh2ZmxhZyAmJiB3aWR0aCA8IHN0cmxlbihpbmV0Nm5hbWUoaW42KSkpCiAJCXdpZHRoID0gc3RybGVuKGluZXQ2bmFtZShpbjYpKTsKIAlzbnByaW50ZihsaW5lLCBsZW4sICIlLipzLiIsIHdpZHRoLCBpbmV0Nm5hbWUoaW42KSk7CkBAIC00MjcsMTIgKzQyNywxMiBAQAogCiAJY3AgPSBzdHJjaHIobGluZSwgJ1wwJyk7CiAJaWYgKCFuZmxhZyAmJiBwb3J0ICYmIGxvY2FsKQotCQlHRVRTRVJWQllQT1JUNihwb3J0LCBwcm90bywgc3ApOworCQlHRVRTRVJWQllQT1JUNihodG9ucyhwb3J0KSwgcHJvdG8sIHNwKTsKIAlpZiAoc3AgfHwgcG9ydCA9PSAwKQotCQlzbnByaW50ZihjcCwgbGVuLCAiJS44cyIsIHNwID8gc3AtPnNfbmFtZSA6ICIqIik7CisJCXNucHJpbnRmKGNwLCBsZW4sIHZmbGFnID8gIiVzIiA6ICIlLjhzIiwgc3AgPyBzcC0+c19uYW1lIDogIioiKTsKIAllbHNlCi0JCXNucHJpbnRmKGNwLCBsZW4sICIlZCIsIG50b2hzKCh1X3Nob3J0KXBvcnQpKTsKLQl3aWR0aCA9IEFmbGFnID8gMTggOiAyMjsKKwkJc25wcmludGYoY3AsIGxlbiwgIiVkIiwgcG9ydCk7CisJd2lkdGggPSAyNzsKIAlpZiAodmZsYWcgJiYgd2lkdGggPCBzdHJsZW4obGluZSkpCiAJCXdpZHRoID0gc3RybGVuKGxpbmUpOwogYmFpbDoKQEAgLTQ2Miw4ICs0NjIsOCBAQAogCiAJaWYgKGZpcnN0ICYmICFuZmxhZykgewogCQlmaXJzdCA9IDA7Ci0JCWlmIChnZXRob3N0bmFtZShkb21haW4sIHNpemVvZihkb21haW4pKSA9PSAwICYmCi0JCSAgICAoY3AgPSBzdHJjaHIoZG9tYWluLCAnLicpKSkKKwkJaWYgKGdldGhvc3RuYW1lKGxpbmUsIHNpemVvZihsaW5lKSkgPT0gMCAmJgorCQkgICAgKGNwID0gc3RyY2hyKGxpbmUsICcuJykpKQogCQkJKHZvaWQpIHN0cmxjcHkoZG9tYWluLCBjcCArIDEsIHNpemVvZiBkb21haW4pOwogCQllbHNlCiAJCQlkb21haW5bMF0gPSAnXDAnOwpAQCAtNDcxLDcgKzQ3MSw4IEBACiAjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgogCWNwID0gTlVMTDsKIAlpZiAoIW5mbGFnICYmICFJTjZfSVNfQUREUl9VTlNQRUNJRklFRChpbjZwKSkgewotCQlocCA9IGdldGhvc3RieWFkZHIoKGNvbnN0IGNoYXIgKilpbjZwLCBzaXplb2YoKmluNnApLCBBRl9JTkVUNik7CisJCWhwID0gbmV0c25tcF9nZXRob3N0YnlhZGRyKChjb25zdCBjaGFyICopaW42cCwgc2l6ZW9mKCppbjZwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBRl9JTkVUNik7CiAJCWlmIChocCkgewogCQkJaWYgKChjcCA9IHN0cmNocihocC0+aF9uYW1lLCAnLicpKSAmJgogCQkJICAgICFzdHJjbXAoY3AgKyAxLCBkb21haW4pKQpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wbmV0c3RhdC9pbmV0eC5jIGIvYXBwcy9zbm1wbmV0c3RhdC9pbmV0eC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NWViZWUKLS0tIC9kZXYvbnVsbAorKysgYi9hcHBzL3NubXBuZXRzdGF0L2luZXR4LmMKQEAgLTAsMCArMSw1ODQgQEAKKy8qCSRPcGVuQlNEOiBpbmV0Ni5jLHYgMS4zMSAyMDA0LzExLzE3IDAxOjQ3OjIwIGl0b2p1biBFeHAgJAkqLworLyoJQlNESSBpbmV0LmMsdiAyLjMgMTk5NS8xMC8yNCAwMjoxOToyOSBwcmIgRXhwCSovCisvKgorICogQ29weXJpZ2h0IChjKSAxOTgzLCAxOTg4LCAxOTkzCisgKglUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFJFR0VOVFMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBSRUdFTlRTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmZGVmICBJTkhFUklURURfQ09ERQorI2lmbmRlZiBsaW50CisjaWYgMAorc3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKWluZXQuYwk4LjQgKEJlcmtlbGV5KSA0LzIwLzk0IjsKKyNlbHNlCisvKl9fUkNTSUQoIiRPcGVuQlNEOiBpbmV0Ni5jLHYgMS4zMSAyMDA0LzExLzE3IDAxOjQ3OjIwIGl0b2p1biBFeHAgJCIpOyovCisvKl9fUkNTSUQoIktBTUUgSWQ6IGluZXQ2LmMsdiAxLjEwIDIwMDAvMDIvMDkgMTA6NDk6MzEgaXRvanVuIEV4cCIpOyovCisjZW5kaWYKKyNlbmRpZiAvKiBub3QgbGludCAqLworI2VuZGlmCisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKworI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmIEhBVkVfV0lOU09DS19ICisjaW5jbHVkZSAid2luc3R1Yi5oIgorI2VuZGlmCisjaWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVERCX0gKKyNpbmNsdWRlIDxuZXRkYi5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisKKyNpZiBIQVZFX05FVElORVRfSU5fSAorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbmRpZgorI2lmIEhBVkVfQVJQQV9JTkVUX0gKKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgIm1haW4uaCIKKyNpbmNsdWRlICJuZXRzdGF0LmgiCisKK3N0cnVjdCBzdGF0X3RhYmxlIHsKKyAgICB1bnNpZ25lZCBpbnQgZW50cnk7ICAgICAgLyogZW50cnkgbnVtYmVyIGluIHRhYmxlICovCisgICAgLyoKKyAgICAgKiBmb3JtYXQgc3RyaW5nIHRvIHByaW50ZihkZXNjcmlwdGlvbiwgdmFsdWUpIAorICAgICAqIHdhcm5pbmc6IHRoZSAlZCBtdXN0IGJlIGJlZm9yZSB0aGUgJXMgCisgICAgICovCisgICAgY2hhciAgICAgICAgICAgIGRlc2NyaXB0aW9uWzgwXTsKK307CisKK3ZvaWQJaW5ldHhwcmludChpbnQsIHN0cnVjdCBzb2NrYWRkcl9pbjYgLCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50KTsKKworLyoKKyAqIFByaW50IGEgc3VtbWFyeSBvZiBUQ1AgY29ubmVjdGlvbnMKKyAqIExpc3RlbmluZyBwcm9jZXNzZXMgYXJlIHN1cHByZXNzZWQgdW5sZXNzIHRoZQorICogICAtYSAoYWxsKSBmbGFnIGlzIHNwZWNpZmllZC4KKyAqLworY29uc3QgY2hhciAgICAgKnRjcHhzdGF0ZXNbXSA9IHsKKyAgICAiIiwKKyAgICAiQ0xPU0VEIiwKKyAgICAiTElTVEVOIiwKKyAgICAiU1lOU0VOVCIsCisgICAgIlNZTlJFQ0VJVkVEIiwKKyAgICAiRVNUQUJMSVNIRUQiLAorICAgICJGSU5XQUlUMSIsCisgICAgIkZJTldBSVQyIiwKKyAgICAiQ0xPU0VXQUlUIiwKKyAgICAiTEFTVEFDSyIsCisgICAgIkNMT1NJTkciLAorICAgICJUSU1FV0FJVCIKK307CisjZGVmaW5lIFRDUF9OU1RBVEVTIDExCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBpbnQgc3RhdDsKKyAgICBpbnQgaGNzdGF0OworICAgIGNvbnN0IGNoYXIgKnN0cjsKK30gc3lzdGVtc3RhdHNfdDsKKworc3lzdGVtc3RhdHNfdCBzeXN0ZW1zdGF0c1tdID0geworICAgIHsgIDMsICA0LCAiZGF0YWdyYW1zIGlucHV0IiB9LAorICAgIHsgIDUsICA2LCAib2N0ZXRzIHJlY2VpdmVkIiB9LAorICAgIHsgIDcsICAwLCAiaGRyIGVycm9ycyBpbnB1dCIgfSwKKyAgICB7ICA4LCAgMCwgIm5vIHJvdXRlcyBpbnB1dCIgfSwKKyAgICB7ICA5LCAgMCwgImFkZHJlc3MgZXJyb3JzIGlucHV0IiB9LAorICAgIHsgMTAsICAwLCAidW5rbm93biBwcm90b2NvbCBpbnB1dCIgfSwKKyAgICB7IDEyLCAxMywgImlucHV0IGRhdGFncmFtcyBmb3J3YXJkZWQiIH0sCisgICAgeyAxMSwgIDAsICJ0cnVuY2F0ZWQgZGF0YWdyYW1zIGlucHV0IiB9LAorICAgIHsgMTQsICAwLCAiaW5wdXQgcmVhc3NlbWJseSByZXF1aXJlZCIgfSwKKyAgICB7IDE1LCAgMCwgImlucHV0IHJlYXNzZW1sZWQgT0siIH0sCisgICAgeyAxNiwgIDAsICJpbnB1dCByZWFzc2VtYmx5IGZhaWxlZCIgfSwKKyAgICB7IDE3LCAgMCwgImlucHV0IGRhdGFncmFtcyBkaXNjYXJkZWQiIH0sCisgICAgeyAxOCwgMTksICJpbnB1dCBkYXRhZ3JhbXMgcmVjZWl2ZWQiIH0sCisgICAgeyAyMCwgMjEsICJvdXRwdXQgZGF0YWdyYW0gcmVxdWVzdHMiIH0sCisgICAgeyAyMiwgIDAsICJvdXRwdXQgbm8gcm91dGUiIH0sCisgICAgeyAyMywgMjQsICJkYXRhZ3JhbXMgZm9yd2FyZGVkIiB9LAorICAgIHsgMjUsICAwLCAib3V0cHV0IGRhdGFncmFtcyBkaXNjYXJkZWQiIH0sCisgICAgeyAyNiwgIDAsICJvdXRwdXQgZGF0YWdyYW1zIGZyYWdtZW50YXRpb24gcmVxdWlyZWQiIH0sCisgICAgeyAyNywgIDAsICJvdXRwdXQgZGF0YWdyYW1zIGZyYWdtZW50ZWQiIH0sCisgICAgeyAyOCwgIDAsICJvdXRwdXQgZnJhZ21lbnRhdGlvbiBmYWlsZWQiIH0sCisgICAgeyAyOSwgIDAsICJmcmFnbWVudHMgY3JlYXRlZCIgfSwKKyAgICB7IDMwLCAzMSwgImRhdGFncmFtcyB0cmFuc21pdHRlZCIgfSwKKyAgICB7IDMyLCAzMywgIm9jdGV0cyB0cmFuc21pdHRlZCIgfSwKKyAgICB7ICAwIH0KK307CisKK3N5c3RlbXN0YXRzX3QgaWNtcHN0YXRzW10gPSB7CisgICAgeyAgMiwgIDAsICJpbnB1dCBtZXNzYWdlcyIgfSwKKyAgICB7ICAzLCAgMCwgImlucHV0IGVycm9ycyIgfSwKKyAgICB7ICA0LCAgMCwgIm91dHB1dCBtZXNzYWdlcyIgfSwKKyAgICB7ICA1LCAgMCwgIm91dHB1dCBlcnJvcnMiIH0sCisgICAgeyAgMCB9Cit9OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgaW50IGNvZGU7CisgICAgY29uc3QgY2hhciAqbmFtZTsKK30gY29kZWxpc3RfdDsKKworY29kZWxpc3RfdCBpY21wY29kZXNbXSA9IHsKKyAgICB7ICAgMCwgIkVjaG8gcmVwbHkiIH0sCisgICAgeyAgIDMsICJEZXN0aW5hdGlvbiB1bnJlYWNoYWJsZSIgfSwKKyAgICB7ICAgNCwgIlNvdXJjZSBxdWVuY2giIH0sCisgICAgeyAgIDUsICJSZWRpcmVjdCIgfSwKKyAgICB7ICAgNiwgIkFsdGVybmF0ZSBob3N0IGFkZHJlc3MiIH0sCisgICAgeyAgIDgsICJFY2hvIHJlcXVlc3QiIH0sCisgICAgeyAgIDksICJSb3V0ZXIgYWR2ZXJ0aXNlbWVudCIgfSwKKyAgICB7ICAxMCwgIlJvdXRlciBzZWxlY3Rpb24iIH0sCisgICAgeyAgMTEsICJUaW1lIGV4Y2VlZGVkIiB9LAorICAgIHsgIDEyLCAiUGFyYW1ldGVyIHByb2JsZW0iIH0sCisgICAgeyAgMTMsICJUaW1lc3RhbXAgcmVxdWVzdCIgfSwKKyAgICB7ICAxNCwgIlRpbWVzdGFtcCByZXBseSIgfSwKKyAgICB7ICAxNSwgIkluZm9ybWF0aW9uIHJlcXVlc3QiIH0sCisgICAgeyAgMTYsICJJbmZvcm1hdGlvbiByZXBseSIgfSwKKyAgICB7ICAxNywgIkFkZHJlc3MgbWFzayByZXF1ZXN0IiB9LAorICAgIHsgIDE4LCAiQWRkcmVzcyBtYXNrIHJlcGx5IiB9LAorICAgIHsgMCB9Cit9OworCitjb2RlbGlzdF90IGljbXA2Y29kZXNbXSA9IHsKKyAgICB7ICAgMSwgICAiRGVzdGluYXRpb24gVW5yZWFjaGFibGUiIH0sCisgICAgeyAgIDIsICAgIlBhY2tldCBUb28gQmlnIiB9LAorICAgIHsgICAzLCAgICJUaW1lIEV4Y2VlZGVkIiB9LAorICAgIHsgICA0LCAgICJQYXJhbWV0ZXIgUHJvYmxlbSIgfSwKKyAgICB7IDEwMCwgICAiUHJpdmF0ZSBleHBlcmltZW50YXRpb24gMTAwIiB9LAorICAgIHsgMTAxLCAgICJQcml2YXRlIGV4cGVyaW1lbnRhdGlvbiAxMDEiIH0sCisgICAgeyAxMjcsICAgIlJlc2VydmVkIGZvciBleHBhbnNpb24gb2YgSUNNUHY2IGVycm9yIG1lc3NhZ2VzIiB9LAorICAgIHsgMTI4LCAgICJFY2hvIFJlcXVlc3QiIH0sCisgICAgeyAxMjksICAgIkVjaG8gUmVwbHkiIH0sCisgICAgeyAxMzAsICAgIk11bHRpY2FzdCBMaXN0ZW5lciBRdWVyeSIgfSwKKyAgICB7IDEzMSwgICAiTXVsdGljYXN0IExpc3RlbmVyIFJlcG9ydCIgfSwKKyAgICB7IDEzMiwgICAiTXVsdGljYXN0IExpc3RlbmVyIERvbmUiIH0sCisgICAgeyAxMzMsICAgIlJvdXRlciBTb2xpY2l0YXRpb24iIH0sCisgICAgeyAxMzQsICAgIlJvdXRlciBBZHZlcnRpc2VtZW50IiB9LAorICAgIHsgMTM1LCAgICJOZWlnaGJvciBTb2xpY2l0YXRpb24iIH0sCisgICAgeyAxMzYsICAgIk5laWdoYm9yIEFkdmVydGlzZW1lbnQiIH0sCisgICAgeyAxMzcsICAgIlJlZGlyZWN0IE1lc3NhZ2UiIH0sCisgICAgeyAxMzgsICAgIlJvdXRlciBSZW51bWJlcmluZyIgfSwKKyAgICB7IDEzOSwgICAiSUNNUCBOb2RlIEluZm9ybWF0aW9uIFF1ZXJ5IiB9LAorICAgIHsgMTQwLCAgICJJQ01QIE5vZGUgSW5mb3JtYXRpb24gUmVzcG9uc2UiIH0sCisgICAgeyAxNDEsICAgIkludmVyc2UgTmVpZ2hib3IgRGlzY292ZXJ5IFNvbGljaXRhdGlvbiBNZXNzYWdlIiB9LAorICAgIHsgMTQyLCAgICJJbnZlcnNlIE5laWdoYm9yIERpc2NvdmVyeSBBZHZlcnRpc2VtZW50IE1lc3NhZ2UiIH0sCisgICAgeyAxNDMsICAgIlZlcnNpb24gMiBNdWx0aWNhc3QgTGlzdGVuZXIgUmVwb3J0IiB9LAorICAgIHsgMTQ0LCAgICJIb21lIEFnZW50IEFkZHJlc3MgRGlzY292ZXJ5IFJlcXVlc3QgTWVzc2FnZSIgfSwKKyAgICB7IDE0NSwgICAiSG9tZSBBZ2VudCBBZGRyZXNzIERpc2NvdmVyeSBSZXBseSBNZXNzYWdlIiB9LAorICAgIHsgMTQ2LCAgICJNb2JpbGUgUHJlZml4IFNvbGljaXRhdGlvbiIgfSwKKyAgICB7IDE0NywgICAiTW9iaWxlIFByZWZpeCBBZHZlcnRpc2VtZW50IiB9LAorICAgIHsgMTQ4LCAgICJDZXJ0aWZpY2F0aW9uIFBhdGggU29saWNpdGF0aW9uIE1lc3NhZ2UiIH0sCisgICAgeyAxNDksICAgIkNlcnRpZmljYXRpb24gUGF0aCBBZHZlcnRpc2VtZW50IE1lc3NhZ2UiIH0sCisgICAgeyAxNTEsICAgIk11bHRpY2FzdCBSb3V0ZXIgQWR2ZXJ0aXNlbWVudCIgfSwKKyAgICB7IDE1MiwgICAiTXVsdGljYXN0IFJvdXRlciBTb2xpY2l0YXRpb24iIH0sCisgICAgeyAxNTMsICAgIk11bHRpY2FzdCBSb3V0ZXIgVGVybWluYXRpb24iIH0sCisgICAgeyAxNTQsICAgIkZNSVB2NiBNZXNzYWdlcyIgfSwKKyAgICB7IDE1NSwgICAiUlBMIENvbnRyb2wgTWVzc2FnZSIgfSwKKyAgICB7IDAgfQorfTsKKworCit2b2lkCit0Y3B4cHJvdG9wcihjb25zdCBjaGFyICpuYW1lKQoreworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyLCAqdnAsICpwdmFyOworICAgIG9pZCAgICB0Y3BDb25uZWN0aW9uU3RhdGVfb2lkW10gPSB7IDEsMyw2LDEsMiwxLDYsMTksMSw3IH07CisgICAgc2l6ZV90IHRjcENvbm5lY3Rpb25TdGF0ZV9sZW4gICA9IE9JRF9MRU5HVEgoIHRjcENvbm5lY3Rpb25TdGF0ZV9vaWQgKTsKKyAgICBpbnQgICAgc3RhdGUsIGk7CisgICAgc3RydWN0IHNvY2thZGRyX2luNiBsb2NhbEFkZHIsIHJlbW90ZUFkZHI7CisgICAgaW50ICAgIGxvY2FsUG9ydCwgICAgIHJlbW90ZVBvcnQsICBwaWQgPSAwOworICAgIGludCAgICBsb2NhbFR5cGUsICAgIHJlbW90ZVR5cGUsIGlueDsKKyAgICBpbnQgICAgZmlyc3QgPSAxOworICAgIHN0YXRpYyBpbnQgZG9uZSA9IDA7CisKKyAgICBpZiAoZG9uZSsrKSByZXR1cm47CisKKyAgICAvKgorICAgICAqIFdhbGtpbmcgdGhlIHY2IHRjcENvbm5lY3Rpb25TdGF0ZSBjb2x1bW4gd2lsbCBwcm92aWRlIGFsbAorICAgICAqICAgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbi4KKyAgICAgKi8KKyAgICB2YXIgPSBOVUxMOworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoICZ2YXIsIHRjcENvbm5lY3Rpb25TdGF0ZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwQ29ubmVjdGlvblN0YXRlX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU05fTlVMTCwgTlVMTCwgIDApOworICAgIGlmIChuZXRzbm1wX3F1ZXJ5X3dhbGsoIHZhciwgc3MgKSAhPSBTTk1QX0VSUl9OT0VSUk9SKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCh2YXItPnR5cGUgJiAweEYwKSA9PSAweDgwKQkvKiBFeGNlcHRpb24gKi8KKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yICh2cCA9IHZhcjsgdnAgOyB2cD12cC0+bmV4dF92YXJpYWJsZSkgeworCWNoYXIgbG5hbWVbNV07CisgICAgICAgIHN0YXRlID0gKnZwLT52YWwuaW50ZWdlcjsKKwlpbnggPSB0Y3BDb25uZWN0aW9uU3RhdGVfbGVuOworCXB2YXIgPSBOVUxMOworCisJdnAtPm5hbWVbaW54LTFdID0gODsKKwlzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCAmcHZhciwgdnAtPm5hbWUsIHZwLT5uYW1lX2xlbmd0aCwKKwkJCQkJIEFTTl9OVUxMLCBOVUxMLCAgMCk7CisJaWYgKG5ldHNubXBfcXVlcnlfZ2V0KCBwdmFyLCBzcyApICE9IFNOTVBfRVJSX05PRVJST1IpIHsKKwkgICAgc25tcF9mcmVlX3ZhciggcHZhciApOworCSAgICByZXR1cm47CisJfQorCWlmICgocHZhci0+dHlwZSAmIDB4RjApICE9IDB4ODApCS8qIEV4Y2VwdGlvbiAqLworCSAgICBwaWQgPSAqcHZhci0+dmFsLmludGVnZXI7CisgICAgICAgIAorICAgICAgICAvKiBFeHRyYWN0IHRoZSBsb2NhbC9yZW1vdGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgaW5kZXggdmFsdWVzICovCisJbG9jYWxUeXBlID0gdnAtPm5hbWVbaW54KytdOworCWZvciAoaSA9IDA7IGkgPCB2cC0+bmFtZVtpbnhdOyBpKyspCisJICAgIGxvY2FsQWRkci5zaW42X2FkZHIuczZfYWRkcltpXSA9IHZwLT5uYW1lW2lueCtpKzFdOworCWlueCArPSB2cC0+bmFtZVtpbnhdICsgMTsKKyAgICAgICAgbG9jYWxQb3J0ICAgID0gdnAtPm5hbWVbaW54KytdOworCXJlbW90ZVR5cGUgPSB2cC0+bmFtZVtpbngrK107CisJZm9yIChpID0gMDsgaSA8IHZwLT5uYW1lW2lueF07IGkrKykKKwkgICAgcmVtb3RlQWRkci5zaW42X2FkZHIuczZfYWRkcltpXSA9IHZwLT5uYW1lW2lueCtpKzFdOworCWlueCArPSB2cC0+bmFtZVtpbnhdICsgMTsKKyAgICAgICAgcmVtb3RlUG9ydCAgICA9IHZwLT5uYW1lW2lueCsrXTsKKworCXNubXBfZnJlZV92YXJiaW5kKHB2YXIpOworCisJaWYgKGFmID09IEFGX0lORVQgJiYgbG9jYWxUeXBlID09IDIpIGNvbnRpbnVlOworCWlmIChhZiA9PSBBRl9JTkVUNiAmJiBsb2NhbFR5cGUgIT0gMikgY29udGludWU7CisKKyAgICAgICAgaWYgKGZpcnN0KSB7CisgICAgICAgICAgICBwcmludGYoIkFjdGl2ZSBJbnRlcm5ldCAoJXMpIENvbm5lY3Rpb25zIiwgInRjcCIpOworICAgICAgICAgICAgcHV0Y2hhcignXG4nKTsKKyAgICAgICAgICAgIHByaW50ZigiJS01LjVzICUtMjcuMjdzICUtMjcuMjdzICUxMS4xMXMgJTUuNXNcbiIsCisgICAgICAgICAgICAgICAgICAgIlByb3RvIiwgIkxvY2FsIEFkZHJlc3MiLCAiUmVtb3RlIEFkZHJlc3MiLCAiU3RhdGUiLCAiUElEIik7CisgICAgICAgICAgICBmaXJzdCA9IDA7CisgICAgICAgIH0KKworCXN0cmNweShsbmFtZSwgInRjcCIpOworCWlmIChsb2NhbFR5cGUgPT0gMikgbG5hbWVbM10gPSAnNic7CisJZWxzZSBsbmFtZVszXSA9ICc0JzsKKwlsbmFtZVs0XSA9IDA7CisgICAgICAgIHByaW50ZigiJS01LjVzIiwgbG5hbWUpOworICAgICAgICBpbmV0eHByaW50KGxvY2FsVHlwZSwgbG9jYWxBZGRyLCAgbG9jYWxQb3J0LCAidGNwIiwgMSk7CisgICAgICAgIGluZXR4cHJpbnQocmVtb3RlVHlwZSwgcmVtb3RlQWRkciwgcmVtb3RlUG9ydCwgInRjcCIsIDApOworICAgICAgICBpZiAoIHN0YXRlIDwgMSB8fCBzdGF0ZSA+IFRDUF9OU1RBVEVTICkKKyAgICAgICAgICAgIHByaW50ZigiICUxMWQgJTVkXG4iLCBzdGF0ZSwgcGlkKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbnRmKCIgJTExcyAlNWRcbiIsIHRjcHhzdGF0ZXNbIHN0YXRlIF0sIHBpZCk7CisgICAgfQorICAgIHNubXBfZnJlZV92YXJiaW5kKCB2YXIgKTsKKworICAgIGlmIChhZmxhZykKKwlsaXN0ZW54cHJvdG9wcihuYW1lKTsKK30KKworLyoKKyAqIFByaW50IGEgc3VtbWFyeSBvZiBsaXN0ZW5pbmcgImNvbm5lY3Rpb25zIgorICovCit2b2lkCitsaXN0ZW54cHJvdG9wcihjb25zdCBjaGFyICpuYW1lKQoreworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyLCAqdnA7CisgICAgb2lkICAgIHRjcExpc3RlbmVyUHJvY2Vzc19vaWRbXSA9IHsgMSwzLDYsMSwyLDEsNiwyMCwxLDQgfTsKKyAgICBzaXplX3QgdGNwTGlzdGVuZXJQcm9jZXNzX2xlbiAgID0gT0lEX0xFTkdUSCggdGNwTGlzdGVuZXJQcm9jZXNzX29pZCApOworICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgbG9jYWxBZGRyOworICAgIGludCAgICBsb2NhbFR5cGUsIGxvY2FsUG9ydCwgcGlkOworICAgIGludCAgICBpLCBpbng7CisKKyAgICAvKgorICAgICAqIFdhbGtpbmcgYSBzaW5nbGUgY29sdW1uIG9mIHRoZSB1ZHBUYWJsZSB3aWxsIHByb3ZpZGUKKyAgICAgKiAgIGFsbCB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGZyb20gdGhlIGluZGV4IHZhbHVlcy4KKyAgICAgKi8KKyAgICB2YXIgPSBOVUxMOworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoICZ2YXIsIHRjcExpc3RlbmVyUHJvY2Vzc19vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwTGlzdGVuZXJQcm9jZXNzX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU05fTlVMTCwgTlVMTCwgIDApOworICAgIGlmIChuZXRzbm1wX3F1ZXJ5X3dhbGsoIHZhciwgc3MgKSAhPSBTTk1QX0VSUl9OT0VSUk9SKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCh2YXItPnR5cGUgJiAweEYwKSA9PSAweDgwKQkvKiBFeGNlcHRpb24gKi8KKyAgICAgICAgcmV0dXJuOworCisgICAgcHJpbnRmKCJMaXN0ZW5pbmcgSW50ZXJuZXQgKCVzKSBDb25uZWN0aW9uc1xuIiwgInRjcCIpOworICAgIHByaW50ZigiJS01LjVzICUtMjcuMjdzICU1c1xuIiwgIlByb3RvIiwgIkxvY2FsIEFkZHJlc3MiLCAiUElEIik7CisgICAgZm9yICh2cCA9IHZhcjsgdnAgOyB2cD12cC0+bmV4dF92YXJpYWJsZSkgeworCWNoYXIgbG5hbWVbNV07CisJaW54ID0gdGNwTGlzdGVuZXJQcm9jZXNzX2xlbjsKKyAgICAgICAgLyoKKyAgICAgICAgICogRXh0cmFjdCB0aGUgbG9jYWwgcG9ydCBmcm9tIHRoZSBpbmRleCB2YWx1ZXMsIGJ1dCB0YWtlCisgICAgICAgICAqICAgdGhlIElQIGFkZHJlc3MgZnJvbSB0aGUgdmFyYmluZCB2YWx1ZSwgKHdoaWNoIGlzIHdoeQorICAgICAgICAgKiAgIHdlIHdhbGtlZCB1ZHBMb2NhbEFkZHJlc3MgcmF0aGVyIHRoYW4gdWRwTG9jYWxQb3J0KQorICAgICAgICAgKi8KKwlsb2NhbFR5cGUgPSB2cC0+bmFtZVtpbngrK107CisJaWYgKGFmID09IEFGX0lORVQgJiYgbG9jYWxUeXBlID09IDIpIGNvbnRpbnVlOworCWlmIChhZiA9PSBBRl9JTkVUNiAmJiBsb2NhbFR5cGUgIT0gMikgY29udGludWU7CisKKwlmb3IgKGkgPSAwOyBpIDwgdnAtPm5hbWVbaW54XTsgaSsrKQorCSAgICBsb2NhbEFkZHIuc2luNl9hZGRyLnM2X2FkZHJbaV0gPSB2cC0+bmFtZVtpbngraSsxXTsKKwlpbnggKz0gdnAtPm5hbWVbaW54XSsxOworICAgICAgICBsb2NhbFBvcnQgPSB2cC0+bmFtZVsgaW54KysgXTsKKyAgICAgICAgcGlkICAgPSAqdnAtPnZhbC5pbnRlZ2VyOworCXN0cmNweShsbmFtZSwgInRjcCIpOworCWlmIChsb2NhbFR5cGUgPT0gMikgbG5hbWVbM10gPSAnNic7CisJZWxzZSBsbmFtZVszXSA9ICc0JzsKKwlsbmFtZVs0XSA9IDA7CisgICAgICAgIHByaW50ZigiJS01LjVzIiwgbG5hbWUpOworICAgICAgICBpbmV0eHByaW50KGxvY2FsVHlwZSwgbG9jYWxBZGRyLCBsb2NhbFBvcnQsICJ0Y3AiLCAxKTsKKyAgICAgICAgcHJpbnRmKCIgJTVkXG4iLCBwaWQpOworICAgIH0KKyAgICBzbm1wX2ZyZWVfdmFyYmluZCggdmFyICk7Cit9CisKKy8qCisgKiBQcmludCBhIHN1bW1hcnkgb2YgVURQdjYgImNvbm5lY3Rpb25zIgorICogICAgWFhYIC0gd2hhdCBhYm91dCAibGlzdGVuaW5nIiBzZXJ2aWNlcyA/PworICovCit2b2lkCit1ZHB4cHJvdG9wcihjb25zdCBjaGFyICpuYW1lKQoreworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyLCAqdnA7CisgICAgb2lkICAgIHVkcEVuZHBvaW50UHJvY2Vzc19vaWRbXSA9IHsgMSwzLDYsMSwyLDEsNyw3LDEsOCB9OworICAgIHNpemVfdCB1ZHBFbmRwb2ludFByb2Nlc3NfbGVuICAgPSBPSURfTEVOR1RIKCB1ZHBFbmRwb2ludFByb2Nlc3Nfb2lkICk7CisgICAgc3RydWN0IHNvY2thZGRyX2luNiBsb2NhbEFkZHIsIHJlbW90ZUFkZHI7CisgICAgaW50ICAgIGxvY2FsVHlwZSwgcmVtb3RlVHlwZSwgbG9jYWxQb3J0LCByZW1vdGVQb3J0LCBwaWQ7CisgICAgaW50ICAgIGksIGlueDsKKyAgICBzdGF0aWMgaW50IGRvbmUgPSAwOworCisgICAgaWYgKGRvbmUrKykgcmV0dXJuOworCisgICAgLyoKKyAgICAgKiBXYWxraW5nIGEgc2luZ2xlIGNvbHVtbiBvZiB0aGUgdWRwVGFibGUgd2lsbCBwcm92aWRlCisgICAgICogICBhbGwgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBpbmRleCB2YWx1ZXMuCisgICAgICovCisgICAgdmFyID0gTlVMTDsKKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCAmdmFyLCB1ZHBFbmRwb2ludFByb2Nlc3Nfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkcEVuZHBvaW50UHJvY2Vzc19sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX05VTEwsIE5VTEwsICAwKTsKKyAgICBpZiAobmV0c25tcF9xdWVyeV93YWxrKCB2YXIsIHNzICkgIT0gU05NUF9FUlJfTk9FUlJPUikKKyAgICAgICAgcmV0dXJuOworICAgIGlmICgodmFyLT50eXBlICYgMHhGMCkgPT0gMHg4MCkJLyogRXhjZXB0aW9uICovCisgICAgICAgIHJldHVybjsKKworICAgIHByaW50ZigiQWN0aXZlIEludGVybmV0ICglcykgQ29ubmVjdGlvbnNcbiIsICJ1ZHAiKTsKKyAgICBwcmludGYoIiUtNS41cyAlLTI3LjI3cyAlLTI3LjI3cyAlNXNcbiIsICJQcm90byIsICJMb2NhbCBBZGRyZXNzIiwgIlJlbW90ZSBBZGRyZXNzIiwgIlBJRCIpOworICAgIGZvciAodnAgPSB2YXI7IHZwIDsgdnA9dnAtPm5leHRfdmFyaWFibGUpIHsKKyAgICAgICAgY2hhciBsbmFtZVs1XTsKKwlpbnggPSB1ZHBFbmRwb2ludFByb2Nlc3NfbGVuOworICAgICAgICAvKgorICAgICAgICAgKiBFeHRyYWN0IHRoZSBsb2NhbCBwb3J0IGZyb20gdGhlIGluZGV4IHZhbHVlcywgYnV0IHRha2UKKyAgICAgICAgICogICB0aGUgSVAgYWRkcmVzcyBmcm9tIHRoZSB2YXJiaW5kIHZhbHVlLCAod2hpY2ggaXMgd2h5CisgICAgICAgICAqICAgd2Ugd2Fsa2VkIHVkcExvY2FsQWRkcmVzcyByYXRoZXIgdGhhbiB1ZHBMb2NhbFBvcnQpCisgICAgICAgICAqLworCWxvY2FsVHlwZSA9IHZwLT5uYW1lW2lueCsrXTsKKwlpZiAoYWYgPT0gQUZfSU5FVCAmJiBsb2NhbFR5cGUgPT0gMikgY29udGludWU7CisJaWYgKGFmID09IEFGX0lORVQ2ICYmIGxvY2FsVHlwZSAhPSAyKSBjb250aW51ZTsKKwlmb3IgKGkgPSAwOyBpIDwgdnAtPm5hbWVbaW54XTsgaSsrKQorCSAgICBsb2NhbEFkZHIuc2luNl9hZGRyLnM2X2FkZHJbaV0gPSB2cC0+bmFtZVtpbngraSsxXTsKKwlpbnggKz0gdnAtPm5hbWVbaW54XSsxOworICAgICAgICBsb2NhbFBvcnQgPSB2cC0+bmFtZVsgaW54KysgXTsKKwlyZW1vdGVUeXBlID0gdnAtPm5hbWVbaW54KytdOworCWZvciAoaSA9IDA7IGkgPCB2cC0+bmFtZVtpbnhdOyBpKyspCisJICAgIHJlbW90ZUFkZHIuc2luNl9hZGRyLnM2X2FkZHJbaV0gPSB2cC0+bmFtZVtpbngraSsxXTsKKwlpbnggKz0gdnAtPm5hbWVbaW54XSsxOworICAgICAgICByZW1vdGVQb3J0ID0gdnAtPm5hbWVbIGlueCsrIF07CisgICAgICAgIHBpZCAgID0gKnZwLT52YWwuaW50ZWdlcjsKKwlzdHJjcHkobG5hbWUsICJ1ZHAiKTsKKwlpZiAobG9jYWxUeXBlID09IDIpIGxuYW1lWzNdID0gJzYnOworCWVsc2UgbG5hbWVbM10gPSAnNCc7CisJbG5hbWVbNF0gPSAwOworICAgICAgICBwcmludGYoIiUtNS41cyIsIGxuYW1lKTsKKyAgICAgICAgaW5ldHhwcmludChsb2NhbFR5cGUsIGxvY2FsQWRkciwgbG9jYWxQb3J0LCAidWRwIiwgMSk7CisgICAgICAgIGluZXR4cHJpbnQocmVtb3RlVHlwZSwgcmVtb3RlQWRkciwgcmVtb3RlUG9ydCwgInVkcCIsIDEpOworICAgICAgICBwcmludGYoIiAlNWRcbiIsIHBpZCk7CisgICAgfQorICAgIHNubXBfZnJlZV92YXJiaW5kKCB2YXIgKTsKK30KKworc3RhdGljIHZvaWQKK3N0YXRzcHJpbnQoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3lzdGVtc3RhdHNfdCAqc3QsIGludCBwcm90bywKKwljb25zdCBvaWQgKnRibCwgc2l6ZV90IHRibGxlbikKK3sKKyAgICBvaWQgdmFyWzMyXTsKKyAgICBzaXplX3QgbGVuOworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmI7CisKKyAgICBtZW1jcHkodmFyLCB0YmwsIHRibGxlbipzaXplb2Yob2lkKSk7CisgICAgdmFyW3RibGxlbisxXSA9IHByb3RvOworICAgIGxlbiA9IHRibGxlbisyOworCisgICAgcHJpbnRmKCIlczpcbiIsIG5hbWUpOworICAgIHdoaWxlIChzdC0+c3RhdCkgeworCXZiID0gTlVMTDsKKwlpZiAoc3QtPmhjc3RhdCkgeworCSAgICB2YXJbdGJsbGVuXSA9IHN0LT5oY3N0YXQ7CisJICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoICZ2YiwgdmFyLCBsZW4sIEFTTl9OVUxMLCBOVUxMLCAgMCk7CisJICAgIGlmIChuZXRzbm1wX3F1ZXJ5X2dldCggdmIsIHNzICkgIT0gU05NUF9FUlJfTk9FUlJPUikgeworCQlzbm1wX2ZyZWVfdmFyKCB2YiApOworCQl2YiA9IE5VTEw7CisJICAgIH0KKwl9CisJaWYgKCF2YikgeworCSAgICB2YXJbdGJsbGVuXSA9IHN0LT5zdGF0OworCSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCAmdmIsIHZhciwgbGVuLCBBU05fTlVMTCwgTlVMTCwgMCk7CisJICAgIGlmIChuZXRzbm1wX3F1ZXJ5X2dldCggdmIsIHNzICkgIT0gU05NUF9FUlJfTk9FUlJPUikgeworCQlzbm1wX2ZyZWVfdmFyKCB2YiApOworCQl2YiA9IE5VTEw7CisJICAgIH0KKwl9CisJaWYgKHZiKSB7CisJICAgIGlmICh2Yi0+dHlwZSA9PSBBU05fQ09VTlRFUikgeworCQlpZiAoKnZiLT52YWwuaW50ZWdlciA+IDAgfHwgc2ZsYWcgPT0gMSkKKwkJICAgIHByaW50ZigiJTE0bHUgJXNcbiIsICp2Yi0+dmFsLmludGVnZXIsIHN0LT5zdHIpOworCSAgICB9CisJICAgIGVsc2UgaWYgKHZiLT50eXBlID09IEFTTl9DT1VOVEVSNjQpIHsKKwkJY2hhciBhNjRidWZbSTY0Q0hBUlNaICsgMV07CisJCXByaW50VTY0KGE2NGJ1ZiwgdmItPnZhbC5jb3VudGVyNjQpOworCQlpZiAoc3RyY21wKGE2NGJ1ZiwgIjAiKSAhPSAwIHx8IHNmbGFnID09IDEpCisJCSAgICBwcmludGYoIiUxNHMgJXNcbiIsIGE2NGJ1Ziwgc3QtPnN0cik7CisJICAgIH0KKwkgICAgZWxzZQorCQlwcmludGYoIiUxNHMgJXNcbiIsICItIiwgc3QtPnN0cik7CisJICAgIHNubXBfZnJlZV92YXJiaW5kKHZiKTsKKwl9CisJZWxzZSB7CisJICAgIHByaW50ZigiJTE0cyAlc1xuIiwgIi0iLCBzdC0+c3RyKTsKKwl9CisJc3QrKzsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitwcmhpc3RvKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqdmFyLCBzaXplX3QgbGVuLCBpbnQgdmVyLCBjb2RlbGlzdF90ICpjcykKK3sKKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZiID0gTlVMTCwgKnZwOworICAgIGNvZGVsaXN0X3QgKmNwOworICAgIGludCBjb2RlOworICAgIGNoYXIgbm9jb2RlWzMyXTsKKworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoICZ2YiwgdmFyLCBsZW4sIEFTTl9OVUxMLCBOVUxMLCAgMCk7CisgICAgaWYgKG5ldHNubXBfcXVlcnlfd2FsayggdmIsIHNzICkgIT0gU05NUF9FUlJfTk9FUlJPUikgeworCXNubXBfZnJlZV92YXIoIHZiICk7CisJcmV0dXJuOworICAgIH0KKyAgICBwcmludGYoIiAgICAgJXMgaGlzdG9ncmFtOlxuIiwgbmFtZSk7CisgICAgcHJpbnRmKCIgICAgICUxMHMgJTEwcyAlc1xuIiwgImlucHV0IiwgIm91dHB1dCIsICJ0eXBlIik7CisgICAgZm9yIChjb2RlID0gMDsgY29kZSA8IDI1NjsgY29kZSsrKSB7CisJdW5zaWduZWQgbG9uZyBpbnAgPSAwLCBvdXQgPSAwOworCWludCBmb3VuZCA9IDA7CisJdnAgPSB2YjsKKwl3aGlsZSAodnAgJiYgZm91bmQgIT0gMikgeworCSAgICBpZiAodnAtPm5hbWVbMTFdID09IGNvZGUgJiYgdnAtPm5hbWVbMTBdID09IHZlcikgeworCQlpZiAodnAtPm5hbWVbOV0gPT0gMykgaW5wID0gKnZwLT52YWwuaW50ZWdlcjsKKwkJZWxzZSBvdXQgPSAqdnAtPnZhbC5pbnRlZ2VyOworCQlmb3VuZCsrOworCSAgICB9CisJICAgIHZwID0gdnAtPm5leHRfdmFyaWFibGU7CisJfQorCWlmIChmb3VuZCkgeworCSAgICBjcCA9IGNzOworCSAgICB3aGlsZSAoY3AtPm5hbWUgJiYgY3AtPmNvZGUgIT0gY29kZSkgY3ArKzsKKwkgICAgaWYgKGlucCB8fCBvdXQgfHwgc2ZsYWcgPT0gMSkgeworCQlpZiAoIWNwLT5jb2RlKQorCQkgICAgc25wcmludGYobm9jb2RlLCBzaXplb2Ygbm9jb2RlLCAidHlwZSAlZCIsIGNvZGUpOworCQlwcmludGYoIiAgICAgJTEwbHUgJTEwbHUgJXNcbiIsIGlucCwgb3V0LCBjcC0+bmFtZSA/IGNwLT5uYW1lIDogbm9jb2RlKTsKKwkgICAgfQorCX0KKyAgICB9CisgICAgc25tcF9mcmVlX3ZhcmJpbmQodmIpOworfQorCit2b2lkCitpcHhfc3RhdHMoY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBvaWQgaXBzeXNzdGF0X29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAzMSwgMSwgMSB9OworICAgIHNpemVfdCBpcHN5c3N0YXRfbGVuID0gc2l6ZW9mKGlwc3lzc3RhdF9vaWQpIC8gc2l6ZW9mKGlwc3lzc3RhdF9vaWRbMF0pOworICAgIHN0YXRpYyBpbnQgZmlyc3QgPSAxOworCisgICAgaWYgKCFmaXJzdCkgcmV0dXJuOworICAgIGZpcnN0ID0gMDsKKworICAgIGlmICghbmFtZSB8fCBzdHJjbXAobmFtZSwgImlwIikgPT0gMCkKKwlzdGF0c3ByaW50KCJpcCIsIHN5c3RlbXN0YXRzLCAxLCBpcHN5c3N0YXRfb2lkLCBpcHN5c3N0YXRfbGVuKTsKKyAgICBpZiAoIW5hbWUgfHwgc3RyY21wKG5hbWUsICJpcDYiKSA9PSAwKQorCXN0YXRzcHJpbnQoImlwNiIsIHN5c3RlbXN0YXRzLCAyLCBpcHN5c3N0YXRfb2lkLCBpcHN5c3N0YXRfbGVuKTsKK30KKwordm9pZAoraWNtcHhfc3RhdHMoY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBvaWQgaWNtcHN0YXRfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDUsIDI5LCAxIH07CisgICAgc2l6ZV90IGljbXBzdGF0X2xlbiA9IHNpemVvZihpY21wc3RhdF9vaWQpIC8gc2l6ZW9mKGljbXBzdGF0X29pZFswXSk7CisgICAgb2lkIGljbXBtc2dfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDUsIDMwLCAxIH07CisgICAgc2l6ZV90IGljbXBtc2dfbGVuID0gc2l6ZW9mKGljbXBtc2dfb2lkKSAvIHNpemVvZihpY21wbXNnX29pZFswXSk7CisgICAgc3RhdGljIGludCBmaXJzdCA9IDE7CisKKyAgICBpZiAoIWZpcnN0KQorCXJldHVybjsKKyAgICBmaXJzdCA9IDA7CisKKyAgICBpZiAoIW5hbWUgfHwgc3RyY21wKG5hbWUsICJpY21wIikgPT0gMCkgeworCXN0YXRzcHJpbnQoImljbXAiLCBpY21wc3RhdHMsIDEsIGljbXBzdGF0X29pZCwgaWNtcHN0YXRfbGVuKTsKKwlwcmhpc3RvKCJpY21wIiwgaWNtcG1zZ19vaWQsIGljbXBtc2dfbGVuLCAxLCBpY21wY29kZXMpOworICAgIH0KKyAgICBpZiAoIW5hbWUgfHwgc3RyY21wKG5hbWUsICJpY21wNiIpID09IDApIHsKKwlzdGF0c3ByaW50KCJpY21wNiIsIGljbXBzdGF0cywgMiwgaWNtcHN0YXRfb2lkLCBpY21wc3RhdF9sZW4pOworCXByaGlzdG8oImljbXA2IiwgaWNtcG1zZ19vaWQsIGljbXBtc2dfbGVuLCAyLCBpY21wNmNvZGVzKTsKKyAgICB9Cit9CisKKworc3RhdGljIHZvaWQKK3Vua25vd25wcmludCh2b2lkKQoreworICAgIGNoYXIgbGluZVs4MF0sICpjcDsKKyAgICBpbnQgd2lkdGggPSAyNzsKKworICAgIGlmICh2ZmxhZykKKwlzbnByaW50ZihsaW5lLCBzaXplb2YgbGluZSwgIiVzLiIsICIqIik7CisgICAgZWxzZQorCXNucHJpbnRmKGxpbmUsIHNpemVvZiBsaW5lLCAiJS4qcy4iLCB3aWR0aC05LCAiKiIpOworICAgIGNwID0gc3RyY2hyKGxpbmUsICdcMCcpOworICAgIHNucHJpbnRmKGNwLCBsaW5lICsgc2l6ZW9mIGxpbmUgLSBjcCwgdmZsYWcgPyAiJXMiIDogIiUuOHMiLCAiKiIpOworICAgIGlmICh2ZmxhZyAmJiB3aWR0aCA8IHN0cmxlbihsaW5lKSkKKwl3aWR0aCA9IHN0cmxlbihsaW5lKTsKKyAgICBwcmludGYoIiAlLSouKnMiLCB3aWR0aCwgd2lkdGgsIGxpbmUpOworfQorCisvKgorICogUHJldHR5IHByaW50IGFuIEludGVybmV0IGFkZHJlc3MgKG5ldCBhZGRyZXNzICsgcG9ydCkuCisgKiBJZiB0aGUgbmZsYWcgd2FzIHNwZWNpZmllZCwgdXNlIG51bWJlcnMgaW5zdGVhZCBvZiBuYW1lcy4KKyAqLworCit2b2lkCitpbmV0eHByaW50KGludCBwcm90bywgc3RydWN0IHNvY2thZGRyX2luNiBpbjYsIGludCBwb3J0LCBjb25zdCBjaGFyICpuYW1lLCBpbnQgbG9jYWwpCit7CisKKwlpZiAocHJvdG8gPT0gMikKKwkgICAgaW5ldDZwcmludCgodV9jaGFyICopJmluNi5zaW42X2FkZHIuczZfYWRkciwgcG9ydCwgbmFtZSwgbG9jYWwpOworCWVsc2UgaWYgKHByb3RvID09IDEpCisJICAgIGluZXRwcmludCgoc3RydWN0IGluX2FkZHIgKikmaW42LnNpbjZfYWRkci5zNl9hZGRyLCBwb3J0LCBuYW1lLCBsb2NhbCk7CisJZWxzZSBpZiAocHJvdG8gPT0gMCkKKwkgICAgdW5rbm93bnByaW50KCk7CisJZWxzZSBhYm9ydCgpOworfQpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wbmV0c3RhdC9tYWluLmMgYi9hcHBzL3NubXBuZXRzdGF0L21haW4uYwppbmRleCBmYTE5OWVkLi4wZTk3N2FkIDEwMDY0NAotLS0gYS9hcHBzL3NubXBuZXRzdGF0L21haW4uYworKysgYi9hcHBzL3NubXBuZXRzdGF0L21haW4uYwpAQCAtNjEsMTMgKzYxLDEzIEBACiAjaW5jbHVkZSAid2luc3R1Yi5oIgogI2VuZGlmCiAKLWludAlBZmxhZzsJCS8qIHNob3cgYWRkcmVzc2VzIG9mIHByb3RvY29sIGNvbnRyb2wgYmxvY2sgKi8KIGludAlhZmxhZzsJCS8qIHNob3cgYWxsIHNvY2tldHMgKGluY2x1ZGluZyBzZXJ2ZXJzKSAqLwogaW50CWJmbGFnOwkJLyogc2hvdyBieXRlcyBpbnN0ZWFkIG9mIHBhY2tldHMgKi8KIGludAlkZmxhZzsJCS8qIHNob3cgaS9mIGRyb3BwZWQgcGFja2V0cyAqLwogaW50CWdmbGFnOwkJLyogc2hvdyBncm91cCAobXVsdGljYXN0KSByb3V0aW5nIG9yIHN0YXRzICovCiBpbnQJaWZsYWc7CQkvKiBzaG93IGludGVyZmFjZXMgKi8KIGludAlsZmxhZzsJCS8qIHNob3cgcm91dGluZyB0YWJsZSB3aXRoIHVzZSBhbmQgcmVmICovCitpbnQJTGZsYWc7CQkvKiBMZWdhY3kgbWlicyAqLwogaW50CW1mbGFnOwkJLyogc2hvdyBtZW1vcnkgc3RhdHMgKi8KIGludAluZmxhZzsJCS8qIHNob3cgYWRkcmVzc2VzIG51bWVyaWNhbGx5ICovCiBpbnQJb2ZsYWc7CQkvKiBPcGVuL05ldC1CU0Qgc3R5bGUgb2N0ZXQgb3V0cHV0ICovCkBAIC04Niw3ICs4Niw3IEBACiBpbnQgICAgIG1heF9nZXRidWxrID0gMzI7ICAvKiBzcGVjaWZpZXMgdGhlIG1heC1yZXBlYXRlcnMgdmFsdWUgdG8gdXNlIHdpdGggR0VUQlVMSyByZXF1ZXN0cyAqLwogCiBjaGFyICAgICpwcm9nbmFtZSA9IE5VTEw7Ci0KK2NvbnN0IGNoYXIgKnBuYW1lOwogICAgIC8qCiAgICAgICogc3RydWN0IG5saXN0IG5sW10gLSBPbWl0dGVkCiAgICAgICovCkBAIC05OSw3ICs5OSw5IEBACiAJc3RyaW5nZnVuCSpwcl9jYmxvY2tzOwkvKiBjb250cm9sIGJsb2NrcyBwcmludGluZyByb3V0aW5lICovCiAJc3RyaW5nZnVuCSpwcl9zdGF0czsJLyogc3RhdGlzdGljcyBwcmludGluZyByb3V0aW5lICovCiAJY29uc3QgY2hhcgkqcHJfbmFtZTsJLyogd2VsbC1rbm93biBuYW1lICovCi19IHByb3RveFtdID0geworfTsKKworc3RydWN0IHByb3RveCBwcm90b3hbXSA9IHsKIAl7IDEsCXRjcHByb3RvcHIsCXRjcF9zdGF0cywJInRjcCIgfSwJCiAJeyAxLAl1ZHBwcm90b3ByLAl1ZHBfc3RhdHMsCSJ1ZHAiIH0sCQogCkBAIC0xMTksNiArMTIxLDE2IEBACiAJeyAwLAkoc3RyaW5nZnVuKikwLAkoc3RyaW5nZnVuKikwLAlOVUxMIH0KIH07CiAKK3N0cnVjdCBwcm90b3ggaXB4cHJvdG94W10gPSB7CisJeyAxLAl0Y3B4cHJvdG9wciwJdGNwX3N0YXRzLAkidGNwIiB9LAkKKwl7IDEsCXVkcHhwcm90b3ByLAl1ZHBfc3RhdHMsCSJ1ZHAiIH0sCQorCXsgMSwJKHN0cmluZ2Z1biopMCwJaXB4X3N0YXRzLAkiaXAiIH0sLyogaXA2cHJvdG9wciBPbWl0dGVkICovCisJeyAxLAkoc3RyaW5nZnVuKikwLAlpcHhfc3RhdHMsCSJpcDYiIH0sLyogaXA2cHJvdG9wciBPbWl0dGVkICovCisJeyAxLAkoc3RyaW5nZnVuKikwLAlpY21weF9zdGF0cywJImljbXAiIH0sCisJeyAxLAkoc3RyaW5nZnVuKikwLAlpY21weF9zdGF0cywJImljbXA2IiB9LAorCXsgMCwJKHN0cmluZ2Z1biopMCwJKHN0cmluZ2Z1biopMCwJTlVMTCB9Cit9OworCiAJLyoge2lweCxucyxhdGFsa31wcm90b3ggT21pdHRlZCAqLwogCiBzdHJ1Y3QgcHJvdG94ICpwcm90b3Byb3RveFtdID0gewpAQCAtMTQwLDExICsxNTIsNiBAQAogICAgIGNhc2UgJ0MnOgogICAgICAgICB3aGlsZSAoKm9wdGFyZykgewogICAgICAgICAgICAgc3dpdGNoICgqb3B0YXJnKyspIHsKLQkgICAgLyoJY2FzZSAnQSc6CQkqQlNEOiAgZGlzcGxheSBQQ0IgYWRkcmVzc2VzCi0JCQkJCUxpbnV4OiBwcm90b2NvbCBmYW1pbHkKLQkJCUFmbGFnID0gMTsKLQkJCWJyZWFrOwotCSAgICAgKi8KIAkJY2FzZSAnYSc6CiAJCQlhZmxhZyA9IDE7CiAJCQlicmVhazsKQEAgLTE5NCw2ICsyMDEsOSBAQAogCQljYXNlICdpJzoKIAkJCWlmbGFnID0gMTsKIAkJCWJyZWFrOworCQljYXNlICdMJzoKKwkJCUxmbGFnID0gMTsKKwkJCWJyZWFrOwogCSAgICAvKiAgY2FzZSAnTCc6CQlGcmVlQlNEOiBEaXNwbGF5IGxpc3RlbiBxdWV1ZSBsZW5ndGhzCiAJCQkJCU5ldEJTRDogIFN1cHByZXNzIGxpbmstbGV2ZWwgcm91dGVzICovCiAJICAgIC8qCWNhc2UgJ2wnOgkJT3BlbkJTRDogV2lkZXIgSVB2NiBkaXNwbGF5CkBAIC0yMzAsNiArMjQwLDcgQEAKIAkJCQlleGl0KDEpOwogCQkJfQogCQkJcGZsYWcgPSAxOworCQkJcG5hbWUgPSB0cC0+cHJfbmFtZTsKIAkJCXJldHVybjsKIAkgICAgLyoJY2FzZSAncSc6CQlOZXRCU0Q6ICBJUlEgaW5mb3JtYXRpb24KIAkJCQkJT3BlbkJTRDogU3VwcHJlc3MgaW5hY3RpdmUgSS9GcwpAQCAtMzU4LDYgKzM2OSw3IEBACiAJICogICAgIEtlcm5lbCBuYW1lbGlzIGhhbmRsaW5nCiAJICovCiAKKyNpZiAwCiAJaWYgKG1mbGFnKSB7CiAgICAgICAgICAgICAvKgogCQltYnByKG5sW05fTUJTVEFUXS5uX3ZhbHVlLCBubFtOX01CUE9PTF0ubl92YWx1ZSwKQEAgLTM2OSw2ICszODEsNyBAQAogCQlwcmludHByb3RvKHRwLCB0cC0+cHJfbmFtZSk7CiAJCWV4aXQoMCk7CiAJfQorI2VuZGlmCiAJLyoKIAkgKiBLZWVwIGZpbGUgZGVzY3JpcHRvcnMgb3BlbiB0byBhdm9pZCBvdmVyaGVhZAogCSAqIG9mIG9wZW4vY2xvc2Ugb24gZWFjaCBjYWxsIHRvIGdldCogcm91dGluZXMuCkBAIC0zODUsNyArMzk4LDEwIEBACiAJCQlydF9zdGF0cygpOwogCQllbHNlCiAgICAgICAgICAgICAgICovCi0JCQlyb3V0ZXByKCk7CisJCWlmIChMZmxhZyB8fCByb3V0ZXhwcihhZikgPT0gMCkgeworCQkgICAgaWYgKHJvdXRlNHByKGFmKSA9PSAwICYmIGFmID09IEFGX0lORVQpIHJvdXRlcHIoKTsKKwkJICAgIHJvdXRlNnByKGFmKTsKKwkJfQogCQlleGl0KDApOwogCX0KICAgICAgLyoKQEAgLTQxNiwyMyArNDMyLDMzIEBACiAJCWV4aXQoMCk7CiAJfQogICAgICAqLwotCWlmIChhZiA9PSBBRl9JTkVUIHx8IGFmID09IEFGX1VOU1BFQykgeworCXNldHNlcnZlbnQoMSk7CisgICAgICAgIGlmIChMZmxhZykgeworICAgICAgICAgICAgc3dpdGNoIChhZikgeworICAgICAgICAgICAgY2FzZSBBRl9VTlNQRUM6CiAJCXNldHByb3RvZW50KDEpOwotCQlzZXRzZXJ2ZW50KDEpOwogCQkvKiB1Z2gsIHRoaXMgaXMgTyhNTikgLi4uIHdoeSBkbyB3ZSBkbyB0aGlzPyAqLwogCQl3aGlsZSAoKHAgPSBnZXRwcm90b2VudCgpKSkgewogCQkJZm9yICh0cCA9IHByb3RveDsgdHAtPnByX25hbWU7IHRwKyspCiAJCQkJaWYgKHN0cmNtcCh0cC0+cHJfbmFtZSwgcC0+cF9uYW1lKSA9PSAwKQotCQkJCQlicmVhazsKLQkJCWlmICh0cC0+cHJfbmFtZSA9PSBOVUxMIHx8IHRwLT5wcl93YW50ZWQgPT0gMCkKLQkJCQljb250aW51ZTsKLQkJCXByaW50cHJvdG8odHAsIHAtPnBfbmFtZSk7CisJCQkJCWlmICh0cC0+cHJfbmFtZSAmJiB0cC0+cHJfd2FudGVkKQorCQkJCQkgICAgcHJpbnRwcm90byh0cCwgcC0+cF9uYW1lKTsKIAkJfQogCQllbmRwcm90b2VudCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBRl9JTkVUOgorICAgICAgICAgICAgICAgICAgICBmb3IgKHRwID0gcHJvdG94OyB0cC0+cHJfbmFtZTsgdHArKykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludHByb3RvKHRwLCB0cC0+cHJfbmFtZSk7CisgICAgICAgICAgICBjYXNlIEFGX0lORVQ2OgorICAgICAgICAgICAgICAgICAgICBmb3IgKHRwID0gaXA2cHJvdG94OyB0cC0+cHJfbmFtZTsgdHArKykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludHByb3RvKHRwLCB0cC0+cHJfbmFtZSk7CisgICAgICAgICAgICB9CiAJfQotCWlmIChhZiA9PSBBRl9JTkVUNiB8fCBhZiA9PSBBRl9VTlNQRUMpCi0JCWZvciAodHAgPSBpcDZwcm90b3g7IHRwLT5wcl9uYW1lOyB0cCsrKQotCQkJcHJpbnRwcm90byh0cCwgdHAtPnByX25hbWUpOworICAgICAgICBlbHNlIHsKKwkgICAgZm9yICh0cCA9IGlweHByb3RveDsgdHAtPnByX25hbWU7IHRwKyspCisJCWlmICghcG5hbWUgfHwgc3RyY21wKHBuYW1lLHRwLT5wcl9uYW1lKSA9PSAwKQorCQkgICAgcHJpbnRwcm90byh0cCwgcG5hbWUpOworCX0KICAgICAvKgogCWlmIChhZiA9PSBBRl9JUFggfHwgYWYgPT0gQUZfVU5TUEVDKQogCQlmb3IgKHRwID0gaXB4cHJvdG94OyB0cC0+cHJfbmFtZTsgdHArKykKQEAgLTQ3NywxMiArNTAzLDYgQEAKIAlyZXR1cm4gKG4gIT0gMSA/ICJzIiA6ICIiKTsKIH0KIAotY29uc3QgY2hhciAqCi1wbHVyYWxlcyhpbnQgbikKLXsKLQlyZXR1cm4gKG4gIT0gMSA/ICJlcyIgOiAiIik7Ci19Ci0KIC8qCiAgKiBGaW5kIHRoZSBwcm90b3ggZm9yIHRoZSBnaXZlbiAid2VsbC1rbm93biIgbmFtZS4KICAqLwpAQCAtNTMyLDE0ICs1NTIsMTIgQEAKIHVzYWdlKHZvaWQpCiB7CiAJKHZvaWQpZnByaW50ZihzdGRlcnIsCi0idXNhZ2U6ICVzIFtzbm1wX29wdHNdIFstQ2FuXSBbLUNmIGFkZHJlc3NfZmFtaWx5XVxuIiwgcHJvZ25hbWUpOworInVzYWdlOiAlcyBbc25tcF9vcHRzXSBbLUNhbnZdIFstQ2YgYWRkcmVzc19mYW1pbHldXG4iLCBwcm9nbmFtZSk7CiAJKHZvaWQpZnByaW50ZihzdGRlcnIsCi0iICAgICAgICVzIFtzbm1wX29wdHNdIFstQ2JkZ2ltbnJTc10gWy1DZiBhZGRyZXNzX2ZhbWlseV1cbiIsIHByb2duYW1lKTsKKyIgICAgICAgJXMgW3NubXBfb3B0c10gWy1DaWJvZG52XSBbLUNJIGludGVyZmFjZV0gWy1DdyB3YWl0XVxuIiwgcHJvZ25hbWUpOwogCSh2b2lkKWZwcmludGYoc3RkZXJyLAotIiAgICAgICAlcyBbc25tcF9vcHRzXSBbLUNiZG5dIFstQ0kgaW50ZXJmYWNlXSBbLUN3IHdhaXRdXG4iLCBwcm9nbmFtZSk7CisiICAgICAgICVzIFtzbm1wX29wdHNdIFstQ3Nbc11dIFstQ3AgcHJvdG9jb2xdXG4iLCBwcm9nbmFtZSk7CiAJKHZvaWQpZnByaW50ZihzdGRlcnIsCi0iICAgICAgICVzIFtzbm1wX29wdHNdIFstQ3NdIFstQ3AgcHJvdG9jb2xdXG4iLCBwcm9nbmFtZSk7Ci0JKHZvaWQpZnByaW50ZihzdGRlcnIsCi0iICAgICAgICVzIFtzbm1wX29wdHNdIFstQ2FdIFstQ2YgYWRkcmVzc19mYW1pbHldIFstQ2kgfCAtQ0kgaW50ZXJmYWNlXVxuIiwgcHJvZ25hbWUpOworIiAgICAgICAlcyBbc25tcF9vcHRzXSBbLUNybnZdIFstQ2YgYWRkcmVzc19mYW1pbHldXG4iLCBwcm9nbmFtZSk7CiAJZXhpdCgxKTsKIH0KZGlmZiAtLWdpdCBhL2FwcHMvc25tcG5ldHN0YXQvbmV0c3RhdC5oIGIvYXBwcy9zbm1wbmV0c3RhdC9uZXRzdGF0LmgKaW5kZXggMzU1YzhiMi4uYmE2MWViMyAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wbmV0c3RhdC9uZXRzdGF0LmgKKysrIGIvYXBwcy9zbm1wbmV0c3RhdC9uZXRzdGF0LmgKQEAgLTM5LDEzICszOSwxMyBAQAogLyogV2hhdCBpcyB0aGUgbWF4IGxlbmd0aCBvZiBhIHBvaW50ZXIgcHJpbnRlZCB3aXRoICVwIChpbmNsdWRpbmcgMHgpPyAqLwogI2RlZmluZSBQTEVOCShMT05HX0JJVCAvIDQgKyAyKQogCi1leHRlcm4gaW50CUFmbGFnOwkJLyogc2hvdyBhZGRyZXNzZXMgb2YgcHJvdG9jb2wgY29udHJvbCBibG9jayAqLwogZXh0ZXJuIGludAlhZmxhZzsJCS8qIHNob3cgYWxsIHNvY2tldHMgKGluY2x1ZGluZyBzZXJ2ZXJzKSAqLwogZXh0ZXJuIGludAliZmxhZzsJCS8qIHNob3cgYnl0ZXMgaW5zdGVhZCBvZiBwYWNrZXRzICovCiBleHRlcm4gaW50CWRmbGFnOwkJLyogc2hvdyBpL2YgZHJvcHBlZCBwYWNrZXRzICovCiBleHRlcm4gaW50CWdmbGFnOwkJLyogc2hvdyBncm91cCAobXVsdGljYXN0KSByb3V0aW5nIG9yIHN0YXRzICovCiBleHRlcm4gaW50CWlmbGFnOwkJLyogc2hvdyBpbnRlcmZhY2VzICovCiBleHRlcm4gaW50CWxmbGFnOwkJLyogc2hvdyByb3V0aW5nIHRhYmxlIHdpdGggdXNlIGFuZCByZWYgKi8KK2V4dGVybiBpbnQJTGZsYWc7CQkvKiBMZWdhY3kgbWlicyAqLwogZXh0ZXJuIGludAltZmxhZzsJCS8qIHNob3cgbWVtb3J5IHN0YXRzICovCiBleHRlcm4gaW50CW5mbGFnOwkJLyogc2hvdyBhZGRyZXNzZXMgbnVtZXJpY2FsbHkgKi8KIGV4dGVybiBpbnQJb2ZsYWc7CQkvKiBPcGVuL05ldC1CU0Qgc3R5bGUgb2N0ZXQgb3V0cHV0ICovCkBAIC02Nyw3ICs2Nyw2IEBACiBleHRlcm4JY2hhciAqX19wcm9nbmFtZTsgLyogcHJvZ3JhbSBuYW1lLCBmcm9tIGNydDAubyAqLwogCiBjb25zdCBjaGFyCSpwbHVyYWwoaW50KTsKLWNvbnN0IGNoYXIJKnBsdXJhbGVzKGludCk7CiAKIHZvaWQJdGNwcHJvdG9wcihjb25zdCBjaGFyICopOwogdm9pZAl1ZHBwcm90b3ByKGNvbnN0IGNoYXIgKik7CkBAIC04MSwxNSArODAsMjYgQEAKIHZvaWQJaXA2X3N0YXRzKCAgY29uc3QgY2hhciAqKTsKIHZvaWQJaWNtcDZfc3RhdHMoY29uc3QgY2hhciAqKTsKIAordm9pZAl0Y3B4cHJvdG9wcihjb25zdCBjaGFyICopOwordm9pZAl1ZHB4cHJvdG9wcihjb25zdCBjaGFyICopOwordm9pZAlsaXN0ZW54cHJvdG9wcihjb25zdCBjaGFyICopOwordm9pZAlpcHhfc3RhdHMoY29uc3QgY2hhciAqKTsKK3ZvaWQJaWNtcHhfc3RhdHMoY29uc3QgY2hhciAqKTsKKwogdm9pZAlwcl9ydGhkcihpbnQpOwogdm9pZAlwcl9lbmNhcGhkcih2b2lkKTsKIHZvaWQJcHJfZmFtaWx5KGludCk7CiB2b2lkCXJ0X3N0YXRzKHZvaWQpOwogCit2b2lkICAgIGdldF9pZm5hbWUoY2hhciAqLCBpbnQpOwogY2hhcgkqcm91dGVuYW1lKGluX2FkZHJfdCk7CiBjaGFyCSpuZXRuYW1lKGluX2FkZHJfdCwgaW5fYWRkcl90KTsKIGNoYXIJKm5zX3ByaW50KHN0cnVjdCBzb2NrYWRkciAqKTsKIHZvaWQJcm91dGVwcih2b2lkKTsKK2ludCAgICAgcm91dGU0cHIoaW50KTsKK2ludCAgICAgcm91dGU2cHIoaW50KTsKK2ludCAgICAgcm91dGV4cHIoaW50KTsKIAogdm9pZAlpbnRwcihpbnQpOwotCit2b2lkCWluZXRwcmludChzdHJ1Y3QgaW5fYWRkciAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50KTsKK3ZvaWQJaW5ldDZwcmludCh1bnNpZ25lZCBjaGFyICosIGludCwgY29uc3QgY2hhciAqLCBpbnQpOwpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wbmV0c3RhdC9yb3V0ZS5jIGIvYXBwcy9zbm1wbmV0c3RhdC9yb3V0ZS5jCmluZGV4IDk4YTljMGMuLjFkYmE3NGQgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcG5ldHN0YXQvcm91dGUuYworKysgYi9hcHBzL3NubXBuZXRzdGF0L3JvdXRlLmMKQEAgLTgwLDEzICs4MCwxMyBAQAogI2RlZmluZSBTRVRfQUxMICAweDFmCiAKIHN0cnVjdCByb3V0ZV9lbnRyeSB7Ci0gICAgb2lkICAgICAgICAgICAgIGluc3RhbmNlWzRdOwogICAgIGluX2FkZHJfdCAgICAgICBkZXN0aW5hdGlvbjsKICAgICBpbl9hZGRyX3QgICAgICAgbWFzazsKICAgICBpbl9hZGRyX3QgICAgICAgZ2F0ZXdheTsKICAgICBpbnQgICAgICAgICAgICAgaWZOdW1iZXI7CiAgICAgaW50ICAgICAgICAgICAgIHR5cGU7CiAgICAgaW50ICAgICAgICAgICAgIHByb3RvOworICAgIGludCAgICAgICAgICAgICBhZjsKICAgICBpbnQgICAgICAgICAgICAgc2V0X2JpdHM7CiAgICAgY2hhciAgICAgICAgICAgIGlmbmFtZVs2NF07CiB9OwpAQCAtMTEwLDcgKzExMCw3IEBACiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXI9TlVMTCwgKnZwOwogICAgIGNoYXIgICpjcDsKICAgICAKLSAgICBwcmludGYoIlJvdXRpbmcgdGFibGVzXG4iKTsKKyAgICBwcmludGYoIlJvdXRpbmcgdGFibGVzIChpcFJvdXRlVGFibGUpXG4iKTsKICAgICBwcl9ydGhkcihBRl9JTkVUKTsKIAogI2RlZmluZSBBRERfUlRWQVIoIHggKSBydGNvbF9vaWRbIHJ0Y29sX2xlbi0xIF0gPSB4OyBcCkBAIC0xMzIsNiArMTMyLDEwIEBACiAgICAgICAgIGlmICggc25tcF9vaWRfY29tcGFyZSggcnRjb2xfb2lkLCBydGNvbF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyLT5uYW1lLCBydGNvbF9sZW4pICE9IDAgKQogICAgICAgICAgICAgYnJlYWs7ICAgIC8qIEVuZCBvZiBUYWJsZSAqLworCWlmICh2YXItPnR5cGUgPT0gU05NUF9OT1NVQ0hPQkpFQ1QgfHwKKyAgICAgICAgICAgICAgICB2YXItPnR5cGUgPT0gU05NUF9OT1NVQ0hJTlNUQU5DRSB8fAorICAgICAgICAgICAgICAgIHZhci0+dHlwZSA9PSBTTk1QX0VORE9GTUlCVklFVykKKwkgICAgYnJlYWs7CiAgICAgICAgIG1lbXNldCggJnJvdXRlLCAwLCBzaXplb2YoIHN0cnVjdCByb3V0ZV9lbnRyeSApKTsKICAgICAgICAgLyogRXh0cmFjdCBpcFJvdXRlRGVzdCBpbmRleCB2YWx1ZSAqLwogICAgICAgICBjcCA9IHRtcEFkZHIuZGF0YTsKQEAgLTE3NCw2ICsxNzgsMTA0IEBACiB9CiAKIAoraW50Cityb3V0ZTRwcihpbnQgYWYpCit7CisgICAgc3RydWN0IHJvdXRlX2VudHJ5ICByb3V0ZSwgKnJwID0gJnJvdXRlOworICAgIG9pZCAgICBydGNvbF9vaWRbXSAgPSB7IDEsMyw2LDEsMiwxLDQsMjQsNCwxLDAgfTsgLyogaXBDaWRyUm91dGVFbnRyeSAqLworICAgIHNpemVfdCBydGNvbF9sZW4gICAgPSBPSURfTEVOR1RIKCBydGNvbF9vaWQgKTsKKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhciA9IE5VTEwsICp2cDsKKyAgICB1bmlvbiB7CisgICAgICAgIGluX2FkZHJfdCBhZGRyOworICAgICAgICB1bnNpZ25lZCBjaGFyIGRhdGFbNF07CisgICAgfSB0bXBBZGRyOworICAgIGludCBwcmludGVkID0gMDsKKyAgICBpbnQgaGRyX2FmID0gQUZfVU5TUEVDOworCisgICAgaWYgKGFmICE9IEFGX1VOU1BFQyAmJiBhZiAhPSBBRl9JTkVUKQorICAgICAgICByZXR1cm4gMDsKKworI2RlZmluZSBBRERfUlRWQVIoIHggKSBydGNvbF9vaWRbIHJ0Y29sX2xlbi0xIF0gPSB4OyBcCisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSggJnZhciwgcnRjb2xfb2lkLCBydGNvbF9sZW4sIEFTTl9OVUxMLCBOVUxMLCAgMCkKKyAgICBBRERfUlRWQVIoIDUgKTsgICAgICAgICAgICAgICAgIC8qIGlwQ2lkclJvdXRlSWZJbmRleCAqLworICAgIEFERF9SVFZBUiggNiApOyAgICAgICAgICAgICAgICAgLyogaXBDaWRyUm91dGVUeXBlICAgICovCisgICAgQUREX1JUVkFSKCA3ICk7ICAgICAgICAgICAgICAgICAvKiBpcENpZHJSb3V0ZVByb3RvICAgKi8KKyN1bmRlZiBBRERfUlRWQVIKKworICAgIC8qCisgICAgICogTm93IHdhbGsgdGhlIGlwQ2lkclJvdXRlVGFibGUsIHJlcG9ydGluZyB0aGUgdmFyaW91cyByb3V0ZSBlbnRyaWVzCisgICAgICovCisgICAgd2hpbGUgKCAxICkgeworICAgICAgICBvaWQgKm9wOworICAgICAgICB1bnNpZ25lZCBjaGFyICpjcDsKKworICAgICAgICBpZiAobmV0c25tcF9xdWVyeV9nZXRuZXh0KCB2YXIsIHNzICkgIT0gU05NUF9FUlJfTk9FUlJPUikKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBydGNvbF9vaWRbIHJ0Y29sX2xlbi0xIF0gPSA1OyAgICAgICAgLyogaXBSb3V0ZUlmSW5kZXggKi8KKyAgICAgICAgaWYgKCBzbm1wX29pZF9jb21wYXJlKCBydGNvbF9vaWQsIHJ0Y29sX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXItPm5hbWUsIHJ0Y29sX2xlbikgIT0gMCApCisgICAgICAgICAgICBicmVhazsgICAgLyogRW5kIG9mIFRhYmxlICovCisgICAgICAgIGlmICh2YXItPnR5cGUgPT0gU05NUF9OT1NVQ0hPQkpFQ1QgfHwKKyAgICAgICAgICAgICAgICB2YXItPnR5cGUgPT0gU05NUF9OT1NVQ0hJTlNUQU5DRSB8fAorICAgICAgICAgICAgICAgIHZhci0+dHlwZSA9PSBTTk1QX0VORE9GTUlCVklFVykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBtZW1zZXQoICZyb3V0ZSwgMCwgc2l6ZW9mKCBzdHJ1Y3Qgcm91dGVfZW50cnkgKSk7CisJcnAtPmFmID0gQUZfSU5FVDsKKwlvcCA9IHZhci0+bmFtZStydGNvbF9sZW47CisgICAgICAgIGNwID0gdG1wQWRkci5kYXRhOworICAgICAgICBjcFswXSA9ICpvcCsrICYgMHhmZjsKKyAgICAgICAgY3BbMV0gPSAqb3ArKyAmIDB4ZmY7CisgICAgICAgIGNwWzJdID0gKm9wKysgJiAweGZmOworICAgICAgICBjcFszXSA9ICpvcCsrICYgMHhmZjsKKyAgICAgICAgcnAtPmRlc3RpbmF0aW9uID0gdG1wQWRkci5hZGRyOworICAgICAgICBjcCA9IHRtcEFkZHIuZGF0YTsKKyAgICAgICAgY3BbMF0gPSAqb3ArKyAmIDB4ZmY7CisgICAgICAgIGNwWzFdID0gKm9wKysgJiAweGZmOworICAgICAgICBjcFsyXSA9ICpvcCsrICYgMHhmZjsKKyAgICAgICAgY3BbM10gPSAqb3ArKyAmIDB4ZmY7CisgICAgICAgIHJwLT5tYXNrID0gdG1wQWRkci5hZGRyOworCW9wKys7IC8qIGlwQ2lkclJvdXRlVG9zICovCisgICAgICAgIGNwID0gdG1wQWRkci5kYXRhOworICAgICAgICBjcFswXSA9ICpvcCsrICYgMHhmZjsKKyAgICAgICAgY3BbMV0gPSAqb3ArKyAmIDB4ZmY7CisgICAgICAgIGNwWzJdID0gKm9wKysgJiAweGZmOworICAgICAgICBjcFszXSA9ICpvcCsrICYgMHhmZjsKKyAgICAgICAgcnAtPmdhdGV3YXkgPSB0bXBBZGRyLmFkZHI7CisJcnAtPnNldF9iaXRzID0gU0VUX01BU0sgfCBTRVRfR1dBWTsKKworICAgICAgICBmb3IgKCB2cD12YXI7IHZwOyB2cD12cC0+bmV4dF92YXJpYWJsZSApIHsKKyAgICAgICAgICAgIHN3aXRjaCAoIHZwLT5uYW1lWyBydGNvbF9sZW4gLSAxIF0gKSB7CisgICAgICAgICAgICBjYXNlIDU6ICAgICAvKiBpcENpZHJSb3V0ZUlmSW5kZXggKi8KKyAgICAgICAgICAgICAgICBycC0+aWZOdW1iZXIgID0gKnZwLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICBycC0+c2V0X2JpdHMgfD0gU0VUX0lGTk87CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDY6ICAgICAvKiBpcENpZHJSb3V0ZVR5cGUgICAgKi8KKyAgICAgICAgICAgICAgICBycC0+dHlwZSAgICAgID0gKnZwLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICBycC0+c2V0X2JpdHMgfD0gU0VUX1RZUEU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDc6ICAgICAvKiBpcENpZHJSb3V0ZVByb3RvICAgKi8KKyAgICAgICAgICAgICAgICBycC0+cHJvdG8gICAgID0gKnZwLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICBycC0+c2V0X2JpdHMgfD0gU0VUX1BSVE87CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJwLT5zZXRfYml0cyAhPSBTRVRfQUxMKSB7CisgICAgICAgICAgICBjb250aW51ZTsgICAvKiBJbmNvbXBsZXRlIHF1ZXJ5ICovCisgICAgICAgIH0KKworICAgICAgICBpZiAoaGRyX2FmICE9IHJwLT5hZikgeworICAgICAgICAgICAgaWYgKGhkcl9hZiAhPSBBRl9VTlNQRUMpCisgICAgICAgICAgICAgICAgcHJpbnRmKCJcbiIpOworICAgICAgICAgICAgaGRyX2FmID0gcnAtPmFmOworCSAgICBwcmludGYoIlJvdXRpbmcgdGFibGVzIChpcENpZHJSb3V0ZVRhYmxlKVxuIik7CisgICAgICAgICAgICBwcl9ydGhkcihoZHJfYWYpOworICAgICAgICB9CisgICAgICAgIHBfcnRub2RlKCBycCApOworICAgICAgICBwcmludGVkKys7CisgICAgfQorICAgIHJldHVybiBwcmludGVkOworfQorCiAKIHN0cnVjdCBpZmxpc3QgewogICAgIGludCAgICAgICAgICAgICBpbmRleDsKQEAgLTE4Niw2ICsyODgsOCBAQAogewogICAgIG9pZCAgICBpZmRlc2NyX29pZFtdICA9IHsgMSwzLDYsMSwyLDEsMiwyLDEsMiwwIH07CiAgICAgc2l6ZV90IGlmZGVzY3JfbGVuICAgID0gT0lEX0xFTkdUSCggaWZkZXNjcl9vaWQgKTsKKyAgICBvaWQgICAgaWZ4Y29sX29pZFtdID0geyAxLDMsNiwxLDIsMSwzMSwxLDEsMSwxLDAgfTsKKyAgICBzaXplX3QgaWZ4Y29sX2xlbiAgID0gT0lEX0xFTkdUSCggaWZ4Y29sX29pZCApOwogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyID0gTlVMTDsKICAgICBzdHJ1Y3QgaWZsaXN0ICAgICAgICAgKmlwOwogCkBAIC0yMDQsNiArMzA4LDE4IEBACiAgICAgSWZsaXN0ID0gaXA7CiAgICAgaXAtPmluZGV4ID0gaWZJbmRleDsKIAorICAgIGlmeGNvbF9vaWRbIGlmeGNvbF9sZW4tMSBdID0gaWZJbmRleDsKKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCAmdmFyLCBpZnhjb2xfb2lkLCBpZnhjb2xfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9OVUxMLCBOVUxMLCAgMCk7CisgICAgaWYgKG5ldHNubXBfcXVlcnlfZ2V0KCB2YXIsIHNzICkgPT0gU05NUF9FUlJfTk9FUlJPUikgeworICAgICAgICBpZiAodmFyLT52YWxfbGVuID49IHNpemVvZihpcC0+bmFtZSkpCisgICAgICAgICAgICB2YXItPnZhbF9sZW4gID0gc2l6ZW9mKGlwLT5uYW1lKSAtIDE7CisgICAgICAgIG1lbW1vdmUoaXAtPm5hbWUsIHZhci0+dmFsLnN0cmluZywgdmFyLT52YWxfbGVuKTsKKyAgICAgICAgaXAtPm5hbWVbdmFyLT52YWxfbGVuXSA9ICdcMCc7CisJc3RyY3B5KG5hbWUsIGlwLT5uYW1lKTsKKwlyZXR1cm47CisgICAgfQorCiAgICAgaWZkZXNjcl9vaWRbIGlmZGVzY3JfbGVuLTEgXSA9IGlmSW5kZXg7CiAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSggJnZhciwgaWZkZXNjcl9vaWQsIGlmZGVzY3JfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9OVUxMLCBOVUxMLCAgMCk7CkBAIC0yMTgsNTAgKzMzNCw2IEBACiAgICAgc3RyY3B5KG5hbWUsIGlwLT5uYW1lKTsKIH0KIAotLyoKLSAqIFByaW50IGFkZHJlc3MgZmFtaWx5IGhlYWRlciBiZWZvcmUgYSBzZWN0aW9uIG9mIHRoZSByb3V0aW5nIHRhYmxlLgotICovCi12b2lkCi1wcl9mYW1pbHkoaW50IGFmKQotewotCWNvbnN0IGNoYXIgKmFmbmFtZTsKLQotCXN3aXRjaCAoYWYpIHsKLQljYXNlIEFGX0lORVQ6Ci0JCWFmbmFtZSA9ICJJbnRlcm5ldCI7Ci0JCWJyZWFrOwotI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKLQljYXNlIEFGX0lORVQ2OgotCQlhZm5hbWUgPSAiSW50ZXJuZXQ2IjsKLQkJYnJlYWs7Ci0jZW5kaWYKLSAgICAvKgotCWNhc2UgQUZfTlM6Ci0JCWFmbmFtZSA9ICJYTlMiOwotCQlicmVhazsKLQljYXNlIEFGX0lQWDoKLQkJYWZuYW1lID0gIklQWCI7Ci0JCWJyZWFrOwotCWNhc2UgQUZfQ0NJVFQ6Ci0JCWFmbmFtZSA9ICJYLjI1IjsKLQkJYnJlYWs7Ci0JY2FzZSBQRl9LRVk6Ci0JCWFmbmFtZSA9ICJFbmNhcCI7Ci0JCWJyZWFrOwotCWNhc2UgQUZfQVBQTEVUQUxLOgotCQlhZm5hbWUgPSAiQXBwbGVUYWxrIjsKLQkJYnJlYWs7Ci0gICAgICovCi0JZGVmYXVsdDoKLQkJYWZuYW1lID0gTlVMTDsKLQkJYnJlYWs7Ci0JfQotCWlmIChhZm5hbWUpCi0JCXByaW50ZigiXG4lczpcbiIsIGFmbmFtZSk7Ci0JZWxzZQotCQlwcmludGYoIlxuUHJvdG9jb2wgRmFtaWx5ICVkOlxuIiwgYWYpOwotfQotCiAvKiBjb2x1bW4gd2lkdGhzOyBlYWNoIGZvbGxvd2VkIGJ5IG9uZSBzcGFjZSAqLwogI2lmbmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CiAjZGVmaW5lCVdJRF9EU1QoYWYpCTI2CS8qIHdpZHRoIG9mIGRlc3RpbmF0aW9uIGNvbHVtbiAqLwpAQCAtMzIzLDE1ICszOTUsMTUgQEAKIAogCWlmIChmaXJzdCkgewogCQlmaXJzdCA9IDA7Ci0JCWlmIChnZXRob3N0bmFtZShkb21haW4sIHNpemVvZiBkb21haW4pID09IDAgJiYKLQkJICAgIChjcCA9IHN0cmNocihkb21haW4sICcuJykpKQorCQlpZiAoZ2V0aG9zdG5hbWUobGluZSwgc2l6ZW9mIGxpbmUpID09IDAgJiYKKwkJICAgIChjcCA9IHN0cmNocihsaW5lLCAnLicpKSkKIAkJCSh2b2lkKSBzdHJsY3B5KGRvbWFpbiwgY3AgKyAxLCBzaXplb2YgZG9tYWluKTsKIAkJZWxzZQogCQkJZG9tYWluWzBdID0gJ1wwJzsKIAl9CiAJY3AgPSBOVUxMOwogCWlmICghbmZsYWcpIHsKLQkJaHAgPSBnZXRob3N0YnlhZGRyKChjaGFyICopJmluLCBzaXplb2YgKHN0cnVjdCBpbl9hZGRyKSwKKwkJaHAgPSBuZXRzbm1wX2dldGhvc3RieWFkZHIoKGNoYXIgKikmaW4sIHNpemVvZiAoc3RydWN0IGluX2FkZHIpLAogCQkgICAgQUZfSU5FVCk7CiAJCWlmIChocCkgewogCQkJaWYgKChjcCA9IHN0cmNocihocC0+aF9uYW1lLCAnLicpKSAmJgpAQCAtNDk5LDcgKzU3MSw2IEBACiAgICAgc3RhdGljIGNoYXIgZmxhZ19idWZbMTBdOwogICAgIGNoYXIgICpjcCA9IGZsYWdfYnVmOwogCi0gICAgbWVtc2V0KCBmbGFnX2J1ZiwgMCwgc2l6ZW9mKGZsYWdfYnVmKSk7CiAgICAgKmNwKysgPSAnPCc7CiAgICAgKmNwKysgPSAnVSc7ICAgLyogcm91dGUgaXMgaW4gdXNlICovCiAgICAgaWYgKHJwLT5tYXNrICA9PSAweGZmZmZmZmZmKQpAQCAtNTA5LDYgKzU4MCw3IEBACiAgICAgaWYgKHJwLT50eXBlICA9PSA0KQogICAgICAgICAqY3ArKyA9ICdHJzsgICAvKiByZW1vdGUgZGVzdGluYXRpb24vbmV0ICovCiAgICAgKmNwKysgPSAnPic7CisgICAgKmNwID0gMDsKICAgICByZXR1cm4gZmxhZ19idWY7CiB9CiAKZGlmZiAtLWdpdCBhL2FwcHMvc25tcG5ldHN0YXQvcm91dGV4LmMgYi9hcHBzL3NubXBuZXRzdGF0L3JvdXRleC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMDZkMjUKLS0tIC9kZXYvbnVsbAorKysgYi9hcHBzL3NubXBuZXRzdGF0L3JvdXRleC5jCkBAIC0wLDAgKzEsNTU4IEBACisvKiAgICAgICAgJE9wZW5CU0Q6IHJvdXRlLmMsdiAxLjY2IDIwMDQvMTEvMTcgMDE6NDc6MjAgaXRvanVuIEV4cCAkICAgICAgICAqLworLyogICAgICAgICROZXRCU0Q6IHJvdXRlLmMsdiAxLjE1IDE5OTYvMDUvMDcgMDI6NTU6MDYgdGhvcnBlaiBFeHAgJCAgICAgICAgKi8KKworLyoKKyAqIENvcHlyaWdodCAoYykgMTk4MywgMTk4OCwgMTk5MworICogICAgICAgIFRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUkVHRU5UUyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFJFR0VOVFMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZkZWYgIElOSEVSSVRFRF9DT0RFCisjaWZuZGVmIGxpbnQKKyNpZiAwCitzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJmcm9tOiBAKCMpcm91dGUuYyAgICAgICAgOC4zIChCZXJrZWxleSkgMy85Lzk0IjsKKyNlbHNlCitzdGF0aWMgY2hhciAqcmNzaWQgPSAiJE9wZW5CU0Q6IHJvdXRlLmMsdiAxLjY2IDIwMDQvMTEvMTcgMDE6NDc6MjAgaXRvanVuIEV4cCAkIjsKKyNlbmRpZgorI2VuZGlmIC8qIG5vdCBsaW50ICovCisjZW5kaWYKKworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisKKyNpZiBIQVZFX05FVElORVRfSU5fSAorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbmRpZgorI2lmIEhBVkVfQVJQQV9JTkVUX0gKKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKworI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUREJfSAorI2luY2x1ZGUgPG5ldGRiLmg+CisjZW5kaWYKKworI2lmbmRlZiBJTkVUCisjZGVmaW5lIElORVQKKyNlbmRpZgorCisjaW5jbHVkZSAibWFpbi5oIgorI2luY2x1ZGUgIm5ldHN0YXQuaCIKKyNpZiBIQVZFX1dJTlNPQ0tfSAorI2luY2x1ZGUgIndpbnN0dWIuaCIKKyNlbmRpZgorCisvKiBpbmV0Q2lkclJvdXRlVGFibGUgKi8KKyNkZWZpbmUgU0VUX0lGTk8gMHgwMQorI2RlZmluZSBTRVRfVFlQRSAweDAyCisjZGVmaW5lIFNFVF9QUlRPIDB4MDQKKyNkZWZpbmUgU0VUX0FHRSAgMHgwOAorI2RlZmluZSBTRVRfQVMgICAweDEwCisjZGVmaW5lIFNFVF9NRVQxIDB4MjAKKyNkZWZpbmUgU0VUX0FMTCAgMHgzZgorCisvKiBpcDZSb3V0ZVRhYmxlICovCisjZGVmaW5lIFNFVF9IT1AgICAgIDB4NDAKKyNkZWZpbmUgU0VUX0lOVkFMSUQgMHg4MAorI2RlZmluZSBTRVRfQUxMNiAgICAweDY3CisvKiBub3QgaW52YWxpZCwgYW5kIG9ubHkgdGhlIGNvbHVtbnMgdGhhdCB3ZSBmZXRjaCAqLworCitzdHJ1Y3Qgcm91dGVfZW50cnkgeworICAgIGludCAgICAgICAgICAgICBhZjsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBkc3Q7CisgICAgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgaG9wOworICAgIGludCAgICAgICAgICAgICBtYXNrOworICAgIGludCAgICAgICAgICAgICBpZk51bWJlcjsKKyAgICBpbnQgICAgICAgICAgICAgdHlwZTsKKyAgICBpbnQgICAgICAgICAgICAgcHJvdG87CisgICAgaW50ICAgICAgICAgICAgIGFnZTsKKyAgICBpbnQgICAgICAgICAgICAgYXM7CisgICAgaW50ICAgICAgICAgICAgIG1ldHJpYzE7CisgICAgaW50ICAgICAgICAgICAgIHNldF9iaXRzOworICAgIGNoYXIgICAgICAgICAgICBpZm5hbWVbNjRdOworfTsKKworCitzdGF0aWMgdm9pZCBwcl9ydHhoZHIoaW50IGFmLCBjb25zdCBjaGFyICp0YWJsZSk7CitzdGF0aWMgdm9pZCBwX3J0bm9kZXgoIHN0cnVjdCByb3V0ZV9lbnRyeSAqcnAgKTsKKworLyoKKyAqIFByaW50IHJvdXRpbmcgdGFibGVzLgorICovCitpbnQKK3JvdXRleHByKGludCBhZikKK3sKKyAgICBzdHJ1Y3Qgcm91dGVfZW50cnkgIHJvdXRlLCAqcnAgPSAmcm91dGU7CisgICAgb2lkICAgIHJ0Y29sX29pZFtdICA9IHsgMSwzLDYsMSwyLDEsNCwyNCw3LDEsMCB9OyAvKiBpbmV0Q2lkclJvdXRlRW50cnkgKi8KKyAgICBzaXplX3QgcnRjb2xfbGVuICAgID0gT0lEX0xFTkdUSCggcnRjb2xfb2lkICk7CisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXIgPSBOVUxMLCAqdnA7CisgICAgaW50IGhkcl9hZiA9IEFGX1VOU1BFQzsKKyAgICBpbnQgcHJpbnRlZCA9IDA7CisKKyNkZWZpbmUgQUREX1JUVkFSKCB4ICkgcnRjb2xfb2lkWyBydGNvbF9sZW4tMSBdID0geDsgXAorICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoICZ2YXIsIHJ0Y29sX29pZCwgcnRjb2xfbGVuLCBBU05fTlVMTCwgTlVMTCwgIDApCisgICAgQUREX1JUVkFSKCA3ICk7ICAgICAgICAgICAgICAgICAvKiBpbmV0Q2lkclJvdXRlSWZJbmRleCAqLworICAgIEFERF9SVFZBUiggOCApOyAgICAgICAgICAgICAgICAgLyogaW5ldENpZHJSb3V0ZVR5cGUgICAgKi8KKyAgICBBRERfUlRWQVIoIDkgKTsgICAgICAgICAgICAgICAgIC8qIGluZXRDaWRyUm91dGVQcm90byAgICovCisgICAgQUREX1JUVkFSKCAxMCApOyAgICAgICAgICAgICAgICAvKiBpbmV0Q2lkclJvdXRlQWdlICAgKi8KKyAgICBBRERfUlRWQVIoIDExICk7ICAgICAgICAgICAgICAgIC8qIGluZXRDaWRyUm91dGVOZXh0SG9wQVMgICAqLworICAgIEFERF9SVFZBUiggMTIgKTsgICAgICAgICAgICAgICAgLyogaW5ldENpZHJSb3V0ZU1ldHJpYzEgICAqLworI3VuZGVmIEFERF9SVFZBUgorCisgICAgLyoKKyAgICAgKiBOb3cgd2FsayB0aGUgaW5ldENpZHJSb3V0ZVRhYmxlLCByZXBvcnRpbmcgdGhlIHZhcmlvdXMgcm91dGUgZW50cmllcworICAgICAqLworICAgIHdoaWxlICggMSApIHsKKyAgICAgICAgb2lkICpvcDsKKyAgICAgICAgdW5zaWduZWQgY2hhciAqY3A7CisgICAgICAgIGludCBpOworCisgICAgICAgIGlmIChuZXRzbm1wX3F1ZXJ5X2dldG5leHQoIHZhciwgc3MgKSAhPSBTTk1QX0VSUl9OT0VSUk9SKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHJ0Y29sX29pZFsgcnRjb2xfbGVuLTEgXSA9IDc7ICAgICAgICAvKiBpZlJvdXRlSWZJbmRleCAqLworICAgICAgICBpZiAoIHNubXBfb2lkX2NvbXBhcmUoIHJ0Y29sX29pZCwgcnRjb2xfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhci0+bmFtZSwgcnRjb2xfbGVuKSAhPSAwICkKKyAgICAgICAgICAgIGJyZWFrOyAgICAvKiBFbmQgb2YgVGFibGUgKi8KKyAgICAgICAgaWYgKHZhci0+dHlwZSA9PSBTTk1QX05PU1VDSE9CSkVDVCB8fAorICAgICAgICAgICAgICAgIHZhci0+dHlwZSA9PSBTTk1QX05PU1VDSElOU1RBTkNFIHx8CisgICAgICAgICAgICAgICAgdmFyLT50eXBlID09IFNOTVBfRU5ET0ZNSUJWSUVXKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG1lbXNldCggJnJvdXRlLCAwLCBzaXplb2YoIHN0cnVjdCByb3V0ZV9lbnRyeSApKTsKKyAgICAgICAgLyogRXh0cmFjdCBpbmV0Q2lkclJvdXRlRGVzdCwgaW5ldENpZHJSb3V0ZVBmeExlbiwKKyAgICAgICAgICogaW5ldENpZHJSb3V0ZU5leHRIb3AgZnJvbSBpbmRleCAqLworICAgICAgICBzd2l0Y2ggKHZhci0+bmFtZVtydGNvbF9sZW5dKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIHsgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikmcm91dGUuZHN0OworICAgICAgICAgICAgICAgIGludCBsZW47CisgICAgICAgICAgICAgICAgcm91dGUuYWYgPSBBRl9JTkVUOworICAgICAgICAgICAgICAgIHNpbi0+c2luX2ZhbWlseSA9IEFGX0lORVQ7CisgICAgICAgICAgICAgICAgb3AgPSB2YXItPm5hbWUrcnRjb2xfbGVuKzE7CisgICAgICAgICAgICAgICAgbGVuID0gKm9wKys7CisgICAgICAgICAgICAgICAgY3AgPSAodW5zaWduZWQgY2hhciAqKSZzaW4tPnNpbl9hZGRyOworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgKmNwKysgPSAqb3ArKzsKKyAgICAgICAgICAgICAgICByb3V0ZS5tYXNrID0gKm9wKys7CisgICAgICAgICAgICAgICAgb3AgKz0gKm9wKzE7CisgICAgICAgICAgICAgICAgb3ArKzsgLyogYWRkclR5cGUgKi8KKyAgICAgICAgICAgICAgICBvcCsrOyAvKiBhZGRyTGVuICovCisgICAgICAgICAgICAgICAgc2luID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSZyb3V0ZS5ob3A7CisgICAgICAgICAgICAgICAgc2luLT5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKKyAgICAgICAgICAgICAgICBjcCA9ICh1bnNpZ25lZCBjaGFyICopJnNpbi0+c2luX2FkZHI7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSAqY3ArKyA9ICpvcCsrOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICB7ICAgc3RydWN0IHNvY2thZGRyX2luNiAqc2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopJnJvdXRlLmRzdDsKKyAgICAgICAgICAgICAgICBpbnQgbGVuOworICAgICAgICAgICAgICAgIHJvdXRlLmFmID0gQUZfSU5FVDY7CisgICAgICAgICAgICAgICAgc2luNi0+c2luNl9mYW1pbHkgPSBBRl9JTkVUNjsKKyAgICAgICAgICAgICAgICBvcCA9IHZhci0+bmFtZStydGNvbF9sZW4rMTsKKyAgICAgICAgICAgICAgICBsZW4gPSAqb3ArKzsKKyAgICAgICAgICAgICAgICBjcCA9ICh1bnNpZ25lZCBjaGFyICopJnNpbjYtPnNpbjZfYWRkcjsKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspICpjcCsrID0gKm9wKys7CisgICAgICAgICAgICAgICAgcm91dGUubWFzayA9ICpvcCsrOworICAgICAgICAgICAgICAgIG9wICs9ICpvcCsxOworICAgICAgICAgICAgICAgIG9wKys7IC8qIGFkZHJUeXBlICovCisgICAgICAgICAgICAgICAgb3ArKzsgLyogYWRkckxlbiAqLworICAgICAgICAgICAgICAgIHNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKSZyb3V0ZS5ob3A7CisgICAgICAgICAgICAgICAgc2luNi0+c2luNl9mYW1pbHkgPSBBRl9JTkVUNjsKKyAgICAgICAgICAgICAgICBjcCA9ICh1bnNpZ25lZCBjaGFyICopJnNpbjYtPnNpbjZfYWRkcjsKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspICpjcCsrID0gKm9wKys7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkJhZCBhZGRyZXNzIHR5cGU6ICVkXG4iLCAoaW50KXZhci0+bmFtZVtydGNvbF9sZW5dKTsKKyAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgIH0KKyAgICAgICAgLyogRXh0cmFjdCBpcFJvdXRlRGVzdCBpbmRleCB2YWx1ZSAqLworCisgICAgICAgIGZvciAoIHZwPXZhcjsgdnA7IHZwPXZwLT5uZXh0X3ZhcmlhYmxlICkgeworICAgICAgICAgICAgc3dpdGNoICggdnAtPm5hbWVbIHJ0Y29sX2xlbiAtIDEgXSApIHsKKyAgICAgICAgICAgIGNhc2UgNzogICAgIC8qIGluZXRDaWRyUm91dGVJZkluZGV4ICovCisgICAgICAgICAgICAgICAgcnAtPmlmTnVtYmVyICA9ICp2cC0+dmFsLmludGVnZXI7CisgICAgICAgICAgICAgICAgcnAtPnNldF9iaXRzIHw9IFNFVF9JRk5POworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSA4OiAgICAgLyogaW5ldENpZHJSb3V0ZVR5cGUgICAgKi8KKyAgICAgICAgICAgICAgICBycC0+dHlwZSAgICAgID0gKnZwLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICBycC0+c2V0X2JpdHMgfD0gU0VUX1RZUEU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDk6ICAgICAvKiBpbmV0Q2lkclJvdXRlUHJvdG8gICAqLworICAgICAgICAgICAgICAgIHJwLT5wcm90byAgICAgPSAqdnAtPnZhbC5pbnRlZ2VyOworICAgICAgICAgICAgICAgIHJwLT5zZXRfYml0cyB8PSBTRVRfUFJUTzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTA6ICAgICAvKiBpbmV0Q2lkclJvdXRlQWdlICAgKi8KKyAgICAgICAgICAgICAgICBycC0+YWdlICAgICA9ICp2cC0+dmFsLmludGVnZXI7CisgICAgICAgICAgICAgICAgcnAtPnNldF9iaXRzIHw9IFNFVF9BR0U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDExOiAgICAgLyogaW5ldENpZHJSb3V0ZU5leHRIb3BBUyAgICovCisgICAgICAgICAgICAgICAgcnAtPmFzICAgICA9ICp2cC0+dmFsLmludGVnZXI7CisgICAgICAgICAgICAgICAgcnAtPnNldF9iaXRzIHw9IFNFVF9BUzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTI6ICAgICAvKiBpbmV0Q2lkclJvdXRlTWV0cmljMSAgICovCisgICAgICAgICAgICAgICAgcnAtPm1ldHJpYzEgICAgID0gKnZwLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICBycC0+c2V0X2JpdHMgfD0gU0VUX01FVDE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJwLT5zZXRfYml0cyAhPSBTRVRfQUxMKSB7CisgICAgICAgICAgICBjb250aW51ZTsgICAvKiBJbmNvbXBsZXRlIHF1ZXJ5ICovCisgICAgICAgIH0KKyAgICAKKyAgICAgICAgaWYgKGFmICE9IEFGX1VOU1BFQyAmJiBycC0+YWYgIT0gYWYpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoaGRyX2FmICE9IHJwLT5hZikgeworICAgICAgICAgICAgaWYgKGhkcl9hZiAhPSBBRl9VTlNQRUMpCisgICAgICAgICAgICAgICAgcHJpbnRmKCJcbiIpOworICAgICAgICAgICAgaGRyX2FmID0gcnAtPmFmOworICAgICAgICAgICAgcHJfcnR4aGRyKGhkcl9hZiwgImluZXRDaWRyUm91dGVUYWJsZSIpOworICAgICAgICB9CisgICAgICAgIHBfcnRub2RleCggcnAgKTsKKyAgICAgICAgcHJpbnRlZCsrOworICAgIH0KKyAgICByZXR1cm4gcHJpbnRlZDsKK30KKworLyoKKyAqIEJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IGZvciB0aGUgSVBWNi1NSUIKKyAqLworaW50Cityb3V0ZTZwcihpbnQgYWYpCit7CisgICAgc3RydWN0IHJvdXRlX2VudHJ5ICByb3V0ZSwgKnJwID0gJnJvdXRlOworICAgIG9pZCAgICBydGNvbF9vaWRbXSAgPSB7IDEsMyw2LDEsMiwxLDU1LDEsMTEsMSwwIH07IC8qIGlwdjZSb3V0ZUVudHJ5ICovCisgICAgc2l6ZV90IHJ0Y29sX2xlbiAgICA9IE9JRF9MRU5HVEgoIHJ0Y29sX29pZCApOworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyID0gTlVMTCwgKnZwOworICAgIGludCBwcmludGVkID0gMDsKKyAgICBpbnQgaGRyX2FmID0gQUZfVU5TUEVDOworICAgIGludCBpOworCisgICAgaWYgKGFmICE9IEFGX1VOU1BFQyAmJiBhZiAhPSBBRl9JTkVUNikKKyAgICAgICAgcmV0dXJuIDA7CisKKyNkZWZpbmUgQUREX1JUVkFSKCB4ICkgcnRjb2xfb2lkWyBydGNvbF9sZW4tMSBdID0geDsgXAorICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoICZ2YXIsIHJ0Y29sX29pZCwgcnRjb2xfbGVuLCBBU05fTlVMTCwgTlVMTCwgIDApCisgICAgQUREX1JUVkFSKCA0ICk7ICAgICAgICAgICAgICAgICAvKiBpcHY2Um91dGVJZkluZGV4ICovCisgICAgQUREX1JUVkFSKCA1ICk7ICAgICAgICAgICAgICAgICAvKiBpcHY2Um91dGVOZXh0SG9wICovCisgICAgQUREX1JUVkFSKCA2ICk7ICAgICAgICAgICAgICAgICAvKiBpcHY2Um91dGVUeXBlICAgICovCisgICAgQUREX1JUVkFSKCA3ICk7ICAgICAgICAgICAgICAgICAvKiBpcHY2Um91dGVQcm90byAgICovCisgICAgQUREX1JUVkFSKCAxMSApOyAgICAgICAgICAgICAgICAvKiBpcHY2Um91dGVNZXRyaWMgICovCisgICAgQUREX1JUVkFSKCAxNCApOyAgICAgICAgICAgICAgICAvKiBpcHY2Um91dGVWYWxpZCAgICovCisjdW5kZWYgQUREX1JUVkFSCisKKyAgICAvKgorICAgICAqIE5vdyB3YWxrIHRoZSBpcHY2Um91dGVUYWJsZSwgcmVwb3J0aW5nIHRoZSB2YXJpb3VzIHJvdXRlIGVudHJpZXMKKyAgICAgKi8KKyAgICB3aGlsZSAoIDEgKSB7CisgICAgICAgIG9pZCAqb3A7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgKmNwLCAqY3AxOworICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKikmcm91dGUuZHN0OworCisgICAgICAgIGlmIChuZXRzbm1wX3F1ZXJ5X2dldG5leHQoIHZhciwgc3MgKSAhPSBTTk1QX0VSUl9OT0VSUk9SKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHJ0Y29sX29pZFsgcnRjb2xfbGVuLTEgXSA9IDQ7ICAgICAgICAvKiBpcHY2Um91dGVJZkluZGV4ICovCisgICAgICAgIGlmICggc25tcF9vaWRfY29tcGFyZSggcnRjb2xfb2lkLCBydGNvbF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyLT5uYW1lLCBydGNvbF9sZW4pICE9IDAgKQorICAgICAgICAgICAgYnJlYWs7ICAgIC8qIEVuZCBvZiBUYWJsZSAqLworICAgICAgICBpZiAodmFyLT50eXBlID09IFNOTVBfTk9TVUNIT0JKRUNUIHx8CisgICAgICAgICAgICAgICAgdmFyLT50eXBlID09IFNOTVBfTk9TVUNISU5TVEFOQ0UgfHwKKyAgICAgICAgICAgICAgICB2YXItPnR5cGUgPT0gU05NUF9FTkRPRk1JQlZJRVcpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbWVtc2V0KCAmcm91dGUsIDAsIHNpemVvZiggc3RydWN0IHJvdXRlX2VudHJ5ICkpOworICAgICAgICBycC0+YWYgPSBBRl9JTkVUNjsKKyAgICAgICAgc2luNi0+c2luNl9mYW1pbHkgPSBBRl9JTkVUNjsKKyAgICAgICAgb3AgPSB2YXItPm5hbWUrcnRjb2xfbGVuOworICAgICAgICBjcCA9ICh1bnNpZ25lZCBjaGFyICopJnNpbjYtPnNpbjZfYWRkcjsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspICpjcCsrID0gKm9wKys7CisgICAgICAgIHJvdXRlLm1hc2sgPSAqb3ArKzsKKworICAgICAgICBmb3IgKCB2cD12YXI7IHZwOyB2cD12cC0+bmV4dF92YXJpYWJsZSApIHsKKyAgICAgICAgICAgIHN3aXRjaCAoIHZwLT5uYW1lWyBydGNvbF9sZW4gLSAxIF0gKSB7CisgICAgICAgICAgICBjYXNlIDQ6ICAgICAvKiBpcHY2Um91dGVJZkluZGV4ICAqLworICAgICAgICAgICAgICAgIHJwLT5pZk51bWJlciAgPSAqdnAtPnZhbC5pbnRlZ2VyOworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogVGhpcyBpcywgdGVjaG5pY2FsbHksIGFuIElwdjZJZkluZGV4LCB3aGljaAorICAgICAgICAgICAgICAgICAqIGNvdWxkIG1heWJlIGJlIGRpZmZlcmVudCB0aGFuIHRoZSBJZkluZGV4CisgICAgICAgICAgICAgICAgICogZm9yIHRoZSBzYW1lIGludGVyZmFjZS4gIFdlIGlnbm9yZSB0aGlzCisgICAgICAgICAgICAgICAgICogcG9zc2liaWxpdHkgZm9yIG5vdywgaW4gdGhlIGhvcGVzIHRoYXQKKyAgICAgICAgICAgICAgICAgKiBub2JvZHkgYWN0dWFsbHkgYWxsb2NhdGVzIHRoZXNlIG51bWJlcnMKKyAgICAgICAgICAgICAgICAgKiBkaWZmZXJlbnRseS4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBycC0+c2V0X2JpdHMgfD0gU0VUX0lGTk87CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDU6ICAgICAvKiBpcHY2Um91dGVOZXh0SG9wICAqLworICAgICAgICAgICAgICAgIGNwMSA9ICh1bnNpZ25lZCBjaGFyICopdnAtPnZhbC5zdHJpbmc7CisgICAgICAgICAgICAgICAgc2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopJnJwLT5ob3A7CisgICAgICAgICAgICAgICAgc2luNi0+c2luNl9mYW1pbHkgPSBBRl9JTkVUNjsKKyAgICAgICAgICAgICAgICBjcCA9ICh1bnNpZ25lZCBjaGFyICopJnNpbjYtPnNpbjZfYWRkcjsKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgKmNwKysgPSAqY3AxKys7CisgICAgICAgICAgICAgICAgcnAtPnNldF9iaXRzIHw9IFNFVF9IT1A7CisgICAgICAgICAgICBjYXNlIDY6ICAgICAvKiBpcHY2Um91dGVUeXBlICAgICAqLworICAgICAgICAgICAgICAgIHJwLT50eXBlICAgICAgPSAqdnAtPnZhbC5pbnRlZ2VyOworICAgICAgICAgICAgICAgIC8qIFRoaXMgZW51bSBtYXBzIHRvIHNpbWlsYXIgdmFsdWVzIGluIGluZXRDaWRyUm91dGVUeXBlICovCisgICAgICAgICAgICAgICAgcnAtPnNldF9iaXRzIHw9IFNFVF9UWVBFOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSA3OiAgICAgLyogaXB2NlJvdXRlUHJvdG9jb2wgKi8KKyAgICAgICAgICAgICAgICBycC0+cHJvdG8gICAgID0gKnZwLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICAvKiBUT0RPOiB0aGlzIGRvZXMgbm90IG1hcCBkaXJlY3RseSB0byB0aGUKKyAgICAgICAgICAgICAgICAgKiBpbmV0Q2lkclJvdXRlUHJvdG9jb2wgdmFsdWVzLiAgSWYgd2UgdXNlCisgICAgICAgICAgICAgICAgICogcnAtPnByb3RvIG1vcmUsIHdlIHdpbGwgaGF2ZSB0byBtYW5hZ2UgdGhpcy4gKi8KKyAgICAgICAgICAgICAgICBycC0+c2V0X2JpdHMgfD0gU0VUX1BSVE87CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDExOiAgICAvKiBpcHY2Um91dGVNZXRyaWMgICAqLworICAgICAgICAgICAgICAgIHJwLT5tZXRyaWMxICAgPSAqdnAtPnZhbC5pbnRlZ2VyOworICAgICAgICAgICAgICAgIHJwLT5zZXRfYml0cyB8PSBTRVRfTUVUMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTQ6ICAgIC8qIGlwdjZSb3V0ZVZhbGlkICAgICovCisgICAgICAgICAgICAgICAgaWYgKCp2cC0+dmFsLmludGVnZXIgPT0gMikKKyAgICAgICAgICAgICAgICAgICAgcnAtPnNldF9iaXRzIHw9IFNFVF9JTlZBTElEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChycC0+c2V0X2JpdHMgIT0gU0VUX0FMTDYpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOyAgIC8qIEluY29tcGxldGUgcXVlcnkgKi8KKyAgICAgICAgfQorICAgIAorICAgICAgICBpZiAoaGRyX2FmICE9IHJwLT5hZikgeworICAgICAgICAgICAgaWYgKGhkcl9hZiAhPSBBRl9VTlNQRUMpCisgICAgICAgICAgICAgICAgcHJpbnRmKCJcbiIpOworICAgICAgICAgICAgaGRyX2FmID0gcnAtPmFmOworICAgICAgICAgICAgcHJfcnR4aGRyKEFGX0lORVQ2LCAiaXA2Um91dGVUYWJsZSIpOworICAgICAgICB9CisgICAgICAgIHBfcnRub2RleCggcnAgKTsKKyAgICAgICAgcHJpbnRlZCsrOworICAgIH0KKyAgICByZXR1cm4gcHJpbnRlZDsKK30KKworCisvKiBjb2x1bW4gd2lkdGhzOyBlYWNoIGZvbGxvd2VkIGJ5IG9uZSBzcGFjZSAqLworI2lmbmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisjZGVmaW5lICAgICAgICBXSURfRFNUKGFmKSAgICAgICAgMjYgICAgICAgIC8qIHdpZHRoIG9mIGRlc3RpbmF0aW9uIGNvbHVtbiAqLworI2RlZmluZSAgICAgICAgV0lEX0dXKGFmKSAgICAgICAgMTggICAgICAgIC8qIHdpZHRoIG9mIGdhdGV3YXkgY29sdW1uICovCisjZWxzZQorLyogd2lkdGggb2YgZGVzdGluYXRpb24vZ2F0ZXdheSBjb2x1bW4gKi8KKy8qIHN0cmxlbigiZmU4MDo6YWFhYTpiYmJiOmNjY2M6ZGRkZEBnaWYwIikgPT0gMzAsIHN0cmxlbigiLzEyOCIpID09IDQgKi8KKyNkZWZpbmUgICAgICAgIFdJRF9EU1QoYWYpICAgICAgICAoKGFmKSA9PSBBRl9JTkVUNiA/IChuZmxhZyA/IDM0IDogMjYpIDogMjYpCisjZGVmaW5lICAgICAgICBXSURfR1coYWYpICAgICAgICAoKGFmKSA9PSBBRl9JTkVUNiA/IChuZmxhZyA/IDM5IDogMjYpIDogMjYpCisjZW5kaWYgLyogTkVUU05NUF9FTkFCTEVfSVBWNiAqLworCisvKgorICogUHJpbnQgaGVhZGVyIGZvciByb3V0aW5nIHRhYmxlIGNvbHVtbnMuCisgKi8KK3N0YXRpYyB2b2lkCitwcl9ydHhoZHIoaW50IGFmLCBjb25zdCBjaGFyICp0YWJsZSkKK3sKKyAgICBzd2l0Y2ggKGFmKSB7CisgICAgY2FzZSBBRl9JTkVUOgorCXByaW50ZigiSVB2NCBSb3V0aW5nIHRhYmxlcyAoaW5ldENpZHJSb3V0ZVRhYmxlKVxuIik7CisJYnJlYWs7CisgICAgY2FzZSBBRl9JTkVUNjoKKwlwcmludGYoIklQdjYgUm91dGluZyB0YWJsZXMgKCVzKVxuIiwgdGFibGUpOworCWJyZWFrOworICAgIH0KKyAgICBwcmludGYoIiUtKi4qcyAiLAorCVdJRF9EU1QoYWYpLCBXSURfRFNUKGFmKSwgIkRlc3RpbmF0aW9uIik7CisgICAgcHJpbnRmKCIlLSouKnMgJS02LjZzICAlc1xuIiwKKwlXSURfR1coYWYpLCBXSURfR1coYWYpLCAiR2F0ZXdheSIsCisJIkZsYWdzIiwgIkludGVyZmFjZSIpOworfQorCisjaWZuZGVmIEhBVkVfSU5FVF9OVE9QCisvKiBNU1ZDIGFuZCBNaW5HVyAqLworI2RlZmluZSBpbmV0X250b3AgbmV0c25tcF9pbmV0X250b3AKK3N0YXRpYyBjb25zdCBjaGFyICoKK25ldHNubXBfaW5ldF9udG9wKGludCBhZiwgY29uc3Qgdm9pZCAqc3JjLCBjaGFyICpkc3QsIHNpemVfdCBzaXplKQoreworICAgIERXT1JEIG91dF9sZW4gPSBzaXplOworCisgICAgc3dpdGNoIChhZikgeworICAgIGNhc2UgQUZfSU5FVDoKKwl7CisJICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBpbjsKKworCSAgICBtZW1zZXQoJmluLCAwLCBzaXplb2YoaW4pKTsKKwkgICAgaW4uc2luX2ZhbWlseSA9IGFmOworCSAgICBtZW1jcHkoJmluLnNpbl9hZGRyLCBzcmMsIDQpOworCSAgICBpZiAoV1NBQWRkcmVzc1RvU3RyaW5nKChzdHJ1Y3Qgc29ja2FkZHIgKikmaW4sIHNpemVvZihpbiksIE5VTEwsIGRzdCwKKwkJCQkgICAmb3V0X2xlbikgPT0gMCkKKwkJcmV0dXJuIGRzdDsKKwl9CisJYnJlYWs7CisgICAgY2FzZSBBRl9JTkVUNjoKKwl7CisJICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgaW42OworCisJICAgIG1lbXNldCgmaW42LCAwLCBzaXplb2YoaW42KSk7CisJICAgIGluNi5zaW42X2ZhbWlseSA9IGFmOworCSAgICBtZW1jcHkoJmluNi5zaW42X2FkZHIsIHNyYywgMTYpOworCSAgICBpZiAoV1NBQWRkcmVzc1RvU3RyaW5nKChzdHJ1Y3Qgc29ja2FkZHIgKikmaW42LCBzaXplb2YoaW42KSwgTlVMTCwgZHN0LAorCQkJCSAgICZvdXRfbGVuKSA9PSAwKQorCQlyZXR1cm4gZHN0OworCX0KKwlicmVhazsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisjZW5kaWYKKworLyoKKyAqIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgbmV0d29yayB3aG9zZSBhZGRyZXNzIGlzIGdpdmVuLgorICogVGhlIGFkZHJlc3MgaXMgYXNzdW1lZCB0byBiZSB0aGF0IG9mIGEgbmV0IG9yIHN1Ym5ldCwgbm90IGEgaG9zdC4KKyAqLworc3RhdGljIGNoYXIgKgorbmV0eG5hbWUoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmluLCBpbnQgbWFzaykKK3sKKyAgICBzdGF0aWMgY2hhciBob3N0W01BWEhPU1ROQU1FTEVOXTsKKyAgICBzdGF0aWMgY2hhciBsaW5lW01BWEhPU1ROQU1FTEVOXTsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilpbjsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilpbjsKKworICAgIHN3aXRjaCAoaW4tPnNzX2ZhbWlseSkgeworICAgIGNhc2UgQUZfSU5FVDoKKyAgICAgICAgaW5ldF9udG9wKGluLT5zc19mYW1pbHksICZzaW4tPnNpbl9hZGRyLCBob3N0LCBzaXplb2YoaG9zdCkpOworICAgICAgICBpZiAobWFzayA9PSAzMikgc3RyY3B5KGxpbmUsIGhvc3QpOworICAgICAgICBlbHNlIHNucHJpbnRmKGxpbmUsIHNpemVvZihsaW5lKSwgIiVzLyVkIiwgaG9zdCwgbWFzayk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQUZfSU5FVDY6CisgICAgICAgIGluZXRfbnRvcChpbi0+c3NfZmFtaWx5LCAmc2luNi0+c2luNl9hZGRyLCBob3N0LCBzaXplb2YoaG9zdCkpOworICAgICAgICBpZiAobWFzayA9PSAxMjgpIHN0cmNweShsaW5lLCBob3N0KTsKKyAgICAgICAgZWxzZSBzbnByaW50ZihsaW5lLCBzaXplb2YobGluZSksICIlcy8lZCIsIGhvc3QsIG1hc2spOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGxpbmU7Cit9CisKK3N0YXRpYyBjaGFyICoKK3JvdXRleG5hbWUoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmluKQoreworICAgIGNoYXIgKmNwOworICAgIHN0YXRpYyBjaGFyIGxpbmVbTUFYSE9TVE5BTUVMRU5dOworICAgIHN0cnVjdCBob3N0ZW50ICpocCA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgZG9tYWluW01BWEhPU1ROQU1FTEVOXTsKKyAgICBzdGF0aWMgaW50IGZpcnN0ID0gMTsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilpbjsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilpbjsKKworICAgIGlmIChmaXJzdCkgeworICAgICAgICBmaXJzdCA9IDA7CisgICAgICAgIGlmIChnZXRob3N0bmFtZShsaW5lLCBzaXplb2YgbGluZSkgPT0gMCAmJgorICAgICAgICAgICAgKGNwID0gc3RyY2hyKGxpbmUsICcuJykpKQorICAgICAgICAgICAgKHZvaWQpIHN0cmxjcHkoZG9tYWluLCBjcCArIDEsIHNpemVvZiBkb21haW4pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkb21haW5bMF0gPSAnXDAnOworICAgIH0KKyAgICBjcCA9IE5VTEw7CisgICAgaWYgKCFuZmxhZykgeworICAgICAgICBzd2l0Y2ggKGluLT5zc19mYW1pbHkpIHsKKyAgICAgICAgY2FzZSBBRl9JTkVUOgorICAgICAgICAgICAgaHAgPSBuZXRzbm1wX2dldGhvc3RieWFkZHIoJnNpbi0+c2luX2FkZHIsCisgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoc3RydWN0IGluX2FkZHIpLCBBRl9JTkVUKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFGX0lORVQ2OgorICAgICAgICAgICAgaHAgPSBuZXRzbm1wX2dldGhvc3RieWFkZHIoJnNpbjYtPnNpbjZfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mIChzdHJ1Y3QgaW42X2FkZHIpLCBBRl9JTkVUNik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoaHApIHsKKyAgICAgICAgICAgIGlmICgoY3AgPSBzdHJjaHIoaHAtPmhfbmFtZSwgJy4nKSkgJiYgIXN0cmNtcChjcCArIDEsIGRvbWFpbikpCisgICAgICAgICAgICAgICAgKmNwID0gJ1wwJzsKKyAgICAgICAgICAgIGNwID0gaHAtPmhfbmFtZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoY3ApIHsKKyAgICAgICAgc3RybGNweShsaW5lLCBjcCwgc2l6ZW9mKGxpbmUpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzd2l0Y2ggKGluLT5zc19mYW1pbHkpIHsKKyAgICAgICAgY2FzZSBBRl9JTkVUOgorICAgICAgICAgICAgaW5ldF9udG9wKHNpbi0+c2luX2ZhbWlseSwgJnNpbi0+c2luX2FkZHIsIGxpbmUsIHNpemVvZihsaW5lKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBRl9JTkVUNjoKKyAgICAgICAgICAgIGluZXRfbnRvcChzaW42LT5zaW42X2ZhbWlseSwgJnNpbjYtPnNpbjZfYWRkciwgbGluZSwgc2l6ZW9mKGxpbmUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAobGluZSk7Cit9CisKKworc3RhdGljIGNoYXIgKgorc19ydGZsYWdzeCggc3RydWN0IHJvdXRlX2VudHJ5ICpycCApCit7CisgICAgc3RhdGljIGNoYXIgZmxhZ19idWZbMTBdOworICAgIGNoYXIgICpjcCA9IGZsYWdfYnVmOworCisgICAgKmNwKysgPSAnPCc7CisgICAgKmNwKysgPSAnVSc7ICAgLyogcm91dGUgaXMgaW4gdXNlICovCisgICAgaWYgKChycC0+YWYgPT0gQUZfSU5FVCAmJiBycC0+bWFzayA9PSAzMikgfHwKKyAgICAgICAgICAgIChycC0+YWYgPT0gQUZfSU5FVDYgJiYgcnAtPm1hc2sgPT0gMTI4KSkKKyAgICAgICAgKmNwKysgPSAnSCc7ICAgLyogaG9zdCAqLworICAgIGlmIChycC0+cHJvdG8gPT0gNCkKKyAgICAgICAgKmNwKysgPSAnRCc7ICAgLyogSUNNUCByZWRpcmVjdCAqLworICAgIGlmIChycC0+dHlwZSAgPT0gNCkKKyAgICAgICAgKmNwKysgPSAnRyc7ICAgLyogcmVtb3RlIGRlc3RpbmF0aW9uL25ldCAqLworICAgICpjcCsrID0gJz4nOworICAgICpjcCA9IDA7CisgICAgcmV0dXJuIGZsYWdfYnVmOworfQorCitzdGF0aWMgdm9pZAorcF9ydG5vZGV4KCBzdHJ1Y3Qgcm91dGVfZW50cnkgKnJwICkKK3sKKyAgICBnZXRfaWZuYW1lKHJwLT5pZm5hbWUsIHJwLT5pZk51bWJlcik7CisgICAgaWYgKHJwLT5hZiA9PSBBRl9JTkVUKSB7CisgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqc2luID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSZycC0+ZHN0OworICAgICAgICBwcmludGYoIiUtKnMgIiwKKyAgICAgICAgICAgIFdJRF9EU1QoQUZfSU5FVCksCisgICAgICAgICAgICAgICAgKHNpbi0+c2luX2FkZHIuc19hZGRyID09IElOQUREUl9BTlkpID8gImRlZmF1bHQiIDoKKyAgICAgICAgICAgICAgICAocnAtPm1hc2sgPT0gMzIgPworICAgICAgICAgICAgICAgICAgICByb3V0ZXhuYW1lKCZycC0+ZHN0KSA6CisgICAgICAgICAgICAgICAgICAgIG5ldHhuYW1lKCZycC0+ZHN0LCBycC0+bWFzaykpKTsKKyAgICB9CisgICAgZWxzZSBpZiAocnAtPmFmID09IEFGX0lORVQ2KSB7CisgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKSZycC0+ZHN0OworICAgICAgICBzdHJ1Y3QgaW42X2FkZHIgaW42X2FkZHJfYW55ID0gSU42QUREUl9BTllfSU5JVDsKKyAgICAgICAgcHJpbnRmKCIlLSpzICIsCisgICAgICAgICAgICBXSURfRFNUKEFGX0lORVQ2KSwKKyAgICAgICAgICAgICAgICBtZW1jbXAoJnNpbjYtPnNpbjZfYWRkciwgJmluNl9hZGRyX2FueSwgc2l6ZW9mKGluNl9hZGRyX2FueSkpID09IDAgPyAiZGVmYXVsdCIgOgorICAgICAgICAgICAgICAgIChycC0+bWFzayA9PSAxMjggPworICAgICAgICAgICAgICAgICAgICByb3V0ZXhuYW1lKCZycC0+ZHN0KSA6CisgICAgICAgICAgICAgICAgICAgIG5ldHhuYW1lKCZycC0+ZHN0LCBycC0+bWFzaykpKTsKKyAgICB9CisgICAgcHJpbnRmKCIlLSpzICUtNi42cyAgJXMiLAorICAgICAgICBXSURfR1cocnAtPmFmKSwKKyAgICAgICAgMSA/IHJvdXRleG5hbWUoJnJwLT5ob3ApIDogIioiLAorICAgICAgICBzX3J0ZmxhZ3N4KHJwKSwgcnAtPmlmbmFtZSk7CisgICAgaWYgKChycC0+c2V0X2JpdHMgJiBTRVRfQVMpICYmIHJwLT5hcyAhPSAwKQorICAgICAgICBwcmludGYoIiAoQVMgJWQpIiwgcnAtPmFzKTsKKyAgICBwcmludGYoIlxuIik7Cit9CmRpZmYgLS1naXQgYS9hcHBzL3NubXB0ZXN0LmMgYi9hcHBzL3NubXB0ZXN0LmMKaW5kZXggNTE5ZTM4ZS4uMjRkZTQ3YiAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wdGVzdC5jCisrKyBiL2FwcHMvc25tcHRlc3QuYwpAQCAtMjEwLDkgKzIxMCwxMSBAQAogICAgICAgICAgICAgICAgICAgICBjYXNlIFNOTVBfTVNHX1JFU1BPTlNFOgogICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJSZWNlaXZlZCBHZXQgUmVzcG9uc2UgIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgU05NUF9NU0dfU0VUOgogICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJSZWNlaXZlZCBTZXQgUmVxdWVzdCAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAgICAgICAgICAgICBjYXNlIFNOTVBfTVNHX1RSQVA6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlJlY2VpdmVkIFRyYXAgUmVxdWVzdCAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzExLDEwICszMTMsMTIgQEAKICAgICAgICAgICAgIGNvbW1hbmQgPSBTTk1QX01TR19HRVRORVhUOwogICAgICAgICAgICAgcHJpbnRmKCJSZXF1ZXN0IHR5cGUgaXMgR2V0bmV4dCBSZXF1ZXN0XG4iKTsKICAgICAgICAgICAgIGJyZWFrOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgY2FzZSAnUyc6CiAgICAgICAgICAgICBjb21tYW5kID0gU05NUF9NU0dfU0VUOwogICAgICAgICAgICAgcHJpbnRmKCJSZXF1ZXN0IHR5cGUgaXMgU2V0IFJlcXVlc3RcbiIpOwogICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIGNhc2UgJ0InOgogICAgICAgICAgICAgY29tbWFuZCA9IFNOTVBfTVNHX0dFVEJVTEs7CiAgICAgICAgICAgICBwcmludGYoIlJlcXVlc3QgdHlwZSBpcyBCdWxrIFJlcXVlc3RcbiIpOwpAQCAtMzMzLDExICszMzcsMTQgQEAKICAgICAgICAgICAgIHByaW50ZigiKEFyZSB5b3Ugc2VuZGluZyB0byB0aGUgcmlnaHQgcG9ydD8pXG4iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICdEJzoKLSAgICAgICAgICAgIGlmIChzbm1wX2dldF9kdW1wX3BhY2tldCgpKSB7Ci0gICAgICAgICAgICAgICAgc25tcF9zZXRfZHVtcF9wYWNrZXQoMCk7CisgICAgICAgICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfRFVNUF9QQUNLRVQpKSB7CisgICAgICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfRFVNUF9QQUNLRVQsIDApOwogICAgICAgICAgICAgICAgIHByaW50ZigiVHVybmVkIHBhY2tldCBkdW1wIG9mZlxuIik7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNubXBfc2V0X2R1bXBfcGFja2V0KDEpOworICAgICAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0RVTVBfUEFDS0VULCAxKTsKICAgICAgICAgICAgICAgICBwcmludGYoIlR1cm5lZCBwYWNrZXQgZHVtcCBvblxuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTM1MCwxMSArMzU3LDE0IEBACiAgICAgICAgICAgICAgICAgZXhpdCgwKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgJ1AnOgotICAgICAgICAgICAgICAgIGlmIChzbm1wX2dldF9xdWlja19wcmludCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3F1aWNrX3ByaW50KDApOworICAgICAgICAgICAgICAgIGlmIChuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfUVVJQ0tfUFJJTlQpKSB7CisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9RVUlDS19QUklOVCwgMCk7CiAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiVHVybmVkIHF1aWNrIHByaW50aW5nIG9mZlxuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgc25tcF9zZXRfcXVpY2tfcHJpbnQoMSk7CisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9RVUlDS19QUklOVCwgMSk7CiAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiVHVybmVkIHF1aWNrIHByaW50aW5nIG9uXG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zNzUsOCArMzg1LDEyIEBACiAJdnAtPm5hbWUgPSBzbm1wX2R1cGxpY2F0ZV9vYmppZChuYW1lLCB2cC0+bmFtZV9sZW5ndGgpOwogICAgIH0KIAotICAgIGlmIChjb21tYW5kID09IFNOTVBfTVNHX1NFVCB8fCBjb21tYW5kID09IFNOTVBfTVNHX0lORk9STQotICAgICAgICB8fCBjb21tYW5kID09IFNOTVBfTVNHX1RSQVAyKSB7CisgICAgaWYgKGNvbW1hbmQgPT0gU05NUF9NU0dfSU5GT1JNCisgICAgICAgIHx8IGNvbW1hbmQgPT0gU05NUF9NU0dfVFJBUDIKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCisgICAgICAgIHx8IGNvbW1hbmQgPT0gU05NUF9NU0dfU0VUCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgICAgICkgewogICAgICAgICBwcmludGYoIlR5cGUgW2l8dXxzfHh8ZHxufG98dHxhXTogIik7CiAgICAgICAgIGZmbHVzaChzdGRvdXQpOwogICAgICAgICBpZiAoIWZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIHN0ZGluKSkgewpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wdGxzLmMgYi9hcHBzL3NubXB0bHMuYwppbmRleCA4MDlkMzY5Li44NGM1ZmJlIDEwMDY0NAotLS0gYS9hcHBzL3NubXB0bHMuYworKysgYi9hcHBzL3NubXB0bHMuYwpAQCAtNCwxMCArNCwxMyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI3VuZGVmIE5FVFNOTVBfVVNFX0FTU0VSVAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGxzX2ZpbmdlcnByaW50X2J1aWxkKQorCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAogI2luY2x1ZGUgPG9wZW5zc2wvc3NsLmg+CmRpZmYgLS1naXQgYS9hcHBzL3NubXB0cmFuc2xhdGUuYyBiL2FwcHMvc25tcHRyYW5zbGF0ZS5jCmluZGV4IDczOTFmZDQuLjJiMTk3NzcgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcHRyYW5zbGF0ZS5jCisrKyBiL2FwcHMvc25tcHRyYW5zbGF0ZS5jCkBAIC0yMDIsNyArMjAyLDggQEAKICNlbmRpZiAvKiBORVRTTk1QX0RJU0FCTEVfTUlCX0xPQURJTkcgKi8KICAgICAgICAgICAgICAgICBjYXNlICdkJzoKICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSAxOwotICAgICAgICAgICAgICAgICAgICBzbm1wX3NldF9zYXZlX2Rlc2NyaXB0aW9ucygxKTsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1NBVkVfTUlCX0RFU0NSUywgMSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgJ0InOgogICAgICAgICAgICAgICAgICAgICBmaW5kX2FsbCA9IDE7CkBAIC0yNjEsNyArMjYyLDggQEAKIAogICAgIGRvIHsKICAgICAgICAgbmFtZV9sZW5ndGggPSBNQVhfT0lEX0xFTjsKLSAgICAgICAgaWYgKHNubXBfZ2V0X3JhbmRvbV9hY2Nlc3MoKSkgeworICAgICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorCQkJCSAgTkVUU05NUF9EU19MSUJfUkFORE9NX0FDQ0VTUykpIHsKICNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX01JQl9MT0FESU5HCiAgICAgICAgICAgICBpZiAoIWdldF9ub2RlKGN1cnJlbnRfbmFtZSwgbmFtZSwgJm5hbWVfbGVuZ3RoKSkgewogI2VuZGlmIC8qIE5FVFNOTVBfRElTQUJMRV9NSUJfTE9BRElORyAqLwpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wdHJhcGQuYyBiL2FwcHMvc25tcHRyYXBkLmMKaW5kZXggMTZkZmY1MC4uYmNlMGQ0NyAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wdHJhcGQuYworKysgYi9hcHBzL3NubXB0cmFwZC5jCkBAIC0xMjMsNiArMTIzLDggQEAKICNpbmNsdWRlIDx0Y3BkLmg+CiAjZW5kaWYKIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKICNpZm5kZWYgQlNENF8zCiAjZGVmaW5lIEJTRDRfMgogI2VuZGlmCkBAIC0yMTUsOCArMjE3LDYgQEAKIAogY29uc3QgY2hhciAgICAgKmFwcF9uYW1lID0gInNubXB0cmFwZCI7CiAKLXN0cnVjdCB0aW1ldmFsICBOb3c7Ci0KIHZvaWQgICAgICAgICAgICB0cmFwZF91cGRhdGVfY29uZmlnKHZvaWQpOwogCiAjaWZkZWYgV0lOMzJTRVJWSUNFCkBAIC0yODksNiArMjg5LDcgQEAKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLXYsIC0tdmVyc2lvblx0XHRkaXNwbGF5IHZlcnNpb24gaW5mb3JtYXRpb25cbiIpOwogI2lmIGRlZmluZWQoVVNJTkdfQUdFTlRYX1NVQkFHRU5UX01PRFVMRSkgJiYgIWRlZmluZWQoTkVUU05NUF9TTk1QVFJBUERfRElTQUJMRV9BR0VOVFgpCiAgICAgZnByaW50ZihzdGRlcnIsICIgIC14IEFERFJFU1NcdFx0dXNlIEFERFJFU1MgYXMgQWdlbnRYIGFkZHJlc3NcbiIpOworICAgIGZwcmludGYoc3RkZXJyLCAiICAtWFx0XHRcdGRvbid0IGJlY29tZSBhIHN1YmFnZW50XG4iKTsKICNlbmRpZgogICAgIGZwcmludGYoc3RkZXJyLAogICAgICAgICAgICAgIiAgLU8gPE9VVE9QVFM+XHRcdHRvZ2dsZSBvcHRpb25zIGNvbnRyb2xsaW5nIG91dHB1dCBkaXNwbGF5XG4iKTsKQEAgLTQ0Myw2ICs0NDQsNyBAQAogewogICAgIGlmIChkZWZhdWx0X3BvcnQgIT0gZGRlZmF1bHRfcG9ydCkgewogICAgICAgICBmcmVlKGRlZmF1bHRfcG9ydCk7CisgICAgICAgIGRlZmF1bHRfcG9ydCA9IGRkZWZhdWx0X3BvcnQ7CiAgICAgfQogfQogCkBAIC00NzIsMTMgKzQ3NCwxMCBAQAogdm9pZAogcGFyc2VfY29uZmlnX2FnZW50dXNlcihjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKIHsKLSNpZiBkZWZpbmVkKEhBVkVfR0VUUFdOQU0pICYmIGRlZmluZWQoSEFWRV9QV0RfSCkKLSAgICBzdHJ1Y3QgcGFzc3dkICAqaW5mbzsKLSNlbmRpZgotCiAgICAgaWYgKGNwdHJbMF0gPT0gJyMnKSB7CiAgICAgICAgIGNoYXIgICAgICAgICAgICplY3A7CiAgICAgICAgIGludCAgICAgICAgICAgICB1aWQ7CisKICAgICAgICAgdWlkID0gc3RydG91bChjcHRyICsgMSwgJmVjcCwgMTApOwogICAgICAgICBpZiAoKmVjcCAhPSAwKSB7CiAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJCYWQgbnVtYmVyIik7CkBAIC00ODYsNDQgKzQ4NSw0NyBAQAogCSAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCiAJCQkgICAgICAgTkVUU05NUF9EU19BR0VOVF9VU0VSSUQsIHVpZCk7CiAJfQotICAgIH0KICNpZiBkZWZpbmVkKEhBVkVfR0VUUFdOQU0pICYmIGRlZmluZWQoSEFWRV9QV0RfSCkKLSAgICBlbHNlIGlmICgoaW5mbyA9IGdldHB3bmFtKGNwdHIpKSAhPSBOVUxMKSB7Ci0gICAgICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKLQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfVVNFUklELCBpbmZvLT5wd191aWQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGNvbmZpZ19wZXJyb3IoIlVzZXIgbm90IGZvdW5kIGluIHBhc3N3ZCBkYXRhYmFzZSIpOwotICAgIH0KLSAgICBlbmRwd2VudCgpOworICAgICAgICBzdHJ1Y3QgcGFzc3dkICppbmZvOworCisgICAgICAgIGluZm8gPSBnZXRwd25hbShjcHRyKTsKKyAgICAgICAgaWYgKGluZm8pCisgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9VU0VSSUQsIGluZm8tPnB3X3VpZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIlVzZXIgbm90IGZvdW5kIGluIHBhc3N3ZCBkYXRhYmFzZSIpOworICAgICAgICBlbmRwd2VudCgpOwogI2VuZGlmCisgICAgfQogfQogCiB2b2lkCiBwYXJzZV9jb25maWdfYWdlbnRncm91cChjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKIHsKLSNpZiBkZWZpbmVkKEhBVkVfR0VUR1JOQU0pICYmIGRlZmluZWQoSEFWRV9HUlBfSCkKLSAgICBzdHJ1Y3QgZ3JvdXAgICAqaW5mbzsKLSNlbmRpZgotCiAgICAgaWYgKGNwdHJbMF0gPT0gJyMnKSB7CiAgICAgICAgIGNoYXIgICAgICAgICAgICplY3A7CiAgICAgICAgIGludCAgICAgICAgICAgICBnaWQgPSBzdHJ0b3VsKGNwdHIgKyAxLCAmZWNwLCAxMCk7CisKICAgICAgICAgaWYgKCplY3AgIT0gMCkgewogICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiQmFkIG51bWJlciIpOwogCX0gZWxzZSB7CiAgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCiAJCQkgICAgICAgTkVUU05NUF9EU19BR0VOVF9HUk9VUElELCBnaWQpOwogCX0KLSAgICB9CiAjaWYgZGVmaW5lZChIQVZFX0dFVEdSTkFNKSAmJiBkZWZpbmVkKEhBVkVfR1JQX0gpCi0gICAgZWxzZSBpZiAoKGluZm8gPSBnZXRncm5hbShjcHRyKSkgIT0gTlVMTCkgewotICAgICAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCi0JCQkgICBORVRTTk1QX0RTX0FHRU5UX0dST1VQSUQsIGluZm8tPmdyX2dpZCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY29uZmlnX3BlcnJvcigiR3JvdXAgbm90IGZvdW5kIGluIGdyb3VwIGRhdGFiYXNlIik7Ci0gICAgfQotICAgIGVuZHB3ZW50KCk7CisgICAgICAgIHN0cnVjdCBncm91cCAgICppbmZvOworCisgICAgICAgIGluZm8gPSBnZXRncm5hbShjcHRyKTsKKyAgICAgICAgaWYgKGluZm8pCisgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9HUk9VUElELCBpbmZvLT5ncl9naWQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25maWdfcGVycm9yKCJHcm91cCBub3QgZm91bmQgaW4gZ3JvdXAgZGF0YWJhc2UiKTsKKyAgICAgICAgZW5kZ3JlbnQoKTsKICNlbmRpZgorICAgIH0KIH0KICNlbmRpZgogCkBAIC01NTMsNiArNTU1LDc0IEBACiAgIH0KIH0KIAorc3RhdGljIHZvaWQKK3NubXB0cmFwZF9tYWluX2xvb3Aodm9pZCkKK3sKKyAgICBpbnQgICAgICAgICAgICAgY291bnQsIG51bWZkcywgYmxvY2s7CisgICAgZmRfc2V0ICAgICAgICAgIHJlYWRmZHMsd3JpdGVmZHMsZXhjZXB0ZmRzOworICAgIHN0cnVjdCB0aW1ldmFsICB0aW1lb3V0LCAqdHZwOworCisgICAgd2hpbGUgKG5ldHNubXBfcnVubmluZykgeworICAgICAgICBpZiAocmVjb25maWcpIHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIElmIHdlIGFyZSBsb2dnaW5nIHRvIGEgZmlsZSwgcmVjZWlwdCBvZiBTSUdIVVAgYWxzbworICAgICAgICAgICAgICAgICAqIGluZGljYXRlcyB0aGF0IHRoZSBsb2cgZmlsZSBzaG91bGQgYmUgY2xvc2VkIGFuZAorICAgICAgICAgICAgICAgICAqIHJlLW9wZW5lZC4gIFRoaXMgaXMgdXNlZnVsIGZvciB1c2VycyB0aGF0IHdhbnQgdG8KKyAgICAgICAgICAgICAgICAgKiByb3RhdGUgbG9ncyBpbiBhIG1vcmUgcHJlZGljdGFibGUgbWFubmVyLgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIG5ldHNubXBfbG9nZ2luZ19yZXN0YXJ0KCk7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0lORk8sICJORVQtU05NUCB2ZXJzaW9uICVzIHJlc3RhcnRlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2dldF92ZXJzaW9uKCkpOworICAgICAgICAgICAgdHJhcGRfdXBkYXRlX2NvbmZpZygpOworICAgICAgICAgICAgaWYgKHRyYXAxX2ZtdF9zdHJfcmVtZW1iZXIpIHsKKyAgICAgICAgICAgICAgICBwYXJzZV9mb3JtYXQoIE5VTEwsIHRyYXAxX2ZtdF9zdHJfcmVtZW1iZXIgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlY29uZmlnID0gMDsKKyAgICAgICAgfQorICAgICAgICBudW1mZHMgPSAwOworICAgICAgICBGRF9aRVJPKCZyZWFkZmRzKTsKKyAgICAgICAgRkRfWkVSTygmd3JpdGVmZHMpOworICAgICAgICBGRF9aRVJPKCZleGNlcHRmZHMpOworICAgICAgICBibG9jayA9IDA7CisgICAgICAgIHR2cCA9ICZ0aW1lb3V0OworICAgICAgICB0aW1lcmNsZWFyKHR2cCk7CisgICAgICAgIHR2cC0+dHZfc2VjID0gNTsKKyAgICAgICAgc25tcF9zZWxlY3RfaW5mbygmbnVtZmRzLCAmcmVhZGZkcywgdHZwLCAmYmxvY2spOworICAgICAgICBpZiAoYmxvY2sgPT0gMSkKKyAgICAgICAgICAgIHR2cCA9IE5VTEw7ICAgICAgICAgLyogYmxvY2sgd2l0aG91dCB0aW1lb3V0ICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRkRfRVZFTlRfTUFOQUdFUgorICAgICAgICBuZXRzbm1wX2V4dGVybmFsX2V2ZW50X2luZm8oJm51bWZkcywgJnJlYWRmZHMsICZ3cml0ZWZkcywgJmV4Y2VwdGZkcyk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GRF9FVkVOVF9NQU5BR0VSICovCisgICAgICAgIGNvdW50ID0gc2VsZWN0KG51bWZkcywgJnJlYWRmZHMsICZ3cml0ZWZkcywgJmV4Y2VwdGZkcywgdHZwKTsKKyAgICAgICAgaWYgKGNvdW50ID4gMCkgeworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZEX0VWRU5UX01BTkFHRVIKKyAgICAgICAgICAgIG5ldHNubXBfZGlzcGF0Y2hfZXh0ZXJuYWxfZXZlbnRzKCZjb3VudCwgJnJlYWRmZHMsICZ3cml0ZWZkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZleGNlcHRmZHMpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRkRfRVZFTlRfTUFOQUdFUiAqLworICAgICAgICAgICAgLyogSWYgdGhlcmUgYXJlIGFueSBtb3JlIGV2ZW50cyBhZnRlciBleHRlcm5hbCBldmVudHMsIHRoZW4KKyAgICAgICAgICAgICAqIHRyeSBTTk1QIGV2ZW50cy4gKi8KKyAgICAgICAgICAgIGlmIChjb3VudCA+IDApIHsKKyAgICAgICAgICAgICAgICBzbm1wX3JlYWQoJnJlYWRmZHMpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3dpdGNoIChjb3VudCkgeworICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgIHNubXBfdGltZW91dCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAtMToKKyAgICAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUlOVFIpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIHNubXBfbG9nX3BlcnJvcigic2VsZWN0Iik7CisgICAgICAgICAgICAgICAgbmV0c25tcF9ydW5uaW5nID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJzZWxlY3QgcmV0dXJuZWQgJWRcbiIsIGNvdW50KTsKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3J1bm5pbmcgPSAwOworICAgICAgICAgICAgfQorCX0KKwlydW5fYWxhcm1zKCk7CisgICAgfQorfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi1vLSoqKioqKgogICogbWFpbiAtIE5vbiBXaW5kb3dzCkBAIC01NzcsMTQgKzY0NywxMSBAQAogbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogI2VuZGlmCiB7Ci0gICAgY2hhciAgICAgICAgICAgIG9wdGlvbnNbMTI4XSA9ICJhQWM6Q2REOjplZkY6ZzpoSEk6TDptOk06bm86TzpQcXNTOnR1OnZ4Oi06IjsKKyAgICBjaGFyICAgICAgICAgICAgb3B0aW9uc1sxMjhdID0gImFBYzpDZEQ6OmVmRjpnOmhISTpMOm06TTpubzpPOlB0dTp2eDpYLToiOwogICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc19saXN0ID0gTlVMTCwgKnNzID0gTlVMTDsKICAgICBuZXRzbm1wX3RyYW5zcG9ydCAqdHJhbnNwb3J0ID0gTlVMTDsKICAgICBpbnQgICAgICAgICAgICAgYXJnLCBpID0gMDsKICAgICBpbnQgICAgICAgICAgICAgdWlkID0gMCwgZ2lkID0gMDsKLSAgICBpbnQgICAgICAgICAgICAgY291bnQsIG51bWZkcywgYmxvY2s7Ci0gICAgZmRfc2V0ICAgICAgICAgIHJlYWRmZHMsd3JpdGVmZHMsZXhjZXB0ZmRzOwotICAgIHN0cnVjdCB0aW1ldmFsICB0aW1lb3V0LCAqdHZwOwogICAgIGNoYXIgICAgICAgICAgICpjcCwgKmxpc3Rlbl9wb3J0cyA9IE5VTEw7CiAjaWYgZGVmaW5lZChVU0lOR19BR0VOVFhfU1VCQUdFTlRfTU9EVUxFKSAmJiAhZGVmaW5lZChORVRTTk1QX1NOTVBUUkFQRF9ESVNBQkxFX0FHRU5UWCkKICAgICBpbnQgICAgICAgICAgICAgYWdlbnR4X3N1YmFnZW50ID0gMTsKQEAgLTYyMyw3ICs2OTAsOSBAQAogI2lmZGVmIE5FVFNOTVBfVVNFX01ZU1FMCiAgICAgc25tcHRyYXBkX3JlZ2lzdGVyX3NxbF9jb25maWdzKCApOwogI2VuZGlmCisjaWZkZWYgTkVUU05NUF9TRUNNT0RfVVNNCiAgICAgaW5pdF91c21fY29uZiggInNubXB0cmFwZCIgKTsKKyNlbmRpZiAvKiBORVRTTk1QX1NFQ01PRF9VU00gKi8KICAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcHRyYXBkIiwgInNubXBUcmFwZEFkZHIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX3RyYXBkX2FkZHJlc3MsIGZyZWVfdHJhcGRfYWRkcmVzcywgInN0cmluZyIpOwogCkBAIC02NTYsMTEgKzcyNSwxMyBAQAogICAgIHN0cmNhdChvcHRpb25zLCAicDoiKTsKICNlbmRpZgogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cKICNpZmRlZiBXSU4zMgogICAgIHNubXBfbG9nX3N5c2xvZ25hbWUoYXBwX25hbWVfbG9uZyk7CiAjZWxzZQogICAgIHNubXBfbG9nX3N5c2xvZ25hbWUoYXBwX25hbWUpOwogI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRyAqLwogCiAgICAgLyoKICAgICAgKiBOb3cgcHJvY2VzcyBvcHRpb25zIG5vcm1hbGx5LiAgCkBAIC03MDYsNyArNzc3LDggQEAKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ2QnOgotICAgICAgICAgICAgc25tcF9zZXRfZHVtcF9wYWNrZXQoMSk7CisgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0RVTVBfUEFDS0VULCAxKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ0QnOgpAQCAtODYxLDE5ICs5MzMsMTggQEAKICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgICAqZWNwOwogCiAgICAgICAgICAgICAgICAgdWlkID0gc3RydG91bChvcHRhcmcsICZlY3AsIDEwKTsKKyNpZiBIQVZFX0dFVFBXTkFNICYmIEhBVkVfUFdEX0gKICAgICAgICAgICAgICAgICBpZiAoKmVjcCkgewotI2lmIEhBVkVfR0VUUFdOQU0gJiYgSEFWRV9QV0RfSAogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGFzc3dkICAqaW5mbzsKKwogICAgICAgICAgICAgICAgICAgICBpbmZvID0gZ2V0cHduYW0ob3B0YXJnKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGluZm8pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpZCA9IGluZm8tPnB3X3VpZDsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdWlkID0gaW5mbyA/IGluZm8tPnB3X3VpZCA6IC0xOworICAgICAgICAgICAgICAgICAgICBlbmRwd2VudCgpOworICAgICAgICAgICAgICAgIH0KICNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJCYWQgdXNlciBpZDogJXNcbiIsIG9wdGFyZyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGl0KDEpOwotI2lmIEhBVkVfR0VUUFdOQU0gJiYgSEFWRV9QV0RfSAotICAgICAgICAgICAgICAgICAgICB9Ci0jZW5kaWYKKyAgICAgICAgICAgICAgICBpZiAodWlkIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkJhZCB1c2VyIGlkOiAlc1xuIiwgb3B0YXJnKTsKKyAgICAgICAgICAgICAgICAgICAgZXhpdCgxKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAogCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfVVNFUklELCB1aWQpOwpAQCAtODg5LDYgKzk2MCw3IEBACiAgICAgICAgICAgICBleGl0KDApOwogICAgICAgICAgICAgYnJlYWs7CiAKKyNpZiBkZWZpbmVkKFVTSU5HX0FHRU5UWF9TVUJBR0VOVF9NT0RVTEUpICYmICFkZWZpbmVkKE5FVFNOTVBfU05NUFRSQVBEX0RJU0FCTEVfQUdFTlRYKQogICAgICAgICBjYXNlICd4JzoKICAgICAgICAgICAgIGlmIChvcHRhcmcgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X3N0cmluZyhORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELApAQCAtODk5LDYgKzk3MSwxMSBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgIGNhc2UgJ1gnOgorICAgICAgICAgICAgYWdlbnR4X3N1YmFnZW50ID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBvcHRpb246IC0lY1xuIiwgYXJnKTsKICAgICAgICAgICAgIHVzYWdlKCk7CkBAIC05NDAsMTAgKzEwMTcsMTkgQEAKICAgICAgKiBEb24ndCB0cnkgdGhpcyBhdCBob21lLCBjaGlsZHJlbiEKICAgICAgKi8KICAgICBpZiAoMCA9PSBzbm1wX2dldF9kb19sb2dnaW5nKCkpIHsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogICAgICAgICB0cmFwaCA9IG5ldHNubXBfYWRkX2dsb2JhbF90cmFwaGFuZGxlcihORVRTTk1QVFJBUERfUFJFX0hBTkRMRVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2xvZ19oYW5kbGVyKTsKICAgICAgICAgdHJhcGgtPmF1dGh0eXBlcyA9IFRSQVBfQVVUSF9MT0c7CiAgICAgICAgIHNubXBfZW5hYmxlX3N5c2xvZygpOworI2Vsc2UgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRyAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1RESU8KKyAgICAgICAgdHJhcGggPSBuZXRzbm1wX2FkZF9nbG9iYWxfdHJhcGhhbmRsZXIoTkVUU05NUFRSQVBEX1BSRV9IQU5ETEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludF9oYW5kbGVyKTsKKyAgICAgICAgdHJhcGgtPmF1dGh0eXBlcyA9IFRSQVBfQVVUSF9MT0c7CisgICAgICAgIHNubXBfZW5hYmxlX3N0ZGVycigpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTyAqLworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cgKi8KICAgICB9IGVsc2UgewogICAgICAgICB0cmFwaCA9IG5ldHNubXBfYWRkX2dsb2JhbF90cmFwaGFuZGxlcihORVRTTk1QVFJBUERfUFJFX0hBTkRMRVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50X2hhbmRsZXIpOwpAQCAtOTgwLDYgKzEwNjYsOSBAQAogICAgIGluaXRfYWdlbnQoInNubXB0cmFwZCIpOwogCiAjaWYgZGVmaW5lZChVU0lOR19BR0VOVFhfU1VCQUdFTlRfTU9EVUxFKSAmJiAhZGVmaW5lZChORVRTTk1QX1NOTVBUUkFQRF9ESVNBQkxFX0FHRU5UWCkKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcKKyAgICBuZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyZWdpc3Rlcl9zbm1wRW5naW5lX3NjYWxhcnNfY29udGV4dCkKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcgKi8KICAgICAvKgogICAgICAqIGluaXRpYWxpemUgbG9jYWwgbW9kdWxlcyAKICAgICAgKi8KQEAgLTEwMjAsNiArMTEwOSw5IEBACiAgICAgICAgIGV4dGVybiB2b2lkIGluaXRfcmVnaXN0ZXJfbnNWYWNtX2NvbnRleHQoY29uc3QgY2hhciAqKTsKICNlbmRpZgogI2lmZGVmIFVTSU5HX1NOTVBWM19VU01VU0VSX01PRFVMRQorI2lmZGVmIE5FVFNOTVBfRkVBVFVSRV9DSEVDS0lORworICAgICAgICBuZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpbml0X3JlZ2lzdGVyX3VzbVVzZXJfY29udGV4dCkKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcgKi8KICAgICAgICAgZXh0ZXJuIHZvaWQgaW5pdF9yZWdpc3Rlcl91c21Vc2VyX2NvbnRleHQoY29uc3QgY2hhciAqKTsKICAgICAgICAgLyogcmVnaXN0ZXIgb3Vyc2VsdmVzIGFzIGhhdmluZyBhIFVTTSB1c2VyIGRhdGFiYXNlICovCiAgICAgICAgIGluaXRfcmVnaXN0ZXJfdXNtVXNlcl9jb250ZXh0KCJzbm1wdHJhcGQiKTsKQEAgLTEwNzMsMTEgKzExNjUsMTMgQEAKICAgICAgKiBpZiBubyBsb2dnaW5nIG9wdGlvbnMgb24gY29tbWFuZCBsaW5lIG9yIGluIGNvbmYgZmlsZXMsIHVzZSBzeXNsb2cKICAgICAgKi8KICAgICBpZiAoMCA9PSBzbm1wX2dldF9kb19sb2dnaW5nKCkpIHsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogI2lmZGVmIFdJTjMyCiAgICAgICAgIHNubXBfZW5hYmxlX3N5c2xvZ19pZGVudChhcHBfbmFtZV9sb25nLCBGYWNpbGl0eSk7CiAjZWxzZQogICAgICAgICBzbm1wX2VuYWJsZV9zeXNsb2dfaWRlbnQoYXBwX25hbWUsIEZhY2lsaXR5KTsKICNlbmRpZiAgICAgICAgCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRyAqLwogICAgIH0KIAogICAgIGlmIChsaXN0ZW5fcG9ydHMpCkBAIC0xMTA3LDcgKzEyMDEsNiBAQAogICAgICAgICAgICAgICAgICAqIHN1Y2Nlc3NmdWxseSBzbyB3aGF0IGNvdWxkIGhhdmUgZ29uZSB3cm9uZz8gIAogICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgIHNubXB0cmFwZF9jbG9zZV9zZXNzaW9ucyhzZXNzX2xpc3QpOwotICAgICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodHJhbnNwb3J0KTsKICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGRuJ3Qgb3BlbiBzbm1wIC0gJXMiLCBzdHJlcnJvcihlcnJubykpOwogICAgICAgICAgICAgICAgIFNPQ0tfQ0xFQU5VUDsKICAgICAgICAgICAgICAgICBleGl0KDEpOwpAQCAtMTIyOCw2MiArMTMyMSw4IEBACiAjaWZkZWYgV0lOMzJTRVJWSUNFCiAgICAgdHJhcGRfc3RhdHVzID0gU05NUFRSQVBEX1JVTk5JTkc7CiAjZW5kaWYKLSAgICB3aGlsZSAobmV0c25tcF9ydW5uaW5nKSB7Ci0gICAgICAgIGlmIChyZWNvbmZpZykgewotICAgICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgICogSWYgd2UgYXJlIGxvZ2dpbmcgdG8gYSBmaWxlLCByZWNlaXB0IG9mIFNJR0hVUCBhbHNvCi0gICAgICAgICAgICAgICAgICogaW5kaWNhdGVzIHRoZSB0aGUgbG9nIGZpbGUgc2hvdWxkIGJlIGNsb3NlZCBhbmQKLSAgICAgICAgICAgICAgICAgKiByZS1vcGVuZWQuICBUaGlzIGlzIHVzZWZ1bCBmb3IgdXNlcnMgdGhhdCB3YW50IHRvCi0gICAgICAgICAgICAgICAgICogcm90YXRlIGxvZ3MgaW4gYSBtb3JlIHByZWRpY3RhYmxlIG1hbm5lci4KLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBuZXRzbm1wX2xvZ2dpbmdfcmVzdGFydCgpOwotICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19JTkZPLCAiTkVULVNOTVAgdmVyc2lvbiAlcyByZXN0YXJ0ZWRcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9nZXRfdmVyc2lvbigpKTsKLSAgICAgICAgICAgIHRyYXBkX3VwZGF0ZV9jb25maWcoKTsKLSAgICAgICAgICAgIGlmICh0cmFwMV9mbXRfc3RyX3JlbWVtYmVyKSB7Ci0gICAgICAgICAgICAgICAgcGFyc2VfZm9ybWF0KCBOVUxMLCB0cmFwMV9mbXRfc3RyX3JlbWVtYmVyICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZWNvbmZpZyA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgbnVtZmRzID0gMDsKLSAgICAgICAgRkRfWkVSTygmcmVhZGZkcyk7Ci0gICAgICAgIEZEX1pFUk8oJndyaXRlZmRzKTsKLSAgICAgICAgRkRfWkVSTygmZXhjZXB0ZmRzKTsKLSAgICAgICAgYmxvY2sgPSAwOwotICAgICAgICB0dnAgPSAmdGltZW91dDsKLSAgICAgICAgdGltZXJjbGVhcih0dnApOwotICAgICAgICB0dnAtPnR2X3NlYyA9IDU7Ci0gICAgICAgIHNubXBfc2VsZWN0X2luZm8oJm51bWZkcywgJnJlYWRmZHMsIHR2cCwgJmJsb2NrKTsKLSAgICAgICAgaWYgKGJsb2NrID09IDEpCi0gICAgICAgICAgICB0dnAgPSBOVUxMOyAgICAgICAgIC8qIGJsb2NrIHdpdGhvdXQgdGltZW91dCAqLwotICAgICAgICBuZXRzbm1wX2V4dGVybmFsX2V2ZW50X2luZm8oJm51bWZkcywgJnJlYWRmZHMsICZ3cml0ZWZkcywgJmV4Y2VwdGZkcyk7Ci0gICAgICAgIGNvdW50ID0gc2VsZWN0KG51bWZkcywgJnJlYWRmZHMsICZ3cml0ZWZkcywgJmV4Y2VwdGZkcywgdHZwKTsKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZOb3csIE5VTEwpOwotICAgICAgICBpZiAoY291bnQgPiAwKSB7Ci0gICAgICAgICAgICBuZXRzbm1wX2Rpc3BhdGNoX2V4dGVybmFsX2V2ZW50cygmY291bnQsICZyZWFkZmRzLCAmd3JpdGVmZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXhjZXB0ZmRzKTsKLSAgICAgICAgICAgIC8qIElmIHRoZXJlIGFyZSBhbnkgbW9yZSBldmVudHMgYWZ0ZXIgZXh0ZXJuYWwgZXZlbnRzLCB0aGVuCi0gICAgICAgICAgICAgKiB0cnkgU05NUCBldmVudHMuICovCi0gICAgICAgICAgICBpZiAoY291bnQgPiAwKSB7Ci0gICAgICAgICAgICAgICAgc25tcF9yZWFkKCZyZWFkZmRzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzd2l0Y2ggKGNvdW50KSB7Ci0gICAgICAgICAgICBjYXNlIDA6Ci0gICAgICAgICAgICAgICAgc25tcF90aW1lb3V0KCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIC0xOgotICAgICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgc25tcF9sb2dfcGVycm9yKCJzZWxlY3QiKTsKLSAgICAgICAgICAgICAgICBuZXRzbm1wX3J1bm5pbmcgPSAwOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInNlbGVjdCByZXR1cm5lZCAlZFxuIiwgY291bnQpOwotICAgICAgICAgICAgICAgIG5ldHNubXBfcnVubmluZyA9IDA7Ci0gICAgICAgICAgICB9Ci0JcnVuX2FsYXJtcygpOwotICAgIH0KKworICAgIHNubXB0cmFwZF9tYWluX2xvb3AoKTsKIAogICAgIGlmIChzbm1wX2dldF9kb19sb2dnaW5nKCkpIHsKICAgICAgICAgc3RydWN0IHRtICAgICAgKnRtOwpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYyBiL2FwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmMKaW5kZXggM2VlM2FhNy4uNWE4ZTNjOCAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYworKysgYi9hcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpZiBIQVZFX1NURExJQl9ICiAjaW5jbHVkZSA8c3RkbGliLmg+CkBAIC0zNyw2ICszOCw4IEBACiAjaW5jbHVkZSAic25tcHRyYXBkX2xvZy5oIgogI2luY2x1ZGUgIm5vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuaCIKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGFkZF9kZWZhdWx0X3RyYXBoYW5kbGVyLCBzbm1wdHJhcGQpCisKIGNoYXIgKnN5c2xvZ19mb3JtYXQxID0gTlVMTDsKIGNoYXIgKnN5c2xvZ19mb3JtYXQyID0gTlVMTDsKIGNoYXIgKnByaW50X2Zvcm1hdDEgID0gTlVMTDsKQEAgLTQwMCw2ICs0MDMsNyBAQAogICAgIHJldHVybiB0cmFwaDsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0FERF9ERUZBVUxUX1RSQVBIQU5ETEVSCiAvKgogICogUmVnaXN0ZXIgYSBuZXcgImRlZmF1bHQiIHRyYXBoYW5kbGVyLCB0byBiZSBhcHBsaWVkIHRvIGFsbAogICogdHJhcHMgd2l0aCBubyBzcGVjaWZpYyB0cmFwIGhhbmRsZXJzIG9mIHRoZWlyIG93bi4KQEAgLTQwOSw2ICs0MTMsNyBAQAogICAgIHJldHVybiBuZXRzbm1wX2FkZF9nbG9iYWxfdHJhcGhhbmRsZXIoTkVUU05NUFRSQVBEX0RFRkFVTFRfSEFORExFUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQUREX0RFRkFVTFRfVFJBUEhBTkRMRVIgKi8KIAogCiAvKgpAQCAtODAyLDggKzgwNywxMCBAQAogCSAgICB2Ml9wZHUgPSBjb252ZXJ0X3YxcGR1X3RvX3YyKHBkdSk7CiAJZWxzZQogCSAgICB2Ml9wZHUgPSBwZHU7Ci0gICAgICAgIG9sZHF1aWNrID0gc25tcF9nZXRfcXVpY2tfcHJpbnQoKTsKLSAgICAgICAgc25tcF9zZXRfcXVpY2tfcHJpbnQoMSk7CisgICAgICAgIG9sZHF1aWNrID0gbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfUVVJQ0tfUFJJTlQpOworICAgICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfUVVJQ0tfUFJJTlQsIDEpOwogCiAgICAgICAgIC8qCiAJICogRm9ybWF0IHRoZSB0cmFwIGFuZCBwYXNzIHRoaXMgc3RyaW5nIHRvIHRoZSBleHRlcm5hbCBjb21tYW5kCkBAIC04NDIsNyArODQ5LDggQEAKICAgICAgICAgICogIGFuZCBwYXNzIHRoaXMgZm9ybWF0dGVkIHN0cmluZyB0byB0aGUgY29tbWFuZCBzcGVjaWZpZWQKICAgICAgICAgICovCiAgICAgICAgIHJ1bl9zaGVsbF9jb21tYW5kKGhhbmRsZXItPnRva2VuLCAoY2hhciopcmJ1ZiwgTlVMTCwgTlVMTCk7ICAgLyogTm90IGludGVyZXN0ZWQgaW4gb3V0cHV0ICovCi0gICAgICAgIHNubXBfc2V0X3F1aWNrX3ByaW50KG9sZHF1aWNrKTsKKyAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1FVSUNLX1BSSU5ULCBvbGRxdWljayk7CiAgICAgICAgIGlmIChwZHUtPmNvbW1hbmQgPT0gU05NUF9NU0dfVFJBUCkKICAgICAgICAgICAgIHNubXBfZnJlZV9wZHUodjJfcGR1KTsKICAgICAgICAgZnJlZShyYnVmKTsKZGlmZiAtLWdpdCBhL2FwcHMvc25tcHRyYXBkX2xvZy5jIGIvYXBwcy9zbm1wdHJhcGRfbG9nLmMKaW5kZXggOWJmYzBiMi4uNzc0Zjc5NyAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wdHJhcGRfbG9nLmMKKysrIGIvYXBwcy9zbm1wdHJhcGRfbG9nLmMKQEAgLTY0OCw3ICs2NDgsNyBAQAogICAgICAgICAgKi8KICAgICAgICAgaWYgKCFuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BUFBfTlVNRVJJQ19JUCkpIHsKLSAgICAgICAgICAgIGhvc3QgPSBnZXRob3N0YnlhZGRyKChjaGFyICopIHBkdS0+YWdlbnRfYWRkciwgNCwgQUZfSU5FVCk7CisgICAgICAgICAgICBob3N0ID0gbmV0c25tcF9nZXRob3N0YnlhZGRyKChjaGFyICopIHBkdS0+YWdlbnRfYWRkciwgNCwgQUZfSU5FVCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGhvc3QgIT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKCFzbm1wX3N0cmNhdCgmdGVtcF9idWYsICZ0ZW1wX2J1Zl9sZW4sICZ0ZW1wX291dF9sZW4sIDEsCkBAIC0xMzY4LDcgKzEzNjgsNyBAQAogICAgICAqLwogICAgIGlmICghbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BUFBfTlVNRVJJQ19JUCkpIHsKLSAgICAgICAgaG9zdCA9IGdldGhvc3RieWFkZHIoKGNoYXIgKikgcGR1LT5hZ2VudF9hZGRyLCA0LCBBRl9JTkVUKTsKKyAgICAgICAgaG9zdCA9IG5ldHNubXBfZ2V0aG9zdGJ5YWRkcigoY2hhciAqKSBwZHUtPmFnZW50X2FkZHIsIDQsIEFGX0lORVQpOwogICAgIH0KICAgICBpZiAoaG9zdCAhPSAoc3RydWN0IGhvc3RlbnQgKikgTlVMTCkgewogICAgICAgICBpZiAoIXNubXBfc3RyY2F0CmRpZmYgLS1naXQgYS9hcHBzL3NubXB0cmFwZF9zcWwuYyBiL2FwcHMvc25tcHRyYXBkX3NxbC5jCmluZGV4IGNlMjU0MjMuLjY3MWU1NDIgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcHRyYXBkX3NxbC5jCisrKyBiL2FwcHMvc25tcHRyYXBkX3NxbC5jCkBAIC0xMSw2ICsxMSw3IEBACiAgKgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2lmZGVmIE5FVFNOTVBfVVNFX01ZU1FMCiAKQEAgLTU0LDYgKzU1LDggQEAKICNpbmNsdWRlIDxteXNxbC5oPgogI2luY2x1ZGUgPGVycm1zZy5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjb250YWluZXJfZmlmbykKKwogLyoKICAqIGRlZmluZSBhIHN0cnVjdHVyZSB0byBob2xkIGFsbCB0aGUgZmlsZSBnbG9iYWxzCiAgKi8KZGlmZiAtLWdpdCBhL2FwcHMvc25tcHdhbGsuYyBiL2FwcHMvc25tcHdhbGsuYwppbmRleCBkZmFkN2UwLi42NTlkN2RlIDEwMDY0NAotLS0gYS9hcHBzL3NubXB3YWxrLmMKKysrIGIvYXBwcy9zbm1wd2Fsay5jCkBAIC02OSw2ICs2OSw3IEBACiAjZGVmaW5lIE5FVFNOTVBfRFNfV0FMS19ET05UX0NIRUNLX0xFWElDT0dSQVBISUMJMwogI2RlZmluZSBORVRTTk1QX0RTX1dBTEtfVElNRV9SRVNVTFRTICAgICAJICAgICAgICA0CiAjZGVmaW5lIE5FVFNOTVBfRFNfV0FMS19ET05UX0dFVF9SRVFVRVNURUQJICAgICAgICA1CisjZGVmaW5lIE5FVFNOTVBfRFNfV0FMS19USU1FX1JFU1VMVFNfU0lOR0xFCSAgICAgICAgNgogCiBvaWQgICAgICAgICAgICAgb2JqaWRfbWliW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEgfTsKIGludCAgICAgICAgICAgICBudW1wcmludGVkID0gMDsKQEAgLTkwLDcgKzkxLDkgQEAKICAgICBmcHJpbnRmKHN0ZGVyciwKICAgICAgICAgICAgICJcdFx0XHQgIGM6ICBkbyBub3QgY2hlY2sgcmV0dXJuZWQgT0lEcyBhcmUgaW5jcmVhc2luZ1xuIik7CiAgICAgZnByaW50ZihzdGRlcnIsCi0gICAgICAgICAgICAiXHRcdFx0ICB0OiAgRGlzcGxheSB3YWxsLWNsb2NrIHRpbWUgdG8gY29tcGxldGUgdGhlIHJlcXVlc3RcbiIpOworICAgICAgICAgICAgIlx0XHRcdCAgdDogIERpc3BsYXkgd2FsbC1jbG9jayB0aW1lIHRvIGNvbXBsZXRlIHRoZSB3YWxrXG4iKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwKKyAgICAgICAgICAgICJcdFx0XHQgIFQ6ICBEaXNwbGF5IHdhbGwtY2xvY2sgdGltZSB0byBjb21wbGV0ZSBlYWNoIHJlcXVlc3RcbiIpOwogICAgIGZwcmludGYoc3RkZXJyLCAiXHRcdFx0ICBFIHtPSUR9OiAgRW5kIHRoZSB3YWxrIGF0IHRoZSBzcGVjaWZpZWQgT0lEXG4iKTsKIH0KIApAQCAtMTUxLDYgKzE1NCwxMSBAQAogICAgICAgICAgICAgY2FzZSAnRSc6CiAgICAgICAgICAgICAgICAgZW5kX25hbWUgPSBhcmd2W29wdGluZCsrXTsKICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAnVCc6CisgICAgICAgICAgICAgICAgbmV0c25tcF9kc190b2dnbGVfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19XQUxLX1RJTUVfUkVTVUxUU19TSU5HTEUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVua25vd24gZmxhZyBwYXNzZWQgdG8gLUM6ICVjXG4iLApAQCAtMTgwLDcgKzE4OCw3IEBACiAgICAgaW50ICAgICAgICAgICAgIHN0YXR1cyA9IFNUQVRfRVJST1I7CiAgICAgaW50ICAgICAgICAgICAgIGNoZWNrOwogICAgIGludCAgICAgICAgICAgICBleGl0dmFsID0gMDsKLSAgICBzdHJ1Y3QgdGltZXZhbCAgdHYxLCB0djI7CisgICAgc3RydWN0IHRpbWV2YWwgIHR2MSwgdHYyLCB0dl9hLCB0dl9iOwogCiAgICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX0JPT0xFQU4sICJzbm1wd2FsayIsICJpbmNsdWRlUmVxdWVzdGVkIiwKIAkJCSAgICAgICBORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKQEAgLTIwMCw3ICsyMDgsMTEgQEAKIAogICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9CT09MRUFOLCAic25tcHdhbGsiLCAidGltZVJlc3VsdHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCi0JCQkgICAgICAgTkVUU05NUF9EU19XQUxLX1RJTUVfUkVTVUxUUyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19XQUxLX1RJTUVfUkVTVUxUUyk7CisKKyAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fQk9PTEVBTiwgInNubXB3YWxrIiwgInRpbWVSZXN1bHRzU2luZ2xlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfV0FMS19USU1FX1JFU1VMVFNfU0lOR0xFKTsKIAogICAgIC8qCiAgICAgICogZ2V0IHRoZSBjb21tb24gY29tbWFuZCBsaW5lIGFyZ3VtZW50cyAKQEAgLTI4Niw3ICsyOTgsNyBAQAogCiAgICAgaWYgKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX1dBTEtfVElNRV9SRVNVTFRTKSkKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0djEsIE5VTEwpOworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnR2MSk7CiAgICAgd2hpbGUgKHJ1bm5pbmcpIHsKICAgICAgICAgLyoKICAgICAgICAgICogY3JlYXRlIFBEVSBmb3IgR0VUTkVYVCByZXF1ZXN0IGFuZCBhZGQgb2JqZWN0IG5hbWUgdG8gcmVxdWVzdCAKQEAgLTI5Nyw4ICszMDksMTIgQEAKICAgICAgICAgLyoKICAgICAgICAgICogZG8gdGhlIHJlcXVlc3QgCiAgICAgICAgICAqLworICAgICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCBORVRTTk1QX0RTX1dBTEtfVElNRV9SRVNVTFRTX1NJTkdMRSkpCisgICAgICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnR2X2EpOwogICAgICAgICBzdGF0dXMgPSBzbm1wX3N5bmNoX3Jlc3BvbnNlKHNzLCBwZHUsICZyZXNwb25zZSk7CiAgICAgICAgIGlmIChzdGF0dXMgPT0gU1RBVF9TVUNDRVNTKSB7CisgICAgICAgICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCBORVRTTk1QX0RTX1dBTEtfVElNRV9SRVNVTFRTX1NJTkdMRSkpCisgICAgICAgICAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZ0dl9iKTsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS0+ZXJyc3RhdCA9PSBTTk1QX0VSUl9OT0VSUk9SKSB7CiAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgKiBjaGVjayByZXN1bHRpbmcgdmFyaWFibGVzIApAQCAtMzE0LDYgKzMzMCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCsrOworICAgICAgICAgICAgICAgICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCBORVRTTk1QX0RTX1dBTEtfVElNRV9SRVNVTFRTX1NJTkdMRSkpCisgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIiVmIHM6ICIsICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSkgKHR2X2IudHZfdXNlYyAtIHR2X2EudHZfdXNlYykvMTAwMDAwMCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpICh0dl9iLnR2X3NlYyAtIHR2X2EudHZfc2VjKSk7CiAgICAgICAgICAgICAgICAgICAgIHByaW50X3ZhcmlhYmxlKHZhcnMtPm5hbWUsIHZhcnMtPm5hbWVfbGVuZ3RoLCB2YXJzKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCh2YXJzLT50eXBlICE9IFNOTVBfRU5ET0ZNSUJWSUVXKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgKHZhcnMtPnR5cGUgIT0gU05NUF9OT1NVQ0hPQkpFQ1QpICYmCkBAIC0zODIsNyArNDAyLDcgQEAKICAgICB9CiAgICAgaWYgKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX1dBTEtfVElNRV9SRVNVTFRTKSkKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0djIsIE5VTEwpOworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnR2Mik7CiAKICAgICBpZiAobnVtcHJpbnRlZCA9PSAwICYmIHN0YXR1cyA9PSBTVEFUX1NVQ0NFU1MpIHsKICAgICAgICAgLyoKZGlmZiAtLWdpdCBhL2NvbmZpZy5ndWVzcyBiL2NvbmZpZy5ndWVzcwppbmRleCBjYTJhMDNjLi4yODUyMzc4IDEwMDc1NQotLS0gYS9jb25maWcuZ3Vlc3MKKysrIGIvY29uZmlnLmd1ZXNzCkBAIC0xLDEwICsxLDEwIEBACiAjISAvYmluL3NoCiAjIEF0dGVtcHQgdG8gZ3Vlc3MgYSBjYW5vbmljYWwgc3lzdGVtIG5hbWUuCiAjICAgQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LAotIyAgIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgKKyMgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwCiAjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKLXRpbWVzdGFtcD0nMjAwOC0wMS0wOCcKK3RpbWVzdGFtcD0nMjAxMC0wOC0yMScKIAogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAogIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMjcsMTYgKzI3LDE2IEBACiAjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KIAogCi0jIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBQZXIgQm90aG5lciA8cGVyQGJvdGhuZXIuY29tPi4KLSMgUGxlYXNlIHNlbmQgcGF0Y2hlcyB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4uICBTdWJtaXQgYSBjb250ZXh0Ci0jIGRpZmYgYW5kIGEgcHJvcGVybHkgZm9ybWF0dGVkIENoYW5nZUxvZyBlbnRyeS4KKyMgT3JpZ2luYWxseSB3cml0dGVuIGJ5IFBlciBCb3RobmVyLiAgUGxlYXNlIHNlbmQgcGF0Y2hlcyAoY29udGV4dAorIyBkaWZmIGZvcm1hdCkgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+IGFuZCBpbmNsdWRlIGEgQ2hhbmdlTG9nCisjIGVudHJ5LgogIwogIyBUaGlzIHNjcmlwdCBhdHRlbXB0cyB0byBndWVzcyBhIGNhbm9uaWNhbCBzeXN0ZW0gbmFtZSBzaW1pbGFyIHRvCiAjIGNvbmZpZy5zdWIuICBJZiBpdCBzdWNjZWVkcywgaXQgcHJpbnRzIHRoZSBzeXN0ZW0gbmFtZSBvbiBzdGRvdXQsIGFuZAogIyBleGl0cyB3aXRoIDAuICBPdGhlcndpc2UsIGl0IGV4aXRzIHdpdGggMS4KICMKLSMgVGhlIHBsYW4gaXMgdGhhdCB0aGlzIGNhbiBiZSBjYWxsZWQgYnkgY29uZmlndXJlIHNjcmlwdHMgaWYgeW91Ci0jIGRvbid0IHNwZWNpZnkgYW4gZXhwbGljaXQgYnVpbGQgc3lzdGVtIHR5cGUuCisjIFlvdSBjYW4gZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIHNjcmlwdCBmcm9tOgorIyBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLmd1ZXNzO2hiPUhFQUQKIAogbWU9YGVjaG8gIiQwIiB8IHNlZCAtZSAncywuKi8sLCdgCiAKQEAgLTU2LDggKzU2LDkgQEAKIEdOVSBjb25maWcuZ3Vlc3MgKCR0aW1lc3RhbXApCiAKIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBQZXIgQm90aG5lci4KLUNvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwKLTIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsCisyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUKK1NvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KIHdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiIKQEAgLTkxLDcgKzkyLDcgQEAKICAgZXhpdCAxCiBmaQogCi10cmFwICdleGl0IDEnIDEgMiAxNQordHJhcCAnZXhpdCAxJyBIVVAgSU5UIFRFUk0KIAogIyBDQ19GT1JfQlVJTEQgLS0gY29tcGlsZXIgdXNlZCBieSB0aGlzIHNjcmlwdC4gTm90ZSB0aGF0IHRoZSB1c2Ugb2YgYQogIyBjb21waWxlciB0byBhaWQgaW4gc3lzdGVtIGRldGVjdGlvbiBpcyBkaXNjb3VyYWdlZCBhcyBpdCByZXF1aXJlcwpAQCAtMTA1LDcgKzEwNiw3IEBACiAKIHNldF9jY19mb3JfYnVpbGQ9JwogdHJhcCAiZXhpdGNvZGU9XCQ/OyAocm0gLWYgXCR0bXBmaWxlcyAyPi9kZXYvbnVsbDsgcm1kaXIgXCR0bXAgMj4vZGV2L251bGwpICYmIGV4aXQgXCRleGl0Y29kZSIgMCA7Ci10cmFwICJybSAtZiBcJHRtcGZpbGVzIDI+L2Rldi9udWxsOyBybWRpciBcJHRtcCAyPi9kZXYvbnVsbDsgZXhpdCAxIiAxIDIgMTMgMTUgOwordHJhcCAicm0gLWYgXCR0bXBmaWxlcyAyPi9kZXYvbnVsbDsgcm1kaXIgXCR0bXAgMj4vZGV2L251bGw7IGV4aXQgMSIgSFVQIElOVCBQSVBFIFRFUk0gOwogOiAke1RNUERJUj0vdG1wfSA7CiAgeyB0bXA9YCh1bWFzayAwNzcgJiYgbWt0ZW1wIC1kICIkVE1QRElSL2NnWFhYWFhYIikgMj4vZGV2L251bGxgICYmIHRlc3QgLW4gIiR0bXAiICYmIHRlc3QgLWQgIiR0bXAiIDsgfSB8fAogIHsgdGVzdCAtbiAiJFJBTkRPTSIgJiYgdG1wPSRUTVBESVIvY2ckJC0kUkFORE9NICYmICh1bWFzayAwNzcgJiYgbWtkaXIgJHRtcCkgOyB9IHx8CkBAIC0xNzAsNyArMTcxLDcgQEAKIAkgICAgYXJtKnxpMzg2fG02OGt8bnMzMmt8c2gzKnxzcGFyY3x2YXgpCiAJCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKIAkJaWYgZWNobyBfX0VMRl9fIHwgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsIFwKLQkJCXwgZ3JlcCBfX0VMRl9fID4vZGV2L251bGwKKwkJCXwgZ3JlcCAtcSBfX0VMRl9fCiAJCXRoZW4KIAkJICAgICMgT25jZSBhbGwgdXRpbGl0aWVzIGNhbiBiZSBFQ09GRiAobmV0YnNkZWNvZmYpIG9yIGEub3V0IChuZXRic2Rhb3V0KS4KIAkJICAgICMgUmV0dXJuIG5ldGJzZCBmb3IgZWl0aGVyLiAgRklYPwpAQCAtMzI0LDE0ICszMjUsMzMgQEAKIAljYXNlIGAvdXNyL2Jpbi91bmFtZSAtcGAgaW4KIAkgICAgc3BhcmMpIGVjaG8gc3BhcmMtaWNsLW54NzsgZXhpdCA7OwogCWVzYWMgOzsKKyAgICBzMzkweDpTdW5PUzoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKICAgICBzdW40SDpTdW5PUzo1Lio6KikKIAllY2hvIHNwYXJjLWhhbC1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAogCWV4aXQgOzsKICAgICBzdW40KjpTdW5PUzo1Lio6KiB8IHRhZHBvbGUqOlN1bk9TOjUuKjoqKQogCWVjaG8gc3BhcmMtc3VuLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCiAJZXhpdCA7OworICAgIGk4NnBjOkF1cm9yYVVYOjUuKjoqIHwgaTg2eGVuOkF1cm9yYVVYOjUuKjoqKQorCWVjaG8gaTM4Ni1wYy1hdXJvcmF1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CiAgICAgaTg2cGM6U3VuT1M6NS4qOiogfCBpODZ4ZW46U3VuT1M6NS4qOiopCi0JZWNobyBpMzg2LXBjLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCVNVTl9BUkNIPSJpMzg2IgorCSMgSWYgdGhlcmUgaXMgYSBjb21waWxlciwgc2VlIGlmIGl0IGlzIGNvbmZpZ3VyZWQgZm9yIDY0LWJpdCBvYmplY3RzLgorCSMgTm90ZSB0aGF0IHRoZSBTdW4gY2MgZG9lcyBub3QgdHVybiBfX0xQNjRfXyBpbnRvIDEgbGlrZSBnY2MgZG9lcy4KKwkjIFRoaXMgdGVzdCB3b3JrcyBmb3IgYm90aCBjb21waWxlcnMuCisJaWYgWyAiJENDX0ZPUl9CVUlMRCIgIT0gJ25vX2NvbXBpbGVyX2ZvdW5kJyBdOyB0aGVuCisJICAgIGlmIChlY2hvICcjaWZkZWYgX19hbWQ2NCc7IGVjaG8gSVNfNjRCSVRfQVJDSDsgZWNobyAnI2VuZGlmJykgfCBcCisJCShDQ09QVFM9ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCkgfCBcCisJCWdyZXAgSVNfNjRCSVRfQVJDSCA+L2Rldi9udWxsCisJICAgIHRoZW4KKwkJU1VOX0FSQ0g9Ing4Nl82NCIKKwkgICAgZmkKKwlmaQorCWVjaG8gJHtTVU5fQVJDSH0tcGMtc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKIAlleGl0IDs7CiAgICAgc3VuNCo6U3VuT1M6Nio6KikKIAkjIEFjY29yZGluZyB0byBjb25maWcuc3ViLCB0aGlzIGlzIHRoZSBwcm9wZXIgd2F5IHRvIGNhbm9uaWNhbGl6ZQpAQCAtNTMyLDcgKzU1Miw3IEBACiAJCWVjaG8gcnM2MDAwLWlibS1haXgzLjIKIAlmaQogCWV4aXQgOzsKLSAgICAqOkFJWDoqOls0NTZdKQorICAgICo6QUlYOio6WzQ1NjddKQogCUlCTV9DUFVfSUQ9YC91c3Ivc2Jpbi9sc2RldiAtQyAtYyBwcm9jZXNzb3IgLVMgYXZhaWxhYmxlIHwgc2VkIDFxIHwgYXdrICd7IHByaW50ICQxIH0nYAogCWlmIC91c3Ivc2Jpbi9sc2F0dHIgLUVsICR7SUJNX0NQVV9JRH0gfCBncmVwICcgUE9XRVInID4vZGV2L251bGwgMj4mMTsgdGhlbgogCQlJQk1fQVJDSD1yczYwMDAKQEAgLTY0MCw3ICs2NjAsNyBAQAogCSAgICAjID0+IGhwcGE2NC1ocC1ocHV4MTEuMjMKIAogCSAgICBpZiBlY2hvIF9fTFA2NF9fIHwgKENDT1BUUz0gJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsKSB8Ci0JCWdyZXAgX19MUDY0X18gPi9kZXYvbnVsbAorCQlncmVwIC1xIF9fTFA2NF9fCiAJICAgIHRoZW4KIAkJSFBfQVJDSD0iaHBwYTIuMHciCiAJICAgIGVsc2UKQEAgLTc5MSwxMiArODExLDEyIEBACiAgICAgaSo6UFcqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXB3MzIKIAlleGl0IDs7Ci0gICAgKjpJbnRlcml4KjpbMzQ1Nl0qKQorICAgICo6SW50ZXJpeCo6KikKICAgICAJY2FzZSAke1VOQU1FX01BQ0hJTkV9IGluCiAJICAgIHg4NikKIAkJZWNobyBpNTg2LXBjLWludGVyaXgke1VOQU1FX1JFTEVBU0V9CiAJCWV4aXQgOzsKLQkgICAgRU02NFQgfCBhdXRoZW50aWNhbWQpCisJICAgIGF1dGhlbnRpY2FtZCB8IGdlbnVpbmVpbnRlbCB8IEVNNjRUKQogCQllY2hvIHg4Nl82NC11bmtub3duLWludGVyaXgke1VOQU1FX1JFTEVBU0V9CiAJCWV4aXQgOzsKIAkgICAgSUE2NCkKQEAgLTgwNiw2ICs4MjYsOSBAQAogICAgIFszNDVdODY6V2luZG93c185NToqIHwgWzM0NV04NjpXaW5kb3dzXzk4OiogfCBbMzQ1XTg2OldpbmRvd3NfTlQ6KikKIAllY2hvIGkke1VOQU1FX01BQ0hJTkV9LXBjLW1rcwogCWV4aXQgOzsKKyAgICA4NjY0OldpbmRvd3NfTlQ6KikKKwllY2hvIHg4Nl82NC1wYy1ta3MKKwlleGl0IDs7CiAgICAgaSo6V2luZG93c19OVCo6KiB8IFBlbnRpdW0qOldpbmRvd3NfTlQqOiopCiAJIyBIb3cgZG8gd2Uga25vdyBpdCdzIEludGVyaXggcmF0aGVyIHRoYW4gdGhlIGdlbmVyaWMgUE9TSVggc3Vic3lzdGVtPwogCSMgSXQgYWxzbyBjb25mbGljdHMgd2l0aCBwcmUtMi4wIHZlcnNpb25zIG9mIEFUJlQgVVdJTi4gU2hvdWxkIHdlCkBAIC04MzUsNiArODU4LDIwIEBACiAgICAgaSo4NjpNaW5peDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW1pbml4CiAJZXhpdCA7OworICAgIGFscGhhOkxpbnV4Oio6KikKKwljYXNlIGBzZWQgLW4gJy9eY3B1IG1vZGVsL3MvXi4qOiBcKC4qXCkvXDEvcCcgPCAvcHJvYy9jcHVpbmZvYCBpbgorCSAgRVY1KSAgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjUgOzsKKwkgIEVWNTYpICBVTkFNRV9NQUNISU5FPWFscGhhZXY1NiA7OworCSAgUENBNTYpIFVOQU1FX01BQ0hJTkU9YWxwaGFwY2E1NiA7OworCSAgUENBNTcpIFVOQU1FX01BQ0hJTkU9YWxwaGFwY2E1NiA7OworCSAgRVY2KSAgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjYgOzsKKwkgIEVWNjcpICBVTkFNRV9NQUNISU5FPWFscGhhZXY2NyA7OworCSAgRVY2OCopIFVOQU1FX01BQ0hJTkU9YWxwaGFldjY4IDs7CisgICAgICAgIGVzYWMKKwlvYmpkdW1wIC0tcHJpdmF0ZS1oZWFkZXJzIC9iaW4vc2ggfCBncmVwIC1xIGxkLnNvLjEKKwlpZiB0ZXN0ICIkPyIgPSAwIDsgdGhlbiBMSUJDPSJsaWJjMSIgOyBlbHNlIExJQkM9IiIgOyBmaQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudSR7TElCQ30KKwlleGl0IDs7CiAgICAgYXJtKjpMaW51eDoqOiopCiAJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAogCWlmIGVjaG8gX19BUk1fRUFCSV9fIHwgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsIFwKQEAgLTg1Nyw2ICs4OTQsMTcgQEAKICAgICBmcnY6TGludXg6KjoqKQogICAgIAllY2hvIGZydi11bmtub3duLWxpbnV4LWdudQogCWV4aXQgOzsKKyAgICBpKjg2OkxpbnV4Oio6KikKKwlMSUJDPWdudQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYworCSNpZmRlZiBfX2RpZXRsaWJjX18KKwlMSUJDPWRpZXRsaWJjCisJI2VuZGlmCitFT0YKKwlldmFsIGAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgZ3JlcCAnXkxJQkMnYAorCWVjaG8gIiR7VU5BTUVfTUFDSElORX0tcGMtbGludXgtJHtMSUJDfSIKKwlleGl0IDs7CiAgICAgaWE2NDpMaW51eDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CiAJZXhpdCA7OwpAQCAtODY2LDc0ICs5MTQsMzMgQEAKICAgICBtNjgqOkxpbnV4Oio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7Ci0gICAgbWlwczpMaW51eDoqOiopCisgICAgbWlwczpMaW51eDoqOiogfCBtaXBzNjQ6TGludXg6KjoqKQogCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKIAlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYwogCSN1bmRlZiBDUFUKLQkjdW5kZWYgbWlwcwotCSN1bmRlZiBtaXBzZWwKKwkjdW5kZWYgJHtVTkFNRV9NQUNISU5FfQorCSN1bmRlZiAke1VOQU1FX01BQ0hJTkV9ZWwKIAkjaWYgZGVmaW5lZChfX01JUFNFTF9fKSB8fCBkZWZpbmVkKF9fTUlQU0VMKSB8fCBkZWZpbmVkKF9NSVBTRUwpIHx8IGRlZmluZWQoTUlQU0VMKQotCUNQVT1taXBzZWwKKwlDUFU9JHtVTkFNRV9NQUNISU5FfWVsCiAJI2Vsc2UKIAkjaWYgZGVmaW5lZChfX01JUFNFQl9fKSB8fCBkZWZpbmVkKF9fTUlQU0VCKSB8fCBkZWZpbmVkKF9NSVBTRUIpIHx8IGRlZmluZWQoTUlQU0VCKQotCUNQVT1taXBzCisJQ1BVPSR7VU5BTUVfTUFDSElORX0KIAkjZWxzZQogCUNQVT0KIAkjZW5kaWYKIAkjZW5kaWYKIEVPRgotCWV2YWwgImAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgc2VkIC1uICcKLQkgICAgL15DUFUvewotCQlzOiA6OmcKLQkJcAotCSAgICB9J2AiCi0JdGVzdCB4IiR7Q1BVfSIgIT0geCAmJiB7IGVjaG8gIiR7Q1BVfS11bmtub3duLWxpbnV4LWdudSI7IGV4aXQ7IH0KLQk7OwotICAgIG1pcHM2NDpMaW51eDoqOiopCi0JZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAotCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCi0JI3VuZGVmIENQVQotCSN1bmRlZiBtaXBzNjQKLQkjdW5kZWYgbWlwczY0ZWwKLQkjaWYgZGVmaW5lZChfX01JUFNFTF9fKSB8fCBkZWZpbmVkKF9fTUlQU0VMKSB8fCBkZWZpbmVkKF9NSVBTRUwpIHx8IGRlZmluZWQoTUlQU0VMKQotCUNQVT1taXBzNjRlbAotCSNlbHNlCi0JI2lmIGRlZmluZWQoX19NSVBTRUJfXykgfHwgZGVmaW5lZChfX01JUFNFQikgfHwgZGVmaW5lZChfTUlQU0VCKSB8fCBkZWZpbmVkKE1JUFNFQikKLQlDUFU9bWlwczY0Ci0JI2Vsc2UKLQlDUFU9Ci0JI2VuZGlmCi0JI2VuZGlmCi1FT0YKLQlldmFsICJgJENDX0ZPUl9CVUlMRCAtRSAkZHVtbXkuYyAyPi9kZXYvbnVsbCB8IHNlZCAtbiAnCi0JICAgIC9eQ1BVL3sKLQkJczogOjpnCi0JCXAKLQkgICAgfSdgIgorCWV2YWwgYCRDQ19GT1JfQlVJTEQgLUUgJGR1bW15LmMgMj4vZGV2L251bGwgfCBncmVwICdeQ1BVJ2AKIAl0ZXN0IHgiJHtDUFV9IiAhPSB4ICYmIHsgZWNobyAiJHtDUFV9LXVua25vd24tbGludXgtZ251IjsgZXhpdDsgfQogCTs7CiAgICAgb3IzMjpMaW51eDoqOiopCiAJZWNobyBvcjMyLXVua25vd24tbGludXgtZ251CiAJZXhpdCA7OwotICAgIHBwYzpMaW51eDoqOiopCi0JZWNobyBwb3dlcnBjLXVua25vd24tbGludXgtZ251CisgICAgcGFkcmU6TGludXg6KjoqKQorCWVjaG8gc3BhcmMtdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7Ci0gICAgcHBjNjQ6TGludXg6KjoqKQotCWVjaG8gcG93ZXJwYzY0LXVua25vd24tbGludXgtZ251Ci0JZXhpdCA7OwotICAgIGFscGhhOkxpbnV4Oio6KikKLQljYXNlIGBzZWQgLW4gJy9eY3B1IG1vZGVsL3MvXi4qOiBcKC4qXCkvXDEvcCcgPCAvcHJvYy9jcHVpbmZvYCBpbgotCSAgRVY1KSAgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjUgOzsKLQkgIEVWNTYpICBVTkFNRV9NQUNISU5FPWFscGhhZXY1NiA7OwotCSAgUENBNTYpIFVOQU1FX01BQ0hJTkU9YWxwaGFwY2E1NiA7OwotCSAgUENBNTcpIFVOQU1FX01BQ0hJTkU9YWxwaGFwY2E1NiA7OwotCSAgRVY2KSAgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjYgOzsKLQkgIEVWNjcpICBVTkFNRV9NQUNISU5FPWFscGhhZXY2NyA7OwotCSAgRVY2OCopIFVOQU1FX01BQ0hJTkU9YWxwaGFldjY4IDs7Ci0gICAgICAgIGVzYWMKLQlvYmpkdW1wIC0tcHJpdmF0ZS1oZWFkZXJzIC9iaW4vc2ggfCBncmVwIGxkLnNvLjEgPi9kZXYvbnVsbAotCWlmIHRlc3QgIiQ/IiA9IDAgOyB0aGVuIExJQkM9ImxpYmMxIiA7IGVsc2UgTElCQz0iIiA7IGZpCi0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251JHtMSUJDfQorICAgIHBhcmlzYzY0OkxpbnV4Oio6KiB8IGhwcGE2NDpMaW51eDoqOiopCisJZWNobyBocHBhNjQtdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7CiAgICAgcGFyaXNjOkxpbnV4Oio6KiB8IGhwcGE6TGludXg6KjoqKQogCSMgTG9vayBmb3IgQ1BVIGxldmVsCkBAIC05NDMsOCArOTUwLDExIEBACiAJICAqKSAgICBlY2hvIGhwcGEtdW5rbm93bi1saW51eC1nbnUgOzsKIAllc2FjCiAJZXhpdCA7OwotICAgIHBhcmlzYzY0OkxpbnV4Oio6KiB8IGhwcGE2NDpMaW51eDoqOiopCi0JZWNobyBocHBhNjQtdW5rbm93bi1saW51eC1nbnUKKyAgICBwcGM2NDpMaW51eDoqOiopCisJZWNobyBwb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgcHBjOkxpbnV4Oio6KikKKwllY2hvIHBvd2VycGMtdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7CiAgICAgczM5MDpMaW51eDoqOiogfCBzMzkweDpMaW51eDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1saW51eApAQCAtOTU4LDYgKzk2OCw5IEBACiAgICAgc3BhcmM6TGludXg6KjoqIHwgc3BhcmM2NDpMaW51eDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CiAJZXhpdCA7OworICAgIHRpbGUqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdGlsZXJhLWxpbnV4LWdudQorCWV4aXQgOzsKICAgICB2YXg6TGludXg6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtbGludXgtZ251CiAJZXhpdCA7OwpAQCAtOTY3LDY5ICs5ODAsNiBAQAogICAgIHh0ZW5zYSo6TGludXg6KjoqKQogICAgIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7Ci0gICAgaSo4NjpMaW51eDoqOiopCi0JIyBUaGUgQkZEIGxpbmtlciBrbm93cyB3aGF0IHRoZSBkZWZhdWx0IG9iamVjdCBmaWxlIGZvcm1hdCBpcywgc28KLQkjIGZpcnN0IHNlZSBpZiBpdCB3aWxsIHRlbGwgdXMuIGNkIHRvIHRoZSByb290IGRpcmVjdG9yeSB0byBwcmV2ZW50Ci0JIyBwcm9ibGVtcyB3aXRoIG90aGVyIHByb2dyYW1zIG9yIGRpcmVjdG9yaWVzIGNhbGxlZCBgbGQnIGluIHRoZSBwYXRoLgotCSMgU2V0IExDX0FMTD1DIHRvIGVuc3VyZSBsZCBvdXRwdXRzIG1lc3NhZ2VzIGluIEVuZ2xpc2guCi0JbGRfc3VwcG9ydGVkX3RhcmdldHM9YGNkIC87IExDX0FMTD1DIGxkIC0taGVscCAyPiYxIFwKLQkJCSB8IHNlZCAtbmUgJy9zdXBwb3J0ZWQgdGFyZ2V0czovIWQKLQkJCQkgICAgcy9bIAldWyAJXSovIC9nCi0JCQkJICAgIHMvLipzdXBwb3J0ZWQgdGFyZ2V0czogKi8vCi0JCQkJICAgIHMvIC4qLy8KLQkJCQkgICAgcCdgCi0gICAgICAgIGNhc2UgIiRsZF9zdXBwb3J0ZWRfdGFyZ2V0cyIgaW4KLQkgIGVsZjMyLWkzODYpCi0JCVRFTlRBVElWRT0iJHtVTkFNRV9NQUNISU5FfS1wYy1saW51eC1nbnUiCi0JCTs7Ci0JICBhLm91dC1pMzg2LWxpbnV4KQotCQllY2hvICIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LWdudWFvdXQiCi0JCWV4aXQgOzsKLQkgIGNvZmYtaTM4NikKLQkJZWNobyAiJHtVTkFNRV9NQUNISU5FfS1wYy1saW51eC1nbnVjb2ZmIgotCQlleGl0IDs7Ci0JICAiIikKLQkJIyBFaXRoZXIgYSBwcmUtQkZEIGEub3V0IGxpbmtlciAobGludXgtZ251b2xkbGQpIG9yCi0JCSMgb25lIHRoYXQgZG9lcyBub3QgZ2l2ZSB1cyB1c2VmdWwgLS1oZWxwLgotCQllY2hvICIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LWdudW9sZGxkIgotCQlleGl0IDs7Ci0JZXNhYwotCSMgRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGRlZmF1bHQgY29tcGlsZXIgaXMgYS5vdXQgb3IgZWxmCi0JZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAotCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCi0JI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0JI2lmZGVmIF9fRUxGX18KLQkjIGlmZGVmIF9fR0xJQkNfXwotCSMgIGlmIF9fR0xJQkNfXyA+PSAyCi0JTElCQz1nbnUKLQkjICBlbHNlCi0JTElCQz1nbnVsaWJjMQotCSMgIGVuZGlmCi0JIyBlbHNlCi0JTElCQz1nbnVsaWJjMQotCSMgZW5kaWYKLQkjZWxzZQotCSNpZiBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpIHx8IGRlZmluZWQoX19QR0kpIHx8IGRlZmluZWQoX19TVU5QUk9fQykgfHwgZGVmaW5lZChfX1NVTlBST19DQykKLQlMSUJDPWdudQotCSNlbHNlCi0JTElCQz1nbnVhb3V0Ci0JI2VuZGlmCi0JI2VuZGlmCi0JI2lmZGVmIF9fZGlldGxpYmNfXwotCUxJQkM9ZGlldGxpYmMKLQkjZW5kaWYKLUVPRgotCWV2YWwgImAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgc2VkIC1uICcKLQkgICAgL15MSUJDL3sKLQkJczogOjpnCi0JCXAKLQkgICAgfSdgIgotCXRlc3QgeCIke0xJQkN9IiAhPSB4ICYmIHsKLQkJZWNobyAiJHtVTkFNRV9NQUNISU5FfS1wYy1saW51eC0ke0xJQkN9IgotCQlleGl0Ci0JfQotCXRlc3QgeCIke1RFTlRBVElWRX0iICE9IHggJiYgeyBlY2hvICIke1RFTlRBVElWRX0iOyBleGl0OyB9Ci0JOzsKICAgICBpKjg2OkRZTklYL3B0eDo0KjoqKQogCSMgcHR4IDQuMCBkb2VzIHVuYW1lIC1zIGNvcnJlY3RseSwgd2l0aCBEWU5JWC9wdHggaW4gdGhlcmUuCiAJIyBlYXJsaWVyIHZlcnNpb25zIGFyZSBtZXNzZWQgdXAgYW5kIHB1dCB0aGUgbm9kZW5hbWUgaW4gYm90aApAQCAtMTA1OCw3ICsxMDA4LDcgQEAKICAgICBpKjg2OnN5bGxhYmxlOio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lsbGFibGUKIAlleGl0IDs7Ci0gICAgaSo4NjpMeW54T1M6Mi4qOiogfCBpKjg2Okx5bnhPUzozLlswMV0qOiogfCBpKjg2Okx5bnhPUzo0LjAqOiopCisgICAgaSo4NjpMeW54T1M6Mi4qOiogfCBpKjg2Okx5bnhPUzozLlswMV0qOiogfCBpKjg2Okx5bnhPUzo0LlswMl0qOiopCiAJZWNobyBpMzg2LXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKICAgICBpKjg2OipET1M6KjoqKQpAQCAtMTEwMiw4ICsxMDUyLDExIEBACiAgICAgcGM6KjoqOiopCiAJIyBMZWZ0IGhlcmUgZm9yIGNvbXBhdGliaWxpdHk6CiAgICAgICAgICMgdW5hbWUgLW0gcHJpbnRzIGZvciBESkdQUCBhbHdheXMgJ3BjJywgYnV0IGl0IHByaW50cyBub3RoaW5nIGFib3V0Ci0gICAgICAgICMgdGhlIHByb2Nlc3Nvciwgc28gd2UgcGxheSBzYWZlIGJ5IGFzc3VtaW5nIGkzODYuCi0JZWNobyBpMzg2LXBjLW1zZG9zZGpncHAKKyAgICAgICAgIyB0aGUgcHJvY2Vzc29yLCBzbyB3ZSBwbGF5IHNhZmUgYnkgYXNzdW1pbmcgaTU4Ni4KKwkjIE5vdGU6IHdoYXRldmVyIHRoaXMgaXMsIGl0IE1VU1QgYmUgdGhlIHNhbWUgYXMgd2hhdCBjb25maWcuc3ViCisJIyBwcmludHMgZm9yIHRoZSAiZGpncHAiIGhvc3QsIG9yIGVsc2UgR0RCIGNvbmZpZ3VyeSB3aWxsIGRlY2lkZSB0aGF0CisJIyB0aGlzIGlzIGEgY3Jvc3MtYnVpbGQuCisJZWNobyBpNTg2LXBjLW1zZG9zZGpncHAKICAgICAgICAgZXhpdCA7OwogICAgIEludGVsOk1hY2g6Myo6KikKIAllY2hvIGkzODYtcGMtbWFjaDMKQEAgLTExNDEsNiArMTA5NCwxNiBAQAogICAgIDNbMzRdPz86Kjo0LjA6KiB8IDNbMzRdPz8sKjoqOjQuMDoqKQogICAgICAgICAvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxsIFwKICAgICAgICAgICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lzdjQ7IGV4aXQ7IH0gOzsKKyAgICBOQ1IqOio6NC4yOiogfCBNUFJBUyo6Kjo0LjI6KikKKwlPU19SRUw9Jy4zJworCXRlc3QgLXIgL2V0Yy8ucmVsaWQgXAorCSAgICAmJiBPU19SRUw9LmBzZWQgLW4gJ3MvW14gXSogW14gXSogXChbMC05XVswLTldXCkuKi9cMS9wJyA8IC9ldGMvLnJlbGlkYAorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCBncmVwIDg2ID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfQorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCAvYmluL2dyZXAgZW50aXVtID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfQorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCAvYmluL2dyZXAgcHRlcm9uID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfSA7OwogICAgIG02OCo6THlueE9TOjIuKjoqIHwgbTY4KjpMeW54T1M6My4wKjoqKQogCWVjaG8gbTY4ay11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDs7CkBAIC0xMTUzLDcgKzExMTYsNyBAQAogICAgIHJzNjAwMDpMeW54T1M6Mi4qOiopCiAJZWNobyByczYwMDAtdW5rbm93bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9CiAJZXhpdCA7OwotICAgIFBvd2VyUEM6THlueE9TOjIuKjoqIHwgUG93ZXJQQzpMeW54T1M6My5bMDFdKjoqIHwgUG93ZXJQQzpMeW54T1M6NC4wKjoqKQorICAgIFBvd2VyUEM6THlueE9TOjIuKjoqIHwgUG93ZXJQQzpMeW54T1M6My5bMDFdKjoqIHwgUG93ZXJQQzpMeW54T1M6NC5bMDJdKjoqKQogCWVjaG8gcG93ZXJwYy11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDs7CiAgICAgU01bQkVdUzpVTklYX1NWOio6KikKQEAgLTEyMTYsNiArMTE3OSw5IEBACiAgICAgQmVQQzpCZU9TOio6KikJIyBCZU9TIHJ1bm5pbmcgb24gSW50ZWwgUEMgY29tcGF0aWJsZS4KIAllY2hvIGk1ODYtcGMtYmVvcwogCWV4aXQgOzsKKyAgICBCZVBDOkhhaWt1Oio6KikJIyBIYWlrdSBydW5uaW5nIG9uIEludGVsIFBDIGNvbXBhdGlibGUuCisJZWNobyBpNTg2LXBjLWhhaWt1CisJZXhpdCA7OwogICAgIFNYLTQ6U1VQRVItVVg6KjoqKQogCWVjaG8gc3g0LW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKQEAgLTEyNDMsNiArMTIwOSwxNiBAQAogICAgICo6RGFyd2luOio6KikKIAlVTkFNRV9QUk9DRVNTT1I9YHVuYW1lIC1wYCB8fCBVTkFNRV9QUk9DRVNTT1I9dW5rbm93bgogCWNhc2UgJFVOQU1FX1BST0NFU1NPUiBpbgorCSAgICBpMzg2KQorCQlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJCWlmIFsgIiRDQ19GT1JfQlVJTEQiICE9ICdub19jb21waWxlcl9mb3VuZCcgXTsgdGhlbgorCQkgIGlmIChlY2hvICcjaWZkZWYgX19MUDY0X18nOyBlY2hvIElTXzY0QklUX0FSQ0g7IGVjaG8gJyNlbmRpZicpIHwgXAorCQkgICAgICAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwgXAorCQkgICAgICBncmVwIElTXzY0QklUX0FSQ0ggPi9kZXYvbnVsbAorCQkgIHRoZW4KKwkJICAgICAgVU5BTUVfUFJPQ0VTU09SPSJ4ODZfNjQiCisJCSAgZmkKKwkJZmkgOzsKIAkgICAgdW5rbm93bikgVU5BTUVfUFJPQ0VTU09SPXBvd2VycGMgOzsKIAllc2FjCiAJZWNobyAke1VOQU1FX1BST0NFU1NPUn0tYXBwbGUtZGFyd2luJHtVTkFNRV9SRUxFQVNFfQpAQCAtMTMyNCw2ICsxMzAwLDkgQEAKICAgICBpKjg2OnJkb3M6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1yZG9zCiAJZXhpdCA7OworICAgIGkqODY6QVJPUzoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWFyb3MKKwlleGl0IDs7CiBlc2FjCiAKICNlY2hvICcoTm8gdW5hbWUgY29tbWFuZCBvciB1bmFtZSBvdXRwdXQgbm90IHJlY29nbml6ZWQuKScgMT4mMgpAQCAtMTQ4NCw5ICsxNDYzLDkgQEAKIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHlvdSBhcmUgdXNpbmcuIEl0IGlzIGFkdmlzZWQgdGhhdCB5b3UKIGRvd25sb2FkIHRoZSBtb3N0IHVwIHRvIGRhdGUgdmVyc2lvbiBvZiB0aGUgY29uZmlnIHNjcmlwdHMgZnJvbQogCi0gIGh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL2NnaS1iaW4vdmlld2N2cy8qY2hlY2tvdXQqL2NvbmZpZy9jb25maWcvY29uZmlnLmd1ZXNzCisgIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuZ3Vlc3M7aGI9SEVBRAogYW5kCi0gIGh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL2NnaS1iaW4vdmlld2N2cy8qY2hlY2tvdXQqL2NvbmZpZy9jb25maWcvY29uZmlnLnN1YgorICBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLnN1YjtoYj1IRUFECiAKIElmIHRoZSB2ZXJzaW9uIHlvdSBydW4gKCQwKSBpcyBhbHJlYWR5IHVwIHRvIGRhdGUsIHBsZWFzZQogc2VuZCB0aGUgZm9sbG93aW5nIGRhdGEgYW5kIGFueSBpbmZvcm1hdGlvbiB5b3UgdGhpbmsgbWlnaHQgYmUKZGlmZiAtLWdpdCBhL2NvbmZpZy5zdWIgYi9jb25maWcuc3ViCmluZGV4IDY3NTk4MjUuLjMyMGUzMDMgMTAwNzU1Ci0tLSBhL2NvbmZpZy5zdWIKKysrIGIvY29uZmlnLnN1YgpAQCAtMSwxMCArMSwxMCBAQAogIyEgL2Jpbi9zaAogIyBDb25maWd1cmF0aW9uIHZhbGlkYXRpb24gc3Vicm91dGluZSBzY3JpcHQuCiAjICAgQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LAotIyAgIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgKKyMgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwCiAjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKLXRpbWVzdGFtcD0nMjAwOC0wMS0xNicKK3RpbWVzdGFtcD0nMjAxMC0wOS0xMScKIAogIyBUaGlzIGZpbGUgaXMgKGluIHByaW5jaXBsZSkgY29tbW9uIHRvIEFMTCBHTlUgc29mdHdhcmUuCiAjIFRoZSBwcmVzZW5jZSBvZiBhIG1hY2hpbmUgaW4gdGhpcyBmaWxlIHN1Z2dlc3RzIHRoYXQgU09NRSBHTlUgc29mdHdhcmUKQEAgLTMyLDEzICszMiwxNiBAQAogCiAKICMgUGxlYXNlIHNlbmQgcGF0Y2hlcyB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4uICBTdWJtaXQgYSBjb250ZXh0Ci0jIGRpZmYgYW5kIGEgcHJvcGVybHkgZm9ybWF0dGVkIENoYW5nZUxvZyBlbnRyeS4KKyMgZGlmZiBhbmQgYSBwcm9wZXJseSBmb3JtYXR0ZWQgR05VIENoYW5nZUxvZyBlbnRyeS4KICMKICMgQ29uZmlndXJhdGlvbiBzdWJyb3V0aW5lIHRvIHZhbGlkYXRlIGFuZCBjYW5vbmljYWxpemUgYSBjb25maWd1cmF0aW9uIHR5cGUuCiAjIFN1cHBseSB0aGUgc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb24gdHlwZSBhcyBhbiBhcmd1bWVudC4KICMgSWYgaXQgaXMgaW52YWxpZCwgd2UgcHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBvbiBzdGRlcnIgYW5kIGV4aXQgd2l0aCBjb2RlIDEuCiAjIE90aGVyd2lzZSwgd2UgcHJpbnQgdGhlIGNhbm9uaWNhbCBjb25maWcgdHlwZSBvbiBzdGRvdXQgYW5kIHN1Y2NlZWQuCiAKKyMgWW91IGNhbiBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgc2NyaXB0IGZyb206CisjIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuc3ViO2hiPUhFQUQKKwogIyBUaGlzIGZpbGUgaXMgc3VwcG9zZWQgdG8gYmUgdGhlIHNhbWUgZm9yIGFsbCBHTlUgcGFja2FnZXMKICMgYW5kIHJlY29nbml6ZSBhbGwgdGhlIENQVSB0eXBlcywgc3lzdGVtIHR5cGVzIGFuZCBhbGlhc2VzCiAjIHRoYXQgYXJlIG1lYW5pbmdmdWwgd2l0aCAqYW55KiBHTlUgc29mdHdhcmUuCkBAIC03Miw4ICs3NSw5IEBACiB2ZXJzaW9uPSJcCiBHTlUgY29uZmlnLnN1YiAoJHRpbWVzdGFtcCkKIAotQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLAotMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK0NvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwKKzIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZQorU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTwogd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIgpAQCAtMTIwLDggKzEyNCwxMCBAQAogIyBIZXJlIHdlIG11c3QgcmVjb2duaXplIGFsbCB0aGUgdmFsaWQgS0VSTkVMLU9TIGNvbWJpbmF0aW9ucy4KIG1heWJlX29zPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMi8nYAogY2FzZSAkbWF5YmVfb3MgaW4KLSAgbnRvLXFueCogfCBsaW51eC1nbnUqIHwgbGludXgtZGlldGxpYmMgfCBsaW51eC1uZXdsaWIqIHwgbGludXgtdWNsaWJjKiB8IFwKLSAgdWNsaW51eC11Y2xpYmMqIHwgdWNsaW51eC1nbnUqIHwga2ZyZWVic2QqLWdudSogfCBrbmV0YnNkKi1nbnUqIHwgbmV0YnNkKi1nbnUqIHwgXAorICBudG8tcW54KiB8IGxpbnV4LWdudSogfCBsaW51eC1hbmRyb2lkKiB8IGxpbnV4LWRpZXRsaWJjIHwgbGludXgtbmV3bGliKiB8IFwKKyAgbGludXgtdWNsaWJjKiB8IHVjbGludXgtdWNsaWJjKiB8IHVjbGludXgtZ251KiB8IGtmcmVlYnNkKi1nbnUqIHwgXAorICBrbmV0YnNkKi1nbnUqIHwgbmV0YnNkKi1nbnUqIHwgXAorICBrb3BlbnNvbGFyaXMqLWdudSogfCBcCiAgIHN0b3JtLWNoYW9zKiB8IG9zMi1lbXgqIHwgcnRtay1ub3ZhKikKICAgICBvcz0tJG1heWJlX29zCiAgICAgYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAncy9eXCguKlwpLVwoW14tXSotW14tXSpcKSQvXDEvJ2AKQEAgLTE0OCwxMCArMTU0LDEzIEBACiAJLWNvbnZlcmdlbnQqIHwgLW5jciogfCAtbmV3cyB8IC0zMiogfCAtMzYwMCogfCAtMzEwMCogfCAtaGl0YWNoaSogfFwKIAktY1sxMjNdKiB8IC1jb252ZXgqIHwgLXN1biB8IC1jcmRzIHwgLW9tcm9uKiB8IC1kZyB8IC11bHRyYSB8IC10dGkqIHwgXAogCS1oYXJyaXMgfCAtZG9scGhpbiB8IC1oaWdobGV2ZWwgfCAtZ291bGQgfCAtY2JtIHwgLW5zIHwgLW1hc3Njb21wIHwgXAotCS1hcHBsZSB8IC1heGlzIHwgLWtudXRoIHwgLWNyYXkpCisJLWFwcGxlIHwgLWF4aXMgfCAta251dGggfCAtY3JheSB8IC1taWNyb2JsYXplKQogCQlvcz0KIAkJYmFzaWNfbWFjaGluZT0kMQogCQk7OworICAgICAgICAtYmx1ZWdlbmUqKQorCSAgICAgICAgb3M9LWNuaworCQk7OwogCS1zaW0gfCAtY2lzY28gfCAtb2tpIHwgLXdlYyB8IC13aW5ib25kKQogCQlvcz0KIAkJYmFzaWNfbWFjaGluZT0kMQpAQCAtMjQ5LDEzICsyNTgsMTYgQEAKIAl8IGg4MzAwIHwgaDg1MDAgfCBocHBhIHwgaHBwYTEuWzAxXSB8IGhwcGEyLjAgfCBocHBhMi4wW253XSB8IGhwcGE2NCBcCiAJfCBpMzcwIHwgaTg2MCB8IGk5NjAgfCBpYTY0IFwKIAl8IGlwMmsgfCBpcTIwMDAgXAorCXwgbG0zMiBcCiAJfCBtMzJjIHwgbTMyciB8IG0zMnJsZSB8IG02ODAwMCB8IG02OGsgfCBtODhrIFwKLQl8IG1heHEgfCBtYiB8IG1pY3JvYmxhemUgfCBtY29yZSB8IG1lcCBcCisJfCBtYXhxIHwgbWIgfCBtaWNyb2JsYXplIHwgbWNvcmUgfCBtZXAgfCBtZXRhZyBcCiAJfCBtaXBzIHwgbWlwc2JlIHwgbWlwc2ViIHwgbWlwc2VsIHwgbWlwc2xlIFwKIAl8IG1pcHMxNiBcCiAJfCBtaXBzNjQgfCBtaXBzNjRlbCBcCi0JfCBtaXBzNjR2ciB8IG1pcHM2NHZyZWwgXAorCXwgbWlwczY0b2N0ZW9uIHwgbWlwczY0b2N0ZW9uZWwgXAogCXwgbWlwczY0b3Jpb24gfCBtaXBzNjRvcmlvbmVsIFwKKwl8IG1pcHM2NHI1OTAwIHwgbWlwczY0cjU5MDBlbCBcCisJfCBtaXBzNjR2ciB8IG1pcHM2NHZyZWwgXAogCXwgbWlwczY0dnI0MTAwIHwgbWlwczY0dnI0MTAwZWwgXAogCXwgbWlwczY0dnI0MzAwIHwgbWlwczY0dnI0MzAwZWwgXAogCXwgbWlwczY0dnI1MDAwIHwgbWlwczY0dnI1MDAwZWwgXApAQCAtMjY4LDI4ICsyODAsNDEgQEAKIAl8IG1pcHNpc2E2NHNyNzFrIHwgbWlwc2lzYTY0c3I3MWtlbCBcCiAJfCBtaXBzdHgzOSB8IG1pcHN0eDM5ZWwgXAogCXwgbW4xMDIwMCB8IG1uMTAzMDAgXAorCXwgbW94aWUgXAogCXwgbXQgXAogCXwgbXNwNDMwIFwKKwl8IG5kczMyIHwgbmRzMzJsZSB8IG5kczMyYmUgXAogCXwgbmlvcyB8IG5pb3MyIFwKIAl8IG5zMTZrIHwgbnMzMmsgXAogCXwgb3IzMiBcCiAJfCBwZHAxMCB8IHBkcDExIHwgcGogfCBwamwgXAogCXwgcG93ZXJwYyB8IHBvd2VycGM2NCB8IHBvd2VycGM2NGxlIHwgcG93ZXJwY2xlIHwgcHBjYmUgXAogCXwgcHlyYW1pZCBcCisJfCByeCBcCiAJfCBzY29yZSBcCi0JfCBzaCB8IHNoWzEyMzRdIHwgc2hbMjRdYSB8IHNoWzIzXWUgfCBzaFszNF1lYiB8IHNoZWIgfCBzaGJlIHwgc2hsZSB8IHNoWzEyMzRdbGUgfCBzaDNlbGUgXAorCXwgc2ggfCBzaFsxMjM0XSB8IHNoWzI0XWEgfCBzaFsyNF1hZWIgfCBzaFsyM11lIHwgc2hbMzRdZWIgfCBzaGViIHwgc2hiZSB8IHNobGUgfCBzaFsxMjM0XWxlIHwgc2gzZWxlIFwKIAl8IHNoNjQgfCBzaDY0bGUgXAogCXwgc3BhcmMgfCBzcGFyYzY0IHwgc3BhcmM2NGIgfCBzcGFyYzY0diB8IHNwYXJjODZ4IHwgc3BhcmNsZXQgfCBzcGFyY2xpdGUgXAogCXwgc3BhcmN2OCB8IHNwYXJjdjkgfCBzcGFyY3Y5YiB8IHNwYXJjdjl2IFwKIAl8IHNwdSB8IHN0cm9uZ2FybSBcCi0JfCB0YWhvZSB8IHRodW1iIHwgdGljNHggfCB0aWM4MCB8IHRyb24gXAorCXwgdGFob2UgfCB0aHVtYiB8IHRpYzR4IHwgdGljNTR4IHwgdGljNTV4IHwgdGljNnggfCB0aWM4MCB8IHRyb24gXAorCXwgdWJpY29tMzIgXAogCXwgdjg1MCB8IHY4NTBlIFwKIAl8IHdlMzJrIFwKIAl8IHg4NiB8IHhjMTZ4IHwgeHNjYWxlIHwgeHNjYWxlZVtibF0gfCB4c3Rvcm15MTYgfCB4dGVuc2EgXAotCXwgejhrKQorCXwgejhrIHwgejgwKQogCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KIAkJOzsKLQltNjgxMSB8IG02OGhjMTEgfCBtNjgxMiB8IG02OGhjMTIpCisJYzU0eCkKKwkJYmFzaWNfbWFjaGluZT10aWM1NHgtdW5rbm93bgorCQk7OworCWM1NXgpCisJCWJhc2ljX21hY2hpbmU9dGljNTV4LXVua25vd24KKwkJOzsKKwljNngpCisJCWJhc2ljX21hY2hpbmU9dGljNngtdW5rbm93bgorCQk7OworCW02ODExIHwgbTY4aGMxMSB8IG02ODEyIHwgbTY4aGMxMiB8IHBpY29jaGlwKQogCQkjIE1vdG9yb2xhIDY4SEMxMS8xMi4KIAkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCiAJCW9zPS1ub25lCkBAIC0zMjAsNyArMzQ1LDcgQEAKIAl8IGFybS0qICB8IGFybWJlLSogfCBhcm1sZS0qIHwgYXJtZWItKiB8IGFybXYqLSogXAogCXwgYXZyLSogfCBhdnIzMi0qIFwKIAl8IGJmaW4tKiB8IGJzMjAwMC0qIFwKLQl8IGNbMTIzXSogfCBjMzAtKiB8IFtjanRdOTAtKiB8IGM0eC0qIHwgYzU0eC0qIHwgYzU1eC0qIHwgYzZ4LSogXAorCXwgY1sxMjNdKiB8IGMzMC0qIHwgW2NqdF05MC0qIHwgYzR4LSogXAogCXwgY2xpcHBlci0qIHwgY3JheW52LSogfCBjeWRyYS0qIFwKIAl8IGQxMHYtKiB8IGQzMHYtKiB8IGRseC0qIFwKIAl8IGVseHNpLSogXApAQCAtMzI5LDE0ICszNTQsMTcgQEAKIAl8IGhwcGEtKiB8IGhwcGExLlswMV0tKiB8IGhwcGEyLjAtKiB8IGhwcGEyLjBbbnddLSogfCBocHBhNjQtKiBcCiAJfCBpKjg2LSogfCBpODYwLSogfCBpOTYwLSogfCBpYTY0LSogXAogCXwgaXAyay0qIHwgaXEyMDAwLSogXAorCXwgbG0zMi0qIFwKIAl8IG0zMmMtKiB8IG0zMnItKiB8IG0zMnJsZS0qIFwKIAl8IG02ODAwMC0qIHwgbTY4MFswMTIzNDZdMC0qIHwgbTY4MzYwLSogfCBtNjgzPzItKiB8IG02OGstKiBcCi0JfCBtODgxMTAtKiB8IG04OGstKiB8IG1heHEtKiB8IG1jb3JlLSogXAorCXwgbTg4MTEwLSogfCBtODhrLSogfCBtYXhxLSogfCBtY29yZS0qIHwgbWV0YWctKiB8IG1pY3JvYmxhemUtKiBcCiAJfCBtaXBzLSogfCBtaXBzYmUtKiB8IG1pcHNlYi0qIHwgbWlwc2VsLSogfCBtaXBzbGUtKiBcCiAJfCBtaXBzMTYtKiBcCiAJfCBtaXBzNjQtKiB8IG1pcHM2NGVsLSogXAotCXwgbWlwczY0dnItKiB8IG1pcHM2NHZyZWwtKiBcCisJfCBtaXBzNjRvY3Rlb24tKiB8IG1pcHM2NG9jdGVvbmVsLSogXAogCXwgbWlwczY0b3Jpb24tKiB8IG1pcHM2NG9yaW9uZWwtKiBcCisJfCBtaXBzNjRyNTkwMC0qIHwgbWlwczY0cjU5MDBlbC0qIFwKKwl8IG1pcHM2NHZyLSogfCBtaXBzNjR2cmVsLSogXAogCXwgbWlwczY0dnI0MTAwLSogfCBtaXBzNjR2cjQxMDBlbC0qIFwKIAl8IG1pcHM2NHZyNDMwMC0qIHwgbWlwczY0dnI0MzAwZWwtKiBcCiAJfCBtaXBzNjR2cjUwMDAtKiB8IG1pcHM2NHZyNTAwMGVsLSogXApAQCAtMzUxLDI3ICszNzksMzAgQEAKIAl8IG1taXgtKiBcCiAJfCBtdC0qIFwKIAl8IG1zcDQzMC0qIFwKKwl8IG5kczMyLSogfCBuZHMzMmxlLSogfCBuZHMzMmJlLSogXAogCXwgbmlvcy0qIHwgbmlvczItKiBcCiAJfCBub25lLSogfCBucDEtKiB8IG5zMTZrLSogfCBuczMyay0qIFwKIAl8IG9yaW9uLSogXAogCXwgcGRwMTAtKiB8IHBkcDExLSogfCBwai0qIHwgcGpsLSogfCBwbi0qIHwgcG93ZXItKiBcCiAJfCBwb3dlcnBjLSogfCBwb3dlcnBjNjQtKiB8IHBvd2VycGM2NGxlLSogfCBwb3dlcnBjbGUtKiB8IHBwY2JlLSogXAogCXwgcHlyYW1pZC0qIFwKLQl8IHJvbXAtKiB8IHJzNjAwMC0qIFwKLQl8IHNoLSogfCBzaFsxMjM0XS0qIHwgc2hbMjRdYS0qIHwgc2hbMjNdZS0qIHwgc2hbMzRdZWItKiB8IHNoZWItKiB8IHNoYmUtKiBcCisJfCByb21wLSogfCByczYwMDAtKiB8IHJ4LSogXAorCXwgc2gtKiB8IHNoWzEyMzRdLSogfCBzaFsyNF1hLSogfCBzaFsyNF1hZWItKiB8IHNoWzIzXWUtKiB8IHNoWzM0XWViLSogfCBzaGViLSogfCBzaGJlLSogXAogCXwgc2hsZS0qIHwgc2hbMTIzNF1sZS0qIHwgc2gzZWxlLSogfCBzaDY0LSogfCBzaDY0bGUtKiBcCiAJfCBzcGFyYy0qIHwgc3BhcmM2NC0qIHwgc3BhcmM2NGItKiB8IHNwYXJjNjR2LSogfCBzcGFyYzg2eC0qIHwgc3BhcmNsZXQtKiBcCiAJfCBzcGFyY2xpdGUtKiBcCiAJfCBzcGFyY3Y4LSogfCBzcGFyY3Y5LSogfCBzcGFyY3Y5Yi0qIHwgc3BhcmN2OXYtKiB8IHN0cm9uZ2FybS0qIHwgc3YxLSogfCBzeD8tKiBcCiAJfCB0YWhvZS0qIHwgdGh1bWItKiBcCiAJfCB0aWMzMC0qIHwgdGljNHgtKiB8IHRpYzU0eC0qIHwgdGljNTV4LSogfCB0aWM2eC0qIHwgdGljODAtKiBcCisJfCB0aWxlLSogfCB0aWxlZ3gtKiBcCiAJfCB0cm9uLSogXAorCXwgdWJpY29tMzItKiBcCiAJfCB2ODUwLSogfCB2ODUwZS0qIHwgdmF4LSogXAogCXwgd2UzMmstKiBcCiAJfCB4ODYtKiB8IHg4Nl82NC0qIHwgeGMxNngtKiB8IHhwczEwMC0qIHwgeHNjYWxlLSogfCB4c2NhbGVlW2JsXS0qIFwKIAl8IHhzdG9ybXkxNi0qIHwgeHRlbnNhKi0qIFwKIAl8IHltcC0qIFwKLQl8IHo4ay0qKQorCXwgejhrLSogfCB6ODAtKikKIAkJOzsKIAkjIFJlY29nbml6ZSB0aGUgYmFzaWMgQ1BVIHR5cGVzIHdpdGhvdXQgY29tcGFueSBuYW1lLCB3aXRoIGdsb2IgbWF0Y2guCiAJeHRlbnNhKikKQEAgLTQzOSw2ICs0NzAsMTAgQEAKIAkJYmFzaWNfbWFjaGluZT1tNjhrLWFwb2xsbwogCQlvcz0tYnNkCiAJCTs7CisJYXJvcykKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCW9zPS1hcm9zCisJCTs7CiAJYXV4KQogCQliYXNpY19tYWNoaW5lPW02OGstYXBwbGUKIAkJb3M9LWF1eApAQCAtNDU1LDEwICs0OTAsMjcgQEAKIAkJYmFzaWNfbWFjaGluZT1iZmluLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCiAJCW9zPS1saW51eAogCQk7OworCWJsdWVnZW5lKikKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWlibQorCQlvcz0tY25rCisJCTs7CisJYzU0eC0qKQorCQliYXNpY19tYWNoaW5lPXRpYzU0eC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWM1NXgtKikKKwkJYmFzaWNfbWFjaGluZT10aWM1NXgtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwljNngtKikKKwkJYmFzaWNfbWFjaGluZT10aWM2eC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OwogCWM5MCkKIAkJYmFzaWNfbWFjaGluZT1jOTAtY3JheQogCQlvcz0tdW5pY29zCiAJCTs7CisgICAgICAgIGNlZ2NjKQorCQliYXNpY19tYWNoaW5lPWFybS11bmtub3duCisJCW9zPS1jZWdjYworCQk7OwogCWNvbnZleC1jMSkKIAkJYmFzaWNfbWFjaGluZT1jMS1jb252ZXgKIAkJb3M9LWJzZApAQCAtNTI2LDYgKzU3OCwxMCBAQAogCQliYXNpY19tYWNoaW5lPW04OGstbW90b3JvbGEKIAkJb3M9LXN5c3YzCiAJCTs7CisJZGljb3MpCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1wYworCQlvcz0tZGljb3MKKwkJOzsKIAlkamdwcCkKIAkJYmFzaWNfbWFjaGluZT1pNTg2LXBjCiAJCW9zPS1tc2Rvc2RqZ3BwCkBAIC02OTksNiArNzU1LDkgQEAKIAkJYmFzaWNfbWFjaGluZT1uczMyay11dGVrCiAJCW9zPS1zeXN2CiAJCTs7CisgICAgICAgIG1pY3JvYmxhemUpCisJCWJhc2ljX21hY2hpbmU9bWljcm9ibGF6ZS14aWxpbngKKwkJOzsKIAltaW5ndzMyKQogCQliYXNpY19tYWNoaW5lPWkzODYtcGMKIAkJb3M9LW1pbmd3MzIKQEAgLTgwMyw2ICs4NjIsMTIgQEAKIAlucDEpCiAJCWJhc2ljX21hY2hpbmU9bnAxLWdvdWxkCiAJCTs7CisgICAgICAgIG5lby10YW5kZW0pCisJCWJhc2ljX21hY2hpbmU9bmVvLXRhbmRlbQorCQk7OworICAgICAgICBuc2UtdGFuZGVtKQorCQliYXNpY19tYWNoaW5lPW5zZS10YW5kZW0KKwkJOzsKIAluc3ItdGFuZGVtKQogCQliYXNpY19tYWNoaW5lPW5zci10YW5kZW0KIAkJOzsKQEAgLTEwMzcsMTcgKzExMDIsMTAgQEAKIAkJYmFzaWNfbWFjaGluZT10OTAtY3JheQogCQlvcz0tdW5pY29zCiAJCTs7Ci0JdGljNTR4IHwgYzU0eCopCi0JCWJhc2ljX21hY2hpbmU9dGljNTR4LXVua25vd24KLQkJb3M9LWNvZmYKLQkJOzsKLQl0aWM1NXggfCBjNTV4KikKLQkJYmFzaWNfbWFjaGluZT10aWM1NXgtdW5rbm93bgotCQlvcz0tY29mZgotCQk7OwotCXRpYzZ4IHwgYzZ4KikKLQkJYmFzaWNfbWFjaGluZT10aWM2eC11bmtub3duCi0JCW9zPS1jb2ZmCisgICAgICAgICMgVGhpcyBtdXN0IGJlIG1hdGNoZWQgYmVmb3JlIHRpbGUqLgorICAgICAgICB0aWxlZ3gqKQorCQliYXNpY19tYWNoaW5lPXRpbGVneC11bmtub3duCisJCW9zPS1saW51eC1nbnUKIAkJOzsKIAl0aWxlKikKIAkJYmFzaWNfbWFjaGluZT10aWxlLXVua25vd24KQEAgLTExMjgsNiArMTE4NiwxMCBAQAogCQliYXNpY19tYWNoaW5lPXo4ay11bmtub3duCiAJCW9zPS1zaW0KIAkJOzsKKwl6ODAtKi1jb2ZmKQorCQliYXNpY19tYWNoaW5lPXo4MC11bmtub3duCisJCW9zPS1zaW0KKwkJOzsKIAlub25lKQogCQliYXNpY19tYWNoaW5lPW5vbmUtbm9uZQogCQlvcz0tbm9uZQpAQCAtMTE2Niw3ICsxMjI4LDcgQEAKIAl3ZTMyaykKIAkJYmFzaWNfbWFjaGluZT13ZTMyay1hdHQKIAkJOzsKLQlzaFsxMjM0XSB8IHNoWzI0XWEgfCBzaFszNF1lYiB8IHNoWzEyMzRdbGUgfCBzaFsyM11lbGUpCisJc2hbMTIzNF0gfCBzaFsyNF1hIHwgc2hbMjRdYWViIHwgc2hbMzRdZWIgfCBzaFsxMjM0XWxlIHwgc2hbMjNdZWxlKQogCQliYXNpY19tYWNoaW5lPXNoLXVua25vd24KIAkJOzsKIAlzcGFyYyB8IHNwYXJjdjggfCBzcGFyY3Y5IHwgc3BhcmN2OWIgfCBzcGFyY3Y5dikKQEAgLTEyMTYsNiArMTI3OCw5IEBACiAgICAgICAgICMgRmlyc3QgbWF0Y2ggc29tZSBzeXN0ZW0gdHlwZSBhbGlhc2VzCiAgICAgICAgICMgdGhhdCBtaWdodCBnZXQgY29uZnVzZWQgd2l0aCB2YWxpZCBzeXN0ZW0gdHlwZXMuCiAJIyAtc29sYXJpcyogaXMgYSBiYXNpYyBzeXN0ZW0gdHlwZSwgd2l0aCB0aGlzIG9uZSBleGNlcHRpb24uCisgICAgICAgIC1hdXJvcmF1eCkKKwkgICAgICAgIG9zPS1hdXJvcmF1eAorCQk7OwogCS1zb2xhcmlzMSB8IC1zb2xhcmlzMS4qKQogCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8c29sYXJpczF8c3Vub3M0fCdgCiAJCTs7CkBAIC0xMjM2LDEwICsxMzAxLDExIEBACiAJIyBFYWNoIGFsdGVybmF0aXZlIE1VU1QgRU5EIElOIEEgKiwgdG8gbWF0Y2ggYSB2ZXJzaW9uIG51bWJlci4KIAkjIC1zeXN2KiBpcyBub3QgaGVyZSBiZWNhdXNlIGl0IGNvbWVzIGxhdGVyLCBhZnRlciBzeXN2cjQuCiAJLWdudSogfCAtYnNkKiB8IC1tYWNoKiB8IC1taW5peCogfCAtZ2VuaXgqIHwgLXVsdHJpeCogfCAtaXJpeCogXAotCSAgICAgIHwgLSp2bXMqIHwgLXNjbyogfCAtZXNpeCogfCAtaXNjKiB8IC1haXgqIHwgLXN1bm9zIHwgLXN1bm9zWzM0XSpcCi0JICAgICAgfCAtaHB1eCogfCAtdW5vcyogfCAtb3NmKiB8IC1sdW5hKiB8IC1kZ3V4KiB8IC1zb2xhcmlzKiB8IC1zeW0qIFwKKwkgICAgICB8IC0qdm1zKiB8IC1zY28qIHwgLWVzaXgqIHwgLWlzYyogfCAtYWl4KiB8IC1jbmsqIHwgLXN1bm9zIHwgLXN1bm9zWzM0XSpcCisJICAgICAgfCAtaHB1eCogfCAtdW5vcyogfCAtb3NmKiB8IC1sdW5hKiB8IC1kZ3V4KiB8IC1hdXJvcmF1eCogfCAtc29sYXJpcyogXAorCSAgICAgIHwgLXN5bSogfCAta29wZW5zb2xhcmlzKiBcCiAJICAgICAgfCAtYW1pZ2FvcyogfCAtYW1pZ2Fkb3MqIHwgLW1zZG9zKiB8IC1uZXdzb3MqIHwgLXVuaWNvcyogfCAtYW9mKiBcCi0JICAgICAgfCAtYW9zKiBcCisJICAgICAgfCAtYW9zKiB8IC1hcm9zKiBcCiAJICAgICAgfCAtbmluZHkqIHwgLXZ4c2ltKiB8IC12eHdvcmtzKiB8IC1lYm1vbiogfCAtaG1zKiB8IC1tdnMqIFwKIAkgICAgICB8IC1jbGl4KiB8IC1yaXNjb3MqIHwgLXVuaXBsdXMqIHwgLWlyaXMqIHwgLXJ0dSogfCAteGVuaXgqIFwKIAkgICAgICB8IC1oaXV4KiB8IC0zODZic2QqIHwgLWtuZXRic2QqIHwgLW1pcmJzZCogfCAtbmV0YnNkKiBcCkBAIC0xMjQ4LDkgKzEzMTQsMTAgQEAKIAkgICAgICB8IC1ib3N4KiB8IC1uZXh0c3RlcCogfCAtY3h1eCogfCAtYW91dCogfCAtZWxmKiB8IC1vYWJpKiBcCiAJICAgICAgfCAtcHR4KiB8IC1jb2ZmKiB8IC1lY29mZiogfCAtd2lubnQqIHwgLWRvbWFpbiogfCAtdnN0YSogXAogCSAgICAgIHwgLXVkaSogfCAtZWFiaSogfCAtbGl0ZXMqIHwgLWllZWUqIHwgLWdvMzIqIHwgLWF1eCogXAotCSAgICAgIHwgLWNob3J1c29zKiB8IC1jaG9ydXNyZGIqIFwKKwkgICAgICB8IC1jaG9ydXNvcyogfCAtY2hvcnVzcmRiKiB8IC1jZWdjYyogXAogCSAgICAgIHwgLWN5Z3dpbiogfCAtcGUqIHwgLXBzb3MqIHwgLW1vc3MqIHwgLXByb2VsZiogfCAtcnRlbXMqIFwKLQkgICAgICB8IC1taW5ndzMyKiB8IC1saW51eC1nbnUqIHwgLWxpbnV4LW5ld2xpYiogfCAtbGludXgtdWNsaWJjKiBcCisJICAgICAgfCAtbWluZ3czMiogfCAtbGludXgtZ251KiB8IC1saW51eC1hbmRyb2lkKiBcCisJICAgICAgfCAtbGludXgtbmV3bGliKiB8IC1saW51eC11Y2xpYmMqIFwKIAkgICAgICB8IC11eHB2KiB8IC1iZW9zKiB8IC1tcGVpeCogfCAtdWRrKiBcCiAJICAgICAgfCAtaW50ZXJpeCogfCAtdXdpbiogfCAtbWtzKiB8IC1yaGFwc29keSogfCAtZGFyd2luKiB8IC1vcGVuZWQqIFwKIAkgICAgICB8IC1vcGVuc3RlcCogfCAtb3NraXQqIHwgLWNvbml4KiB8IC1wdzMyKiB8IC1ub25zdG9wdXgqIFwKQEAgLTEyNTgsNyArMTMyNSw3IEBACiAJICAgICAgfCAtb3MyKiB8IC12b3MqIHwgLXBhbG1vcyogfCAtdWNsaW51eCogfCAtbnVjbGV1cyogXAogCSAgICAgIHwgLW1vcnBob3MqIHwgLXN1cGVydXgqIHwgLXJ0bWsqIHwgLXJ0bWstbm92YSogfCAtd2luZGlzcyogXAogCSAgICAgIHwgLXBvd2VybWF4KiB8IC1kbml4KiB8IC1ueDYgfCAtbng3IHwgLXNlaSogfCAtZHJhZ29uZmx5KiBcCi0JICAgICAgfCAtc2t5b3MqIHwgLWhhaWt1KiB8IC1yZG9zKiB8IC10b3BwZXJzKiB8IC1kcm9wcyopCisJICAgICAgfCAtc2t5b3MqIHwgLWhhaWt1KiB8IC1yZG9zKiB8IC10b3BwZXJzKiB8IC1kcm9wcyogfCAtZXMqKQogCSMgUmVtZW1iZXIsIGVhY2ggYWx0ZXJuYXRpdmUgTVVTVCBFTkQgSU4gKiwgdG8gbWF0Y2ggYSB2ZXJzaW9uIG51bWJlci4KIAkJOzsKIAktcW54KikKQEAgLTEzODgsNiArMTQ1NSwxMSBAQAogCS16dm1vZSkKIAkJb3M9LXp2bW9lCiAJCTs7CisJLWRpY29zKikKKwkJb3M9LWRpY29zCisJCTs7CisgICAgICAgIC1uYWNsKikKKwkgICAgICAgIDs7CiAJLW5vbmUpCiAJCTs7CiAJKikKQEAgLTE0MjgsNiArMTUwMCwxNSBAQAogICAgICAgICBjNHgtKiB8IHRpYzR4LSopCiAgICAgICAgIAlvcz0tY29mZgogCQk7OworCXRpYzU0eC0qKQorCQlvcz0tY29mZgorCQk7OworCXRpYzU1eC0qKQorCQlvcz0tY29mZgorCQk7OworCXRpYzZ4LSopCisJCW9zPS1jb2ZmCisJCTs7CiAJIyBUaGlzIG11c3QgY29tZSBiZWZvcmUgdGhlICotZGVjIGVudHJ5LgogCXBkcDEwLSopCiAJCW9zPS10b3BzMjAKQEAgLTE1ODUsNyArMTY2Niw3IEBACiAJCQktc3Vub3MqKQogCQkJCXZlbmRvcj1zdW4KIAkJCQk7OwotCQkJLWFpeCopCisJCQktY25rKnwtYWl4KikKIAkJCQl2ZW5kb3I9aWJtCiAJCQkJOzsKIAkJCS1iZW9zKikKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCA5MzViZWUwLi5jZDg2OTNiIDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCA0MjE1YTMwLi5lMWI3NjEwIDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0xMCw5ICsxMCw5IEBACiAjCiAjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBzY3JpcHQuCiAjCi1BQ19JTklUKFtOZXQtU05NUF0sIFs1LjYuMl0sIFtuZXQtc25tcC1jb2RlcnNAbGlzdHMuc291cmNlZm9yZ2UubmV0XSkKK0FDX0lOSVQoW05ldC1TTk1QXSwgWzUuNy4zLnByZTNdLCBbbmV0LXNubXAtY29kZXJzQGxpc3RzLnNvdXJjZWZvcmdlLm5ldF0pCiBBQ19QUkVSRVEoWzIuNjNdKQotQUNfQ09ORklHX1NSQ0RJUihbYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5jXSkKK0FDX0NPTkZJR19TUkNESVIoW2FnZW50L3NubXBkLmNdKQogQUNfUkVWSVNJT04oWyRSZXZpc2lvbiRdKQogCiBBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCkBAIC03Miw2ICs3Miw3IEBACiBBQ19TVUJTVChBR0VOVExJQlMpCiBBQ19TVUJTVChPVEhFUkFHRU5UTElCT0JKUykKIEFDX1NVQlNUKE9USEVSQUdFTlRMSUJMT0JKUykKK0FDX1NVQlNUKE9USEVSQUdFTlRMSUJMRlRTKQogCiBBQ19TVUJTVChETExJQlMpCiAKQEAgLTk0LDYgKzk1LDcgQEAKIEFDX0NPTkZJR19GSUxFUyhbbmV0LXNubXAtY3JlYXRlLXYzLXVzZXI6bmV0LXNubXAtY3JlYXRlLXYzLXVzZXIuaW5dLAogCQlbY2htb2QgK3ggbmV0LXNubXAtY3JlYXRlLXYzLXVzZXJdKQogQUNfQ09ORklHX0ZJTEVTKFtkaXN0L2dlbmVyYXRpb24tc2NyaXB0cy9nZW4tdmFyaWFibGVzOmRpc3QvZ2VuZXJhdGlvbi1zY3JpcHRzL2dlbi12YXJpYWJsZXMuaW5dKQorQUNfQ09ORklHX0ZJTEVTKFtsb2NhbC9zbm1wY29uZl0pCiAKIEFDX0NPTkZJR19DT01NQU5EUyhbZGVmYXVsdF0sIGVjaG8gdGltZXN0YW1wID4gc3RhbXAtaCkKIApkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfYWdlbnQgYi9jb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19hZ2VudAppbmRleCA1Y2IzMGJiLi43Njc0NmZkIDEwMDY0NAotLS0gYS9jb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19hZ2VudAorKysgYi9jb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19hZ2VudApAQCAtMjgsNyArMjgsNyBAQAogQUNfTVNHX0NIRUNLSU5HKFtmb3IgYW5kIGNvbmZpZ3VyaW5nIG1pYiBtb2R1bGVzIHRvIHVzZV0pCiAKICMgc2V0IHVwIHRoZSBDUFAgY29tbWFuZAotTU9EVUxFQ1BQPSIkQ1BQICRQQVJUSUFMVEFSR0VURkxBR1MgLUkke3NyY2Rpcn0vaW5jbHVkZSAtSSR7c3JjZGlyfS9hZ2VudC9taWJncm91cCIKK01PRFVMRUNQUD0iJENQUCAkUEFSVElBTFRBUkdFVEZMQUdTICRDUFBGTEFHUyAtRE5FVFNOTVBfRkVBVFVSRV9DSEVDS0lORyAtSSR7c3JjZGlyfS9pbmNsdWRlIC1JJHtzcmNkaXJ9L2FnZW50L21pYmdyb3VwIgogaWYgdGVzdCAieCRlbmFibGVfbWZkX3Jld3JpdGVzIiA9ICJ4eWVzIjsgdGhlbgogICBNT0RVTEVDUFA9IiRNT0RVTEVDUFAgLURORVRTTk1QX0VOQUJMRV9NRkRfUkVXUklURVMiCiBmaQpAQCAtNzcsNiArNzcsOCBAQAogICBmaQogZG9uZQogCituZXdfbW9kdWxlX2xpc3Q9YGVjaG8gJG5ld19tb2R1bGVfbGlzdCB8IHRyICcgJyAnXG4nIHwgc29ydCB8IHRyICdcbicgJyAnIHwgJFNFRCAncy8gJC8vJ2AKKwogQUNfTVNHX1JFU1VMVChbJG5ld19tb2R1bGVfbGlzdC5dKQogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNzQsOSArMTc2LDkgQEAKICAgICAjIGJ1aWxkIGEgcHNldWRvIGluY2x1ZGUgaGVhZGVyIHRoYXQgaW5jbHVkZXMgY3VycmVudCBjb25maWcgYW5kCiAgICAgIyBzeXN0ZW0gc3ltYm9sczoKICAgICBybSAtZiBjb25mdGVzdC4kYWNfZXh0IG1vZHVsZV90bXBfaGVhZGVyLmgKLSAgICBBQ19MQU5HX0NPTkZURVNUKEFDX0xBTkdfU09VUkNFKFtbCisgICAgQUNfTEFOR19DT05GVEVTVChbQUNfTEFOR19TT1VSQ0UoW1sKICNpbmNsdWRlIE5FVFNOTVBfU1lTVEVNX0lOQ0xVREVfRklMRQotI2luY2x1ZGUgIiRzcmNkaXIvJG1pYmRpci8kaS5oIl1dKSkKKyNpbmNsdWRlICIkc3JjZGlyLyRtaWJkaXIvJGkuaCJdXSldKQogICAgIG12IGNvbmZ0ZXN0LiRhY19leHQgbW9kdWxlX3RtcF9oZWFkZXIuaAogCiAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTg5LDcgKzE5MSw4IEBACiAgICAgbW9kdWxlX3R5cGU9bWliX21vZHVsZQogICAgIGlmIHRlc3QgLWYgJHNyY2Rpci8kbWliZGlyLyRpLmg7IHRoZW4KICAgICAgIGNoYW5nZXF1b3RlKCwgKQotICAgICAgbW9kdWxlX3R5cGU9YCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8ICRHUkVQIGNvbmZpZ19iZWxvbmdzX2luIHwgJFNFRCAnc0AuKmNvbmZpZ19iZWxvbmdzX2luKFwoW14pXSpcKSkuKkBcMUAnYAorICAgICAgbW9kdWxlX3R5cGU9YCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8IFwKKyAgICAgICAgICAgICAgICAgICAkU0VEIC1uICdzQC4qY29uZmlnX2JlbG9uZ3NfaW4oXChbXildKlwpKS4qQFwxQHAnYAogICAgICAgY2hhbmdlcXVvdGUoWywgXSkKICAgICBmaQogICAgIGlmIHRlc3QgIngkbW9kdWxlX3R5cGUiID0gIngiIDsgdGhlbgpAQCAtMjcwLDcgKzI3Myw4IEBACiAgICAgICAgICMgY2hlY2sgaWYgJGkgaGFzIGFueSBjb25mbGljdHMKICAgICAgICAgIwogICAgICAgICBBSF9UT1AoWyNkZWZpbmUgY29uZmlnX2V4Y2x1ZGUoeCldKQotCW5ld19saXN0X2V4Y2w9YCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8ICRHUkVQIGNvbmZpZ19leGNsdWRlIHwgJFNFRCAncy8uKmNvbmZpZ19leGNsdWRlKFwoLipcKSkuKi9cMS8nYAorICAgICAgICBuZXdfbGlzdF9leGNsPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBcCisgICAgICAgICAgICAgICAgICAgICAgICRTRUQgLW4gJ3MvLipjb25maWdfZXhjbHVkZShcKC4qXCkpLiovXDEvcCdgCiAJaWYgdGVzdCAieCRuZXdfbGlzdF9leGNsIiAhPSAieCI7IHRoZW4KICAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiJGkgZXhjbHVkZXMgJG5ld19saXN0X2V4Y2wiKQogCSAgZm9yIGogaW4gJG5ld19saXN0X2V4Y2wKQEAgLTI5OSw3ICszMDMsOCBAQAogICAgICAgICAjCiAgICAgICAgIEFIX1RPUChbI2RlZmluZSBjb25maWdfYXJjaF9yZXF1aXJlKHgseSldKQogICAgICAgICBjaGFuZ2VxdW90ZSgsICkKLSAgICAgICAgbmV3X2xpc3RfYXJjaD1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgJEdSRVAgY29uZmlnX2FyY2hfcmVxdWlyZSB8ICRTRUQgJ3MvLipjb25maWdfYXJjaF9yZXF1aXJlKCAqXChbXiBdKlwpICosICpcKFteIF0qXCkgKikuKi9cMS14YXJjaHgtXDIvJ2AKKyAgICAgICAgbmV3X2xpc3RfYXJjaD1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAkU0VEIC1uICdzLy4qY29uZmlnX2FyY2hfcmVxdWlyZSggKlwoW14gXSpcKSAqLCAqXChbXiBdKlwpICopLiovXDEteGFyY2h4LVwyL3AnYAogICAgICAgICBjaGFuZ2VxdW90ZShbLCBdKQogCWlmIHRlc3QgIngkbmV3X2xpc3RfYXJjaCIgIT0gIngiOyB0aGVuCiAgICAgICAgICAgZm9yIGogaW4gJG5ld19saXN0X2FyY2gKQEAgLTMyMCwxMSArMzI1LDcgQEAKICAgICAgICAgIwogICAgICAgICBBSF9UT1AoWyNkZWZpbmUgY29uZmlnX3ZlcnNpb25fcmVxdWlyZSh4KV0pCiAgICAgICAgIFtuZXdfbGlzdF9hbHQzPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBcCi0gICAgICAgICAgICAkR1JFUCBjb25maWdfdmVyc2lvbl9yZXF1aXJlIHwgXAotICAgICAgICAgICAgJFNFRCAtZSAncy8gICovIC9nJyBcCi0gICAgICAgICAgICAgICAgIC1lICdzLy4qY29uZmlnX3ZlcnNpb25fcmVxdWlyZSgoICpcKFteKV0qXCkgKikpLiovXDEvJyBcCi0gICAgICAgICAgICAgICAgIC1lICdzLyAqLCAqLywvZycgfCBcCi0gICAgICAgICAgICBhd2sgJworICAgICAgICAgICAgJEFXSyAnCiAgICAgICAgICAgICAgICAgQkVHSU4gewogICAgICAgICAgICAgICAgICAgICBpZigiJyIkZW5hYmxlX25ld19mZWF0dXJlcyInIiA9PSAieWVzIikKICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZD0ibWF4IjsKQEAgLTMzNiw3ICszMzcsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgc3BsaXQoIiciJHdpdGhfZmVhdHVyZXNfb2YiJyIsIGEpOwogICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPXNwcmludGYoIiUwM2QlMDNkJTAzZCUwM2QiLCBhWzFdLCBhWzJdLCBhWzNdLCBhWzRdKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC9jb25maWdfdmVyc2lvbl9yZXF1aXJlLyB7CisgICAgICAgICAgICAgICAgICAgIGdzdWIoIl4uKmNvbmZpZ192ZXJzaW9uX3JlcXVpcmUgKlxcXFwoXFxcXCgiLCAiIik7CisgICAgICAgICAgICAgICAgICAgIGdzdWIoIlxcXFwpXFxcXCkuKiQiLCAiIik7CisgICAgICAgICAgICAgICAgICAgIGdzdWIoIiwgKiIsICIsIik7CiAgICAgICAgICAgICAgICAgICAgIEZTID0gIiwiOwogICAgICAgICAgICAgICAgICAgICBuID0gc3BsaXQoJDAsIGEpOwogICAgICAgICAgICAgICAgICAgICBGUyA9ICIuIjsKQEAgLTM2Miw3ICszNjYsOCBAQAogICAgICAgICAjIGNoZWNrIGlmICRpIGhhcyBhbnkgb3RoZXIgcmVxdWlyZWQgbW9kdWxlcwogICAgICAgICAjCiAgICAgICAgIEFIX1RPUChbI2RlZmluZSBjb25maWdfcmVxdWlyZSh4KV0pCi0JbmV3X2xpc3Q9IiRuZXdfbGlzdCBgJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgJEdSRVAgY29uZmlnX3JlcXVpcmUgfCAkU0VEICdzLy4qY29uZmlnX3JlcXVpcmUoXCguKlwpKS4qL1wxLydgIgorICAgICAgICBuZXdfbGlzdD0iJG5ld19saXN0IGAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBcCisgICAgICAgICAgICAgICAgICAkU0VEIC1uICdzLy4qY29uZmlnX3JlcXVpcmUoXCguKlwpKS4qL1wxL3AnYCIKICAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiAkaSB3aWxsIHRlc3Q6ICRuZXdfbGlzdCIpCiAJaWYgdGVzdCAieCRuZXdfbGlzdCIgIT0gIngiOyB0aGVuCiAJICBmb3IgaiBpbiAkbmV3X2xpc3QKQEAgLTM5OCw3ICs0MDMsOCBAQAogICAgICAgICAjIGNoZWNrIGlmICRpIGhhcyBhbnkgbWlicyB0byBhZGQKICAgICAgICAgIwogICAgICAgICBBSF9UT1AoWyNkZWZpbmUgY29uZmlnX2FkZF9taWIoeCldKQotCW5ld19taWJzPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCAkR1JFUCBjb25maWdfYWRkX21pYiB8ICRTRUQgJ3MvLipjb25maWdfYWRkX21pYihcKC4qXCkpLiovXDEvJ2AKKyAgICAgICAgbmV3X21pYnM9YCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8IFwKKyAgICAgICAgICAgICAgICAgICRTRUQgLW4gJ3MvLipjb25maWdfYWRkX21pYihcKC4qXCkpLiovXDEvcCdgCiAJaWYgdGVzdCAieCRuZXdfbWlicyIgIT0gIngiOyB0aGVuCiAJICAgIGZvciBqIGluICRuZXdfbWlicwogCQlkbwpAQCAtNDM0LDcgKzQ0MCw3IEBACiAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICMgY2hlY2sgZm9yIHVuc3VwcG9ydGVkIGNvbmZpZ19sb2FkX21pYgogICAgICAgICAjCi0gICAgICAgIGlmICRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8ICRHUkVQIGNvbmZpZ19sb2FkX21pYiA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgICAgIGlmICRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8ICRHUkVQIC1xIGNvbmZpZ19sb2FkX21pYjsgdGhlbgogICAgICAgICAgIEFDX01TR19XQVJOKFttaWIgbW9kdWxlIGVycm9yXSkKICAgICAgIAkgIEFDX01TR19XQVJOKFttaWIgbW9kdWxlICIkaSIgdXNlcyB0aGUgImNvbmZpZ19sb2FkX21pYiIgZGlyZWN0aXZlLCB3aGljaCBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiAgSXQgcHJvYmFibHkgd29uJ3Qgd29yay5dKQogICAgICAgICBmaSAjIGdyZXAgY29uZmlnX2xvYWRfbWliCkBAIC00NDUsNyArNDUxLDggQEAKICAgICAgICAgIwogICAgICAgICBBSF9UT1AoWyNkZWZpbmUgY29uZmlnX3BhcnNlX2RvdF9jb25mKHcseCx5LHopXSkKICAgICAgICAgY2hhbmdlcXVvdGUoLCApCi0gICAgICAgICRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8ICRHUkVQIGNvbmZpZ19wYXJzZV9kb3RfY29uZiB8ICRTRUQgJ3NALipjb25maWdfcGFyc2VfZG90X2NvbmYoXChbXildKlwpLCAqXChbXiksXSpcKSwgKlwoW14pLF0qXCksICpcKFteKSxdKlwpKS4qQHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzbm1wZCIsXDEsIFwyLCBcMywgXDQpO0AnID4+ICRtaWJkaXIvbWliX21vZHVsZV9kb3RfY29uZi5oCisgICAgICAgICRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8IFwKKyAgICAgICAgJFNFRCAtbiAnc0AuKmNvbmZpZ19wYXJzZV9kb3RfY29uZihcKFteKV0qXCksICpcKFteKSxdKlwpLCAqXChbXiksXSpcKSwgKlwoW14pLF0qXCkpLipAcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXBkIixcMSwgXDIsIFwzLCBcNCk7QHAnID4+ICRtaWJkaXIvbWliX21vZHVsZV9kb3RfY29uZi5oCiAJY2hhbmdlcXVvdGUoWywgXSkKIAogICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00NTUsNyArNDYyLDggQEAKICAgICAgICAgIyBjaGVjayBpZiAkaSBoYXMgYW55IGVycm9ycywgb3Igd2FybmluZ3MKICAgICAgICAgIwogICAgICAgICBBSF9UT1AoWyNkZWZpbmUgY29uZmlnX2Vycm9yKHgpXSkKLQllcnJvcj1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgJEdSRVAgY29uZmlnX2Vycm9yIHwgJFNFRCAncy8uKmNvbmZpZ19lcnJvcihcKC4qXCkpLiovXDEvJ2AKKyAgICAgICAgZXJyb3I9YCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8IFwKKyAgICAgICAgICAgICAgICRTRUQgLW4gJ3MvLipjb25maWdfZXJyb3IoXCguKlwpKS4qL1wxL3AnYAogCWlmIHRlc3QgIngkZXJyb3IiICE9ICJ4IjsgdGhlbgogICAgICAgICAgIGVjaG8KICAgICAgICAgICBlY2hvCkBAIC00NjcsNyArNDc1LDggQEAKICAgICAgIAkjICAtIHVzZWQgdG8gc2lnbmFsIGEgY29uZmlndXJhdGlvbiAid2FybmluZyIgdG8gYmUgcHJpbnRlZCB0byB0aGUgdXNlcgogICAgICAgICAjCiAgICAgICAgIEFIX1RPUChbI2RlZmluZSBjb25maWdfd2FybmluZyh4KV0pCi0Jd2FybmluZz1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgJEdSRVAgY29uZmlnX3dhcm5pbmcgfCAkU0VEICdzLy4qY29uZmlnX3dhcm5pbmcoXCguKlwpKS4qL1wxLydgCisgICAgICAgIHdhcm5pbmc9YCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8IFwKKyAgICAgICAgICAgICAgICAgJFNFRCAtbiAncy8uKmNvbmZpZ193YXJuaW5nKFwoLipcKSkuKi9cMS9wJ2AKIAlpZiB0ZXN0ICJ4JHdhcm5pbmciICE9ICJ4IjsgdGhlbgogICAgICAgICAgIGFsbF93YXJuaW5ncz0iJGFsbF93YXJuaW5ncyAkd2FybmluZwogIgpAQCAtNjc4LDI5ICs2ODcsMzQgQEAKICMKIGNoYW5nZXF1b3RlKCwgKQogCi1mb3IgaSBpbiBtb2R1bGVfbGlzdF9vIG1vZHVsZV9saXN0X2MgbW9kdWxlX2xpc3RfbG8gbWliX21vZHVsZV9saXN0X28gbWliX21vZHVsZV9saXN0X2MgbWliX21vZHVsZV9saXN0X2xvIG1pYmdyb3VwX2xpc3RfbyBtaWJncm91cF9saXN0X2xvIGFnZW50X21vZHVsZV9saXN0X28gYWdlbnRfbW9kdWxlX2xpc3RfYyBhZ2VudF9tb2R1bGVfbGlzdF9sbyBhZ2VudGdyb3VwX2xpc3RfbyBhZ2VudGdyb3VwX2xpc3RfbG8gOyBkbworZm9yIGkgaW4gbW9kdWxlX2xpc3RfbyBtb2R1bGVfbGlzdF9jIG1vZHVsZV9saXN0X2xvIG1vZHVsZV9saXN0X2Z0IG1pYl9tb2R1bGVfbGlzdF9vIG1pYl9tb2R1bGVfbGlzdF9jIG1pYl9tb2R1bGVfbGlzdF9sbyBtaWJfbW9kdWxlX2xpc3RfZnQgbWliZ3JvdXBfbGlzdF9vIG1pYmdyb3VwX2xpc3RfbG8gbWliZ3JvdXBfbGlzdF9mdCBhZ2VudF9tb2R1bGVfbGlzdF9vIGFnZW50X21vZHVsZV9saXN0X2MgYWdlbnRfbW9kdWxlX2xpc3RfbG8gYWdlbnRfbW9kdWxlX2xpc3RfZnQgYWdlbnRncm91cF9saXN0X28gYWdlbnRncm91cF9saXN0X2xvIGFnZW50Z3JvdXBfbGlzdF9mdCA7IGRvCiAgIGV2YWwgIiRpPW1rLyR7aX0ubWsiCiBkb25lCiAKICRTRUQgJ3MvXm1vZHVsZV9saXN0X2NvZGUvbW9kdWxlX2xpc3Rfby87cy9cKFtePV1cKSAgKlxcL1wxLm8gXFwvZycgIDwgJG1vZHVsZV9saXN0X2NvZGUgID4gJG1vZHVsZV9saXN0X28KICRTRUQgJ3MvXm1vZHVsZV9saXN0X2NvZGUvbW9kdWxlX2xpc3RfYy87cy9cKFtePV1cKSAgKlxcL1wxLmMgXFwvZycgIDwgJG1vZHVsZV9saXN0X2NvZGUgID4gJG1vZHVsZV9saXN0X2MKICRTRUQgJ3MvXm1vZHVsZV9saXN0X2NvZGUvbW9kdWxlX2xpc3RfbG8vO3MvXChbXj1dXCkgICpcXC9cMS5sbyBcXC9nJyA8ICRtb2R1bGVfbGlzdF9jb2RlICA+ICRtb2R1bGVfbGlzdF9sbworJFNFRCAncy9ebW9kdWxlX2xpc3RfY29kZS9tb2R1bGVfbGlzdF9mdC87cy9cKFtePV1cKSAgKlxcL1wxLmZ0IFxcL2cnIDwgJG1vZHVsZV9saXN0X2NvZGUgID4gJG1vZHVsZV9saXN0X2Z0CiAKICRTRUQgJ3MvXm1pYl9tb2R1bGVfbGlzdF9jb2RlL21pYl9tb2R1bGVfbGlzdF9vLztzL1woW149XVwpICAqXFwvXDEubyBcXC9nJyAgPCAkbWliX21vZHVsZV9saXN0X2NvZGUgID4gJG1pYl9tb2R1bGVfbGlzdF9vCiAkU0VEICdzL15taWJfbW9kdWxlX2xpc3RfY29kZS9taWJfbW9kdWxlX2xpc3RfYy87cy9cKFtePV1cKSAgKlxcL1wxLmMgXFwvZycgIDwgJG1pYl9tb2R1bGVfbGlzdF9jb2RlICA+ICRtaWJfbW9kdWxlX2xpc3RfYwogJFNFRCAncy9ebWliX21vZHVsZV9saXN0X2NvZGUvbWliX21vZHVsZV9saXN0X2xvLztzL1woW149XVwpICAqXFwvXDEubG8gXFwvZycgPCAkbWliX21vZHVsZV9saXN0X2NvZGUgID4gJG1pYl9tb2R1bGVfbGlzdF9sbworJFNFRCAncy9ebWliX21vZHVsZV9saXN0X2NvZGUvbWliX21vZHVsZV9saXN0X2Z0LztzL1woW149XVwpICAqXFwvXDEuZnQgXFwvZycgPCAkbWliX21vZHVsZV9saXN0X2NvZGUgID4gJG1pYl9tb2R1bGVfbGlzdF9mdAogCiAkU0VEICdzL15taWJfbW9kdWxlX2xpc3Rfby9taWJncm91cF9saXN0X28vO3NAXChbXiAJXSpcKVwub0BtaWJncm91cC9cMS5vQGcnIDwgJG1pYl9tb2R1bGVfbGlzdF9vID4gJG1pYmdyb3VwX2xpc3RfbwogJFNFRCAncy9ebWliX21vZHVsZV9saXN0X2xvL21pYmdyb3VwX2xpc3RfbG8vO3NAXChbXiAJXSpcKVwubG9AbWliZ3JvdXAvXDEubG9AZycgPCAkbWliX21vZHVsZV9saXN0X2xvID4gJG1pYmdyb3VwX2xpc3RfbG8KKyRTRUQgJ3MvXm1pYl9tb2R1bGVfbGlzdF9mdC9taWJncm91cF9saXN0X2Z0LztzQFwoW14gCV0qXClcLmZ0QG1pYmdyb3VwL1wxLmZ0QGcnIDwgJG1pYl9tb2R1bGVfbGlzdF9mdCA+ICRtaWJncm91cF9saXN0X2Z0CiAKICRTRUQgJ3MvXmFnZW50X21vZHVsZV9saXN0X2NvZGUvYWdlbnRfbW9kdWxlX2xpc3Rfby87cy9cKFtePV1cKSAgKlxcL1wxLm8gXFwvZycgIDwgJGFnZW50X21vZHVsZV9saXN0X2NvZGUgID4gJGFnZW50X21vZHVsZV9saXN0X28KICRTRUQgJ3MvXmFnZW50X21vZHVsZV9saXN0X2NvZGUvYWdlbnRfbW9kdWxlX2xpc3RfYy87cy9cKFtePV1cKSAgKlxcL1wxLmMgXFwvZycgIDwgJGFnZW50X21vZHVsZV9saXN0X2NvZGUgID4gJGFnZW50X21vZHVsZV9saXN0X2MKICRTRUQgJ3MvXmFnZW50X21vZHVsZV9saXN0X2NvZGUvYWdlbnRfbW9kdWxlX2xpc3RfbG8vO3MvXChbXj1dXCkgICpcXC9cMS5sbyBcXC9nJyA8ICRhZ2VudF9tb2R1bGVfbGlzdF9jb2RlICA+ICRhZ2VudF9tb2R1bGVfbGlzdF9sbworJFNFRCAncy9eYWdlbnRfbW9kdWxlX2xpc3RfY29kZS9hZ2VudF9tb2R1bGVfbGlzdF9mdC87cy9cKFtePV1cKSAgKlxcL1wxLmZ0IFxcL2cnIDwgJGFnZW50X21vZHVsZV9saXN0X2NvZGUgID4gJGFnZW50X21vZHVsZV9saXN0X2Z0CiAKICRTRUQgJ3MvXmFnZW50X21vZHVsZV9saXN0X28vYWdlbnRncm91cF9saXN0X28vO3NAXChbXiAJXSpcKVwub0BtaWJncm91cC9cMS5vQGcnIDwgJGFnZW50X21vZHVsZV9saXN0X28gPiAkYWdlbnRncm91cF9saXN0X28KICRTRUQgJ3MvXmFnZW50X21vZHVsZV9saXN0X2xvL2FnZW50Z3JvdXBfbGlzdF9sby87c0BcKFteIAldKlwpXC5sb0BtaWJncm91cC9cMS5sb0BnJyA8ICRhZ2VudF9tb2R1bGVfbGlzdF9sbyA+ICRhZ2VudGdyb3VwX2xpc3RfbG8KKyRTRUQgJ3MvXmFnZW50X21vZHVsZV9saXN0X2Z0L2FnZW50Z3JvdXBfbGlzdF9mdC87c0BcKFteIAldKlwpXC5mdEBtaWJncm91cC9cMS5mdEBnJyA8ICRhZ2VudF9tb2R1bGVfbGlzdF9mdCA+ICRhZ2VudGdyb3VwX2xpc3RfZnQKIAotZm9yIGkgaW4gbW9kdWxlX2xpc3RfbyBtb2R1bGVfbGlzdF9jIG1vZHVsZV9saXN0X2xvIG1pYl9tb2R1bGVfbGlzdF9vIG1pYl9tb2R1bGVfbGlzdF9jIG1pYl9tb2R1bGVfbGlzdF9sbyBtaWJncm91cF9saXN0X28gbWliZ3JvdXBfbGlzdF9sbyBhZ2VudF9tb2R1bGVfbGlzdF9vIGFnZW50X21vZHVsZV9saXN0X2MgYWdlbnRfbW9kdWxlX2xpc3RfbG8gYWdlbnRncm91cF9saXN0X28gYWdlbnRncm91cF9saXN0X2xvIDsgZG8KK2ZvciBpIGluIG1vZHVsZV9saXN0X28gbW9kdWxlX2xpc3RfYyBtb2R1bGVfbGlzdF9sbyBtb2R1bGVfbGlzdF9mdCBtaWJfbW9kdWxlX2xpc3RfbyBtaWJfbW9kdWxlX2xpc3RfYyBtaWJfbW9kdWxlX2xpc3RfbG8gbWliX21vZHVsZV9saXN0X2Z0IG1pYmdyb3VwX2xpc3RfbyBtaWJncm91cF9saXN0X2xvIG1pYmdyb3VwX2xpc3RfZnQgYWdlbnRfbW9kdWxlX2xpc3RfbyBhZ2VudF9tb2R1bGVfbGlzdF9jIGFnZW50X21vZHVsZV9saXN0X2xvIGFnZW50X21vZHVsZV9saXN0X2Z0IGFnZW50Z3JvdXBfbGlzdF9vIGFnZW50Z3JvdXBfbGlzdF9sbyBhZ2VudGdyb3VwX2xpc3RfZnQgOyBkbwogCSMgaHB1eCBtYWtlIChhdCBsZWFzdCkgZG9lc24ndCBsaWtlIGEgdHJhaWxpbmcgXCBvbiB0aGUgbGFzdAogCSMgbGluZSBldmVuIHdoZW4gdGhlIG5leHQgbGluZSBjb250YWlucyBub3RoaW5nIGJ1dAogCSMgd2hpdGVzcGFjZS4KQEAgLTcyNiwxNiArNzQwLDIxIEBACiBBQ19TVUJTVF9GSUxFKG1vZHVsZV9saXN0X2MpCiBBQ19TVUJTVF9GSUxFKG1vZHVsZV9saXN0X28pCiBBQ19TVUJTVF9GSUxFKG1vZHVsZV9saXN0X2xvKQorQUNfU1VCU1RfRklMRShtb2R1bGVfbGlzdF9mdCkKIEFDX1NVQlNUX0ZJTEUobWliX21vZHVsZV9saXN0X2MpCiBBQ19TVUJTVF9GSUxFKG1pYl9tb2R1bGVfbGlzdF9vKQogQUNfU1VCU1RfRklMRShtaWJfbW9kdWxlX2xpc3RfbG8pCitBQ19TVUJTVF9GSUxFKG1pYl9tb2R1bGVfbGlzdF9mdCkKIEFDX1NVQlNUX0ZJTEUoYWdlbnRfbW9kdWxlX2xpc3RfYykKIEFDX1NVQlNUX0ZJTEUoYWdlbnRfbW9kdWxlX2xpc3RfbykKIEFDX1NVQlNUX0ZJTEUoYWdlbnRfbW9kdWxlX2xpc3RfbG8pCitBQ19TVUJTVF9GSUxFKGFnZW50X21vZHVsZV9saXN0X2Z0KQogQUNfU1VCU1RfRklMRShtaWJncm91cF9saXN0X28pCiBBQ19TVUJTVF9GSUxFKG1pYmdyb3VwX2xpc3RfbG8pCitBQ19TVUJTVF9GSUxFKG1pYmdyb3VwX2xpc3RfZnQpCiBBQ19TVUJTVF9GSUxFKGFnZW50Z3JvdXBfbGlzdF9vKQogQUNfU1VCU1RfRklMRShhZ2VudGdyb3VwX2xpc3RfbG8pCitBQ19TVUJTVF9GSUxFKGFnZW50Z3JvdXBfbGlzdF9mdCkKIAogQUNfU1VCU1QoZGVmYXVsdF9taWJzX2luc3RhbGwpCiBBQ19TVUJTVChkbGxjbGVhbnMpCkBAIC03NjYsOCArNzg1LDEwIEBACiBpZiB0ZXN0ICJ4JE5FVFNOTVBfREVGQVVMVF9NSUJTIiA9ICJ4IjsgdGhlbgogICBORVRTTk1QX0RFRkFVTFRfTUlCUz0iJGRlZmF1bHRfbWlicyIKIGZpCi1pZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzIiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzJtc3ZjIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhjeWd3aW4iOyB0aGVuCi0gICMgbWluZ3czMiBhbmQgY3lnd2luIHVzZSAnOycgYXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHNlcGFyYXRvciBjaGFyCitpZiB0ZXN0ICJ4JEVOVl9TRVBBUkFUT1IiICE9ICJ4IjsgdGhlbgorICA6CitlbGlmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMiIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMm1zdmMiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieGN5Z3dpbiI7IHRoZW4KKyAgIyBtaW5ndzMyIGFuZCBjeWd3aW4gdXNlICc7JyBhcyB0aGUgZGVmYXVsdCBlbnZpcm9ubWVudCB2YXJpYWJsZSBzZXBhcmF0b3IKICAgRU5WX1NFUEFSQVRPUj0iOyIKICAgTkVUU05NUF9ERUZBVUxUX01JQlM9YGVjaG8gIiRORVRTTk1QX0RFRkFVTFRfTUlCUyIgfCAkU0VEICdzLzovOy9nJ2AKICAgZGVmYXVsdF9taWJzPWBlY2hvICIkZGVmYXVsdF9taWJzIiB8ICRTRUQgJ3MvOi87L2cnYApAQCAtNzc1LDYgKzc5NiwxMCBAQAogICBFTlZfU0VQQVJBVE9SPSI6IgogZmkKIEFDX1NVQlNUKEVOVl9TRVBBUkFUT1IpCitBQ19ERUZJTkVfVU5RVU9URUQoW0VOVl9TRVBBUkFUT1JdLCBbIiRFTlZfU0VQQVJBVE9SIl0sCisgICAgICAgICBbRW52aXJvbm1lbnQgc2VwYXJhdG9yIGNoYXJhY3RlciBzdXJyb3VuZGVkIGJ5IGRvdWJsZSBxdW90ZXMuXSkKK0FDX0RFRklORV9VTlFVT1RFRChbRU5WX1NFUEFSQVRPUl9DSEFSXSwgWyckRU5WX1NFUEFSQVRPUiddLAorICAgICAgICAgIFtFbnZpcm9ubWVudCBzZXBhcmF0b3IgY2hhcmFjdGVyIHN1cnJvdW5kZWQgYnkgc2luZ2xlIHF1b3Rlcy5dKQogQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfREVGQVVMVF9NSUJTLCIkTkVUU05NUF9ERUZBVUxUX01JQlMiKQogQUNfU1VCU1QoTkVUU05NUF9ERUZBVUxUX01JQlMpCiBBQ19NU0dfUkVTVUxUKCRORVRTTk1QX0RFRkFVTFRfTUlCUykKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2xpYiBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2xpYgppbmRleCA1MjA2M2YxLi4zNjJiYTBhIDEwMDY0NAotLS0gYS9jb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19saWIKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfbGliCkBAIC0yNSwxMCArMjUsMTIgQEAKICMKIEFDX01TR19DSEVDS0lORyhbZm9yIHBsYXRmb3JtLXNwZWNpZmljIHNvdXJjZV0pCiBvdGhlcl9zcmNfbGlzdD0iIgotb3RoZXJfb2Jqc19saXN0PSIiCitvdGhlcl9mdG9ianNfbGlzdD0iIgogb3RoZXJfbG9ianNfbGlzdD0iIgorb3RoZXJfb2Jqc19saXN0PSIiCiBvdGhlcl9hZ2VudG9ianM9IiIKIG90aGVyX2xhZ2VudG9ianM9IiIKK290aGVyX2Z0YWdlbnRvYmpzPSIiCiBvdGhlcl90cmFwZF9vYmplY3RzPSIiCiAKICMgV2luMzIgc2VydmljZSBjb2RlCkBAIC0zNiw4ICszOCwxMCBAQAogICBvdGhlcl9zcmNfbGlzdD0iJG90aGVyX3NyY19saXN0IHdpbnNlcnZpY2UuYyB3aW5zZXJ2aWNlcmMucmMiCiAgIG90aGVyX29ianNfbGlzdD0iJG90aGVyX29ianNfbGlzdCB3aW5zZXJ2aWNlLm8gd2luc2VydmljZXJjLm8iCiAgIG90aGVyX2xvYmpzX2xpc3Q9IiRvdGhlcl9sb2Jqc19saXN0IHdpbnNlcnZpY2UubG8gd2luc2VydmljZXJjLmxvIgorICBvdGhlcl9mdG9ianNfbGlzdD0iJG90aGVyX2Z0b2Jqc19saXN0IHdpbnNlcnZpY2UuZnQgd2luc2VydmljZXJjLmZ0IgogICBvdGhlcl9hZ2VudG9ianM9Ii4uL3NubXBsaWIvd2luc2VydmljZXJjLm8iCiAgIG90aGVyX2xhZ2VudG9ianM9Ii4uL3NubXBsaWIvd2luc2VydmljZXJjLmxvIgorICBvdGhlcl9mdGFnZW50b2Jqcz0iLi4vc25tcGxpYi93aW5zZXJ2aWNlcmMubG8iCiAgIG90aGVyX3RyYXBkX29iamVjdHM9Ii4uL3NubXBsaWIvd2luc2VydmljZXJjLm8iIAogZmkKICAgCkBAIC00NiwxMyArNTAsMTYgQEAKICAgb3RoZXJfc3JjX2xpc3Q9IiRvdGhlcl9zcmNfbGlzdCB3aW5waXBlLmMiCiAgIG90aGVyX29ianNfbGlzdD0iJG90aGVyX29ianNfbGlzdCB3aW5waXBlLm8iCiAgIG90aGVyX2xvYmpzX2xpc3Q9IiRvdGhlcl9sb2Jqc19saXN0IHdpbnBpcGUubG8iCisgIG90aGVyX2Z0b2Jqc19saXN0PSIkb3RoZXJfZnRvYmpzX2xpc3Qgd2lucGlwZS5mdCIKIGZpCiAKIEFDX1NVQlNUKG90aGVyX3NyY19saXN0KQogQUNfU1VCU1Qob3RoZXJfb2Jqc19saXN0KQogQUNfU1VCU1Qob3RoZXJfbG9ianNfbGlzdCkKK0FDX1NVQlNUKG90aGVyX2Z0b2Jqc19saXN0KQogQUNfU1VCU1Qob3RoZXJfYWdlbnRvYmpzKQogQUNfU1VCU1Qob3RoZXJfbGFnZW50b2JqcykKK0FDX1NVQlNUKG90aGVyX2Z0YWdlbnRvYmpzKQogQUNfU1VCU1Qob3RoZXJfdHJhcGRfb2JqZWN0cykKIAogQUNfTVNHX1JFU1VMVChbJG90aGVyX3NyY19saXN0ICRvdGhlcl9vYmpzX2xpc3QgJG90aGVyX2xvYmpzX2xpc3RdKQpAQCAtOTYsNiArMTAzLDcgQEAKIEFDX1NVQlNUKHRyYW5zcG9ydF9zcmNfbGlzdCkKIEFDX1NVQlNUKHRyYW5zcG9ydF9vYmpfbGlzdCkKIEFDX1NVQlNUKHRyYW5zcG9ydF9sb2JqX2xpc3QpCitBQ19TVUJTVCh0cmFuc3BvcnRfZnRvYmpfbGlzdCkKIGZvciBpIGluICR0cmFuc3BvcnRfZGVmX2xpc3Q7IGRvCiAgIEFDX0RFRklORV9VTlFVT1RFRCgkaSkKIGRvbmUKQEAgLTExNSw2ICsxMjMsNyBAQAogQUNfU1VCU1Qoc2VjdXJpdHlfaGRyX2xpc3QpCiBBQ19TVUJTVChzZWN1cml0eV9vYmpfbGlzdCkgCSAKIEFDX1NVQlNUKHNlY3VyaXR5X2xvYmpfbGlzdCkKK0FDX1NVQlNUKHNlY3VyaXR5X2Z0b2JqX2xpc3QpCiBBQ19NU0dfUkVTVUxUKCRuZXdfd2l0aF9zZWN1cml0eSkKIEFDX01TR19DQUNIRV9BREQoU05NUHYzIFNlY3VyaXR5IE1vZHVsZXM6ICAgICRuZXdfd2l0aF9zZWN1cml0eSkKIApkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfc2VjdXJpdHlfbW9kdWxlcyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX3NlY3VyaXR5X21vZHVsZXMKaW5kZXggMWI1ZDEyNS4uODIzY2E3ZCAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfc2VjdXJpdHlfbW9kdWxlcworKysgYi9jb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19zZWN1cml0eV9tb2R1bGVzCkBAIC0xLDMxICsxLDQ2IEBACiAjIC0qLSBzaCAtKi0KIHNlY3VyaXR5X2RlZl9saXN0PSJ1c20iCiBzZWN1cml0eV9zcmNfbGlzdD0iIgotc2VjdXJpdHlfb2JqX2xpc3Q9IiIgCSAKK3NlY3VyaXR5X29ial9saXN0PSIiCiBzZWN1cml0eV9sb2JqX2xpc3Q9IiIKLWlmIHRlc3QgIngkc2VjdXJpdHlfaW5pdF9maWxlIiA9ICJ4IiA7IHRoZW4KLSAgICBzZWN1cml0eV9pbml0X2ZpbGU9InNubXBsaWIvc25tcHNtX2luaXQuaCIKLWZpCi1pZiB0ZXN0ICJ4JHNlY3VyaXR5X2luY2xfZmlsZSIgPSAieCIgOyB0aGVuCi0gICAgc2VjdXJpdHlfaW5jbF9maWxlPSJpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgiCi1maQotbmV3X3dpdGhfc2VjdXJpdHk9YGVjaG8gJHdpdGhfc2VjdXJpdHlfbW9kdWxlcyB8ICRTRUQgJ3MvLC8gL2c7J2AKLW5ld193aXRoX291dF9zZWN1cml0eT1gZWNobyAkd2l0aF9vdXRfc2VjdXJpdHlfbW9kdWxlcyB8ICRTRUQgJ3MvLC8gL2c7J2AKK3NlY3VyaXR5X2Z0b2JqX2xpc3Q9IiIKK3NlY3VyaXR5X21vZF9saXN0PSIgIgogCi1lY2hvICIvKiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgY29uZmlndXJlLiAgRG8gbm90IG1vZGlmeSBieSBoYW5kLiAqLyIgPiAkc2VjdXJpdHlfaW5pdF9maWxlCi1lY2hvICIvKiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgY29uZmlndXJlLiAgRG8gbm90IG1vZGlmeSBieSBoYW5kLiAqLyIgPiAkc2VjdXJpdHlfaW5jbF9maWxlCituZXdfd2l0aF9zZWN1cml0eT0KK25ld193aXRoX291dF9zZWN1cml0eT1gZWNobyAkd2l0aF9vdXRfc2VjdXJpdHlfbW9kdWxlcyB8IHRyICwgJyAnYAogCi1mb3IgaSBpbiAkc2VjdXJpdHlfZGVmX2xpc3Q7IGRvCisjIEFzc2lnbiBhZGRpdGlvbmFsIHNlY3VyaXR5IG1vZHVsZXMKK2ZvciBpIGluIGBlY2hvICR3aXRoX3NlY3VyaXR5X21vZHVsZXMgfCB0ciAsICcgJ2A7IGRvCiAgIGlmIGVjaG8gIiAkbmV3X3dpdGhfb3V0X3NlY3VyaXR5ICIgfCAkR1JFUCAiICRpICIgPiAvZGV2L251bGw7IHRoZW4KLSAgICBpZiB0ZXN0ICJ4JGkiID0gInh1c20iOyB0aGVuCi0JZWNobwotICAgICAgICBBQ19NU0dfRVJST1IoVGhlIFVTTSBzZWN1cml0eSBtb2R1bGUgaXMgbWFuZGF0b3J5KQotICAgIGZpCisgICAgZWNobworICAgIEFDX01TR19FUlJPUihbc2VjdXJpdHkgbW9kdWxlIGNvbmZsaWN0IC0gJGkgYm90aCBpbmNsdWRlZCBhbmQgZXhjbHVkZWRdKQorICBlbGlmIGVjaG8gIiAkbmV3X3dpdGhfc2VjdXJpdHkgIiB8ICRHUkVQICIgJGkgIiA+IC9kZXYvbnVsbCA7IHRoZW4KKyAgICA6ICMgRG91YmxlIGRlZmluZSwgaWdub3JlCiAgIGVsc2UKICAgICBuZXdfd2l0aF9zZWN1cml0eT0iJG5ld193aXRoX3NlY3VyaXR5ICRpIgogICBmaQogZG9uZQogCisjIEFkZCBkZWZhdWx0IHNlY3VyaXR5IG1vZHVsZXMKK2ZvciBpIGluICRzZWN1cml0eV9kZWZfbGlzdDsgZG8KKyAgaWYgZWNobyAiICRuZXdfd2l0aF9vdXRfc2VjdXJpdHkgIiB8ICRHUkVQICIgJGkgIiA+IC9kZXYvbnVsbDsgdGhlbgorICAgIDogIyBFeGNsdWRlZCwgaWdub3JlCisgIGVsaWYgZWNobyAiICRuZXdfd2l0aF9zZWN1cml0eSAiIHwgJEdSRVAgIiAkaSAiID4gL2Rldi9udWxsIDsgdGhlbgorICAgIDogIyBEb3VibGUgZGVmaW5lLCBpZ25vcmUKKyAgZWxzZQorICAgIG5ld193aXRoX3NlY3VyaXR5PSIkbmV3X3dpdGhfc2VjdXJpdHkgJGkiCisgIGZpCitkb25lCisKKyMgR2VuZXJhdGUgb3V0cHV0IGZpbGVzCis6ICR7c2VjdXJpdHlfaW5pdF9maWxlOj0nc25tcGxpYi9zbm1wc21faW5pdC5oJ30KKzogJHtzZWN1cml0eV9zaHV0ZG93bl9maWxlOj0nc25tcGxpYi9zbm1wc21fc2h1dGRvd24uaCd9Cis6ICR7c2VjdXJpdHlfaW5jbF9maWxlOj0naW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oJ30KKworZWNobyAiLyogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZS4gIERvIG5vdCBtb2RpZnkgYnkgaGFuZC4gKi8iID4gJHNlY3VyaXR5X2luaXRfZmlsZQorZWNobyAiLyogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZS4gIERvIG5vdCBtb2RpZnkgYnkgaGFuZC4gKi8iID4gJHNlY3VyaXR5X3NodXRkb3duX2ZpbGUKK2VjaG8gIi8qIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBjb25maWd1cmUuICBEbyBub3QgbW9kaWZ5IGJ5IGhhbmQuICovIiA+ICRzZWN1cml0eV9pbmNsX2ZpbGUKKwogZm9yIGkgaW4gJG5ld193aXRoX3NlY3VyaXR5OyBkbwogICBjZmlsZT0ic25tcCIkaSIuYyIKICAgaGZpbGU9InNubXAiJGkiLmgiCkBAIC0zOSwxMyArNTQsMTcgQEAKICAgZmkKIAogICAjIGRlZmluZSBhIGJ1bmNoIG9mIHN0dWZmIHRvIGVuYWJsZSBpdAorICBzZWN1cml0eV9tb2RfbGlzdD0iJHtzZWN1cml0eV9tb2RfbGlzdH0gJGkiCisgIHNlY3VyaXR5X3NyY19saXN0PSIkc2VjdXJpdHlfc3JjX2xpc3QgJGNmaWxlIgogICBzZWN1cml0eV9zcmNfbGlzdD0iJHNlY3VyaXR5X3NyY19saXN0ICRjZmlsZSIKICAgc2VjdXJpdHlfaGRyX2xpc3Q9IiRzZWN1cml0eV9oZHJfbGlzdCAkaGZpbGUiCi0gIHNlY3VyaXR5X29ial9saXN0PSIkc2VjdXJpdHlfb2JqX2xpc3Qgc25tcCIkaSIubyIgCSAKKyAgc2VjdXJpdHlfb2JqX2xpc3Q9IiRzZWN1cml0eV9vYmpfbGlzdCBzbm1wIiRpIi5vIgogICBzZWN1cml0eV9sb2JqX2xpc3Q9IiRzZWN1cml0eV9sb2JqX2xpc3Qgc25tcCIkaSIubG8iCi0gIGRlZl9uYW1lPSJORVRTTk1QX1NFQ01PRF8iYGVjaG8gJGkgfCB0ciAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWidgCisgIHNlY3VyaXR5X2Z0b2JqX2xpc3Q9IiRzZWN1cml0eV9mdG9ial9saXN0IHNubXAiJGkiLmZ0IgogICBlY2hvICJpbml0XyIkaSIoKTsiID4+ICRzZWN1cml0eV9pbml0X2ZpbGUKKyAgZWNobyAic2h1dGRvd25fIiRpIigpOyIgPj4gJHNlY3VyaXR5X3NodXRkb3duX2ZpbGUKICAgZWNobyAiI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvJGhmaWxlPiIgPj4gJHNlY3VyaXR5X2luY2xfZmlsZQorICBkZWZfbmFtZT0iQVNfVFJfQ1BQKFtORVRTTk1QX1NFQ01PRF8kaV0pIgogICBBQ19ERUZJTkVfVU5RVU9URUQoJGRlZl9uYW1lKQogZG9uZQogCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfbW9kdWxlc190cmFuc3BvcnRzIGIvY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfdHJhbnNwb3J0cwppbmRleCBhYTI3MTQ2Li5iMTBiOTYwIDEwMDY0NAotLS0gYS9jb25maWd1cmUuZC9jb25maWdfbW9kdWxlc190cmFuc3BvcnRzCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX3RyYW5zcG9ydHMKQEAgLTY5LDE0ICs2OSwxNSBAQAogICAgICAgIyBidWlsZCBhIHBzZXVkbyBpbmNsdWRlIGhlYWRlciB0aGF0IGluY2x1ZGVzIGN1cnJlbnQgY29uZmlnIGFuZAogICAgICAgIyBzeXN0ZW0gc3ltYm9sczoKICAgICAgIHJtIC1mIGNvbmZ0ZXN0LiRhY19leHQgbW9kdWxlX3RtcF9oZWFkZXIuaAotICAgICAgQUNfTEFOR19DT05GVEVTVChBQ19MQU5HX1NPVVJDRShbWworICAgICAgQUNfTEFOR19DT05GVEVTVChbQUNfTEFOR19TT1VSQ0UoW1sKICNpbmNsdWRlIE5FVFNOTVBfU1lTVEVNX0lOQ0xVREVfRklMRQorI3VuZGVmIE5FVFNOTVBfTUlOSU1BTF9DT0RFCiAjZGVmaW5lIE5FVF9TTk1QX0NPTkZJR19ICiAjdW5kZWYgY29uZmlnX3JlcXVpcmUKICNkZWZpbmUgY29uZmlnX3JlcXVpcmUoZm9vKSBjb25maWdfY2hlY2tpdF9yZXF1aXJlKGZvbykKICN1bmRlZiBjb25maWdfZXJyb3IKICNkZWZpbmUgY29uZmlnX2Vycm9yKGZvbykgY29uZmlnX2NoZWNraXRfZXJyb3IoZm9vKQotI2luY2x1ZGUgIiRyZWxfdHJhbnNwb3J0X2hkciJdXSkpCisjaW5jbHVkZSAiJHJlbF90cmFuc3BvcnRfaGRyIl1dKV0pCiAgICAgICBtdiBjb25mdGVzdC4kYWNfZXh0IG1vZHVsZV90bXBfaGVhZGVyLmgKIAogICAgICAgIwpAQCAtMTE3LDYgKzExOCw3IEBACiBkb25lICMgd2hpbGUgbmV3IHRyYW5zcG9ydHMgZXhpc3QKIHRyYW5zcG9ydF9vYmpfbGlzdD1gZWNobyAiICR0cmFuc3BvcnRfc3JjX2xpc3QgIiB8ICRTRUQgJ3MvXC5jL1wuby9nJ2AKIHRyYW5zcG9ydF9sb2JqX2xpc3Q9YGVjaG8gIiAkdHJhbnNwb3J0X3NyY19saXN0ICIgfCAkU0VEICdzL1wuYy9cLmxvL2cnYAordHJhbnNwb3J0X2Z0b2JqX2xpc3Q9YGVjaG8gIiAkdHJhbnNwb3J0X3NyY19saXN0ICIgfCAkU0VEICdzL1wuYy9cLmZ0L2cnYAogZm9yIGkgaW4gJHRyX2luaXRfbGlzdCA7IGRvCiAgICBlY2hvICIkaSgpOyIgPj4gJGN0b3JfaGVhZGVyCiBkb25lCkBAIC0xMjYsNiArMTI4LDcgQEAKICAgaWYgZWNobyAiJHRyYW5zcG9ydF9kZWZfbGlzdCIgfCAkR1JFUCAiSVBWNiIgPi9kZXYvbnVsbDsgdGhlbgogICAgIHRyYW5zcG9ydF9vYmpfbGlzdD0iJHRyYW5zcG9ydF9vYmpfbGlzdCBpbmV0X250b3AubyBpbmV0X3B0b24ubyIKICAgICB0cmFuc3BvcnRfbG9ial9saXN0PSIkdHJhbnNwb3J0X2xvYmpfbGlzdCBpbmV0X250b3AubG8gaW5ldF9wdG9uLmxvIgorICAgIHRyYW5zcG9ydF9mdG9ial9saXN0PSIkdHJhbnNwb3J0X2Z0b2JqX2xpc3QgaW5ldF9udG9wLmZ0IGluZXRfcHRvbi5mdCIKICAgZmkKIGZpCiAKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMgYi9jb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zCmluZGV4IDU3ZDc4NTQuLjNjNTM4NWIgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucwpAQCAtMzEsNyArMzEsOCBAQAogICAgICAgICAgICAgICAgW3NpZ25hbCAgICAgICAgICBzaWdzZXQgICAgICAgICAgICAgICAgICBdICkKIAogIyAgTGlicmFyeToKLUFDX0NIRUNLX0ZVTkNTKFtjbG9zZWRpciAgICAgICAgZm9yayAgICAgICAgICAgIGdldGlwbm9kZWJ5bmFtZSAgXSBkbmwKK0FDX0NIRUNLX0ZVTkNTKFtjbG9zZWRpciAgICAgICAgZmdldGNfdW5sb2NrZWQgIGZsb2NrZmlsZSAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtmb3JrICAgICAgICAgICAgZnVubG9ja2ZpbGUgICAgIGdldGlwbm9kZWJ5bmFtZSAgXSBkbmwKICAgICAgICAgICAgICAgIFtnZXR0aW1lb2ZkYXkgICAgaWZfbmFtZXRvaW5kZXggIG1rc3RlbXAgICAgICAgICAgXSBkbmwKICAgICAgICAgICAgICAgIFtvcGVuZGlyICAgICAgICAgcmVhZGRpciAgICAgICAgIHJlZ2NvbXAgICAgICAgICAgXSBkbmwKICAgICAgICAgICAgICAgIFtzZXRlbnYgICAgICAgICAgc2V0aXRpbWVyICAgICAgIHNldGxvY2FsZSAgICAgICAgXSBkbmwKQEAgLTYyLDYgKzYzLDEyIEBACiAgICAgXSwgWyBdKQogCiAgICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbI2luY2x1ZGUgPHdpbnNvY2syLmg+XSwKKyAgICBbIGdldGhvc3RieWFkZHIoTlVMTCk7IF0pXSwKKyAgICBbIGFjX2N2X2Z1bmNfZ2V0aG9zdGFkZHI9eWVzCisgICAgICBBU19FQ0hPICIjZGVmaW5lIEhBVkVfR0VUSE9TVEJZQUREUiAxIiA+PmNvbmZkZWZzLmgKKyAgICBdLCBbIF0pCisKKyAgICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFsjaW5jbHVkZSA8d2luc29jazIuaD5dLAogICAgIFsgZ2V0aG9zdG5hbWUoTlVMTCwgMCk7IF0pXSwKICAgICBbIGFjX2N2X2Z1bmNfZ2V0aG9zdG5hbWU9eWVzCiAgICAgICBBU19FQ0hPICIjZGVmaW5lIEhBVkVfR0VUSE9TVE5BTUUgMSIgPj5jb25mZGVmcy5oCkBAIC02OSw3ICs3Niw3IEBACiAgICAgOzsKIAogICAqKQotICAgIEFDX0NIRUNLX0ZVTkNTKFtnYWlfc3RyZXJyb3IgZ2V0YWRkcmluZm8gZ2V0aG9zdGJ5bmFtZSBnZXRob3N0YnluYW1lMiBnZXRob3N0bmFtZV0pCisgICAgQUNfQ0hFQ0tfRlVOQ1MoW2dhaV9zdHJlcnJvciBnZXRhZGRyaW5mbyBnZXRob3N0YnluYW1lIGdldGhvc3RieW5hbWUyIGdldGhvc3RuYW1lIGdldGhvc3RieWFkZHJdKQogICAgIDs7CiBlc2FjCiAKQEAgLTE2NywxMSArMTc0LDExIEBACiAgICAgICAgICAgICAgICBbbmV0c25tcF9jdl9fZnVuY19fbmFtZV0sWwogICAgIG5ldHNubXBfY3ZfX2Z1bmNfX25hbWU9bm8KICAgICBBQ19DT01QSUxFX0lGRUxTRSgKLSAgICAgICAgQUNfTEFOR19QUk9HUkFNKCxbW2NvbnN0IGNoYXIqIGNwID0gX19mdW5jX187XV0pLAorICAgICAgICBbQUNfTEFOR19QUk9HUkFNKCxbW2NvbnN0IGNoYXIqIGNwID0gX19mdW5jX187XV0pXSwKICAgICAgICAgW25ldHNubXBfY3ZfX2Z1bmNfX25hbWU9X19mdW5jX19dKQogICAgIGlmIHRlc3QgIiRuZXRzbm1wX2N2X19mdW5jX19uYW1lIiA9IG5vIDsgdGhlbgogICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCi0gICAgICAgIEFDX0xBTkdfUFJPR1JBTSgsW1tjb25zdCBjaGFyKiBjcCA9IF9fRlVOQ1RJT05fXztdXSksCisgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oLFtbY29uc3QgY2hhciogY3AgPSBfX0ZVTkNUSU9OX187XV0pXSwKICAgICAgICAgW25ldHNubXBfY3ZfX2Z1bmNfX25hbWU9X19GVU5DVElPTl9fXSkKICAgICBmaV0pCiBpZiB0ZXN0ICIkbmV0c25tcF9jdl9fZnVuY19fbmFtZSIgIT0gbm87IHRoZW4KQEAgLTE4NCwxNCArMTkxLDE0IEBACiAjCiBBQ19DQUNIRV9DSEVDSyhbW3doZXRoZXIgc3RhdGljIGlubGluZSBmdW5jdGlvbnMgYXJlIGJyb2tlbiAoVW5peHdhcmUpXV0sCiAgICAgICAgICAgICAgICAgW25ldHNubXBfY3ZfY19icm9rZW5faW5saW5lXSwKLSAgICBBQ19DT01QSUxFX0lGRUxTRShbWworICAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbCiBzdGF0aWMgaW5saW5lIGludCBuZXN0ZWRfaW5saW5lX2Z1bmN0aW9uKHZvaWQpIHsKICAgcmV0dXJuIDA7CiB9CiBpbmxpbmUgaW50IG1haW5faW5saW5lX2Z1bmN0aW9uKCB2b2lkICkgewogICByZXR1cm4gbmVzdGVkX2lubGluZV9mdW5jdGlvbigpOwogfQotICAgIF1dLAorICAgIF0pXSwKICAgICBuZXRzbm1wX2N2X2Jyb2tlbl9pbmxpbmU9bm8sCiAgICAgbmV0c25tcF9jdl9icm9rZW5faW5saW5lPXllcykpCiAKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzIGIvY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnMKaW5kZXggMTliMjdmYy4uNzA4YWEwOSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnMKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnMKQEAgLTU1LDYgKzU1LDcgQEAKICAgICAgICAgICAgICAgICAgW2lvY3Rscy5oICAga3N0YXQuaCAgICBrdm0uaCAgICAgIGxpbWl0cy5oICAgICBdIGRubAogICAgICAgICAgICAgICAgICBbICAgICAgICAgICBtbnRlbnQuaCAgIG10YWIuaCAgICAgICAgICAgICAgICAgIF0gZG5sCiAgICAgICAgICAgICAgICAgIFsgICAgICAgICAgIHBrZ2xvY3MuaCAgICAgICAgICAgICBwd2QuaCAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgWyAgICAgICAgICAgY29tX2Vyci5oICAgICAgICAgICAgIGV0L2NvbV9lcnIuaCBdIGRubAogICAgICAgICAgICAgICAgICBbICAgICAgICAgICB1dG1weC5oICAgIHV0c25hbWUuaCAgICAgICAgICAgICAgIF0pCiAKIEFDX0NIRUNLX0hFQURFUlMoW3N5cy9kaXNraW8uaCAgc3lzL2RraW8uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gZG5sCkBAIC05MCw2ICs5MSw4IEBACiAgICAgICAgICAgICAgICAgIFtwY2kvcGNpLmggICAgICAgICAgICAgICAgICAgICAgICBdKQogCiAKKyMgVmFsZ3JpbmQKK0FDX0NIRUNLX0hFQURFUlMoW3ZhbGdyaW5kL3ZhbGdyaW5kLmggdmFsZ3JpbmQvbWVtY2hlY2suaF0pCiAjIE9wZW5TU0wKIEFDX0NIRUNLX0hFQURFUlMoW29wZW5zc2wvYWVzLmggXSkgICAgICMgIChDb3JlKQogQUNfQ0hFQ0tfSEVBREVSUyhbb3BlbnNzbC9kaC5oICBdKSAgICAgIyAgKEFwcHMpCkBAIC0zODgsMTggKzM5MSwyMSBAQAogI2lmIEhBVkVfU1lTX1NPQ0tFVF9ICiAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgogI2VuZGlmCisjaWYgSEFWRV9ORVRfSUZfSAorI2luY2x1ZGUgPG5ldC9pZi5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRfSUZfVkFSX0gKKyNpbmNsdWRlIDxuZXQvaWZfdmFyLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVF9ST1VURV9ICisjaW5jbHVkZSA8bmV0L3JvdXRlLmg+CisjZW5kaWYKICNpZiBIQVZFX05FVElORVRfSU5fSAogI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICNlbmRpZgogI2lmIEhBVkVfTkVUSU5FVF9JUDZfSAogI2luY2x1ZGUgPG5ldGluZXQvaXA2Lmg+CiAjZW5kaWYKLSNpZiBIQVZFX05FVF9JRl9ICi0jaW5jbHVkZSA8bmV0L2lmLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVF9ST1VURV9ICi0jaW5jbHVkZSA8bmV0L3JvdXRlLmg+Ci0jZW5kaWYKICAgICBdXSkKIAogIyAgICAgICByZXF1aXJpbmcgPG5ldGluZXQvaW4uaD4gICAgICAgICAgICAgICAgICAgICAgICAoT3BlbkJTRCAyLjYpCkBAIC00NjcsNiArNDczLDI3IEBACiAgICAgTkVUU05NUF9TRUFSQ0hfTElCUyhwa2dpbmZvLCBhZG0sCiAgICAgICAgIEFDX0RFRklORShIQVZFX1BLR0lORk8sIDEsIFtkZWZpbmUgaWYgeW91IGhhdmUgcGtnaW5mb10pLCwsTE1JQkxJQlMpKQogCitBQ19DSEVDS19IRUFERVJTKHBrZy5oLAorICAgIE5FVFNOTVBfU0VBUkNIX0xJQlMocGtnX2luaXQsIHBrZywKKyAgICAgICAgQUNfREVGSU5FKEhBVkVfTElCUEtHLCAxLCBbZGVmaW5lIGlmIHlvdSBoYXZlIEJTRCBwa2ctbmddKSkpCisKK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9wa2dfaCA9IG5vCit0aGVuCisgICAgdW5zZXQgYWNfY3ZfaGVhZGVyX3BrZ19oCisgICAgbmV0c25tcF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisgICAgbmV0c25tcF9zYXZlX0xERkxBR1M9IiRMREZMQUdTIgorICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkvdXNyL2xvY2FsL2luY2x1ZGUiCisgICAgTERGTEFHUz0iJExERkxBR1MgLUwvdXNyL2xvY2FsL2xpYiIKKyAgICBBQ19DSEVDS19IRUFERVJTKHBrZy5oLAorICAgICAgICBORVRTTk1QX1NFQVJDSF9MSUJTKHBrZ19pbml0LCBwa2csCisJICAgIEFDX0RFRklORShIQVZFX0xJQlBLRywgMSwgW2RlZmluZSBpZiB5b3UgaGF2ZSBCU0QgcGtnLW5nXSkpKQorICAgIGlmIHRlc3QgJGFjX2N2X2hlYWRlcl9wa2dfaCA9IG5vCisgICAgdGhlbgorICAgICAgICBDUFBGTEFHUz0iJG5ldHNubXBfc2F2ZV9DUFBGTEFHUyIKKyAgICAgICAgTERGTEFHUz0iJG5ldHNubXBfc2F2ZV9MREZMQUdTIgorICAgIGZpCitmaQorCiBjYXNlICR0YXJnZXRfb3MgaW4KICAgICBhaXgqKQogICAgICAgICAjICAgICAgIGZvciBDUFUvbWVtb3J5IHN0YXRpc3RpY3MgICAgICAgICAgICAgICAoQUlYKQpAQCAtNTE4LDQgKzU0NSw0NCBAQAogIwogQUNfQ0hFQ0tfSEVBREVSUyhbc2Vuc29ycy9zZW5zb3JzLmggcGljbC5oXSkKIAorIyMgIFRoaXMgaXMgaGVyZSB0byBhdm9pZCBsb2FkcyBvZiByZWRlZmluaXRpb24gd2FybmluZ3MgZHVyaW5nCisjIyAgbW9kdWxlIGNvbmZpZ3VyYXRpb24KKworIyMKKyMgICBydGVudHJ5IHN0cnVjdHVyZSBjaGVja3M6CisjIworCisjIENoZWNrIHN0cnVjdCBydGVudHJ5IGZvciBjb21tb24gZmllbGRzCisjICAgQWdlbnQ6CisjCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgcnRlbnRyeS5ydF9kc3QsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlbnRyeS5ydF9oYXNoLAorICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZW50cnkucnRfbmV4dCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVudHJ5LnJ0X3JlZmNudCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVudHJ5LnJ0X3VuaXQsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlbnRyeS5ydF91c2VdLCwsCisgICAgWworI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmZGVmIE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMX1NUUlVDVFVSRVMKKyNkZWZpbmUgX0tFUk5FTF9TVFJVQ1RVUkVTIDEKKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaWZkZWYgTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUwKKyNkZWZpbmUgS0VSTkVMCisjaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKKyNkZWZpbmUgX0tFUk5FTCAxCisjZW5kaWYKKyNlbmRpZgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyN1bmRlZiBLRVJORUwKKyN1bmRlZiBfS0VSTkVMCisjZW5kaWYKKyNpZmRlZiBIQVZFX05FVF9ST1VURV9ICisjaW5jbHVkZSA8bmV0L3JvdXRlLmg+CisjZW5kaWYKKyAgICBdKQorCiBmaSAjIE5FVFNOTVBfUVVJQ0tfQ0hFQ0sKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMiBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMgppbmRleCAzNDE0Njc4Li5jYjFkZGU5IDEwMDY0NAotLS0gYS9jb25maWd1cmUuZC9jb25maWdfb3NfbGliczIKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyCkBAIC04Niw2ICs4Niw4IEBACiAgIEFDX1NFQVJDSF9MSUJTKHNvY2tldCwgc29ja2V0LCxBQ19NU0dfRVJST1IoW3NvY2tldCgyKSBub3QgZm91bmQuXSkpCiAgIEFDX1NFQVJDSF9MSUJTKGdldGhvc3RieW5hbWUsIFtuc2wgc29ja2V0XSkKICAgQUNfQ0hFQ0tfRlVOQ1MoZ2V0aG9zdGJ5bmFtZSkKKyAgQUNfU0VBUkNIX0xJQlMoZ2V0aG9zdGJ5YWRkciwgW25zbCBzb2NrZXRdKQorICBBQ19DSEVDS19GVU5DUyhnZXRob3N0YnlhZGRyKQogICA7OwogZXNhYwogCkBAIC0xNTYsNiArMTU4LDE2IEBACiAgICAgICAgIExORVRTTk1QTElCUykKIAogCisjCisjICAgbGlicnQKKyMKKworTkVUU05NUF9TRUFSQ0hfTElCUyhjbG9ja19nZXR0aW1lLCBydCwKKyAgICAgICAgQUNfREVGSU5FKEhBVkVfQ0xPQ0tfR0VUVElNRSwgMSwKKyAgICAgICAgICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjbG9ja19nZXR0aW1lJyBsaWJyYXJ5XSksLCwKKyAgICAgICAgTE5FVFNOTVBMSUJTKQorCisKICMjCiAjICAgTUlCLW1vZHVsZS1zcGVjaWZpYyBjaGVja3MKICMjCkBAIC0xNzUsNiArMTg3LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBbZGVmaW5lIGlmIHlvdSBoYXZlIGRldnN0YXRfZ2V0ZGV2cygpXSksLCxMTUlCTElCUykKIGZpCiAKKyMgICBsaWJwY2kKKyMgICAgICAgIChmb3IgaWYtbWliIGRlc2NyaXB0aW9uKQorIworTkVUU05NUF9TRUFSQ0hfTElCUyhwY2lfbG9va3VwX25hbWUsIHBjaSwKKwlBQ19ERUZJTkUoSEFWRV9QQ0lfTE9PS1VQX05BTUUsIDEsCisJCVtkZWZpbmUgaWYgeW91IGhhdmUgcGNpX2xvb2t1cF9uYW1lKCldKSwsLExNSUJMSUJTKQogCiAjICAgTE0tU0VOU09SUy1NSUIgc3VwcG9ydAogIwpAQCAtMzEwLDYgKzMyOCwxNyBAQAogICAgICAgICBBQ19ERUZJTkUoSEFWRV9MSUJQS0NTMTEpCiAgICAgICAgIExJQlBLQ1MxMT0iLWxwa2NzMTEiKQogZmkKK2lmIHRlc3QgIngkVExTUFJPRyIgPSAieHllcyI7IHRoZW4KKyAgIEFDX0NIRUNLX0RFQ0woW0VWUF9zaGEyMjRdLAorICAgIDogLAorICAgIEFDX0RFRklORShbSEFWRV9FVlBfU0hBMjI0XSwgW10sIFtEZWZpbmUgaWYgeW91IGhhdmUgRVZQX3NoYTIyNC8yNTYgaW4gb3BlbnNzbF0pLAorICAgIFtbI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+XV0pCisgICBBQ19DSEVDS19ERUNMKFtFVlBfc2hhMzg0XSwKKyAgICA6ICwKKyAgICBBQ19ERUZJTkUoW0hBVkVfRVZQX1NIQTM4NF0sIFtdLCBbRGVmaW5lIGlmIHlvdSBoYXZlIEVWUF9zaGEzODQvMjU2IGluIG9wZW5zc2xdKSwKKyAgICBbWyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPl1dKQorZmkKKwogTElCUz0kTk9OQUdFTlRMSUJTCSAjIHJlc3RvcmUgb2xkIGxpYnJhcmllcwogaWYgdGVzdCAieCRTU0hQUk9HIiA9ICJ4eWVzIjsgdGhlbgogICAgIE5FVFNOTVBfQlVJTERfU1NIX1BST0dfVFJVRT0nJwpAQCAtMzE4LDE3ICszNDcsNDAgQEAKICAgICBORVRTTk1QX0JVSUxEX1NTSF9QUk9HX1RSVUU9JyMnCiAgICAgTkVUU05NUF9CVUlMRF9TU0hfUFJPR19GQUxTRT0nJwogZmkKLWlmIHRlc3QgIngkVExTUFJPRyIgPSAieHllcyI7IHRoZW4KK2lmIHRlc3QgIngkVExTUFJPRyIgPSAieHllcyIgLWEgIngkZW5hYmxlX3JlYWRfb25seSIgIT0gInh5ZXMiIDsgdGhlbgogICAgIE5FVFNOTVBfQlVJTERfVExTX1BST0dfVFJVRT0nJwogICAgIE5FVFNOTVBfQlVJTERfVExTX1BST0dfRkFMU0U9JyMnCiBlbHNlCiAgICAgTkVUU05NUF9CVUlMRF9UTFNfUFJPR19UUlVFPScjJwogICAgIE5FVFNOTVBfQlVJTERfVExTX1BST0dfRkFMU0U9JycKIGZpCitpZiBlY2hvICIgJHtzZWN1cml0eV9tb2RfbGlzdH0gIiB8IGdyZXAgJyB1c20gJyA7IHRoZW4KKyAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9yZWFkX29ubHkiICE9ICJ4eWVzIiA7IHRoZW4KKyAgICAJTkVUU05NUF9CVUlMRF9VU01fUFJPR19UUlVFPScnCisgICAgCU5FVFNOTVBfQlVJTERfVVNNX1BST0dfRkFMU0U9JyMnCisgICAgZWxzZQorICAgIAlORVRTTk1QX0JVSUxEX1VTTV9QUk9HX1RSVUU9JyMnCisgICAgCU5FVFNOTVBfQlVJTERfVVNNX1BST0dfRkFMU0U9JycKKyAgICBmaQorZWxzZQorICAgIE5FVFNOTVBfQlVJTERfVVNNX1BST0dfVFJVRT0nIycKKyAgICBORVRTTk1QX0JVSUxEX1VTTV9QUk9HX0ZBTFNFPScnCitmaQoraWYgdGVzdCAieCRlbmFibGVfcmVhZF9vbmx5IiAhPSAieHllcyIgOyB0aGVuCisgICAgTkVUU05NUF9CVUlMRF9TRVRfUFJPR19UUlVFPSIiCisgICAgTkVUU05NUF9CVUlMRF9TRVRfUFJPR19GQUxTRT0iIyIKK2Vsc2UKKyAgICBORVRTTk1QX0JVSUxEX1NFVF9QUk9HX1RSVUU9IiMiCisgICAgTkVUU05NUF9CVUlMRF9TRVRfUFJPR19GQUxTRT0iIgorZmkKIEFDX1NVQlNUKE5FVFNOTVBfQlVJTERfU1NIX1BST0dfVFJVRSkKIEFDX1NVQlNUKE5FVFNOTVBfQlVJTERfU1NIX1BST0dfRkFMU0UpCiBBQ19TVUJTVChORVRTTk1QX0JVSUxEX1RMU19QUk9HX1RSVUUpCiBBQ19TVUJTVChORVRTTk1QX0JVSUxEX1RMU19QUk9HX0ZBTFNFKQorQUNfU1VCU1QoTkVUU05NUF9CVUlMRF9VU01fUFJPR19UUlVFKQorQUNfU1VCU1QoTkVUU05NUF9CVUlMRF9VU01fUFJPR19GQUxTRSkKK0FDX1NVQlNUKE5FVFNOTVBfQlVJTERfU0VUX1BST0dfVFJVRSkKK0FDX1NVQlNUKE5FVFNOTVBfQlVJTERfU0VUX1BST0dfRkFMU0UpCiAKICMKICMgSWYgd2UncmUgdXNpbmcgaW50ZXJuYWwgY3J5cHRvIHN1cHBvcnQgd2UgbmVlZCB0byBjb21waWxlIGluIGV4dHJhIGZpbGVzCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzIgYi9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzIKaW5kZXggZDkwMDM2ZC4uZTJhOGZmNSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MyCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMgpAQCAtOTYsMyArOTYsNDcgQEAKIGlmIHRlc3QgIngkYWxsX3dhcm5pbmdzIiAhPSAieCI7IHRoZW4KICAgICBBQ19NU0dfQ0FDSEVfQUREKFdBUk5JTkc6ICRhbGxfd2FybmluZ3MpCiBmaQorCisjCisjIENoZWNrIHdoZXRoZXIgdXNlciB3YW50cyBETlNTRUMgbG9jYWwgdmFsaWRhdGlvbiBzdXBwb3J0CisjCitfbGlicz0ke0xJQlN9CitpZiAhIHRlc3QgIngtJHdhbnRfZG5zc2VjIiA9ICJ4LW5vIiA7IHRoZW4KKyAgICBBQ19DSEVDS19IRUFERVJTKFt2YWxpZGF0b3IvdmFsaWRhdG9yLWNvbmZpZy5oXSkKKyAgICBpZiB0ZXN0ICIkYWNfY3ZfaGVhZGVyX3ZhbGlkYXRvcl92YWxpZGF0b3JfY29uZmlnX2giICE9IHllczsgdGhlbgorICAgICAgICBBQ19NU0dfRVJST1IoQ2FuJ3QgZmluZCB2YWxpZGF0b3IuaCkKKyAgICBmaQorICAgIGlmIHRlc3QgIngkYWNfY3ZfbGliX2NyeXB0b19FVlBfbWQ1IiAhPSAieHllcyIgLWEgXAorICAgICAgICAgICAgIngkYWNfY3ZfbGliX2VheTMyX0VWUF9tZDUiICE9ICJ4eWVzIiAtbyBcCisgICAgICAgICAgICAieCRhY19jdl9oZWFkZXJfb3BlbnNzbF9obWFjX2giICE9ICJ4eWVzIjsgdGhlbgorICAgICAgICBBQ19NU0dfRVJST1IoQ291bGRuJ3QgZmluZCBPcGVuU1NMIGZvciBsb2NhbCBETlNTRUMgdmFsaWRhdGlvbiBzdXBwb3J0LikKKyAgICBmaQorICAgIExJQlM9IiRMSUJTICRMSUJDUllQVE8iCisgICAgQUNfQ0hFQ0tfTElCKHNyZXMsIHF1ZXJ5X3NlbmQsLEFDX01TR19FUlJPUihbQ2FuJ3QgZmluZCBsaWJzcmVzXSkpCisgICAgVkFMX0xJQlM9Ii1sc3JlcyAkTElCQ1JZUFRPIgorICAgIExJQlM9IiRMSUJTIC1sc3JlcyIKKyAgICBBQ19DSEVDS19MSUIodmFsLCBwX3ZhbF9zdGF0dXMsCisgICAgICAgICAgICAgICAgIExJQlM9IiRMSUJTIC1sdmFsIgorICAgICAgICAgICAgICAgICBWQUxfTElCUz0iJFZBTF9MSUJTIC1sdmFsIgorICAgICAgICAgICAgICAgICBoYXZlX3ZhbF9yZXNfcXVlcnk9eWVzLAorICAgICAgICAgICAgICAgICBbIEFDX0NIRUNLX0xJQihwdGhyZWFkLCBwdGhyZWFkX3J3bG9ja19pbml0KQorCQkgICBBQ19DSEVDS19MSUIodmFsLXRocmVhZHMsIHBfdmFsX3N0YXR1cywKKyAgICAgICAgICAgICAgICAgICBoYXZlX3ZhbF9yZXNfcXVlcnk9eWVzCisgICAgICAgICAgICAgICAgICAgTElCUz0iLWx2YWwtdGhyZWFkcyAkTElCUyIKKyAgICAgICAgICAgICAgICAgICBWQUxfTElCUz0iLWx2YWwtdGhyZWFkcyAtbHB0aHJlYWQgJFZBTF9MSUJTIgorICAgICAgICAgICAgICAgICAgIExJQlZBTF9TVUZGSVg9Ii10aHJlYWRzIiwKKyAgICAgICAgICAgICAgICAgICBBQ19NU0dfRVJST1IoQ2FuJ3QgZmluZCBsaWJ2YWwgb3IgbGlidmFsLXRocmVhZHMpKQorICAgICAgICAgICAgICAgICBdKQorICAgIEFDX0RFRklORShETlNTRUNfTE9DQUxfVkFMSURBVElPTiwgMSwKKyAgICAgICAgICAgICAgW0RlZmluZSBpZiB5b3Ugd2FudCBsb2NhbCBETlNTRUMgdmFsaWRhdGlvbiBzdXBwb3J0XSkKKyAgICBETlNTRUM9ImVuYWJsZWQiCitlbHNlCisgICAgRE5TU0VDPSJkaXNhYmxlZCIKK2ZpCisKK0xJQlM9JHtfbGlic30KKworQUNfU1VCU1QoVkFMX0xJQlMpCitBQ19NU0dfQ0FDSEVfQUREKExvY2FsIEROU1NFQyB2YWxpZGF0aW9uOiAgICAkRE5TU0VDKQorCisgCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzQgYi9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzQKaW5kZXggNzNmODA4Ny4uY2M4YmFkMiAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmQvY29uZmlnX29zX21pc2M0CisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjNApAQCAtNDksNiArNDksMjMgQEAKIEFDX0RFRklORV9VTlFVT1RFRChLRVJORUxfTE9DLCIkYWNfY3ZfS0VSTkVMX0xPQyIsIFtsb2NhdGlvbiBvZiBVTklYIGtlcm5lbF0pCiAKIAorIyAgICAgICAvZGV2L2ttZW0gZXhpc3RlbmNlCisjCSAgICB1c2VkIGluIGFnZW50IG9ubHkKKyMKK0FDX0NBQ0hFX0NIRUNLKFtmb3IgL2Rldi9rbWVtXSwKKyAgICBhY19jdl9IQVZFX0tNRU0sCisgICBbaWYgdGVzdCAkQ0RFVl9URVNUX0ZMQUcgL2Rldi9rbWVtOyB0aGVuCisgICAgICAgIGFjX2N2X0hBVkVfS01FTT0iL2Rldi9rbWVtIgorICAgIGZpCitdKQorIworIyAgTm90ZSB0aGF0IGl0J3MgT0sgaWYgdGhpcyBkZXZpY2UgaXMgbm90IGZvdW5kCisjCitpZiB0ZXN0ICJ4JGFjX2N2X0hBVkVfS01FTSIgPSAieC9kZXYva21lbSI7IHRoZW4KKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9LTUVNLCIkYWNfY3ZfSEFWRV9LTUVNIiwgW0RlZmluZSBpZiB5b3UgaGF2ZSAvZGV2L2ttZW1dKQorZmkKKworCiAjICAgICAgIFN3YXAgZGV2aWNlIExvY2F0aW9uCiAjICAgICAgICAgICAoL2Rldi9kbWVtIG9yIC9kZXYvZHJ1bSkKICMJICAgIHVzZWQgaW4gYWdlbnQgb25seQpAQCAtMjExLDM5ICsyMjgsNiBAQAogICBBQ19ERUZJTkUoTkVUU05NUF9DQU5fVVNFX1NZU0NUTCwgMSwgW3N5c2N0bCB3b3JrcyB0byBnZXQgYm9vdHRpbWUsIGV0Yy4uLl0pCiBmaQogCi0jICAgQ2hlY2sgRnJlZUJTRCdzIGtlcm5lbCBPSUQga2Vybi5jcF90aW1lcyBleGlzdGFuY2UKLSMKLSMgICAgICAgICB1c2VkIGluIGFnZW50IG9ubHkgCi0jCi1pZiB0ZXN0ICRjcm9zc19jb21waWxpbmcgPSB5ZXM7IHRoZW4KLSAgICBBQ19NU0dfV0FSTihbQ2FuJ3QgY2hlY2sgZWl0aGVyIHN5c2N0bCBrZXJuLmNwX3RpbWVzLCBtYW51YWxseSBkZWZpbmUgSEFWRV9LRVJOX0NQX1RJTUVTIGlmIHBsYXRmb3JtIHN1cHBvcnQgYXZhaWxhYmxlXSkKLWVsc2UKLSAgICBBQ19DQUNIRV9DSEVDSyhbaWYgc3lzY3RsIHByb3ZpZGVzIGtlcm4uY3BfdGltZXMga2VybmVsIGluZm9ybWF0aW9uXSwKLSAgICAgICAgYWNfY3ZfSEFWRV9LRVJOX0NQX1RJTUVTLAotICAgICAgIFtBQ19UUllfUlVOKFsKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0KLW1haW4gKCkgewotCi0gIHNpemVfdCAgICAgICAgICAgICAgY3BfdGltZXNfc2l6ZTsKLSAgc2l6ZV90ICAgICAgICAgICAgICBuY3B1X3NpemU7Ci0KLSAgaWYgKHN5c2N0bGJ5bmFtZSgia2Vybi5jcF90aW1lcyIsIE5VTEwsICZjcF90aW1lc19zaXplLCBOVUxMLCAwKSkKLSAgICBleGl0KDEpOwotICBlbHNlCi0gICAgZXhpdCgwKTsKLX0KLSAgICAgICAgXSwKLSAgICAgICAgYWNfY3ZfSEFWRV9LRVJOX0NQX1RJTUVTPXllcywKLSAgICAgICAgYWNfY3ZfSEFWRV9LRVJOX0NQX1RJTUVTPW5vLAotICAgICAgICBhY19jdl9IQVZFX0tFUk5fQ1BfVElNRVM9bm8pXSkKLWZpCi0KLWlmIHRlc3QgIngkYWNfY3ZfSEFWRV9LRVJOX0NQX1RJTUVTIiA9ICJ4eWVzIjsgdGhlbgotICBBQ19ERUZJTkUoSEFWRV9LRVJOX0NQX1RJTUVTLCAxLCBba2Vybi5jcF90aW1lcyBkaXNwbGF5cyBtdWx0aSBjcHUgbG9hZCBvbiBGcmVlQlNELi4uXSkKLWZpCiAKICMgICBDaGVjayB3aGV0aGVyIFRDUCB0aW1lciBjb25zdGFudHMgYXJlIGluZGVlZCBjb25zdGFudAogIyAgICAgICBvciBkZXBlbmQgb24gdGhlIGtlcm5lbCBjbG9jayB0aWNrICdoeicuICAgICAgICAoRnJlZUJTRCA0LngpCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfb3NfcHJvZ3MgYi9jb25maWd1cmUuZC9jb25maWdfb3NfcHJvZ3MKaW5kZXggYTYwNzE0ZS4uMTYwMTM0YyAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmQvY29uZmlnX29zX3Byb2dzCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19wcm9ncwpAQCAtNDAxLDEyICs0MDEsMTIgQEAKIAlmaQogCTs7CiAKLSAgICBkYXJ3aW44KnxkYXJ3aW45KnxkYXJ3aW4xMCopCisgICAgZGFyd2luOCp8ZGFyd2luOSp8ZGFyd2luMTAqfGRhcndpbjExKnxkYXJ3aW4xMip8ZGFyd2luMTMqKQogICAgICAgICAjICAgRmxhdCBOYW1lc3BhY2UgbGlua2luZyAgICAgICAgICAgICAgICAgICAgICAoTWFjIE9TL1gpCiAgICAgICAgICMKICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGRhcndpbiBsZCBtaWdodCBuZWVkIC1mbGF0X25hbWVzcGFjZV0pCiAJaWYgdGVzdCAteiAiJE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCI7IHRoZW4KLQkJTERGTEFHUz0iLWZsYXRfbmFtZXNwYWNlICRMREZMQUdTIgorCQlMREZMQUdTPSItZmxhdF9uYW1lc3BhY2UgLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiAtZnJhbWV3b3JrIENvcmVTZXJ2aWNlcyAtZnJhbWV3b3JrIERpc2tBcmJpdHJhdGlvbiAtZnJhbWV3b3JrIElPS2l0ICRMREZMQUdTIgogCQlBQ19NU0dfUkVTVUxUKFt5ZXNdKQogCWVsc2UKIAkJQUNfTVNHX1JFU1VMVChbbm9dKQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX29zX3N0cnVjdF9tZW1iZXJzIGIvY29uZmlndXJlLmQvY29uZmlnX29zX3N0cnVjdF9tZW1iZXJzCmluZGV4IDJmNDA4ZjYuLjdmNmIyYzAgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVycworKysgYi9jb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnMKQEAgLTMzLDcgKzMzLDYgQEAKICNlbmRpZgogICAgIF1dKQogCi0KICMgICAgICAgc3RydWN0IGRlc19rc19zdHJ1Y3QKICMgICAgICAgICAoJ3dlYWtfa2V5JyBpbmRpY2F0ZXMgb2xkZXIgdmVyc2lvbiBvZiBPcGVuU1NMKQogIyAgIExpYnJhcnk6CkBAIC05Miw2ICs5MSwyMCBAQAogI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+CiAjZW5kaWYKICAgICBdXSkKKyMgICAgICAgc3RydWN0IGlwNnN0YXQKKyMgICBBZ2VudDoKKyMKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBpcDZzdGF0LmlwNnNfZXh0aGRydG9vbG9uZyBdLCwsWworICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoKQorICAgIFsKKyNpZiBIQVZFX05FVElORVRfSU5fSAorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVDZfSVA2X1ZBUl9ICisjaW5jbHVkZSA8bmV0aW5ldDYvaXA2X3Zhci5oPgorI2VuZGlmCisgICAgXV0pCisKICMKICMgICBOb3QtVXNlZDoKIEFDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBpcHN0YXQuaXBzX2NhbnRmb3J3YXJkLApAQCAtMzU3LDYgKzM3MCw3IEBACiAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRwc3RhdC51ZHBzX2Z1bGxzb2NrLAogICAgICAgICAgICAgICAgICAgc3RydWN0IHVkcHN0YXQudWRwc19ub3BvcnQsCiAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRwc3RhdC51ZHBzX25vcG9ydGJjYXN0LAorICAgICAgICAgICAgICAgICAgc3RydWN0IHVkcHN0YXQudWRwc19pcGFja2V0cywKICAgICAgICAgICAgICAgICAgIHN0cnVjdCB1ZHBzdGF0LnVkcHNfb3BhY2tldHNdLCwsWwogICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoKQogICAgIFsKQEAgLTM4Niw3ICs0MDAsNyBAQAogICAgICAgICBbYWNfY3ZfSUZORVRfTkVFRFNfS0VSTkVMXSwKICAgICAgICAgW2FjX2N2X0lGTkVUX05FRURTX0tFUk5FTD11bmtub3duCiAgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKLSAgICAgICAgICAgICBBQ19MQU5HX1BST0dSQU0oWworICAgICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oWwogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KQEAgLTQwMCwxMSArNDE0LDExIEBACiAjaWZkZWYgSEFWRV9ORVRfSUZfVkFSX0gKICNpbmNsdWRlIDxuZXQvaWZfdmFyLmg+CiAjZW5kaWYKLSAgICAgICAgICAgICBdLCBbW3N0cnVjdCBpZm5ldCB0ZXN0OyB0ZXN0LmlmX210dSA9IDA7XV0pLAorICAgICAgICAgICAgIF0sIFtbc3RydWN0IGlmbmV0IHRlc3Q7IHRlc3QuaWZfbXR1ID0gMDtdXSldLAogICAgICAgICAgICAgIFthY19jdl9JRk5FVF9ORUVEU19LRVJORUw9bm9dKQogICAgICAgICAgaWYgdGVzdCAiJGFjX2N2X0lGTkVUX05FRURTX0tFUk5FTCIgPSB1bmtub3duIDsgdGhlbgogICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCi0gICAgICAgICAgICAgQUNfTEFOR19QUk9HUkFNKFsKKyAgICAgICAgICAgICBbQUNfTEFOR19QUk9HUkFNKFsKICNkZWZpbmUgX0tFUk5FTCAxCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSApAQCAtNDE5LDcgKzQzMyw3IEBACiAjaWZkZWYgSEFWRV9ORVRfSUZfVkFSX0gKICNpbmNsdWRlIDxuZXQvaWZfdmFyLmg+CiAjZW5kaWYKLSAgICAgICAgICAgICBdLCBbW3N0cnVjdCBpZm5ldCB0ZXN0OyB0ZXN0LmlmX210dSA9IDA7XV0pLAorICAgICAgICAgICAgIF0sIFtbc3RydWN0IGlmbmV0IHRlc3Q7IHRlc3QuaWZfbXR1ID0gMDtdXSldLAogICAgICAgICAgICAgIFthY19jdl9JRk5FVF9ORUVEU19LRVJORUw9eWVzXSkKICAgICAgICAgIGZpXSkKIApAQCAtNTkzLDQ0ICs2MDcsNiBAQAogICAgIF1dKQogCiAKLSMjCi0jICAgcnRlbnRyeSBzdHJ1Y3R1cmUgY2hlY2tzOgotIyMKLQotIyBDaGVjayBzdHJ1Y3QgcnRlbnRyeSBmb3IgY29tbW9uIGZpZWxkcwotIyAgIEFnZW50OgotIwotQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHJ0ZW50cnkucnRfZHN0LAotICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZW50cnkucnRfaGFzaCwKLSAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVudHJ5LnJ0X25leHQsCi0gICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlbnRyeS5ydF9yZWZjbnQsCi0gICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlbnRyeS5ydF91bml0LAotICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZW50cnkucnRfdXNlXSwsLAotICAgIFsKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZmRlZiBORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTF9TVFJVQ1RVUkVTCi0jZGVmaW5lIF9LRVJORUxfU1RSVUNUVVJFUyAxCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAotI2lmZGVmIE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMCi0jZGVmaW5lIEtFUk5FTAotI2lmICFkZWZpbmVkKF9fRHJhZ29uRmx5X18pCi0jZGVmaW5lIF9LRVJORUwgMQotI2VuZGlmCi0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jdW5kZWYgS0VSTkVMCi0jdW5kZWYgX0tFUk5FTAotI2VuZGlmCi0jaWZkZWYgSEFWRV9ORVRfUk9VVEVfSAotI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgotI2VuZGlmCi0gICAgXSkKLQotCiAjIENoZWNrIGZvciBCU0QgNC4zIHZzIDQuNCBzdHJ1Y3QgcnRlbnRyeQogIwogQUNfQ0FDSEVfQ0hFQ0soW3R5cGUgb2YgcnRlbnRyeSBzdHJ1Y3R1cmVdLApkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGVybF9weXRob24gYi9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wZXJsX3B5dGhvbgppbmRleCA3OThjNWNlLi4yM2Y4YzdlIDEwMDY0NAotLS0gYS9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wZXJsX3B5dGhvbgorKysgYi9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wZXJsX3B5dGhvbgpAQCAtMjc2LDYgKzI3Niw3IEBACiAgICAgICAgIFtEZWZpbmUgaWYgeW91IGFyZSBlbWJlZGRpbmcgcGVybCBpbiB0aGUgbWFpbiBhZ2VudC5dKQogICAgICAgT1RIRVJBR0VOVExJQk9CSlM9InNubXBfcGVybC5vIgogICAgICAgT1RIRVJBR0VOVExJQkxPQkpTPSJzbm1wX3BlcmwubG8iCisgICAgICBPVEhFUkFHRU5UTElCTEZUUz0ic25tcF9wZXJsLmZ0IgogCiAgICAgICBFTUJFRFBFUkxJTlNUQUxMPSJlbWJlZHBlcmxpbnN0YWxsIgogICAgICAgRU1CRURQRVJMVU5JTlNUQUxMPSJlbWJlZHBlcmx1bmluc3RhbGwiCkBAIC0zMTQsMTEgKzMxNSwxMyBAQAogUEVSTFRBUkdTPSIiCiBQRVJMSU5TVEFMTFRBUkdTPSIiCiBQRVJMVU5JTlNUQUxMVEFSR1M9IiIKK1BFUkxGRUFUVVJFUz0iIgogQUNfTVNHX0NIRUNLSU5HKFtpZiB3ZSBjYW4gaW5zdGFsbCB0aGUgUGVybCBtb2R1bGVzXSkKIGlmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiA9ICJ4eWVzIiA7IHRoZW4KICAgICBQRVJMVEFSR1M9InBlcmxtb2R1bGVzIgogICAgIFBFUkxJTlNUQUxMVEFSR1M9InBlcmxpbnN0YWxsIgogICAgIFBFUkxVTklOU1RBTExUQVJHUz0icGVybHVuaW5zdGFsbCIKKyAgICBQRVJMRkVBVFVSRVM9InBlcmxmZWF0dXJlcyIKICAgICBpZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiID0gInh5ZXMiIDsgdGhlbgogICAgICAgQUNfTVNHX0NBQ0hFX0FERChTTk1QIFBlcmwgbW9kdWxlczogICAgICAgICAgYnVpbGRpbmcgLS0gZW1iZWRkYWJsZSkKICAgICAgIEFDX01TR19SRVNVTFQoW3llcyAtLSBhbmQgZW1iZWRkYWJsZV0pCkBAIC0zMzQsNiArMzM3LDcgQEAKIEFDX1NVQlNUKFBFUkxJTlNUQUxMVEFSR1MpCiBBQ19TVUJTVChQRVJMVU5JTlNUQUxMVEFSR1MpCiBBQ19TVUJTVChQRVJMQVJHUykKK0FDX1NVQlNUKFBFUkxGRUFUVVJFUykKIAogCiAjICAgICAgIFJlc2V0IExJQlMgdG8gcHJlLWxpYndyYXAgdmFsdWUgICAoPz8/KQpAQCAtMzUxLDEyICszNTUsMTQgQEAKIFBZVEhPTklOU1RBTExUQVJHUz0iIgogUFlUSE9OVU5JTlNUQUxMVEFSR1M9IiIKIFBZVEhPTkNMRUFOVEFSR1M9IiIKK1BZVEhPTkZFQVRVUkVTPSIiCiBBQ19NU0dfQ0hFQ0tJTkcoW2lmIHdlIHNob3VsZCBpbnN0YWxsIHRoZSBweXRob24gYmluZGluZ3NdKQogaWYgdGVzdCAieCRpbnN0YWxsX3B5dGhvbiIgPSAieHllcyIgOyB0aGVuCiAgICAgUFlUSE9OVEFSR1M9InB5dGhvbm1vZHVsZXMiCiAgICAgUFlUSE9OSU5TVEFMTFRBUkdTPSJweXRob25pbnN0YWxsIgogICAgIFBZVEhPTlVOSU5TVEFMTFRBUkdTPSJweXRob251bmluc3RhbGwiCiAgICAgUFlUSE9OQ0xFQU5UQVJHUz0icHl0aG9uY2xlYW4iCisgICAgUFlUSE9ORkVBVFVSRVM9InB5dGhvbmZlYXR1cmVzIgogICAgIEFDX01TR19DQUNIRV9BREQoU05NUCBQeXRob24gbW9kdWxlczogICAgICAgIGJ1aWxkaW5nIGZvciAkUFlUSE9OUFJPRykKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogZWxzZQpAQCAtMzY4LDUgKzM3NCw2IEBACiBBQ19TVUJTVChQWVRIT05VTklOU1RBTExUQVJHUykKIEFDX1NVQlNUKFBZVEhPTkNMRUFOVEFSR1MpCiBBQ19TVUJTVChQWVRIT05BUkdTKQorQUNfU1VCU1QoUFlUSE9ORkVBVFVSRVMpCiAKIApkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGUgYi9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZQppbmRleCAwNjljYzA3Li42MWJhMDI2IDEwMDY0NAotLS0gYS9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZQorKysgYi9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZQpAQCAtOTMsNyArOTMsMTIgQEAKICAgICBlbGlmIHRlc3QgIngkd2l0aHZhbCIgPSAieG5vIjsgdGhlbgogICAgICAgdHJ5b3BlbnNzbD1ubwogICAgIGVsaWYgdGVzdCAtZCAiJHdpdGh2YWwiOyB0aGVuCi0gICAgICBBQ19BRERfU0VBUkNIX1BBVEgoJHdpdGh2YWwpCisgICAgICBpZiB0ZXN0IC1kICIkd2l0aHZhbC9saWIvTWluR1ciOyB0aGVuCisgICAgICAgIExERkxBR1M9Ii1MJHdpdGh2YWwvbGliL01pbkdXICRMREZMQUdTIgorICAgICAgICBDUFBGTEFHUz0iLUkkd2l0aHZhbC9pbmNsdWRlICRDUFBGTEFHUyIKKyAgICAgIGVsc2UKKyAgICAgICAgQUNfQUREX1NFQVJDSF9QQVRIKCR3aXRodmFsKQorICAgICAgZmkKICAgICAgIHRyeW9wZW5zc2w9eWVzCiAgICAgICBhc2tlZG9wZW5zc2w9eWVzCiAgICAgZmksCkBAIC0xNDAsNiArMTQ1LDEzIEBACiAgICAgICBrcmI1cGF0aD0vdXNyL2tlcmJlcm9zCiBmaQogCitBQ19BUkdfV0lUSChkbnNzZWMtbG9jYWwtdmFsaWRhdGlvbiwKKyAgICAgICAgWyAgLS13aXRoLWRuc3NlYy1sb2NhbC12YWxpZGF0aW9uIEVuYWJsZSBsb2NhbCBETlNTRUMgdmFsaWRhdGlvbiB1c2luZyBsaWJ2YWwgKG5vKV0sIHdhbnRfZG5zc2VjPSR3aXRodmFsLCB3YW50X2Ruc3NlYz1ubykKK0FDX0FSR19FTkFCTEUoW2Ruc3NlYy1sb2NhbC12YWxpZGF0aW9uXSwsCisgICAgICAgICAgICAgIE5FVFNOTVBfSU5WQUxJRF9XSVRIKFtkbnNzZWMtbG9jYWwtdmFsaWRhdGlvbl0pKQorQUNfQVJHX1dJVEgoW2Ruc3NlY10sLE5FVFNOTVBfSU5WQUxJRF9XSVRIKFtkbnNzZWMtbG9jYWwtdmFsaWRhdGlvbl0pKQorQUNfQVJHX0VOQUJMRShbZG5zc2VjXSwsTkVUU05NUF9JTlZBTElEX1dJVEgoW2Ruc3NlYy1sb2NhbC12YWxpZGF0aW9uXSkpCisKIE5FVFNOTVBfQVJHX1dJVEgocnBtLAogWyAgLS13aXRob3V0LXJwbSAgICAgICAgICAgICAgICAgICBEb24ndCBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoZSBSUE0gcGFja2FnZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZW1lbnQgc3lzdGVtIHdoZW4gYnVpbGRpbmcgdGhlIGhvc3QgTUlCCkBAIC0xNjgsOCArMTgwLDE0IEBACiBBQ19TVUJTVChJTlNUQUxMX1BSRUZJWCkKIAogCi0jICAgCisjCiAjICAgU3Vic3lzdGVtcyB0byBidWlsZDoKKyMgICAgICAgTGlicmFyeQorIworRkVBVFVSRUhFQURFUlM9ImxpYnJhcnkvZmVhdHVyZXMuaCIKK0ZUTUFJTlNVQlM9IiIKKworIwogIyAgICAgICBBZ2VudAogIwogTkVUU05NUF9BUkdfRU5BQkxFKGFnZW50LApAQCAtMTc3LDYgKzE5NSw4IEBACiBpZiB0ZXN0ICJ4JGVuYWJsZV9hZ2VudCIgIT0gInhubyI7IHRoZW4KICAgIFNOTVBEPSdzbm1wZCQoRVhFRVhUKScKICAgIE1BSU5TVUJTPSIkTUFJTlNVQlMgYWdlbnQiCisgICBGRUFUVVJFSEVBREVSUz0iJEZFQVRVUkVIRUFERVJTIGFnZW50L2ZlYXR1cmVzLW1pYmdyb3Vwcy5oIGFnZW50L2ZlYXR1cmVzLmgiCisgICBGVE1BSU5TVUJTPSJhZ2VudCAkRlRNQUlOU1VCUyIKICAgIFRSQVBMSUJTPSckKFRSQVBEV0lUSEFHRU5UKScKICAgIFVTRVRSQVBMSUJTPSckKFVTRUFHRU5UTElCUyknCiBlbHNlCkBAIC0xODgsNyArMjA4LDkgQEAKICAgICNVU0VUUkFQTElCUz0nJChVU0VMSUJTKScKICAgIFRSQVBMSUJTPSckKFRSQVBEV0lUSEFHRU5UKScKICAgIFVTRVRSQVBMSUJTPSckKFVTRUFHRU5UTElCUyknCisgICBBQ19ERUZJTkUoW05FVFNOTVBfRElTQUJMRV9BR0VOVF0sIDEsIFtEZWZpbmUgaWYgbm8gYWdlbnQgaXMgYnVpbHRdKQogZmkKKwogQUNfU1VCU1QoU05NUEQpCiBBQ19TVUJTVChUUkFQTElCUykKIEFDX1NVQlNUKFVTRVRSQVBMSUJTKQpAQCAtMTk5LDYgKzIyMSwxMCBAQAogWyAgLS1kaXNhYmxlLWFwcGxpY2F0aW9ucyAgICAgICAgICBEbyBub3QgYnVpbGQgdGhlIGFwcHMgKHNubXBnZXQsIC4uLikuXSkKIGlmIHRlc3QgIngkZW5hYmxlX2FwcGxpY2F0aW9ucyIgIT0gInhubyI7IHRoZW4KICAgIE1BSU5TVUJTPSIkTUFJTlNVQlMgYXBwcyIKKyAgIEZFQVRVUkVIRUFERVJTPSIkRkVBVFVSRUhFQURFUlMgZmVhdHVyZXMtc25tcG5ldHN0YXQuaCBmZWF0dXJlcy1hcHBzLmgiCisgICBGVE1BSU5TVUJTPSJhcHBzICRGVE1BSU5TVUJTIgorZWxzZQorICAgQUNfREVGSU5FKFtORVRTTk1QX0RJU0FCTEVfQVBQU10sIDEsIFtEZWZpbmUgaWYgbm8gYXBwcyBhcmUgYnVpbHRdKQogZmkKIAogIyAgICAgICBNYW51YWwgcGFnZXMKQEAgLTIyNyw2ICsyNTMsNyBAQAogIyB3aXRoLW1pYnMgaXMgdmFsaWQgdG9vLCBidXQgbWVhbnMgc29tZXRoaW5nIGVsc2UKIAogQUNfU1VCU1QoTUFJTlNVQlMpCitBQ19TVUJTVChGVE1BSU5TVUJTKQogQUNfTVNHX0NIRUNLSU5HKFt3aGF0IHRvIGJ1aWxkIGFuZCBpbnN0YWxsXSkKIEFDX01TR19SRVNVTFQoWyRNQUlOU1VCU10pCiAKQEAgLTU1NSwxMiArNTgyLDE2IEBACiAgIEF2YWlsYWJsZSBTTk1QIHNlY3VyaXR5IHNlcnZpY2VzOgogCiAgICAgICAgIHVzbSAgICAgICAgICAgICAgICBzdXBwb3J0IGZvciB1c2VyIGJhc2VkIFNOTVAgc2VjdXJpdHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXF1aXJlZCBhbmQgYWx3YXlzIGNvbXBpbGVkIGluKQogICAgICAgICBrc20gICAgICAgICAgICAgICAgc3VwcG9ydCBmb3Iga2VyYmVyb3MgYmFzZWQgU05NUCBzZWN1cml0eQogICAgICAgICB0c20gICAgICAgICAgICAgICAgc3VwcG9ydCBmb3IgdGhlIFRyYW5zcG9ydC1iYXNlZCBzZWN1cml0eQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvciB1c2Ugd2l0aCB0aGUgU1NILCBEVExTVURQIGFuZCBUTFNUQ1AgdHJhbnNwb3J0cykKIF0pCiAKK05FVFNOTVBfQVJHX1dJVEgob3V0LXNlY3VyaXR5LW1vZHVsZXMsCitbICAtLXdpdGgtb3V0LXNlY3VyaXR5LW1vZHVsZXM9InMxIHMyIC4uLiIgICBSZW1vdmVzIHRoZSBnaXZlbiBTTk1QIHNlY3VyaXR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgc2VydmljZXMgZnJvbSB0aGUgZGVmYXVsdCBsaXN0LgorXSkKKwogCiAjIwogIyAgIFByb2plY3Q6IExpYnJhcnk6IERldmVsb3Blci1yZWxhdGVkIHNldHRpbmdzCkBAIC03MTcsNiArNzQ4LDkwIEBACiBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9BR0VOVFhfU09DS0VULCIkd2l0aHZhbCIsCiAgICAgICAgIFtVbml4IGRvbWFpbiBzb2NrZXQgZm9yIEFnZW50WCBtYXN0ZXItc3ViYWdlbnQgY29tbXVuaWNhdGlvbl0pCiAKKyMKKyMgZmVhdHVyZSBhZGRpdGlvbi9yZW1vdmFsIGFuZCBtaW5pbWlhbGlzdCBzdXBwb3J0CisjCitGRUFUVVJFX0FERF9GTEFHUz0iIgorTkVUU05NUF9BUkdfV0lUSChmZWF0dXJlcywKK1sgIC0td2l0aC1mZWF0dXJlcz0iZmVhdDEgZmVhdDIiICAgUmVxdWVzdCBleHRyYSBmZWF0dXJlcyB0byBiZSB0dXJuZWQgb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbmx5IHVzZWZ1bCB3aXRoIC0tZW5hYmxlLW1pbmltYWxpc3QpXSxbCisgIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgorICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgbGlzdCBvZiBmZWF0dXJlcyBdKTsKKyAgZmkKKyAgRkVBVFVSRV9BRERfRkxBR1M9Ii0tYWRkICR3aXRodmFsIgorICBBQ19NU0dfUkVTVUxUKGFkZGluZyBpbiBmZWF0dXJlczogJHdpdGh2YWwpCitdKQorQUNfU1VCU1QoRkVBVFVSRV9BRERfRkxBR1MpCisKKworRkVBVFVSRV9SRU1PVkVfRkxBR1M9IiIKK05FVFNOTVBfQVJHX1dJVEgob3V0LWZlYXR1cmVzLAorWyAgLS13aXRoLW91dC1mZWF0dXJlcz0iZmVhdDEuLi4iICBSZW1vdmUgc3BlY2lmaWMgZmVhdHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbXBsaWVzIC0tZW5hYmxlLW1pbmltYWxpc3QpXSxbCisgIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgorICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgbGlzdCBvZiBmZWF0dXJlcyBdKTsKKyAgZmkKKyAgRkVBVFVSRV9SRU1PVkVfRkxBR1M9Ii0tcmVtb3ZlICR3aXRodmFsIgorICBGRUFUVVJFVEFSR1M9ImZlYXR1cmVzIgorICBBQ19ERUZJTkUoTkVUU05NUF9NSU5JTUFMX0NPREUsIDEsCisgICAgW0RlZmluZSBpZiB5b3Ugd2FudCB0byByZW1vdmUgYWxsIG5vbi1lc3NlbnRpYWwgY29kZSBmZWF0dXJlcy5dKQorICBBQ19NU0dfUkVTVUxUKHJlbW92aW5nIGZlYXR1cmVzOiAkd2l0aHZhbCkKK10pCitBQ19TVUJTVChGRUFUVVJFX1JFTU9WRV9GTEFHUykKKworCisjIENhdGNoIGNvbW1vbiBtaXN0YWtlcworQUNfQVJHX1dJVEgoZmVhdHVyZSwsIE5FVFNOTVBfSU5WQUxJRF9XSVRIKFtmZWF0dXJlc10pKQorQUNfQVJHX1dJVEgob3V0LWZlYXR1cmUsLCBORVRTTk1QX0lOVkFMSURfV0lUSChbb3V0LWZlYXR1cmVzXSkpCisKK0ZFQVRVUkVUQVJHUz0iIgorTkVUU05NUF9BUkdfRU5BQkxFKG1pbmltYWxpc3QsCitbICAtLWVuYWJsZS1taW5pbWFsaXN0ICAgICAgICAgICAgIFJlbW92ZSBhbGwgbm9uLWVzc2VudGlhbCBjb2RlIGZlYXR1cmVzLl0pCitpZiB0ZXN0ICJ4JGVuYWJsZV9taW5pbWFsaXN0IiA9ICJ4eWVzIjsgdGhlbgorICAgIyB3ZSdsbCBhc3N1bWUgdGhlIG1pbmkgYWdlbnQgaXMgZGVzaXJlZCBoZXJlIGFzIHdlbGwKKyAgIG1pbmlfYWdlbnQ9InllcyIKKyAgIEZFQVRVUkVUQVJHUz0iZmVhdHVyZXMiCisKKyAgICMgbmVlZGVkIHRvIGJvb3RzdHJhcCBsYXRlciBjaGVja3MKKyAgIGVjaG8gIiIgPiBpbmNsdWRlL25ldC1zbm1wL2ZlYXR1cmUtZGV0YWlscy5oCisgICBBQ19ERUZJTkUoTkVUU05NUF9NSU5JTUFMX0NPREUsIDEsCisgICAgIFtEZWZpbmUgaWYgeW91IHdhbnQgdG8gcmVtb3ZlIGFsbCBub24tZXNzZW50aWFsIGNvZGUgZmVhdHVyZXMuXSkKK2Vsc2UKKyAgIEZFQVRVUkVIRUFERVJTPSIiCitmaQorQUNfQVJHX1dJVEgoW21pbmltYWxpc3RdLCxORVRTTk1QX0lOVkFMSURfRU5BQkxFKFttaW5pbWFsaXN0XSkpCitBQ19TVUJTVChGRUFUVVJFVEFSR1MpCitBQ19TVUJTVChGRUFUVVJFSEVBREVSUykKKworTkVUU05NUF9BUkdfRU5BQkxFKG5vdGlmeS1vbmx5LAorWyAgLS1lbmFibGUtbm90aWZ5LW9ubHkgICAgICAgICAgICBCdWlsZCB0b29scyB0aGF0IGNhbiBvbmx5IHNlbmQgbm90aWZpY2F0aW9ucy5dKQoraWYgdGVzdCAieCRlbmFibGVfbm90aWZ5X29ubHkiID0gInh5ZXMiOyB0aGVuCisgICBBQ19ERUZJTkUoTkVUU05NUF9OT1RJRllfT05MWSwgMSwKKyAgICAgW0RlZmluZSBpZiB5b3Ugd2FudCB0byBvbmx5IHN1cHBvcnQgc2VuZGluZyBub3RpZmljYXRpb25zXSkKK2ZpCitBQ19BUkdfV0lUSChbbm90aWZ5LW9ubHldLCxORVRTTk1QX0lOVkFMSURfRU5BQkxFKFtub3RpZnktb25seV0pKQorQUNfQVJHX0VOQUJMRShbbm90aWZ5b25seV0sLE5FVFNOTVBfSU5WQUxJRF9FTkFCTEUoW25vdGlmeS1vbmx5XSkpCisKK05FVFNOTVBfQVJHX0VOQUJMRShuby1saXN0ZW4sCitbICAtLWVuYWJsZS1uby1saXN0ZW4gICAgICAgICAgICAgIEJ1aWxkIHRvb2xzIHRoYXQgY2FuJ3QgbGlzdGVuIHRvIHBvcnRzLl0pCitpZiB0ZXN0ICJ4JGVuYWJsZV9ub19saXN0ZW4iID0gInh5ZXMiIC1vICJ4JGVuYWJsZV9ub3RpZnlfb25seSIgPSAieHllcyI7IHRoZW4KKyAgIGVuYWJsZV9ub19saXN0ZW49InllcyIKKyAgIEFDX0RFRklORShORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JULCAxLAorICAgICBbRGVmaW5lIGlmIHlvdSB3YW50IHRvIHJlbW92ZSBhbGwgbGlzdGVuaW5nIHN1cHBvcnQgZnJvbSB0aGUgY29kZV0pCitmaQorQUNfQVJHX1dJVEgoW25vLWxpc3Rlbl0sLE5FVFNOTVBfSU5WQUxJRF9FTkFCTEUoW25vLWxpc3Rlbl0pKQorQUNfQVJHX0VOQUJMRShbbm9saXN0ZW5dLCxORVRTTk1QX0lOVkFMSURfRU5BQkxFKFtuby1saXN0ZW5dKSkKKworTkVUU05NUF9BUkdfRU5BQkxFKHJlYWQtb25seSwKK1sgIC0tZW5hYmxlLXJlYWQtb25seSAgICAgICAgICAgICAgUmVtb3ZlIGFsbCBTRVQgc3VwcG9ydCBmcm9tIHRoZSBjb2RlLl0pCitpZiB0ZXN0ICJ4JGVuYWJsZV9yZWFkX29ubHkiID0gInh5ZXMiIC1vICJ4JGVuYWJsZV9ub3RpZnlfb25seSIgPSAieHllcyIgOyB0aGVuCisgICBlbmFibGVfcmVhZF9vbmx5PSJ5ZXMiCisgICBBQ19ERUZJTkUoTkVUU05NUF9OT19XUklURV9TVVBQT1JULCAxLAorICAgICBbRGVmaW5lIGlmIHlvdSB3YW50IHRvIHJlbW92ZSBhbGwgU0VUL3dyaXRlIGFjY2VzcyBmcm9tIHRoZSBjb2RlXSkKK2ZpCitBQ19BUkdfV0lUSChbcmVhZC1vbmx5XSwsTkVUU05NUF9JTlZBTElEX0VOQUJMRShbcmVhZC1vbmx5XSkpCitBQ19BUkdfRU5BQkxFKFtyZWFkb25seV0sLE5FVFNOTVBfSU5WQUxJRF9FTkFCTEUoW3JlYWQtb25seV0pKQorCiAKICMjCiAjICAgUHJvamVjdDogQWdlbnQ6IE1JQiBtb2R1bGUgY29uZmlndXJhdGlvbgpAQCAtNzMyLDYgKzg0Nyw5IEBACiBBQ19BUkdfV0lUSChbbWluaWFnZW50XSwsTkVUU05NUF9JTlZBTElEX0VOQUJMRShbbWluaS1hZ2VudF0pKQogQUNfQVJHX0VOQUJMRShbbWluaWFnZW50XSwsTkVUU05NUF9JTlZBTElEX0VOQUJMRShbbWluaS1hZ2VudF0pKQogCisKKworCiBORVRTTk1QX0FSR19FTkFCTEUobWZkLXJld3JpdGVzLAogWyAgLS1lbmFibGUtbWZkLXJld3JpdGVzICAgICAgICAgICBVc2UgbmV3IE1GRCByZXdyaXRlcyBvZiBtaWIgbW9kdWxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSBhdmFpbGFibGUuIChkZWZhdWx0IGlzIHRvIHVzZQpkaWZmIC0tZ2l0IGEvZGlzdC9NYWtlZmlsZSBiL2Rpc3QvTWFrZWZpbGUKaW5kZXggMTBhNzQ5My4uNTg3ZjBlYSAxMDA2NDQKLS0tIGEvZGlzdC9NYWtlZmlsZQorKysgYi9kaXN0L01ha2VmaWxlCkBAIC0xOSw3ICsxOSw3IEBACiBOQU1FID0gbmV0LXNubXAKIAogIyBEZWZpbmUgdGhlIGRlZmF1bHQgUlBNIHJlbGVhc2UgbnVtYmVyLiBTZXQgYnkgVmVyc2lvbi1NdW5nZS5wbAotVkVSU0lPTiA9IDUuNi4yCitWRVJTSU9OID0gNS43LjMucHJlMwogCiBWRVJTSU9OX1RBRz1gZWNobyBFeHQtJChWRVJTSU9OKSB8IHNlZCAncy9cLi8tL2c7J2AKIApkaWZmIC0tZ2l0IGEvZGlzdC9hdXRvY29uZi12ZXJzaW9uIGIvZGlzdC9hdXRvY29uZi12ZXJzaW9uCmluZGV4IGM5NWZlYTUuLjI2NGYyY2UgMTAwNjQ0Ci0tLSBhL2Rpc3QvYXV0b2NvbmYtdmVyc2lvbgorKysgYi9kaXN0L2F1dG9jb25mLXZlcnNpb24KQEAgLTEgKzEgQEAKLTIuNjMKKzIuNjgKZGlmZiAtLWdpdCBhL2Rpc3QvbWFrZXJlbGVhc2UueG1sIGIvZGlzdC9tYWtlcmVsZWFzZS54bWwKaW5kZXggYzMyYjgxMy4uYjAyZTYyNiAxMDA2NDQKLS0tIGEvZGlzdC9tYWtlcmVsZWFzZS54bWwKKysrIGIvZGlzdC9tYWtlcmVsZWFzZS54bWwKQEAgLTM3MSw3ICszNzEsNyBAQAogCSAgICA8Y29tbWFuZD5ORVRTTk1QX0RPTlRfQ0hFQ0tfVkVSU0lPTj0xIG1ha2U8L2NvbW1hbmQ+CiAJICA8L2NvbW1hbmRzPgogCTwvc3RlcD4KLQk8c3RlcCB0eXBlPSJzeXN0ZW0iIHN0ZXBuYW1lPSJidWlsZDp0ZXN0IiB0aXRsZT0iYnVpbGQ6dGVzdCI+CisJPHN0ZXAgdHlwZT0ic3lzdGVtIiBzdGVwbmFtZT0iYnVpbGQ6dGVzdCIgdGl0bGU9InRlc3Rpbmc6IGRlZmF1bHQgdGVzdHMiPgogCSAgPHRleHQ+Tm93IHdlIHJ1biAibWFrZSB0ZXN0IiB3aGljaCBzaG91bGQgcHJvZHVjZSBhIHBlcmZlY3QKIAkgIHNldCB1cCB0ZXN0IHJlc3VsdHMuICBJZiBub3QsIHRoaXMgbmVlZHMgdG8gYmUgZml4ZWQgb3IgYXQKIAkgIGxlYXN0IHVuZGVyc3Rvb2QgYW5kIGFjY2VwdGVkIGFzIGlzIGZvciBzb21lIG90aGVyIHJlYXNvbi48L3RleHQ+CkBAIC0zNzksNiArMzc5LDI0IEBACiAJICAgIDxjb21tYW5kPm1ha2UgdGVzdDwvY29tbWFuZD4KIAkgIDwvY29tbWFuZHM+CiAJPC9zdGVwPgorCTxzdGVwIHR5cGU9InN5c3RlbSIgc3RlcG5hbWU9ImJ1aWxkOnRlc3Q6dW5pdCIgdGl0bGU9InRlc3Rpbmc6IHVuaXQtdGVzdHMiPgorCSAgPHRleHQ+Tm93IHdlIHJ1biB0aGUgdW5pdC10ZXN0cyB3aGljaCBzaG91bGQgYWxzbyBwcm9kdWNlIGEgcGVyZmVjdAorCSAgc2V0IHVwIHRlc3QgcmVzdWx0cy4gIElmIG5vdCwgdGhpcyBuZWVkcyB0byBiZSBmaXhlZCBvciBhdAorCSAgbGVhc3QgdW5kZXJzdG9vZCBhbmQgYWNjZXB0ZWQgYXMgaXMgZm9yIHNvbWUgb3RoZXIgcmVhc29uLjwvdGV4dD4KKwkgIDxjb21tYW5kcz4KKwkgICAgPGNvbW1hbmQ+Y2QgdGVzdGluZyAmYW1wOyZhbXA7IC4vUlVORlVMTFRFU1RTIC1nIHVuaXQtdGVzdHM8L2NvbW1hbmQ+CisJICA8L2NvbW1hbmRzPgorCTwvc3RlcD4KKwk8c3RlcCB0eXBlPSJzeXN0ZW0iIHN0ZXBuYW1lPSJidWlsZDp0ZXN0OnRyYW5zcG9ydHMiIHRpdGxlPSJ0ZXN0aW5nOiB0cmFuc3BvcnRzIj4KKwkgIDx0ZXh0Pk5vdyB3ZSBydW4gdGhlIHRyYW5zcG9ydCB0ZXN0cyB3aGljaCBzaG91bGQgYWxzbworCSAgcHJvZHVjZSBhIHBlcmZlY3Qgc2V0IHVwIHRlc3QgcmVzdWx0cywgaWYgeW91ciBtYWNoaW5lCisJICBzdXBwb3J0cyBhbGwgdGhlIHRyYW5zcG9ydHMuICBJZiBub3QsIHRoaXMgbmVlZHMgdG8gYmUgZml4ZWQKKwkgIG9yIGF0IGxlYXN0IHVuZGVyc3Rvb2QgYW5kIGFjY2VwdGVkIGFzIGlzIGZvciBzb21lIG90aGVyCisJICByZWFzb24gKGxpa2UgeW91IGNhbid0IGRvIElQdjYgb24geW91ciBzeXN0ZW0pLjwvdGV4dD4KKwkgIDxjb21tYW5kcz4KKwkgICAgPGNvbW1hbmQ+Y2QgdGVzdGluZyAmYW1wOyZhbXA7IC4vUlVORlVMTFRFU1RTIC1nIHRyYW5zcG9ydHM8L2NvbW1hbmQ+CisJICA8L2NvbW1hbmRzPgorCTwvc3RlcD4KIAk8c3RlcCB0eXBlPSJzeXN0ZW0iIHN0ZXBuYW1lPSJjb2RlOmNoZWNrY29tbWVudHMiIHRpdGxlPSJjb2RlOmNoZWNrY29tbWVudHMiPgogCSAgPHRleHQ+VGhpcyBjb21tYW5kIGxvb2tzIGZvciBzb3VyY2UgY29kZSBvZGRpdGllcyBhbmQgcG9saWN5CiAJICB2aW9sYXRpb25zLjwvdGV4dD4KZGlmZiAtLWdpdCBhL2Rpc3QvbmV0LXNubXAuc3BlYyBiL2Rpc3QvbmV0LXNubXAuc3BlYwppbmRleCAyMjgzYzJmLi41NTI4ZjE1IDEwMDY0NAotLS0gYS9kaXN0L25ldC1zbm1wLnNwZWMKKysrIGIvZGlzdC9uZXQtc25tcC5zcGVjCkBAIC0zNyw3ICszNyw3IEBACiAlZW5kaWYKIFN1bW1hcnk6IFRvb2xzIGFuZCBzZXJ2ZXJzIGZvciB0aGUgU05NUCBwcm90b2NvbAogTmFtZTogbmV0LXNubXAKLVZlcnNpb246IDUuNi4yCitWZXJzaW9uOiA1LjcuMy5wcmUzCiAjIHVwZGF0ZSByZWxlYXNlIGZvciB2ZW5kb3IgcmVsZWFzZS4gKGVnIDEuZmM2LCAxLnJoNzIsIDEueWRsMywgMS55ZGwyMykKIFJlbGVhc2U6IDEKIFVSTDogaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvCmRpZmYgLS1naXQgYS9kaXN0L3BhdG1lIGIvZGlzdC9wYXRtZQppbmRleCBjYzBiODdhLi4wZmQ1MGVlIDEwMDc1NQotLS0gYS9kaXN0L3BhdG1lCisrKyBiL2Rpc3QvcGF0bWUKQEAgLTE0LDEyICsxNCwxMyBAQAogb3VyICVvcHRzID0KICgKICAnZCcgPT4gJEVOVnsnSE9NRSd9IC4gIi9zcmMvc25tcC9wYXRtZS8iLAotICdiJyA9PiAnbWFpbiw1LjUsNS40LDUuMyw1LjInLAorICdiJyA9PiAnbWFpbiw1LjYsNS41LDUuNCw1LjMnLAogICdwJyA9PiAnLXAwJywKICk7CiAKICMgc2V0cyB0aGUgb3JkZXIgc2hvd24KIG91ciBAY29kZXRyZWVzID0gKCdtYWluJywKKwkJICAnNS42JywKIAkJICAnNS41JywKIAkJICAnNS40JywKIAkJICAnNS4zJywKQEAgLTM0LDYgKzM1LDcgQEAKIAkJICAnNS4zJyA9PiAnVjUtMy1wYXRjaGVzJywKIAkJICAnNS40JyA9PiAnVjUtNC1wYXRjaGVzJywKIAkJICAnNS41JyA9PiAnVjUtNS1wYXRjaGVzJywKKwkJICAnNS42JyA9PiAnVjUtNi1wYXRjaGVzJywKIAkJICAnbWFpbicgPT4gJ25ldC1zbm1wJywKIAkJICAnVUNEJyA9PiAnVjQtMi1wYXRjaGVzJyk7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKaW5kZXggMjQzMmI4OC4uZWM5MzBmZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKQEAgLTYxLDYgKzYxLDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuZXRzbm1wX3JlcXVlc3RfaW5mb19zICopOworICAgICAgICAvKiogZGF0YSBjbG9uZSBob29rIGZvciBteXZvaWQKKyAgICAgICAgICogIGRlZXAgY29weSB0aGUgbXl2b2lkIG1lbWJlciAtIGRlZmF1bHQgaXMgdG8gY29weSB0aGUgcG9pbnRlcgorICAgICAgICAgKiAgVGhpcyBtZXRob2QgaXMgb25seSBjYWxsZWQgaWYgbXl2b2lkICE9IE5VTEwKKyAgICAgICAgICogIG15dm9pZCBpcyB0aGUgY3VycmVudCBteXZvaWQgcG9pbnRlci4KKyAgICAgICAgICogIHJldHVybnMgTlVMTCBvbiBmYWlsdXJlCisgICAgICAgICAqLworICAgICAgICB2b2lkICooKmRhdGFfY2xvbmUpKHZvaWQgKm15dm9pZCk7CisgICAgICAgIC8qKiBkYXRhIGZyZWUgaG9vayBmb3IgbXl2b2lkCisgICAgICAgICAqICBkZWxldGUgdGhlIG15dm9pZCBtZW1iZXIgLSBkZWZhdWx0IGlzIHRvIGRvIG5vdGhpbmcKKyAgICAgICAgICogIFRoaXMgbWV0aG9kIGlzIG9ubHkgY2FsbGVkIGlmIG15dm9pZCAhPSBOVUxMCisgICAgICAgICAqLwogICAgICAgICB2b2lkICgqZGF0YV9mcmVlKSh2b2lkICpteXZvaWQpOyAvKio8IGRhdGEgZnJlZSBob29rIGZvciBteXZvaWQgKi8KIAogICAgICAgICBzdHJ1Y3QgbmV0c25tcF9taWJfaGFuZGxlcl9zICpuZXh0OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCmluZGV4IGJhODA3OTMuLjI5NDljOWQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKQEAgLTU5LDE4ICs1OSwyMSBAQAogdm9pZCAgICAgICAgICAgICBzaHV0ZG93bl90cmVlICAgICh2b2lkKTsKIAogCi1uZXRzbm1wX3N1YnRyZWUgKm5ldHNubXBfc3VidHJlZV9maW5kCSAgKG9pZCAqLCBzaXplX3QsIG5ldHNubXBfc3VidHJlZSAqLAorbmV0c25tcF9zdWJ0cmVlICpuZXRzbm1wX3N1YnRyZWVfZmluZAkgIChjb25zdCBvaWQgKiwgc2l6ZV90LAorCQkJCQkgICBuZXRzbm1wX3N1YnRyZWUgKiwKIAkJCQkJICAgY29uc3QgY2hhciAqY29udGV4dF9uYW1lKTsKIAotbmV0c25tcF9zdWJ0cmVlICpuZXRzbm1wX3N1YnRyZWVfZmluZF9uZXh0KG9pZCAqLCBzaXplX3QsIG5ldHNubXBfc3VidHJlZSAqLAorbmV0c25tcF9zdWJ0cmVlICpuZXRzbm1wX3N1YnRyZWVfZmluZF9uZXh0KGNvbnN0IG9pZCAqLCBzaXplX3QsCisJCQkJCSAgIG5ldHNubXBfc3VidHJlZSAqLAogCQkJCQkgICBjb25zdCBjaGFyICpjb250ZXh0X25hbWUpOwogCi1uZXRzbm1wX3N1YnRyZWUgKm5ldHNubXBfc3VidHJlZV9maW5kX3ByZXYob2lkICosIHNpemVfdCxuZXRzbm1wX3N1YnRyZWUgKiwKK25ldHNubXBfc3VidHJlZSAqbmV0c25tcF9zdWJ0cmVlX2ZpbmRfcHJldihjb25zdCBvaWQgKiwgc2l6ZV90LAorCQkJCQkgICBuZXRzbm1wX3N1YnRyZWUgKiwKIAkJCQkJICAgY29uc3QgY2hhciAqY29udGV4dF9uYW1lKTsKIAogbmV0c25tcF9zdWJ0cmVlICpuZXRzbm1wX3N1YnRyZWVfZmluZF9maXJzdChjb25zdCBjaGFyICpjb250ZXh0X25hbWUpOwogCi1uZXRzbm1wX3Nlc3Npb24gKmdldF9zZXNzaW9uX2Zvcl9vaWQJICAgKG9pZCAqLCBzaXplX3QsIAorbmV0c25tcF9zZXNzaW9uICpnZXRfc2Vzc2lvbl9mb3Jfb2lkCSAgIChjb25zdCBvaWQgKiwgc2l6ZV90LCAKIAkJCQkJICAgIGNvbnN0IGNoYXIgKmNvbnRleHRfbmFtZSk7CiAKIHN1YnRyZWVfY29udGV4dF9jYWNoZSAqZ2V0X3RvcF9jb250ZXh0X2NhY2hlKHZvaWQpOwpAQCAtODYsMjUgKzg5LDMyIEBACiAjZGVmaW5lIE1JQl9VTlJFR0lTVFJBVElPTl9GQUlMRUQJLTIKICNkZWZpbmUgREVGQVVMVF9NSUJfUFJJT1JJVFkJCTEyNwogCi1pbnQgICAgICAgICAgICAgcmVnaXN0ZXJfbWliCQkgICAoY29uc3QgY2hhciAqLCBzdHJ1Y3QgdmFyaWFibGUgKiwKLQkJCQkJICAgIHNpemVfdCwgc2l6ZV90LCBvaWQgKiwgc2l6ZV90KTsKK2ludCAgICAgICAgICAgICByZWdpc3Rlcl9taWIJCSAgIChjb25zdCBjaGFyICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB2YXJpYWJsZSAqLAorCQkJCQkgICAgc2l6ZV90LCBzaXplX3QsIGNvbnN0IG9pZCAqLAorCQkJCQkgICAgc2l6ZV90KTsKIAotaW50ICAgICAgICAgICAgIHJlZ2lzdGVyX21pYl9wcmlvcml0eQkgICAoY29uc3QgY2hhciAqLCBzdHJ1Y3QgdmFyaWFibGUgKiwKLQkJCQkJICAgIHNpemVfdCwgc2l6ZV90LCBvaWQgKiwgc2l6ZV90LAoraW50ICAgICAgICAgICAgIHJlZ2lzdGVyX21pYl9wcmlvcml0eQkgICAoY29uc3QgY2hhciAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdmFyaWFibGUgKiwKKwkJCQkJICAgIHNpemVfdCwgc2l6ZV90LCBjb25zdCBvaWQgKiwgc2l6ZV90LAogCQkJCQkgICAgaW50KTsKIAotaW50ICAgICAgICAgICAgIHJlZ2lzdGVyX21pYl9yYW5nZQkgICAoY29uc3QgY2hhciAqLCBzdHJ1Y3QgdmFyaWFibGUgKiwKLQkJCQkJICAgIHNpemVfdCwgc2l6ZV90LCBvaWQgKiwgc2l6ZV90LCAKLQkJCQkJICAgIGludCwgaW50LCBvaWQsIG5ldHNubXBfc2Vzc2lvbiAqKTsKK2ludCAgICAgICAgICAgICByZWdpc3Rlcl9taWJfcmFuZ2UJICAgKGNvbnN0IGNoYXIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHZhcmlhYmxlICosCisJCQkJCSAgICBzaXplX3QsIHNpemVfdCwgY29uc3Qgb2lkICosCisJCQkJCSAgICBzaXplX3QsIGludCwgaW50LCBvaWQsCisJCQkJCSAgICBuZXRzbm1wX3Nlc3Npb24gKik7CiAKLWludAkJcmVnaXN0ZXJfbWliX2NvbnRleHQJICAgKGNvbnN0IGNoYXIgKiwgc3RydWN0IHZhcmlhYmxlICosCi0JCQkJCSAgICBzaXplX3QsIHNpemVfdCwgb2lkICosIHNpemVfdCwKK2ludAkJcmVnaXN0ZXJfbWliX2NvbnRleHQJICAgKGNvbnN0IGNoYXIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHZhcmlhYmxlICosCisJCQkJCSAgICBzaXplX3QsIHNpemVfdCwgY29uc3Qgb2lkICosIHNpemVfdCwKIAkJCQkJICAgIGludCwgaW50LCBvaWQsIG5ldHNubXBfc2Vzc2lvbiAqLAogCQkJCQkgICAgY29uc3QgY2hhciAqLCBpbnQsIGludCk7CiAKLWludAluZXRzbm1wX3JlZ2lzdGVyX21pYl90YWJsZV9yb3cJICAgKGNvbnN0IGNoYXIgKiwgc3RydWN0IHZhcmlhYmxlICosCi0JCQkJCSAgICBzaXplX3QsIHNpemVfdCwgb2lkICosIHNpemVfdCwgCi0JCQkJCSAgICBpbnQsIGludCwgbmV0c25tcF9zZXNzaW9uICosCitpbnQJbmV0c25tcF9yZWdpc3Rlcl9taWJfdGFibGVfcm93CSAgIChjb25zdCBjaGFyICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB2YXJpYWJsZSAqLAorCQkJCQkgICAgc2l6ZV90LCBzaXplX3QsIG9pZCAqLAorCQkJCQkgICAgc2l6ZV90LCBpbnQsIGludCwgbmV0c25tcF9zZXNzaW9uICosCiAJCQkJCSAgICBjb25zdCBjaGFyICosIGludCwgaW50KTsKIAogaW50CQl1bnJlZ2lzdGVyX21pYgkJICAgKG9pZCAqLCBzaXplX3QpOwpAQCAtMTM5LDEwICsxNDksMTIgQEAKICAqICAgICAgICAgIChzaXplb2YodGhlb2lkKSAqbXVzdCogcmV0dXJuIHRoZSBudW1iZXIgb2YgZWxlbWVudHMhKSAKICAqLwogCi0jZGVmaW5lIFJFR0lTVEVSX01JQihkZXNjciwgdmFyLCB2YXJ0eXBlLCB0aGVvaWQpICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaWYgKHJlZ2lzdGVyX21pYihkZXNjciwgKHN0cnVjdCB2YXJpYWJsZSAqKSB2YXIsIHNpemVvZihzdHJ1Y3QgdmFydHlwZSksIFwKLSAgICAgICAgICAgICAgIHNpemVvZih2YXIpL3NpemVvZihzdHJ1Y3QgdmFydHlwZSksICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgdGhlb2lkLCBzaXplb2YodGhlb2lkKS9zaXplb2Yob2lkKSkgIT0gTUlCX1JFR0lTVEVSRURfT0sgKSBcCisjZGVmaW5lIFJFR0lTVEVSX01JQihkZXNjciwgdmFyLCB2YXJ0eXBlLCB0aGVvaWQpICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKHJlZ2lzdGVyX21pYihkZXNjciwgKGNvbnN0IHN0cnVjdCB2YXJpYWJsZSAqKSB2YXIsICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IHZhcnR5cGUpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICBzaXplb2YodmFyKS9zaXplb2Yoc3RydWN0IHZhcnR5cGUpLCAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICB0aGVvaWQsIHNpemVvZih0aGVvaWQpL3NpemVvZihvaWQpKSAhPSAgICAgICAgICAgICBcCisgICAgICAgIE1JQl9SRUdJU1RFUkVEX09LKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAJREVCVUdNU0dUTCgoInJlZ2lzdGVyX21pYiIsICIlcyByZWdpc3RyYXRpb24gZmFpbGVkXG4iLCBkZXNjcikpOwogCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKaW5kZXggNmExYThiOS4uZDI1NjU1MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKQEAgLTE2LDYgKzE2LDcgQEAKICNkZWZpbmUgQkFCWV9TVEVQX05PTkUgICAgICAgICAgICAgICAgICAwCiAjZGVmaW5lIEJBQllfU1RFUF9QUkVfUkVRVUVTVCAgICAgICAgICAgKDB4MSA8PCAgMSkKICNkZWZpbmUgQkFCWV9TVEVQX09CSkVDVF9MT09LVVAgICAgICAgICAoMHgxIDw8ICAyKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICNkZWZpbmUgQkFCWV9TVEVQX0NIRUNLX1ZBTFVFICAgICAgICAgICAoMHgxIDw8ICAzKQogI2RlZmluZSBCQUJZX1NURVBfUk9XX0NSRUFURSAgICAgICAgICAgICgweDEgPDwgIDQpCiAjZGVmaW5lIEJBQllfU1RFUF9VTkRPX1NFVFVQICAgICAgICAgICAgKDB4MSA8PCAgNSkKQEAgLTI2LDE0ICsyNywxNyBAQAogI2RlZmluZSBCQUJZX1NURVBfVU5ET19DT01NSVQgICAgICAgICAgICgweDEgPDwgMTApCiAjZGVmaW5lIEJBQllfU1RFUF9JUlJFVkVSU0lCTEVfQ09NTUlUICAgKDB4MSA8PCAxMSkKICNkZWZpbmUgQkFCWV9TVEVQX1VORE9fQ0xFQU5VUCAgICAgICAgICAoMHgxIDw8IDEyKQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogI2RlZmluZSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUICAgICAgICAgICgweDEgPDwgMTMpCiAKICNkZWZpbmUgQkFCWV9TVEVQX0FMTCAgICAgICAgICAgICAgICAgICAoMHhmZmZmZmZmZikKIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogI2RlZmluZSBCQUJZX1NURVBfQ0hFQ0tfT0JKRUNUICAgICAgICAgIEJBQllfU1RFUF9DSEVDS19WQUxVRQogI2RlZmluZSBCQUJZX1NURVBfU0VUX1ZBTFVFUyAgICAgICAgICAgIEJBQllfU1RFUF9TRVRfVkFMVUUKICNkZWZpbmUgQkFCWV9TVEVQX1VORE9fU0VUUyAgICAgICAgICAgICBCQUJZX1NURVBfVU5ET19TRVQKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogLyoqIEBuYW1lIGJhYnlfc3RlcHMKICAqCkBAIC00Myw2ICs0Nyw4IEBACiAgKiAgQHsgKi8KIAogICAgIHR5cGVkZWYgc3RydWN0IG5ldHNubXBfYmFieV9zdGVwc19tb2Rlc19zIHsKKyAgICAgICAvKiogTnVtYmVyIG9mIGhhbmRsZXJzIHdob3NlIG15dm9pZCBwb2ludGVyIHBvaW50cyBhdCB0aGlzIG9iamVjdC4gKi8KKyAgICAgICBpbnQgICAgICAgICByZWZjbnQ7CiAgICAgICAgdV9pbnQgICAgICAgcmVnaXN0ZXJlZDsKICAgICAgICB1X2ludCAgICAgICBjb21wbGV0ZWQ7CiAgICAgfSBuZXRzbm1wX2JhYnlfc3RlcHNfbW9kZXM7CkBAIC03NCw2ICs4MCw3IEBACiAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqcHJlX3JlcXVlc3Q7CiAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqb2JqZWN0X2xvb2t1cDsKICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICpnZXRfdmFsdWVzOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICpvYmplY3Rfc3ludGF4X2NoZWNrczsKICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICpyb3dfY3JlYXRpb247CiAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqdW5kb19zZXR1cDsKQEAgLTg0LDYgKzkxLDcgQEAKICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICp1bmRvX2NsZWFudXA7CiAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqdW5kb19jb21taXQ7CiAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqaXJyZXZlcnNpYmxlX2NvbW1pdDsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICpwb3N0X3JlcXVlc3Q7CiAKICAgIHZvaWQgICAgICAgICAgICAgICAgICpteV9hY2Nlc3Nfdm9pZDsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKaW5kZXggN2Y0ZTc0ZS4uMWU0NzUxYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKQEAgLTMyLDYgKzMyLDggQEAKICAgICB0eXBlZGVmIHZvaWQgKE5ldHNubXBDYWNoZUZyZWUpKG5ldHNubXBfY2FjaGUgKiwgdm9pZCopOwogCiAgICAgc3RydWN0IG5ldHNubXBfY2FjaGVfcyB7CisJLyoqIE51bWJlciBvZiBoYW5kbGVycyB3aG9zZSBteXZvaWQgbWVtYmVyIHBvaW50cyBhdCB0aGlzIHN0cnVjdHVyZS4gKi8KKwlpbnQgICAgICByZWZjbnQ7CiAgICAgICAgIC8qCiAJICogRm9yIG9wZXJhdGlvbiBvZiB0aGUgZGF0YSBjYWNoZXMKIAkgKi8KQEAgLTQwLDcgKzQyLDcgQEAKICAgICAgICAgaW50ICAgICAgdmFsaWQ7CiAgICAgICAgIGNoYXIgICAgIGV4cGlyZWQ7CiAgICAgICAgIGludCAgICAgIHRpbWVvdXQ7CS8qIExlbmd0aCBvZiB0aW1lIHRoZSBjYWNoZSBpcyB2YWxpZCAoaW4gcykgKi8KLSAgICAgICAgbWFya2VyX3QgdGltZXN0YW1wOwkvKiBXaGVuIHRoZSBjYWNoZSB3YXMgbGFzdCBsb2FkZWQgKi8KKyAgICAgICAgbWFya2VyX3QgdGltZXN0YW1wTTsJLyogV2hlbiB0aGUgY2FjaGUgd2FzIGxhc3QgbG9hZGVkICovCiAgICAgICAgIHVfbG9uZyAgIHRpbWVyX2lkOyAgICAgIC8qIHBlcmlvZGljIHRpbWVyIGlkICovCiAKICAgICAgICAgTmV0c25tcENhY2hlTG9hZCAqbG9hZF9jYWNoZTsKQEAgLTEwMCw2ICsxMDIsNyBAQAogCiAgICAgbmV0c25tcF9taWJfaGFuZGxlciAqCiAgICAgbmV0c25tcF9jYWNoZV9oYW5kbGVyX2dldChuZXRzbm1wX2NhY2hlKiBjYWNoZSk7CisgICAgdm9pZCBuZXRzbm1wX2NhY2hlX2hhbmRsZXJfb3duc19jYWNoZShuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyKTsKIAogICAgIG5ldHNubXBfY2FjaGUgKiBuZXRzbm1wX2NhY2hlX2ZpbmRfYnlfb2lkKGNvbnN0IG9pZCAqIHJvb3RvaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJvb3RvaWRfbGVuKTsKQEAgLTExNiw2ICsxMTksNyBAQAogI2RlZmluZSBORVRTTk1QX0NBQ0hFX0RPTlRfQVVUT19SRUxFQVNFICAgICAgICAgICAgICAgICAgICAgMHgwMDA4CiAjZGVmaW5lIE5FVFNOTVBfQ0FDSEVfUFJFTE9BRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMTAKICNkZWZpbmUgTkVUU05NUF9DQUNIRV9BVVRPX1JFTE9BRCAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAyMAorI2RlZmluZSBORVRTTk1QX0NBQ0hFX1JFU0VUX1RJTUVSX09OX1VTRSAgICAgICAgICAgICAgICAgICAgMHgwMDQwCiAKICNkZWZpbmUgTkVUU05NUF9DQUNIRV9ISU5UX0hBTkRMRVJfQVJHUyAgICAgICAgICAgICAgICAgICAgIDB4MTAwMAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKaW5kZXggM2FlNzU5ZC4uZjZmNjM5ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBORVRTTk1QX0RTX0FHRU5UX0RPTlRfTE9HX1RDUFdSQVBQRVJTX0NPTk5FQ1RTIDEyICAgLyogMSA9IGRpc2FibGUgbG9nZ2luZyAqLwogI2RlZmluZSBORVRTTk1QX0RTX0FQUF9ET05UX0xPRyAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfRE9OVF9SRVRBSU5fTk9USUZJQ0FUSU9OUyAvKiBjb21wYXQgKi8KICNkZWZpbmUgTkVUU05NUF9EU19BR0VOVF9TS0lQTkZTSU5IT1NUUkVTT1VSQ0VTICAgIDEzICAgLyogMSA9IGRvbid0IHN0b3JlIE5GUyBlbnRyaWVzIGluIGhyU3RvcmFnZVRhYmxlICovCisjZGVmaW5lIE5FVFNOTVBfRFNfQUdFTlRfUkVBTFNUT1JBR0VVTklUUyAxNCAgICAvKiAxID0gdXNlIHJlYWwgYWxsb2NhdGlvbiB1bml0cyBpbiBoclN0b3JhZ2VUYWJsZSwgMCA9IHJlY2FsY3VsYXRlIGl0IHRvIGZpdCAzMmJpdHMgKi8KIAogICAgLyogUmVwZWF0ZWQgZnJvbSAiYXBwcy9zbm1wdHJhcGRfZHMuaCIgKi8KICNkZWZpbmUgTkVUU05NUF9EU19BUFBfTlVNRVJJQ19JUCAgICAgICAxNgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9jcHUuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvY3B1LmgKaW5kZXggNjI2ODg5Ny4uZjZlNDNlNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9jcHUuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2NwdS5oCkBAIC0zMyw2ICszMyw5IEBACiAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBrZXJuX3RpY2tzOwogICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW50cnB0X3RpY2tzOwogICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc2lycV90aWNrczsKKyAgICAgdW5zaWduZWQgbG9uZyBsb25nIHN0ZWFsX3RpY2tzOworICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZ3Vlc3RfdGlja3M7CisgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBndWVzdG5pY2VfdGlja3M7CiAKICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsX3RpY2tzOwogICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc3lzMl90aWNrczsgIC8qIEZvciBub24tYXRvbWljIHN5c3RlbSBjb3VudHMgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvZnN5cy5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9mc3lzLmgKaW5kZXggNWExZTVlZi4uOTFlOGUxNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9mc3lzLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9mc3lzLmgKQEAgLTYwLDEzICs2MCwxOSBAQAogICAgICBjaGFyIGRldmljZVtTTk1QX01BWFBBVEgrMV07CiAgICAgIGludCAgdHlwZTsKIAotICAgICBsb25nIHNpemU7Ci0gICAgIGxvbmcgdXNlZDsKLSAgICAgbG9uZyBhdmFpbDsKLSAgICAgbG9uZyB1bml0czsKKyAgICAgdW5zaWduZWQgbG9uZyBsb25nIHNpemU7CisgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB1c2VkOworICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYXZhaWw7CisgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB1bml0czsKIAotICAgICBsb25nIGludW1zX3RvdGFsOwotICAgICBsb25nIGludW1zX2F2YWlsOworICAgICAvKiBhcnRpZmljaWFsbHkgY29tcHV0ZWQgdmFsdWVzLCBib3RoICdzaXplXzMyJyBhbmQgJ3VuaXRzXzMyJyBmaXQgSU5UMzIgKi8KKyAgICAgdW5zaWduZWQgbG9uZyBzaXplXzMyOworICAgICB1bnNpZ25lZCBsb25nIHVzZWRfMzI7CisgICAgIHVuc2lnbmVkIGxvbmcgYXZhaWxfMzI7CisgICAgIHVuc2lnbmVkIGxvbmcgdW5pdHNfMzI7CisKKyAgICAgdW5zaWduZWQgbG9uZyBsb25nIGludW1zX3RvdGFsOworICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW51bXNfYXZhaWw7CiAKICAgICAgaW50ICBtaW5zcGFjZTsKICAgICAgaW50ICBtaW5wZXJjZW50OwpAQCAtOTksMyArMTA1LDUgQEAKIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXRzbm1wX2ZzeXNfc2l6ZV91bGwoIG5ldHNubXBfZnN5c19pbmZvKiApOwogdW5zaWduZWQgbG9uZyBsb25nIG5ldHNubXBfZnN5c191c2VkX3VsbCggbmV0c25tcF9mc3lzX2luZm8qICk7CiB1bnNpZ25lZCBsb25nIGxvbmcgbmV0c25tcF9mc3lzX2F2YWlsX3VsbChuZXRzbm1wX2ZzeXNfaW5mbyogKTsKKwordm9pZCBuZXRzbm1wX2ZzeXNfY2FsY3VsYXRlMzIoIG5ldHNubXBfZnN5c19pbmZvICpmKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAppbmRleCBlZmM4ZGQzLi44MmYyZWRkIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCkBAIC0xMzYsMTMgKzEzNiw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKTsKIAogTmV0c25tcF9Ob2RlX0hhbmRsZXIgbmV0c25tcF9pbnN0YW5jZV9oZWxwZXJfaGFuZGxlcjsKLSNpZm5kZWYgTkVUU05NUF9OT19ERVBSRUNBVEVEX0ZVTkNUSU9OUwotTmV0c25tcF9Ob2RlX0hhbmRsZXIgbmV0c25tcF9pbnN0YW5jZV91bG9uZ19oYW5kbGVyOwotTmV0c25tcF9Ob2RlX0hhbmRsZXIgbmV0c25tcF9pbnN0YW5jZV9sb25nX2hhbmRsZXI7Ci1OZXRzbm1wX05vZGVfSGFuZGxlciBuZXRzbm1wX2luc3RhbmNlX2ludF9oYW5kbGVyOwotTmV0c25tcF9Ob2RlX0hhbmRsZXIgbmV0c25tcF9pbnN0YW5jZV91aW50X2hhbmRsZXI7Ci1OZXRzbm1wX05vZGVfSGFuZGxlciBuZXRzbm1wX2luc3RhbmNlX2NvdW50ZXIzMl9oYW5kbGVyOwotI2VuZGlmCiBOZXRzbm1wX05vZGVfSGFuZGxlciBuZXRzbm1wX2luc3RhbmNlX251bV9maWxlX2hhbmRsZXI7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAppbmRleCAwNmVjNDQ5Li4yYmQzY2QxIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaApAQCAtMjUsMTAgKzI1LDEwIEBACiB9IG5ldHNubXBfb2xkX2FwaV9jYWNoZTsKIAogaW50ICAgICAgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfb2xkX2FwaShjb25zdCBjaGFyICptb2R1bGVOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmFyaWFibGUgKnZhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHZhcmlhYmxlICp2YXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB2YXJzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtdmFycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogbWlibG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBtaWJsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtaWJsb2NsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwcmlvcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJhbmdlX3N1YmlkLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAppbmRleCA3OTk1YTViLi5hYWQ4ODM3IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaApAQCAtMTE4LDkgKzExOCwxNSBAQAogI2RlZmluZSBNT0RFX0dFVE5FWFQgICAgICAgICAgU05NUF9NU0dfR0VUTkVYVAogI2RlZmluZSBNT0RFX0dFVEJVTEsgICAgICAgICAgU05NUF9NU0dfR0VUQlVMSwogI2RlZmluZSBNT0RFX0dFVF9TVEFTSCAgICAgICAgU05NUF9NU0dfSU5URVJOQUxfR0VUX1NUQVNICisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogI2RlZmluZSBNT0RFX0lTX0dFVCh4KSAgICAgICAgKCh4ID49IDEyOCkgJiYgKHggIT0gLTEpICAmJiAoeCAhPSBTTk1QX01TR19TRVQpKQorI2Vsc2UgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisjZGVmaW5lIE1PREVfSVNfR0VUKHgpICAgICAgICAoKHggPj0gMTI4KSAmJiAoeCAhPSAtMSkpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKICAgICAvKiAjZGVmaW5lIE1PREVfSVNfR0VUKHgpICAgICAgICAoKHggPT0gU05NUF9NU0dfR0VUKSB8fCAoeCA9PSBTTk1QX01TR19HRVRORVhUKSB8fCAoeCA9PSBTTk1QX01TR19HRVRCVUxLKSB8fCAoeCA9PSBTTk1QX01TR19JTlRFUk5BTF9HRVRfU1RBU0gpKSAqLwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogI2RlZmluZSBNT0RFX1NFVF9CRUdJTiAgICAgICAgU05NUF9NU0dfSU5URVJOQUxfU0VUX0JFR0lOCiAjZGVmaW5lIE1PREVfU0VUX1JFU0VSVkUxICAgICBTTk1QX01TR19JTlRFUk5BTF9TRVRfUkVTRVJWRTEKICNkZWZpbmUgTU9ERV9TRVRfUkVTRVJWRTIgICAgIFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9SRVNFUlZFMgpAQCAtMTMwLDExICsxMzYsMTMgQEAKICNkZWZpbmUgTU9ERV9TRVRfVU5ETyAgICAgICAgIFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9VTkRPCiAjZGVmaW5lIE1PREVfSVNfU0VUKHgpICAgICAgICAgKCh4IDwgMTI4KSB8fCAoeCA9PSAtMSkgfHwgKHggPT0gU05NUF9NU0dfU0VUKSkKICAgICAvKiAjZGVmaW5lIE1PREVfSVNfU0VUKHgpICAgICAgICAgKCFNT0RFX0lTX0dFVCh4KSkgKi8KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogI2RlZmluZSBNT0RFX0JTVEVQX1BSRV9SRVFVRVNUICAgU05NUF9NU0dfSU5URVJOQUxfUFJFX1JFUVVFU1QKICNkZWZpbmUgTU9ERV9CU1RFUF9QT1NUX1JFUVVFU1QgIFNOTVBfTVNHX0lOVEVSTkFMX1BPU1RfUkVRVUVTVAogCiAjZGVmaW5lIE1PREVfQlNURVBfT0JKRUNUX0xPT0tVUCAgICAgICBTTk1QX01TR19JTlRFUk5BTF9PQkpFQ1RfTE9PS1VQCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogI2RlZmluZSBNT0RFX0JTVEVQX0NIRUNLX1ZBTFVFICAgICAgICAgU05NUF9NU0dfSU5URVJOQUxfQ0hFQ0tfVkFMVUUKICNkZWZpbmUgTU9ERV9CU1RFUF9ST1dfQ1JFQVRFICAgICAgICAgIFNOTVBfTVNHX0lOVEVSTkFMX1JPV19DUkVBVEUKICNkZWZpbmUgTU9ERV9CU1RFUF9VTkRPX1NFVFVQICAgICAgICAgIFNOTVBfTVNHX0lOVEVSTkFMX1VORE9fU0VUVVAKQEAgLTE0NSw3ICsxNTMsNyBAQAogI2RlZmluZSBNT0RFX0JTVEVQX1VORE9fQ09NTUlUICAgICAgICAgU05NUF9NU0dfSU5URVJOQUxfVU5ET19DT01NSVQKICNkZWZpbmUgTU9ERV9CU1RFUF9JUlJFVkVSU0lCTEVfQ09NTUlUIFNOTVBfTVNHX0lOVEVSTkFMX0lSUkVWRVJTSUJMRV9DT01NSVQKICNkZWZpbmUgTU9ERV9CU1RFUF9VTkRPX0NMRUFOVVAgICAgICAgIFNOTVBfTVNHX0lOVEVSTkFMX1VORE9fQ0xFQU5VUAotCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIC8qKiBAdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcyBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbwogICogVHlwZWRlZnMgdGhlIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3Mgc3RydWN0IGludG8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCmluZGV4IGQyODBhOWEuLjc3ZGJkNzAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaApAQCAtNDUsNiArNDUsMjMgQEAKIAogICAgIHN0cnVjdCB2YXJpYWJsZTsKIAorICAgIC8qKgorICAgICAqIER1cGxpY2F0ZXMgYSB2YXJpYWJsZS4KKyAgICAgKgorICAgICAqIEByZXR1cm4gUG9pbnRlciB0byB0aGUgZHVwbGljYXRlIHZhcmlhYmxlIHVwb24gc3VjY2VzczsgTlVMTCB1cG9uCisgICAgICogICBmYWlsdXJlLgorICAgICAqCisgICAgICogQHNlZSBzdHJ1Y3QgdmFyaWFibGUKKyAgICAgKiBAc2VlIHN0cnVjdCB2YXJpYWJsZTEKKyAgICAgKiBAc2VlIHN0cnVjdCB2YXJpYWJsZTIKKyAgICAgKiBAc2VlIHN0cnVjdCB2YXJpYWJsZTMKKyAgICAgKiBAc2VlIHN0cnVjdCB2YXJpYWJsZTQKKyAgICAgKiBAc2VlIHN0cnVjdCB2YXJpYWJsZTcKKyAgICAgKiBAc2VlIHN0cnVjdCB2YXJpYWJsZTgKKyAgICAgKiBAc2VlIHN0cnVjdCB2YXJpYWJsZTEzCisgICAgICovCisgICAgc3RydWN0IHZhcmlhYmxlICpuZXRzbm1wX2R1cGxpY2F0ZV92YXJpYWJsZShjb25zdCBzdHJ1Y3QgdmFyaWFibGUgKnZhcik7CisKICAgICAvKgogICAgICAqIEZ1bmN0aW9uIHBvaW50ZXIgY2FsbGVkIGJ5IHRoZSBtYXN0ZXIgYWdlbnQgZm9yIHdyaXRlcy4gCiAgICAgICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKaW5kZXggODI0OTVlYy4uNzllNTg4YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaApAQCAtMTIxLDYgKzEyMSw4IEBACiAgICAgbmV0c25tcF9taWJfaGFuZGxlcgogICAgICAgICAqbmV0c25tcF9nZXRfdGFibGVfaGFuZGxlcihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp0YWJyZXEpOworICAgIHZvaWQgIG5ldHNubXBfaGFuZGxlcl9vd25zX3RhYmxlX2luZm8obmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlcik7CisgICAgdm9pZCAgbmV0c25tcF9yZWdpc3RyYXRpb25fb3duc190YWJsZV9pbmZvKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZyk7CiAgICAgaW50ICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZSggIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYnJlcSk7CiAgICAgaW50ICAgbmV0c25tcF91bnJlZ2lzdGVyX3RhYmxlKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZ2luZm8pOwpAQCAtMTUwLDYgKzE1Miw4IEBACiAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbwogICAgICAgICAqbmV0c25tcF9maW5kX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcmVnaW5mbyk7CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqCisgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fY2xvbmUobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdHJpKTsKICAgICB2b2lkIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZShuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICopOwogCiAgICAgbmV0c25tcF9pbmRleCAqIG5ldHNubXBfdGFibGVfaW5kZXhfZmluZF9uZXh0X3JvdyhuZXRzbm1wX2NvbnRhaW5lciAqYywKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKaW5kZXggOWI4YTlhMy4uNjZlM2IzYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKQEAgLTE1MCw2ICsxNTAsOCBAQAogCiAgICAgdm9pZCBuZXRzbm1wX3JlZ2lzdGVyX2F1dG9fZGF0YV90YWJsZShuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICp0YWJsZV9zZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpyZWdpc3RyYXRpb25fbmFtZSk7CisgICAgdm9pZCBuZXRzbm1wX3VucmVnaXN0ZXJfYXV0b19kYXRhX3RhYmxlKG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKnRhYmxlX3NldCwKKwkJCQkJICAgIGNoYXIgKnJlZ2lzdHJhdGlvbl9uYW1lKTsKICAgICB2b2lkIG5ldHNubXBfY29uZmlnX3BhcnNlX3RhYmxlX3NldChjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSk7CiAgICAgdm9pZCBuZXRzbm1wX2NvbmZpZ19wYXJzZV9hZGRfcm93KCAgY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmxpbmUpOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKaW5kZXggOGNkYjFlNy4uYzcxZGQ0ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaApAQCAtNTEsNiArNTEsOSBAQAogICAgICAgIFRoZSBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gdHlwZWRlZiBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIGRpcmVjdGx5IGNhbGxpbmcgdGhpcyBzdHJ1Y3QgaWYgeW91IHdvdWxkIHByZWZlci4KICAgICAgKi8KICAgICB0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX2l0ZXJhdG9yX2luZm9fcyB7CisgICAgICAgLyoqIE51bWJlciBvZiBoYW5kbGVycyB0aGF0IG93biB0aGlzIGRhdGEgc3RydWN0dXJlLiAqLworICAgICAgIGludCByZWZjbnQ7CisKICAgICAgICAvKiogUmVzcG9uc2libGUgZm9yOiByZXR1cm5pbmcgdGhlIGZpcnN0IHNldCBvZiAiaW5kZXgiIGRhdGEsIGEKICAgICAgICAgICAgbG9vcC1jb250ZXh0IHBvaW50ZXIsIGFuZCBvcHRpb25hbGx5IGEgZGF0YSBjb250ZXh0CiAgICAgICAgICAgIHBvaW50ZXIgKi8KQEAgLTk0LDYgKzk3LDcgQEAKICAgICAgICAgdm9pZCAgICAgICAgICAgKm15dm9pZDsKICAgICAgICAgaW50ICAgICAgICAgICAgIGZsYWdzOwogI2RlZmluZSBORVRTTk1QX0lURVJBVE9SX0ZMQUdfU09SVEVECTB4MDEKKyNkZWZpbmUgTkVUU05NUF9IQU5ETEVSX09XTlNfSUlORk8JMHgwMgogCiAgICAgICAgLyoqIEEgcG9pbnRlciB0byB0aGUgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyBvYmplY3QKICAgICAgICAgICAgdGhpcyBpdGVyYXRvciBpcyByZWdpc3RlcmVkIGFsb25nIHdpdGguICovCkBAIC0xMTYsMTEgKzEyMCwxMSBAQAogICogSXRlcmF0b3IgQVBJOiBNSUIgbWFpbnRlbmFuY2UKICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIAorICAgIHZvaWQgICBuZXRzbm1wX2hhbmRsZXJfb3duc19pdGVyYXRvcl9pbmZvKG5ldHNubXBfbWliX2hhbmRsZXIgKmgpOwogICAgIG5ldHNubXBfbWliX2hhbmRsZXIKICAgICAgICAgICAqbmV0c25tcF9nZXRfdGFibGVfaXRlcmF0b3JfaGFuZGxlcihuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKmlpbmZvKTsKLSAgICBpbnQgICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvciggICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpyZWdpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqaWluZm8pOworICAgIGludCBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICppaW5mbyk7CiAgICAgdm9pZCAgbmV0c25tcF9pdGVyYXRvcl9kZWxldGVfdGFibGUobmV0c25tcF9pdGVyYXRvcl9pbmZvICppaW5mbyk7CiAKICAgICB2b2lkICpuZXRzbm1wX2V4dHJhY3RfaXRlcmF0b3JfY29udGV4dChuZXRzbm1wX3JlcXVlc3RfaW5mbyAqKTsKQEAgLTEyOCw2ICsxMzIsMTAgQEAKIAogICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyIG5ldHNubXBfdGFibGVfaXRlcmF0b3JfaGVscGVyX2hhbmRsZXI7CiAKKyNkZWZpbmUgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcjIocmVnaW5mbywgaWluZm8pICAgICAgICBcCisgICAgKCgoaWluZm8pLT5mbGFncyB8PSBORVRTTk1QX0hBTkRMRVJfT1dOU19JSU5GTyksICAgICAgICAgICBcCisgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IoKHJlZ2luZm8pLCAoaWluZm8pKSkKKwogCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgKiBJdGVyYXRvciBBUEk6IFJvdyBvcGVyYXRpb25zCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCmluZGV4IDNjNmQ2MDUuLjY3MTA0ZWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCkBAIC02NCw4ICs2NCwxMiBAQAogCiBpbnQgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKCBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF93YXRjaGVyX2luZm8gICAgICAgICAqd2luZm8pOworaW50IG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZTIobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfd2F0Y2hlcl9pbmZvICAgICAgICAgKndpbmZvKTsKIGludCBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKCAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3dhdGNoZXJfaW5mbyAgICAgICAgICp3aW5mbyk7CitpbnQgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcjIoICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF93YXRjaGVyX2luZm8gICAgICAgICAqd2luZm8pOwogaW50IG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF90aW1lc3RhbXAobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcl90IHRpbWVzdGFtcCk7CiBpbnQgbmV0c25tcF93YXRjaGVkX3RpbWVzdGFtcF9yZWdpc3RlcihuZXRzbm1wX21pYl9oYW5kbGVyICp3aGFuZGxlciwKQEAgLTEyNCw2ICsxMjgsMTEgQEAKIG5ldHNubXBfd2F0Y2hlcl9pbmZvICoKIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbzYodm9pZCAqLCBzaXplX3QsIHVfY2hhciwgaW50LCBzaXplX3QsIHNpemVfdCopOwogCituZXRzbm1wX3dhdGNoZXJfaW5mbyAqCituZXRzbm1wX2Nsb25lX3dhdGNoZXJfaW5mbyhuZXRzbm1wX3dhdGNoZXJfaW5mbyAqd2luZm8pOwordm9pZAorbmV0c25tcF9vd25zX3dhdGNoZXJfaW5mbyhuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyKTsKKwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgIG5ldHNubXBfd2F0Y2hlcl9oZWxwZXJfaGFuZGxlcjsKIAogbmV0c25tcF9taWJfaGFuZGxlciAgKm5ldHNubXBfZ2V0X3dhdGNoZWRfdGltZXN0YW1wX2hhbmRsZXIodm9pZCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2FycC5oIGIvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9hcnAuaAppbmRleCAxMWU4MzJjLi5iYTRiYjIxIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2FycC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvYXJwLmgKQEAgLTczLDYgKzczLDcgQEAKIAogICAgaW50ICAgICAgIGZsYWdzOyAvKiBmb3IgbmV0LXNubXAgdXNlICovCiAKKyAgIHVuc2lnbmVkICBnZW5lcmF0aW9uOwogICAgb2lkICAgICAgIGlmX2luZGV4OwogCiAgICB1X2NoYXIgICAgYXJwX3BoeXNhZGRyZXNzW05FVFNOTVBfQUNDRVNTX0FSUF9QSFlTQUREUl9CVUZfU0laRV07CkBAIC04NiwzMSArODcsMzkgQEAKICAgIHVfbG9uZyAgICBhcnBfbGFzdF91cGRhdGVkOyAgIC8qIHRpbWV0aWNrcyBvZiBsYXN0IHVwZGF0ZSAqLwogfSBuZXRzbm1wX2FycF9lbnRyeTsKIAorI2RlZmluZSBORVRTTk1QX0FDQ0VTU19BUlBfRU5UUllfRkxBR19ERUxFVEUgICAgICAweDAwMDAwMDAxCiAKIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKgogICogQUNDRVNTIGZ1bmN0aW9uIHByb3RvdHlwZXMKICAqLwotLyoKLSAqIGlmY29udGFpbmVyIGluaXQKLSAqLwotbmV0c25tcF9jb250YWluZXIgKiBuZXRzbm1wX2FjY2Vzc19hcnBfY29udGFpbmVyX2luaXQodV9pbnQgaW5pdF9mbGFncyk7Ci0jZGVmaW5lIE5FVFNOTVBfQUNDRVNTX0FSUF9JTklUX05PRkxBR1MgICAgICAgICAgICAgICAweDAwMDAKK3N0cnVjdCBuZXRzbm1wX2FycF9hY2Nlc3NfczsKK3R5cGVkZWYgc3RydWN0IG5ldHNubXBfYXJwX2FjY2Vzc19zIG5ldHNubXBfYXJwX2FjY2VzczsKIAotLyoKLSAqIGlmY29udGFpbmVyIGxvYWQgYW5kIGZyZWUKLSAqLwotbmV0c25tcF9jb250YWluZXIqCi1uZXRzbm1wX2FjY2Vzc19hcnBfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGxvYWRfZmxhZ3MpOwotI2RlZmluZSBORVRTTk1QX0FDQ0VTU19BUlBfTE9BRF9OT0ZMQUdTICAgICAgICAgICAgICAgMHgwMDAwCit0eXBlZGVmIHZvaWQgKE5ldHNubXBBY2Nlc3NBcnBVcGRhdGUpKG5ldHNubXBfYXJwX2FjY2VzcyAqLCBuZXRzbm1wX2FycF9lbnRyeSopOwordHlwZWRlZiB2b2lkIChOZXRzbm1wQWNjZXNzQXJwR0MpICAgIChuZXRzbm1wX2FycF9hY2Nlc3MgKik7CiAKLXZvaWQgbmV0c25tcF9hY2Nlc3NfYXJwX2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGZyZWVfZmxhZ3MpOwotI2RlZmluZSBORVRTTk1QX0FDQ0VTU19BUlBfRlJFRV9OT0ZMQUdTICAgICAgICAgICAgICAgMHgwMDAwCi0jZGVmaW5lIE5FVFNOTVBfQUNDRVNTX0FSUF9GUkVFX0RPTlRfQ0xFQVIgICAgICAgICAgICAweDAwMDEKLSNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfQVJQX0ZSRUVfS0VFUF9DT05UQUlORVIgICAgICAgIDB4MDAwMgorc3RydWN0IG5ldHNubXBfYXJwX2FjY2Vzc19zIHsKKyAgICB2b2lkICptYWdpYzsKKyAgICB2b2lkICphcmNoX21hZ2ljOworICAgIGludCBzeW5jaHJvbml6ZWQ7CisgICAgdW5zaWduZWQgZ2VuZXJhdGlvbjsKKyAgICBOZXRzbm1wQWNjZXNzQXJwVXBkYXRlICp1cGRhdGVfaG9vazsKKyAgICBOZXRzbm1wQWNjZXNzQXJwR0MgKmdjX2hvb2s7CisgICAgY2hhciAqY2FjaGVfZXhwaXJlZDsKK307CiAKK25ldHNubXBfYXJwX2FjY2VzcyAqCituZXRzbm1wX2FjY2Vzc19hcnBfY3JlYXRlKHVfaW50IGluaXRfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBBY2Nlc3NBcnBVcGRhdGUgKnVwZGF0ZV9ob29rLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wQWNjZXNzQXJwR0MgKmdjX2hvb2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqY2FjaGVfdGltZW91dCwgaW50ICpjYWNoZV9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY2FjaGVfZXhwaXJlZCk7CisjZGVmaW5lIE5FVFNOTVBfQUNDRVNTX0FSUF9DUkVBVEVfTk9GTEFHUyAgICAgICAgICAgICAweDAwMDAKKworaW50IG5ldHNubXBfYWNjZXNzX2FycF9kZWxldGUobmV0c25tcF9hcnBfYWNjZXNzICphY2Nlc3MpOworaW50IG5ldHNubXBfYWNjZXNzX2FycF9sb2FkKG5ldHNubXBfYXJwX2FjY2VzcyAqYWNjZXNzKTsKK2ludCBuZXRzbm1wX2FjY2Vzc19hcnBfdW5sb2FkKG5ldHNubXBfYXJwX2FjY2VzcyAqYWNjZXNzKTsKIAogLyoKICAqIGNyZWF0ZS9mcmVlIGEgYXJwK2VudHJ5CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwX3NjYWxhcnMuaCBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBfc2NhbGFycy5oCmluZGV4IGY3YjJlMzEuLjAzNjAxYTAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBfc2NhbGFycy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBfc2NhbGFycy5oCkBAIC04LDkgKzgsMTQgQEAKIGludCBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcEZvcndhcmRpbmdfZ2V0KHVfbG9uZyAqdmFsdWUpOwogaW50IG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwRm9yd2FyZGluZ19zZXQodV9sb25nIHZhbHVlKTsKIAoraW50IG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwRGVmYXVsdFRUTF9nZXQodV9sb25nICp2YWx1ZSk7CitpbnQgbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXBEZWZhdWx0VFRMX3NldCh1X2xvbmcgdmFsdWUpOworCiBpbnQgbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXB2NklwRm9yd2FyZGluZ19nZXQodV9sb25nICp2YWx1ZSk7CiBpbnQgbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXB2NklwRm9yd2FyZGluZ19zZXQodV9sb25nIHZhbHVlKTsKIAoraW50IG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwdjZJcERlZmF1bHRIb3BMaW1pdF9nZXQodV9sb25nICp2YWx1ZSk7CitpbnQgbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXB2NklwRGVmYXVsdEhvcExpbWl0X3NldCh1X2xvbmcgdmFsdWUpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmggYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oCmluZGV4IDc1MDU2ZjIuLjBiZmYxMDggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaApAQCAtMTQ0LDYgKzE0NCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFkZHJfbGVuLCBpbnQgcGZ4X2xlbik7CiAKIGludCBuZXRzbm1wX2lwYWRkcmVzc19pcHY0X3ByZWZpeF9sZW4oaW5fYWRkcl90IG1hc2spOworaW5fYWRkcl90IG5ldHNubXBfaXBhZGRyZXNzX2lwdjRfbWFzayhpbnQgbGVuKTsKK2ludCBuZXRzbm1wX2lwYWRkcmVzc19pcHY2X3ByZWZpeF9sZW4oc3RydWN0IGluNl9hZGRyIG1hc2spOwogCiBpbnQgbmV0c25tcF9pcGFkZHJlc3NfZmxhZ3NfY29weSh1X2xvbmcgKmlwQWRkcmVzc1ByZWZpeEFkdlByZWZlcnJlZExpZmV0aW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICppcEFkZHJlc3NQcmVmaXhBZHZWYWxpZExpZmV0aW1lLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAppbmRleCBjMjVhZDRiLi41NmNkYmFlIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaApAQCAtNTQsNiArNTQsNyBAQAogICAgIE5FVFNOTVBfSU1QT1JUCiAgICAgdm9pZCAgICAgICAgICAgIGluaXRfY2FsbGJhY2tzKHZvaWQpOwogCisgICAgTkVUU05NUF9JTVBPUlQKICAgICBpbnQgICAgICAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl9jYWxsYmFjayhpbnQgbWFqb3IsIGludCBtaW5vciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QQ2FsbGJhY2sgKiBuZXdfY2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnLCBpbnQgcHJpb3JpdHkpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NtdV9jb21wYXQuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jbXVfY29tcGF0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0NzVjNmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NtdV9jb21wYXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDI5MiArMCwwIEBACi0vKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKLSAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCi0gKiB0aGF0IG1heSBhcHBseToKLSAqLwotLyoKLSAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6Ci0gKiBDb3B5cmlnaHQgqSAyMDAzIFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKLSAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCi0gKi8KLQotLyoKLSAqICBDTVUgY29tcGF0YWJpbGl0eSBkZWZpbml0aW9ucyBhbmQgc3RydWN0dXJlcy4KLSAqCi0gKiAgICAoc2luY2UgdGhlIFVDRCBwYWNrYWdlIHNwbGl0IGZyb20gdGhlIENNVSBvbmUKLSAqICAgICBhYm91dCA4IHllYXJzIGFnbywgdGhhdCdzIHByb2JhYmx5IGVub3VnaCB0aW1lCi0gKiAgICAgZm9yIHBlb3BsZSB0byBjb252ZXJ0IGFueSBvdXRzdGFuZGluZyBjb2RlISkKLSAqLwotCi0jaWZuZGVmIE5FVF9TTk1QX0NNVV9DT01QQVRfSAotI2RlZmluZSBORVRfU05NUF9DTVVfQ09NUEFUX0gKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gICAgICAgICAgIkMiIHsKLSNlbmRpZgotCi0gICAgLyoKLSAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgICogKgotICAgICAqICogRW51bWVyYXRpb25zIGFuZCBkZWZpbml0aW9ucwotICAgICAqICoKLSAgICAgKiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gCi0gICAgICovCi0jaW5jbHVkZSA8bmV0LXNubXAvZGVmaW5pdGlvbnMuaD4KLSAgICAvKgotICAgICAqIEZyb20gcGFyc2UuaCAKLSAgICAgKi8KLSNkZWZpbmUgQUNDRVNTX1JFQURPTkxZCQlNSUJfQUNDRVNTX1JFQURPTkxZCi0jZGVmaW5lIEFDQ0VTU19SRUFEV1JJVEUJTUlCX0FDQ0VTU19SRUFEV1JJVEUKLSNkZWZpbmUgQUNDRVNTX1dSSVRFT05MWQlNSUJfQUNDRVNTX1dSSVRFT05MWQotI2RlZmluZSBBQ0NFU1NfTk9BQ0NFU1MJCU1JQl9BQ0NFU1NfTk9BQ0NFU1MKLSNkZWZpbmUgQUNDRVNTX05PVElGWQkJTUlCX0FDQ0VTU19OT1RJRlkKLSNkZWZpbmUgQUNDRVNTX0NSRUFURQkJTUlCX0FDQ0VTU19DUkVBVEUKLSNkZWZpbmUgU1RBVFVTX01BTkRBVE9SWQlNSUJfU1RBVFVTX01BTkRBVE9SWQotI2RlZmluZSBTVEFUVVNfT1BUSU9OQUwJCU1JQl9TVEFUVVNfT1BUSU9OQUwKLSNkZWZpbmUgU1RBVFVTX09CU09MRVRFCQlNSUJfU1RBVFVTX09CU09MRVRFCi0jZGVmaW5lIFNUQVRVU19ERVBSRUNBVEVECU1JQl9TVEFUVVNfREVQUkVDQVRFRAotI2RlZmluZSBTVEFUVVNfQ1VSUkVOVAkJTUlCX1NUQVRVU19DVVJSRU5UCi0gICAgLyoKLSAgICAgKiBGcm9tIHNtbnBfaW1wbC5oIAotICAgICAqLwotI2RlZmluZSBJTlRFR0VSCSAgICBBU05fSU5URUdFUgotI2RlZmluZSBTVFJJTkcJICAgIEFTTl9PQ1RFVF9TVFIKLSNkZWZpbmUgT0JKSUQJICAgIEFTTl9PQkpFQ1RfSUQKLSNkZWZpbmUgTlVMTE9CSgkgICAgQVNOX05VTEwKLSNkZWZpbmUgQklUU1RSSU5HICAgQVNOX0JJVF9TVFIgLyogSElTVE9SSUMgLSBkb24ndCB1c2UgKi8KLSNkZWZpbmUgSVBBRERSRVNTICAgQVNOX0lQQUREUkVTUwotI2RlZmluZSBDT1VOVEVSCSAgICBBU05fQ09VTlRFUgotI2RlZmluZSBHQVVHRQkgICAgQVNOX0dBVUdFCi0jZGVmaW5lIFVOU0lHTkVEICAgIEFTTl9VTlNJR05FRAotI2RlZmluZSBUSU1FVElDS1MgICBBU05fVElNRVRJQ0tTCi0jZGVmaW5lIEFTTlRfT1BBUVVFIEFTTl9PUEFRVUUKLSNkZWZpbmUgTlNBUAkgICAgQVNOX05TQVAKLSNkZWZpbmUgQ09VTlRFUjY0ICAgQVNOX0NPVU5URVI2NAotI2RlZmluZSBVSU5URUdFUiAgICBBU05fVUlOVEVHRVIKLSAgICAvKgotICAgICAqIEZyb20gc25tcC5oIAotICAgICAqLwotI2RlZmluZSBHRVRfUkVRX01TRwkgICAgU05NUF9NU0dfR0VUCi0jZGVmaW5lIEdFVE5FWFRfUkVRX01TRwkgICAgU05NUF9NU0dfR0VUTkVYVAotI2RlZmluZSBHRVRfUlNQX01TRwkgICAgU05NUF9NU0dfUkVTUE9OU0UKLSNkZWZpbmUgU0VUX1JFUV9NU0cJICAgIFNOTVBfTVNHX1NFVAotI2RlZmluZSBUUlBfUkVRX01TRwkgICAgU05NUF9NU0dfVFJBUAotI2RlZmluZSBCVUxLX1JFUV9NU0cJICAgIFNOTVBfTVNHX0dFVEJVTEsKLSNkZWZpbmUgSU5GT1JNX1JFUV9NU0cJICAgIFNOTVBfTVNHX0lORk9STQotI2RlZmluZSBUUlAyX1JFUV9NU0cJICAgIFNOTVBfTVNHX1RSQVAyCi0jZGVmaW5lIFJFUE9SVF9SU1BfTVNHCSAgICBTTk1QX01TR19SRVBPUlQKLSAgICAvKgotICAgICAqIHNpbmNlIENNVSBWMS41IAotICAgICAqLwotI2RlZmluZSBTTk1QX1BEVV9HRVQJICAgIFNOTVBfTVNHX0dFVAotI2RlZmluZSBTTk1QX1BEVV9HRVRORVhUICAgIFNOTVBfTVNHX0dFVE5FWFQKLSNkZWZpbmUgU05NUF9QRFVfUkVTUE9OU0UgICBTTk1QX01TR19SRVNQT05TRQotI2RlZmluZSBTTk1QX1BEVV9TRVQgICAgICAgIFNOTVBfTVNHX1NFVAotI2RlZmluZSBTTk1QX1BEVV9HRVRCVUxLICAgIFNOTVBfTVNHX0dFVEJVTEsKLSNkZWZpbmUgU05NUF9QRFVfSU5GT1JNICAgICBTTk1QX01TR19JTkZPUk0KLSNkZWZpbmUgU05NUF9QRFVfVjJUUkFQICAgICBTTk1QX01TR19UUkFQMgotI2RlZmluZSBTTk1QX1BEVV9SRVBPUlQgICAgIFNOTVBfTVNHX1JFUE9SVAotI2RlZmluZSBTTk1QX1RSQVBfQVVUSEVOVElDQVRJT05GQUlMVVJFIFNOTVBfVFJBUF9BVVRIRkFJTAotI2RlZmluZSBTTUlfSU5URUdFUiAgICAgQVNOX0lOVEVHRVIKLSNkZWZpbmUgU01JX1NUUklORyAgICAgIEFTTl9PQ1RFVF9TVFIKLSNkZWZpbmUgU01JX09CSklEICAgICAgIEFTTl9PQkpFQ1RfSUQKLSNkZWZpbmUgU01JX05VTExPQkogICAgIEFTTl9OVUxMCi0jZGVmaW5lIFNNSV9JUEFERFJFU1MgICBBU05fSVBBRERSRVNTCi0jZGVmaW5lIFNNSV9DT1VOVEVSMzIJQVNOX0NPVU5URVIKLSNkZWZpbmUgU01JX0dBVUdFMzIJQVNOX0dBVUdFCi0jZGVmaW5lIFNNSV9VTlNJR05FRDMyICBTTUlfR0FVR0UzMgotI2RlZmluZSBTTUlfVElNRVRJQ0tTICAgQVNOX1RJTUVUSUNLUwotI2RlZmluZSBTTUlfT1BBUVVFICAgICAgQVNOX09QQVFVRQotI2RlZmluZSBTTUlfQ09VTlRFUjY0ICAgQVNOX0NPVU5URVI2NAotICAgIC8qCi0gICAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgICAqICoKLSAgICAgKiAqICAgICBGdW5jdGlvbiBkZWNsYXJhdGlvbnMKLSAgICAgKiAqICAgICBhbmQgZ2xvYmFsIHZhcmlhYmxlcwotICAgICAqICoKLSAgICAgKiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gCi0gICAgICovCi1leHRlcm4gaW50ICAgICAgc25tcF9kdW1wX3BhY2tldDsgICAgICAgLyogZnJvbSBzbm1wX2FwaS5oICovCi1leHRlcm4gaW50ICAgICAgcXVpY2tfcHJpbnQ7ICAgIC8qIGZyb20gc25tcF9hcGkuaCAqLwotCi0jaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4gICAgIC8qIGZvciBzbm1wX3BkdSAmIHNubXBfc2Vzc2lvbiAqLwotCi1pbnQgICAgICAgICAgICAgbWliX1R4dFRvT2lkKGNoYXIgKiwgb2lkICoqLCBzaXplX3QgKik7IC8qIGZyb20gc25tcC5oICovCi1pbnQgICAgICAgICAgICAgbWliX09pZFRvVHh0KG9pZCAqLCBzaXplX3QsIGNoYXIgKiwgc2l6ZV90KTsgICAgLyogZnJvbSBzbm1wLmggKi8KLXVfY2hhciAgICAgICAgICpjbXVfc25tcF9wYXJzZShuZXRzbm1wX3Nlc3Npb24gKiBzZXNzaW9uLCBuZXRzbm1wX3BkdSAqcGR1LCB1X2NoYXIgKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsgICAgICAvKiBmcm9tIHNubXAuaCAqLwotCi0KLQotCi0gICAgICAgIC8qCi0gICAgICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICAgICAgICogKgotICAgICAgICAgKiAqIE1JQi1JSSBkYXRhIHN0cnVjdHVyZXMKLSAgICAgICAgICogKiAgICAoZnJvbSBtaWIuaCkgCi0gICAgICAgICAqICoKLSAgICAgICAgICogKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09IAotICAgICAgICAgKi8KLQotCi1zdHJ1Y3QgbWliX3N5c3RlbSB7Ci0gICAgY2hhciAgICAgICAgICAgIHN5c0Rlc2NyWzMyXTsgICAgICAgLyogdGV4dHVhbCBkZXNjcmlwdGlvbiAqLwotICAgIHVfY2hhciAgICAgICAgICBzeXNPYmplY3RJRFsxNl07ICAgIC8qIE9CSkVDVCBJREVOVElGSUVSIG9mIHN5c3RlbSAqLwotICAgIHVfY2hhciAgICAgICAgICBPYmpJRExlbjsgICAvKiBsZW5ndGggb2Ygc3lzT2JqZWN0SUQgKi8KLSAgICB1X2ludCAgICAgICAgICAgc3lzVXBUaW1lOyAgLyogVXB0aW1lIGluIDEwMC9zIG9mIGEgc2Vjb25kICovCi19OwotCi1zdHJ1Y3QgbWliX2ludGVyZmFjZSB7Ci0gICAgaW50ICAgICAgICAgICAgIGlmTnVtYmVyOyAgIC8qIG51bWJlciBvZiBpbnRlcmZhY2VzICovCi19OwotCi1zdHJ1Y3QgbWliX2lmRW50cnkgewotICAgIGludCAgICAgICAgICAgICBpZkluZGV4OyAgICAvKiBpbmRleCBvZiB0aGlzIGludGVyZmFjZSAgKi8KLSAgICBjaGFyICAgICAgICAgICAgaWZEZXNjclszMl07ICAgICAgICAvKiBlbmdsaXNoIGRlc2NyaXB0aW9uIG9mIGludGVyZmFjZSAqLwotICAgIGludCAgICAgICAgICAgICBpZlR5cGU7ICAgICAvKiBuZXR3b3JrIHR5cGUgb2YgZGV2aWNlICAgKi8KLSAgICBpbnQgICAgICAgICAgICAgaWZNdHU7ICAgICAgLyogc2l6ZSBvZiBsYXJnZXN0IHBhY2tldCBpbiBieXRlcyAgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZTcGVlZDsgICAgLyogYmFuZHdpZHRoIGluIGJpdHMvc2VjICAgICovCi0gICAgdV9jaGFyICAgICAgICAgIGlmUGh5c0FkZHJlc3NbMTFdOyAgLyogaW50ZXJmYWNlJ3MgYWRkcmVzcyAqLwotICAgIHVfY2hhciAgICAgICAgICBQaHlzQWRkckxlbjsgICAgICAgIC8qIGxlbmd0aCBvZiBwaHlzQWRkciAqLwotICAgIGludCAgICAgICAgICAgICBpZkFkbWluU3RhdHVzOyAgICAgIC8qIGRlc2lyZWQgc3RhdGUgb2YgaW50ZXJmYWNlICovCi0gICAgaW50ICAgICAgICAgICAgIGlmT3BlclN0YXR1czsgICAgICAgLyogY3VycmVudCBvcGVyYXRpb25hbCBzdGF0dXMgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZMYXN0Q2hhbmdlOyAgICAgICAvKiB2YWx1ZSBvZiBzeXNVcFRpbWUgd2hlbiBjdXJyZW50IHN0YXRlIGVudGVyZWQgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZJbk9jdGV0czsgLyogbnVtYmVyIG9mIG9jdGV0cyByZWNlaXZlZCBvbiBpbnRlcmZhY2UgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZJblVjYXN0UGt0czsgICAgICAvKiBudW1iZXIgb2YgdW5pY2FzdCBwYWNrZXRzIGRlbGl2ZXJlZCAqLwotICAgIHVfaW50ICAgICAgICAgICBpZkluTlVjYXN0UGt0czsgICAgIC8qIG51bWJlciBvZiBicm9hZGNhc3RzIG9yIG11bHRpY2FzdHMgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZJbkRpc2NhcmRzOyAgICAgICAvKiBudW1iZXIgb2YgcGFja2V0cyBkaXNjYXJkZWQgd2l0aCBubyBlcnJvciAqLwotICAgIHVfaW50ICAgICAgICAgICBpZkluRXJyb3JzOyAvKiBudW1iZXIgb2YgcGFja2V0cyBjb250YWluaW5nIGVycm9ycyAqLwotICAgIHVfaW50ICAgICAgICAgICBpZkluVW5rbm93blByb3RvczsgIC8qIG51bWJlciBvZiBwYWNrZXRzIHdpdGggdW5rbm93biBwcm90b2NvbCAqLwotICAgIHVfaW50ICAgICAgICAgICBpZk91dE9jdGV0czsgICAgICAgIC8qIG51bWJlciBvZiBvY3RldHMgdHJhbnNtaXR0ZWQgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZPdXRVY2FzdFBrdHM7ICAgICAvKiBudW1iZXIgb2YgdW5pY2FzdCBwYWNrZXRzIHNlbnQgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZPdXROVWNhc3RQa3RzOyAgICAvKiBudW1iZXIgb2YgYnJvYWRjYXN0IG9yIG11bHRpY2FzdCBwa3RzICovCi0gICAgdV9pbnQgICAgICAgICAgIGlmT3V0RGlzY2FyZHM7ICAgICAgLyogbnVtYmVyIG9mIHBhY2tldHMgZGlzY2FyZGVkIHdpdGggbm8gZXJyb3IgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZPdXRFcnJvcnM7ICAgICAgICAvKiBudW1iZXIgb2YgcGt0cyBkaXNjYXJkZWQgd2l0aCBhbiBlcnJvciAqLwotICAgIHVfaW50ICAgICAgICAgICBpZk91dFFMZW47ICAvKiBudW1iZXIgb2YgcGFja2V0cyBpbiBvdXRwdXQgcXVldWUgKi8KLX07Ci0KLXN0cnVjdCBtaWJfYXRFbnRyeSB7Ci0gICAgaW50ICAgICAgICAgICAgIGF0SWZJbmRleDsgIC8qIGludGVyZmFjZSBvbiB3aGljaCB0aGlzIGVudHJ5IG1hcHMgKi8KLSAgICB1X2NoYXIgICAgICAgICAgYXRQaHlzQWRkcmVzc1sxMV07ICAvKiBwaHlzaWNhbCBhZGRyZXNzIG9mIGRlc3RpbmF0aW9uICovCi0gICAgdV9jaGFyICAgICAgICAgIFBoeXNBZGRyZXNzTGVuOyAgICAgLyogbGVuZ3RoIG9mIGF0UGh5c0FkZHJlc3MgKi8KLSAgICB1X2ludCAgICAgICAgICAgYXROZXRBZGRyZXNzOyAgICAgICAvKiBJUCBhZGRyZXNzIG9mIHBoeXNpY2FsIGFkZHJlc3MgKi8KLX07Ci0KLXN0cnVjdCBtaWJfaXAgewotICAgIGludCAgICAgICAgICAgICBpcEZvcndhcmRpbmc7ICAgICAgIC8qIDEgaWYgZ2F0ZXdheSwgMiBpZiBob3N0ICovCi0gICAgaW50ICAgICAgICAgICAgIGlwRGVmYXVsdFRUTDsgICAgICAgLyogZGVmYXVsdCBUVEwgZm9yIHBrdHMgb3JpZ2luYXRpbmcgaGVyZSAqLwotICAgIHVfaW50ICAgICAgICAgICBpcEluUmVjZWl2ZXM7ICAgICAgIC8qIG5vLiBvZiBJUCBwYWNrZXRzIHJlY2VpdmVkIGZyb20gaW50ZXJmYWNlcyAqLwotICAgIHVfaW50ICAgICAgICAgICBpcEluSGRyRXJyb3JzOyAgICAgIC8qIG51bWJlciBvZiBwa3RzIGRpc2NhcmRlZCBkdWUgdG8gaGVhZGVyIGVycm9ycyAqLwotICAgIHVfaW50ICAgICAgICAgICBpcEluQWRkckVycm9yczsgICAgIC8qIG5vLiBvZiBwa3RzIGRpc2NhcmRlZCBkdWUgdG8gYmFkIGFkZHJlc3MgKi8KLSAgICB1X2ludCAgICAgICAgICAgaXBGb3J3RGF0YWdyYW1zOyAgICAvKiBudW1iZXIgcGYgcGt0cyBmb3J3YXJkZWQgdGhyb3VnaCB0aGlzIGVudGl0eSAqLwotICAgIHVfaW50ICAgICAgICAgICBpcEluVW5rbm93blByb3RvczsgIC8qIG5vLiBvZiBsb2NhbC1hZGRyZXNzZWQgcGt0cyB3L3Vua25vd24gcHJvdG8gKi8KLSAgICB1X2ludCAgICAgICAgICAgaXBJbkRpc2NhcmRzOyAgICAgICAvKiBudW1iZXIgb2YgZXJyb3ItZnJlZSBwYWNrZXRzIGRpc2NhcmRlZCAqLwotICAgIHVfaW50ICAgICAgICAgICBpcEluRGVsaXZlcnM7ICAgICAgIC8qIG51bWJlciBvZiBkYXRhZ3JhbXMgZGVsaXZlcmVkIHRvIHVwcGVyIGxldmVsICovCi0gICAgdV9pbnQgICAgICAgICAgIGlwT3V0UmVxdWVzdHM7ICAgICAgLyogbnVtYmVyIG9mIElQIGRhdGFncmFtcyBvcmlnaW5hdGluZyBsb2NhbGx5ICovCi0gICAgdV9pbnQgICAgICAgICAgIGlwT3V0RGlzY2FyZHM7ICAgICAgLyogbnVtYmVyIG9mIGVycm9yLWZyZWUgb3V0cHV0IElQIHBrdHMgZGlzY2FyZGVkICovCi0gICAgdV9pbnQgICAgICAgICAgIGlwT3V0Tm9Sb3V0ZXM7ICAgICAgLyogbnVtYmVyIG9mIElQIHBrdHMgZGlzY2FyZGVkIGR1ZSB0byBubyByb3V0ZSAqLwotICAgIGludCAgICAgICAgICAgICBpcFJlYXNtVGltZW91dDsgICAgIC8qIHNlY29uZHMgZnJhZ21lbnQgaXMgaGVsZCBhd2FpdGluZyByZWFzc2VtYmx5ICovCi0gICAgdV9pbnQgICAgICAgICAgIGlwUmVhc21SZXFkczsgICAgICAgLyogbm8uIG9mIGZyYWdtZW50cyBuZWVkaW5nIHJlYXNzZW1ibHkgKGhlcmUpICovCi0gICAgdV9pbnQgICAgICAgICAgIGlwUmVhc21PS3M7IC8qIG51bWJlciBvZiBmcmFnbWVudHMgcmVhc3NlbWJsZWQgKi8KLSAgICB1X2ludCAgICAgICAgICAgaXBSZWFzbUZhaWxzOyAgICAgICAvKiBudW1iZXIgb2YgZmFpbHVyZXMgaW4gSVAgcmVhc3NlbWJseSAqLwotICAgIHVfaW50ICAgICAgICAgICBpcEZyYWdPS3M7ICAvKiBudW1iZXIgb2YgZGF0YWdyYW1zIGZyYWdtZW50ZWQgaGVyZSAqLwotICAgIHVfaW50ICAgICAgICAgICBpcEZyYWdGYWlsczsgICAgICAgIC8qIG5vLiBwa3RzIHVuYWJsZSB0byBiZSBmcmFnbWVudGVkIGhlcmUgKi8KLSAgICB1X2ludCAgICAgICAgICAgaXBGcmFnQ3JlYXRlczsgICAgICAvKiBudW1iZXIgb2YgSVAgZnJhZ21lbnRzIGNyZWF0ZWQgaGVyZSAqLwotfTsKLQotc3RydWN0IG1pYl9pcEFkZHJFbnRyeSB7Ci0gICAgdV9pbnQgICAgICAgICAgIGlwQWRFbnRBZGRyOyAgICAgICAgLyogSVAgYWRkcmVzcyBvZiB0aGlzIGVudHJ5ICovCi0gICAgaW50ICAgICAgICAgICAgIGlwQWRFbnRJZkluZGV4OyAgICAgLyogSUYgZm9yIHRoaXMgZW50cnkgKi8KLSAgICB1X2ludCAgICAgICAgICAgaXBBZEVudE5ldE1hc2s7ICAgICAvKiBzdWJuZXQgbWFzayBvZiB0aGlzIGVudHJ5ICovCi0gICAgaW50ICAgICAgICAgICAgIGlwQWRFbnRCY2FzdEFkZHI7ICAgLyogcmVhZCB0aGUgTUlCIGZvciB0aGlzIG9uZSAqLwotICAgIGludCAJICAgIGlwQWRFbnRSZWFzbU1heFNpemU7Ci0JCS8qIG1heCBzaXplIGZvciBkZyByZWFzc2VtYmx5ICAge2lwQWRkckVudHJ5IDV9ICovCi19OwotCi1zdHJ1Y3QgbWliX2lwUm91dGVFbnRyeSB7Ci0gICAgdV9pbnQgICAgICAgICAgIGlwUm91dGVEZXN0OyAgICAgICAgLyogZGVzdGluYXRpb24gSVAgYWRkciBmb3IgdGhpcyByb3V0ZSAqLwotICAgIGludCAgICAgICAgICAgICBpcFJvdXRlSWZJbmRleDsgICAgIC8qIGluZGV4IG9mIGxvY2FsIElGIGZvciB0aGlzIHJvdXRlICovCi0gICAgaW50ICAgICAgICAgICAgIGlwUm91dGVNZXRyaWMxOyAgICAgLyogUHJpbWFyeSByb3V0aW5nIG1ldHJpYyAqLwotICAgIGludCAgICAgICAgICAgICBpcFJvdXRlTWV0cmljMjsgICAgIC8qIEFsdGVybmF0ZSByb3V0aW5nIG1ldHJpYyAqLwotICAgIGludCAgICAgICAgICAgICBpcFJvdXRlTWV0cmljMzsgICAgIC8qIEFsdGVybmF0ZSByb3V0aW5nIG1ldHJpYyAqLwotICAgIGludCAgICAgICAgICAgICBpcFJvdXRlTWV0cmljNDsgICAgIC8qIEFsdGVybmF0ZSByb3V0aW5nIG1ldHJpYyAqLwotICAgIHVfaW50ICAgICAgICAgICBpcFJvdXRlTmV4dEhvcDsgICAgIC8qIElQIGFkZHIgb2YgbmV4dCBob3AgKi8KLSAgICBpbnQgICAgICAgICAgICAgaXBSb3V0ZVR5cGU7ICAgICAgICAvKiBUeXBlIG9mIHRoaXMgcm91dGUgKi8KLSAgICBpbnQgICAgICAgICAgICAgaXBSb3V0ZVByb3RvOyAgICAgICAvKiBIb3cgdGhpcyByb3V0ZSB3YXMgbGVhcm5lZCAqLwotICAgIGludCAgICAgICAgICAgICBpcFJvdXRlQWdlOyAvKiBOby4gb2Ygc2Vjb25kcyBzaW5jZSB1cGRhdGluZyB0aGlzIHJvdXRlICovCi19OwotCi1zdHJ1Y3QgbWliX2ljbXAgewotICAgIHVfaW50ICAgICAgICAgICBpY21wSW5Nc2dzOyAvKiBUb3RhbCBvZiBJQ01QIG1zZ3MgcmVjZWl2ZWQgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWNtcEluRXJyb3JzOyAgICAgICAvKiBUb3RhbCBvZiBJQ01QIG1zZ3MgcmVjZWl2ZWQgd2l0aCBlcnJvcnMgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWNtcEluRGVzdFVucmVhY2hzOwotICAgIHVfaW50ICAgICAgICAgICBpY21wSW5UaW1lRXhjZHM7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBJblBhcm1Qcm9iczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcEluU3JjUXVlbmNoczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcEluUmVkaXJlY3RzOwotICAgIHVfaW50ICAgICAgICAgICBpY21wSW5FY2hvczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcEluRWNob1JlcHM7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBJblRpbWVzdGFtcHM7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBJblRpbWVzdGFtcFJlcHM7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBJbkFkZHJNYXNrczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcEluQWRkck1hc2tSZXBzOwotICAgIHVfaW50ICAgICAgICAgICBpY21wT3V0TXNnczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcE91dEVycm9yczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcE91dERlc3RVbnJlYWNoczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcE91dFRpbWVFeGNkczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcE91dFBhcm1Qcm9iczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcE91dFNyY1F1ZW5jaHM7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBPdXRSZWRpcmVjdHM7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBPdXRFY2hvczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcE91dEVjaG9SZXBzOwotICAgIHVfaW50ICAgICAgICAgICBpY21wT3V0VGltZXN0YW1wczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcE91dFRpbWVzdGFtcFJlcHM7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBPdXRBZGRyTWFza3M7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBPdXRBZGRyTWFza1JlcHM7Ci19OwotCi1zdHJ1Y3QgbWliX3RjcCB7Ci0gICAgaW50ICAgICAgICAgICAgIHRjcFJ0b0FsZ29yaXRobTsgICAgLyogcmV0cmFuc21pc3Npb24gdGltZW91dCBhbGdvcml0aG0gKi8KLSAgICBpbnQgICAgICAgICAgICAgdGNwUnRvTWluOyAgLyogbWluaW11bSByZXRyYW5zbWlzc2lvbiB0aW1lb3V0IChtUykgKi8KLSAgICBpbnQgICAgICAgICAgICAgdGNwUnRvTWF4OyAgLyogbWF4aW11bSByZXRyYW5zbWlzc2lvbiB0aW1lb3V0IChtUykgKi8KLSAgICBpbnQgICAgICAgICAgICAgdGNwTWF4Q29ubjsgLyogbWF4aW11bSB0Y3AgY29ubmVjdGlvbnMgcG9zc2libGUgKi8KLSAgICB1X2ludCAgICAgICAgICAgdGNwQWN0aXZlT3BlbnM7ICAgICAvKiBudW1iZXIgb2YgU1lOLVNFTlQgLT4gQ0xPU0VEIHRyYW5zaXRpb25zICovCi0gICAgdV9pbnQgICAgICAgICAgIHRjcFBhc3NpdmVPcGVuczsgICAgLyogbnVtYmVyIG9mIFNZTi1SQ1ZEIC0+IExJU1RFTiB0cmFuc2l0aW9ucyAqLwotICAgIHVfaW50ICAgICAgICAgICB0Y3BBdHRlbXB0RmFpbHM7ICAgIC8qKFNZTi1TRU5ULFNZTi1SQ1ZEKS0+Q0xPU0VEIG9yIFNZTi1SQ1ZELT5MSVNURU4gKi8KLSAgICB1X2ludCAgICAgICAgICAgdGNwRXN0YWJSZXNldHM7ICAgICAvKiAoRVNUQUJMSVNIRUQsQ0xPU0UtV0FJVCkgLT4gQ0xPU0VEICovCi0gICAgdV9pbnQgICAgICAgICAgIHRjcEN1cnJFc3RhYjsgICAgICAgLyogbnVtYmVyIGluIEVTVEFCTElTSEVEIG9yIENMT1NFLVdBSVQgc3RhdGUgKi8KLSAgICB1X2ludCAgICAgICAgICAgdGNwSW5TZWdzOyAgLyogbnVtYmVyIG9mIHNlZ21lbnRzIHJlY2VpdmVkICovCi0gICAgdV9pbnQgICAgICAgICAgIHRjcE91dFNlZ3M7IC8qIG51bWJlciBvZiBzZWdtZW50cyBzZW50ICovCi0gICAgdV9pbnQgICAgICAgICAgIHRjcFJldHJhbnNTZWdzOyAgICAgLyogbnVtYmVyIG9mIHJldHJhbnNtaXR0ZWQgc2VnbWVudHMgKi8KLX07Ci0KLXN0cnVjdCBtaWJfdGNwQ29ubkVudHJ5IHsKLSAgICBpbnQgICAgICAgICAgICAgdGNwQ29ublN0YXRlOyAgICAgICAvKiBTdGF0ZSBvZiB0aGlzIGNvbm5lY3Rpb24gKi8KLSAgICB1X2ludCAgICAgICAgICAgdGNwQ29ubkxvY2FsQWRkcmVzczsgICAgICAgIC8qIGxvY2FsIElQIGFkZHJlc3MgZm9yIHRoaXMgY29ubmVjdGlvbiAqLwotICAgIGludCAgICAgICAgICAgICB0Y3BDb25uTG9jYWxQb3J0OyAgIC8qIGxvY2FsIHBvcnQgZm9yIHRoaXMgY29ubmVjdGlvbiAqLwotICAgIHVfaW50ICAgICAgICAgICB0Y3BDb25uUmVtQWRkcmVzczsgIC8qIHJlbW90ZSBJUCBhZGRyZXNzIGZvciB0aGlzIGNvbm5lY3Rpb24gKi8KLSAgICBpbnQgICAgICAgICAgICAgdGNwQ29ublJlbVBvcnQ7ICAgICAvKiByZW1vdGUgcG9ydCBmb3IgdGhpcyBjb25uZWN0aW9uICovCi19OwotCi1zdHJ1Y3QgbWliX3VkcCB7Ci0gICAgdV9pbnQgICAgICAgICAgIHVkcEluRGF0YWdyYW1zOyAgICAgLyogTm8uIG9mIFVEUCBkYXRhZ3JhbXMgZGVsaXZlcmVkIHRvIHVzZXJzICovCi0gICAgdV9pbnQgICAgICAgICAgIHVkcE5vUG9ydHM7IC8qIE5vLiBvZiBVRFAgZGF0YWdyYW1zIHRvIHBvcnQgd2l0aCBubyBsaXN0ZW5lciAqLwotICAgIHVfaW50ICAgICAgICAgICB1ZHBJbkVycm9yczsgICAgICAgIC8qIE5vLiBvZiBVRFAgZGF0YWdyYW1zIHVuYWJsZSB0byBiZSBkZWxpdmVyZWQgKi8KLSAgICB1X2ludCAgICAgICAgICAgdWRwT3V0RGF0YWdyYW1zOyAgICAvKiBOby4gb2YgVURQIGRhdGFncmFtcyBzZW50IGZyb20gdGhpcyBlbnRpdHkgKi8KLX07Ci0KLXN0cnVjdCBtaWJfZWdwIHsKLSAgICB1X2ludCAgICAgICAgICAgZWdwSW5Nc2dzOyAgLyogTm8uIG9mIEVHUCBtc2dzIHJlY2VpdmVkIHdpdGhvdXQgZXJyb3IgKi8KLSAgICB1X2ludCAgICAgICAgICAgZWdwSW5FcnJvcnM7ICAgICAgICAvKiBOby4gb2YgRUdQIG1zZ3MgcmVjZWl2ZWQgd2l0aCBlcnJvciAqLwotICAgIHVfaW50ICAgICAgICAgICBlZ3BPdXRNc2dzOyAvKiBOby4gb2YgRUdQIG1zZ3Mgc2VudCAqLwotICAgIHVfaW50ICAgICAgICAgICBlZ3BPdXRFcnJvcnM7ICAgICAgIC8qIE5vLiBvZiAob3V0Z29pbmcpIEVHUCBtc2dzIGRyb3BwZWQgZHVlIHRvIGVycm9yICovCi19OwotCi1zdHJ1Y3QgbWliX2VncE5laWdoRW50cnkgewotICAgIGludCAgICAgICAgICAgICBlZ3BOZWlnaFN0YXRlOyAgICAgIC8qIGxvY2FsIEVHUCBzdGF0ZSB3aXRoIHRoaXMgZW50cnkncyBuZWlnaGJvciAqLwotICAgIHVfaW50ICAgICAgICAgICBlZ3BOZWlnaEFkZHI7ICAgICAgIC8qIElQIGFkZHJlc3Mgb2YgdGhpcyBlbnRyeSdzIG5laWdoYm9yICovCi19OwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBORVRfU05NUF9DTVVfQ09NUEFUX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAppbmRleCAzMGI4MmYxLi45NjMyODllIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCkBAIC0zNjgsMjAgKzM2OCwyMiBAQAogICAgICAqIGlubGluZSBmdW5jdGlvbnMsIHlvdSBtb3N0IGxpa2VseSBoYXZlIG9wdGltaXphdGlvbnMgdHVybmVkIG9mZi4KICAgICAgKiBFaXRoZXIgdHVybiB0aGVtIGJhY2sgb24sIG9yIGRlZmluZSBORVRTTk1QX05PX0lOTElORQogICAgICAqLwotI2lmbmRlZiBORVRTTk1QX1VTRV9JTkxJTkUgLyogZGVmYXVsdCBpcyB0byBpbmxpbmUgKi8KICAgICAvKgogICAgICAqIGluc2VydCBrIGludG8gYWxsIGNvbnRhaW5lcnMKICAgICAgKi8KKyAgICBORVRTTk1QX0lNUE9SVAogICAgIGludCBDT05UQUlORVJfSU5TRVJUKG5ldHNubXBfY29udGFpbmVyICp4LCBjb25zdCB2b2lkICprKTsKIAogICAgIC8qCiAgICAgICogcmVtb3ZlIGsgZnJvbSBhbGwgY29udGFpbmVycwogICAgICAqLworICAgIE5FVFNOTVBfSU1QT1JUCiAgICAgaW50IENPTlRBSU5FUl9SRU1PVkUobmV0c25tcF9jb250YWluZXIgKngsIGNvbnN0IHZvaWQgKmspOwogCiAgICAgLyoKICAgICAgKiBkdXBsaWNhdGUgY29udGFpbmVyCiAgICAgICovCisgICAgTkVUU05NUF9JTVBPUlQKICAgICBuZXRzbm1wX2NvbnRhaW5lciAqQ09OVEFJTkVSX0RVUChuZXRzbm1wX2NvbnRhaW5lciAqeCwgdm9pZCAqY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGZsYWdzKTsKIApAQCAtMzkwLDYgKzM5Miw3IEBACiAgICAgICogKm9ubHkqIHRoZSBmaXJzdCBjb250YWluZXIsIGNhbGwgdGhlIGZ1bmN0aW9uIGYgZm9yIGVhY2ggaXRlbS4KICAgICAgKiBBZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIGFsbCBjb250YWluZXJzIHNob3VsZCBiZSBlbXB0eS4KICAgICAgKi8KKyAgICBORVRTTk1QX0lNUE9SVAogICAgIHZvaWQgQ09OVEFJTkVSX0NMRUFSKG5ldHNubXBfY29udGFpbmVyICp4LCBuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqZiwKICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmMpOwogCkBAIC0zOTgsMTg2ICs0MDEsMTggQEAKICAgICAgKiAqb25seSogdGhlIGZpcnN0IGNvbnRhaW5lciwgY2FsbCB0aGUgZnJlZV9pdGVtIGZ1bmN0aW9uIGZvciBlYWNoIGl0ZW0uCiAgICAgICogQWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCBhbGwgY29udGFpbmVycyBzaG91bGQgYmUgZW1wdHkuCiAgICAgICovCisgICAgTkVUU05NUF9JTVBPUlQKICAgICB2b2lkIENPTlRBSU5FUl9GUkVFX0FMTChuZXRzbm1wX2NvbnRhaW5lciAqeCwgdm9pZCAqYyk7CiAKICAgICAvKgogICAgICAqIGZyZWUgYWxsIGNvbnRhaW5lcnMKICAgICAgKi8KKyAgICBORVRTTk1QX0lNUE9SVAogICAgIGludCBDT05UQUlORVJfRlJFRShuZXRzbm1wX2NvbnRhaW5lciAqeCk7CiAKKyAgICBORVRTTk1QX0lNUE9SVAogICAgIG5ldHNubXBfY29udGFpbmVyICpTVUJDT05UQUlORVJfRklORChuZXRzbm1wX2NvbnRhaW5lciAqeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSk7Ci0jZWxzZQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICogVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBFWEFDVExZIG1hdGNoIHRoZSBmdW5jdGlvbiB2ZXJzaW9uIGluCi0gICAgICogY29udGFpbmVyLmMuIElmIHlvdSBjaGFuZ2Ugb25lLCBjaGFuZ2UgdGhlbSBib3RoLgotICAgICAqLwotICAgIE5FVFNOTVBfU1RBVElDX0lOTElORSAvKiBnY2MgZG9jcyByZWNvbW1lbmQgc3RhdGljIHcvaW5saW5lICovCi0gICAgaW50IENPTlRBSU5FUl9JTlNFUlRfSEVMUEVSKG5ldHNubXBfY29udGFpbmVyKiB4LCBjb25zdCB2b2lkKiBrKQotICAgIHsKLSAgICAgICAgd2hpbGUoeCAmJiB4LT5pbnNlcnRfZmlsdGVyICYmIHgtPmluc2VydF9maWx0ZXIoeCxrKSA9PSAxKQotICAgICAgICAgICAgeCA9IHgtPm5leHQ7Ci0gICAgICAgIGlmKHgpIHsKLSAgICAgICAgICAgIGludCByYyA9IHgtPmluc2VydCh4LGspOwotICAgICAgICAgICAgaWYocmMpCi0gICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0RFQlVHLCJlcnJvciBvbiBzdWJjb250YWluZXIgJyVzJyBpbnNlcnQgKCVkKVxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICB4LT5jb250YWluZXJfbmFtZSA/IHgtPmNvbnRhaW5lcl9uYW1lIDogIiIsIHJjKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHJjID0gQ09OVEFJTkVSX0lOU0VSVF9IRUxQRVIoeC0+bmV4dCwgayk7Ci0gICAgICAgICAgICAgICAgaWYocmMpCi0gICAgICAgICAgICAgICAgICAgIHgtPnJlbW92ZSh4LGspOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHJjOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICogVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBFWEFDVExZIG1hdGNoIHRoZSBmdW5jdGlvbiB2ZXJzaW9uIGluCi0gICAgICogY29udGFpbmVyLmMuIElmIHlvdSBjaGFuZ2Ugb25lLCBjaGFuZ2UgdGhlbSBib3RoLgotICAgICAqLwotICAgIE5FVFNOTVBfU1RBVElDX0lOTElORSAvKiBnY2MgZG9jcyByZWNvbW1lbmQgc3RhdGljIHcvaW5saW5lICovCi0gICAgaW50IENPTlRBSU5FUl9JTlNFUlQobmV0c25tcF9jb250YWluZXIqIHgsIGNvbnN0IHZvaWQqIGspCi0gICAgewotICAgICAgICAvKiogc3RhcnQgYXQgZmlyc3QgY29udGFpbmVyICovCi0gICAgICAgIHdoaWxlKHgtPnByZXYpCi0gICAgICAgICAgICB4ID0geC0+cHJldjsKLSAgICAgICAgcmV0dXJuIENPTlRBSU5FUl9JTlNFUlRfSEVMUEVSKHgsIGspOwotICAgIH0KLQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICogVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBFWEFDVExZIG1hdGNoIHRoZSBmdW5jdGlvbiB2ZXJzaW9uIGluCi0gICAgICogY29udGFpbmVyLmMuIElmIHlvdSBjaGFuZ2Ugb25lLCBjaGFuZ2UgdGhlbSBib3RoLgotICAgICAqLwotICAgIE5FVFNOTVBfU1RBVElDX0lOTElORSAvKiBnY2MgZG9jcyByZWNvbW1lbmQgc3RhdGljIHcvaW5saW5lICovCi0gICAgaW50IENPTlRBSU5FUl9SRU1PVkUobmV0c25tcF9jb250YWluZXIgKngsIGNvbnN0IHZvaWQgKmspCi0gICAgewotICAgICAgICBpbnQgcmMyLCByYyA9IDA7Ci0gICAgICAgIAotICAgICAgICAvKiogc3RhcnQgYXQgbGFzdCBjb250YWluZXIgKi8KLSAgICAgICAgd2hpbGUoeC0+bmV4dCkKLSAgICAgICAgICAgIHggPSB4LT5uZXh0OwotICAgICAgICB3aGlsZSh4KSB7Ci0gICAgICAgICAgICByYzIgPSB4LT5yZW1vdmUoeCxrKTsKLSAgICAgICAgICAgIC8qKiBpZ25vcmUgcmVtb3ZlIGVycm9ycyBpZiB0aGVyZSBpcyBhIGZpbHRlciBpbiBwbGFjZSAqLwotICAgICAgICAgICAgaWYgKChyYzIpICYmIChOVUxMID09IHgtPmluc2VydF9maWx0ZXIpKSB7Ci0gICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3Igb24gc3ViY29udGFpbmVyICclcycgcmVtb3ZlICglZClcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgeC0+Y29udGFpbmVyX25hbWUgPyB4LT5jb250YWluZXJfbmFtZSA6ICIiLCByYzIpOwotICAgICAgICAgICAgICAgIHJjID0gcmMyOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgeCA9IHgtPnByZXY7Ci0gICAgICAgICAgICAKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmM7Ci0gICAgfQotICAgIAotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICogVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBFWEFDVExZIG1hdGNoIHRoZSBmdW5jdGlvbiB2ZXJzaW9uIGluCi0gICAgICogY29udGFpbmVyLmMuIElmIHlvdSBjaGFuZ2Ugb25lLCBjaGFuZ2UgdGhlbSBib3RoLgotICAgICAqLwotICAgIE5FVFNOTVBfU1RBVElDX0lOTElORSAvKiBnY2MgZG9jcyByZWNvbW1lbmQgc3RhdGljIHcvaW5saW5lICovCi0gICAgbmV0c25tcF9jb250YWluZXIgKkNPTlRBSU5FUl9EVVAobmV0c25tcF9jb250YWluZXIgKngsIHZvaWQgKmN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBmbGFncykKLSAgICB7Ci0gICAgICAgIGlmIChOVUxMID09IHgtPmR1cGxpY2F0ZSkgewotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNvbnRhaW5lciAnJXMnIGRvZXMgbm90IHN1cHBvcnQgZHVwbGljYXRlXG4iLAotICAgICAgICAgICAgICAgICAgICAgeC0+Y29udGFpbmVyX25hbWUgPyB4LT5jb250YWluZXJfbmFtZSA6ICIiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB4LT5kdXBsaWNhdGUoeCwgY3R4LCBmbGFncyk7Ci0gICAgfQotCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgKiBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIEVYQUNUTFkgbWF0Y2ggdGhlIGZ1bmN0aW9uIHZlcnNpb24gaW4KLSAgICAgKiBjb250YWluZXIuYy4gSWYgeW91IGNoYW5nZSBvbmUsIGNoYW5nZSB0aGVtIGJvdGguCi0gICAgICovCi0gICAgTkVUU05NUF9TVEFUSUNfSU5MSU5FIC8qIGdjYyBkb2NzIHJlY29tbWVuZCBzdGF0aWMgdy9pbmxpbmUgKi8KLSAgICBpbnQgQ09OVEFJTkVSX0ZSRUUobmV0c25tcF9jb250YWluZXIgKngpCi0gICAgewotCWludCAgcmMyLCByYyA9IDA7Ci0gICAgICAgIAotICAgICAgICAvKiogc3RhcnQgYXQgbGFzdCBjb250YWluZXIgKi8KLSAgICAgICAgd2hpbGUoeC0+bmV4dCkKLSAgICAgICAgICAgIHggPSB4LT5uZXh0OwotICAgICAgICB3aGlsZSh4KSB7Ci0gICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqdG1wOwotICAgICAgICAgICAgY2hhciAqbmFtZTsKLSAgICAgICAgICAgIHRtcCA9IHgtPnByZXY7Ci0gICAgICAgICAgICBuYW1lID0geC0+Y29udGFpbmVyX25hbWU7Ci0gICAgICAgICAgICB4LT5jb250YWluZXJfbmFtZSA9IE5VTEw7Ci0gICAgICAgICAgICByYzIgPSB4LT5jZnJlZSh4KTsKLSAgICAgICAgICAgIGlmIChyYzIpIHsKLSAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBvbiBzdWJjb250YWluZXIgJyVzJyBjZnJlZSAoJWQpXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPyBuYW1lIDogIiIsIHJjMik7Ci0gICAgICAgICAgICAgICAgcmMgPSByYzI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBTTk1QX0ZSRUUobmFtZSk7Ci0gICAgICAgICAgICB4ID0gdG1wOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByYzsKLSAgICB9Ci0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAqIFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgRVhBQ1RMWSBtYXRjaCB0aGUgZnVuY3Rpb24gdmVyc2lvbiBpbgotICAgICAqIGNvbnRhaW5lci5jLiBJZiB5b3UgY2hhbmdlIG9uZSwgY2hhbmdlIHRoZW0gYm90aC4KLSAgICAgKi8KLSAgICAvKgotICAgICAqIGNsZWFyIGFsbCBjb250YWluZXJzLiBXaGVuIGNsZWFyaW5nIHRoZSAqZmlyc3QqIGNvbnRhaW5lciwgYW5kCi0gICAgICogKm9ubHkqIHRoZSBmaXJzdCBjb250YWluZXIsIGNhbGwgdGhlIGZ1bmN0aW9uIGYgZm9yIGVhY2ggaXRlbS4KLSAgICAgKiBBZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIGFsbCBjb250YWluZXJzIHNob3VsZCBiZSBlbXB0eS4KLSAgICAgKi8KLSAgICBORVRTTk1QX1NUQVRJQ19JTkxJTkUgLyogZ2NjIGRvY3MgcmVjb21tZW5kIHN0YXRpYyB3L2lubGluZSAqLwotICAgIHZvaWQgQ09OVEFJTkVSX0NMRUFSKG5ldHNubXBfY29udGFpbmVyICp4LCBuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqZiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmMpCi0gICAgewotICAgICAgICAvKiogc3RhcnQgYXQgbGFzdCBjb250YWluZXIgKi8KLSAgICAgICAgd2hpbGUoeC0+bmV4dCkKLSAgICAgICAgICAgIHggPSB4LT5uZXh0OwotICAgICAgICB3aGlsZSh4LT5wcmV2KSB7Ci0gICAgICAgICAgICB4LT5jbGVhcih4LCBOVUxMLCBjKTsKLSAgICAgICAgICAgIHggPSB4LT5wcmV2OwotICAgICAgICB9Ci0gICAgICAgIHgtPmNsZWFyKHgsIGYsIGMpOwotICAgIH0KLQotICAgIC8qCi0gICAgICogY2xlYXIgYWxsIGNvbnRhaW5lcnMuIFdoZW4gY2xlYXJpbmcgdGhlICpmaXJzdCogY29udGFpbmVyLCBhbmQKLSAgICAgKiAqb25seSogdGhlIGZpcnN0IGNvbnRhaW5lciwgY2FsbCB0aGUgZnJlZV9pdGVtIGZ1bmN0aW9uIGZvciBlYWNoIGl0ZW0uCi0gICAgICogQWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCBhbGwgY29udGFpbmVycyBzaG91bGQgYmUgZW1wdHkuCi0gICAgICovCi0gICAgTkVUU05NUF9TVEFUSUNfSU5MSU5FIC8qIGdjYyBkb2NzIHJlY29tbWVuZCBzdGF0aWMgdy9pbmxpbmUgKi8KLSAgICB2b2lkIENPTlRBSU5FUl9GUkVFX0FMTChuZXRzbm1wX2NvbnRhaW5lciAqeCwgdm9pZCAqYykKLSAgICB7Ci0gICAgICAgIENPTlRBSU5FUl9DTEVBUih4LCB4LT5mcmVlX2l0ZW0sIGMpOwotICAgIH0KLQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICogVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBFWEFDVExZIG1hdGNoIHRoZSBmdW5jdGlvbiB2ZXJzaW9uIGluCi0gICAgICogY29udGFpbmVyLmMuIElmIHlvdSBjaGFuZ2Ugb25lLCBjaGFuZ2UgdGhlbSBib3RoLgotICAgICAqLwotICAgIC8qCi0gICAgICogRmluZCBhIHN1Yi1jb250YWluZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZQotICAgICAqLwotICAgIE5FVFNOTVBfU1RBVElDX0lOTElORSAvKiBnY2MgZG9jcyByZWNvbW1lbmQgc3RhdGljIHcvaW5saW5lICovCi0gICAgbmV0c25tcF9jb250YWluZXIgKlNVQkNPTlRBSU5FUl9GSU5EKG5ldHNubXBfY29udGFpbmVyICp4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lKQotICAgIHsKLSAgICAgICAgaWYgKChOVUxMID09IHgpIHx8IChOVUxMID09IG5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICAgLyoqIHN0YXJ0IGF0IGZpcnN0IGNvbnRhaW5lciAqLwotICAgICAgICB3aGlsZSh4LT5wcmV2KQotICAgICAgICAgICAgeCA9IHgtPnByZXY7Ci0gICAgICAgIHdoaWxlKHgpIHsKLSAgICAgICAgICAgIGlmICgoTlVMTCAhPSB4LT5jb250YWluZXJfbmFtZSkgJiYKLSAgICAgICAgICAgICAgICAoMCA9PSBzdHJjbXAobmFtZSx4LT5jb250YWluZXJfbmFtZSkpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgeCA9IHgtPm5leHQ7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHg7Ci0gICAgfQotCi0jZW5kaWYKIAogICAgIC8qCiAgICAgICogSU5URVJOQUwgdXRpbGl0eSByb3V0aW5lcyBmb3IgY29udGFpbmVyIGltcGxlbWVudGF0aW9ucwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKaW5kZXggZmNiODdlMC4uM2MzYzUxOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zOCw3ICszOCw3IEBACiAgICAgICovCiAvKioKICAqIEBkZWYgTkVUU05NUF9EU19MSUJSQVJZX0lECi0gKiBUaGVzZSBkZWZpbml0aW9ucyBjb3JyZXNwb25kIHdpdGggdGhlICJzdG9yaWQiIGFyZ3VtZW50IHRvIHRoZSBBUEkgCisgKiBUaGVzZSBkZWZpbml0aW9ucyBjb3JyZXNwb25kIHdpdGggdGhlICJzdG9yaWQiIGFyZ3VtZW50IHRvIHRoZSBBUEkuCiAgKi8KICNkZWZpbmUgTkVUU05NUF9EU19MSUJSQVJZX0lEICAgICAwCiAjZGVmaW5lIE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQgMQpAQCAtOTMsNiArOTMsOCBAQAogI2RlZmluZSBORVRTTk1QX0RTX0xJQl9OT19ESVNDT1ZFUlkgICAgICAgIDM4IC8qIGRvbid0IHN1cHBvcnQgUkZDNTM0MyBjb250ZXh0RW5naW5lSUQgZGlzY292ZXJ5ICovCiAjZGVmaW5lIE5FVFNOTVBfRFNfTElCX1RTTV9VU0VfUFJFRklYICAgICAgMzkgLyogVFNNJ3Mgc2ltcGxlIHNlY3VyaXR5IG5hbWUgbWFwcGluZyAqLwogI2RlZmluZSBORVRTTk1QX0RTX0xJQl9ET05UX0xPQURfSE9TVF9GSUxFUyA0MCAvKiBkb24ndCByZWFkIGhvc3QuY29uZiBmaWxlcyAqLworI2RlZmluZSBORVRTTk1QX0RTX0xJQl9ETlNTRUNfV0FSTl9PTkxZICAgICA0MSAvKiB0cmVhZCBETlNTRUMgZXJyb3JzIGFzIHdhcm5pbmdzICovCisjZGVmaW5lIE5FVFNOTVBfRFNfTElCX01BWF9CT09MX0lEICAgICAgICAgIDQ4IC8qIG1hdGNoIE5FVFNOTVBfRFNfTUFYX1NVQklEUyAqLwogCiAgICAgLyoKICAgICAgKiBsaWJyYXJ5IGludGVnZXJzIApAQCAtMTEzLDYgKzExNSw5IEBACiAjZGVmaW5lIE5FVFNOTVBfRFNfU1NIRE9NQUlOX0RJUl9QRVJNICAgICAgMTIKICNkZWZpbmUgTkVUU05NUF9EU19TU0hET01BSU5fU09DS19VU0VSICAgICAxMgogI2RlZmluZSBORVRTTk1QX0RTX1NTSERPTUFJTl9TT0NLX0dST1VQICAgIDEzCisjZGVmaW5lIE5FVFNOTVBfRFNfTElCX1RJTUVPVVQgICAgICAgICAgICAgMTQKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfUkVUUklFUyAgICAgICAgICAgICAxNQorI2RlZmluZSBORVRTTk1QX0RTX0xJQl9NQVhfSU5UX0lEICAgICAgICAgIDQ4IC8qIG1hdGNoIE5FVFNOTVBfRFNfTUFYX1NVQklEUyAqLwogICAgIAogICAgIC8qCiAgICAgICogc3BlY2lhbCBtZWFuaW5ncyBmb3IgdGhlIGRlZmF1bHQgU05NUCB2ZXJzaW9uIHNsb3QgKE5FVFNOTVBfRFNfTElCX1NOTVBWRVJTSU9OKSAKQEAgLTE1OSw2ICsxNjQsMTIgQEAKICNkZWZpbmUgTkVUU05NUF9EU19MSUJfSE9TVE5BTUUgICAgICAgICAgMjcKICNkZWZpbmUgTkVUU05NUF9EU19MSUJfWDUwOV9DUkxfRklMRSAgICAgMjgKICNkZWZpbmUgTkVUU05NUF9EU19MSUJfVExTX0FMR09SSVRNUyAgICAgMjkKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfVExTX0xPQ0FMX0NFUlQgICAgMzAKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfVExTX1BFRVJfQ0VSVCAgICAgMzEKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfU1NIX1VTRVJOQU1FICAgICAgMzIKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfU1NIX1BVQktFWSAgICAgICAgMzMKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfU1NIX1BSSVZLRVkgICAgICAgMzQKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfTUFYX1NUUl9JRCAgICAgICAgNDggLyogbWF0Y2ggTkVUU05NUF9EU19NQVhfU1VCSURTICovCiAKICAgICAvKgogICAgICAqIGVuZCBzdG9yYWdlIGRlZmluaXRpb25zIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oCmluZGV4IDUwNzc3ODAuLmFmM2ZhMDIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgKQEAgLTEzOSw3ICsxMzksNyBAQAogICogQHNlZSBTZWUgYWxzbyBzZWxlY3QoMikgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgKi8KIE5FVFNOTVBfSU1QT1JUCi1pbnQgICAgbmV0X3NubXBfbGFyZ2VfZmRfc2V0X3NlbGVjdChpbnQgbnVtZmRzLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqcmVhZGZkcywKK2ludCAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9zZWxlY3QoaW50IG51bWZkcywgbmV0c25tcF9sYXJnZV9mZF9zZXQgKnJlYWRmZHMsCiAJCQkgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKndyaXRlZmRzLAogCQkJICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpleGNlcHRmZHMsCiAJCQkgICAgc3RydWN0IHRpbWV2YWwgKnRpbWVvdXQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xpYnNubXAuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9saWJzbm1wLmgKaW5kZXggZWFmMmJiZi4uNmEwNzMwMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xpYnNubXAuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGlic25tcC5oCkBAIC03Niw4ICs3Niw2IEBACiAKICNpZmRlZiBVQ0RfU05NUF9MSUJSQVJZCiAKLSNkZWZpbmUgc25tcF9wYXJzZSBjbXVfc25tcF9wYXJzZQotCiAjaW5jbHVkZSA8dWNkLXNubXAvYXNuMS5oPgogI2luY2x1ZGUgPHVjZC1zbm1wL3NubXBfYXBpLmg+CiAjaW5jbHVkZSA8dWNkLXNubXAvc25tcF9pbXBsLmg+CkBAIC0xMzUsNyArMTMzLDkgQEAKICNkZWZpbmUgU05NUF9NU0dfR0VUIEdFVF9SRVFfTVNHCiAjZGVmaW5lIFNOTVBfTVNHX0dFVE5FWFQgR0VUTkVYVF9SRVFfTVNHCiAjZGVmaW5lIFNOTVBfTVNHX1JFU1BPTlNFIEdFVF9SU1BfTVNHCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogI2RlZmluZSBTTk1QX01TR19TRVQgU0VUX1JFUV9NU0cKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAjZGVmaW5lIFNOTVBfTVNHX1RSQVAgVFJQX1JFUV9NU0cKICNkZWZpbmUgU05NUF9NU0dfR0VUQlVMSyAgICAoQVNOX0NPTlRFWFQgfCBBU05fQ09OU1RSVUNUT1IgfCAweDUpCiAjZGVmaW5lIFNOTVBfTVNHX0lORk9STSAgICAgKEFTTl9DT05URVhUIHwgQVNOX0NPTlNUUlVDVE9SIHwgMHg2KQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAppbmRleCA4NzI2Y2M3Li5jZTQ2YWI5IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaApAQCAtMzIsMTAgKzMyLDE5IEBACiBTT0ZUV0FSRS4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotI2RlZmluZSBNQVhMQUJFTCAgICAgICAgNjQgICAgICAvKiBtYXhpbXVtIGNoYXJhY3RlcnMgaW4gYSBsYWJlbCAqLworI2RlZmluZSBORVRTTk1QX01BWExBQkVMIDY0ICAgICAgLyogbWF4aW11bSBjaGFyYWN0ZXJzIGluIGEgbGFiZWwgKi8KICNkZWZpbmUgTUFYVE9LRU4gICAgICAgIDEyOCAgICAgLyogbWF4aW11bSBjaGFyYWN0ZXJzIGluIGEgdG9rZW4gKi8KICNkZWZpbmUgTUFYUVVPVEVTVFIgICAgIDQwOTYgICAgLyogbWF4aW11bSBjaGFyYWN0ZXJzIGluIGEgcXVvdGVkIHN0cmluZyAqLwogCisvKgorICogTUFYTEFCRUwgYXBwZWFycyB0byBiZSB1bnVzZWQgaW4gY29kZSwgYW5kIGNvbmZsaWN0cyB3aXRoCisgKiA8YXJwYS9uYW1lc2VyLmg+LiBPbmx5IGRlZmluZSBpdCBpZiByZXF1ZXN0ZWQuIFRoaXMgd2lsbAorICogY2F1c2UgcHJvYmxlbXMgaWYgbG9jYWwgRE5TU0VDIHZhbGlkYXRpb24gaXMgYWxzbyBlbmFibGVkLgorICovCisjaWZkZWYgVUNEX0NPTVBBVElCTEUKKyNkZWZpbmUgTUFYTEFCRUwgICAgICAgIE5FVFNOTVBfTUFYTEFCRUwKKyNlbmRpZgorCiAgICAgc3RydWN0IHZhcmlhYmxlX2xpc3Q7CiAKICAgICAvKgpAQCAtMTA1LDYgKzExNCw3IEBACiAgICAgICAgIGNoYXIgICAgICAgICAgICpyZWZlcmVuY2U7ICAgIC8qIHJlZmVyZW5jZXMgKGEgcXVvdGVkIHN0cmluZykgKi8KICAgICAgICAgaW50ICAgICAgICAgICAgIHJlcG9ydGVkOyAgICAgICAvKiAxPXJlcG9ydCBzdGFydGVkIGluIHByaW50X3N1YnRyZWUuLi4gKi8KICAgICAgICAgY2hhciAgICAgICAgICAgKmRlZmF1bHRWYWx1ZTsKKyAgICAgICBjaGFyCSAgICAgICAqcGFyc2VFcnJvclN0cmluZzsgLyogQ29udGFpbnMgdGhlIGVycm9yIHN0cmluZyBpZiB0aGVyZSBhcmUgZXJyb3JzIGluIHBhcnNpbmcgTUlCcyAqLwogICAgIH07CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKaW5kZXggNWRhZjE2Ni4uZjU5NzhjNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCkBAIC0xMTgsNyArMTE4LDkgQEAKICNkZWZpbmUgU05NUF9NU0dfR0VUICAgICAgICAoQVNOX0NPTlRFWFQgfCBBU05fQ09OU1RSVUNUT1IgfCAweDApIC8qIGEwPTE2MCAqLwogI2RlZmluZSBTTk1QX01TR19HRVRORVhUICAgIChBU05fQ09OVEVYVCB8IEFTTl9DT05TVFJVQ1RPUiB8IDB4MSkgLyogYTE9MTYxICovCiAjZGVmaW5lIFNOTVBfTVNHX1JFU1BPTlNFICAgKEFTTl9DT05URVhUIHwgQVNOX0NPTlNUUlVDVE9SIHwgMHgyKSAvKiBhMj0xNjIgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAjZGVmaW5lIFNOTVBfTVNHX1NFVCAgICAgICAgKEFTTl9DT05URVhUIHwgQVNOX0NPTlNUUlVDVE9SIHwgMHgzKSAvKiBhMz0xNjMgKi8KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAvKgogICAgICAqIFBEVSB0eXBlcyBpbiBTTk1QdjEgYW5kIFNOTVBzZWMgCkBAIC0xMzcsNiArMTM5LDcgQEAKICAgICAgKi8KICNkZWZpbmUgU05NUF9NU0dfUkVQT1JUICAgICAoQVNOX0NPTlRFWFQgfCBBU05fQ09OU1RSVUNUT1IgfCAweDgpIC8qIGE4PTE2OCAqLwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIC8qCiAgICAgICogaW50ZXJuYWwgbW9kZXMgdGhhdCBzaG91bGQgbmV2ZXIgYmUgdXNlZCBieSB0aGUgcHJvdG9jb2wgZm9yIHRoZQogICAgICAqIHBkdSB0eXBlLgpAQCAtMTYyLDYgKzE2NSw3IEBACiAjZGVmaW5lIFNOTVBfTVNHX0lOVEVSTkFMX1VORE9fQ09NTUlUICAgICAgICAgICAyNAogI2RlZmluZSBTTk1QX01TR19JTlRFUk5BTF9JUlJFVkVSU0lCTEVfQ09NTUlUICAgMjUKICNkZWZpbmUgU05NUF9NU0dfSU5URVJOQUxfVU5ET19DTEVBTlVQICAgICAgICAgIDI2CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgLyoKICAgICAgKiBtb2RlcyA+IDEyOCBmb3Igbm9uIHNldHMuCkBAIC0xNzUsOSArMTc5LDE0IEBACiAgICAgLyoKICAgICAgKiB0ZXN0IGZvciBtZW1iZXIgb2YgQ29uZmlybWVkIENsYXNzIGkuZS4sIHJlcG9ydGFibGUgCiAgICAgICovCisjaWZkZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCisjZGVmaW5lIFNOTVBfQ01EX0NPTkZJUk1FRChjKSAoYyA9PSBTTk1QX01TR19JTkZPUk0gfHwgYyA9PSBTTk1QX01TR19HRVRCVUxLIHx8XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPT0gU05NUF9NU0dfR0VUTkVYVCB8fCBjID09IFNOTVBfTVNHX0dFVCApCisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAjZGVmaW5lIFNOTVBfQ01EX0NPTkZJUk1FRChjKSAoYyA9PSBTTk1QX01TR19JTkZPUk0gfHwgYyA9PSBTTk1QX01TR19HRVRCVUxLIHx8XAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPT0gU05NUF9NU0dfR0VUTkVYVCB8fCBjID09IFNOTVBfTVNHX0dFVCB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9PSBTTk1QX01TR19TRVQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9PSBTTk1QX01TR19TRVQgKQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIC8qCiAgICAgICogRXhjZXB0aW9uIHZhbHVlcyBmb3IgU05NUHYycCwgU05NUHYyYywgU05NUHYydSwgU05NUHYyKiwgYW5kIFNOTVB2MyAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVExTQmFzZURvbWFpbi5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUTFNCYXNlRG9tYWluLmgKaW5kZXggZWM3N2E3My4uYmMyMWNiNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUTFNCYXNlRG9tYWluLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUTFNCYXNlRG9tYWluLmgKQEAgLTQyLDEzICs0MiwxMiBAQAogICAgICAgIEJJTyAgICAgICAgICAgICAgICAgICAgICAgKmFjY2VwdGVkX2JpbzsKICAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAgICpzZWN1cml0eU5hbWU7CiAgICAgICAgY2hhciAgICAgICAgICAgICAgICAgICAgICAqYWRkcl9zdHJpbmc7Ci0gICAgICAgc3RydWN0IHNvY2thZGRyX2luICAgICAgICAgYWRkcjsKKyAgICAgICBuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyICphZGRyOwogICAgICAgIGNoYXIgICAgICAgICAgICAgICAgICAgICAgKm91cl9pZGVudGl0eTsKICAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAgICp0aGVpcl9pZGVudGl0eTsKICAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAgICp0aGVpcl9maW5nZXJwcmludDsKICAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAgICp0aGVpcl9ob3N0bmFtZTsKICAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAgICp0cnVzdF9jZXJ0OwotICAgICAgIG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgKnJlbW90ZV9hZGRyOwogICAgIH0gX25ldHNubXBUTFNCYXNlRGF0YTsKIAogI2RlZmluZSBWUkZZX1BBUkVOVF9XQVNfT0sgMQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAppbmRleCAxNmZkODE5Li44M2ViYTJjIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaApAQCAtMjIsOCArMjIsOCBAQAogI2RlZmluZSBUUkFOU1BPUlRfRE9NQUlOX1VEUF9JUFY2CTEsMyw2LDEsMiwxLDEwMCwxLDIKIE5FVFNOTVBfSU1QT1JUIG9pZCAgICAgIG5ldHNubXBfVURQSVB2NkRvbWFpbltdOwogCi1uZXRzbm1wX3RyYW5zcG9ydCAqc25tcF91ZHA2X3RyYW5zcG9ydChzdHJ1Y3Qgc29ja2FkZHJfaW42ICphZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxvY2FsKTsKK25ldHNubXBfdHJhbnNwb3J0ICpuZXRzbm1wX3VkcDZfdHJhbnNwb3J0KHN0cnVjdCBzb2NrYWRkcl9pbjYgKmFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbG9jYWwpOwogCiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAppbmRleCAxMTY3ZTJjLi5kMWJjYmZhIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKQEAgLTE1LDExICsxNSwxNCBAQAogI2RlZmluZSBTQV9GSVJFRCAweDEwICAgICAgICAgIC8qIEJlaW5nIHByb2Nlc3NlZCBpbiBydW5fYWxhcm1zICovCiAKICAgICBzdHJ1Y3Qgc25tcF9hbGFybSB7CisgICAgICAgIC8qKiBBbGFybSBpbnRlcnZhbC4gWmVybyBpZiBzaW5nbGUtc2hvdC4gKi8KICAgICAgICAgc3RydWN0IHRpbWV2YWwgIHQ7CiAgICAgICAgIHVuc2lnbmVkIGludCAgICBmbGFnczsKICAgICAgICAgdW5zaWduZWQgaW50ICAgIGNsaWVudHJlZzsKLSAgICAgICAgc3RydWN0IHRpbWV2YWwgIHRfbGFzdDsKLSAgICAgICAgc3RydWN0IHRpbWV2YWwgIHRfbmV4dDsKKyAgICAgICAgLyoqIExhc3QgdGltZSB0aGUgYWxhcm0gZmlyZWQgW21vbm90b25pYyBjbG9ja10uICovCisgICAgICAgIHN0cnVjdCB0aW1ldmFsICB0X2xhc3RNOworICAgICAgICAvKiogTmV4dCB0aW1lIHRoZSBhbGFybSB3aWxsIGZpcmUgW21vbm90b25pYyBjbG9ja10uICovCisgICAgICAgIHN0cnVjdCB0aW1ldmFsICB0X25leHRNOwogICAgICAgICB2b2lkICAgICAgICAgICAqY2xpZW50YXJnOwogICAgICAgICBTTk1QQWxhcm1DYWxsYmFjayAqdGhlY2FsbGJhY2s7CiAgICAgICAgIHN0cnVjdCBzbm1wX2FsYXJtICpuZXh0OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAppbmRleCBkZWYwMmI5Li42ZjY1OGQ1IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaApAQCAtMzAsNiArMzAsOCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL3BkdV9hcGkuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9zZXNzaW9uX2FwaS5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKwogI2lmbmRlZiBET05UX1NIQVJFX0VSUk9SX1dJVEhfT1RIRVJfVEhSRUFEUwogI2RlZmluZSBTRVRfU05NUF9FUlJPUih4KSBzbm1wX2Vycm5vPSh4KQogI2Vsc2UKQEAgLTc2LDggKzc4LDggQEAKICAgICB2b2lkICAgICAgICAgICAqY2JfZGF0YTsgICAgICAgIC8qIHVzZXIgY2FsbGJhY2sgZGF0YSBwZXIgcmVxdWVzdCAoTlVMTCBpZiB1bnVzZWQpICovCiAgICAgaW50ICAgICAgICAgICAgIHJldHJpZXM7ICAgICAgICAvKiBOdW1iZXIgb2YgcmV0cmllcyAqLwogICAgIHVfbG9uZyAgICAgICAgICB0aW1lb3V0OyAgICAgICAgLyogbGVuZ3RoIHRvIHdhaXQgZm9yIHRpbWVvdXQgKi8KLSAgICBzdHJ1Y3QgdGltZXZhbCAgdGltZTsgICAvKiBUaW1lIHRoaXMgcmVxdWVzdCB3YXMgbWFkZSAqLwotICAgIHN0cnVjdCB0aW1ldmFsICBleHBpcmU7IC8qIHRpbWUgdGhpcyByZXF1ZXN0IGlzIGR1ZSB0byBleHBpcmUgKi8KKyAgICBzdHJ1Y3QgdGltZXZhbCAgdGltZU07ICAgLyogVGltZSB0aGlzIHJlcXVlc3Qgd2FzIG1hZGUgW21vbm90b25pYyBjbG9ja10gKi8KKyAgICBzdHJ1Y3QgdGltZXZhbCAgZXhwaXJlTTsgLyogVGltZSB0aGlzIHJlcXVlc3QgaXMgZHVlIHRvIGV4cGlyZSBbbW9ub3RvbmljIGNsb2NrXS4gKi8KICAgICBzdHJ1Y3Qgc25tcF9zZXNzaW9uICpzZXNzaW9uOwogICAgIG5ldHNubXBfcGR1ICAgICpwZHU7ICAgIC8qIFRoZSBwZHUgZm9yIHRoaXMgcmVxdWVzdAogCQkJICAgICAqIChzYXZlZCBzbyBpdCBjYW4gYmUgcmV0cmFuc21pdHRlZCAqLwpAQCAtMzk4LDE0ICs0MDAsMjQgQEAKICAgICBORVRTTk1QX0lNUE9SVAogICAgIG9pZCAgICAgICAgICAgICpzbm1wX2R1cGxpY2F0ZV9vYmppZChjb25zdCBvaWQgKiBvYmpUb0NvcHksIHNpemVfdCk7CiAgICAgTkVUU05NUF9JTVBPUlQKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVRJU1RJQ1MKICAgICB1X2ludCAgICAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKGludCB3aGljaCk7CiAgICAgTkVUU05NUF9JTVBPUlQKICAgICB1X2ludCAgICAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljX2J5KGludCB3aGljaCwgaW50IGNvdW50KTsKICAgICBORVRTTk1QX0lNUE9SVAogICAgIHVfaW50ICAgICAgICAgICBzbm1wX2dldF9zdGF0aXN0aWMoaW50IHdoaWNoKTsKICAgICB2b2lkICAgICAgICAgICAgc25tcF9pbml0X3N0YXRpc3RpY3Modm9pZCk7CisjZWxzZSAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVRJU1RJQ1MgKi8KKworLyogYWxsb3cgY29kZSB0byBjb250aW51ZSByZWZlcmVuY2luZyBBUEkgZXZlbiBpZiBzdGF0aXN0aWNzIGFyZSByZW1vdmVkICovCisjZGVmaW5lIHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhYKQorI2RlZmluZSBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWNfYnkoWCxZKQorI2RlZmluZSBzbm1wX2luaXRfc3RhdGlzdGljcygpCisKKyNlbmRpZgorCiAgICAgaW50ICAgICAgICAgICAgIGNyZWF0ZV91c2VyX2Zyb21fc2Vzc2lvbihuZXRzbm1wX3Nlc3Npb24gKiBzZXNzaW9uKTsKLSAgICBpbnQgc25tcF9nZXRfZmRfZm9yX3Nlc3Npb24oc3RydWN0IHNubXBfc2Vzc2lvbiAqc2Vzc3ApOwogICAgIGludCBzbm1wdjNfcHJvYmVfY29udGV4dEVuZ2luZUlEX3JmYzUzNDModm9pZCAqc2xwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXNzaW9uICpzZXNzaW9uKTsKIApAQCAtNjg1LDYgKzY5NywxNiBAQAogLyoqIGJhY2t3YXJkcyBjb21wYXRhYmlsaXR5ICovCiAjZGVmaW5lIE1BWF9TVEFUUyBORVRTTk1QX1NUQVRfTUFYX1NUQVRTCiAKKyAgICAvKgorICAgICAqIEludGVybmFsOiBUaGUgbGlzdCBvZiBhY3RpdmUvb3BlbiBzZXNzaW9ucy4KKyAgICAgKi8KKyAgICBzdHJ1Y3Qgc2Vzc2lvbl9saXN0IHsKKyAgICAgICBzdHJ1Y3Qgc2Vzc2lvbl9saXN0ICpuZXh0OworICAgICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbjsKKyAgICAgICBuZXRzbm1wX3RyYW5zcG9ydCAqdHJhbnNwb3J0OworICAgICAgIHN0cnVjdCBzbm1wX2ludGVybmFsX3Nlc3Npb24gKmludGVybmFsOworICAgIH07CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCmluZGV4IGMwMjMyNTMuLmVhNTRlN2QgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCkBAIC0xMDAsOCArMTAwLDEwIEBACiBpbnQgbmV0c25tcF9xdWVyeV9nZXRuZXh0KCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiwgbmV0c25tcF9zZXNzaW9uICopOwogTkVUU05NUF9JTVBPUlQKIGludCBuZXRzbm1wX3F1ZXJ5X3dhbGsoICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqLCBuZXRzbm1wX3Nlc3Npb24gKik7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogTkVUU05NUF9JTVBPUlQKIGludCBuZXRzbm1wX3F1ZXJ5X3NldCggICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqLCBuZXRzbm1wX3Nlc3Npb24gKik7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAvKiogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKaW5kZXggZTQ2ODMzNS4uMWFkNjNlMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaApAQCAtMSw4ICsxLDUgQEAKICNpZm5kZWYgU05NUF9QQVJTRV9BUkdTX0gKICNkZWZpbmUgU05NUF9QQVJTRV9BUkdTX0gKLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKIAogLyoqCiAgKiBAZmlsZSBzbm1wX3BhcnNlX2FyZ3MuaApAQCAtMTEsNiArOCwxMCBAQAogICogbGluZSBhcmd1bWVudHMKICAqLwogCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKIC8qKiBEb24ndCBlbmFibGUgYW55IGxvZ2dpbmcgZXZlbiBpZiB0aGVyZSBpcyBubyAtTCBhcmd1bWVudCAqLwogI2RlZmluZSBORVRTTk1QX1BBUlNFX0FSR1NfTk9MT0dHSU5HICAgIDB4MDAwMQogLyoqIERvbid0IHplcm8gb3V0IHNlbnNpdGl2ZSBhcmd1bWVudHMgYXMgdGhleSBhcmUgbm90IG9uIHRoZSBjb21tYW5kIGxpbmUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKaW5kZXggNWJhY2FkNy4uYWFiYjdlZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKQEAgLTkxLDggKzkxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXNzaW9uICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcGR1ICpvcmlncGR1KTsKLXR5cGVkZWYgaW50ICAgICAoU2VjbW9kRGlzY292ZXJ5TWV0aG9kKSAodm9pZCAqc2xwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb24pOwordHlwZWRlZiBpbnQgICAgIChTZWNtb2REaXNjb3ZlcnlNZXRob2QpICh2b2lkICpzbHAsIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbik7Cit0eXBlZGVmIGludCAgICAgKFNlY21vZFBvc3REaXNjb3ZlcnkpICh2b2lkICpzbHAsIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbik7CiAKIHR5cGVkZWYgaW50ICAgICAoU2VjbW9kU2Vzc2lvblNldHVwKSAobmV0c25tcF9zZXNzaW9uICppbl9zZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKm91dF9zZXNzaW9uKTsKQEAgLTEzNiw2ICsxMzYsNyBAQAogICAgICogZGVmYXVsdCBlbmdpbmVJRCBkaXNjb3ZlcnkgbWVjaGFuaXNtCiAgICAgKi8KICAgIFNlY21vZERpc2NvdmVyeU1ldGhvZCAqcHJvYmVfZW5naW5laWQ7CisgICBTZWNtb2RQb3N0RGlzY292ZXJ5ICAgKnBvc3RfcHJvYmVfZW5naW5laWQ7CiB9OwogCiAKQEAgLTE2NCw2ICsxNjUsOCBAQAogICovCiBpbnQgICAgICAgICAgICAgdW5yZWdpc3Rlcl9zZWNfbW9kKGludCk7ICAgICAgICAvKiByZWdpc3RlciBhIHNlY3VyaXR5IHNlcnZpY2UgKi8KIHZvaWQgICAgICAgICAgICBpbml0X3NlY21vZCh2b2lkKTsKK05FVFNOTVBfSU1QT1JUCit2b2lkICAgICAgICAgICAgc2h1dGRvd25fc2VjbW9kKHZvaWQpOwogCiAvKgogICogY2xlYXJzIHRoZSBzZWNfbW9kIGxpc3QKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKaW5kZXggZDg5ZjljMC4uNDE2Mjg5NyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKQEAgLTEsMTIgKzEsMzIgQEAKICNpZm5kZWYgX1NOTVBfVFJBTlNQT1JUX0gKICNkZWZpbmUgX1NOTVBfVFJBTlNQT1JUX0gKIAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCisjaWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpZmRlZiBzb2xhcmlzMgorI2RlZmluZSBfWFBHNF8yCisjZW5kaWYKKworI2lmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpIHx8IGRlZmluZWQoYWl4NykKKyNkZWZpbmUgX0xJTlVYX1NPVVJDRV9DT01QQVQKKyNlbmRpZgorCisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorCisjaWZkZWYgc29sYXJpczIKKyMgaWZuZGVmIENNU0dfU1BBQ0UKKyMgIGRlZmluZSBDTVNHX1NQQUNFKGwpIFwKKyAgICAgICAgICAgICgodW5zaWduZWQgaW50KV9DTVNHX0hEUl9BTElHTihzaXplb2YgKHN0cnVjdCBjbXNnaGRyKSArIChsKSkpCisjICBkZWZpbmUgQ01TR19MRU4obCkgICAoX0NNU0dfSERSX0FMSUdOKHNpemVvZihzdHJ1Y3QgY21zZ2hkcikpICsgKGwpKQorIyBlbmRpZgorI2VuZGlmCisjZW5kaWYgLyogSEFWRV9TWVNfU09DS0VUX0ggKi8KKwogI2lmZGVmIEhBVkVfTkVUSU5FVF9JTl9ICiAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLQogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvYXNuMS5oPgogCiAjaWZkZWYgX19jcGx1c3BsdXMKQEAgLTUxLDE0ICs3MSwyMiBAQAogLyogbm90ZTogVkFDTSBvbmx5IGFsbG93cyA8PSAzMiBzbyB0aGlzIGlzIG92ZXJraWxsIHRpbGwgYW5vdGhlciBBQ00gY29tZXMgKi8KICNkZWZpbmUgTkVUU05NUF9UTV9NQVhfU0VDTkFNRSAyNTYKIAordHlwZWRlZiB1bmlvbiBuZXRzbm1wX3NvY2thZGRyX3N0b3JhZ2VfdSB7CisgICAgc3RydWN0IHNvY2thZGRyICAgICBzYTsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gIHNpbjsKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgc3RydWN0IHNvY2thZGRyX2luNiBzaW42OworI2VuZGlmCit9IG5ldHNubXBfc29ja2FkZHJfc3RvcmFnZTsKKwogdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9hZGRyX3BhaXJfcyB7Ci0gICBzdHJ1Y3Qgc29ja2FkZHJfaW4gcmVtb3RlX2FkZHI7Ci0gICBzdHJ1Y3Qgc29ja2FkZHJfaW4gbG9jYWxfYWRkcjsKKyAgIG5ldHNubXBfc29ja2FkZHJfc3RvcmFnZSByZW1vdGVfYWRkcjsKKyAgIG5ldHNubXBfc29ja2FkZHJfc3RvcmFnZSBsb2NhbF9hZGRyOwogfSBuZXRzbm1wX2FkZHJfcGFpcjsKIAogdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9pbmRleGVkX2FkZHJfcGFpcl9zIHsKLSAgIHN0cnVjdCBzb2NrYWRkcl9pbiByZW1vdGVfYWRkcjsKLSAgIHN0cnVjdCBzb2NrYWRkcl9pbiBsb2NhbF9hZGRyOworICAgbmV0c25tcF9zb2NrYWRkcl9zdG9yYWdlIHJlbW90ZV9hZGRyOworICAgbmV0c25tcF9zb2NrYWRkcl9zdG9yYWdlIGxvY2FsX2FkZHI7CiAgICAgaW50IGlmX2luZGV4OwogfSBuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyOwogCkBAIC0xMTUsOCArMTQzLDEzIEBACiAKICAgICBzaXplX3QgICAgICAgICAgbXNnTWF4U2l6ZTsKIAorI2lmZGVmIEZPUl9TVEFOREFSRFNfQ09NUExJQU5DRV9PUl9GVVRVUkVfVVNFCiAgICAgLyogVE0gc3RhdGUgcmVmZXJlbmNlIHBlciBJU01TIFdHIHNvbHV0aW9uICovCiAgICAgbmV0c25tcF90bVN0YXRlUmVmZXJlbmNlICp0bVN0YXRlUmVmOworI2VuZGlmCisKKyAgICAvKiB0dW5uZWxlZCB0cmFuc3BvcnRzICovCisgICAgc3RydWN0IG5ldHNubXBfdHJhbnNwb3J0X3MgKiBiYXNlX3RyYW5zcG9ydDsKIAogICAgIC8qICBDYWxsYmFja3MuICBBcmd1bWVudHMgYXJlOgogICAgICAqCQkKQEAgLTE5OSw2ICsyMzIsNyBAQAogCQkJCSAgbmV0c25tcF90cmFuc3BvcnQgKnRyYW5zcG9ydCk7CiBpbnQgbmV0c25tcF90cmFuc3BvcnRfcmVtb3ZlX2Zyb21fbGlzdChuZXRzbm1wX3RyYW5zcG9ydF9saXN0ICoqdHJhbnNwb3J0X2xpc3QsCiAJCQkJICAgICAgIG5ldHNubXBfdHJhbnNwb3J0ICp0cmFuc3BvcnQpOworaW50IG5ldHNubXBfc29ja2FkZHJfc2l6ZShzdHJ1Y3Qgc29ja2FkZHIgKnNhKTsKIAogCiAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBrc20uaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wa3NtLmgKaW5kZXggYzc1ZTVlZi4uMWI1NjNmMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBrc20uaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcGtzbS5oCkBAIC0xNSw2ICsxNSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKTsKICAgICB2b2lkICAgICAgICAgICAgaW5pdF9rc20odm9pZCk7CiAKKyAgICB2b2lkICAgICAgICAgICAgc2h1dGRvd25fa3NtKHZvaWQpOworCiAgICAgLyoKICAgICAgKiBUaGlzIGlzIHRoZSAia2V5IHVzYWdlIiB0aGF0IGlzIHVzZWQgYnkgdGhlIG5ldyBjcnlwdG8gQVBJLiAgSXQncyB1c2VkCiAgICAgICogZ2VuZXJhbGx5IG9ubHkgaWYgeW91IGFyZSB1c2luZyBkZXJpdmVkIGtleXMuICBUaGUgc3BlY2lmaWNhbCBzYXlzIHRoYXQKQEAgLTI1LDYgKzI3LDggQEAKICNkZWZpbmUgS1NNX0tFWV9VU0FHRV9FTkNSWVBUSU9OCTEwMzAKICNkZWZpbmUgS1NNX0tFWV9VU0FHRV9DSEVDS1NVTQkJMTAzMQogCisjZGVmaW5lIEtTTV9TRUNfTU9ERUxfTlVNQkVSICAgICAgICAgICAgU05NUF9TRUNfTU9ERUxfS1NNCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAppbmRleCBhN2M4ZDkzLi4yNjRhOTI4IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKQEAgLTUsNiArNSw4IEBACiAjaWZuZGVmIFNOTVBUU01fSAogI2RlZmluZSBTTk1QVFNNX0gKIAorI2RlZmluZSBUU01fU0VDX01PREVMX05VTUJFUiAgICAgICAgICAgIFNOTVBfU0VDX01PREVMX1RTTQorCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAgICAgICAgICAiQyIgewogI2VuZGlmCkBAIC0xNSw2ICsxNyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKTsKICAgICB2b2lkICAgICAgICAgICAgaW5pdF90c20odm9pZCk7CiAKKyAgICB2b2lkICAgICAgICAgICAgc2h1dGRvd25fdHNtKHZvaWQpOworCiAgICAgI2RlZmluZSBORVRTTk1QX1RNX1NBTUVfU0VDVVJJVFlfTk9UX1JFUVVJUkVEIDAKICAgICAjZGVmaW5lIE5FVFNOTVBfVE1fVVNFX1NBTUVfU0VDVVJJVFkgICAgICAgICAgMQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAppbmRleCBkMWNlZDkwLi45ZDY3M2NjIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKQEAgLTI1OSw2ICsyNTksMjEgQEAKIAkJCQkJICAgdm9pZCAqY2xpZW50YXJnKTsKICAgICBORVRTTk1QX0lNUE9SVAogICAgIHZvaWQgICAgICAgICAgICBjbGVhcl91c2VyX2xpc3Qodm9pZCk7CisgICAgTkVUU05NUF9JTVBPUlQKKyAgICB2b2lkICAgICAgICAgICAgc2h1dGRvd25fdXNtKHZvaWQpOworCisgICAgTkVUU05NUF9JTVBPUlQKKyAgICBpbnQgICAgICAgICAgICAgdXNtX2NyZWF0ZV91c2VyX2Zyb21fc2Vzc2lvbihuZXRzbm1wX3Nlc3Npb24gKiBzZXNzaW9uKTsKKyAgICBTZWNtb2RQb3N0RGlzY292ZXJ5IHVzbV9jcmVhdGVfdXNlcl9mcm9tX3Nlc3Npb25faG9vazsKKyAgICBORVRTTk1QX0lNUE9SVAorICAgIHZvaWQgICAgICAgICAgICB1c21fcGFyc2VfY3JlYXRlX3VzbVVzZXIoY29uc3QgY2hhciAqdG9rZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpsaW5lKTsKKyAgICBORVRTTk1QX0lNUE9SVAorICAgIGNvbnN0IG9pZCAgICAgICpnZXRfZGVmYXVsdF9hdXRodHlwZShzaXplX3QgKik7CisgICAgTkVUU05NUF9JTVBPUlQKKyAgICBjb25zdCBvaWQgICAgICAqZ2V0X2RlZmF1bHRfcHJpdnR5cGUoc2l6ZV90ICopOworICAgIHZvaWQgICAgICAgICAgICBzbm1wdjNfYXV0aHR5cGVfY29uZihjb25zdCBjaGFyICp3b3JkLCBjaGFyICpjcHRyKTsKKyAgICB2b2lkICAgICAgICAgICAgc25tcHYzX3ByaXZ0eXBlX2NvbmYoY29uc3QgY2hhciAqd29yZCwgY2hhciAqY3B0cik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCmluZGV4IDYzM2VhNTcuLmE5NTg4MDkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKQEAgLTI2LDExICsyNiw2IEBACiAgICAgdm9pZCAgICAgICAgICAgIGVuZ2luZUJvb3RzX2NvbmYoY29uc3QgY2hhciAqLCBjaGFyICopOwogICAgIHZvaWQgICAgICAgICAgICBlbmdpbmVJRFR5cGVfY29uZihjb25zdCBjaGFyICosIGNoYXIgKik7CiAgICAgdm9pZCAgICAgICAgICAgIGVuZ2luZUlETmljX2NvbmYoY29uc3QgY2hhciAqLCBjaGFyICopOwotICAgIHZvaWQgICAgICAgICAgICBzbm1wdjNfYXV0aHR5cGVfY29uZihjb25zdCBjaGFyICp3b3JkLCBjaGFyICpjcHRyKTsKLSAgICB2b2lkICAgICAgICAgICAgc25tcHYzX3ByaXZ0eXBlX2NvbmYoY29uc3QgY2hhciAqd29yZCwgY2hhciAqY3B0cik7Ci0gICAgTkVUU05NUF9JTVBPUlQKLSAgICB2b2lkICAgICAgICAgICAgdXNtX3BhcnNlX2NyZWF0ZV91c21Vc2VyKGNvbnN0IGNoYXIgKnRva2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbGluZSk7CiAgICAgTkVUU05NUF9JTVBPUlQKICAgICB2b2lkICAgICAgICAgICAgaW5pdF9zbm1wdjMoY29uc3QgY2hhciAqKTsKICAgICBpbnQgICAgICAgICAgICAgaW5pdF9zbm1wdjNfcG9zdF9jb25maWcoaW50IG1ham9yaWQsIGludCBtaW5vcmlkLApAQCAtNTQsMTAgKzQ5LDYgQEAKICAgICBORVRTTk1QX0lNUE9SVAogICAgIHVfbG9uZyAgICAgICAgICBzbm1wdjNfbG9jYWxfc25tcEVuZ2luZVRpbWUodm9pZCk7CiAgICAgaW50ICAgICAgICAgICAgIGdldF9kZWZhdWx0X3NlY0xldmVsKHZvaWQpOwotICAgIE5FVFNOTVBfSU1QT1JUCi0gICAgY29uc3Qgb2lkICAgICAgKmdldF9kZWZhdWx0X2F1dGh0eXBlKHNpemVfdCAqKTsKLSAgICBORVRTTk1QX0lNUE9SVAotICAgIGNvbnN0IG9pZCAgICAgICpnZXRfZGVmYXVsdF9wcml2dHlwZShzaXplX3QgKik7CiAgICAgdm9pZCAgICAgICAgICAgIHNubXB2M19zZXRfZW5naW5lQm9vdHNBbmRUaW1lKGludCBib290cywgaW50IHR0aW1lKTsKICAgICBpbnQgICAgICAgICAgICAgZnJlZV9lbmdpbmVJRChpbnQgbWFqb3JpZCwgaW50IG1pbm9yaWQsIHZvaWQgKnNlcnZlcmFyZywKIAkJCQkgIHZvaWQgKmNsaWVudGFyZyk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKaW5kZXggZjNlYzI0Yy4uYWM1MDUyZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaApAQCAtMTMxLDYgKzEzMSwyMCBAQAogICAgIGludCAgICAgICAgICAgICBuZXRzbm1wX2dldGhvc3RieW5hbWVfdjQoY29uc3QgY2hhciogbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX2FkZHJfdCAqYWRkcl9vdXQpOwogCisgICAgLyoqIG5ldHNubXAgdmVyc2lvbnMgb2YgZG5zIHJlc29sb3V0aW9uLi4gbWF5IGluY2x1ZGUgRE5TU0VDIHZhbGlkYXRpb24uICovCisgICAgc3RydWN0IGFkZHJpbmZvOyAvKiBmb3J3YXJkIGRlY2xhcmUgKi8KKyAgICBORVRTTk1QX0lNUE9SVAorICAgIHN0cnVjdCBob3N0ZW50ICpuZXRzbm1wX2dldGhvc3RieW5hbWUoY29uc3QgY2hhciAqbmFtZSk7CisKKyAgICBORVRTTk1QX0lNUE9SVAorICAgIHN0cnVjdCBob3N0ZW50ICpuZXRzbm1wX2dldGhvc3RieWFkZHIoY29uc3Qgdm9pZCAqYWRkciwgc29ja2xlbl90IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0eXBlKTsKKworICAgIE5FVFNOTVBfSU1QT1JUCisgICAgaW50ICAgICAgICAgICAgIG5ldHNubXBfZ2V0YWRkcmluZm8oY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqc2VydmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYWRkcmluZm8gKmhpbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhZGRyaW5mbyAqKnJlcyk7CisKICAgICBORVRTTk1QX0lNUE9SVAogICAgIGluX2FkZHJfdCAgICAgICBnZXRfbXlhZGRyKHZvaWQpOwogICAgIE5FVFNOTVBfSU1QT1JUCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdGVzdGluZy5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rlc3RpbmcuaAppbmRleCBhYWJlNTJmLi5lYzYxMzVhIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdGVzdGluZy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90ZXN0aW5nLmgKQEAgLTcsMTAgKzcsMTAgQEAKIHN0YXRpYyBpbnQgX190ZXN0X2NvdW50ZXIgPSAwOwogc3RhdGljIGludCBfX2RpZF9wbGFuID0gMDsKIAotI2RlZmluZSBPSyhpc29rLCBkZXNjcmlwdGlvbikgeyBwcmludGYoIiVzICVkIC0gJXNcbiIsICgoaXNvaykgPyAib2siIDogIm5vdCBvayIpLCArK19fdGVzdF9jb3VudGVyLCBkZXNjcmlwdGlvbik7IH0KKyNkZWZpbmUgT0soaXNvaywgZGVzY3JpcHRpb24pIGRvIHsgcHJpbnRmKCIlcyAlZCAtICVzXG4iLCAoKGlzb2spID8gIm9rIiA6ICJub3Qgb2siKSwgKytfX3Rlc3RfY291bnRlciwgZGVzY3JpcHRpb24pOyB9IHdoaWxlICgwKQogCi0jZGVmaW5lIE9LRihpc29rLCBkZXNjcmlwdGlvbikgeyBwcmludGYoIiVzICVkIC0gXG4iLCAoKGlzb2spID8gIm9rIiA6ICJub3Qgb2siKSwgKytfX3Rlc3RfY291bnRlcik7IHByaW50ZiBkZXNjcmlwdGlvbjsgcHJpbnRmKCJcbiIpOyB9CisjZGVmaW5lIE9LRihpc29rLCBkZXNjcmlwdGlvbikgZG8geyBwcmludGYoIiVzICVkIC0gIiwgKChpc29rKSA/ICJvayIgOiAibm90IG9rIiksICsrX190ZXN0X2NvdW50ZXIpOyBwcmludGYgZGVzY3JpcHRpb247IHByaW50ZigiXG4iKTsgfSB3aGlsZSAoMCkKIAotI2RlZmluZSBQTEFOKG51bWJlcikgeyBwcmludGYoIjEuLiVkXG4iLCBudW1iZXIpOyBfX2RpZF9wbGFuID0gMTt9CisjZGVmaW5lIFBMQU4obnVtYmVyKSBkbyB7IHByaW50ZigiMS4uJWRcbiIsIG51bWJlcik7IF9fZGlkX3BsYW4gPSAxOyB9IHdoaWxlICgwKQogCiAjZW5kaWYgLyogTkVUU05NUF9MSUJSQVJZX1RFU1RJTkdfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAppbmRleCA5YWM0ZmE1Li4yNjM0YjM0IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaApAQCAtMjA5LDYgKzIwOSw5IEBACiAgICAgTkVUU05NUF9JTVBPUlQKICAgICB2b2lkICAgICAgICAgICAqbmV0c25tcF9tZW1kdXAoY29uc3Qgdm9pZCAqIGZyb20sIHNpemVfdCBzaXplKTsKIAorICAgIHZvaWQgICAgICAgICAgICBuZXRzbm1wX2NoZWNrX2RlZmluZWRuZXNzKGNvbnN0IHZvaWQgKnBhY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoKTsKKwogICAgIE5FVFNOTVBfSU1QT1JUCiAgICAgdV9pbnQgICAgICAgICAgIG5ldHNubXBfYmluYXJ5X3RvX2hleCh1X2NoYXIgKiogZGVzdCwgc2l6ZV90ICpkZXN0X2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbGxvd19yZWFsbG9jLApAQCAtMjU5LDEyICsyNjIsMTggQEAKICAgICBORVRTTk1QX0lNUE9SVAogICAgIHZvaWQgICAgICAgICAgICBhdGltZV9zZXRNYXJrZXIobWFya2VyX3QgcG0pOwogICAgIE5FVFNOTVBfSU1QT1JUCisgICAgdm9pZCAgICAgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jayhzdHJ1Y3QgdGltZXZhbCogdHYpOworICAgIE5FVFNOTVBfSU1QT1JUCisgICAgdm9pZCAgICAgICAgICAgIG5ldHNubXBfc2V0X21vbm90b25pY19tYXJrZXIobWFya2VyX3QgKnBtKTsKKyAgICBORVRTTk1QX0lNUE9SVAogICAgIGxvbmcgICAgICAgICAgICBhdGltZV9kaWZmKGNvbnN0X21hcmtlcl90IGZpcnN0LCBjb25zdF9tYXJrZXJfdCBzZWNvbmQpOwogICAgIHVfbG9uZyAgICAgICAgICB1YXRpbWVfZGlmZihjb25zdF9tYXJrZXJfdCBmaXJzdCwgY29uc3RfbWFya2VyX3Qgc2Vjb25kKTsgICAgICAgLyogMS8xMDAwdGggc2VjICovCiAgICAgTkVUU05NUF9JTVBPUlQKICAgICB1X2xvbmcgICAgICAgICAgdWF0aW1lX2hkaWZmKGNvbnN0X21hcmtlcl90IGZpcnN0LCBjb25zdF9tYXJrZXJfdCBzZWNvbmQpOyAgICAgIC8qIDEvMTAwdGggc2VjICovCiAgICAgTkVUU05NUF9JTVBPUlQKICAgICBpbnQgICAgICAgICAgICAgYXRpbWVfcmVhZHkoY29uc3RfbWFya2VyX3QgcG0sIGludCBkZWx0YV9tcyk7CisgICAgTkVUU05NUF9JTVBPUlQKKyAgICBpbnQgICAgICAgICAgICAgbmV0c25tcF9yZWFkeV9tb25vdG9uaWMoY29uc3RfbWFya2VyX3QgcG0sIGludCBkZWx0YV9tcyk7CiAgICAgaW50ICAgICAgICAgICAgIHVhdGltZV9yZWFkeShjb25zdF9tYXJrZXJfdCBwbSwgdW5zaWduZWQgaW50IGRlbHRhX21zKTsKIAogICAgIGludCAgICAgICAgICAgICBtYXJrZXJfdHRpY2tzKGNvbnN0X21hcmtlcl90IHBtKTsKQEAgLTI3Nyw2ICsyODYsOSBAQAogCiAgICAgaW50ICAgICAgICAgICAgIG5ldHNubXBfYWRkcnN0cl9odG9uKGNoYXIgKnB0ciwgc2l6ZV90IGxlbik7CiAKKyAgICBORVRTTk1QX0lNUE9SVAorICAgIGludCAgICAgICAgICAgICBuZXRzbm1wX3N0cmluZ190aW1lX3RvX3NlY3MoY29uc3QgY2hhciAqdGltZV9zdHJpbmcpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiBiL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4KaW5kZXggMmEyMmMwMC4uMWRiMDIzNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbgorKysgYi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluCkBAIC0yOCwxNSArMjgsNiBAQAogICovCiAjaWZuZGVmIE5FVFNOTVBfTk9fQVVUT0NPTkZfREVGSU5JVElPTlMKIAotCi0jaWYgZGVmaW5lZCAoV0lOMzIpIHx8IGRlZmluZWQgKG1pbmd3MzIpIHx8IGRlZmluZWQgKGN5Z3dpbikKLSNkZWZpbmUgRU5WX1NFUEFSQVRPUiAiOyIKLSNkZWZpbmUgRU5WX1NFUEFSQVRPUl9DSEFSICc7JwotI2Vsc2UKLSNkZWZpbmUgRU5WX1NFUEFSQVRPUiAiOiIKLSNkZWZpbmUgRU5WX1NFUEFSQVRPUl9DSEFSICc6JwotI2VuZGlmCi0KIC8qIGRlZmluaXRpb25zIGFkZGVkIGJ5IGNvbmZpZ3VyZSBvbi10aGUtZmx5ICovCiAKICNkZWZpbmUgY29uZmlnX2JlbG9uZ3NfaW4oeCkKQEAgLTcxLDYgKzYyLDE1IEBACiAvKiBsb2NhdGlvbiBvZiBzd2FwIGRldmljZSAqLwogI3VuZGVmIERNRU1fTE9DCiAKKy8qIERlZmluZSBpZiB5b3Ugd2FudCBsb2NhbCBETlNTRUMgdmFsaWRhdGlvbiBzdXBwb3J0ICovCisjdW5kZWYgRE5TU0VDX0xPQ0FMX1ZBTElEQVRJT04KKworLyogRW52aXJvbm1lbnQgc2VwYXJhdG9yIGNoYXJhY3RlciBzdXJyb3VuZGVkIGJ5IGRvdWJsZSBxdW90ZXMuICovCisjdW5kZWYgRU5WX1NFUEFSQVRPUgorCisvKiBFbnZpcm9ubWVudCBzZXBhcmF0b3IgY2hhcmFjdGVyIHN1cnJvdW5kZWQgYnkgc2luZ2xlIHF1b3Rlcy4gKi8KKyN1bmRlZiBFTlZfU0VQQVJBVE9SX0NIQVIKKwogLyogbG9jYXRpb24gb2YgbW91bnQgdGFibGUgbGlzdCAqLwogI3VuZGVmIEVUQ19NTlRUQUIKIApAQCAtMTAyLDkgKzEwMiwxNSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjaG93bicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9DSE9XTgogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNsb2NrX2dldHRpbWUnIGxpYnJhcnkgKi8KKyN1bmRlZiBIQVZFX0NMT0NLX0dFVFRJTUUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjbG9zZWRpcicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9DTE9TRURJUgogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGNvbV9lcnIuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9DT01fRVJSX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYENvdW50ZXI2NCcuICovCiAjdW5kZWYgSEFWRV9DT1VOVEVSNjQKIApAQCAtMTM3LDYgKzE0Myw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGVyci5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0VSUl9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZXQvY29tX2Vyci5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0VUX0NPTV9FUlJfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGV2YWxfcHYnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRVZBTF9QVgogCkBAIC0xNDYsMTggKzE1NSwzMyBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBFVlBfTURfQ1RYX2Rlc3Ryb3knIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRVZQX01EX0NUWF9ERVNUUk9ZCiAKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSBFVlBfc2hhMjI0LzI1NiBpbiBvcGVuc3NsICovCisjdW5kZWYgSEFWRV9FVlBfU0hBMjI0CisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSBFVlBfc2hhMzg0LzI1NiBpbiBvcGVuc3NsICovCisjdW5kZWYgSEFWRV9FVlBfU0hBMzg0CisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZXhlY3YnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRVhFQ1YKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxmY250bC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0ZDTlRMX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmZ2V0Y191bmxvY2tlZCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GR0VUQ19VTkxPQ0tFRAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZsb2NrZmlsZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GTE9DS0ZJTEUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmb3JrJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0ZPUksKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxmc3RhYi5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0ZTVEFCX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmdW5sb2NrZmlsZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GVU5MT0NLRklMRQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdhaV9zdHJlcnJvcicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HQUlfU1RSRVJST1IKIApAQCAtMTc2LDYgKzIwMCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldGdybmFtJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dFVEdSTkFNCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0aG9zdGJ5YWRkcicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9HRVRIT1NUQllBRERSCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0aG9zdGJ5bmFtZScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HRVRIT1NUQllOQU1FCiAKQEAgLTI3OCwxMiArMzA1LDEyIEBACiAvKiBTZXQgaWYgSVBfUkVDVkRTVEFERFIgaXMgdXNhYmxlICovCiAjdW5kZWYgSEFWRV9JUF9SRUNWRFNUQUREUgogCi0vKiBrZXJuLmNwX3RpbWVzIGRpc3BsYXlzIG11bHRpIGNwdSBsb2FkIG9uIEZyZWVCU0QuLi4gKi8KLSN1bmRlZiBIQVZFX0tFUk5fQ1BfVElNRVMKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBraW5mb19nZXRfY3B1cycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9LSU5GT19HRVRfQ1BVUwogCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgL2Rldi9rbWVtICovCisjdW5kZWYgSEFWRV9LTUVNCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga25saXN0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0tOTElTVAogCkBAIC0zMzUsNiArMzYyLDEyIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHBrY3MxMScgbGlicmFyeSAoLWxwa2NzMTEpLiAqLwogI3VuZGVmIEhBVkVfTElCUEtDUzExCiAKKy8qIGRlZmluZSBpZiB5b3UgaGF2ZSBCU0QgcGtnLW5nICovCisjdW5kZWYgSEFWRV9MSUJQS0cKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwdGhyZWFkJyBsaWJyYXJ5ICgtbHB0aHJlYWQpLiAqLworI3VuZGVmIEhBVkVfTElCUFRIUkVBRAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJwbScgbGlicmFyeSAoLWxycG0pLiAqLwogI3VuZGVmIEhBVkVfTElCUlBNCiAKQEAgLTM0NCw2ICszNzcsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByc2FyZWYnIGxpYnJhcnkgKC1scnNhcmVmKS4gKi8KICN1bmRlZiBIQVZFX0xJQlJTQVJFRgogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNyZXMnIGxpYnJhcnkgKC1sc3JlcykuICovCisjdW5kZWYgSEFWRV9MSUJTUkVTCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3NoMicgbGlicmFyeSAoLWxzc2gyKS4gKi8KICN1bmRlZiBIQVZFX0xJQlNTSDIKIApAQCAtNTY5LDYgKzYwNSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG9zcmVsZGF0ZS5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX09TUkVMREFURV9ICiAKKy8qIGRlZmluZSBpZiB5b3UgaGF2ZSBwY2lfbG9va3VwX25hbWUoKSAqLworI3VuZGVmIEhBVkVfUENJX0xPT0tVUF9OQU1FCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8cGNpL3BjaS5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1BDSV9QQ0lfSAogCkBAIC01OTMsNiArNjMyLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8cGtnbG9jcy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1BLR0xPQ1NfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHBrZy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1BLR19ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcG9sbCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9QT0xMCiAKQEAgLTc2NCwyMDYgKzgwNiwyMTIgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RydG91bGwnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU1RSVE9VTEwKIAotLyogRGVmaW5lIHRvIDEgaWYgYGF0X25leHQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGFycGhkJy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBhdF9uZXh0JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGFycGhkJy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9BUlBIRF9BVF9ORVhUCiAKLS8qIERlZmluZSB0byAxIGlmIGB3ZWFrX2tleScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgZGVzX2tzX3N0cnVjdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgd2Vha19rZXknIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgZGVzX2tzX3N0cnVjdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfREVTX0tTX1NUUlVDVF9XRUFLX0tFWQogCi0vKiBEZWZpbmUgdG8gMSBpZiBgZF90eXBlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBkaXJlbnQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGRfdHlwZScgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBkaXJlbnQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0RJUkVOVF9EX1RZUEUKIAotLyogRGVmaW5lIHRvIDEgaWYgYHNwZWVkX2hpJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBldGh0b29sX2NtZCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgc3BlZWRfaGknIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgZXRodG9vbF9jbWQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0VUSFRPT0xfQ01EX1NQRUVEX0hJCiAKLS8qIERlZmluZSB0byAxIGlmIGBpZmFfbmV4dCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZhZGRyJy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBpZmFfbmV4dCcgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpZmFkZHInLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lGQUREUl9JRkFfTkVYVAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaWZfYWRkcmhlYWQudHFoX2ZpcnN0JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfYWRkcmhlYWQudHFoX2ZpcnN0JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9BRERSSEVBRF9UUUhfRklSU1QKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlmX2FkZHJsaXN0JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfYWRkcmxpc3QnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0FERFJMSVNUCiAKLS8qIERlZmluZSB0byAxIGlmIGBpZl9iYXVkcmF0ZScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2JhdWRyYXRlJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9CQVVEUkFURQogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaWZfYmF1ZHJhdGUuaWZzX3ZhbHVlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfYmF1ZHJhdGUuaWZzX3ZhbHVlJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9CQVVEUkFURV9JRlNfVkFMVUUKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlmX2lieXRlcycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2lieXRlcycgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfSUJZVEVTCiAKLS8qIERlZmluZSB0byAxIGlmIGBpZl9pbWNhc3RzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfaW1jYXN0cycgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfSU1DQVNUUwogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaWZfaXFkcm9wcycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2lxZHJvcHMnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0lRRFJPUFMKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlmX2xhc3RjaGFuZ2UudHZfbnNlYycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2xhc3RjaGFuZ2UudHZfbnNlYycgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfTEFTVENIQU5HRV9UVl9OU0VDCiAKLS8qIERlZmluZSB0byAxIGlmIGBpZl9sYXN0Y2hhbmdlLnR2X3NlYycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2xhc3RjaGFuZ2UudHZfc2VjJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9MQVNUQ0hBTkdFX1RWX1NFQwogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaWZfbXR1JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfbXR1JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9NVFUKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlmX25vcHJvdG8nIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBpZl9ub3Byb3RvJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9OT1BST1RPCiAKLS8qIERlZmluZSB0byAxIGlmIGBpZl9vYnl0ZXMnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBpZl9vYnl0ZXMnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX09CWVRFUwogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaWZfb21jYXN0cycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlmX29tY2FzdHMnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX09NQ0FTVFMKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlmX3NwZWVkJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfc3BlZWQnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX1NQRUVECiAKLS8qIERlZmluZSB0byAxIGlmIGBpZl90eXBlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfdHlwZScgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfVFlQRQogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaWZfeG5hbWUnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBpZl94bmFtZScgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfWE5BTUUKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlwc19jYW50Zm9yd2FyZCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBpcDZzX2V4dGhkcnRvb2xvbmcgJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlwNnN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lQNlNUQVRfSVA2U19FWFRIRFJUT09MT05HXworCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2NhbnRmb3J3YXJkJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19DQU5URk9SV0FSRAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2NhbnRmcmFnJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlwc19jYW50ZnJhZycgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfQ0FOVEZSQUcKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlwc19kZWxpdmVyZWQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2RlbGl2ZXJlZCcgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfREVMSVZFUkVECiAKLS8qIERlZmluZSB0byAxIGlmIGBpcHNfZnJhZ2Ryb3BwZWQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2ZyYWdkcm9wcGVkJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19GUkFHRFJPUFBFRAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2ZyYWdtZW50ZWQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2ZyYWdtZW50ZWQnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0ZSQUdNRU5URUQKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlwc19mcmFndGltZW91dCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBpcHNfZnJhZ3RpbWVvdXQnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0ZSQUdUSU1FT1VUCiAKLS8qIERlZmluZSB0byAxIGlmIGBpcHNfbG9jYWxvdXQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2xvY2Fsb3V0JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19MT0NBTE9VVAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaXBzX25vcHJvdG8nIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX25vcHJvdG8nIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX05PUFJPVE8KIAotLyogRGVmaW5lIHRvIDEgaWYgYGlwc19ub3JvdXRlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlwc19ub3JvdXRlJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19OT1JPVVRFCiAKLS8qIERlZmluZSB0byAxIGlmIGBpcHNfb2Ryb3BwZWQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX29kcm9wcGVkJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19PRFJPUFBFRAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaXBzX29mcmFnbWVudHMnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX29mcmFnbWVudHMnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX09GUkFHTUVOVFMKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlwc19yZWFzc2VtYmxlZCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBpcHNfcmVhc3NlbWJsZWQnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX1JFQVNTRU1CTEVECiAKLS8qIERlZmluZSB0byAxIGlmIGBtX2NsZnJlZScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgbWJzdGF0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBtX2NsZnJlZScgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBtYnN0YXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX01CU1RBVF9NX0NMRlJFRQogCi0vKiBEZWZpbmUgdG8gMSBpZiBgbV9jbHVzdGVycycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgbWJzdGF0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBtX2NsdXN0ZXJzJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IG1ic3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfTUJTVEFUX01fQ0xVU1RFUlMKIAotLyogRGVmaW5lIHRvIDEgaWYgYG1fbWJ1ZnMnIGlzIG1lbWJlciBvZiBgc3RydWN0IG1ic3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgbV9tYnVmcycgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBtYnN0YXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX01CU1RBVF9NX01CVUZTCiAKLS8qIERlZmluZSB0byAxIGlmIGBuX3ZhbHVlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBubGlzdDY0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBuX3ZhbHVlJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IG5saXN0NjQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX05MSVNUNjRfTl9WQUxVRQogCi0vKiBEZWZpbmUgdG8gMSBpZiBgbl92YWx1ZScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgbmxpc3QnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYG5fdmFsdWUnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgbmxpc3QnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX05MSVNUX05fVkFMVUUKIAotLyogRGVmaW5lIHRvIDEgaWYgYHJ0X2RzdCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgcnRlbnRyeScuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgcnRfZHN0JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHJ0ZW50cnknLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfRFNUCiAKLS8qIERlZmluZSB0byAxIGlmIGBydF9oYXNoJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBydGVudHJ5Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBydF9oYXNoJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHJ0ZW50cnknLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfSEFTSAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgcnRfbmV4dCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgcnRlbnRyeScuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgcnRfbmV4dCcgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBydGVudHJ5Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX05FWFQKIAotLyogRGVmaW5lIHRvIDEgaWYgYHJ0X3JlZmNudCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgcnRlbnRyeScuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgcnRfcmVmY250JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHJ0ZW50cnknLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfUkVGQ05UCiAKLS8qIERlZmluZSB0byAxIGlmIGBydF91bml0JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBydGVudHJ5Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBydF91bml0JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHJ0ZW50cnknLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfVU5JVAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgcnRfdXNlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBydGVudHJ5Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBydF91c2UnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgcnRlbnRyeScuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9VU0UKIAotLyogRGVmaW5lIHRvIDEgaWYgYHNhX3NpZ2FjdGlvbicgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc2lnYWN0aW9uJy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBzYV9zaWdhY3Rpb24nIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc2lnYWN0aW9uJy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TSUdBQ1RJT05fU0FfU0lHQUNUSU9OCiAKLS8qIERlZmluZSB0byAxIGlmIGBzaW42X3Njb3BlX2lkJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzb2NrYWRkcl9pbjYnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYHNpbjZfc2NvcGVfaWQnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc29ja2FkZHJfaW42Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TT0NLQUREUl9JTjZfU0lONl9TQ09QRV9JRAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgc2FfbGVuJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzb2NrYWRkcicuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgc2FfbGVuJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHNvY2thZGRyJy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TT0NLQUREUl9TQV9MRU4KIAotLyogRGVmaW5lIHRvIDEgaWYgYHNhX3VuaW9uLnNhX2dlbmVyaWMuc2FfZmFtaWx5MicgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QKKy8qIERlZmluZSB0byAxIGlmIGBzYV91bmlvbi5zYV9nZW5lcmljLnNhX2ZhbWlseTInIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QKICAgIHNvY2thZGRyJy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TT0NLQUREUl9TQV9VTklPTl9TQV9HRU5FUklDX1NBX0ZBTUlMWTIKIAotLyogRGVmaW5lIHRvIDEgaWYgYHNzX2ZhbWlseScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZScuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgc3NfZmFtaWx5JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0VfU1NfRkFNSUxZCiAKLS8qIERlZmluZSB0byAxIGlmIGBfX3NzX2ZhbWlseScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZScuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgX19zc19mYW1pbHknIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZScuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfU09DS0FERFJfU1RPUkFHRV9fX1NTX0ZBTUlMWQogCi0vKiBEZWZpbmUgdG8gMSBpZiBgZl9mYXZhaWwnIGlzIG1lbWJlciBvZiBgc3RydWN0IHN0YXRmcycuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgZl9mYXZhaWwnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdGZzJy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TVEFURlNfRl9GQVZBSUwKIAotLyogRGVmaW5lIHRvIDEgaWYgYGZfZmZyZWUnIGlzIG1lbWJlciBvZiBgc3RydWN0IHN0YXRmcycuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgZl9mZnJlZScgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0ZnMnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRGU19GX0ZGUkVFCiAKLS8qIERlZmluZSB0byAxIGlmIGBmX2ZpbGVzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0ZnMnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGZfZmlsZXMnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdGZzJy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TVEFURlNfRl9GSUxFUwogCi0vKiBEZWZpbmUgdG8gMSBpZiBgZl9mbGFncycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdGZzJy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBmX2ZsYWdzJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHN0YXRmcycuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVEZTX0ZfRkxBR1MKIAotLyogRGVmaW5lIHRvIDEgaWYgYGZfZnJzaXplJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0ZnMnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGZfZnJzaXplJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHN0YXRmcycuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVEZTX0ZfRlJTSVpFCiAKLS8qIERlZmluZSB0byAxIGlmIGBmX2ZpbGVzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0dmZzJy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBmX2ZpbGVzJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHN0YXR2ZnMnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRWRlNfRl9GSUxFUwogCi0vKiBEZWZpbmUgdG8gMSBpZiBgZl9mcnNpemUnIGlzIG1lbWJlciBvZiBgc3RydWN0IHN0YXR2ZnMnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGZfZnJzaXplJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHN0YXR2ZnMnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRWRlNfRl9GUlNJWkUKIAotLyogRGVmaW5lIHRvIDEgaWYgYG1udF9kaXInIGlzIG1lbWJlciBvZiBgc3RydWN0IHN0YXR2ZnMnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYG1udF9kaXInIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdHZmcycuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVFZGU19NTlRfRElSCiAKLS8qIERlZmluZSB0byAxIGlmIGBzd19uYmxrc2VuYWJsZWQnIGlzIG1lbWJlciBvZiBgc3RydWN0IHN3ZGV2dCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgc3dfbmJsa3NlbmFibGVkJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHN3ZGV2dCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfU1dERVZUX1NXX05CTEtTRU5BQkxFRAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgdGNwX3Jjdm1lbWRyb3AnIGlzIG1lbWJlciBvZiBgc3RydWN0IHRjcHN0YXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYHRjcF9yY3ZtZW1kcm9wJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHRjcHN0YXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1RDUFNUQVRfVENQX1JDVk1FTURST1AKIAotLyogRGVmaW5lIHRvIDEgaWYgYHR6X2RzdHRpbWUnIGlzIG1lbWJlciBvZiBgc3RydWN0IHRpbWV6b25lJy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGB0el9kc3R0aW1lJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHRpbWV6b25lJy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9USU1FWk9ORV9UWl9EU1RUSU1FCiAKLS8qIERlZmluZSB0byAxIGlmIGB0bV9nbXRvZmYnIGlzIG1lbWJlciBvZiBgc3RydWN0IHRtJy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGB0bV9nbXRvZmYnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgdG0nLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1RNX1RNX0dNVE9GRgogCi0vKiBEZWZpbmUgdG8gMSBpZiBgdWRwc19kaXNjYXJkJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCB1ZHBzdGF0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGB1ZHBzX2Rpc2NhcmQnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgdWRwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX0RJU0NBUkQKIAotLyogRGVmaW5lIHRvIDEgaWYgYHVkcHNfZnVsbHNvY2snIGlzIG1lbWJlciBvZiBgc3RydWN0IHVkcHN0YXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYHVkcHNfZnVsbHNvY2snIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgdWRwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX0ZVTExTT0NLCiAKLS8qIERlZmluZSB0byAxIGlmIGB1ZHBzX25vcG9ydCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgdWRwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgdWRwc19pcGFja2V0cycgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCB1ZHBzdGF0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9VRFBTVEFUX1VEUFNfSVBBQ0tFVFMKKworLyogRGVmaW5lIHRvIDEgaWYgYHVkcHNfbm9wb3J0JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHVkcHN0YXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19OT1BPUlQKIAotLyogRGVmaW5lIHRvIDEgaWYgYHVkcHNfbm9wb3J0YmNhc3QnIGlzIG1lbWJlciBvZiBgc3RydWN0IHVkcHN0YXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYHVkcHNfbm9wb3J0YmNhc3QnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgdWRwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX05PUE9SVEJDQVNUCiAKLS8qIERlZmluZSB0byAxIGlmIGB1ZHBzX29wYWNrZXRzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCB1ZHBzdGF0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGB1ZHBzX29wYWNrZXRzJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHVkcHN0YXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19PUEFDS0VUUwogCiAvKiBEZWZpbmUgdG8gMSBpZiBgcGdzd2FwaW4nIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgdXZtZXhwJy4gKi8KQEAgLTEyMTQsNiArMTI2MiwxNSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1dm0vdXZtX3BhcmFtLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfVVZNX1VWTV9QQVJBTV9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dmFsZ3JpbmQvbWVtY2hlY2suaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9WQUxHUklORF9NRU1DSEVDS19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dmFsZ3JpbmQvdmFsZ3JpbmQuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9WQUxHUklORF9WQUxHUklORF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dmFsaWRhdG9yL3ZhbGlkYXRvci1jb25maWcuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9WQUxJREFUT1JfVkFMSURBVE9SX0NPTkZJR19ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dm0vc3dhcF9wYWdlci5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1ZNX1NXQVBfUEFHRVJfSAogCkBAIC0xMjc5LDYgKzEzMzYsMTIgQEAKIC8qIGRlZmF1bHQgbWliIGZpbGVzIHRvIGxvYWQsIHNwZWNpZmllZCBieSBwYXRoLiAqLwogI3VuZGVmIE5FVFNOTVBfREVGQVVMVF9NSUJGSUxFUwogCisvKiBEZWZpbmUgaWYgbm8gYWdlbnQgaXMgYnVpbHQgKi8KKyN1bmRlZiBORVRTTk1QX0RJU0FCTEVfQUdFTlQKKworLyogRGVmaW5lIGlmIG5vIGFwcHMgYXJlIGJ1aWx0ICovCisjdW5kZWYgTkVUU05NUF9ESVNBQkxFX0FQUFMKKwogLyogRGVmaW5lIGlmIERFUyBlbmNyeXB0aW9uIHNob3VsZCBub3QgYmUgc3VwcG9ydGVkICovCiAjdW5kZWYgTkVUU05NUF9ESVNBQkxFX0RFUwogCkBAIC0xMzI1LDYgKzEzODgsMTIgQEAKIC8qIGlmbmV0IG5lZWRzIHRvIGhhdmUgX0tFUk5FTF9TVFJVQ1RVUkVTIGRlZmluZWQgKi8KICN1bmRlZiBORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTF9TVFJVQ1RVUkVTCiAKKy8qIERlZmluZSBpZiB5b3Ugd2FudCB0byByZW1vdmUgYWxsIG5vbi1lc3NlbnRpYWwgY29kZSBmZWF0dXJlcy4gKi8KKyN1bmRlZiBORVRTTk1QX01JTklNQUxfQ09ERQorCisvKiBEZWZpbmUgaWYgeW91IHdhbnQgdG8gb25seSBzdXBwb3J0IHNlbmRpbmcgbm90aWZpY2F0aW9ucyAqLworI3VuZGVmIE5FVFNOTVBfTk9USUZZX09OTFkKKwogLyogRGVmaW5lIHRvIHN1cHByZXNzIGluY2x1c2lvbiBvZiBkZXByZWNhdGVkIGZ1bmN0aW9ucyAqLwogI3VuZGVmIE5FVFNOTVBfTk9fREVQUkVDQVRFRF9GVU5DVElPTlMKIApAQCAtMTMzNSw5ICsxNDA0LDE1IEBACiAvKiBJZiB3ZSBkb24ndCB3YW50IHRvIHVzZSBrbWVtLiAqLwogI3VuZGVmIE5FVFNOTVBfTk9fS01FTV9VU0FHRQogCisvKiBEZWZpbmUgaWYgeW91IHdhbnQgdG8gcmVtb3ZlIGFsbCBsaXN0ZW5pbmcgc3VwcG9ydCBmcm9tIHRoZSBjb2RlICovCisjdW5kZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAorCiAvKiBJZiB5b3UgZG9uJ3QgaGF2ZSByb290IGFjY2VzcyBkb24ndCBleGl0IHVwb24ga21lbSBlcnJvcnMgKi8KICN1bmRlZiBORVRTTk1QX05PX1JPT1RfQUNDRVNTCiAKKy8qIERlZmluZSBpZiB5b3Ugd2FudCB0byByZW1vdmUgYWxsIFNFVC93cml0ZSBhY2Nlc3MgZnJvbSB0aGUgY29kZSAqLworI3VuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorCiAvKiB1bWFzayBwZXJtaXNzaW9ucyB0byBzZXQgdXAgcGVyc2lzdGVudCBmaWxlcyB3aXRoICovCiAjdW5kZWYgTkVUU05NUF9QRVJTSVNURU5UX01BU0sKIApAQCAtMTQwMiw2ICsxNDc3LDkgQEAKICN1bmRlZiBQQUNLQUdFX1RBUk5BTUUKICNlbmRpZgogCisvKiBEZWZpbmUgdG8gdGhlIGhvbWUgcGFnZSBmb3IgdGhpcyBwYWNrYWdlLiAqLworI3VuZGVmIFBBQ0tBR0VfVVJMCisKIC8qIERlZmluZSB0byB0aGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCiAjaWZuZGVmIFBBQ0tBR0VfVkVSU0lPTgogI3VuZGVmIFBBQ0tBR0VfVkVSU0lPTgpAQCAtMTU2Nyw2ICsxNjQ1LDkgQEAKIC8qIERlZmluZSB0byBgaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXMgbm90IGRlZmluZS4gKi8KICN1bmRlZiBwaWRfdAogCisvKiBEZWZpbmUgdG8gYHVuc2lnbmVkIGludCcgaWYgPHN5cy90eXBlcy5oPiBkb2VzIG5vdCBkZWZpbmUuICovCisjdW5kZWYgc2l6ZV90CisKIC8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSAxNiBiaXRzIGlmCiAgICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLwogI3VuZGVmIHVpbnQxNl90CkBAIC0yMDQ1LDExICsyMTI2LDggQEAKICAgIGFuZCBhcmUgbm90IHVzaW5nIHRoZSBVQy1EYXZpcyBTTk1QIGxpYnJhcnkuICovCiAjZGVmaW5lIFVDRF9TTk1QX0xJQlJBUlkgMQogCi0vKiBhZGQgaW4gcmVjZW50IENNVSBsaWJyYXJ5IGV4dGVuc2lvbnMgKG5vdCBjb21wbGV0ZSkgKi8KLSN1bmRlZiBDTVVfQ09NUEFUSUJMRQotCiAvKiBmaW5hbCBjb25jbHVzaW9uIG9uIG5saXN0IHVzYWdlICovCi0jaWYgZGVmaW5lZChIQVZFX05MSVNUKSAmJiBkZWZpbmVkKEhBVkVfU1RSVUNUX05MSVNUX05fVkFMVUUpICYmICFkZWZpbmVkKE5FVFNOTVBfRE9OVF9VU0VfTkxJU1QpICYmICFkZWZpbmVkKE5FVFNOTVBfTk9fS01FTV9VU0FHRSkKKyNpZiBkZWZpbmVkKEhBVkVfTkxJU1QpICYmIGRlZmluZWQoSEFWRV9TVFJVQ1RfTkxJU1RfTl9WQUxVRSkgJiYgIWRlZmluZWQoTkVUU05NUF9ET05UX1VTRV9OTElTVCkgJiYgZGVmaW5lZChIQVZFX0tNRU0pICYmICFkZWZpbmVkKE5FVFNOTVBfTk9fS01FTV9VU0FHRSkKICNkZWZpbmUgTkVUU05NUF9DQU5fVVNFX05MSVNUCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oIGIvaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzN2U2YzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKQEAgLTAsMCArMSwzMiBAQAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVTX0gKKyNkZWZpbmUgTkVUU05NUF9GRUFUVVJFU19ICisKKy8qIGluY2x1ZGUgZmlsZXMgdGhhdCBhcmUgb25seSBuZWVkZWQgaWYgLS1lbmFibGUtbWluaW1hbGlzdCBpcyBvbiAqLworI2lmZGVmIE5FVFNOTVBfTUlOSU1BTF9DT0RFCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX0NIRUNLSU5HCisjaW5jbHVkZSA8bmV0LXNubXAvZmVhdHVyZS1kZXRhaWxzLmg+CisjZWxzZSAvKiAhIE5FVFNOTVBfRkVBVFVSRV9DSEVDS0lORyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvZmVhdHVyZXMuaD4KKyNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX0FHRU5UCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvZmVhdHVyZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9mZWF0dXJlcy1taWJncm91cHMuaD4KKyNlbmRpZgorI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfQVBQUworI2luY2x1ZGUgPG5ldC1zbm1wL2ZlYXR1cmVzLXNubXBuZXRzdGF0Lmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZmVhdHVyZXMtYXBwcy5oPgorI2VuZGlmCisjZW5kaWYgLyogISBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcgKi8KKyNlbmRpZiAvKiBORVRTTk1QX01JTklNQUxfQ09ERSAqLworCisKKy8qIHByb3RvdHlwZXMgYWx3YXlzIG5lZWRlZCAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcKKyNkZWZpbmUgbmV0c25tcF9mZWF0dXJlX3Byb3ZpZGUoWCkKKyNkZWZpbmUgbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoWCkKKyNkZWZpbmUgbmV0c25tcF9mZWF0dXJlX3dhbnQoWCkKKyNkZWZpbmUgbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKFgsIFkpCisjZW5kaWYKKworI2RlZmluZSBuZXRzbm1wX2ZlYXR1cmVfdW51c2VkKFgpIGNoYXIgbmV0c25tcF9mZWF0dXJlX3VudXNlZF8gIyMgWAorCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFU19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmggYi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKaW5kZXggY2QzNzQwNy4uM2VlNjJhZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaApAQCAtNzcsOCArNzcsNCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL291dHB1dF9hcGkuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9zbm1wdjNfYXBpLmg+CiAKLSNpZmRlZiBDTVVfQ09NUEFUSUJMRQotI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY211X2NvbXBhdC5oPgotI2VuZGlmCi0KICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTkVUX1NOTVBfSU5DTFVERVNfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luLmggYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4uaAppbmRleCA2ZWFmMDlmLi41YTA2NWI3IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4uaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4uaApAQCAtNiw4ICs2LDMgQEAKICAqLwogI3VuZGVmIEhBVkVfRlNUQUJfSAogCi0vKgotICogYXMgb2YgNy8yMDEwLCBvcGVuc3NsIG9uIGRhcndpbiBkb2VzIG5vdCBoYXZlIHNoYTI1NgotICovCi0jZGVmaW5lIE9QRU5TU0xfTk9fU0hBMjU2IDEKLSNkZWZpbmUgT1BFTlNTTF9OT19TSEE1MTIgMQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luMTAuaCBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjEwLmgKaW5kZXggMjMzMzAxNS4uMzAzNzMyNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luMTAuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4xMC5oCkBAIC02NSw2ICs2NSw3IEBACiAvKgogICogdXNlIG5ldyBob3N0IHJlc291cmNlcyBmaWxlcyBhcyB3ZWxsCiAgKi8KKyNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0hPU1RfUkVTT1VSQ0VTCiAjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9IUlNXSU5TVF9SRVdSSVRFUwogI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSFJTV1JVTl9SRVdSSVRFUwogI3VuZGVmIE5FVFNOTVBfSU5DTFVERV9IUlNXUlVOX1dSSVRFX1NVUFBPUlQKQEAgLTkyLDI1ICs5Myw2IEBACiAjZW5kaWYKIAogLyoKLSAqIERhcndpbidzIHRvb2xzIGFyZSBjYXBhYmxlIG9mIGJ1aWxkaW5nIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMgaW4gb25lIHBhc3MuCi0gKiBBcyBhIHJlc3VsdCwgcGxhdGZvcm0gZGVmaW5pdGlvbnMgc2hvdWxkIGJlIGRlZmVycmVkIHVudGlsIGNvbXBpbGUgdGltZS4KLSAqLwotI2lmZGVmIEJZVEVfT1JERVIKLSMgdW5kZWYgV09SRFNfQklHRU5ESUFOCi0jIGlmIEJZVEVfT1JERVIgPT0gQklHX0VORElBTgotIyAgZGVmaW5lIFdPUkRTX0JJR0VORElBTiAxCi0jIGVuZGlmCi0jZW5kaWYKLQotLyoKLSAqIEFsdGhvdWdoIERhcndpbiBkb2VzIGhhdmUgYSBrdm0uaCBmaWxlLCBrdm1fb3BlbmZpbGVzIGV0Yy4gYWx3YXlzCi0gKiByZXR1cm4gbnVsbCBiZWNhdXNlIC9kZXYva21lbSB3YXMgcmVtb3ZlZCBjb21wbGV0ZWx5IGluIE9TIFggMTAuNS4KLSAqLwotI3VuZGVmIEhBVkVfS1ZNX0gKLSN1bmRlZiBIQVZFX0tWTV9HRVRQUk9DUwotI3VuZGVmIEhBVkVfS1ZNX09QRU5GSUxFUwotCi0vKgogICogQWx0aG91Z2ggRGFyd2luIGRvZXMgaGF2ZSBhbiBmc3RhYi5oIGZpbGUsIGdldGZzZmlsZSBldGMuIGFsd2F5cyByZXR1cm4gbnVsbC4KICAqIEF0IGxlYXN0LCBhcyBvZiA1LjMuCiAgKi8KQEAgLTE1NCw4ICsxMzYsMyBAQAogI2RlZmluZSBVRFBfQUREUkVTU0VTX0lOX0hPU1RfT1JERVIgMQogI2VuZGlmCiAKLS8qCi0gKiBhcyBvZiA3LzIwMTAsIG9wZW5zc2wgb24gZGFyd2luIGRvZXMgbm90IGhhdmUgc2hhMjU2Ci0gKi8KLSNkZWZpbmUgT1BFTlNTTF9OT19TSEEyNTYgMQotI2RlZmluZSBPUEVOU1NMX05PX1NIQTUxMiAxCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4xMS5oIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luMTEuaAppbmRleCAyNGZlZDkzLi45ZDZmMDNkIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4xMS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjExLmgKQEAgLTY1LDYgKzY1LDcgQEAKIC8qCiAgKiB1c2UgbmV3IGhvc3QgcmVzb3VyY2VzIGZpbGVzIGFzIHdlbGwKICAqLworI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSE9TVF9SRVNPVVJDRVMKICNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0hSU1dJTlNUX1JFV1JJVEVTCiAjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9IUlNXUlVOX1JFV1JJVEVTCiAjdW5kZWYgTkVUU05NUF9JTkNMVURFX0hSU1dSVU5fV1JJVEVfU1VQUE9SVApAQCAtOTIsMjUgKzkzLDYgQEAKICNlbmRpZgogCiAvKgotICogRGFyd2luJ3MgdG9vbHMgYXJlIGNhcGFibGUgb2YgYnVpbGRpbmcgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcyBpbiBvbmUgcGFzcy4KLSAqIEFzIGEgcmVzdWx0LCBwbGF0Zm9ybSBkZWZpbml0aW9ucyBzaG91bGQgYmUgZGVmZXJyZWQgdW50aWwgY29tcGlsZSB0aW1lLgotICovCi0jaWZkZWYgQllURV9PUkRFUgotIyB1bmRlZiBXT1JEU19CSUdFTkRJQU4KLSMgaWYgQllURV9PUkRFUiA9PSBCSUdfRU5ESUFOCi0jICBkZWZpbmUgV09SRFNfQklHRU5ESUFOIDEKLSMgZW5kaWYKLSNlbmRpZgotCi0vKgotICogQWx0aG91Z2ggRGFyd2luIGRvZXMgaGF2ZSBhIGt2bS5oIGZpbGUsIGt2bV9vcGVuZmlsZXMgZXRjLiBhbHdheXMKLSAqIHJldHVybiBudWxsIGJlY2F1c2UgL2Rldi9rbWVtIHdhcyByZW1vdmVkIGNvbXBsZXRlbHkgaW4gT1MgWCAxMC41LgotICovCi0jdW5kZWYgSEFWRV9LVk1fSAotI3VuZGVmIEhBVkVfS1ZNX0dFVFBST0NTCi0jdW5kZWYgSEFWRV9LVk1fT1BFTkZJTEVTCi0KLS8qCiAgKiBBbHRob3VnaCBEYXJ3aW4gZG9lcyBoYXZlIGFuIGZzdGFiLmggZmlsZSwgZ2V0ZnNmaWxlIGV0Yy4gYWx3YXlzIHJldHVybiBudWxsLgogICogQXQgbGVhc3QsIGFzIG9mIDUuMy4KICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luMTIuaCBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjEyLmgKaW5kZXggZmQ2NjE0Ny4uMzAzMWQwNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luMTIuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4xMi5oCkBAIC02NSw2ICs2NSw3IEBACiAvKgogICogdXNlIG5ldyBob3N0IHJlc291cmNlcyBmaWxlcyBhcyB3ZWxsCiAgKi8KKyNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0hPU1RfUkVTT1VSQ0VTCiAjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9IUlNXSU5TVF9SRVdSSVRFUwogI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSFJTV1JVTl9SRVdSSVRFUwogI3VuZGVmIE5FVFNOTVBfSU5DTFVERV9IUlNXUlVOX1dSSVRFX1NVUFBPUlQKQEAgLTkyLDI1ICs5Myw2IEBACiAjZW5kaWYKIAogLyoKLSAqIERhcndpbidzIHRvb2xzIGFyZSBjYXBhYmxlIG9mIGJ1aWxkaW5nIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMgaW4gb25lIHBhc3MuCi0gKiBBcyBhIHJlc3VsdCwgcGxhdGZvcm0gZGVmaW5pdGlvbnMgc2hvdWxkIGJlIGRlZmVycmVkIHVudGlsIGNvbXBpbGUgdGltZS4KLSAqLwotI2lmZGVmIEJZVEVfT1JERVIKLSMgdW5kZWYgV09SRFNfQklHRU5ESUFOCi0jIGlmIEJZVEVfT1JERVIgPT0gQklHX0VORElBTgotIyAgZGVmaW5lIFdPUkRTX0JJR0VORElBTiAxCi0jIGVuZGlmCi0jZW5kaWYKLQotLyoKLSAqIEFsdGhvdWdoIERhcndpbiBkb2VzIGhhdmUgYSBrdm0uaCBmaWxlLCBrdm1fb3BlbmZpbGVzIGV0Yy4gYWx3YXlzCi0gKiByZXR1cm4gbnVsbCBiZWNhdXNlIC9kZXYva21lbSB3YXMgcmVtb3ZlZCBjb21wbGV0ZWx5IGluIE9TIFggMTAuNS4KLSAqLwotI3VuZGVmIEhBVkVfS1ZNX0gKLSN1bmRlZiBIQVZFX0tWTV9HRVRQUk9DUwotI3VuZGVmIEhBVkVfS1ZNX09QRU5GSUxFUwotCi0vKgogICogQWx0aG91Z2ggRGFyd2luIGRvZXMgaGF2ZSBhbiBmc3RhYi5oIGZpbGUsIGdldGZzZmlsZSBldGMuIGFsd2F5cyByZXR1cm4gbnVsbC4KICAqIEF0IGxlYXN0LCBhcyBvZiA1LjMuCiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjEzLmggYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4xMy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiMTg3MGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4xMy5oCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICogV2hpbGUgRGFyd2luIDEwIChha2EsIE1hYyBPUyBYIDEwLjYgU25vdyBMZW9wYXJkKSBpcyAiQlNELWxpa2UiLCBpdCBkaWZmZXJzCisgKiBzdWJzdGFudGlhbGx5IGVub3VnaCB0byBub3Qgd2FycmFudCBwcmV0ZW5kaW5nIGl0IGlzIGEgQlNEIGZsYXZvci4KKyAqIFRoaXMgZmlyc3Qgc2VjdGlvbiBhcmUgdGhlIHZlc3RpZ2FsIEJTRCByZW1uYW50cy4KKyAqLworLyogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0KHMpLiAgU2VlCisgKiB0aGUgTmV0LVNOTVAncyBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworICogdGhhdCBtYXkgYXBwbHk6CisgKi8KKy8qCisgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGNvcHlyaWdodGVkIGJ5OgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCisKKy8qCisgKiBCU0Qgc3lzdGVtcyB1c2UgYSBkaWZmZXJlbnQgbWV0aG9kIG9mIGxvb2tpbmcgdXAgc29ja2FkZHJfaW4gdmFsdWVzIAorICovCisvKiAjZGVmaW5lIE5FRURfS0xHRVRTQSAxICovCisKKy8qCisgKiBBUlBfU2Nhbl9OZXh0IG5lZWRzIGEgNHRoIGlmSW5kZXggYXJndW1lbnQgCisgKi8KKyNkZWZpbmUgQVJQX1NDQU5fRk9VUl9BUkdVTUVOVFMgMQorCisjZGVmaW5lIENIRUNLX1JUX0ZMQUdTIDEKKworLyoKKyAqIHRoaXMgaXMgbm90IGdvb2QgZW5vdWdoIGJlZm9yZSBmcmVlYnNkMyEgCisgKi8KKy8qICN1bmRlZiBIQVZFX05FVF9JRl9NSUJfSCAqLworCisvKgorICogVGhpcyBzZWN0aW9uIGFkZHMgdGhlIHJlbGV2YW50IGRlZmluaXRpb25zIGZyb20gZ2VuZXJpYy5oCisgKiAoYSBmaWxlIHdlIGRvbid0IGluY2x1ZGUgaGVyZSkKKyAqLworCisvKgorICogdWRwX2lucGNiIGxpc3Qgc3ltYm9sLCBlLmcuIGZvciBtaWJJSS91ZHBUYWJsZS5jCisgKi8KKyNkZWZpbmUgSU5QX05FWFRfU1lNQk9MIGlucF9uZXh0CisKKy8qCisgKiBUaGlzIHNlY3Rpb24gZGVmaW5lcyBNYWMgT1MgWCAxMC41IChhbmQgbGF0ZXIpIHNwZWNpZmljIGFkZGl0aW9ucy4KKyAqLworI2RlZmluZSBkYXJ3aW4gMTMKKyNpZm5kZWYgZGFyd2luMTMKKyMgICBkZWZpbmUgZGFyd2luMTMgZGFyd2luCisjZW5kaWYKKworLyoKKyAqIE1hYyBPUyBYIHNob3VsZCBvbmx5IHVzZSB0aGUgbW9kZXJuIEFQSSBhbmQgZGVmaW5pdGlvbnMuCisgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19MRUdBQ1lfREVGSU5JVElPTlMKKyNkZWZpbmUgTkVUU05NUF9OT19MRUdBQ1lfREVGSU5JVElPTlMgMQorI2VuZGlmCisKKy8qCisgKiBsb29rcyBsaWtlIHRoZSBJRlRhYmxlIHN0dWZmIHdvcmtzIGJldHRlciB0aGFuIHRoZSBtaWJJSSB2ZXJzaW9ucworICovCisgCisjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9JRlRBQkxFX1JFV1JJVEVTCisKKy8qCisgKiB1c2UgbmV3IGhvc3QgcmVzb3VyY2VzIGZpbGVzIGFzIHdlbGwKKyAqLworI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSE9TVF9SRVNPVVJDRVMKKyNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0hSU1dJTlNUX1JFV1JJVEVTCisjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9IUlNXUlVOX1JFV1JJVEVTCisjdW5kZWYgTkVUU05NUF9JTkNMVURFX0hSU1dSVU5fV1JJVEVfU1VQUE9SVAorI2RlZmluZSBORVRTTk1QX0NBTl9HRVRfRElTS19MQUJFTCAxCisKKy8qCisgKiBFbmFibGluZyB0aGlzIHJlc3RyaWN0cyB0aGUgY29tcGlsZXIgdG8gbW9zdGx5IHB1YmxpYyBBUElzLgorICovCisjaWZuZGVmIF9fQVBQTEVfQVBJX1NUUklDVF9DT05GT1JNQU5DRQorI2RlZmluZSBfX0FQUExFX0FQSV9TVFJJQ1RfQ09ORk9STUFOQ0UgMQorI2VuZGlmCisjaWZuZGVmIF9fQVBQTEVfQVBJX1VOU1RBQkxFCisjZGVmaW5lIF9fQVBQTEVfQVBJX1VOU1RBQkxFIDEKKyNlbmRpZgorCisvKgorICogRGFyd2luJ3MgdG9vbHMgYXJlIGNhcGFibGUgb2YgYnVpbGRpbmcgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcyBpbiBvbmUgcGFzcy4KKyAqIEFzIGEgcmVzdWx0LCBwbGF0Zm9ybSBkZWZpbml0aW9ucyBzaG91bGQgYmUgZGVmZXJyZWQgdW50aWwgY29tcGlsZSB0aW1lLgorICovCisjaWZkZWYgQllURV9PUkRFUgorIyB1bmRlZiBXT1JEU19CSUdFTkRJQU4KKyMgaWYgQllURV9PUkRFUiA9PSBCSUdfRU5ESUFOCisjICBkZWZpbmUgV09SRFNfQklHRU5ESUFOIDEKKyMgZW5kaWYKKyNlbmRpZgorCisvKgorICogQWx0aG91Z2ggRGFyd2luIGRvZXMgaGF2ZSBhbiBmc3RhYi5oIGZpbGUsIGdldGZzZmlsZSBldGMuIGFsd2F5cyByZXR1cm4gbnVsbC4KKyAqIEF0IGxlYXN0LCBhcyBvZiA1LjMuCisgKi8KKyN1bmRlZiBIQVZFX0ZTVEFCX0gKKworI2RlZmluZSBTV0FQRklMRV9ESVIgIi9wcml2YXRlL3Zhci92bSIKKyNkZWZpbmUgU1dBUEZJTEVfUFJFRklYICJzd2FwZmlsZSIKKworLyoKKyAqIFRoZXNlIGFwcGFyZW50bHkgdXNlZCB0byBiZSBpbiBuZXRpbmV0L3RjcF90aW1lcnMuaCwgYnV0IHdlbnQgYXdheSBpbgorICogMTAuNC4yLiBEZWZpbmUgdGhlbSBoZXJlIHRpbCB3ZSBmaW5kIG91dCBhIHdheSB0byBnZXQgdGhlIHJlYWwgdmFsdWVzLgorICovCisjZGVmaW5lIFRDUFRWX01JTiAgICAgICAoICAxKlBSX1NMT1dIWikgICAgICAgICAvKiBtaW5pbXVtIGFsbG93YWJsZSB2YWx1ZSAqLworI2RlZmluZSBUQ1BUVl9SRVhNVE1BWCAgKCA2NCpQUl9TTE9XSFopICAgICAgICAgLyogbWF4IGFsbG93YWJsZSBSRVhNVCB2YWx1ZSAqLworCisvKgorICogQmVjYXVzZSBNYWMgT1MgWCBpcyBidWlsdCBvbiBNYWNoLCBpdCBkb2VzIG5vdCBwcm92aWRlIGEgQlNELWNvbXBhdGlibGUKKyAqIFZNIHN0YXRpc3RpY3MgQVBJLgorICovCisjZGVmaW5lIFVTRV9NQUNIX0hPU1RfU1RBVElTVElDUyAxCisKKy8qCisgKiBUaGlzIHRlbGxzIGNvZGUgdGhhdCBtYW5pcHVsYXRlcyBJUHY2IHRoYXQgdGhlIHN0cnVjdHVyZXMgYXJlIHVuaWZpZWQsCisgKiBpLmUuLCBJUHY0IGFuZCBJUHY2IHVzZSB0aGUgc2FtZSBzdHJ1Y3RzLgorICogVGhpcyBzaG91bGQgZXZlbnR1YWxseSBiZSByZXBsYWNlZCB3aXRoIGEgY29uZmlndXJlIGRpcmVjdGl2ZS4KKyAqLworLyogI2RlZmluZSBVU0VfVU5JRklFRF9JUFY2X1NUUlVDVFMgMSAqLworI3VuZGVmIFNUUlVDVF9pbjZwY2JfSEFTX2lucF92ZmxhZworCisvKgorICogdXRpbGl0eSBtYWNybyB1c2VkIGluIHNldmVyYWwgZGFyd2luIHNwZWNpZmljIGZpbGVzCisgKi8KKyNkZWZpbmUgU05NUF9DRlJlbGVhc2UoeCkgZG8geyBpZiAoeCkgeyBDRlJlbGVhc2UoeCk7IHggPSBOVUxMOyB9IH0gd2hpbGUoMCkKKworLyoKKyAqIE1hYyBPUyBYIHJ1bnMgb24gYm90aCBQUEMgYW5kIEludGVsIGhhcmR3YXJlLAorICogICB3aGljaCBoYW5kbGUgdWRwVGFibGUgaW5kZXggdmFsdWVzIGRpZmZlcmVudGx5CisgKi8KKyNpbmNsdWRlIDxUYXJnZXRDb25kaXRpb25hbHMuaD4KKyNpZmRlZiBUQVJHRVRfUlRfTElUVExFX0VORElBTgorI2RlZmluZSBVRFBfQUREUkVTU0VTX0lOX0hPU1RfT1JERVIgMQorI2VuZGlmCisKKy8qCisgKiBhcyBvZiA3LzIwMTAsIG9wZW5zc2wgb24gZGFyd2luIGRvZXMgbm90IGhhdmUgc2hhMjU2CisgKi8KKyNkZWZpbmUgT1BFTlNTTF9OT19TSEEyNTYgMQorI2RlZmluZSBPUEVOU1NMX05PX1NIQTUxMiAxCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW43LmggYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW43LmgKaW5kZXggZjhmNTIxZS4uOGQ0NTU0ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luNy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjcuaApAQCAtMTMsOCArMTMsMyBAQAogI2RlZmluZSBTV0FQRklMRV9ESVIgIi9wcml2YXRlL3Zhci92bSIKICNkZWZpbmUgU1dBUEZJTEVfUFJFRklYICJzd2FwZmlsZSIKIAotLyoKLSAqIGFzIG9mIDcvMjAxMCwgb3BlbnNzbCBvbiBkYXJ3aW4gZG9lcyBub3QgaGF2ZSBzaGEyNTYKLSAqLwotI2RlZmluZSBPUEVOU1NMX05PX1NIQTI1NiAxCi0jZGVmaW5lIE9QRU5TU0xfTk9fU0hBNTEyIDEKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjguaCBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjguaAppbmRleCBjMzgyODNlLi4xZTZkN2QzIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW44LmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luOC5oCkBAIC02MywxNCArNjMsNiBAQAogI2VuZGlmCiAKIC8qCi0gKiBBbHRob3VnaCBEYXJ3aW4gZG9lcyBoYXZlIGEga3ZtLmggZmlsZSwga3ZtX29wZW5maWxlcyBldGMuIGFsd2F5cwotICogcmV0dXJuIG51bGwgYmVjYXVzZSAvZGV2L2ttZW0gd2FzIHJlbW92ZWQgaW4gT1MgWCAxMC40IGZvciBJbnRlbC4KLSAqLwotI3VuZGVmIEhBVkVfS1ZNX0gKLSN1bmRlZiBIQVZFX0tWTV9HRVRQUk9DUwotI3VuZGVmIEhBVkVfS1ZNX09QRU5GSUxFUwotCi0vKgogICogQWx0aG91Z2ggRGFyd2luIGRvZXMgaGF2ZSBhbiBmc3RhYi5oIGZpbGUsIGdldGZzZmlsZSBldGMuIGFsd2F5cyByZXR1cm4gbnVsbC4KICAqIEF0IGxlYXN0LCBhcyBvZiA1LjMuCiAgKi8KQEAgLTEwMCw4ICs5MiwzIEBACiAvKiAjZGVmaW5lIFVTRV9VTklGSUVEX0lQVjZfU1RSVUNUUyAxICovCiAjdW5kZWYgU1RSVUNUX2luNnBjYl9IQVNfaW5wX3ZmbGFnCiAKLS8qCi0gKiBhcyBvZiA3LzIwMTAsIG9wZW5zc2wgb24gZGFyd2luIGRvZXMgbm90IGhhdmUgc2hhMjU2Ci0gKi8KLSNkZWZpbmUgT1BFTlNTTF9OT19TSEEyNTYgMQotI2RlZmluZSBPUEVOU1NMX05PX1NIQTUxMiAxCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW45LmggYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW45LmgKaW5kZXggYmNiZDA2Ny4uYmYzZDJkYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luOS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjkuaApAQCAtOTIsMjUgKzkyLDYgQEAKICNlbmRpZgogCiAvKgotICogRGFyd2luJ3MgdG9vbHMgYXJlIGNhcGFibGUgb2YgYnVpbGRpbmcgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcyBpbiBvbmUgcGFzcy4KLSAqIEFzIGEgcmVzdWx0LCBwbGF0Zm9ybSBkZWZpbml0aW9ucyBzaG91bGQgYmUgZGVmZXJyZWQgdW50aWwgY29tcGlsZSB0aW1lLgotICovCi0jaWZkZWYgQllURV9PUkRFUgotIyB1bmRlZiBXT1JEU19CSUdFTkRJQU4KLSMgaWYgQllURV9PUkRFUiA9PSBCSUdfRU5ESUFOCi0jICBkZWZpbmUgV09SRFNfQklHRU5ESUFOIDEKLSMgZW5kaWYKLSNlbmRpZgotCi0vKgotICogQWx0aG91Z2ggRGFyd2luIGRvZXMgaGF2ZSBhIGt2bS5oIGZpbGUsIGt2bV9vcGVuZmlsZXMgZXRjLiBhbHdheXMKLSAqIHJldHVybiBudWxsIGJlY2F1c2UgL2Rldi9rbWVtIHdhcyByZW1vdmVkIGNvbXBsZXRlbHkgaW4gT1MgWCAxMC41LgotICovCi0jdW5kZWYgSEFWRV9LVk1fSAotI3VuZGVmIEhBVkVfS1ZNX0dFVFBST0NTCi0jdW5kZWYgSEFWRV9LVk1fT1BFTkZJTEVTCi0KLS8qCiAgKiBBbHRob3VnaCBEYXJ3aW4gZG9lcyBoYXZlIGFuIGZzdGFiLmggZmlsZSwgZ2V0ZnNmaWxlIGV0Yy4gYWx3YXlzIHJldHVybiBudWxsLgogICogQXQgbGVhc3QsIGFzIG9mIDUuMy4KICAqLwpAQCAtMTU0LDggKzEzNSwzIEBACiAjZGVmaW5lIFVEUF9BRERSRVNTRVNfSU5fSE9TVF9PUkRFUiAxCiAjZW5kaWYKIAotLyoKLSAqIGFzIG9mIDcvMjAxMCwgb3BlbnNzbCBvbiBkYXJ3aW4gZG9lcyBub3QgaGF2ZSBzaGEyNTYKLSAqLwotI2RlZmluZSBPUEVOU1NMX05PX1NIQTI1NiAxCi0jZGVmaW5lIE9QRU5TU0xfTk9fU0hBNTEyIDEKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCBiL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAppbmRleCAxODYyZTk5Li41ZTgwYTQ1IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC01NCw2ICs1NCwxOSBAQAogIyBlbmRpZgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKFdJTjMyKSAmJiAhZGVmaW5lZChjeWd3aW4pCit0eXBlZGVmIEhBTkRMRSBuZXRzbm1wX3BpZF90OworI2RlZmluZSBORVRTTk1QX05PX1NVQ0hfUFJPQ0VTUyBJTlZBTElEX0hBTkRMRV9WQUxVRQorI2Vsc2UKKy8qCisgKiBOb3RlOiBvbiBQT1NJWC1jb21wbGlhbnQgc3lzdGVtcywgcGlkX3QgaXMgZGVmaW5lZCBpbiA8c3lzL3R5cGVzLmg+LgorICogQW5kIGlmIHBpZF90IGhhcyBub3QgYmVlbiBkZWZpbmVkIGluIDxzeXMvdHlwZXMuaD4sIEFDX1RZUEVfUElEX1QgZW5zdXJlcworICogdGhhdCBhIHBpZF90IGRlZmluaXRpb24gaXMgcHJlc2VudCBpbiBuZXQtc25tcC1jb25maWcuaC4KKyAqLwordHlwZWRlZiBwaWRfdCBuZXRzbm1wX3BpZF90OworI2RlZmluZSBORVRTTk1QX05PX1NVQ0hfUFJPQ0VTUyAtMQorI2VuZGlmCisKICNpZiBIQVZFX05FVElORVRfSU5fSAogI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4JCS8qIEZvciBkZWZpbml0aW9uIG9mIGluX2FkZHJfdCAqLwogI2VuZGlmCmRpZmYgLS1naXQgYS9pbnN0YWxsLXNoIGIvaW5zdGFsbC1zaAppbmRleCBhNTg5N2RlLi4zZjgzY2U5IDEwMDc1NQotLS0gYS9pbnN0YWxsLXNoCisrKyBiL2luc3RhbGwtc2gKQEAgLTEsNyArMSw3IEBACiAjIS9iaW4vc2gKICMgaW5zdGFsbCAtIGluc3RhbGwgYSBwcm9ncmFtLCBzY3JpcHQsIG9yIGRhdGFmaWxlCiAKLXNjcmlwdHZlcnNpb249MjAwNi0xMi0yNS4wMAorc2NyaXB0dmVyc2lvbj0yMDEwLTAyLTA2LjE4OyAjIFVUQwogCiAjIFRoaXMgb3JpZ2luYXRlcyBmcm9tIFgxMVI1IChtaXQvdXRpbC9zY3JpcHRzL2luc3RhbGwuc2gpLCB3aGljaCB3YXMKICMgbGF0ZXIgcmVsZWFzZWQgaW4gWDExUjYgKHhjL2NvbmZpZy91dGlsL2luc3RhbGwuc2gpIHdpdGggdGhlCkBAIC0yMDAsNyArMjAwLDExIEBACiBmaQogCiBpZiB0ZXN0IC16ICIkZGlyX2FyZyI7IHRoZW4KLSAgdHJhcCAnKGV4aXQgJD8pOyBleGl0JyAxIDIgMTMgMTUKKyAgZG9fZXhpdD0nKGV4aXQgJHJldCk7IGV4aXQgJHJldCcKKyAgdHJhcCAicmV0PTEyOTsgJGRvX2V4aXQiIDEKKyAgdHJhcCAicmV0PTEzMDsgJGRvX2V4aXQiIDIKKyAgdHJhcCAicmV0PTE0MTsgJGRvX2V4aXQiIDEzCisgIHRyYXAgInJldD0xNDM7ICRkb19leGl0IiAxNQogCiAgICMgU2V0IHVtYXNrIHNvIGFzIG5vdCB0byBjcmVhdGUgdGVtcHMgd2l0aCB0b28tZ2VuZXJvdXMgbW9kZXMuCiAgICMgSG93ZXZlciwgJ3N0cmlwJyByZXF1aXJlcyBib3RoIHJlYWQgYW5kIHdyaXRlIGFjY2VzcyB0byB0ZW1wcy4KQEAgLTUxNSw1ICs1MTksNiBAQAogIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCiAjIHRpbWUtc3RhbXAtc3RhcnQ6ICJzY3JpcHR2ZXJzaW9uPSIKICMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkLiUwMkgiCi0jIHRpbWUtc3RhbXAtZW5kOiAiJCIKKyMgdGltZS1zdGFtcC10aW1lLXpvbmU6ICJVVEMiCisjIHRpbWUtc3RhbXAtZW5kOiAiOyAjIFVUQyIKICMgRW5kOgpkaWZmIC0tZ2l0IGEvbG9jYWwvTWFrZWZpbGUuaW4gYi9sb2NhbC9NYWtlZmlsZS5pbgppbmRleCBkZjgxZGIwLi5jYjg0YWZjIDEwMDY0NAotLS0gYS9sb2NhbC9NYWtlZmlsZS5pbgorKysgYi9sb2NhbC9NYWtlZmlsZS5pbgpAQCAtMTMwLDkgKzEzMCw5IEBACiAJICB0b3VjaCBmaXhwcm9jLm1hZGU7IFwKICAgICAgICAgZmkKIAotc25tcGNvbmYubWFkZTogJChzcmNkaXIpL3NubXBjb25mCitzbm1wY29uZi5tYWRlOiBzbm1wY29uZgogCWlmIHRlc3QgIngkKFBFUkwpIiAhPSAieCIgOyB0aGVuIFwKLQkgICQoUEVSTCkgLXAgLWUgJ3MlXiMhLiovcGVybC4qJSMhJChQRVJMKSU7IHMjL3Vzci9sb2NhbC9zaGFyZSMkKGRhdGFkaXIpI2c7IHMjL3Vzci9sb2NhbC9ldGMvc25tcCMkKFNOTVBDT05GUEFUSCkjZzsgcyMvdmFyL25ldC1zbm1wIyQoUEVSU0lTVEVOVF9ESVJFQ1RPUlkpI2cnICR7c3JjZGlyfS9zbm1wY29uZiA+IHNubXBjb25mLm1hZGU7IFwKKwkgICQoUEVSTCkgLXAgLWUgJ3MlXiMhLiovcGVybC4qJSMhJChQRVJMKSU7IHMjL3Vzci9sb2NhbC9zaGFyZSMkKGRhdGFkaXIpI2c7IHMjL3Vzci9sb2NhbC9ldGMvc25tcCMkKFNOTVBDT05GUEFUSCkjZzsgcyMvdmFyL25ldC1zbm1wIyQoUEVSU0lTVEVOVF9ESVJFQ1RPUlkpI2cnIHNubXBjb25mID4gc25tcGNvbmYubWFkZTsgXAogCWVsc2UgXAogCSAgdG91Y2ggc25tcGNvbmYubWFkZTsgXAogICAgICAgICBmaQpkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtc291cmNlLWluY2x1ZGVzLm0yaSBiL2xvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLXNvdXJjZS1pbmNsdWRlcy5tMmkKaW5kZXggYjJiNDI1ZS4uOTM0MWNmOSAxMDA2NDQKLS0tIGEvbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtc291cmNlLWluY2x1ZGVzLm0yaQorKysgYi9sb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1zb3VyY2UtaW5jbHVkZXMubTJpCkBAIC0xMCw2ICsxMCw3IEBACiAjIwogLyogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMtY29uZi5kL21mZC1pbnRlcmZhY2UubTJjIGIvbG9jYWwvbWliMmMtY29uZi5kL21mZC1pbnRlcmZhY2UubTJjCmluZGV4IDQyMzUxYzkuLmQ2NjZjOWEgMTAwNjQ0Ci0tLSBhL2xvY2FsL21pYjJjLWNvbmYuZC9tZmQtaW50ZXJmYWNlLm0yYworKysgYi9sb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyZmFjZS5tMmMKQEAgLTExOCw2ICsxMTgsMTAgQEAKIAogI2luY2x1ZGUgIiR7bmFtZX1faW50ZXJmYWNlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGJhYnlfc3RlcHMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyb3dfbWVyZ2UpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisKICNpbmNsdWRlIDxjdHlwZS5oPgogCiBAZXZhbCAkbTJjX3Byb2Nlc3NpbmdfdHlwZSA9ICdpJ0AKQEAgLTMyOCw3ICszMzIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2NvbnRleHR9X29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtjb250ZXh0fV9vaWRfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fQkFCWV9TVEVQIHwKLSNpZmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZCiAjZWxzZQogQGlmICRtMmNfdGFibGVfc2V0dGFibGUgPT0gMUAKQEAgLTMzNiw3ICszNDAsNyBAQAogQGVsc2VACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZCiBAZW5kQAotI2VuZGlmIC8qIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICBpZihOVUxMID09IHJlZ2luZm8pIHsKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgJHtjb250ZXh0fVxuIik7CkBAIC0zNTUsNyArMzU5LDcgQEAKICAgICBpZiggYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QgKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKICAgICAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogICAgIGlmKCBhY2Nlc3NfbXVsdGlwbGV4ZXItPnNldF92YWx1ZXMgKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CiAgICAgaWYoIGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCApCkBAIC0zNzgsNyArMzgyLDcgQEAKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CiAgICAgaWYoIGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQgKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fQ09NTUlUOwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogICAgIAogICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMtY29uZi5kL3N1YmFnZW50Lm0yYyBiL2xvY2FsL21pYjJjLWNvbmYuZC9zdWJhZ2VudC5tMmMKaW5kZXggNTJhODI1OC4uNjFmYzI2ZCAxMDA2NDQKLS0tIGEvbG9jYWwvbWliMmMtY29uZi5kL3N1YmFnZW50Lm0yYworKysgYi9sb2NhbC9taWIyYy1jb25mLmQvc3ViYWdlbnQubTJjCkBAIC0yNyw2ICsyNywxOCBAQAogQGluY2x1ZGUgZ2VuZXJpYy1zb3VyY2UtaW5jbHVkZXMubTJpQAogI2luY2x1ZGUgPHNpZ25hbC5oPgogCisvKgorICogSWYgY29tcGlsaW5nIHdpdGhpbiB0aGUgbmV0LXNubXAgc291cmNlIGNvZGUsIHRoaXMgd2lsbCB0cmlnZ2VyIHRoZSBmZWF0dXJlCisgKiBkZXRlY3Rpb24gbWVjaGFuc2ltIHRvIGVuc3VyZSB0aGUgYWdlbnRfY2hlY2tfYW5kX3Byb2Nlc3MoKSBmdW5jdGlvbgorICogaXMgbGVmdCBhdmFpbGFibGUgZXZlbiBpZiAtLWVuYWJsZS1taW5pbWlhbGlzdCBpcyB0dXJuZWQgb24uICBJZiB5b3UKKyAqIGhhdmUgY29uZmlndXJlZCBuZXQtc25tcCB1c2luZyAtLWVuYWJsZS1taW5pbWlhbGlzdCBhbmQgd2FudCB0byBjb21waWxlCisgKiB0aGlzIGNvZGUgZXh0ZXJuYWxseSB0byB0aGUgTmV0LVNOTVAgY29kZSBiYXNlLCB0aGVuIHBsZWFzZSBhZGQKKyAqIC0td2l0aC1mZWF0dXJlcz0iYWdlbnRfY2hlY2tfYW5kX3Byb2Nlc3MgZW5hYmxlX3N0ZGVycmxvZyIgdG8geW91cgorICogY29uZmlndXJlIGxpbmUuCisgKi8KK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGFnZW50X2NoZWNrX2FuZF9wcm9jZXNzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZW5hYmxlX3N0ZGVycmxvZykKKwogc3RhdGljIGludCBrZWVwX3J1bm5pbmc7CiAKIHN0YXRpYyBSRVRTSUdUWVBFCmRpZmYgLS1naXQgYS9sb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtY2hlY2sgYi9sb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtY2hlY2sKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWE0OTg3ZQotLS0gL2Rldi9udWxsCisrKyBiL2xvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1jaGVjawpAQCAtMCwwICsxLDEyNiBAQAorIyEvYmluL3NoCisKKyMKKyMgZmVhdHVyZS1jaGVjazogVGhpcyBzY3JpcHQgbG9va3MgZm9yIGZlYXR1cmUgc3RhdGVtZW50cyBpbiBhIGZpbGUgYnkKKyMgZXhlY3V0aW5nIGEgY29tcGlsZXIgdW5kZXIgQ1BQIGFuZCBleHRyYWN0aW5nIGxpbmVzIG9mIHRoZSBmb2xsb3dpbmcKKyMgZm9ybToKKyMKKyMgbmV0c25tcF9mZWF0dXJlX3Byb3ZpZGVzKGZvbyk6IHVzZWQgdG8gaW5kaWNhdGUgaXQgcHJvdmlkZXMgZmVhdHVyZSAiZm9vIgorIyBuZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShiYXIpOiB1c2VkIHRvIGluZGljYXRlIGl0IHJlcXVpcmVzIGZlYXR1cmUgImJhciIKKyMgbmV0c25tcF9mZWF0dXJlX3dhbnQoYmFyKTogdXNlZCB0byBpbmRpY2F0ZSBpdCB3YW50cyBmZWF0dXJlICJiYXIiCisjICAgICAgICAgICAgICAgICAgICAoYnV0IGNhbiBsaXZlIHdpdGhvdXQgaXQpCisjCisjIFVzaW5nIHRoZXNlIGxpbmVzIGl0IHRoZW4gZ2VuZXJhdGVzIGEgbGlzdCBvZiBmZWF0dXJlIHJlcXVpcmVtZW50CisjIGRlZmluZXMgaW4gImluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaCIgd2hpY2ggY2FuIHRoZW4gYmUKKyMgbG9hZGVkIGluIGxhdGVyIHBhc3NlcyBhdCBjb21waWxlIHRpbWUuCisjCisjIERlZmluZXMgcHJvZHVjZWQgd2hlbiBuZXRzbm1wX2ZlYXRyZV9yZXF1aXJlKGJhcikgaXMgcHJlc2VudDoKKyMgICAjZGVmaW5lIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX0JBUiAxCisjCisjIERlZmluZXMgcHJvZHVjZWQgd2hlbiBuZXRzbm1wX2ZlYXR1cmVfd2FudChiYXIpIGlzIHByZXNlbnQ6CisjICAgI2RlZmluZSBORVRTTk1QX0ZFQVRVUkVfV0FOVF9CQVIgMQorIworIyBBbmQgd2hlbiBhbGwgdGhlIGZlYXR1cmVzIGhhdmUgYmVlbiBjb2xsZWN0ZWQsIHRoZXkgYXJlIGFsc28gaW52ZXJ0ZWQgdmlhCisjIHRoZSBmZWF0dXJlLXBvc3QtY2hlY2sgc2NyaXB0OgorIworIyAgICNkZWZpbmUgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9CQVJYIDEgIC8qIG5ldmVyIHJlcXVpcmVkICovCisjICAgI3VuZGVmICBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0JBUiAgICAgIC8qIHJlcXVpcmVkICovCisKKyMgVXNhZ2U6CisKKyMgZmVhdHVyZS1jaGVjayBOT1JNQUwtQ09NUElMRS1MSU5FCisKK1NFRD1zZWQKK0dSRVA9Z3JlcAorQ0M9Z2NjCitSTT1ybQorCitpZiB0ZXN0ICJ4JDEiID0gIngtLWZlYXR1cmUtZ2xvYmFsIiA7IHRoZW4KKyAgICAjIGEgZ2xvYmFsIGZpbGUgc2hvdWxkIGJlIGluY2x1ZGVkCisgICAgc2hpZnQKKyAgICBnbG9iYWw9JDEKKyAgICBzaGlmdAorZmkKKworc291cmNlZGlyPSQxCitzaGlmdAorCitzb3VyY2U9JDEKK3NoaWZ0CisKK2Rlc3RpbmF0aW9uPSQxCitzaGlmdAorCit0bXBmPSIkZGVzdGluYXRpb24uMSIKKworY29tcGlsZWxpbmU9IiRAIgorJGNvbXBpbGVsaW5lICctRE5FVFNOTVBfRkVBVFVSRV9DSEVDS0lORz0xJyBcCisgICAgICAgICAgICAgJy1ETkVUU05NUF9NSU5JTUFMX0NPREU9MScgXAorICAgICAgICAgICAgICctRG5ldHNubXBfZmVhdHVyZV9yZXF1aXJlKFgpPVggTlNGX1JSJyBcCisgICAgICAgICAgICAgJy1EbmV0c25tcF9mZWF0dXJlX3Byb3ZpZGUoWCk9WCBOU0ZfUFAnIFwKKyAgICAgICAgICAgICAnLURuZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoWCxZKT1YLFkgTlNGX0NPJyBcCisgICAgICAgICAgICAgJy1EbmV0c25tcF9mZWF0dXJlX3dhbnQoWCk9WCBOU0ZfV1cnICRzb3VyY2UgfCBcCisgICAgJEdSRVAgTlNGXyB8ICRHUkVQIC12ICdeI2RlZmluZScgPiAkdG1wZgorCiskUk0gLWYgJGRlc3RpbmF0aW9uOwordG91Y2ggJGRlc3RpbmF0aW9uOworCisjIHByb2Nlc3MgcmVxdWlyZXMKK2ZpcnN0cmVxdWlyZT0xCitmb3IgaSBpbiBgZ3JlcCBOU0ZfUlIgJHRtcGYgfCBzZWQgJ3MvIE5TRl9SUi8vJ2AgOyBkbworICAgIGlmIHRlc3QgJGZpcnN0cmVxdWlyZSA9IDEgOyB0aGVuCisJZWNobyAiIiA+PiAkZGVzdGluYXRpb24KKwllY2hvICIvKiByZXF1aXJlZCBieSAkc291cmNlZGlyLyRzb3VyY2UgKi8iID4+ICRkZXN0aW5hdGlvbgorCWZpcnN0cmVxdWlyZT0wCisgICAgZmkKKyAgICB1cHBlcj1gZWNobyAkaSB8IHRyIGEteiBBLVpgCisgICAgZWNobyAiI2RlZmluZSBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV8kdXBwZXIgMSIgPj4gJGRlc3RpbmF0aW9uCitkb25lCisKKyMgcHJvY2VzcyBwcm92aWRlcworZmlyc3RmZWF0dXJlPTEKK2ZvciBpIGluIGBncmVwIE5TRl9QUCAkdG1wZiB8IHNlZCAncy8gTlNGX1BQLy8nYCA7IGRvCisgICAgaWYgdGVzdCAkZmlyc3RmZWF0dXJlID0gMSA7IHRoZW4KKwllY2hvICIiID4+ICRkZXN0aW5hdGlvbgorCWVjaG8gIi8qIGZlYXR1cmVzIHByb3ZpZGVkIGJ5ICRzb3VyY2VkaXIvJHNvdXJjZSAqLyIgPj4gJGRlc3RpbmF0aW9uCisJZmlyc3RmZWF0dXJlPTAKKyAgICBmaQorICAgIHVwcGVyPWBlY2hvICRpIHwgdHIgYS16IEEtWmAKKyAgICBlY2hvICIjZGVmaW5lIE5FVFNOTVBfRkVBVFVSRV9QUk9WSURFXyR1cHBlciAxIiA+PiAkZGVzdGluYXRpb24KK2RvbmUKKworIyBwcm9jZXNzIGNoaWxkcmVuCitmaXJzdGZlYXR1cmU9MQorZm9yIGkgaW4gYGdyZXAgTlNGX0NPICR0bXBmIHwgc2VkICdzLyBOU0ZfQ08vLydgIDsgZG8KKyAgICBwYXJlbnQ9YGVjaG8gJGkgfCBzZWQgJ3MvLiosLy8nYAorICAgIGNoaWxkPWBlY2hvICRpIHwgc2VkICdzLywuKi8vJ2AKKyAgICBpZiB0ZXN0ICRmaXJzdGZlYXR1cmUgPSAxIDsgdGhlbgorCWVjaG8gIiIgPj4gJGRlc3RpbmF0aW9uCisJZWNobyAiLyogZmVhdHVyZXMgcHJvdmlkZWQgYnkgJHNvdXJjZWRpci8kc291cmNlICovIiA+PiAkZGVzdGluYXRpb24KKwlmaXJzdGZlYXR1cmU9MAorICAgIGZpCisgICAgdXBwZXJjaGlsZD1gZWNobyAkY2hpbGQgfCB0ciBhLXogQS1aYAorICAgIHVwcGVycGFyZW50PWBlY2hvICRwYXJlbnQgfCB0ciBhLXogQS1aYAorICAgIGVjaG8gIiNkZWZpbmUgTkVUU05NUF9GRUFUVVJFXyR7dXBwZXJjaGlsZH1fQ0hJTERfT0ZfJHt1cHBlcnBhcmVudH0gMSIgPj4gJGRlc3RpbmF0aW9uCisgICAgZWNobyAiI2RlZmluZSBORVRTTk1QX0ZFQVRVUkVfUFJPVklERV8kdXBwZXJjaGlsZCAxIiA+PiAkZGVzdGluYXRpb24KK2RvbmUKKworIyBwcm9jZXNzIHdhbnRzCitmaXJzdGZlYXR1cmU9MQorZm9yIGkgaW4gYGdyZXAgTlNGX1dXICR0bXBmIHwgc2VkICdzLyBOU0ZfV1cvLydgIDsgZG8KKyAgICBpZiB0ZXN0ICRmaXJzdGZlYXR1cmUgPSAxIDsgdGhlbgorCWVjaG8gIiIgPj4gJGRlc3RpbmF0aW9uCisJZWNobyAiLyogZmVhdHVyZXMgd2FudGVkIGJ5ICRzb3VyY2VkaXIvJHNvdXJjZSAqLyIgPj4gJGRlc3RpbmF0aW9uCisJZmlyc3RmZWF0dXJlPTAKKyAgICBmaQorICAgIHVwcGVyPWBlY2hvICRpIHwgdHIgYS16IEEtWmAKKyAgICBlY2hvICIjZGVmaW5lIE5FVFNOTVBfRkVBVFVSRV9XQU5UXyR1cHBlciAxIiA+PiAkZGVzdGluYXRpb24KK2RvbmUKKworaWYgdGVzdCAieCRnbG9iYWwiICE9ICJ4IiA7IHRoZW4KKyAgICBjYXQgJGRlc3RpbmF0aW9uID4+ICRnbG9iYWwKK2ZpCisKKworIyBjbGVhbiB1cAorIyRSTSAtZiAkdG1wZgpkaWZmIC0tZ2l0IGEvbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzIGIvbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NjAxOTEKLS0tIC9kZXYvbnVsbAorKysgYi9sb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtbWFrZWRvY3MKQEAgLTAsMCArMSwyMjEgQEAKKyMhL3Vzci9iaW4vcGVybAorCit1c2Ugc3RyaWN0OwordXNlIElPOjpGaWxlOwordXNlIEdldG9wdDo6U3RkOworb3VyICVvcHRzID0gKFcgPT4gMik7CisKK2dldG9wdHMoJ29od1c6JywgXCVvcHRzKSB8fCB1c2FnZSgpOworCit1c2FnZSgpIGlmICgkb3B0c3snaCd9KTsKKwordXNhZ2UoKSBpZiAoJCNBUkdWICE9IDEpOworCisjIHNob3VsZCBiZSB0aGUgZmVhdHVyZS1kZXRhaWxzLmggZmlsZQorbXkgJGlucHV0ZmlsZSA9IHNoaWZ0IEBBUkdWOworbXkgJG91dHB1dGZpbGUgPSBzaGlmdCBAQVJHVjsKKworbXkgJWZlYXR1cmVzOworbXkgJXRvcDsKK215ICVmaWxlczsKK215ICRyZXFmaWxlOworCitnYXRoZXJfZGF0YSgkaW5wdXRmaWxlKTsKK2lmICgkb3B0c3sndyd9KSB7CisgICAgcHJpbnRfd2lraV9tb2RlKCRvdXRwdXRmaWxlKTsKK30gZWxzZSB7CisgICAgcHJpbnRfb3JnX21vZGUoJG91dHB1dGZpbGUpOworfQorCitzdWIgZ2F0aGVyX2RhdGEgeworICAgIG15ICgkaW5wdXRmaWxlKSA9IEBfOworCisgICAgb3BlbihJLCAkaW5wdXRmaWxlKTsKKyAgICB3aGlsZSg8ST4pIHsKKwlpZiAoLyhyZXF1aXJlZHxwcm92aWRlZHx3YW50ZWQpIGJ5ICguKikgXCovKSB7CisJICAgICRyZXFmaWxlID0gJDI7CisJfSBlbHNpZiAoL2RlZmluZSBORVRTTk1QX0ZFQVRVUkVfUFJPVklERV8oLiopIDEvKSB7CisJICAgIG15ICRsYyA9IGxjKCQxKTsKKwkgICAgZGllICJubyByZXFmaWxlIGN1cnJlbnRseSBzZXQ7IGJ1ZyEiIGlmICghZGVmaW5lZCgkcmVxZmlsZSkpOworCisJICAgIGFkZCgkbGMpOworCisJICAgIHB1c2ggQHskZmlsZXN7JHJlcWZpbGV9eydwcm92aWRlcyd9fSwgJGxjOworCSAgICBwdXNoIEB7JGZlYXR1cmVzeyRsY317J3Byb3ZpZGVkYnknfX0sICRyZXFmaWxlOworCisJfSBlbHNpZiAoL2RlZmluZSBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV8oLiopIDEvKSB7CisJICAgIG15ICRsYyA9IGxjKCQxKTsKKwkgICAgZGllICJubyByZXFmaWxlIGN1cnJlbnRseSBzZXQ7IGJ1ZyEiIGlmICghZGVmaW5lZCgkcmVxZmlsZSkpOworCisJICAgIGFkZCgkbGMpOworCisJICAgIHB1c2ggQHskZmlsZXN7JHJlcWZpbGV9eydyZXF1aXJlcyd9fSwgJGxjOworCSAgICBwdXNoIEB7JGZlYXR1cmVzeyRsY317J3JlcXVpcmVkYnknfX0sICRyZXFmaWxlOworCisJfSBlbHNpZiAoL2RlZmluZSBORVRTTk1QX0ZFQVRVUkVfV0FOVF8oLiopIDEvKSB7CisJICAgIG15ICRsYyA9IGxjKCQxKTsKKwkgICAgZGllICJubyByZXFmaWxlIGN1cnJlbnRseSBzZXQ7IGJ1ZyEiIGlmICghZGVmaW5lZCgkcmVxZmlsZSkpOworCisJICAgIGFkZCgkbGMpOworCisJICAgIHB1c2ggQHskZmlsZXN7JHJlcWZpbGV9eyd3YW50cyd9fSwgJGxjOworCSAgICBwdXNoIEB7JGZlYXR1cmVzeyRsY317J3dhbnRlZGJ5J319LCAkcmVxZmlsZTsKKwl9IGVsc2lmICgvZGVmaW5lIE5FVFNOTVBfRkVBVFVSRV8oLiopX0NISUxEX09GXyguKikgMS8pIHsKKwkgICAgbXkgJGNoaWxkID0gbGMoJDEpOworCSAgICBteSAkcGFyZW50ID0gbGMoJDIpOworCisJICAgIGFkZF9jaGlsZCgkY2hpbGQsICRwYXJlbnQpOworCX0KKyAgICB9Cit9CisKK3N1YiBhZGQgeworICAgIG15ICgkbmFtZSkgPSBAXzsKKyAgICBpZiAoIWV4aXN0cygkZmVhdHVyZXN7JG5hbWV9KSkgeworCSMgbmV3IGZlYXR1cmUgZW50aXJlbHksIG1hcmsgaXQgYXMgYSB0b3Agbm9kZQorCSR0b3B7JG5hbWV9ID0gMTsKKyAgICB9Cit9CisKK3N1YiBhZGRfY2hpbGQgeworICAgIG15ICgkY2hpbGQsICRwYXJlbnQpID0gQF87CisKKyAgICBhZGQoJHBhcmVudCk7CisKKyAgICBpZiAoZXhpc3RzKCR0b3B7JGNoaWxkfSkpIHsKKwkjIGl0J3Mgbm8gbG9uZ2VyIGEgdG9wIG5vZGUgaWYgaXQncyBhIGNoaWxkIG9mIHNvbWV0aGluZyBlbHNlCisJZGVsZXRlICR0b3B7JGNoaWxkfTsKKyAgICB9CisgICAgJGZlYXR1cmVzeyRwYXJlbnR9eydjaGlsZHJlbid9eyRjaGlsZH0rKzsKKworICAgICRmZWF0dXJlc3skY2hpbGR9eydwcm92aWRlZGJ5J30sICRyZXFmaWxlOworfQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIG9yZy1tb2RlIG91dHB1dAorIworc3ViIHByaW50X29yZ19tb2RlIHsKKyAgICBteSAoJG91dHB1dGZpbGUpID0gQF87CisKKyAgICBteSAkZmggPSBuZXcgSU86OkZpbGU7CisKKyAgICBpZiAoISRmaC0+b3BlbigiPiAkb3V0cHV0ZmlsZSIpKSB7CisJZGllICJlcnJvciFcbiI7CisgICAgfQorCisgICAgZm9yZWFjaCBteSAkbm9kZSAoc29ydCBrZXlzKCV0b3ApKSB7CisJcHJpbnRfb3JnX25vZGUoJGZoLCAkbm9kZSwgIioiKTsKKyAgICB9Cit9CisKK3N1YiBwcmludF9vcmdfbm9kZSB7CisgICAgbXkgKCRmaCwgJG5vZGUsICRwcmVmaXgpID0gQF87CisKKyAgICBteSAkc3BhY2VzID0gJHByZWZpeDsKKyAgICAkc3BhY2VzID1+IHMvLi8gL2c7CisKKyAgICBwcmludCAkZmggIiRwcmVmaXggJG5vZGVcbiI7CisgICAgaWYgKGV4aXN0cygkZmVhdHVyZXN7JG5vZGV9eydwcm92aWRlZGJ5J30pKSB7CisJcHJpbnQgJGZoICIkc3BhY2VzICsgcHJvdmlkZWQgaW4gZmlsZTogIiAuCisJICAgIGpvaW4oIiwgIiwgb3JnX2xpbmtfZmlsZXMoQHskZmVhdHVyZXN7JG5vZGV9eydwcm92aWRlZGJ5J319KSkgLiAiXG4iOworICAgIH0KKyAgICBpZiAoZXhpc3RzKCRmZWF0dXJlc3skbm9kZX17J3JlcXVpcmVkYnknfSkpIHsKKwlwcmludCAkZmggIiRzcGFjZXMgKyByZXF1aXJlZCBpbiBmaWxlOiAiIC4KKwkgICAgam9pbigiLCAiLCBvcmdfbGlua19maWxlcyhAeyRmZWF0dXJlc3skbm9kZX17J3JlcXVpcmVkYnknfX0pKSAuICJcbiI7CisgICAgfQorICAgIGlmIChleGlzdHMoJGZlYXR1cmVzeyRub2RlfXsnd2FudGVkYnknfSkpIHsKKwlwcmludCAkZmggIiRzcGFjZXMgKyB3YW50ZWQgaW4gZmlsZTogIiAuCisJICAgIGpvaW4oIiwgIiwgb3JnX2xpbmtfZmlsZXMoQHskZmVhdHVyZXN7JG5vZGV9eyd3YW50ZWRieSd9fSkpIC4gIlxuIjsKKyAgICB9CisgICAgaWYgKGV4aXN0cygkZmVhdHVyZXN7JG5vZGV9eydjaGlsZHJlbid9KSkgeworCWZvcmVhY2ggbXkgJGNoaWxkIChzb3J0IGtleXMoJXskZmVhdHVyZXN7JG5vZGV9eydjaGlsZHJlbid9fSkpIHsKKwkgICAgcHJpbnRfb3JnX25vZGUoJGZoLCAkY2hpbGQsICRwcmVmaXggLiAiKiIpOworCX0KKyAgICB9Cit9CisKK3N1YiBvcmdfbGlua19maWxlcyB7CisgICAgbXkgQGZpbGVzID0gQF87CisgICAgbWFwIHsgJF8gPSAiW1tmaWxlOiRfXVskX11dIjsgfSBAZmlsZXM7CisgICAgcmV0dXJuIEBmaWxlczsKK30KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyB3aWtpIG91dHB1dAorIworc3ViIHByaW50X3dpa2lfbW9kZSB7CisgICAgbXkgKCRvdXRwdXRmaWxlKSA9IEBfOworCisgICAgbXkgJGZoID0gbmV3IElPOjpGaWxlOworICAgIG15ICRkZXB0aCA9IDA7CisKKyAgICBpZiAoISRmaC0+b3BlbigiPiAkb3V0cHV0ZmlsZSIpKSB7CisJZGllICJlcnJvciFcbiI7CisgICAgfQorCisgICAgcHJpbnQgJGZoICInJydUaGUgY29udGVudHMgb2YgdGhpcyBwYWdlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzOyBkbyBub3QgZWRpdCBieSBoYW5kIChjaGFuZ2VzIHdpbGwgYmUgbG9zdCknJydcblxuIjsKKyAgICBwcmludCAkZmggIkRldGFpbHMgb2YgdGhlIGZlYXR1cmUgbWFya2luZyBzeXN0ZW0gYW5kIGhvdyBpdCBpcyB1c2VkIGNhbiBiZSBmb3VuZCBhdCBbW0ZlYXR1cmUgTWFya2luZyBhbmQgU2VsZWN0aW9uXV1cblxuIjsKKworICAgIGZvcmVhY2ggbXkgJG5vZGUgKHNvcnQga2V5cygldG9wKSkgeworCXByaW50X3dpa2lfbm9kZSgkZmgsICRub2RlLCAkZGVwdGgrMSk7CisgICAgfQorfQorCitzdWIgcHJpbnRfd2lraV9ub2RlIHsKKyAgICBteSAoJGZoLCAkbm9kZSwgJGRlcHRoKSA9IEBfOworCisgICAgbXkgJGRhdGFoZWFkZXI7CisgICAgbXkgJGRlcHRoaW5jcmVhc2UgPSAxOworCisgICAgaWYgKCRkZXB0aCA+ICRvcHRzeydXJ30pIHsKKwlwcmludCAkZmggIioiIHggKCRkZXB0aCAtICRvcHRzeydXJ30gKyAxKSAuICIgJG5vZGVcbiI7CisJJGRhdGFoZWFkZXIgPSAiKiIgeCAoJGRlcHRoIC0gJG9wdHN7J1cnfSArIDIpOworCSRkZXB0aGluY3JlYXNlKys7CisgICAgfSBlbHNlIHsKKwlwcmludCAkZmggIj0iIHggJGRlcHRoIC4gIiAkbm9kZSAiIC4gIj0iIHggJGRlcHRoIC4gIlxuIjsKKwkkZGF0YWhlYWRlciA9ICIqIjsKKyAgICB9CisKKyAgICBpZiAoZXhpc3RzKCRmZWF0dXJlc3skbm9kZX17J3Byb3ZpZGVkYnknfSkpIHsKKwlwcmludCAkZmggIiRkYXRhaGVhZGVyIHByb3ZpZGVkIGluIGZpbGU6ICIgLgorCSAgICBqb2luKCIsICIsIHdpa2lfbGlua19maWxlcyhAeyRmZWF0dXJlc3skbm9kZX17J3Byb3ZpZGVkYnknfX0pKSAuIlxuIjsKKyAgICB9CisgICAgaWYgKGV4aXN0cygkZmVhdHVyZXN7JG5vZGV9eydyZXF1aXJlZGJ5J30pKSB7CisJcHJpbnQgJGZoICIkZGF0YWhlYWRlciByZXF1aXJlZCBpbiBmaWxlOiAiIC4KKwkgICAgam9pbigiLCAiLCB3aWtpX2xpbmtfZmlsZXMoQHskZmVhdHVyZXN7JG5vZGV9eydyZXF1aXJlZGJ5J319KSkgLiJcbiI7CisgICAgfQorICAgIGlmIChleGlzdHMoJGZlYXR1cmVzeyRub2RlfXsnd2FudGVkYnknfSkpIHsKKwlwcmludCAkZmggIiRkYXRhaGVhZGVyIHdhbnRlZCBpbiBmaWxlOiAiIC4KKwkgICAgam9pbigiLCAiLCB3aWtpX2xpbmtfZmlsZXMoQHskZmVhdHVyZXN7JG5vZGV9eyd3YW50ZWRieSd9fSkpIC4gIlxuIjsKKyAgICB9CisgICAgaWYgKGV4aXN0cygkZmVhdHVyZXN7JG5vZGV9eydjaGlsZHJlbid9KSkgeworCWlmICgkZGVwdGggPj0gJG9wdHN7J1cnfSkgeworCSAgICBwcmludCAkZmggIiRkYXRhaGVhZGVyIENoaWxkcmVuOlxuIjsKKwl9CisJZm9yZWFjaCBteSAkY2hpbGQgKHNvcnQga2V5cygleyRmZWF0dXJlc3skbm9kZX17J2NoaWxkcmVuJ319KSkgeworCSAgICBwcmludF93aWtpX25vZGUoJGZoLCAkY2hpbGQsICRkZXB0aCArICRkZXB0aGluY3JlYXNlKTsKKwl9CisgICAgfQorfQorCitzdWIgd2lraV9saW5rX2ZpbGVzIHsKKyAgICBteSBAZmlsZXMgPSBAXzsKKyAgICBtYXAgeyAkXyA9ICJbaHR0cDovL25ldC1zbm1wLnN2bi5zb3VyY2Vmb3JnZS5uZXQvdmlld3ZjL25ldC1zbm1wL3RydW5rL25ldC1zbm1wLyRfP3ZpZXc9bWFya3VwICRfXSI7IH0gQGZpbGVzOworICAgIHJldHVybiBAZmlsZXM7Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgaGVscCBvdXRwdXQKKyMKK3N1YiB1c2FnZSB7CisgICAgcHJpbnQgIlVzYWdlOiAkMCBbRkxBR1NdIElOUFVURklMRSBPVVRQVVRGSUxFXG5cbiI7CisgICAgcHJpbnQgIkZMQUdTOlxuIjsKKyAgICBwcmludCAiXHQtaFx0aGVscFxuIjsKKyAgICBwcmludCAiXHQtb1x0T3V0cHV0IHN0eWxlOiBPcmctTW9kZSBbZGVmYXVsdF1cbiI7CisgICAgcHJpbnQgIlx0LXdcdE91dHB1dCBzdHlsZTogd2lraVxuIjsKKyAgICBwcmludCAiXHQtVyBERVBUSFx0V2lraSBoZWFkZXIgdG8gYnVsbGV0IGxpc3QgZGVwdGggKGRlZmF1bHQgMilcbiI7CisgICAgcHJpbnQgIlxuSU5QVVQvT1VUUFVUXG4iOworICAgIHByaW50ICJcdElOUFVURklMRTpcdGxvY2F0aW9uIG9mIHRoZSBpbmNsdWRlL25ldC1zbm1wL2ZlYXR1cmUtZGV0YWlscy5oIGZpbGVcbiI7CisgICAgcHJpbnQgIlx0T1VUUFVURklMRTpcdHRoZSBmaWxlIHRvIHdyaXRlIHRoZSByZXN1bHRzIHRvXG4iOworICAgIGV4aXQ7Cit9CmRpZmYgLS1naXQgYS9sb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtcmVtb3ZlIGIvbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLXJlbW92ZQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hYWUzNDBkCi0tLSAvZGV2L251bGwKKysrIGIvbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLXJlbW92ZQpAQCAtMCwwICsxLDEyOCBAQAorIyEvYmluL3NoCisKKyMKKyMgZmVhdHVyZS1yZW1vdmU6IHJlbW92ZXMgZmVhdHVyZXMgYnkgZGVmaW5pbmcgc3BlY2lhbCB2YXJpYWJsZXMKKyMgaW5kaWNhdGluZyBwYXJ0aWN1bGFyIGNvZGUgc2VnbWVudHMgYXJlIHVubmVlZGVkLiAgVGhpcyBpcyBkb25lIGJ5CisjIGV4YW1pbmluZyB0aGUgbGlzdCBvZiBwcm92aWRlZCBmZWF0dXJlcyBhbmQgZGVmaW5pbmcgYSBSRU1PVkUKKyMgZXF1aXZhbGVudCBpZiBubyBvdGhlciBtb2R1bGUgcmVxdWlyZWQgaXQuCisjCisjIEFyZ3VtZW50czoKKyMgICBmZWF0dXJlLXJlbW92ZSBtYWluaGVhZGVyLmggZ2xvYmFsaGVhZGVyLmggVEhFUkVTVAorIworIyBXaGVyZSBUSEVSRVNUIGFyZSBhIGxpc3Qgb2YgZmVhdHVyZXMgdG8gcmVtb3ZlIChkZWZhdWx0KSBvciBhZGQuCisjCisjICAgLS1hZGQgc3dpdGNoZXMgdG8gImFkZGluZyIgYW5kIC0tcmVtb3ZlIHN3aXRjaGVzIGJhY2suCisjCisjIEUuRy4KKyMgICBmZWF0dXJlLXJlbW92ZSBtYWluaGVhZGVyLmggZ2xvYmFsaGVhZGVyLmggb2lkX3N0YXNoIC0tYWRkIGNvbnRhaW5lcl9udWxsCisjCitDUD1jcAorCitmZWF0dXJlaGVhZGVyPSIkMSIKK2ZlYXR1cmVoZWFkZXJpbj0iJDEuaW4iCitmZWF0dXJlaGVhZGVyZ2xvYmFsPSIkMiIKK3NoaWZ0CitzaGlmdAorCithcmd1bWVudHR5cGU9Ii0tcmVtb3ZlIgorcmVtb3ZldGhlc2U9IiIKK2FkZHRoZXNlPSIiCisKK3doaWxlIHRlc3QgIngkMSIgIT0gIngiIDsgZG8KKyAgICB1Yz1gZWNobyAkMSB8IHRyIGEteiBBLVpgCisgICAgY2FzZSAkMSBpbgorCS0tKikKKwkgICAgYXJndW1lbnR0eXBlPSIkMSIKKwkgICAgOzsKKworCSopCisJICAgIGlmIHRlc3QgIngkYXJndW1lbnR0eXBlIiA9ICJ4LS1yZW1vdmUiIDsgdGhlbgorCQlyZW1vdmV0aGVzZT0iJHJlbW92ZXRoZXNlICR1YyIKKwkgICAgZWxzZQorCQlhZGR0aGVzZT0iJGFkZHRoZXNlICR1YyIKKwkgICAgZmkKKwkgICAgOzsKKyAgICBlc2FjCisgICAgc2hpZnQKK2RvbmUKKworZWNobyAiIiA+ICRmZWF0dXJlaGVhZGVyCitlY2hvICIvKiBUaGUgZm9sbG93aW5nIGRlZmluZXMgZmVhdHVyZXMgdGhhdCBOZXQtU05NUCBIQVMgb3IgaGFzIFJFTU9WRWQgKi8iID4+ICRmZWF0dXJlaGVhZGVyCisKK2hhc2xpc3Q9IiAiCisKK2ZvciBpIGluIGBncmVwIE5FVFNOTVBfRkVBVFVSRV9QUk9WSURFXyAkZmVhdHVyZWhlYWRlcmluIHwgc2VkICdzLy4qRkVBVFVSRV9QUk9WSURFXy8vO3MvIC4qLy8nYCA7IGRvCisgICAgIworICAgICMgSWYgd2Ugd2VyZSBzcGVjaWZpY2FsbHkgYXNrZWQgdG8gaW5jbHVkZSBpdCwgdGhlbiBkbyBzbworICAgICMKKyAgICBpZiBlY2hvICIgJGFkZHRoZXNlICIgfCBncmVwICIgJHtpfSAiID4gL2Rldi9udWxsIDsgdGhlbgorICAgICAgICMgVGhlIHVzZXIgcmVxdWlyZWQgaXQgOyByZXBvcnQgd2UncmUgdXNpbmcgaXQKKwllY2hvICIjZGVmaW5lIE5FVFNOTVBfRkVBVFVSRV9IQVNfJGkgMSIgPj4gJGZlYXR1cmVoZWFkZXIKKwloYXNsaXN0PSIke2hhc2xpc3R9JHtpfSAiCisKKyAgICAjCisgICAgIyBjaGVjayB0byBzZWUgaWYgc29tZXRoaW5nIHJlcXVyaWVkIGl0CisgICAgIworICAgIGVsaWYgZ3JlcCAiTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfJHtpfSAiICRmZWF0dXJlaGVhZGVyZ2xvYmFsID4gL2Rldi9udWxsIDsgdGhlbgorCSMgaWYgc28sIG1ha2Ugc3VyZSB3ZSB3ZXJlbid0IGFza2VkIHRvIHJlbW92ZSBpdAorICAgICAgIAlpZiBlY2hvICAiICRyZW1vdmV0aGVzZSAifCBncmVwICIgJGkgIiA+IC9kZXYvbnVsbCA7IHRoZW4KKyAgICAgICAJICAgIyBVaCBvaDsgdGhleSBzcGVjaWZpY2FsbHkgd2FudGVkIGl0IHJlbW92ZWQgYnV0IGl0IHdhcyByZXF1aXJlZAorCSAgIGVjaG8gIkZlYXR1cmUgRXJyb3I6IgorICAgICAgIAkgICBlY2hvICIgRmVhdHVyZSAnJGknIHdhcyBhc2tlZCB0byBiZSByZW1vdmVkIGJ1dCBzb21ldGhpbmcgcmVxdWlyZWQgaXQiCisgICAgICAgCSAgIGVjaG8gIiBTZWUgdGhlICRmZWF0dXJlaGVhZGVyZ2xvYmFsIGZpbGUgZm9yIGRlcGVuZGVuY3kgZGV0YWlscyIKKwkgICBlY2hvICIiCisgICAgICAgICAgIHJtIC1mICRmZWF0dXJlaGVhZGVyCisgICAgICAgCSAgIGV4aXQgMQorICAgICAgIAlmaQorCisgICAgICAgCSMgc29tZXRoaW5nIHJlcXVpcmVkIGl0IDsgcmVwb3J0IHdlJ3JlIHVzaW5nIGl0CisgICAgICAgCWVjaG8gIiNkZWZpbmUgTkVUU05NUF9GRUFUVVJFX0hBU18kaSAxIiA+PiAkZmVhdHVyZWhlYWRlcgorCWhhc2xpc3Q9IiR7aGFzbGlzdH0ke2l9ICIKKworICAgICMKKyAgICAjIGNoZWNrIHRvIHNlZSBpZiBzb21ldGhpbmcgIndhbnRlZCIgaXQKKyAgICAjCisgICAgZWxpZiBncmVwICJORVRTTk1QX0ZFQVRVUkVfV0FOVF8ke2l9ICIgJGZlYXR1cmVoZWFkZXJnbG9iYWwgPiAvZGV2L251bGwgOyB0aGVuCisJICAgIyBub3RoaW5nIHJlcXVpcmVkIGl0LCBidXQgc29tZXRoaW5nICJ3YW50ZWQiIGl0CisKKwkgICAjIGNoZWNrIHRvIG1ha2Ugc3VyZSB3ZSB3ZXJlbid0IGFza2VkIHRvIGV4Y2x1ZGUgaXQKKyAgICAgICAgICAgaWYgZWNobyAiICRyZW1vdmV0aGVzZSAiIHwgZ3JlcCAiICRpICIgPiAvZGV2L251bGwgOyB0aGVuCisgICAgICAgICAgICAgICAjIHdlIHdlcmUgc3BlY2lmaWNhbGx5IGFza2VkICpub3QqIHRvIHVzZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgICAgICAgIGVjaG8gIiNkZWZpbmUgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV8kaSAxIiA+PiAkZmVhdHVyZWhlYWRlcgorICAgICAgICAgICBlbHNlCisJICAgICAgICMgc29tZXRoaW5nIHdhbnRlZCBpdCwgc28gd2UnbGwgaW5jbHVkZSBpdAorCSAgICAgICBlY2hvICIjZGVmaW5lIE5FVFNOTVBfRkVBVFVSRV9IQVNfJGkgMSIgPj4gJGZlYXR1cmVoZWFkZXIKKwkgICAgICAgaGFzbGlzdD0iJHtoYXNsaXN0fSR7aX0gIgorICAgICAgICAgICBmaQorCisKKyAgICAjCisgICAgIyBjaGVjayB0byBzZWUgaWYgc29tZXRoaW5nIHJlcXVpcmVkIGEgcGFyZW50CisgICAgIworICAgIGVsaWYgZWdyZXAgTkVUU05NUF9GRUFUVVJFXyR7aX1fQ0hJTERfT0YgJGZlYXR1cmVoZWFkZXJnbG9iYWwgPiAvZGV2L251bGwgOyB0aGVuCisJcGFyZW50bmFtZXM9YGVncmVwIE5FVFNOTVBfRkVBVFVSRV8ke2l9X0NISUxEX09GICRmZWF0dXJlaGVhZGVyZ2xvYmFsIHwgc2VkICdzLy4qQ0hJTERfT0ZfLy87cy8gLiovLzsnYAorCisJZm91bmRvbmU9MAorCWZvciBwYXJlbnRuYW1lIGluICRwYXJlbnRuYW1lcyA7IGRvCisgICAJICAgICMgaWYgdGhlIHBhcmVudCB3YXMgZGVzaXJlZCwgdGhlbiB3ZSBhcmUgdG9vOgorCSAgICAKKwkgICAgaWYgdGVzdCAkZm91bmRvbmUgPSAwIDsgdGhlbgorCQlpZiBlZ3JlcCAiTkVUU05NUF9GRUFUVVJFX0hBU18ke3BhcmVudG5hbWV9ICIgJGZlYXR1cmVoZWFkZXIgPiAvZGV2L251bGwgOyB0aGVuCisgICAgICAgCQkgICAgZWNobyAiI2RlZmluZSBORVRTTk1QX0ZFQVRVUkVfSEFTXyRpIDEiID4+ICRmZWF0dXJlaGVhZGVyCisJCSAgICBoYXNsaXN0PSIke2hhc2xpc3R9JHtpfSAiCisJCSAgICBmb3VuZG9uZT0xCisJCWZpCisJICAgIGZpCisgICAgICAgIGRvbmUKKwlpZiB0ZXN0ICRmb3VuZG9uZSA9IDAgOyB0aGVuCisgICAgCSAgICBlY2hvICIjZGVmaW5lIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfJGkgMSIgPj4gJGZlYXR1cmVoZWFkZXIKKwlmaQorCisgICAgIworICAgICMgbm8gb25lIHJlcXVpcmVkIG9yIHdhbnRlZCBpdCAtLSBpdCBpcyBzYWZlIHRvIHJlbW92ZSBpdAorICAgICMKKyAgICBlbHNlCisgICAgCSBlY2hvICIjZGVmaW5lIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfJGkgMSIgPj4gJGZlYXR1cmVoZWFkZXIKKyAgICBmaQorZG9uZQorCmRpZmYgLS1naXQgYS9sb2NhbC9taW5pbWFsaXN0L2ZpbmQtdW51c2VkLWNvZGUgYi9sb2NhbC9taW5pbWFsaXN0L2ZpbmQtdW51c2VkLWNvZGUKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODllM2M4YwotLS0gL2Rldi9udWxsCisrKyBiL2xvY2FsL21pbmltYWxpc3QvZmluZC11bnVzZWQtY29kZQpAQCAtMCwwICsxLDExNyBAQAorIyEvdXNyL2Jpbi9wZXJsCisKKyMgc2VhcmNoZXMgZm9yIC5vIGZpbGVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBhbmQgZXhhbWluZXMgZWFjaCBmb3IKKyMgZGVmaW5lZCBmdW5jdGlvbnMgKFQpIGFuZCB1bmRlZmluZWQgcmVmZXJlbmNlcyAoVSkgYW5kIGxpc3RzCisjIGFueXRoaW5nIHRoYXQgaXNuJ3QgcmVxdWlyZWQgYnkgc29tZXRoaW5nIGVsc2Ugb3IgaXRzZWxmCisKKyMgdXNlZnVsIGNhbGxpbmcgc29ydGVkIGJ5IGZpbGU6CisjICAgcGVybCBtaW5pbWFsL2ZpbmQtdW51c2VkLWNvZGUgfCBzb3J0IAorCit1c2UgRmlsZTo6RmluZDsKK3VzZSBEYXRhOjpEdW1wZXI7Cit1c2Ugc3RyaWN0OwordXNlIEdldG9wdDo6R1VJOjpMb25nOworCitteSAlb3B0czsKKworTG9jYWxHZXRPcHRpb25zKFwlb3B0cywKKwkJWydnfGdyZXAnLCAgICAgICJydW4gZmluZC9ncmVwIHRvIGxvb2sgZm9yIHN0cmluZyB1c2FnZXMiXSwKKyAgICApOworCitteSAoQGZpbGVzLCAlZGVmaW5lZCwgJWxvb2tpbmdmb3IpOworCitmaW5kKFwmZG90X29zLCAiLiIpOworCitmb3JlYWNoIG15ICRmaWxlIChAZmlsZXMpIHsKKyAgICBjb2xsZWN0X2Zyb21fZmlsZSgkZmlsZSk7Cit9CisKKworaWYgKCQjQVJHViA+IC0xKSB7CisgICAgcHJpbnQgIkR1bXBpbmcgZm91bmQgc3ltYm9sIHVzYWdlczpcblxuIjsKKyAgICBmb3JlYWNoIG15ICRhcmcgKEBBUkdWKSB7CisJcHJpbnQgIiRhcmc6XG4iOworCXByaW50ICIgICIsIGpvaW4oIlxuICAiLCBAeyRkZWZpbmVkeyRhcmd9eyd1c2FnZXMnfX0pLCJcblxuIjsKKyAgICB9CisgICAgZXhpdDsKK30KKworZm9yZWFjaCBteSAkZnVuY3Rpb24gKHNvcnQgeyAkZGVmaW5lZHskYX17J3NvdXJjZSd9IGNtcCAkZGVmaW5lZHskYn17J3NvdXJjZSd9IH0ga2V5cyglZGVmaW5lZCkpIHsKKyAgICBpZiAoZXhpc3RzKCRkZWZpbmVkeyRmdW5jdGlvbn17J3NvdXJjZSd9KSAmJgorCSFleGlzdHMoJGRlZmluZWR7JGZ1bmN0aW9ufXsndXNhZ2VzJ30pKSB7CisJaWYgKGNoZWNrX2Zvcl9vbmNlX29ubHkoJGRlZmluZWR7JGZ1bmN0aW9ufXsnc291cmNlJ30sICRmdW5jdGlvbikpIHsKKwkgICAgcHJpbnRmKCIlLTM4cyAlLTM4c1xuIiwgJGRlZmluZWR7JGZ1bmN0aW9ufXsnc291cmNlJ30sICRmdW5jdGlvbik7CisJICAgIGlmICgkb3B0c3snZyd9KSB7CisJCW9wZW4oUCwiZmluZCAuIC1yZWdleCAnLiouXFwoY1xcfHhzXFwpJyB8IHhhcmdzIGdyZXAgLW4gJGZ1bmN0aW9ufCIpOworCQl3aGlsZSg8UD4pIHsKKwkJICAgIHByaW50ICIgICRfIjsKKwkJfQorCQljbG9zZShQKTsKKwkJcHJpbnQgIlxuIjsKKwkgICAgfQorCX0KKyAgICB9Cit9CisKK3N1YiBkb3Rfb3MgeworICAgIHJldHVybiBpZiAoIS9cLm8kLyk7CisgICAgcmV0dXJuIGlmICgkRmlsZTo6RmluZDo6bmFtZSA9fiAvXC8ubGlic1wvLyk7CisjICAgIHJldHVybiBpZiAoJEZpbGU6OkZpbmQ6Om5hbWUgPX4gL1wvKHBlcmx8cHl0aG9uKVwvLyk7CisgICAgcHVzaCBAZmlsZXMsICRGaWxlOjpGaW5kOjpuYW1lOworfQorCitzdWIgY29sbGVjdF9mcm9tX2ZpbGUgeworICAgIG15ICRmaWxlID0gc2hpZnQ7CisjICAgIHByaW50ICJzZWFyY2hpbmcgJGZpbGVcbiI7CisgICAgb3BlbihJLCJubSAkZmlsZXwiKTsKKyAgICB3aGlsZSg8ST4pIHsKKwkkZGVmaW5lZHskMX17J3NvdXJjZSd9ID0gJGZpbGUgaWYgKC8gVCAoLiopLyk7CisJcHVzaCBAeyRkZWZpbmVkeyQxfXsndXNhZ2VzJ319LCAkZmlsZSBpZiAoLyBVICguKikvKTsKKyAgICB9CisgICAgY2xvc2UoSSk7Cit9CisJCitzdWIgY2hlY2tfZm9yX29uY2Vfb25seSB7CisgICAgbXkgKCRmaWxlLCAkZnVuY3Rpb24pID0gQF87CisgICAgJGZpbGUgPX4gcy9cLm8vLmMvOworICAgIG9wZW4oSSwgJGZpbGUpOworICAgIG15ICR1c2FnZXMgPSAwOworICAgIHdoaWxlKDxJPikgeworCWlmICgvJGZ1bmN0aW9uLykgeworCSAgICAkdXNhZ2VzKys7CisJfQorCWlmICgkdXNhZ2VzID4gMSkgeworCSAgICBjbG9zZShJKTsKKwkgICAgcmV0dXJuIDA7CisJfQorICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworCitzdWIgTG9jYWxHZXRPcHRpb25zIHsKKyAgICBpZiAoZXZhbCB7cmVxdWlyZSBHZXRvcHQ6OkdVSTo6TG9uZzt9KSB7CisgICAgICAgIGltcG9ydCBHZXRvcHQ6OkdVSTo6TG9uZzsKKyAgICAgICAgIyBvcHRpb25hbCBjb25maWd1cmUgY2FsbAorICAgICAgICBHZXRvcHQ6OkdVSTo6TG9uZzo6Q29uZmlndXJlKHF3KGRpc3BsYXlfaGVscCBub19pZ25vcmVfY2FzZSBjYXB0dXJlX291dHB1dCBub19ndWkgYWxsb3dfemVybykpOworICAgICAgICByZXR1cm4gR2V0T3B0aW9ucyhAXyk7CisgICAgfQorICAgIHJlcXVpcmUgR2V0b3B0OjpMb25nOworICAgIGltcG9ydCBHZXRvcHQ6Okxvbmc7CisgICAgIyBvcHRpb25hbCBjb25maWd1cmUgY2FsbAorICAgIEdldG9wdDo6TG9uZzo6Q29uZmlndXJlKHF3KGRpc3BsYXlfaGVscCBub19pZ25vcmVfY2FzZSBjYXB0dXJlX291dHB1dCkpOworICAgIEdldE9wdGlvbnMoTG9jYWxPcHRpb25zTWFwKEBfKSk7Cit9CisKK3N1YiBMb2NhbE9wdGlvbnNNYXAgeworICAgIG15ICgkc3QsICRjYiwgQG9wdHMpID0gKChyZWYoJF9bMF0pIGVxICdIQVNIJykgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoMSwgMSwgJF9bMF0pIDogKDAsIDIpKTsKKyAgICBmb3IgKG15ICRpID0gJHN0OyAkaSA8PSAkI187ICRpICs9ICRjYikgeworICAgICAgICBpZiAoJF9bJGldKSB7CisgICAgICAgICAgICBuZXh0IGlmIChyZWYoJF9bJGldKSBlcSAnQVJSQVknICYmICRfWyRpXVswXSA9fiAvXkdVSTovKTsKKyAgICAgICAgICAgIHB1c2ggQG9wdHMsICgocmVmKCRfWyRpXSkgZXEgJ0FSUkFZJykgPyAkX1skaV1bMF0gOiAkX1skaV0pOworICAgICAgICAgICAgcHVzaCBAb3B0cywgJF9bJGkrMV0gaWYgKCRjYiA9PSAyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gQG9wdHM7Cit9CmRpZmYgLS1naXQgYS9sb2NhbC9taW5pbWFsaXN0L2lnbm9yZS5yZWdleHAgYi9sb2NhbC9taW5pbWFsaXN0L2lnbm9yZS5yZWdleHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA5Yjk5YwotLS0gL2Rldi9udWxsCisrKyBiL2xvY2FsL21pbmltYWxpc3QvaWdub3JlLnJlZ2V4cApAQCAtMCwwICsxLDQgQEAKK34kCisjJAorXC8uIworXC8uc3ZuXC8KZGlmZiAtLWdpdCBhL2xvY2FsL21pbmltYWxpc3QvcmVtb3ZlLXVubmVlZGVkLW1vZHVsZXMgYi9sb2NhbC9taW5pbWFsaXN0L3JlbW92ZS11bm5lZWRlZC1tb2R1bGVzCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFkNDU5NTQKLS0tIC9kZXYvbnVsbAorKysgYi9sb2NhbC9taW5pbWFsaXN0L3JlbW92ZS11bm5lZWRlZC1tb2R1bGVzCkBAIC0wLDAgKzEsMTMwIEBACisjIS9iaW4vcGVybAorCisjIHN0ZXBzOgorIyAxKSBydW4gY29uZmlndXJlCisjIDIpIHBlcmwgbG9jYWwvbWluaW1hbGlzdC9yZW1vdmUtdW5uZWVkZWQtbW9kdWxlcworIyAzKSBtYWtlIGRlcGVuZAorIyA0KSBtYWtlCisKK3VzZSBGaWxlOjpGaW5kOwordXNlIERhdGE6OkR1bXBlcjsKK3VzZSBzdHJpY3Q7CisKK215ICVleGNlcHRpb25zID0gcXcoCisgICBhZ2VudC9taWJncm91cC9taWJkZWZzLmggICAgICAgICAgICAgIAkgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL3N0cnVjdC5oICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmggICAgICAJICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5oIAkgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5oICAgICAgCSAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvbWliX21vZHVsZV9pbmNsdWRlcy5oICAJICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC9taWJfbW9kdWxlX2luaXRzLmggICAgIAkgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL21pYl9tb2R1bGVfZG90X2NvbmYuaCAgCSAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvbWliX21vZHVsZV9zaHV0ZG93bi5oICAJICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC9hZ2VudF9tb2R1bGVfaW5jbHVkZXMuaAkgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL2FnZW50X21vZHVsZV9pbml0cy5oICAgCSAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvYWdlbnRfbW9kdWxlX2RvdF9jb25mLmgJICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC9hZ2VudF9tb2R1bGVfc2h1dGRvd24uaAkgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5jICAgICAgCSAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbUNvbmYuYyAgICAgICAJICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmMgICAgIAkgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5oICAgICAgCSAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbUNvbmYuaCAgICAgICAJICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmggICAgIAkgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaCAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvaG9zdF9yZXMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC9ocl9maWxlc3lzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGVmcy5oICAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvaWZUYWJsZV9kZWZzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC9taWJJSS9taWJJSV9jb21tb24uaCAgICAgICAgICAgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL21udHR5cGVzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2V4ZWN1dGUuaCAgICAgICAgICAgICAgICAgICAgICAgICAxCispOworCitteSAlb3B0czsKKworTG9jYWxHZXRPcHRpb25zKFwlb3B0cywKKwkJWydufGRyeS1ydW4nLCAgICAgICJEcnktcnVuLCBqdXN0IHNheSB3aGF0IHlvdSB3b3VsZCBkbyJdLAorCQlbJ3Z8dmVyYm9zZScsICAgICAgIlNob3cgd2hhdCBmaWxlcyBhcmUgYmVpbmcgbGVmdCB0b28iXSwKKyAgICApOworCitteSAkaW5wdXRNYWtlZmlsZSA9ICRBUkdWWzBdIHx8ICJhZ2VudC9taWJncm91cC9NYWtlZmlsZSI7CitteSAkaW5wdXREaXIgPSAkQVJHVlsxXSB8fCAiYWdlbnQvbWliZ3JvdXAiOworCitteSAkY29sbGVjdGluZyA9IDA7CitteSAoJWZpbGVzLCBAZmlsZXMpOworCitvcGVuKEksICRpbnB1dE1ha2VmaWxlKTsKK3doaWxlKDxJPikgeworICAgIGlmICgvbWliX21vZHVsZV9saXN0X2M9LykgeworCSRjb2xsZWN0aW5nID0gMTsKKyAgICB9IGVsc2lmICgkY29sbGVjdGluZykgeworCWlmICghIC9cXFxzKiQvKSB7CisJICAgICRjb2xsZWN0aW5nID0gMDsKKwl9CisJY2hvbXAoKTsKKwlzL1xcLy87CisJcy9ccyovL2c7CisJcy9cLmMvLzsKKwlwdXNoIEBmaWxlcywgImFnZW50L21pYmdyb3VwLyRfIjsKKwkkZmlsZXN7ImFnZW50L21pYmdyb3VwLyRfLmMifSA9IDE7CisJJGZpbGVzeyJhZ2VudC9taWJncm91cC8kXy5oIn0gPSAxOworICAgIH0KK30KKworZmluZChcJnJlbW92ZV9maWxlcywgJGlucHV0RGlyKTsKKworc3ViIHJlbW92ZV9maWxlcyB7CisgICAgcmV0dXJuIGlmICghL1wuW2NoXSQvKTsKKyAgICByZXR1cm4gaWYgKC9cLmgkLyk7ICMgWFhYOiB3ZSBuZWVkIHRvIGRlbGV0ZSBoZWFkZXJzIGV2ZW50dWFsbHkgdG9vCisgICAgcmV0dXJuIGlmICgvX2NvbnN0YW50cy5oLyk7CisgICAgcmV0dXJuIGlmIChleGlzdHMoJGV4Y2VwdGlvbnN7JEZpbGU6OkZpbmQ6Om5hbWV9KSk7CisKKyAgICBpZiAoIWV4aXN0cygkZmlsZXN7JEZpbGU6OkZpbmQ6Om5hbWV9KSkgeworCVVubGluaygkXywgJEZpbGU6OkZpbmQ6Om5hbWUpOworICAgIH0gZWxzaWYgKCRvcHRzeyd2J30pIHsKKwlwcmludCAiTGVhdmluZyAkRmlsZTo6RmluZDo6bmFtZVxuIjsKKyAgICB9Cit9CisKK3N1YiBVbmxpbmsgeworICAgIG15ICgkZmlsZSwgJGZ1bGxmaWxlKSA9IEBfOworICAgIHByaW50ICJSZW1vdmluZyAkZnVsbGZpbGVcbiI7CisgICAgaWYgKCEkb3B0c3snbid9KSB7CisJdW5saW5rKCRmaWxlKTsKKwlpZiAoLWYgIiRmaWxlIikgeworCSAgICBwcmludCAiKioqIEZBSUxFRCB0byByZW1vdmUgJGZpbGVcbiI7IAorCX0KKyAgICB9Cit9CisKKworc3ViIExvY2FsR2V0T3B0aW9ucyB7CisgICAgaWYgKGV2YWwge3JlcXVpcmUgR2V0b3B0OjpHVUk6Okxvbmc7fSkgeworICAgICAgICBpbXBvcnQgR2V0b3B0OjpHVUk6Okxvbmc7CisgICAgICAgICMgb3B0aW9uYWwgY29uZmlndXJlIGNhbGwKKwlteSBAZ29wdHMgPSBxdyhub19pZ25vcmVfY2FzZSBub19ndWkgYWxsb3dfemVybyk7CisJaWYgKCRHZXRvcHQ6OkdVSTo6TG9uZzo6VkVSU0lPTiA+IDAuMikgeworCSAgICBwdXNoIEBnb3B0cywgcXcoZGlzcGxheV9oZWxwIGNhcHR1cmVfb3V0cHV0KTsKKwl9CisgICAgICAgIEdldG9wdDo6R1VJOjpMb25nOjpDb25maWd1cmUoQGdvcHRzKTsKKyAgICAgICAgcmV0dXJuIEdldE9wdGlvbnMoQF8pOworICAgIH0KKyAgICByZXF1aXJlIEdldG9wdDo6TG9uZzsKKyAgICBpbXBvcnQgR2V0b3B0OjpMb25nOworICAgICMgb3B0aW9uYWwgY29uZmlndXJlIGNhbGwKKyAgICBHZXRvcHQ6Okxvbmc6OkNvbmZpZ3VyZShxdyhkaXNwbGF5X2hlbHAgbm9faWdub3JlX2Nhc2UgY2FwdHVyZV9vdXRwdXQpKTsKKyAgICBHZXRPcHRpb25zKExvY2FsT3B0aW9uc01hcChAXykpOworfQorCitzdWIgTG9jYWxPcHRpb25zTWFwIHsKKyAgICBteSAoJHN0LCAkY2IsIEBvcHRzKSA9ICgocmVmKCRfWzBdKSBlcSAnSEFTSCcpIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKDEsIDEsICRfWzBdKSA6ICgwLCAyKSk7CisgICAgZm9yIChteSAkaSA9ICRzdDsgJGkgPD0gJCNfOyAkaSArPSAkY2IpIHsKKyAgICAgICAgaWYgKCRfWyRpXSkgeworICAgICAgICAgICAgbmV4dCBpZiAocmVmKCRfWyRpXSkgZXEgJ0FSUkFZJyAmJiAkX1skaV1bMF0gPX4gL15HVUk6Lyk7CisgICAgICAgICAgICBwdXNoIEBvcHRzLCAoKHJlZigkX1skaV0pIGVxICdBUlJBWScpID8gJF9bJGldWzBdIDogJF9bJGldKTsKKyAgICAgICAgICAgIHB1c2ggQG9wdHMsICRfWyRpKzFdIGlmICgkY2IgPT0gMik7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIEBvcHRzOworfQpkaWZmIC0tZ2l0IGEvbG9jYWwvbWluaW1hbGlzdC9yZW1vdmVpZmRlZmNvZGUucGwgYi9sb2NhbC9taW5pbWFsaXN0L3JlbW92ZWlmZGVmY29kZS5wbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41YTY0YzA1Ci0tLSAvZGV2L251bGwKKysrIGIvbG9jYWwvbWluaW1hbGlzdC9yZW1vdmVpZmRlZmNvZGUucGwKQEAgLTAsMCArMSwzMzMgQEAKKyMhIC91c3IvYmluL3BlcmwKKwordXNlIHN0cmljdDsKK3VzZSBGaWxlOjpDb3B5OwordXNlIEZpbGU6OkJhc2VuYW1lOwordXNlIElPOjpGaWxlOwordXNlIEdldG9wdDo6U3RkOworCitteSAkSURfTk9SRUFEICA9ICJORVRTTk1QX05PX1JFQURfU1VQUE9SVCI7CitteSAkSURfTk9XUklURSA9ICJORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQiOworIyBteSAkSURfTUlOICAgICA9ICJORVRTTk1QX01JTklNQUxfQ09ERSI7CisKK215KCRTVF9PRkYsICRTVF9JRiwgJFNUX0VMU0UsICRTVF9JRk4sICRTVF9FTFNFTikgPQorICAoIm9mZiIsICJpZiIsICJlbHNlIiwgImlmbm90IiwgImVsc2Vub3QiKTsKKworbXkgJW9wdHMgICAgPSAoKTsKK215ICV0aGFzaCAgID0gKCk7CitteSAkY2Fud3JpdGUgPSAxOyAjIGN1cnJlbnQgd3JpdGUgc3RhdGUKKworbXkoJGFwcG5hbWUsJGFwcHBhdGgpID0gZmlsZXBhcnNlKCQwKTsKKworbXkgJG1pbmltYWxfaW5jbHVkZV9wYXRoID0gImluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaCI7CisKKworaWYgKCAoIWdldG9wdHMoInJ3bWk6diIsXCVvcHRzKSkgfHwgKDEgIT0gJCNBUkdWKSApIHsKKyAgcHJpbnQgIiRhcHBuYW1lIFtvcHRpb25zXSBmcm9tLWRpcmVjdG9yeSB0by1kaXJlcGN0b3J5XG4iOworICBwcmludCAiLXIgICAgIHBhcnNlIG91dCBjb2RlIHVubmVlZGVkIGJ5ICRJRF9OT1JFQUQgaWZkZWZcbiI7CisgIHByaW50ICItdyAgICAgcGFyc2Ugb3V0IGNvZGUgdW5uZWVkZWQgYnkgJElEX05PV1JJVEUgaWZkZWYgKERFRkFVTFQpXG4iOworICBwcmludCAiLW0gICAgIHBhcnNlIG91dCBjb2RlIHVubmVlZGVkIGFjY29yZGluZyBtaW5pbWFsaXN0IGlmZGVmc1xuIjsKKyAgcHJpbnQgIiAgICAgICByZXF1aXJlcyBmcm9tLWRpcmVjdG9yeSB0byBiZSB0aGUgdG9wIG9mIHRoZSBuZXQtc25tcCB0cmVlXG4iOworICBwcmludCAiICAgICAgIChUaGlzIGlzIG11bHRpcGxlIGlmZGVmcyBhdXRvIHNlbGVjdGVkIGRlcGVuZGluZ1xuIjsKKyAgcHJpbnQgIiAgICAgICAgb24gdGhlIG5ldC1zbm1wIHNvdXJjZSBjb25maWd1cmF0aW9uKVxuXG4iOworICBwcmludCAiLWkgJ2lnbm9yZS1maWxlJyAgZmlsZSBvZiBmaWxlcyB0byBpZ25vcmUgKG5vdCBjb3B5KVxuIjsKKyAgcHJpbnQgIi12ICAgICBwcmludCB2ZXJib3NlIGluZm8gdG8gc3RhbmRhcmQgb3V0XG4iOworICBkaWUgIkVycm9yOiB0d28gY29tbWFuZCBsaW5lIGFyZ3VtZW50cyByZXF1aXJlZFxuIjsKK30KKworI2RlZmF1bHQgdG8gZXZlcnl0aGluZworaWYgKCAoIWV4aXN0cyAkb3B0c3tyfSkgJiYgKCFleGlzdHMgJG9wdHN7d30pICYmICghZXhpc3RzICRvcHRze219KSApIHsKKyAgJHRoYXNoeyIkSURfTk9XUklURSJ9ID0gIiRTVF9PRkYiOworfQorZWxzZSB7CisgICR0aGFzaHsiJElEX05PUkVBRCJ9ICA9ICIkU1RfT0ZGIiBpZiAoIGV4aXN0cyAkb3B0c3tyfSApOworICAkdGhhc2h7IiRJRF9OT1dSSVRFIn0gPSAiJFNUX09GRiIgaWYgKCBleGlzdHMgJG9wdHN7d30gKTsKK30KKworbXkgJGZyb21kaXIgPSAkQVJHVlswXTsKK215ICR0b2RpciAgID0gJEFSR1ZbMV07CisKK2lmICggISgtZSAkZnJvbWRpcikgKSB7CisgIGRpZSAiRXJyb3I6ICRhcHBuYW1lOiBmcm9tIGRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdDogJyRmcm9tZGlyJ1xuIjsKK30KK2lmICggISgtZCAkZnJvbWRpcikgKSB7CisgICAgZGllICJFcnJvcjogJGFwcG5hbWU6IGZyb20gZGlyZWN0b3J5LCAnJGZyb21kaXInLCBtdXN0IGJlIGEgZGlyZWN0b3J5XG4iOworfQorCitpZiAoIGV4aXN0cyAkb3B0c3ttfSApIHsKKyAgICBsb2FkX21pbmFtYWxfaWZkZWZzKCk7Cit9CisKKyMgY3JlYXRlIHNlYXJjaCBzdHJpbmcgZnJvbSB0YWdzCisjIG1pbmltYWwgbXVzdCBiZSBkb25lIGJlZm9yZSB0aGlzCitteSAkc2VhcmNoID0gam9pbiAifCIsIChrZXlzICV0aGFzaCk7CisKKworIyBjaGVjayBmb3IgYW5kIGxvYWQgaWdub3JlIGZpbGUKK215ICRpZ3N0cmluZyA9ICIiOworaWYgKCBleGlzdHMgJG9wdHN7aX0gKSB7CisgIG9wZW4gbXkoJElIKSwgIjwgJG9wdHN7aX0iIG9yCisgICAgZGllICJDb3VsZCBub3Qgb3BlbiBpZ25vcmUtZmlsZSAnJG9wdHN7aX0nOiAkISI7CisgIG15IEBpZ2xpc3QgPSA8JElIPjsKKyAgJElILT5jbG9zZSgpOworICBjaG9tcCBAaWdsaXN0OworICAkaWdzdHJpbmcgPSBqb2luICJ8IiwgQGlnbGlzdDsKKyAgJGlnc3RyaW5nID0gIigiIC4gJGlnc3RyaW5nIC4gIikiOworICBwcmludCAiaWdub3JlIHN0cmluZzogXCckaWdzdHJpbmdcJ1xuIiBpZiAoZXhpc3RzICRvcHRze3Z9KTsKK30KKworCisKK2lmICggLWUgJHRvZGlyICkgeworICBpZiAoICgoLWQgJGZyb21kaXIpICYmICEoLWQgJHRvZGlyKSkgfHwKKwkgICAoISgtZCAkZnJvbWRpcikgJiYgKC1kICR0b2RpcikpICkgeworCWRpZSAiRXJyb3I6ICRhcHBuYW1lOiBmcm9tLWRpcmVjdG9yeSBhbmQgdG8tZGlyZWN0b3J5IG11c3QgYm90aCBlaXRoZXIgYmUgYSBmaWxlIG9yIGJvdGggYmUgYSBkaXJlY3RvcnlcbiI7CisgIH0KK30KK2Vsc2UgeworICBpZiAoLWQgJGZyb21kaXIpIHsKKwlwcmludCAiV2FybmluZzogJGFwcG5hbWU6ICckdG9kaXInIGRvZXMgbm90IGV4aXN0LCBjcmVhdGluZ1xuIjsKKwlta2RpciAiJHRvZGlyIiBvcgorICAgICAgZGllICJFcnJvcjogJGFwcG5hbWU6IFVuYWJsZSB0byBjcmVhdGUgdG8tZGlyZWN0b3J5ICckdG9kaXInOiAkIVxuIjsKKyAgfQorfQorCitpZiAoLWQgJGZyb21kaXIpIHsKKyAgcGFyc2VkaXJlY3RvcnkoJGZyb21kaXIsICR0b2Rpcik7Cit9CitlbHNlIHsKKyAgcGFyc2VmaWxlKCRmcm9tZGlyLCAkdG9kaXIpOworfQorCisKKworZXhpdCgwKTsKKworCisjIFBST0NFRFVSRVMgIFBST0NFRFVSRVMgIFBST0NFRFVSRVMgIFBST0NFRFVSRVMgIFBST0NFRFVSRVMKKworCitzdWIgcGFyc2VkaXJlY3RvcnkgeworICBteSgkZmRpciwgJHRkaXIpID0gQF87CisKKyAgbXkgQGxkaXJzID0gKCk7CisgIG15ICRESDsKKyAgb3BlbmRpciBteSgkREgpLCAkZmRpciBvciBkaWUgIkNvdWxkIG5vdCBvcGVuIGRpcmVjdG9yeSAnJGZkaXInOiAkISI7CisgIGlmICggISgtZSAkdGRpcikgfHwgISgtZCAkdGRpcikgKSB7CisgICAgbWtkaXIgJHRkaXIgb3IgZGllICJDb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSAnJHRkaXInOiAkISI7CisgIH0KKyAgbXkgQGZsaXN0ID0gcmVhZGRpciAkREg7CisgIGNsb3NlZGlyICRESDsKKyAgIyByZW1vdmUgLiBhbmQgLi4KKyAgQGZsaXN0ID0gZ3JlcCAoISAvKF5cLiR8XlwuXC4kKS8gLCBAZmxpc3QpOworCisgIHdoaWxlIChteSAkbmFtZSA9IHNoaWZ0IEBmbGlzdCkgeworICAgIGlmICgtZCAiJGZkaXIvJG5hbWUiKSB7CisgICAgICBwdXNoIEBsZGlycywgIiRuYW1lIjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBwYXJzZWZpbGUoIiRmZGlyLyRuYW1lIiwgIiR0ZGlyLyRuYW1lIik7CisgICAgfQorICB9CisKKyAgd2hpbGUgKG15ICRuYW1lID0gc2hpZnQgQGxkaXJzKSB7CisgICAgcGFyc2VkaXJlY3RvcnkoIiRmZGlyLyRuYW1lIiwgIiR0ZGlyLyRuYW1lIikKKyAgfQorCit9ICMgcGFyc2VkaXJlY3RvcnkKKworCisjIHJldHVybnMgMSBpZiBjdXJyZW50IHN0YXRlIGZvciB0YWcgaXMgd3JpdGUsIDAgb3RoZXJ3aXNlCitzdWIgaXN3cml0ZXN0YXRlIHsKKyAgbXkgJHRhZyA9ICIiOworCisgIGZvcmVhY2ggJHRhZyAoa2V5cyAldGhhc2gpIHsKKwlpZiAoICgkdGhhc2h7JHRhZ30gZXEgIiRTVF9FTFNFIikgfHwKKwkJICgkdGhhc2h7JHRhZ30gZXEgIiRTVF9JRk4iKSApIHsKKwkgIHJldHVybigwKTsKKyAgICB9CisgIH0KKworICByZXR1cm4oMSk7Cit9ICMgaXN3cml0ZXN0YXRlCisKKworIyBDaGVjayAkbGluZSBmb3IgaWZkZWYgc3RhdGUgY2hhbmdlcyBmb3IgYWxsIG9mIHRoZSB0YWdzIGFuZCBjaGFuZ2UKKyMgc3RhdGUuCisjIElmIHRoZXJlIGlzIGEgc3RhdGUgY2hhbmdlIGVycm9yIHJldHVybiAwLCBvdGhlcndpc2UgcmV0dXJuIDE7CisKK3N1YiBjaGVja2lmZGVmIHsKKyAgbXkoJFRGLCAkbGluZSwgJGZyb21maWxlbmFtZSkgPSBAXzsKKworICBpZiAoICRsaW5lID1+IC8oI2lmZGVmfCNpZm5kZWZ8I2Vsc2V8I2VuZGlmKS4qKCRzZWFyY2gpKFxzfCR8XCopLyApIHsKKyAgICBteSAkY29wdCA9ICQxOworICAgIG15ICR0YWcgID0gJDI7CisKKwlpZiAoICRjb3B0IGVxICIjaWZkZWYiICkgeworICAgICAgaWYgKCR0aGFzaHsiJHRhZyJ9IGVxICIkU1RfT0ZGIikgeworICAgICAgICAkdGhhc2h7IiR0YWcifSA9ICIkU1RfSUYiOworICAgICAgICBwcmludCAic3RhdGUgY2hhbmdlICR0YWc6ICRTVF9PRkYgLT4gJFNUX0lGXG4iIGlmIChleGlzdHMgJG9wdHN7dn0pOworICAgICAgICAkY2Fud3JpdGUgPSBpc3dyaXRlc3RhdGUoKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBwcmludCAiRXJyb3I6ICRmcm9tZmlsZW5hbWU6IEZvdW5kICcjaWZkZWYgJHRhZycgd2l0aCBzdGF0ZSAkdGhhc2h7JHRhZ31cbiI7CisgICAgICAgIHJldHVybiAwOworICAgICAgfQorICAgIH0KKyAgICBlbHNpZiAoICRjb3B0IGVxICIjaWZuZGVmIiApIHsKKyAgICAgIGlmICgkdGhhc2h7IiR0YWcifSBlcSAiJFNUX09GRiIpIHsKKyAgICAgICAgIyBiZWZvcmUgY2hhbmdpbmcgdG8gYSBub24td3JpdGUgc3RhdGUgKGlmbikgcHJpbnQgI0lGTkRFRgorICAgICAgICAjIGxpbmUsIGlmIGN1cnJlbnQgc3RhdGUgaXMgYSB3cml0ZSBzdGF0ZS4KKyAgICAgICAgcHJpbnQgJFRGICIkbGluZSIgIGlmICggJGNhbndyaXRlICk7CisgICAgICAgICR0aGFzaHsiJHRhZyJ9ID0gIiRTVF9JRk4iOworICAgICAgICBwcmludCAic3RhdGUgY2hhbmdlICR0YWc6ICRTVF9PRkYgLT4gJFNUX0lGTlxuIiBpZiAoZXhpc3RzICRvcHRze3Z9KTsKKyAgICAgICAgJGNhbndyaXRlID0gaXN3cml0ZXN0YXRlKCk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcHJpbnQgIkVycm9yOiAkZnJvbWZpbGVuYW1lOiBGb3VuZCAnI2lmbmRlZiAkdGFnJyB3aXRoIHN0YXRlICR0aGFzaHskdGFnfVxuIjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgICAgfQorICAgIGVsc2lmICggJGNvcHQgZXEgIiNlbHNlIiApIHsKKyAgICAgIGlmICgkdGhhc2h7IiR0YWcifSBlcSAiJFNUX0lGIikgeworICAgICAgICAjIGJlZm9yZSBjaGFuZ2luZyB0byBhIG5vbi13cml0ZSBzdGF0ZSAoZWxzZSkgcHJpbnQgI2Vsc2UKKyAgICAgICAgIyBsaW5lLCBpZiBjdXJyZW50IHN0YXRlIGlzIGEgd3JpdGUgc3RhdGUuCisgICAgICAgIHByaW50ICRURiAiJGxpbmUiICBpZiAoICRjYW53cml0ZSApOworICAgICAgICAkdGhhc2h7IiR0YWcifSA9ICIkU1RfRUxTRSI7CisgICAgICAgIHByaW50ICJzdGF0ZSBjaGFuZ2UgJHRhZzogJFNUX0lGIC0+ICRTVF9FTFNFXG4iIGlmIChleGlzdHMgJG9wdHN7dn0pOworICAgICAgICAkY2Fud3JpdGUgPSBpc3dyaXRlc3RhdGUoKTsKKyAgICAgIH0KKyAgICAgIGVsc2lmICgkdGhhc2h7IiR0YWcifSBlcSAiJFNUX0lGTiIpIHsKKyAgICAgICAgJHRoYXNoeyIkdGFnIn0gPSAiJFNUX0VMU0VOIjsKKyAgICAgICAgcHJpbnQgInN0YXRlIGNoYW5nZSAkdGFnOiAkU1RfSUZOIC0+ICRTVF9FTFNFTlxuIiBpZiAoZXhpc3RzICRvcHRze3Z9KTsKKyAgICAgICAgJGNhbndyaXRlID0gaXN3cml0ZXN0YXRlKCk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcHJpbnQgIkVycm9yOiAkZnJvbWZpbGVuYW1lOiBGb3VuZCAnI2Vsc2UgKC4uLikgJHRhZycgd2l0aCBzdGF0ZSAkdGhhc2h7JHRhZ31cbiI7CisgICAgICAgIHJldHVybiAwOworICAgICAgfQorICAgIH0KKyAgICBlbHNpZiAoICRjb3B0IGVxICIjZW5kaWYiICkgeworICAgICAgaWYgKCgkdGhhc2h7IiR0YWcifSBlcSAiJFNUX0VMU0UiKSAgfHwgKCR0aGFzaHsiJHRhZyJ9IGVxICIkU1RfSUYiKSB8fAorICAgICAgICAgICgkdGhhc2h7IiR0YWcifSBlcSAiJFNUX0VMU0VOIikgfHwgKCR0aGFzaHsiJHRhZyJ9IGVxICIkU1RfSUZOIikpCisgICAgICB7CisgICAgICAgIHByaW50ICJzdGF0ZSBjaGFuZ2UgJHRhZzogJHRoYXNoeyR0YWd9IC0+ICRTVF9PRkZcbiIKKyAgICAgICAgICBpZiAoZXhpc3RzICRvcHRze3Z9KTsKKyAgICAgICAgJHRoYXNoeyIkdGFnIn0gPSAiJFNUX09GRiI7CisgICAgICAgICRjYW53cml0ZSA9IGlzd3JpdGVzdGF0ZSgpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHByaW50ICJFcnJvcjogRm91bmQgJyNlbmRpZiAoLi4uKSAkdGFnJyB3aXRoIHN0YXRlICR0aGFzaHskdGFnfVxuIjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgICAgfQorCisgIH0gIyBmb3JlYWNoIHRhZworCisgIHJldHVybiAxOworfSAjIGNoZWNraWZkZWYKKworCitzdWIgcGFyc2VmaWxlIHsKKyAgbXkoJGZuYW1lLCAkdG5hbWUpID0gQF87CisgIG15ICRGRjsgbXkgJFRGOworICBteSBAZnJvbWZpbGUgPSAoKTsKKyAgJGNhbndyaXRlID0gMTsKKworICAjIGlnbm9yZSBmaWxlIGZvciBmaWxlIG5hbWVzCisgIGlmICggKGV4aXN0cyAkb3B0c3tpfSkgJiYgKCIkZm5hbWUiID1+ICAvJGlnc3RyaW5nLykgKSB7CisgICAgcHJpbnQgIklHTk9SSU5HICRmbmFtZVxuIiAgaWYgKCBleGlzdHMgJG9wdHN7dn0gKTsKKyAgICByZXR1cm4gMTsKKyAgfQorCisgIHByaW50ICJJbmZvOiBPcGVuaW5nICckZm5hbWUnXG4iIGlmICggZXhpc3RzICRvcHRze3Z9ICk7CisgIGlmICggIShvcGVuKCRGRiwgIjwgJGZuYW1lIikpICkgeworCXByaW50ICJXYXJuaW5nOiB1bmFibGUgdG8gb3BlbiBpbnB1dCBmaWxlLCBza2lwcGluZzogJyRmbmFtZSc6ICQhXG4iOworCXJldHVybiAwOworICB9CisKKyAgbXkgQGZyb21maWxlID0gPCRGRj47CisgICRGRi0+Y2xvc2UoKTsKKworICBpZiAoICEob3BlbigkVEYsICI+ICR0bmFtZSIpKSApIHsKKwlwcmludCAiV2FybmluZzogdW5hYmxlIHRvIG9wZW4gb3V0cHV0IGZpbGUsIHNraXBwaW5nOiAnJHRuYW1lJzogJCFcbiI7CisJcmV0dXJuIDA7CisgIH0KKyAgbXkgJG1vZGUgPSAoc3RhdCgiJGZuYW1lIikpWzJdOworICBpZiAoJG1vZGUpIHsgbXkgJHJlc3AgPSBjaG1vZCAkbW9kZSwgIiR0bmFtZSI7IH0KKworICBteSAkbGluZSAgID0gIiI7CisgIG15IEB0b3V0ICA9ICgpOworICBteSAkcmV0dmFsID0gMTsKKworICB3aGlsZSAoICRsaW5lID0gc2hpZnQgQGZyb21maWxlICkgeworICAgICMgY2hlY2sgZm9yIGFueSBpZmRlZiBzdGF0ZSBjaGFuZ2VzCisJaWYgKCAhIGNoZWNraWZkZWYoJFRGLCAkbGluZSwgJGZuYW1lKSApIHsKKyAgICAgICRGRi0+Y2xvc2UoKTsKKyAgICAgICRURi0+Y2xvc2UoKTsKKyAgICAgIGRpZSAiRXJyb3I6IHRhZyBlcnJvciBpbiBmaWxlIFwnJGZuYW1lXCcsIGV4aXRpbmdcbiI7CisgICAgfQorCisgICAgaWYgKCAkY2Fud3JpdGUgKSB7CisJICBwcmludCAkVEYgIiRsaW5lIjsKKwl9CisJZWxzZSB7CisJICBwcmludCAiSW5mbzogbm90IGNvcHlpbmc6ICRmbmFtZTogJGxpbmUiIGlmICggZXhpc3RzICRvcHRze3Z9ICk7CisgICAgfQorCisgIH0KKworICBpZiAoISAkY2Fud3JpdGUpIHsKKyAgICAgIHByaW50ICJFbmQgb2YgJGZuYW1lIHJlYWNoZWQgYW5kIHdlJ3JlIG5vdCByZXNldCBpbnRvICdjYW53cml0ZScgc3RhdGVcbiI7CisgIH0KKyAgJFRGLT5jbG9zZSgpOworCisgIHJldHVybiAkcmV0dmFsOworfSAjIHBhcnNlZmlsZQorCisKKyMgbm90ZSwgZnJvbWRpciBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY2hlY2tlZCB0byBleGlzdCBhbmQgYmUgYQorIyBkaXJlY3RvcnkKK3N1YiBsb2FkX21pbmFtYWxfaWZkZWZzIHsKKyAgICBteSBAZmlsZWxpc3QgPSAoKTsKKyAgICBteSAkTUY7CisgICAgCisgICAgaWYgKCAhKG9wZW4oJE1GLCAiPCAkZnJvbWRpci8kbWluaW1hbF9pbmNsdWRlX3BhdGgiKSkgKSB7CisgICAgICAgIGRpZSAiVW5hYmxlIHRvIG9wZW4gbWFpbiBtaW5pbWFsIGZlYXR1cmUgZmlsZTogJyRmcm9tZGlyLyRtaW5pbWFsX2luY2x1ZGVfcGF0aCdcbiI7CisgICAgfQorICAgIG15ICRsaW5lOworICAgICMgc2tpcCBwcmVjZWRpbmcgbGluZXMKKyAgICB3aGlsZSAoICgkbGluZSA9IDwkTUY+KSAmJgorICAgICAgICAgICAgKCRsaW5lICF+IC9eI2Vsc2UuKk5FVFNOTVBfRkVBVFVSRV9DSEVDS0lORy8gKSApIHsKKyAgICB9CisgICAgIyBncmFiIHRoZSBmZXRhdXJlIC5oIGZpbGVzCisgICAgd2hpbGUgKCAoJGxpbmUgPSA8JE1GPikgJiYKKyAgICAgICAgICAgICgkbGluZSAhfiAvXiNlbmRpZi4qTkVUX1NOTVBfRkVBVFVSRV9DSEVDS0lORy8pICkgeworICAgICAgICBpZiAoJGxpbmUgPX4gL2luY2x1ZGUuKjwoLiouaCk+LykgeworICAgICAgICAgICAgcHVzaCBAZmlsZWxpc3QsICQxOworICAgICAgICB9CisgICAgfQorCisgICAgY2xvc2UoJE1GKTsKKworICAgIHdoaWxlIChteSAkZm5hbWUgPSBzaGlmdCBAZmlsZWxpc3QpIHsKKyAgICAgICAgaWYgKCAhKCAtZSAiJGZyb21kaXIvaW5jbHVkZS8kZm5hbWUiICkgKSAgeworICAgICAgICAgICAgcHJpbnQgIldhcm46IGZlYXR1cmUgZmlsZSBkb2VzIG5vdCBleGlzdCwgc2tpcHBpbmc6ICckZnJvbWRpci9pbmNsdWRlLyRmbmFtZSciOworICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgfQorICAgICAgICBpZiAoICEob3BlbigkTUYsICI8ICRmcm9tZGlyL2luY2x1ZGUvJGZuYW1lIikpICkgeworICAgICAgICAgICAgZGllICJVbmFibGUgdG8gb3BlbiBtaW5pbWFsIGZlYXR1cmUgZmlsZTogJyRmcm9tZGlyL2luY2x1ZGUvJGZuYW1lJ1xuIjsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoICgkbGluZSA9IDwkTUY+KSApIHsKKyAgICAgICAgICAgIGlmICggJGxpbmUgPX4gL14jZGVmaW5lLiooTkVUU05NUF9GRUFUVVJFX1JFTU9WRVteIF0rKSAvICkgeworICAgICAgICAgICAgICAgICR0aGFzaHsiJDEifSA9ICRTVF9PRkY7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2xvc2UoJE1GKTsKKyAgICB9CisgICAgICAgIAorfSAjIGxvYWRfbWluYW1hbF9pZmRlZnMKKworCisKKwpkaWZmIC0tZ2l0IGEvbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHMgYi9sb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWNkNjU0Ci0tLSAvZGV2L251bGwKKysrIGIvbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHMKQEAgLTAsMCArMSwzNTkgQEAKKyMhL3Vzci9iaW4vcGVybAorCit1c2Ugc3RyaWN0OwordXNlIERhdGE6OkR1bXBlcjsKK3VzZSBHZXRvcHQ6OlN0ZDsKK3VzZSBJTzo6RmlsZTsKK291ciAlb3B0cyA9IChkID0+ICdzaXplLXRlc3RzJyk7CisKKyMgZGVmYXVsdCBhcmd1bWVudHMgZ28gaGVyZQorbXkgQHNldHMgPQorICAgICh7CisJIndpdGgtZGVmYXVsdHMiID0+ICcnLAorICAgICB9KTsKKworbXkgJWJhc2VfYXJncyA9ICV7JHNldHNbMF19OworbXkgKCRiYXNlbmFtZSwgJGJhc2VudW0pOworCitnZXRvcHRzKCd0OmhsY0Q6bmo6bzplYjpUJywgXCVvcHRzKSB8fCB1c2FnZSgpOworCiskb3B0c3snaid9ID0gIi1qJG9wdHN7an0iIGlmIChleGlzdHMoJG9wdHN7J2onfSkpOworCit1c2FnZSgpIGlmICgkb3B0c3snaCd9KTsKKworbXkgQGFyZ3VtZW50c2V0cyA9CisgICAgKAorICAgICB7CisJIHRpdGxlID0+ICdzZWN1cml0eS10eXBlcycsCisJIGFyZ3VtZW50cyA9PgorCSB7CisJICAgICB1c20gPT4geworCQkgJ3dpdGgtc2VjdXJpdHktbW9kdWxlcycgPT4gJ3VzbScsCisJICAgICB9LAorCSAgICAgZHRsc2FuZHRscyA9PiB7CisJCSAnd2l0aC1zZWN1cml0eS1tb2R1bGVzJyAgICAgPT4gJ3RzbScsCisJCSAnd2l0aC1vdXQtc2VjdXJpdHktbW9kdWxlcycgPT4gJ3VzbScsCisJCSAnd2l0aC10cmFuc3BvcnRzJyAgICAgICAgICAgPT4gJ0RUTFNVRFAgVExTVENQJywKKwkJICd3aXRoLW1pYi1tb2R1bGVzJyAgICAgICAgICA9PiAndGxzdG0tbWliIHRzbS1taWInCisJICAgICB9LAorCSAgICAgdXNtYW5kZHRsc2FuZHRscyA9PiB7CisJCSAnd2l0aC1zZWN1cml0eS1tb2R1bGVzJyAgICAgPT4gJ3RzbSB1c20nLAorCQkgJ3dpdGgtdHJhbnNwb3J0cycgICAgICAgICAgID0+ICdEVExTVURQIFRMU1RDUCcsCisJCSAnd2l0aC1taWItbW9kdWxlcycgICAgICAgICAgPT4gJ3Rsc3RtLW1pYiB0c20tbWliJworCSAgICAgfQorCSB9CisgICAgIH0sCisgICAgIHsKKwkgdGl0bGUgPT4gJ21pbmltYWxpc3QnLAorCSBhcmd1bWVudHMgPT4KKwkgeyAKKwkgICAgIG1pbmltYWwgPT4geworCQkgJ2VuYWJsZS1taW5pbWFsaXN0JyAgICA9PiAnJywKKwkgICAgIH0sCisJICAgICAnbm90LW1pbmltYWwnID0+IHsKKwkgICAgIH0KKwkgfQorICAgICB9LAorICAgICB7CisJIHRpdGxlID0+ICdtaWItbG9hZGluZycsCisJIGFyZ3VtZW50cyA9PgorCSB7IAorCSAgICAgJ3dpdGhvdXQtbWliLWxvYWRpbmcnID0+IHsKKwkJICdkaXNhYmxlLW1pYi1sb2FkaW5nJyAgICA9PiAnJywKKwkgICAgIH0sCisJICAgICAnd2l0aC1taWItbG9hZGluZycgPT4geworCSAgICAgfQorCSB9CisgICAgIH0sCisgICAgIHsKKwkgdGl0bGUgPT4gJ2RlYnVnZ2luZycsCisJIGFyZ3VtZW50cyA9PgorCSB7IAorCSAgICAgJ3dpdGhvdXQtZGVidWdnaW5nJyA9PiB7CisJCSAnZGlzYWJsZS1kZWJ1Z2dpbmcnICAgID0+ICcnLAorCSAgICAgfSwKKwkgICAgICd3aXRoLWRlYnVnZ2luZycgPT4geworCSAgICAgfQorCSB9CisgICAgIH0sCisgICAgIHsKKwkgdGl0bGUgPT4gJ2xvZ2dpbmcnLAorCSBhcmd1bWVudHMgPT4KKwkgeyAKKwkgICAgICd3aXRob3V0LWxvZ2dpbmcnID0+IHsKKwkJICd3aXRoLW91dC1mZWF0dXJlcycgICAgPT4gJ2xvZ2dpbmcnLAorCSAgICAgfSwKKwkgICAgICd3aXRoLWxvZ2dpbmcnID0+IHsKKwkgICAgIH0KKwkgfQorICAgICB9LAorICAgICB7CisJIHRpdGxlID0+ICdhZ2VudC1taWJzJywKKwkgYXJndW1lbnRzID0+CisJIHsgCisJICAgICAnZnVsbC1hZ2VudCcgPT4geworCSAgICAgfSwKKwkgICAgICdtaW5pLWFnZW50JyA9PiB7CisJCSAnZW5hYmxlLW1pbmktYWdlbnQnID0+ICcnLAorCSAgICAgfQorCSB9CisgICAgIH0sCisgICAgIHsKKwkgdGl0bGUgPT4gJ3Byb3RvY29sLXN1cHBvcnQnLAorCSBhcmd1bWVudHMgPT4KKwkgeworCSAgICAgJ2V2ZXJ5dGhpbmcnID0+IHsKKwkgICAgIH0sCisJICAgICAncmVhZC1vbmx5JyA9PiB7CisJCSAnZW5hYmxlLXJlYWQtb25seScgPT4gJycsCisJICAgICB9LAorCSAgICAgJ25vdGlmeS1vbmx5JyA9PiB7CisJCSAnZW5hYmxlLW5vdGlmeS1vbmx5JyA9PiAnJywKKwkgICAgIH0KKwkgfQorICAgICB9LAorICAgICB7CisJIHRpdGxlID0+ICdwZXJsJywKKwkgYXJndW1lbnRzID0+CisJIHsgCisJICAgICAnd2l0aG91dC1wZXJsLW1vZHVsZXMnID0+IHsKKwkJICd3aXRob3V0LXBlcmwtbW9kdWxlcycgICAgPT4gJycsCisJCSAnZGlzYWJsZS1lbWJlZGRlZC1wZXJsJyA9PiAnJywKKwkgICAgIH0sCisJICAgICAnd2l0aC1wZXJsLW5vLWVtYmVkZGluZycgPT4geworCQkgJ3dpdGgtcGVybC1tb2R1bGVzJyAgICA9PiAnJywKKwkJICdkaXNhYmxlLWVtYmVkZGVkLXBlcmwnID0+ICcnLAorCSAgICAgfSwKKwkgICAgICd3aXRoLXBlcmwtYW5kLWVtYmVkZGluZycgPT4geworCQkgJ3dpdGgtcGVybC1tb2R1bGVzJyAgICA9PiAnJywKKwkJICdlbmFibGUtZW1iZWRkZWQtcGVybCcgPT4gJycsCisJICAgICB9CisJIH0KKyAgICAgfSwKKyAgICApOworCisjIG1hcCB0aGVzZSB0byBhIHJlZmVyZW5jYWJsZSBsb29rdXAgaGFzaAorbXkgJWFyZ3VtZW50c2V0czsKK2ZvcmVhY2ggbXkgJHNldCAoQGFyZ3VtZW50c2V0cykgeworICAgICRhcmd1bWVudHNldHN7JHNldC0+eyd0aXRsZSd9fSA9ICRzZXQ7Cit9CisKK2lmICgkb3B0c3snbCd9KSB7CisgICAgcHJpbnQgIlR5cGVzIGF2YWlsYWJsZTpcbiI7CisgICAgcHJpbnRmKCIgICUtNDAuNDBzICVzXG4iLCAiVGVzdCBUaXRsZSIsICJOdW1iZXIgb2Ygc3VidGVzdHMiKTsKKyAgICBwcmludGYoIiAgJS00MC40MHMgJXNcbiIsICItIiB4IDM5LCAiLSIgeCBsZW5ndGgoIk51bWJlciBvZiBzdWJ0ZXN0cyIpKTsKKyAgICBmb3JlYWNoIG15ICR0eXBlIChAYXJndW1lbnRzZXRzKSB7CisJbXkgQGtleXMgPSBrZXlzKCV7JHR5cGUtPnsnYXJndW1lbnRzJ319KTsKKwlwcmludGYoIiAgJS00MC40MHMgJXNcbiIsICR0eXBlLT57J3RpdGxlJ30sICQja2V5cysxKTsKKyAgICB9CisgICAgZXhpdDsKK30KKworbXkgJXR5cGVzOworaWYgKCRvcHRzeyd0J30pIHsKKyAgICBteSBAdHlwZXMgPSBzcGxpdCgvLFxzKi8sICRvcHRzeyd0J30pOworICAgIGZvcmVhY2ggbXkgJHR5cGUgKEB0eXBlcykgeworCSR0eXBlc3skdHlwZX0gPSAxOworICAgIH0KK30KKworaWYgKCRvcHRzeydiJ30pIHsKKyAgICAjIHVzZSB0aGlzIHNldCBhcyB0aGUgYmFzZSBkZWZhdWx0IHNldCBvZiBhcmd1bWVudHMKKyAgICAoJGJhc2VuYW1lLCAkYmFzZW51bSkgPSAoJG9wdHN7J2InfSA9fiAvKC4qKTooXGQrKS8pOworICAgIGlmICghZXhpc3RzKCRhcmd1bWVudHNldHN7JGJhc2VuYW1lfSkpIHsKKwlwcmludGYgU1RERVJSICJmYWlsZWQgdG8gZmluZCBzZXQgZm9yIC1iIGFyZ3VtZW50OiAlc1xuIiwgJGJhc2VuYW1lOworCWV4aXQoMSk7CisgICAgfQorICAgIEBzZXRzID0gYWRkX2luX2ZsYWdzKCRhcmd1bWVudHNldHN7JGJhc2VuYW1lfSwgXCViYXNlX2FyZ3MsICgpKTsKKyAgICBAc2V0cyA9IEBzZXRzWyRiYXNlbnVtXTsKKyAgICAlYmFzZV9hcmdzID0gJXskc2V0c1swXX07Cit9CisKK2ZvcmVhY2ggbXkgJHNldCAoQGFyZ3VtZW50c2V0cykgeworICAgIGlmICghJG9wdHN7J3QnfSB8fCBleGlzdHMoJHR5cGVzeyRzZXQtPnsndGl0bGUnfX0pKSB7CisgICAgICAgIGlmICgkYmFzZW5hbWUgJiYgJHNldC0+eyd0aXRsZSd9IGVxICRiYXNlbmFtZSkgeworICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgfQorCUBzZXRzID0gYWRkX2luX2ZsYWdzKCRzZXQsIFwlYmFzZV9hcmdzLCBAc2V0cyk7CisgICAgfQorfQorCitpZiAoJG9wdHN7J2MnfSkgeworICAgICMgcHJpbnQgdGhlIGNvbmZpZ3VyZSBmbGFncworICAgIGZvcmVhY2ggbXkgJHNldCAoQHNldHMpIHsKKwlwcmludCAiJHNldC0+eyd0aXRsZSd9OlxuIjsKKwlwcmludCAiICIsIGdlbmVyYXRlX2NvbmZpZ3VyZV9mbGFncygkc2V0KSwgIlxuIjsKKyAgICB9CisgICAgZXhpdDsKK30KKworbXkgJHN1bW1hcnlmaWxlOworaWYgKCRvcHRzeydvJ30gJiYgISRvcHRzeyduJ30pIHsKKyAgICAkc3VtbWFyeWZpbGUgPSBuZXcgSU86OkZpbGU7CisgICAgJHN1bW1hcnlmaWxlLT5vcGVuKCI+JG9wdHN7b30iKTsKK30KKworbXkgJGNvdW50ID0gMDsKK2ZvcmVhY2ggbXkgJHNldCAoQHNldHMpIHsKKyAgICAkY291bnQrKzsKKyAgICBidWlsZF9zZXQoJGNvdW50LCAkc2V0KTsKK30KKworc3ViIGFkZF9pbl9mbGFncyB7CisgICAgbXkgKCRhcmd1bWVudHNldCwgJGJhc2VfZmxhZ3MsIEBjdXJyZW50X2ZsYWdzKSA9IEBfOworCisgICAgbXkgQG5ld19mbGFnczsKKworICAgICMgZG8gYSBsaW5lYXIgc2VhcmNoIG9mIHRoZSBvcHRpb25zCisgICAgaWYgKCEgJG9wdHN7J2UnfSkgeworCUBuZXdfZmxhZ3MgPSBAY3VycmVudF9mbGFnczsKKwlmb3JlYWNoIG15ICRuZXdhcmdzIChrZXlzKCV7JGFyZ3VtZW50c2V0LT57J2FyZ3VtZW50cyd9fSkpIHsKKwkgICAgbXkgJWZsYWdzID0gJSRiYXNlX2ZsYWdzOworCisJICAgICRmbGFnc3sndGl0bGUnfSA9ICIkZmxhZ3N7J3RpdGxlJ306JG5ld2FyZ3MiOworCisJICAgIGZvcmVhY2ggbXkgJG5ld2ZsYWcgKGtleXMoJXskYXJndW1lbnRzZXQtPnsnYXJndW1lbnRzJ317JG5ld2FyZ3N9fSkpIHsKKworCQkkZmxhZ3N7JG5ld2ZsYWd9IC49ICIgJGFyZ3VtZW50c2V0LT57J2FyZ3VtZW50cyd9eyRuZXdhcmdzfXskbmV3ZmxhZ30iOworCSAgICB9CisJICAgIHB1c2ggQG5ld19mbGFncywgXCVmbGFnczsKKwl9CisJcmV0dXJuIEBuZXdfZmxhZ3M7CisgICAgfQorCisgICAgIyBvciBhbiBleHBvbmVudGlhbCBzZWFyY2gKKyAgICBmb3JlYWNoIG15ICRmbGFncyAoQGN1cnJlbnRfZmxhZ3MpIHsKKwlmb3JlYWNoIG15ICRuZXdhcmdzIChrZXlzKCV7JGFyZ3VtZW50c2V0LT57J2FyZ3VtZW50cyd9fSkpIHsKKwkgICAgbXkgJWZsYWdzID0gJXskZmxhZ3N9OyAgIyBjb3B5IHRoZSBleGlzdGluZyBoYXNoLXNldCBvZiBmbGFncworCSAgICAKKwkgICAgaWYgKGV4aXN0cygkZmxhZ3N7J3RpdGxlJ30pKSB7CisJCSRmbGFnc3sndGl0bGUnfSAuPSAiLCAkbmV3YXJncyI7CisJICAgIH0gZWxzZSB7CisJCSRmbGFnc3sndGl0bGUnfSAuPSAiJG5ld2FyZ3MiOworCSAgICB9CisJICAgIGZvcmVhY2ggbXkgJG5ld2ZsYWcgKGtleXMoJXskYXJndW1lbnRzZXQtPnsnYXJndW1lbnRzJ317JG5ld2FyZ3N9fSkpIHsKKworCQkkZmxhZ3N7JG5ld2ZsYWd9IC49ICIgJGFyZ3VtZW50c2V0LT57J2FyZ3VtZW50cyd9eyRuZXdhcmdzfXskbmV3ZmxhZ30iOworCSAgICB9CisKKwkgICAgcHVzaCBAbmV3X2ZsYWdzLCBcJWZsYWdzOworCX0KKyAgICB9CisKKyAgICByZXR1cm4gQG5ld19mbGFnczsKK30KKworc3ViIGdlbmVyYXRlX2NvbmZpZ3VyZV9mbGFncyB7CisgICAgbXkgKCRhcmd1bWVudHMpID0gQF87CisgICAgbXkgJGxpbmUgPSAiIjsKKyAgICBmb3JlYWNoIG15ICRhcmcgKGtleXMoJSRhcmd1bWVudHMpKSB7CisJbmV4dCBpZiAoJGFyZyBlcSAndGl0bGUnKTsKKwlpZiAoJGFyZ3VtZW50cy0+eyRhcmd9ID1+IC9eXHMqJC8pIHsKKwkgICAgJGxpbmUgLj0gIiAtLSRhcmciOworCX0gZWxzZSB7CisJICAgICRsaW5lIC49ICIgLS0kYXJnPVwiJGFyZ3VtZW50cy0+eyRhcmd9XCIiOworCX0KKyAgICB9CisgICAgcmV0dXJuICRsaW5lOworfQorCitzdWIgYnVpbGRfc2V0IHsKKyAgICBteSAoJG51bSwgJGFyZ3VtZW50cykgPSBAXzsKKworICAgICRudW0gPSBzcHJpbnRmKCIlMDNkIiwgJG51bSk7CisKKyAgICBteSAkZmlsZTsKKworICAgIGlmICghJG9wdHN7J24nfSkgeworCW1rZGlyICRvcHRzeydkJ30gaWYgKCEgLWQgJG9wdHN7J2QnfSk7CisJZGllICJmYWlsZWQgdG8gY3JlYXRlIHRoZSAkb3B0c3snZCd9IGRpcmVjdG9yeSIgaWYgKCEgLWQgJG9wdHN7J2QnfSk7CisKKwkkZmlsZSA9IG5ldyBJTzo6RmlsZTsKKwkkZmlsZS0+b3BlbigiPiRvcHRzeydkJ30vJG51bS0wLWNtZC1zdW1tYXJ5Iik7CisJJGZpbGUtPnByaW50KCJDcmVhdGluZyBvdXRwdXQgZm9yOiAkYXJndW1lbnRzLT57J3RpdGxlJ31cbiIpOworICAgIH0KKworICAgIHByaW50ICI9PT09PT09PT09PT09PT09PT09PSAkYXJndW1lbnRzLT57J3RpdGxlJ31cbiI7CisKKworICAgIFN5c3RlbSAoJGZpbGUsICRudW0sICIxLWRpc3RjbGVhbiIsICJtYWtlIGRpc3RjbGVhbiIpOworICAgIFN5c3RlbSAoJGZpbGUsICRudW0sICIyLWNvbmZpZ3VyZSIsCisJICAgICIuL2NvbmZpZ3VyZSAiIC4gZ2VuZXJhdGVfY29uZmlndXJlX2ZsYWdzKCRhcmd1bWVudHMpKTsKKyAgICBTeXN0ZW0gKCRmaWxlLCAkbnVtLCAiMy1mZWF0dXJlcyIsICJtYWtlIGZlYXR1cmVzIik7CisgICAgU3lzdGVtICgkZmlsZSwgJG51bSwgIjQtbWFrZSIsICJtYWtlICRvcHRzeydqJ30iKTsKKyAgICBTeXN0ZW0gKCRmaWxlLCAkbnVtLCAiNS11bnVzZWQtY29kZSIsICJwZXJsIGxvY2FsL21pbmltYWxpc3QvZmluZC11bnVzZWQtY29kZSAtZyIpOworICAgIFN5c3RlbSAoJGZpbGUsICRudW0sICI2LXRlc3RpbmciLCAibWFrZSAtQyB0ZXN0aW5nIHRlc3QiKSBpZiAoJG9wdHN7J1QnfSk7CisKKyAgICBpZiAoISRvcHRzeyduJ30pIHsKKwlhbmFseXplX3NpemUoJGFyZ3VtZW50cy0+eyd0aXRsZSd9LCAiJG9wdHN7J2QnfS8kbnVtLTktcmVzdWx0cyIpOworICAgIH0KK30KKworc3ViIGFuYWx5emVfc2l6ZSB7CisgICAgbXkgKCR0aXRsZSwgJGZpbGVuYW1lKSA9IEBfOworCisgICAgbXkgJG91dGZpbGUgPSBuZXcgSU86OkZpbGU7CisgICAgJG91dGZpbGUtPm9wZW4oIj4kZmlsZW5hbWUiKTsKKworICAgIHByaW50ICJSZXN1bHRzIGZvcjogJHRpdGxlXG4iOworICAgIHByaW50ZiAkb3V0ZmlsZSAiUmVzdWx0cyBmb3I6ICR0aXRsZVxuIjsKKyAgICBwcmludGYgKCIlLTUwLjUwcyAlMTBzXG4iLCAiLSIgeCA0OSwgIi0iIHggMTApOworICAgIHByaW50ZiAkb3V0ZmlsZSAoIiUtNTAuNTBzICUxMHNcbiIsICItIiB4IDQ5LCAiLSIgeCAxMCk7CisKKyAgICBteSAkdG90YWxzaXplID0gMDsKKyAgICBmb3JlYWNoIG15ICRidWlsZGZpbGUgKGdsb2IoInNubXBsaWIvLmxpYnMvbGliKi5zby4qLjAuMCIpLAorCQkJICAgZ2xvYigiYWdlbnQvLmxpYnMvbGliKi5zby4qLjAuMCIpLAorCQkJICAgImFnZW50Ly5saWJzL3NubXBkIikgeworCisJbXkgQGluZm8gPSBzdGF0KCRidWlsZGZpbGUpOworCXByaW50ZiAkb3V0ZmlsZSAoIiUtNTAuNTBzICUxMHNcbiIsICRidWlsZGZpbGUsICRpbmZvWzddKTsKKwlwcmludGYoIiUtNTAuNTBzICUxMHNcbiIsICRidWlsZGZpbGUsICRpbmZvWzddKTsKKwkkdG90YWxzaXplICs9ICRpbmZvWzddOworICAgIH0KKyAgICBwcmludGYgJG91dGZpbGUgKCIlLTUwLjUwcyAlMTBzXG4iLCAiLSIgeCA0OSwgIi0iIHggMTApOworICAgIHByaW50ZiAkb3V0ZmlsZSAoIiUtNTAuNTBzICUxMHMgYnl0ZXNcbiIsICJUT1RBTCIsICR0b3RhbHNpemUpOworCisgICAgcHJpbnRmKCIlLTUwLjUwcyAlMTBzXG4iLCAiLSIgeCA0OSwgIi0iIHggMTApOworICAgIHByaW50ZigiJS01MC41MHMgJTEwcyBieXRlc1xuIiwgIlRPVEFMIiwgJHRvdGFsc2l6ZSk7CisKKyAgICBpZiAoZGVmaW5lZCgkc3VtbWFyeWZpbGUpKSB7CisJbXkgJHJlc3RyaWN0ZWRfdGl0bGUgPSAkdGl0bGU7CisJJHJlc3RyaWN0ZWRfdGl0bGUgPX4gcy9bXmEtekEtWl0vXy9nOworCXByaW50ZiAkc3VtbWFyeWZpbGUgIiUxMHMgJXMgXG4iLCAkdG90YWxzaXplLCAkdGl0bGU7CisgICAgfQorCisgICAgcmV0dXJuICR0b3RhbHNpemU7Cit9CisKK3N1YiB1c2FnZSB7CisgICAgcHJpbnQgIlVzYWdlOiAkMCBbRkxBR1NdXG5cbiI7CisgICAgcHJpbnQgIkZMQUdTOlxuIjsKKyAgICBwcmludCAiICAtaFx0XHRoZWxwXG4iOworICAgIHByaW50ICIgIC10IFRZUEVTXHRTZWxlY3QgdHlwZXMgdG8gYW5hbHl6ZSAoZGVmYXVsdCA9IGFsbClcbiI7CisgICAgcHJpbnQgIiAgLWxcdFx0TGlzdCBhdmFpbGFibGUgdHlwZXNcbiI7CisgICAgcHJpbnQgIiAgLWNcdFx0UHJpbnQgdGhlIGNvbmZpZ3VyYXRpb24gZmxhZ3MgdGhhdCB3b3VsZCBiZSB1c2VkXG4iOworICAgIHByaW50ICIgIC1EIERJUlx0U2F2ZSBkYXRhIHJlc3VsdHMgdG8gdGhpcyBkaXJlY3RvcnlcbiI7CisgICAgcHJpbnQgIiAgLW8gRklMRVx0U2F2ZSBhIGNvbXBsZXRlIHN1bW1hcnkgY2hhcnQgdG8gRklMRVxuIjsgCisgICAgcHJpbnQgIiAgLW5cdFx0RHJ5IHJ1biAtLSBvbmx5IHNob3cgdGhlIGNvbW1hbmRzIHRvIGV4ZWN1dGVcbiI7CisgICAgcHJpbnQgIiAgLWogTlVNXHRFeGVjdXRlIG1ha2Ugd2l0aCBwYXJhbGxlbCBidWlsZGluZyAoLWpOVU0pXG4iOworICAgIHByaW50ICIgIC1lXHRcdFVzZSBleHBvbmVudGlhbCBleHBhbnNpb24gKGFsbCBjb21ib3MpIG9mIHRoZSByZXF1ZXN0ZWQgb3B0aW9uc1xuIjsKKyAgICBwcmludCAiICAtYiBOQU1FOk5VTVx0VXNlIE5BTUUgYW5kIHRoZSBOVU0ndGggc2V0IGFzIHRoZSBiYXNlIGFyZ3VtZW50cyB0byBzdGFydCBmcm9tXG4iOworICAgIHByaW50ICIgIC1UXHRcdFJ1biAnbWFrZSB0ZXN0JyBhdCBlYWNoIHN0ZXAgYXMgd2VsbFxuIjsKKyAgICBleGl0OworfQorCitzdWIgU3lzdGVtIHsKKyAgICBteSAkZmlsZSAgPSBzaGlmdDsKKyAgICBteSAkbnVtICAgPSBzaGlmdDsKKyAgICBteSAkdGl0bGUgPSBzaGlmdDsKKyAgICBteSAkcGlwZSA9ICIgMj4mMSB8IHRlZSAkb3B0c3snZCd9LyRudW0tJHRpdGxlLm91dFxuIjsKKworICAgIHByaW50ICIjIyMgIiwgam9pbigiICIsIEBfKSwgJHBpcGU7CisgICAgaWYgKCEkb3B0c3snbid9ICYmICRmaWxlKSB7CisJcHJpbnQgJGZpbGUgIiMjIyAiLCBqb2luKCIgIiwgQF8pLCAiXG4iOworICAgIH0KKworICAgIGlmICghJG9wdHN7J24nfSkgeworCXN5c3RlbShqb2luKCIgIiwgQF8pIC4gJHBpcGUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2xvY2FsL25ldC1zbm1wLWNlcnQgYi9sb2NhbC9uZXQtc25tcC1jZXJ0CmluZGV4IDg1MmE0N2YuLmE0NWRjNTcgMTAwNzU1Ci0tLSBhL2xvY2FsL25ldC1zbm1wLWNlcnQKKysrIGIvbG9jYWwvbmV0LXNubXAtY2VydApAQCAtMTUxOSw3ICsxNTE5LDcgQEAKIAogICAjIEV4aXN0aW5nIG9wZW5zc2wuY29uZiB0bXBsIHdpbGwgYmUgcHJlc2VydmVkCiAgIGlmICgtZiAkc3NsX2NmZ19pbikgewotICAgIE5ldFNOTVA6OkNlcnQ6OmR3YXJuKCJPcGVuU1NMIHRlbXBsYXRlIGV4aXN0czogcHJlc2VydmluZy4uLiIsICRvcHRzKTsKKyAgICBOZXRTTk1QOjpDZXJ0Ojpkd2FybigiT3BlblNTTCB0ZW1wbGF0ZSBleGlzdHMgKCRzc2xfY2ZnX2luKTogcHJlc2VydmluZy4uLiIsICRvcHRzKTsKICAgfQogCiAgIGlmIChub3QgLWYgJHNzbF9jZmdfaW4pIHsKZGlmZiAtLWdpdCBhL2xvY2FsL3NubXBjb25mIGIvbG9jYWwvc25tcGNvbmYuaW4Kc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gbG9jYWwvc25tcGNvbmYKcmVuYW1lIHRvIGxvY2FsL3NubXBjb25mLmluCmluZGV4IDM3YTUxMzYuLmJmZjgwMjUgMTAwNzU1Ci0tLSBhL2xvY2FsL3NubXBjb25mCisrKyBiL2xvY2FsL3NubXBjb25mLmluCkBAIC05MiwxMyArOTIsOSBAQAogfQogCiAjCi0jIEV4cGFuZCB0aGUgc2VhcmNoIHBhdGggaW4gY2FzZSBpdCBjb250YWlucyBtdWx0aXBsZSBkaXJlY3RvcmllcwotIyBzZXBhcmF0ZWQgYnkgOiAoVW5peCkgb3IgOyAoV2luMzIpCisjIEV4cGFuZCB0aGUgc2VhcmNoIHBhdGggaW4gY2FzZSBpdCBjb250YWlucyBtdWx0aXBsZSBkaXJlY3Rvcmllcy4KICMKLW15ICRFTlZfU0VQQVJBVE9SID0gJzonOwotaWYgKCReTyBlcSAnTVNXaW4zMicpIHsKLSAgJEVOVl9TRVBBUkFUT1IgPSAnOyc7Ci19CitteSAkRU5WX1NFUEFSQVRPUiA9ICdARU5WX1NFUEFSQVRPUkAnOwogbXkgQHNlYXJjaHBhdGggPSBzcGxpdCgvJEVOVl9TRVBBUkFUT1IvLCAkY29uZnBhdGgpOwogcHVzaCBAc2VhcmNocGF0aCwgIi91c3IvbG9jYWwvZXRjL3NubXAiOwogcHVzaCBAc2VhcmNocGF0aCwgIi4iOwpkaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCmluZGV4IDFlM2IxNDYuLmVkMTgxNGYgMTAwNzU1Ci0tLSBhL2x0bWFpbi5zaAorKysgYi9sdG1haW4uc2gKQEAgLTEsOSArMSw5IEBACi0jIEdlbmVyYXRlZCBmcm9tIGx0bWFpbi5tNHNoLgogCi0jIGx0bWFpbi5zaCAoR05VIGxpYnRvb2wpIDIuMi42CisjIGxpYnRvb2wgKEdOVSBsaWJ0b29sKSAyLjQKICMgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCA8Z29yZEBnbnUuYWkubWl0LmVkdT4sIDE5OTYKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LAorIyAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIyBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTwogIyB3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KIApAQCAtMzIsNTAgKzMyLDU2IEBACiAjCiAjIFByb3ZpZGUgZ2VuZXJhbGl6ZWQgbGlicmFyeS1idWlsZGluZyBzdXBwb3J0IHNlcnZpY2VzLgogIwotIyAgICAgLS1jb25maWcgICAgICAgICAgICAgc2hvdyBhbGwgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKLSMgICAgIC0tZGVidWcgICAgICAgICAgICAgIGVuYWJsZSB2ZXJib3NlIHNoZWxsIHRyYWNpbmcKLSMgLW4sIC0tZHJ5LXJ1biAgICAgICAgICAgIGRpc3BsYXkgY29tbWFuZHMgd2l0aG91dCBtb2RpZnlpbmcgYW55IGZpbGVzCi0jICAgICAtLWZlYXR1cmVzICAgICAgICAgICBkaXNwbGF5IGJhc2ljIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQKLSMgICAgIC0tbW9kZT1NT0RFICAgICAgICAgIHVzZSBvcGVyYXRpb24gbW9kZSBNT0RFCi0jICAgICAtLXByZXNlcnZlLWR1cC1kZXBzICBkb24ndCByZW1vdmUgZHVwbGljYXRlIGRlcGVuZGVuY3kgbGlicmFyaWVzCi0jICAgICAtLXF1aWV0LCAtLXNpbGVudCAgICBkb24ndCBwcmludCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzCi0jICAgICAtLXRhZz1UQUcgICAgICAgICAgICB1c2UgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZnJvbSB0YWcgVEFHCi0jIC12LCAtLXZlcmJvc2UgICAgICAgICAgICBwcmludCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzIChkZWZhdWx0KQotIyAgICAgLS12ZXJzaW9uICAgICAgICAgICAgcHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvbgotIyAtaCwgLS1oZWxwICAgICAgICAgICAgICAgcHJpbnQgc2hvcnQgb3IgbG9uZyBoZWxwIG1lc3NhZ2UKKyMgICAgICAgLS1jb25maWcgICAgICAgICAgICAgc2hvdyBhbGwgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKKyMgICAgICAgLS1kZWJ1ZyAgICAgICAgICAgICAgZW5hYmxlIHZlcmJvc2Ugc2hlbGwgdHJhY2luZworIyAgIC1uLCAtLWRyeS1ydW4gICAgICAgICAgICBkaXNwbGF5IGNvbW1hbmRzIHdpdGhvdXQgbW9kaWZ5aW5nIGFueSBmaWxlcworIyAgICAgICAtLWZlYXR1cmVzICAgICAgICAgICBkaXNwbGF5IGJhc2ljIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQKKyMgICAgICAgLS1tb2RlPU1PREUgICAgICAgICAgdXNlIG9wZXJhdGlvbiBtb2RlIE1PREUKKyMgICAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcyAgZG9uJ3QgcmVtb3ZlIGR1cGxpY2F0ZSBkZXBlbmRlbmN5IGxpYnJhcmllcworIyAgICAgICAtLXF1aWV0LCAtLXNpbGVudCAgICBkb24ndCBwcmludCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzCisjICAgICAgIC0tbm8tcXVpZXQsIC0tbm8tc2lsZW50CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMgKGRlZmF1bHQpCisjICAgICAgIC0tdGFnPVRBRyAgICAgICAgICAgIHVzZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmcm9tIHRhZyBUQUcKKyMgICAtdiwgLS12ZXJib3NlICAgICAgICAgICAgcHJpbnQgbW9yZSBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzIHRoYW4gZGVmYXVsdAorIyAgICAgICAtLW5vLXZlcmJvc2UgICAgICAgICBkb24ndCBwcmludCB0aGUgZXh0cmEgaW5mb3JtYXRpb25hbCBtZXNzYWdlcworIyAgICAgICAtLXZlcnNpb24gICAgICAgICAgICBwcmludCB2ZXJzaW9uIGluZm9ybWF0aW9uCisjICAgLWgsIC0taGVscCwgLS1oZWxwLWFsbCAgIHByaW50IHNob3J0LCBsb25nLCBvciBkZXRhaWxlZCBoZWxwIG1lc3NhZ2UKICMKICMgTU9ERSBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogIwotIyAgICAgICBjbGVhbiAgICAgICAgICAgICAgcmVtb3ZlIGZpbGVzIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeQotIyAgICAgICBjb21waWxlICAgICAgICAgICAgY29tcGlsZSBhIHNvdXJjZSBmaWxlIGludG8gYSBsaWJ0b29sIG9iamVjdAotIyAgICAgICBleGVjdXRlICAgICAgICAgICAgYXV0b21hdGljYWxseSBzZXQgbGlicmFyeSBwYXRoLCB0aGVuIHJ1biBhIHByb2dyYW0KLSMgICAgICAgZmluaXNoICAgICAgICAgICAgIGNvbXBsZXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgbGlidG9vbCBsaWJyYXJpZXMKLSMgICAgICAgaW5zdGFsbCAgICAgICAgICAgIGluc3RhbGwgbGlicmFyaWVzIG9yIGV4ZWN1dGFibGVzCi0jICAgICAgIGxpbmsgICAgICAgICAgICAgICBjcmVhdGUgYSBsaWJyYXJ5IG9yIGFuIGV4ZWN1dGFibGUKLSMgICAgICAgdW5pbnN0YWxsICAgICAgICAgIHJlbW92ZSBsaWJyYXJpZXMgZnJvbSBhbiBpbnN0YWxsZWQgZGlyZWN0b3J5CisjICAgICAgICAgY2xlYW4gICAgICAgICAgICAgIHJlbW92ZSBmaWxlcyBmcm9tIHRoZSBidWlsZCBkaXJlY3RvcnkKKyMgICAgICAgICBjb21waWxlICAgICAgICAgICAgY29tcGlsZSBhIHNvdXJjZSBmaWxlIGludG8gYSBsaWJ0b29sIG9iamVjdAorIyAgICAgICAgIGV4ZWN1dGUgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHNldCBsaWJyYXJ5IHBhdGgsIHRoZW4gcnVuIGEgcHJvZ3JhbQorIyAgICAgICAgIGZpbmlzaCAgICAgICAgICAgICBjb21wbGV0ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIGxpYnRvb2wgbGlicmFyaWVzCisjICAgICAgICAgaW5zdGFsbCAgICAgICAgICAgIGluc3RhbGwgbGlicmFyaWVzIG9yIGV4ZWN1dGFibGVzCisjICAgICAgICAgbGluayAgICAgICAgICAgICAgIGNyZWF0ZSBhIGxpYnJhcnkgb3IgYW4gZXhlY3V0YWJsZQorIyAgICAgICAgIHVuaW5zdGFsbCAgICAgICAgICByZW1vdmUgbGlicmFyaWVzIGZyb20gYW4gaW5zdGFsbGVkIGRpcmVjdG9yeQogIwotIyBNT0RFLUFSR1MgdmFyeSBkZXBlbmRpbmcgb24gdGhlIE1PREUuCisjIE1PREUtQVJHUyB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgTU9ERS4gIFdoZW4gcGFzc2VkIGFzIGZpcnN0IG9wdGlvbiwKKyMgYC0tbW9kZT1NT0RFJyBtYXkgYmUgYWJicmV2aWF0ZWQgYXMgYE1PREUnIG9yIGEgdW5pcXVlIGFiYnJldmlhdGlvbiBvZiB0aGF0LgogIyBUcnkgYCRwcm9nbmFtZSAtLWhlbHAgLS1tb2RlPU1PREUnIGZvciBhIG1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgTU9ERS4KICMKICMgV2hlbiByZXBvcnRpbmcgYSBidWcsIHBsZWFzZSBkZXNjcmliZSBhIHRlc3QgY2FzZSB0byByZXByb2R1Y2UgaXQgYW5kCiAjIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjoKICMKLSMgICAgICAgaG9zdC10cmlwbGV0OgkkaG9zdAotIyAgICAgICBzaGVsbDoJCSRTSEVMTAotIyAgICAgICBjb21waWxlcjoJCSRMVENDCi0jICAgICAgIGNvbXBpbGVyIGZsYWdzOgkJJExUQ0ZMQUdTCi0jICAgICAgIGxpbmtlcjoJCSRMRCAoZ251PyAkd2l0aF9nbnVfbGQpCi0jICAgICAgICRwcm9nbmFtZToJCShHTlUgbGlidG9vbCkgMi4yLjYKLSMgICAgICAgYXV0b21ha2U6CQkkYXV0b21ha2VfdmVyc2lvbgotIyAgICAgICBhdXRvY29uZjoJCSRhdXRvY29uZl92ZXJzaW9uCisjICAgICAgICAgaG9zdC10cmlwbGV0OgkkaG9zdAorIyAgICAgICAgIHNoZWxsOgkJJFNIRUxMCisjICAgICAgICAgY29tcGlsZXI6CQkkTFRDQworIyAgICAgICAgIGNvbXBpbGVyIGZsYWdzOgkJJExUQ0ZMQUdTCisjICAgICAgICAgbGlua2VyOgkJJExEIChnbnU/ICR3aXRoX2dudV9sZCkKKyMgICAgICAgICAkcHJvZ25hbWU6CShHTlUgbGlidG9vbCkgMi40CisjICAgICAgICAgYXV0b21ha2U6CSRhdXRvbWFrZV92ZXJzaW9uCisjICAgICAgICAgYXV0b2NvbmY6CSRhdXRvY29uZl92ZXJzaW9uCiAjCiAjIFJlcG9ydCBidWdzIHRvIDxidWctbGlidG9vbEBnbnUub3JnPi4KKyMgR05VIGxpYnRvb2wgaG9tZSBwYWdlOiA8aHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYnRvb2wvPi4KKyMgR2VuZXJhbCBoZWxwIHVzaW5nIEdOVSBzb2Z0d2FyZTogPGh0dHA6Ly93d3cuZ251Lm9yZy9nZXRoZWxwLz4uCiAKLVBST0dSQU09bHRtYWluLnNoCitQUk9HUkFNPWxpYnRvb2wKIFBBQ0tBR0U9bGlidG9vbAotVkVSU0lPTj0yLjIuNgorVkVSU0lPTj0yLjQKIFRJTUVTVEFNUD0iIgotcGFja2FnZV9yZXZpc2lvbj0xLjMwMTIKK3BhY2thZ2VfcmV2aXNpb249MS4zMjkzCiAKICMgQmUgQm91cm5lIGNvbXBhdGlibGUKIGlmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgpAQCAtOTEsMTAgKzk3LDE1IEBACiBCSU5fU0g9eHBnNDsgZXhwb3J0IEJJTl9TSCAjIGZvciBUcnU2NAogRFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMgZm9yIE1LUyBzaAogCisjIEEgZnVuY3Rpb24gdGhhdCBpcyB1c2VkIHdoZW4gdGhlcmUgaXMgbm8gcHJpbnQgYnVpbHRpbiBvciBwcmludGYuCitmdW5jX2ZhbGxiYWNrX2VjaG8gKCkKK3sKKyAgZXZhbCAnY2F0IDw8X0xURUNIT19FT0YKKyQxCitfTFRFQ0hPX0VPRicKK30KKwogIyBOTFMgbnVpc2FuY2VzOiBXZSBzYXZlIHRoZSBvbGQgdmFsdWVzIHRvIHJlc3RvcmUgZHVyaW5nIGV4ZWN1dGUgbW9kZS4KLSMgT25seSBzZXQgTEFORyBhbmQgTENfQUxMIHRvIEMgaWYgYWxyZWFkeSBzZXQuCi0jIFRoZXNlIG11c3Qgbm90IGJlIHNldCB1bmNvbmRpdGlvbmFsbHkgYmVjYXVzZSBub3QgYWxsIHN5c3RlbXMgdW5kZXJzdGFuZAotIyBlLmcuIExBTkc9QyAobm90YWJseSBTQ08pLgogbHRfdXNlcl9sb2NhbGU9CiBsdF9zYWZlX2xvY2FsZT0KIGZvciBsdF92YXIgaW4gTEFORyBMQU5HVUFHRSBMQ19BTEwgTENfQ1RZUEUgTENfQ09MTEFURSBMQ19NRVNTQUdFUwpAQCAtMTA3LDI0ICsxMTgsMzMgQEAKIAkgIGx0X3NhZmVfbG9jYWxlPVwiJGx0X3Zhcj1DOyBcJGx0X3NhZmVfbG9jYWxlXCIKIAlmaSIKIGRvbmUKK0xDX0FMTD1DCitMQU5HVUFHRT1DCitleHBvcnQgTEFOR1VBR0UgTENfQUxMCiAKICRsdF91bnNldCBDRFBBVEgKIAogCisjIFdvcmsgYXJvdW5kIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXNzdWUgb24gSVJJWCA2LjUuIE9uIElSSVggNi40Kywgc2gKKyMgaXMga3NoIGJ1dCB3aGVuIHRoZSBzaGVsbCBpcyBpbnZva2VkIGFzICJzaCIgYW5kIHRoZSBjdXJyZW50IHZhbHVlIG9mCisjIHRoZSBfWFBHIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBlcXVhbCB0byAxIChvbmUpLCB0aGUgc3BlY2lhbAorIyBwb3NpdGlvbmFsIHBhcmFtZXRlciAkMCwgd2l0aGluIGEgZnVuY3Rpb24gY2FsbCwgaXMgdGhlIG5hbWUgb2YgdGhlCisjIGZ1bmN0aW9uLgorcHJvZ3BhdGg9IiQwIgogCiAKIAogOiAke0NQPSJjcCAtZiJ9Ci06ICR7RUNITz0iZWNobyJ9Ci06ICR7RUdSRVA9Ii91c3IvYmluL2dyZXAgLUUifQotOiAke0ZHUkVQPSIvdXNyL2Jpbi9ncmVwIC1GIn0KLTogJHtHUkVQPSIvdXNyL2Jpbi9ncmVwIn0KK3Rlc3QgIiR7RUNITytzZXR9IiA9IHNldCB8fCBFQ0hPPSR7YXNfZWNoby0ncHJpbnRmICVzXG4nfQorOiAke0VHUkVQPSJncmVwIC1FIn0KKzogJHtGR1JFUD0iZ3JlcCAtRiJ9Cis6ICR7R1JFUD0iZ3JlcCJ9CiA6ICR7TE5fUz0ibG4gLXMifQogOiAke01BS0U9Im1ha2UifQogOiAke01LRElSPSJta2RpciJ9CiA6ICR7TVY9Im12IC1mIn0KIDogJHtSTT0icm0gLWYifQotOiAke1NFRD0iL29wdC9sb2NhbC9iaW4vZ3NlZCJ9Cis6ICR7U0VEPSJzZWQifQogOiAke1NIRUxMPSIke0NPTkZJR19TSEVMTC0vYmluL3NofSJ9CiA6ICR7WHNlZD0iJFNFRCAtZSAxcy9eWC8vIn0KIApAQCAtMTQ0LDYgKzE2NCwyNyBAQAogZGlybmFtZT0icywvW14vXSokLCwiCiBiYXNlbmFtZT0icyxeLiovLCwiCiAKKyMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCitmdW5jX2Rpcm5hbWUgKCkKK3sKKyAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCisgICAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCisgICAgZWxzZQorICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorICAgIGZpCit9ICMgZnVuY19kaXJuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKKyMgZnVuY19iYXNlbmFtZSBmaWxlCitmdW5jX2Jhc2VuYW1lICgpCit7CisgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCit9ICMgZnVuY19iYXNlbmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCiAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CiAjIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCiAjIGNhbGw6CkBAIC0xNTgsMzMgKzE5OSwxODMgQEAKICMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgogZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQogewotICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRkaXJuYW1lImAKLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotICBlbHNlCi0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotICBmaQotICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkYmFzZW5hbWUiYAorICAgICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCisgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGRpcm5hbWUiYAorICAgIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCisgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorICAgIGVsc2UKKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKyAgICBmaQorICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkYmFzZW5hbWUiYAorfSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKyMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCisjIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCisjIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCisjIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCitmdW5jX3N0cmlwbmFtZSAoKQoreworICAgIGNhc2UgJHsyfSBpbgorICAgICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKyAgICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKyAgICBlc2FjCit9ICMgZnVuY19zdHJpcG5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBUaGVzZSBTRUQgc2NyaXB0cyBwcmVzdXBwb3NlIGFuIGFic29sdXRlIHBhdGggd2l0aCBhIHRyYWlsaW5nIHNsYXNoLgorcGF0aGNhcj0ncyxeL1woW14vXSpcKS4qJCxcMSwnCitwYXRoY2RyPSdzLF4vW14vXSosLCcKK3JlbW92ZWRvdHBhcnRzPSc6ZG90c2wKKwkJc0AvXC4vQC9AZworCQl0IGRvdHNsCisJCXMsL1wuJCwvLCcKK2NvbGxhcHNlc2xhc2hlcz0nc0AvXHsxLFx9QC9AZycKK2ZpbmFsc2xhc2g9J3MsLyokLC8sJworCisjIGZ1bmNfbm9ybWFsX2Fic3BhdGggUEFUSAorIyBSZW1vdmUgZG91YmxlZC11cCBhbmQgdHJhaWxpbmcgc2xhc2hlcywgIi4iIHBhdGggY29tcG9uZW50cywKKyMgYW5kIGNhbmNlbCBvdXQgYW55ICIuLiIgcGF0aCBjb21wb25lbnRzIGluIFBBVEggYWZ0ZXIgbWFraW5nCisjIGl0IGFuIGFic29sdXRlIHBhdGguCisjICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQiCitmdW5jX25vcm1hbF9hYnNwYXRoICgpCit7CisgICMgU3RhcnQgZnJvbSByb290IGRpciBhbmQgcmVhc3NlbWJsZSB0aGUgcGF0aC4KKyAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9CisgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGg9JDEKKyAgZnVuY19ub3JtYWxfYWJzcGF0aF9hbHRuYW1lc3BhY2U9CisgIGNhc2UgJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGggaW4KKyAgICAiIikKKyAgICAgICMgRW1wdHkgcGF0aCwgdGhhdCBqdXN0IG1lYW5zICRjd2QuCisgICAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLycgImBwd2RgIgorICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgICAgcmV0dXJuCisgICAgOzsKKyAgICAjIFRoZSBuZXh0IHRocmVlIGVudHJpZXMgYXJlIHVzZWQgdG8gc3BvdCBhIHJ1biBvZiBwcmVjaXNlbHkKKyAgICAjIHR3byBsZWFkaW5nIHNsYXNoZXMgd2l0aG91dCB1c2luZyBuZWdhdGVkIGNoYXJhY3RlciBjbGFzc2VzOworICAgICMgd2UgdGFrZSBhZHZhbnRhZ2Ugb2YgY2FzZSdzIGZpcnN0LW1hdGNoIGJlaGF2aW91ci4KKyAgICAvLy8qKQorICAgICAgIyBVbnVzdWFsIGZvcm0gb2YgYWJzb2x1dGUgcGF0aCwgZG8gbm90aGluZy4KKyAgICA7OworICAgIC8vKikKKyAgICAgICMgTm90IG5lY2Vzc2FyaWx5IGFuIG9yZGluYXJ5IHBhdGg7IFBPU0lYIHJlc2VydmVzIGxlYWRpbmcgJy8vJworICAgICAgIyBhbmQgZm9yIGV4YW1wbGUgQ3lnd2luIHVzZXMgaXQgdG8gYWNjZXNzIHJlbW90ZSBmaWxlIHNoYXJlcworICAgICAgIyBvdmVyIENJRlMvU01CLCBzbyB3ZSBjb25zZXJ2ZSBhIGxlYWRpbmcgZG91YmxlIHNsYXNoIGlmIGZvdW5kLgorICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9hbHRuYW1lc3BhY2U9LworICAgIDs7CisgICAgLyopCisgICAgICAjIEFic29sdXRlIHBhdGgsIGRvIG5vdGhpbmcuCisgICAgOzsKKyAgICAqKQorICAgICAgIyBSZWxhdGl2ZSBwYXRoLCBwcmVwZW5kICRjd2QuCisgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoPWBwd2RgLyRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoCisgICAgOzsKKyAgZXNhYworICAjIENhbmNlbCBvdXQgYWxsIHRoZSBzaW1wbGUgc3R1ZmYgdG8gc2F2ZSBpdGVyYXRpb25zLiAgV2UgYWxzbyB3YW50CisgICMgdGhlIHBhdGggdG8gZW5kIHdpdGggYSBzbGFzaCBmb3IgZWFzZSBvZiBwYXJzaW5nLCBzbyBtYWtlIHN1cmUKKyAgIyB0aGVyZSBpcyBvbmUgKGFuZCBvbmx5IG9uZSkgaGVyZS4KKyAgZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aD1gJEVDSE8gIiRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoIiB8ICRTRUQgXAorICAgICAgICAtZSAiJHJlbW92ZWRvdHBhcnRzIiAtZSAiJGNvbGxhcHNlc2xhc2hlcyIgLWUgIiRmaW5hbHNsYXNoImAKKyAgd2hpbGUgOjsgZG8KKyAgICAjIFByb2Nlc3NlZCBpdCBhbGwgeWV0PworICAgIGlmIHRlc3QgIiRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoIiA9IC8gOyB0aGVuCisgICAgICAjIElmIHdlIGFzY2VuZGVkIHRvIHRoZSByb290IHVzaW5nICIuLiIgdGhlIHJlc3VsdCBtYXkgYmUgZW1wdHkgbm93LgorICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0IiA7IHRoZW4KKyAgICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9LworICAgICAgZmkKKyAgICAgIGJyZWFrCisgICAgZmkKKyAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3Rjb21wb25lbnQ9YCRFQ0hPICIkZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aCIgfCAkU0VEIFwKKyAgICAgICAgLWUgIiRwYXRoY2FyImAKKyAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoPWAkRUNITyAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGgiIHwgJFNFRCBcCisgICAgICAgIC1lICIkcGF0aGNkciJgCisgICAgIyBGaWd1cmUgb3V0IHdoYXQgdG8gZG8gd2l0aCBpdAorICAgIGNhc2UgJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdGNvbXBvbmVudCBpbgorICAgICAgIiIpCisgICAgICAgICMgVHJhaWxpbmcgZW1wdHkgcGF0aCBjb21wb25lbnQsIGlnbm9yZSBpdC4KKyAgICAgIDs7CisgICAgICAuLikKKyAgICAgICAgIyBQYXJlbnQgZGlyOyBzdHJpcCBsYXN0IGFzc2VtYmxlZCBjb21wb25lbnQgZnJvbSByZXN1bHQuCisgICAgICAgIGZ1bmNfZGlybmFtZSAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0IgorICAgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdD0kZnVuY19kaXJuYW1lX3Jlc3VsdAorICAgICAgOzsKKyAgICAgICopCisgICAgICAgICMgQWN0dWFsIHBhdGggY29tcG9uZW50LCBhcHBlbmQgaXQuCisgICAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0PSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdC8kZnVuY19ub3JtYWxfYWJzcGF0aF90Y29tcG9uZW50CisgICAgICA7OworICAgIGVzYWMKKyAgZG9uZQorICAjIFJlc3RvcmUgbGVhZGluZyBkb3VibGUtc2xhc2ggaWYgb25lIHdhcyBmb3VuZCBvbiBlbnRyeS4KKyAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfYWx0bmFtZXNwYWNlJGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0CiB9CiAKLSMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLgorIyBmdW5jX3JlbGF0aXZlX3BhdGggU1JDRElSIERTVERJUgorIyBnZW5lcmF0ZXMgYSByZWxhdGl2ZSBwYXRoIGZyb20gU1JDRElSIHRvIERTVERJUiwgd2l0aCBhIHRyYWlsaW5nCisjIHNsYXNoIGlmIG5vbi1lbXB0eSwgc3VpdGFibGUgZm9yIGltbWVkaWF0ZWx5IGFwcGVuZGluZyBhIGZpbGVuYW1lCisjIHdpdGhvdXQgbmVlZGluZyB0byBhcHBlbmQgYSBzZXBhcmF0b3IuCisjICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdCIKK2Z1bmNfcmVsYXRpdmVfcGF0aCAoKQoreworICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PQorICBmdW5jX25vcm1hbF9hYnNwYXRoICIkMSIKKyAgZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXI9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0CisgIGZ1bmNfbm9ybWFsX2Fic3BhdGggIiQyIgorICBmdW5jX3JlbGF0aXZlX3BhdGhfdGJpbmRpcj0kZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQKIAotIyBXb3JrIGFyb3VuZCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGlzc3VlIG9uIElSSVggNi41LiBPbiBJUklYIDYuNCssIHNoCi0jIGlzIGtzaCBidXQgd2hlbiB0aGUgc2hlbGwgaXMgaW52b2tlZCBhcyAic2giIGFuZCB0aGUgY3VycmVudCB2YWx1ZSBvZgotIyB0aGUgX1hQRyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3QgZXF1YWwgdG8gMSAob25lKSwgdGhlIHNwZWNpYWwKLSMgcG9zaXRpb25hbCBwYXJhbWV0ZXIgJDAsIHdpdGhpbiBhIGZ1bmN0aW9uIGNhbGwsIGlzIHRoZSBuYW1lIG9mIHRoZQotIyBmdW5jdGlvbi4KLXByb2dwYXRoPSIkMCIKKyAgIyBBc2NlbmQgdGhlIHRyZWUgc3RhcnRpbmcgZnJvbSBsaWJkaXIKKyAgd2hpbGUgOjsgZG8KKyAgICAjIGNoZWNrIGlmIHdlIGhhdmUgZm91bmQgYSBwcmVmaXggb2YgYmluZGlyCisgICAgY2FzZSAkZnVuY19yZWxhdGl2ZV9wYXRoX3RiaW5kaXIgaW4KKyAgICAgICRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpcikKKyAgICAgICAgIyBmb3VuZCBhbiBleGFjdCBtYXRjaAorICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfdGNhbmNlbGxlZD0KKyAgICAgICAgYnJlYWsKKyAgICAgICAgOzsKKyAgICAgICRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpciopCisgICAgICAgICMgZm91bmQgYSBtYXRjaGluZyBwcmVmaXgKKyAgICAgICAgZnVuY19zdHJpcG5hbWUgIiRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpciIgJycgIiRmdW5jX3JlbGF0aXZlX3BhdGhfdGJpbmRpciIKKyAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3RjYW5jZWxsZWQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdCI7IHRoZW4KKyAgICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PS4KKyAgICAgICAgZmkKKyAgICAgICAgYnJlYWsKKyAgICAgICAgOzsKKyAgICAgICopCisgICAgICAgIGZ1bmNfZGlybmFtZSAkZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXIKKyAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXI9JHtmdW5jX2Rpcm5hbWVfcmVzdWx0fQorICAgICAgICBpZiB0ZXN0ICJ4JGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyIiA9IHggOyB0aGVuCisgICAgICAgICAgIyBIYXZlIHRvIGRlc2NlbmQgYWxsIHRoZSB3YXkgdG8gdGhlIHJvb3QhCisgICAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0uLi8kZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdAorICAgICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF90Y2FuY2VsbGVkPSRmdW5jX3JlbGF0aXZlX3BhdGhfdGJpbmRpcgorICAgICAgICAgIGJyZWFrCisgICAgICAgIGZpCisgICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9Li4vJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQKKyAgICAgICAgOzsKKyAgICBlc2FjCisgIGRvbmUKKworICAjIE5vdyBjYWxjdWxhdGUgcGF0aDsgdGFrZSBjYXJlIHRvIGF2b2lkIGRvdWJsaW5nLXVwIHNsYXNoZXMuCisgIGZ1bmNfc3RyaXBuYW1lICcnICcvJyAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQiCisgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICBmdW5jX3N0cmlwbmFtZSAnLycgJy8nICIkZnVuY19yZWxhdGl2ZV9wYXRoX3RjYW5jZWxsZWQiCisgIGlmIHRlc3QgIngkZnVuY19zdHJpcG5hbWVfcmVzdWx0IiAhPSB4IDsgdGhlbgorICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9JHtmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0fS8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH0KKyAgZmkKKworICAjIE5vcm1hbGlzYXRpb24uIElmIGJpbmRpciBpcyBsaWJkaXIsIHJldHVybiBlbXB0eSBzdHJpbmcsCisgICMgZWxzZSByZWxhdGl2ZSBwYXRoIGVuZGluZyB3aXRoIGEgc2xhc2g7IGVpdGhlciB3YXksIHRhcmdldAorICAjIGZpbGUgbmFtZSBjYW4gYmUgZGlyZWN0bHkgYXBwZW5kZWQuCisgIGlmIHRlc3QgISAteiAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQiOyB0aGVuCisgICAgZnVuY19zdHJpcG5hbWUgJy4vJyAnJyAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQvIgorICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICBmaQorfQogCiAjIFRoZSBuYW1lIG9mIHRoaXMgcHJvZ3JhbToKLSMgSW4gdGhlIHVubGlrZWx5IGV2ZW50ICRwcm9nbmFtZSBiZWdhbiB3aXRoIGEgJy0nLCBpdCB3b3VsZCBwbGF5IGhhdm9jIHdpdGgKLSMgZnVuY19lY2hvIChpbWFnaW5lIHByb2duYW1lPS1uKSwgc28gd2UgcHJlcGVuZCAuLyBpbiB0aGF0IGNhc2U6CiBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICIkcHJvZ3BhdGgiCiBwcm9nbmFtZT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKLWNhc2UgJHByb2duYW1lIGluCi0gIC0qKSBwcm9nbmFtZT0uLyRwcm9nbmFtZSA7OwotZXNhYwogCiAjIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIGFic29sdXRlIHBhdGggZm9yIHJlZXhlY3V0aW9uOgogY2FzZSAkcHJvZ3BhdGggaW4KQEAgLTIxNSw2ICs0MDYsMTUgQEAKICMgU2FtZSBhcyBhYm92ZSwgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgogZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woWyJgXFxdXCkvXFxcMS9nJwogCisjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCB0dXJucyBhIHN0cmluZyBpbnRvIGEgcmVnZXggbWF0Y2hpbmcgZm9yIHRoZQorIyBzdHJpbmcgbGl0ZXJhbGx5Lgorc2VkX21ha2VfbGl0ZXJhbF9yZWdleD0ncyxbXS5bXiRcXCpcL10sXFwmLGcnCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGNvbnZlcnRzIGEgdzMyIGZpbGUgbmFtZSBvciBwYXRoCisjIHdoaWNoIGNvbnRhaW5zIGZvcndhcmQgc2xhc2hlcywgaW50byBvbmUgdGhhdCBjb250YWlucworIyAoZXNjYXBlZCkgYmFja3NsYXNoZXMuICBBIHZlcnkgbmFpdmUgaW1wbGVtZW50YXRpb24uCitsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCisKICMgUmUtYFwnIHBhcmFtZXRlciBleHBhbnNpb25zIGluIG91dHB1dCBvZiBkb3VibGVfcXVvdGVfc3Vic3QgdGhhdCB3ZXJlCiAjIGBcJy1lZCBpbiBpbnB1dCB0byB0aGUgc2FtZS4gIElmIGFuIG9kZCBudW1iZXIgb2YgYFwnIHByZWNlZGVkIGEgJyQnCiAjIGluIGlucHV0IHRvIGRvdWJsZV9xdW90ZV9zdWJzdCwgdGhhdCAnJCcgd2FzIHByb3RlY3RlZCBmcm9tIGV4cGFuc2lvbi4KQEAgLTI0Myw3ICs0NDMsNyBAQAogIyBuYW1lIGlmIGl0IGhhcyBiZWVuIHNldCB5ZXQuCiBmdW5jX2VjaG8gKCkKIHsKLSAgICAkRUNITyAiJHByb2duYW1lJHttb2RlKzogfSRtb2RlOiAkKiIKKyAgICAkRUNITyAiJHByb2duYW1lOiAke29wdF9tb2RlKyRvcHRfbW9kZTogfSQqIgogfQogCiAjIGZ1bmNfdmVyYm9zZSBhcmcuLi4KQEAgLTI1OCwxOCArNDU4LDI1IEBACiAgICAgOgogfQogCisjIGZ1bmNfZWNob19hbGwgYXJnLi4uCisjIEludm9rZSAkRUNITyB3aXRoIGFsbCBhcmdzLCBzcGFjZS1zZXBhcmF0ZWQuCitmdW5jX2VjaG9fYWxsICgpCit7CisgICAgJEVDSE8gIiQqIgorfQorCiAjIGZ1bmNfZXJyb3IgYXJnLi4uCiAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IuCiBmdW5jX2Vycm9yICgpCiB7Ci0gICAgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogIiR7MSsiJEAifSAxPiYyCisgICAgJEVDSE8gIiRwcm9nbmFtZTogJHtvcHRfbW9kZSskb3B0X21vZGU6IH0iJHsxKyIkQCJ9IDE+JjIKIH0KIAogIyBmdW5jX3dhcm5pbmcgYXJnLi4uCiAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIHdhcm5pbmcgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvci4KIGZ1bmNfd2FybmluZyAoKQogewotICAgICRvcHRfd2FybmluZyAmJiAkRUNITyAiJHByb2duYW1lJHttb2RlKzogfSRtb2RlOiB3YXJuaW5nOiAiJHsxKyIkQCJ9IDE+JjIKKyAgICAkb3B0X3dhcm5pbmcgJiYgJEVDSE8gIiRwcm9nbmFtZTogJHtvcHRfbW9kZSskb3B0X21vZGU6IH13YXJuaW5nOiAiJHsxKyIkQCJ9IDE+JjIKIAogICAgICMgYmFzaCBidWcgYWdhaW46CiAgICAgOgpAQCAtMzI2LDkgKzUzMyw5IEBACiAgICAgICAgIGNhc2UgJG15X2RpcmVjdG9yeV9wYXRoIGluICovKikgOzsgKikgYnJlYWsgOzsgZXNhYwogCiAgICAgICAgICMgLi4ub3RoZXJ3aXNlIHRocm93IGF3YXkgdGhlIGNoaWxkIGRpcmVjdG9yeSBhbmQgbG9vcAotICAgICAgICBteV9kaXJlY3RvcnlfcGF0aD1gJEVDSE8gIlgkbXlfZGlyZWN0b3J5X3BhdGgiIHwgJFhzZWQgLWUgIiRkaXJuYW1lImAKKyAgICAgICAgbXlfZGlyZWN0b3J5X3BhdGg9YCRFQ0hPICIkbXlfZGlyZWN0b3J5X3BhdGgiIHwgJFNFRCAtZSAiJGRpcm5hbWUiYAogICAgICAgZG9uZQotICAgICAgbXlfZGlyX2xpc3Q9YCRFQ0hPICJYJG15X2Rpcl9saXN0IiB8ICRYc2VkIC1lICdzLDoqJCwsJ2AKKyAgICAgIG15X2Rpcl9saXN0PWAkRUNITyAiJG15X2Rpcl9saXN0IiB8ICRTRUQgJ3MsOiokLCwnYAogCiAgICAgICBzYXZlX21rZGlyX3BfSUZTPSIkSUZTIjsgSUZTPSc6JwogICAgICAgZm9yIG15X2RpciBpbiAkbXlfZGlyX2xpc3Q7IGRvCkBAIC0zNzgsNyArNTg1LDcgQEAKICAgICAgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGNyZWF0ZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IFxgJG15X3RtcGRpciciCiAgICAgZmkKIAotICAgICRFQ0hPICJYJG15X3RtcGRpciIgfCAkWHNlZAorICAgICRFQ0hPICIkbXlfdG1wZGlyIgogfQogCiAKQEAgLTM5Miw3ICs1OTksNyBAQAogewogICAgIGNhc2UgJDEgaW4KICAgICAgICpbXFxcYFwiXCRdKikKLQlmdW5jX3F1b3RlX2Zvcl9ldmFsX3VucXVvdGVkX3Jlc3VsdD1gJEVDSE8gIlgkMSIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgIDs7CisJZnVuY19xdW90ZV9mb3JfZXZhbF91bnF1b3RlZF9yZXN1bHQ9YCRFQ0hPICIkMSIgfCAkU0VEICIkc2VkX3F1b3RlX3N1YnN0ImAgOzsKICAgICAgICopCiAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWxfdW5xdW90ZWRfcmVzdWx0PSIkMSIgOzsKICAgICBlc2FjCkBAIC00MTksNyArNjI2LDcgQEAKIHsKICAgICBjYXNlICQxIGluCiAgICAgICAqW1xcXGBcIl0qKQotCW15X2FyZz1gJEVDSE8gIlgkMSIgfCAkWHNlZCBcCisJbXlfYXJnPWAkRUNITyAiJDEiIHwgJFNFRCBcCiAJICAgIC1lICIkZG91YmxlX3F1b3RlX3N1YnN0IiAtZSAiJHNlZF9kb3VibGVfYmFja3NsYXNoImAgOzsKICAgICAgICopCiAgICAgICAgIG15X2FyZz0iJDEiIDs7CkBAIC00ODgsMTUgKzY5NSwzOSBAQAogICAgIGZpCiB9CiAKLQotCisjIGZ1bmNfdHJfc2gKKyMgVHVybiAkMSBpbnRvIGEgc3RyaW5nIHN1aXRhYmxlIGZvciBhIHNoZWxsIHZhcmlhYmxlIG5hbWUuCisjIFJlc3VsdCBpcyBzdG9yZWQgaW4gJGZ1bmNfdHJfc2hfcmVzdWx0LiAgQWxsIGNoYXJhY3RlcnMKKyMgbm90IGluIHRoZSBzZXQgYS16QS1aMC05XyBhcmUgcmVwbGFjZWQgd2l0aCAnXycuIEZ1cnRoZXIsCisjIGlmICQxIGJlZ2lucyB3aXRoIGEgZGlnaXQsIGEgJ18nIGlzIHByZXBlbmRlZCBhcyB3ZWxsLgorZnVuY190cl9zaCAoKQoreworICBjYXNlICQxIGluCisgIFswLTldKiB8ICpbIWEtekEtWjAtOV9dKikKKyAgICBmdW5jX3RyX3NoX3Jlc3VsdD1gJEVDSE8gIiQxIiB8ICRTRUQgJ3MvXlwoWzAtOV1cKS9fXDEvOyBzL1teYS16QS1aMC05X10vXy9nJ2AKKyAgICA7OworICAqICkKKyAgICBmdW5jX3RyX3NoX3Jlc3VsdD0kMQorICAgIDs7CisgIGVzYWMKK30KIAogCiAjIGZ1bmNfdmVyc2lvbgogIyBFY2hvIHZlcnNpb24gbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQuCiBmdW5jX3ZlcnNpb24gKCkKIHsKLSAgICAkU0VEIC1uICcvXiMgJyRQUk9HUkFNJyAoR05VIC8sLyMgd2FycmFudHk7IC8geworICAgICRvcHRfZGVidWcKKworICAgICRTRUQgLW4gJy8oQykvIWIgZ28KKwk6bW9yZQorCS9cLi8heworCSAgTgorCSAgcy9cbiMgLyAvCisJICBiIG1vcmUKKwl9CisJOmdvCisJL14jICckUFJPR1JBTScgKEdOVSAvLC8jIHdhcnJhbnR5OyAvIHsKICAgICAgICAgcy9eIyAvLwogCXMvXiMgKiQvLwogICAgICAgICBzL1woKEMpXClbIDAtOSwtXSpcKCBbMS05XVswLTldKlwpL1wxXDIvCkBAIC01MDksMjIgKzc0MCwyOCBAQAogIyBFY2hvIHNob3J0IGhlbHAgbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQuCiBmdW5jX3VzYWdlICgpCiB7Ci0gICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sLyMgLWgvIHsKKyAgICAkb3B0X2RlYnVnCisKKyAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvXiMgICouKi0taGVscC8gewogICAgICAgICBzL14jIC8vCiAJcy9eIyAqJC8vCiAJcy9cJHByb2duYW1lLyckcHJvZ25hbWUnLwogCXAKICAgICB9JyA8ICIkcHJvZ3BhdGgiCi0gICAgJEVDSE8KKyAgICBlY2hvCiAgICAgJEVDSE8gInJ1biBcYCRwcm9nbmFtZSAtLWhlbHAgfCBtb3JlJyBmb3IgZnVsbCB1c2FnZSIKICAgICBleGl0ICQ/CiB9CiAKLSMgZnVuY19oZWxwCi0jIEVjaG8gbG9uZyBoZWxwIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgorIyBmdW5jX2hlbHAgW05PRVhJVF0KKyMgRWNobyBsb25nIGhlbHAgbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQsCisjIHVubGVzcyAnbm9leGl0JyBpcyBwYXNzZWQgYXMgYXJndW1lbnQuCiBmdW5jX2hlbHAgKCkKIHsKKyAgICAkb3B0X2RlYnVnCisKICAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvIyBSZXBvcnQgYnVncyB0by8geworCTpwcmludAogICAgICAgICBzL14jIC8vCiAJcy9eIyAqJC8vCiAJcypcJHByb2duYW1lKickcHJvZ25hbWUnKgpAQCAtNTM3LDggKzc3NCwxNSBAQAogCXMvXCRhdXRvbWFrZV92ZXJzaW9uLyciYChhdXRvbWFrZSAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLwogCXMvXCRhdXRvY29uZl92ZXJzaW9uLyciYChhdXRvY29uZiAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLwogCXAKLSAgICAgfScgPCAiJHByb2dwYXRoIgotICAgIGV4aXQgJD8KKwlkCisgICAgIH0KKyAgICAgL14jIC4qIGhvbWUgcGFnZTovYiBwcmludAorICAgICAvXiMgR2VuZXJhbCBoZWxwIHVzaW5nL2IgcHJpbnQKKyAgICAgJyA8ICIkcHJvZ3BhdGgiCisgICAgcmV0PSQ/CisgICAgaWYgdGVzdCAteiAiJDEiOyB0aGVuCisgICAgICBleGl0ICRyZXQKKyAgICBmaQogfQogCiAjIGZ1bmNfbWlzc2luZ19hcmcgYXJnbmFtZQpAQCAtNTQ2LDYzICs3OTAsMTA2IEBACiAjIGV4aXRfY21kLgogZnVuY19taXNzaW5nX2FyZyAoKQogewotICAgIGZ1bmNfZXJyb3IgIm1pc3NpbmcgYXJndW1lbnQgZm9yICQxIgorICAgICRvcHRfZGVidWcKKworICAgIGZ1bmNfZXJyb3IgIm1pc3NpbmcgYXJndW1lbnQgZm9yICQxLiIKICAgICBleGl0X2NtZD1leGl0CiB9CiAKKworIyBmdW5jX3NwbGl0X3Nob3J0X29wdCBzaG9ydG9wdAorIyBTZXQgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZSBhbmQgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIHNoZWxsCisjIHZhcmlhYmxlcyBhZnRlciBzcGxpdHRpbmcgU0hPUlRPUFQgYWZ0ZXIgdGhlIDJuZCBjaGFyYWN0ZXIuCitmdW5jX3NwbGl0X3Nob3J0X29wdCAoKQoreworICAgIG15X3NlZF9zaG9ydF9vcHQ9JzFzL15cKC4uXCkuKiQvXDEvO3EnCisgICAgbXlfc2VkX3Nob3J0X3Jlc3Q9JzFzL14uLlwoLipcKSQvXDEvO3EnCisKKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9zaG9ydF9vcHQiYAorICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfc2hvcnRfcmVzdCJgCit9ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBmdW5jX3NwbGl0X2xvbmdfb3B0IGxvbmdvcHQKKyMgU2V0IGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZSBhbmQgZnVuY19zcGxpdF9sb25nX29wdF9hcmcgc2hlbGwKKyMgdmFyaWFibGVzIGFmdGVyIHNwbGl0dGluZyBMT05HT1BUIGF0IHRoZSBgPScgc2lnbi4KK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKCkKK3sKKyAgICBteV9zZWRfbG9uZ19vcHQ9JzFzL15cKC0tW149XSpcKT0uKi9cMS87cScKKyAgICBteV9zZWRfbG9uZ19hcmc9JzFzL14tLVtePV0qPS8vJworCisgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCisgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKK30gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCiBleGl0X2NtZD06CiAKIAogCiAKIAotIyBDaGVjayB0aGF0IHdlIGhhdmUgYSB3b3JraW5nICRFQ0hPLgotaWYgdGVzdCAiWCQxIiA9IFgtLW5vLXJlZXhlYzsgdGhlbgotICAjIERpc2NhcmQgdGhlIC0tbm8tcmVleGVjIGZsYWcsIGFuZCBjb250aW51ZS4KLSAgc2hpZnQKLWVsaWYgdGVzdCAiWCQxIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KLSAgIyBBdm9pZCBpbmxpbmUgZG9jdW1lbnQgaGVyZSwgaXQgbWF5IGJlIGxlZnQgb3ZlcgotICA6Ci1lbGlmIHRlc3QgIlhgeyAkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JzsgdGhlbgotICAjIFlpcHBlZSwgJEVDSE8gd29ya3MhCi0gIDoKLWVsc2UKLSAgIyBSZXN0YXJ0IHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLCBhbmQgdGhlbiBtYXliZSAkRUNITyB3aWxsIHdvcmsuCi0gIGV4ZWMgJFNIRUxMICIkcHJvZ3BhdGgiIC0tbm8tcmVleGVjICR7MSsiJEAifQotZmkKLQotaWYgdGVzdCAiWCQxIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KLSAgIyB1c2VkIGFzIGZhbGxiYWNrIGVjaG8KLSAgc2hpZnQKLSAgY2F0IDw8RU9GCi0kKgotRU9GCi0gIGV4aXQgJEVYSVRfU1VDQ0VTUwotZmkKLQogbWFnaWM9IiUlJU1BR0lDIHZhcmlhYmxlJSUlIgogbWFnaWNfZXhlPSIlJSVNQUdJQyBFWEUgdmFyaWFibGUlJSUiCiAKICMgR2xvYmFsIHZhcmlhYmxlcy4KLSMgJG1vZGUgaXMgdW5zZXQKIG5vbm9wdD0KLWV4ZWN1dGVfZGxmaWxlcz0KIHByZXNlcnZlX2FyZ3M9CiBsbzJvPSJzL1xcLmxvXCQvLiR7b2JqZXh0fS8iCiBvMmxvPSJzL1xcLiR7b2JqZXh0fVwkLy5sby8iCiBleHRyYWN0ZWRfYXJjaGl2ZXM9CiBleHRyYWN0ZWRfc2VyaWFsPTAKIAotb3B0X2RyeV9ydW49ZmFsc2UKLW9wdF9kdXBsaWNhdGVfZGVwcz1mYWxzZQotb3B0X3NpbGVudD1mYWxzZQotb3B0X2RlYnVnPToKLQogIyBJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCBpbiBhbnkgb2YgdGhlIGFjdGlvbnMsIHRoZSBjb21tYW5kIGluIGl0CiAjIHdpbGwgYmUgZXhlY2VkIGF0IHRoZSBlbmQuICBUaGlzIHByZXZlbnRzIGhlcmUtZG9jdW1lbnRzIGZyb20gYmVpbmcKICMgbGVmdCBvdmVyIGJ5IHNoZWxscy4KIGV4ZWNfY21kPQogCisjIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCitmdW5jX2FwcGVuZCAoKQoreworICAgIGV2YWwgIiR7MX09XCQkezF9XCR7Mn0iCit9ICMgZnVuY19hcHBlbmQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKyMgZnVuY19hcHBlbmRfcXVvdGVkIHZhciB2YWx1ZQorIyBRdW90ZSBWQUxVRSBhbmQgYXBwZW5kIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLCBzZXBhcmF0ZWQKKyMgYnkgYSBzcGFjZS4KK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKQoreworICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iCisgICAgZXZhbCAiJHsxfT1cJCR7MX1cXCBcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorfSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCisjIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCitmdW5jX2FyaXRoICgpCit7CisgICAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiR7QH0iYAorfSAjIGZ1bmNfYXJpdGggbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBmdW5jX2xlbiBzdHJpbmcKKyMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KK2Z1bmNfbGVuICgpCit7CisgICAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkezF9IiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCit9ICMgZnVuY19sZW4gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBmdW5jX2xvMm8gb2JqZWN0CitmdW5jX2xvMm8gKCkKK3sKKyAgICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCit9ICMgZnVuY19sbzJvIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKKyMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCitmdW5jX3hmb3JtICgpCit7CisgICAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCit9ICMgZnVuY194Zm9ybSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCiAjIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiBhcmcuLi4KICMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvciwgZm9sbG93ZWQgYnkKICMgYSBjb25maWd1cmF0aW9uIGZhaWx1cmUgaGludCwgYW5kIGV4aXQuCkBAIC02MzYsMTYgKzkyMywxNiBAQAogIyBEaXNwbGF5IHRoZSBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkgdGhpcyBzY3JpcHQuCiBmdW5jX2ZlYXR1cmVzICgpCiB7Ci0gICAgJEVDSE8gImhvc3Q6ICRob3N0IgorICAgIGVjaG8gImhvc3Q6ICRob3N0IgogICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzOyB0aGVuCi0gICAgICAkRUNITyAiZW5hYmxlIHNoYXJlZCBsaWJyYXJpZXMiCisgICAgICBlY2hvICJlbmFibGUgc2hhcmVkIGxpYnJhcmllcyIKICAgICBlbHNlCi0gICAgICAkRUNITyAiZGlzYWJsZSBzaGFyZWQgbGlicmFyaWVzIgorICAgICAgZWNobyAiZGlzYWJsZSBzaGFyZWQgbGlicmFyaWVzIgogICAgIGZpCiAgICAgaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgotICAgICAgJEVDSE8gImVuYWJsZSBzdGF0aWMgbGlicmFyaWVzIgorICAgICAgZWNobyAiZW5hYmxlIHN0YXRpYyBsaWJyYXJpZXMiCiAgICAgZWxzZQotICAgICAgJEVDSE8gImRpc2FibGUgc3RhdGljIGxpYnJhcmllcyIKKyAgICAgIGVjaG8gImRpc2FibGUgc3RhdGljIGxpYnJhcmllcyIKICAgICBmaQogCiAgICAgZXhpdCAkPwpAQCAtNjkyLDEzMyArOTc5LDYgQEAKICAgZXNhYwogfQogCi0jIFBhcnNlIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4gIFRoaXMgY29tZXMgYXMgc29vbiBhcyBwb3NzaWJsZSBpbgotIyB0aGUgc2NyaXB0IHRvIG1ha2UgdGhpbmdzIGxpa2UgYGxpYnRvb2wgLS12ZXJzaW9uJyBoYXBwZW4gcXVpY2tseS4KLXsKLQotICAjIFNob3J0aGFuZCBmb3IgLS1tb2RlPWZvbywgb25seSB2YWxpZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQKLSAgY2FzZSAkMSBpbgotICBjbGVhbnxjbGVhfGNsZXxjbCkKLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjbGVhbiAkezErIiRAIn07IHNoaWZ0Ci0gICAgOzsKLSAgY29tcGlsZXxjb21waWx8Y29tcGl8Y29tcHxjb218Y298YykKLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjb21waWxlICR7MSsiJEAifTsgc2hpZnQKLSAgICA7OwotICBleGVjdXRlfGV4ZWN1dHxleGVjdXxleGVjfGV4ZXxleHxlKQotICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGV4ZWN1dGUgJHsxKyIkQCJ9OyBzaGlmdAotICAgIDs7Ci0gIGZpbmlzaHxmaW5pc3xmaW5pfGZpbnxmaXxmKQotICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0Ci0gICAgOzsKLSAgaW5zdGFsbHxpbnN0YWx8aW5zdGF8aW5zdHxpbnN8aW58aSkKLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBpbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKLSAgICA7OwotICBsaW5rfGxpbnxsaXxsKQotICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGxpbmsgJHsxKyIkQCJ9OyBzaGlmdAotICAgIDs7Ci0gIHVuaW5zdGFsbHx1bmluc3RhbHx1bmluc3RhfHVuaW5zdHx1bmluc3x1bmlufHVuaXx1bnx1KQotICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIHVuaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0Ci0gICAgOzsKLSAgZXNhYwotCi0gICMgUGFyc2Ugbm9uLW1vZGUgc3BlY2lmaWMgYXJndW1lbnRzOgotICB3aGlsZSB0ZXN0ICIkIyIgLWd0IDA7IGRvCi0gICAgb3B0PSIkMSIKLSAgICBzaGlmdAotCi0gICAgY2FzZSAkb3B0IGluCi0gICAgICAtLWNvbmZpZykJCWZ1bmNfY29uZmlnCQkJCQk7OwotCi0gICAgICAtLWRlYnVnKQkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKLQkJCWZ1bmNfZWNobyAiZW5hYmxpbmcgc2hlbGwgdHJhY2UgbW9kZSIKLQkJCW9wdF9kZWJ1Zz0nc2V0IC14JwotCQkJJG9wdF9kZWJ1ZwotCQkJOzsKLQotICAgICAgLWRsb3BlbikJCXRlc3QgIiQjIiAtZXEgMCAmJiBmdW5jX21pc3NpbmdfYXJnICIkb3B0IiAmJiBicmVhawotCQkJZXhlY3V0ZV9kbGZpbGVzPSIkZXhlY3V0ZV9kbGZpbGVzICQxIgotCQkJc2hpZnQKLQkJCTs7Ci0KLSAgICAgIC0tZHJ5LXJ1biB8IC1uKQlvcHRfZHJ5X3J1bj06CQkJCQk7OwotICAgICAgLS1mZWF0dXJlcykgICAgICAgZnVuY19mZWF0dXJlcwkJCQkJOzsKLSAgICAgIC0tZmluaXNoKQkJbW9kZT0iZmluaXNoIgkJCQkJOzsKLQotICAgICAgLS1tb2RlKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCi0JCQljYXNlICQxIGluCi0JCQkgICMgVmFsaWQgbW9kZSBhcmd1bWVudHM6Ci0JCQkgIGNsZWFuKQk7OwotCQkJICBjb21waWxlKQk7OwotCQkJICBleGVjdXRlKQk7OwotCQkJICBmaW5pc2gpCTs7Ci0JCQkgIGluc3RhbGwpCTs7Ci0JCQkgIGxpbmspCQk7OwotCQkJICByZWxpbmspCTs7Ci0JCQkgIHVuaW5zdGFsbCkJOzsKLQotCQkJICAjIENhdGNoIGFueXRoaW5nIGVsc2UgYXMgYW4gZXJyb3IKLQkJCSAgKikgZnVuY19lcnJvciAiaW52YWxpZCBhcmd1bWVudCBmb3IgJG9wdCIKLQkJCSAgICAgZXhpdF9jbWQ9ZXhpdAotCQkJICAgICBicmVhawotCQkJICAgICA7OwotCQkgICAgICAgIGVzYWMKLQotCQkJbW9kZT0iJDEiCi0JCQlzaGlmdAotCQkJOzsKLQotICAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcykKLQkJCW9wdF9kdXBsaWNhdGVfZGVwcz06CQkJCTs7Ci0KLSAgICAgIC0tcXVpZXR8LS1zaWxlbnQpCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCi0JCQlvcHRfc2lsZW50PToKLQkJCTs7Ci0KLSAgICAgIC0tdmVyYm9zZXwgLXYpCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCi0JCQlvcHRfc2lsZW50PWZhbHNlCi0JCQk7OwotCi0gICAgICAtLXRhZykJCXRlc3QgIiQjIiAtZXEgMCAmJiBmdW5jX21pc3NpbmdfYXJnICIkb3B0IiAmJiBicmVhawotCQkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCAkMSIKLQkJCWZ1bmNfZW5hYmxlX3RhZyAiJDEiCSMgdGFnbmFtZSBpcyBzZXQgaGVyZQotCQkJc2hpZnQKLQkJCTs7Ci0KLSAgICAgICMgU2VwYXJhdGUgb3B0YXJncyB0byBsb25nIG9wdGlvbnM6Ci0gICAgICAtZGxvcGVuPSp8LS1tb2RlPSp8LS10YWc9KikKLQkJCWZ1bmNfb3B0X3NwbGl0ICIkb3B0IgotCQkJc2V0IGR1bW15ICIkZnVuY19vcHRfc3BsaXRfb3B0IiAiJGZ1bmNfb3B0X3NwbGl0X2FyZyIgJHsxKyIkQCJ9Ci0JCQlzaGlmdAotCQkJOzsKLQotICAgICAgLVw/fC1oKQkJZnVuY191c2FnZQkJCQkJOzsKLSAgICAgIC0taGVscCkJCW9wdF9oZWxwPToJCQkJCTs7Ci0gICAgICAtLXZlcnNpb24pCWZ1bmNfdmVyc2lvbgkJCQkJOzsKLQotICAgICAgLSopCQlmdW5jX2ZhdGFsX2hlbHAgInVucmVjb2duaXplZCBvcHRpb24gXGAkb3B0JyIJOzsKLQotICAgICAgKikJCW5vbm9wdD0iJG9wdCIKLQkJCWJyZWFrCi0JCQk7OwotICAgIGVzYWMKLSAgZG9uZQotCi0KLSAgY2FzZSAkaG9zdCBpbgotICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpwdzMyKiB8ICpjZWdjYyopCi0gICAgICAjIGRvbid0IGVsaW1pbmF0ZSBkdXBsaWNhdGlvbnMgaW4gJHBvc3RkZXBzIGFuZCAkcHJlZGVwcwotICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz06Ci0gICAgICA7OwotICAgICopCi0gICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPSRvcHRfZHVwbGljYXRlX2RlcHMKLSAgICAgIDs7Ci0gIGVzYWMKLQotICAjIEhhdmluZyB3YXJuZWQgYWJvdXQgYWxsIG1pcy1zcGVjaWZpZWQgb3B0aW9ucywgYmFpbCBvdXQgaWYKLSAgIyBhbnl0aGluZyB3YXMgd3JvbmcuCi0gICRleGl0X2NtZCAkRVhJVF9GQUlMVVJFCi19Ci0KICMgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCiAjIEVuc3VyZSB0aGF0IHdlIGFyZSB1c2luZyBtNCBtYWNyb3MsIGFuZCBsaWJ0b29sIHNjcmlwdCBmcm9tIHRoZSBzYW1lCiAjIHJlbGVhc2Ugb2YgbGlidG9vbC4KQEAgLTg1NSwzOCArMTAxNSwyMTQgQEAKIH0KIAogCisjIFNob3J0aGFuZCBmb3IgLS1tb2RlPWZvbywgb25seSB2YWxpZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQKK2Nhc2UgJDEgaW4KK2NsZWFufGNsZWF8Y2xlfGNsKQorICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjbGVhbiAkezErIiRAIn07IHNoaWZ0CisgIDs7Citjb21waWxlfGNvbXBpbHxjb21waXxjb21wfGNvbXxjb3xjKQorICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjb21waWxlICR7MSsiJEAifTsgc2hpZnQKKyAgOzsKK2V4ZWN1dGV8ZXhlY3V0fGV4ZWN1fGV4ZWN8ZXhlfGV4fGUpCisgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGV4ZWN1dGUgJHsxKyIkQCJ9OyBzaGlmdAorICA7OworZmluaXNofGZpbmlzfGZpbml8ZmlufGZpfGYpCisgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0CisgIDs7CitpbnN0YWxsfGluc3RhbHxpbnN0YXxpbnN0fGluc3xpbnxpKQorICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBpbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKKyAgOzsKK2xpbmt8bGlufGxpfGwpCisgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGxpbmsgJHsxKyIkQCJ9OyBzaGlmdAorICA7OwordW5pbnN0YWxsfHVuaW5zdGFsfHVuaW5zdGF8dW5pbnN0fHVuaW5zfHVuaW58dW5pfHVufHUpCisgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIHVuaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0CisgIDs7Citlc2FjCisKKworCisjIE9wdGlvbiBkZWZhdWx0czoKK29wdF9kZWJ1Zz06CitvcHRfZHJ5X3J1bj1mYWxzZQorb3B0X2NvbmZpZz1mYWxzZQorb3B0X3ByZXNlcnZlX2R1cF9kZXBzPWZhbHNlCitvcHRfZmVhdHVyZXM9ZmFsc2UKK29wdF9maW5pc2g9ZmFsc2UKK29wdF9oZWxwPWZhbHNlCitvcHRfaGVscF9hbGw9ZmFsc2UKK29wdF9zaWxlbnQ9Ogorb3B0X3ZlcmJvc2U9Ogorb3B0X3NpbGVudD1mYWxzZQorb3B0X3ZlcmJvc2U9ZmFsc2UKKworCisjIFBhcnNlIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4gIFRoaXMgY29tZXMgYXMgc29vbiBhcyBwb3NzaWJsZSBpbiB0aGUKKyMgc2NyaXB0IHRvIG1ha2UgdGhpbmdzIGxpa2UgYC0tdmVyc2lvbicgaGFwcGVuIGFzIHF1aWNrbHkgYXMgd2UgY2FuLgoreworICAjIHRoaXMganVzdCBlYXNlcyBleGl0IGhhbmRsaW5nCisgIHdoaWxlIHRlc3QgJCMgLWd0IDA7IGRvCisgICAgb3B0PSIkMSIKKyAgICBzaGlmdAorICAgIGNhc2UgJG9wdCBpbgorICAgICAgLS1kZWJ1Z3wteCkJb3B0X2RlYnVnPSdzZXQgLXgnCisJCQlmdW5jX2VjaG8gImVuYWJsaW5nIHNoZWxsIHRyYWNlIG1vZGUiCisJCQkkb3B0X2RlYnVnCisJCQk7OworICAgICAgLS1kcnktcnVufC0tZHJ5cnVufC1uKQorCQkJb3B0X2RyeV9ydW49OgorCQkJOzsKKyAgICAgIC0tY29uZmlnKQorCQkJb3B0X2NvbmZpZz06CitmdW5jX2NvbmZpZworCQkJOzsKKyAgICAgIC0tZGxvcGVufC1kbG9wZW4pCisJCQlvcHRhcmc9IiQxIgorCQkJb3B0X2Rsb3Blbj0iJHtvcHRfZGxvcGVuKyRvcHRfZGxvcGVuCit9JG9wdGFyZyIKKwkJCXNoaWZ0CisJCQk7OworICAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcykKKwkJCW9wdF9wcmVzZXJ2ZV9kdXBfZGVwcz06CisJCQk7OworICAgICAgLS1mZWF0dXJlcykKKwkJCW9wdF9mZWF0dXJlcz06CitmdW5jX2ZlYXR1cmVzCisJCQk7OworICAgICAgLS1maW5pc2gpCisJCQlvcHRfZmluaXNoPToKK3NldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKKwkJCTs7CisgICAgICAtLWhlbHApCisJCQlvcHRfaGVscD06CisJCQk7OworICAgICAgLS1oZWxwLWFsbCkKKwkJCW9wdF9oZWxwX2FsbD06CitvcHRfaGVscD0nOiBoZWxwLWFsbCcKKwkJCTs7CisgICAgICAtLW1vZGUpCisJCQl0ZXN0ICQjID0gMCAmJiBmdW5jX21pc3NpbmdfYXJnICRvcHQgJiYgYnJlYWsKKwkJCW9wdGFyZz0iJDEiCisJCQlvcHRfbW9kZT0iJG9wdGFyZyIKK2Nhc2UgJG9wdGFyZyBpbgorICAjIFZhbGlkIG1vZGUgYXJndW1lbnRzOgorICBjbGVhbnxjb21waWxlfGV4ZWN1dGV8ZmluaXNofGluc3RhbGx8bGlua3xyZWxpbmt8dW5pbnN0YWxsKSA7OworCisgICMgQ2F0Y2ggYW55dGhpbmcgZWxzZSBhcyBhbiBlcnJvcgorICAqKSBmdW5jX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IGZvciAkb3B0IgorICAgICBleGl0X2NtZD1leGl0CisgICAgIGJyZWFrCisgICAgIDs7Citlc2FjCisJCQlzaGlmdAorCQkJOzsKKyAgICAgIC0tbm8tc2lsZW50fC0tbm8tcXVpZXQpCisJCQlvcHRfc2lsZW50PWZhbHNlCitmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKKwkJCTs7CisgICAgICAtLW5vLXZlcmJvc2UpCisJCQlvcHRfdmVyYm9zZT1mYWxzZQorZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCisJCQk7OworICAgICAgLS1zaWxlbnR8LS1xdWlldCkKKwkJCW9wdF9zaWxlbnQ9OgorZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCisgICAgICAgIG9wdF92ZXJib3NlPWZhbHNlCisJCQk7OworICAgICAgLS12ZXJib3NlfC12KQorCQkJb3B0X3ZlcmJvc2U9OgorZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCitvcHRfc2lsZW50PWZhbHNlCisJCQk7OworICAgICAgLS10YWcpCisJCQl0ZXN0ICQjID0gMCAmJiBmdW5jX21pc3NpbmdfYXJnICRvcHQgJiYgYnJlYWsKKwkJCW9wdGFyZz0iJDEiCisJCQlvcHRfdGFnPSIkb3B0YXJnIgorZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQgJG9wdGFyZyIKK2Z1bmNfZW5hYmxlX3RhZyAiJG9wdGFyZyIKKwkJCXNoaWZ0CisJCQk7OworCisgICAgICAtXD98LWgpCQlmdW5jX3VzYWdlCQkJCTs7CisgICAgICAtLWhlbHApCQlmdW5jX2hlbHAJCQkJOzsKKyAgICAgIC0tdmVyc2lvbikJZnVuY192ZXJzaW9uCQkJCTs7CisKKyAgICAgICMgU2VwYXJhdGUgb3B0YXJncyB0byBsb25nIG9wdGlvbnM6CisgICAgICAtLSo9KikKKwkJCWZ1bmNfc3BsaXRfbG9uZ19vcHQgIiRvcHQiCisJCQlzZXQgZHVtbXkgIiRmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWUiICIkZnVuY19zcGxpdF9sb25nX29wdF9hcmciICR7MSsiJEAifQorCQkJc2hpZnQKKwkJCTs7CisKKyAgICAgICMgU2VwYXJhdGUgbm9uLWFyZ3VtZW50IHNob3J0IG9wdGlvbnM6CisgICAgICAtXD8qfC1oKnwtbip8LXYqKQorCQkJZnVuY19zcGxpdF9zaG9ydF9vcHQgIiRvcHQiCisJCQlzZXQgZHVtbXkgIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lIiAiLSRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmciICR7MSsiJEAifQorCQkJc2hpZnQKKwkJCTs7CisKKyAgICAgIC0tKQkJYnJlYWsJCQkJCTs7CisgICAgICAtKikJCWZ1bmNfZmF0YWxfaGVscCAidW5yZWNvZ25pemVkIG9wdGlvbiBcYCRvcHQnIiA7OworICAgICAgKikJCXNldCBkdW1teSAiJG9wdCIgJHsxKyIkQCJ9OwlzaGlmdDsgYnJlYWsgIDs7CisgICAgZXNhYworICBkb25lCisKKyAgIyBWYWxpZGF0ZSBvcHRpb25zOgorCisgICMgc2F2ZSBmaXJzdCBub24tb3B0aW9uIGFyZ3VtZW50CisgIGlmIHRlc3QgIiQjIiAtZ3QgMDsgdGhlbgorICAgIG5vbm9wdD0iJG9wdCIKKyAgICBzaGlmdAorICBmaQorCisgICMgcHJlc2VydmUgLS1kZWJ1ZworICB0ZXN0ICIkb3B0X2RlYnVnIiA9IDogfHwgZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiIC0tZGVidWciCisKKyAgY2FzZSAkaG9zdCBpbgorICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpwdzMyKiB8ICpjZWdjYyopCisgICAgICAjIGRvbid0IGVsaW1pbmF0ZSBkdXBsaWNhdGlvbnMgaW4gJHBvc3RkZXBzIGFuZCAkcHJlZGVwcworICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz06CisgICAgICA7OworICAgICopCisgICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPSRvcHRfcHJlc2VydmVfZHVwX2RlcHMKKyAgICAgIDs7CisgIGVzYWMKKworICAkb3B0X2hlbHAgfHwgeworICAgICMgU2FuaXR5IGNoZWNrcyBmaXJzdDoKKyAgICBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKKworICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiICE9IHllczsgdGhlbgorICAgICAgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICJub3QgY29uZmlndXJlZCB0byBidWlsZCBhbnkga2luZCBvZiBsaWJyYXJ5IgorICAgIGZpCisKKyAgICAjIERhcndpbiBzdWNrcworICAgIGV2YWwgc3RkX3NocmV4dD1cIiRzaHJleHRfY21kc1wiCisKKyAgICAjIE9ubHkgZXhlY3V0ZSBtb2RlIGlzIGFsbG93ZWQgdG8gaGF2ZSAtZGxvcGVuIGZsYWdzLgorICAgIGlmIHRlc3QgLW4gIiRvcHRfZGxvcGVuIiAmJiB0ZXN0ICIkb3B0X21vZGUiICE9IGV4ZWN1dGU7IHRoZW4KKyAgICAgIGZ1bmNfZXJyb3IgInVucmVjb2duaXplZCBvcHRpb24gXGAtZGxvcGVuJyIKKyAgICAgICRFQ0hPICIkaGVscCIgMT4mMgorICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisgICAgZmkKKworICAgICMgQ2hhbmdlIHRoZSBoZWxwIG1lc3NhZ2UgdG8gYSBtb2RlLXNwZWNpZmljIG9uZS4KKyAgICBnZW5lcmljX2hlbHA9IiRoZWxwIgorICAgIGhlbHA9IlRyeSBcYCRwcm9nbmFtZSAtLWhlbHAgLS1tb2RlPSRvcHRfbW9kZScgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgorICB9CisKKworICAjIEJhaWwgaWYgdGhlIG9wdGlvbnMgd2VyZSBzY3Jld2VkCisgICRleGl0X2NtZCAkRVhJVF9GQUlMVVJFCit9CisKKworCisKICMjIC0tLS0tLS0tLS0tICMjCiAjIyAgICBNYWluLiAgICAjIwogIyMgLS0tLS0tLS0tLS0gIyMKIAotJG9wdF9oZWxwIHx8IHsKLSAgIyBTYW5pdHkgY2hlY2tzIGZpcnN0OgotICBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKLQotICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiAhPSB5ZXM7IHRoZW4KLSAgICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gIm5vdCBjb25maWd1cmVkIHRvIGJ1aWxkIGFueSBraW5kIG9mIGxpYnJhcnkiCi0gIGZpCi0KLSAgdGVzdCAteiAiJG1vZGUiICYmIGZ1bmNfZmF0YWxfZXJyb3IgImVycm9yOiB5b3UgbXVzdCBzcGVjaWZ5IGEgTU9ERS4iCi0KLQotICAjIERhcndpbiBzdWNrcwotICBldmFsIHN0ZF9zaHJleHQ9XCIkc2hyZXh0X2NtZHNcIgotCi0KLSAgIyBPbmx5IGV4ZWN1dGUgbW9kZSBpcyBhbGxvd2VkIHRvIGhhdmUgLWRsb3BlbiBmbGFncy4KLSAgaWYgdGVzdCAtbiAiJGV4ZWN1dGVfZGxmaWxlcyIgJiYgdGVzdCAiJG1vZGUiICE9IGV4ZWN1dGU7IHRoZW4KLSAgICBmdW5jX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgLWRsb3BlbiciCi0gICAgJEVDSE8gIiRoZWxwIiAxPiYyCi0gICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0gIGZpCi0KLSAgIyBDaGFuZ2UgdGhlIGhlbHAgbWVzc2FnZSB0byBhIG1vZGUtc3BlY2lmaWMgb25lLgotICBnZW5lcmljX2hlbHA9IiRoZWxwIgotICBoZWxwPSJUcnkgXGAkcHJvZ25hbWUgLS1oZWxwIC0tbW9kZT0kbW9kZScgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgotfQotCi0KICMgZnVuY19sYWxpYl9wIGZpbGUKICMgVHJ1ZSBpZmYgRklMRSBpcyBhIGxpYnRvb2wgYC5sYScgbGlicmFyeSBvciBgLmxvJyBvYmplY3QgZmlsZS4KICMgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGEgYmFzaWMgc2FuaXR5IGNoZWNrOyBpdCB3aWxsIGhhcmRseSBmbHVzaCBvdXQKQEAgLTk1MCwxMiArMTI4Niw5IEBACiAjIHRlbXBvcmFyeSBsdHdyYXBwZXJfc2NyaXB0LgogZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZSAoKQogewotICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0PSIiCi0gICAgaWYgZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wICIkMSI7IHRoZW4KLQlmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICIkMSIgIiIgIi4iCi0JZnVuY19zdHJpcG5hbWUgJycgJy5leGUnICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0JZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0LyRvYmpkaXIvJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9X2x0c2h3cmFwcGVyIgotICAgIGZpCisgICAgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJDEiICIiICIuIgorICAgIGZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdC8kb2JqZGlyLyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fV9sdHNod3JhcHBlciIKIH0KIAogIyBmdW5jX2x0d3JhcHBlcl9wIGZpbGUKQEAgLTEwMDEsNiArMTMzNCwzNyBAQAogfQogCiAKKyMgZnVuY19yZXNvbHZlX3N5c3Jvb3QgUEFUSAorIyBSZXBsYWNlIGEgbGVhZGluZyA9IGluIFBBVEggd2l0aCBhIHN5c3Jvb3QuICBTdG9yZSB0aGUgcmVzdWx0IGludG8KKyMgZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CitmdW5jX3Jlc29sdmVfc3lzcm9vdCAoKQoreworICBmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQ9JDEKKyAgY2FzZSAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IGluCisgID0qKQorICAgIGZ1bmNfc3RyaXBuYW1lICc9JyAnJyAiJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKKyAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQ9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgICAgOzsKKyAgZXNhYworfQorCisjIGZ1bmNfcmVwbGFjZV9zeXNyb290IFBBVEgKKyMgSWYgUEFUSCBiZWdpbnMgd2l0aCB0aGUgc3lzcm9vdCwgcmVwbGFjZSBpdCB3aXRoID0gYW5kCisjIHN0b3JlIHRoZSByZXN1bHQgaW50byBmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQuCitmdW5jX3JlcGxhY2Vfc3lzcm9vdCAoKQoreworICBjYXNlICIkbHRfc3lzcm9vdDokMSIgaW4KKyAgPyo6IiRsdF9zeXNyb290IiopCisgICAgZnVuY19zdHJpcG5hbWUgIiRsdF9zeXNyb290IiAnJyAiJDEiCisgICAgZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0PSI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKyAgICA7OworICAqKQorICAgICMgSW5jbHVkaW5nIG5vIHN5c3Jvb3QuCisgICAgZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0PSQxCisgICAgOzsKKyAgZXNhYworfQorCiAjIGZ1bmNfaW5mZXJfdGFnIGFyZwogIyBJbmZlciB0YWdnZWQgY29uZmlndXJhdGlvbiB0byB1c2UgaWYgYW55IGFyZSBhdmFpbGFibGUgYW5kCiAjIGlmIG9uZSB3YXNuJ3QgY2hvc2VuIHZpYSB0aGUgIi0tdGFnIiBjb21tYW5kIGxpbmUgb3B0aW9uLgpAQCAtMTAxMywxMyArMTM3NywxNSBAQAogICAgIGlmIHRlc3QgLW4gIiRhdmFpbGFibGVfdGFncyIgJiYgdGVzdCAteiAiJHRhZ25hbWUiOyB0aGVuCiAgICAgICBDQ19xdW90ZWQ9CiAgICAgICBmb3IgYXJnIGluICRDQzsgZG8KLSAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLQlDQ19xdW90ZWQ9IiRDQ19xdW90ZWQgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCWZ1bmNfYXBwZW5kX3F1b3RlZCBDQ19xdW90ZWQgIiRhcmciCiAgICAgICBkb25lCisgICAgICBDQ19leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NgCisgICAgICBDQ19xdW90ZWRfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDX3F1b3RlZGAKICAgICAgIGNhc2UgJEAgaW4KICAgICAgICMgQmxhbmtzIGluIHRoZSBjb21tYW5kIG1heSBoYXZlIGJlZW4gc3RyaXBwZWQgYnkgdGhlIGNhbGxpbmcgc2hlbGwsCiAgICAgICAjIGJ1dCBub3QgZnJvbSB0aGUgQ0MgZW52aXJvbm1lbnQgdmFyaWFibGUgd2hlbiBjb25maWd1cmUgd2FzIHJ1bi4KLSAgICAgICIgJENDICIqIHwgIiRDQyAiKiB8ICIgYCRFQ0hPICRDQ2AgIiogfCAiYCRFQ0hPICRDQ2AgIiogfCAiICRDQ19xdW90ZWQiKiB8ICIkQ0NfcXVvdGVkICIqIHwgIiBgJEVDSE8gJENDX3F1b3RlZGAgIiogfCAiYCRFQ0hPICRDQ19xdW90ZWRgICIqKSA7OworICAgICAgIiAkQ0MgIiogfCAiJENDICIqIHwgIiAkQ0NfZXhwYW5kZWQgIiogfCAiJENDX2V4cGFuZGVkICIqIHwgXAorICAgICAgIiAkQ0NfcXVvdGVkIiogfCAiJENDX3F1b3RlZCAiKiB8ICIgJENDX3F1b3RlZF9leHBhbmRlZCAiKiB8ICIkQ0NfcXVvdGVkX2V4cGFuZGVkICIqKSA7OwogICAgICAgIyBCbGFua3MgYXQgdGhlIHN0YXJ0IG9mICRiYXNlX2NvbXBpbGUgd2lsbCBjYXVzZSB0aGlzIHRvIGZhaWwKICAgICAgICMgaWYgd2UgZG9uJ3QgY2hlY2sgZm9yIHRoZW0gYXMgd2VsbC4KICAgICAgICopCkBAIC0xMDMwLDExICsxMzk2LDEzIEBACiAJICAgIENDX3F1b3RlZD0KIAkgICAgZm9yIGFyZyBpbiAkQ0M7IGRvCiAJICAgICAgIyBEb3VibGUtcXVvdGUgYXJncyBjb250YWluaW5nIG90aGVyIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgotCSAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0JICAgICAgQ0NfcXVvdGVkPSIkQ0NfcXVvdGVkICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgICAgICBmdW5jX2FwcGVuZF9xdW90ZWQgQ0NfcXVvdGVkICIkYXJnIgogCSAgICBkb25lCisJICAgIENDX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ2AKKwkgICAgQ0NfcXVvdGVkX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ19xdW90ZWRgCiAJICAgIGNhc2UgIiRAICIgaW4KLQkgICAgICAiICRDQyAiKiB8ICIkQ0MgIiogfCAiIGAkRUNITyAkQ0NgICIqIHwgImAkRUNITyAkQ0NgICIqIHwgIiAkQ0NfcXVvdGVkIiogfCAiJENDX3F1b3RlZCAiKiB8ICIgYCRFQ0hPICRDQ19xdW90ZWRgICIqIHwgImAkRUNITyAkQ0NfcXVvdGVkYCAiKikKKwkgICAgIiAkQ0MgIiogfCAiJENDICIqIHwgIiAkQ0NfZXhwYW5kZWQgIiogfCAiJENDX2V4cGFuZGVkICIqIHwgXAorCSAgICAiICRDQ19xdW90ZWQiKiB8ICIkQ0NfcXVvdGVkICIqIHwgIiAkQ0NfcXVvdGVkX2V4cGFuZGVkICIqIHwgIiRDQ19xdW90ZWRfZXhwYW5kZWQgIiopCiAJICAgICAgIyBUaGUgY29tcGlsZXIgaW4gdGhlIGJhc2UgY29tcGlsZSBjb21tYW5kIG1hdGNoZXMKIAkgICAgICAjIHRoZSBvbmUgaW4gdGhlIHRhZ2dlZCBjb25maWd1cmF0aW9uLgogCSAgICAgICMgQXNzdW1lIHRoaXMgaXMgdGhlIHRhZ2dlZCBjb25maWd1cmF0aW9uIHdlIHdhbnQuCkBAIC0xMDk3LDYgKzE0NjUsNDg2IEBACiAgICAgfQogfQogCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEZJTEUgTkFNRSBBTkQgUEFUSCBDT05WRVJTSU9OIEhFTFBFUiBGVU5DVElPTlMgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyIEFSRworIyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBmaWxlIG5hbWUgY29udmVyc2lvbiBmdW5jdGlvbnMgd2hlbiAkYnVpbGQgaXMgKm5peCwKKyMgYW5kICRob3N0IGlzIG1pbmd3LCBjeWd3aW4sIG9yIHNvbWUgb3RoZXIgdzMyIGVudmlyb25tZW50LiBSZWxpZXMgb24gYQorIyBjb3JyZWN0bHkgY29uZmlndXJlZCB3aW5lIGVudmlyb25tZW50IGF2YWlsYWJsZSwgd2l0aCB0aGUgd2luZXBhdGggcHJvZ3JhbQorIyBpbiAkYnVpbGQncyAkUEFUSC4KKyMKKyMgQVJHIGlzIHRoZSAkYnVpbGQgZmlsZSBuYW1lIHRvIGJlIGNvbnZlcnRlZCB0byB3MzIgZm9ybWF0LgorIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluICRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCwgYW5kIHdpbGwKKyMgYmUgZW1wdHkgb24gZXJyb3IgKG9yIHdoZW4gQVJHIGlzIGVtcHR5KQorZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgIyBVbmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2VzIG5vdCBleGl0IHdpdGggYSBub24temVybyBlcnJvciBjb2RlLCBzbyB3ZQorICAgICMgYXJlIGZvcmNlZCB0byBjaGVjayB0aGUgY29udGVudHMgb2Ygc3Rkb3V0LiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlCisgICAgIyBjb21tYW5kIGlzIG5vdCBmb3VuZCwgdGhlIHNoZWxsIHdpbGwgc2V0IGFuIGV4aXQgY29kZSBvZiAxMjcgYW5kIHByaW50CisgICAgIyAqYW4gZXJyb3IgbWVzc2FnZSogdG8gc3Rkb3V0LiBTbyB3ZSBtdXN0IGNoZWNrIGZvciBib3RoIGVycm9yIGNvZGUgb2YKKyAgICAjIHplcm8gQU5EIG5vbi1lbXB0eSBzdGRvdXQsIHdoaWNoIGV4cGxhaW5zIHRoZSBvZGQgY29uc3RydWN0aW9uOgorICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wPWB3aW5lcGF0aCAtdyAiJDEiIDI+L2Rldi9udWxsYAorICAgIGlmIHRlc3QgIiQ/IiAtZXEgMCAmJiB0ZXN0IC1uICIke2Z1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wfSI7IHRoZW4KKyAgICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0PWAkRUNITyAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wIiB8CisgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKyAgICBlbHNlCisgICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD0KKyAgICBmaQorICBmaQorfQorIyBlbmQ6IGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIKKworCisjIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgQVJHCisjIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHBhdGggY29udmVyc2lvbiBmdW5jdGlvbnMgd2hlbiAkYnVpbGQgaXMgKm5peCwgYW5kCisjICRob3N0IGlzIG1pbmd3LCBjeWd3aW4sIG9yIHNvbWUgb3RoZXIgdzMyIGVudmlyb25tZW50LiBSZWxpZXMgb24gYSBjb3JyZWN0bHkKKyMgY29uZmlndXJlZCB3aW5lIGVudmlyb25tZW50IGF2YWlsYWJsZSwgd2l0aCB0aGUgd2luZXBhdGggcHJvZ3JhbSBpbiAkYnVpbGQncworIyAkUEFUSC4gQXNzdW1lcyBBUkcgaGFzIG5vIGxlYWRpbmcgb3IgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycy4KKyMKKyMgQVJHIGlzIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0byB3aW4zMi4KKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiAkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQuCisjIFVuY29udmVydGlibGUgZmlsZSAoZGlyZWN0b3J5KSBuYW1lcyBpbiBBUkcgYXJlIHNraXBwZWQ7IGlmIG5vIGRpcmVjdG9yeSBuYW1lcworIyBhcmUgY29udmVydGlibGUsIHRoZW4gdGhlIHJlc3VsdCBtYXkgYmUgZW1wdHkuCitmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICgpCit7CisgICRvcHRfZGVidWcKKyAgIyB1bmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2Vzbid0IGNvbnZlcnQgcGF0aHMsIG9ubHkgZmlsZSBuYW1lcworICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdD0iIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICBvbGRJRlM9JElGUworICAgIElGUz06CisgICAgZm9yIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfZiBpbiAkMTsgZG8KKyAgICAgIElGUz0kb2xkSUZTCisgICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9mIgorICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IiA7IHRoZW4KKyAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IjsgdGhlbgorICAgICAgICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCisgICAgICAgIGVsc2UKKyAgICAgICAgICBmdW5jX2FwcGVuZCBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCAiOyRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgZG9uZQorICAgIElGUz0kb2xkSUZTCisgIGZpCit9CisjIGVuZDogZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMgorCisKKyMgZnVuY19jeWdwYXRoIEFSR1MuLi4KKyMgV3JhcHBlciBhcm91bmQgY2FsbGluZyB0aGUgY3lncGF0aCBwcm9ncmFtIHZpYSBMVF9DWUdQQVRILiBUaGlzIGlzIHVzZWQgd2hlbgorIyB3aGVuICgxKSAkYnVpbGQgaXMgKm5peCBhbmQgQ3lnd2luIGlzIGhvc3RlZCB2aWEgYSB3aW5lIGVudmlyb25tZW50OyBvciAoMikKKyMgJGJ1aWxkIGlzIE1TWVMgYW5kICRob3N0IGlzIEN5Z3dpbiwgb3IgKDMpICRidWlsZCBpcyBDeWd3aW4uIEluIGNhc2UgKDEpIG9yCisjICgyKSwgcmV0dXJucyB0aGUgQ3lnd2luIGZpbGUgbmFtZSBvciBwYXRoIGluIGZ1bmNfY3lncGF0aF9yZXN1bHQgKGlucHV0CisjIGZpbGUgbmFtZSBvciBwYXRoIGlzIGFzc3VtZWQgdG8gYmUgaW4gdzMyIGZvcm1hdCwgYXMgcHJldmlvdXNseSBjb252ZXJ0ZWQKKyMgZnJvbSAkYnVpbGQncyAqbml4IG9yIE1TWVMgZm9ybWF0KS4gSW4gY2FzZSAoMyksIHJldHVybnMgdGhlIHczMiBmaWxlIG5hbWUKKyMgb3IgcGF0aCBpbiBmdW5jX2N5Z3BhdGhfcmVzdWx0IChpbnB1dCBmaWxlIG5hbWUgb3IgcGF0aCBpcyBhc3N1bWVkIHRvIGJlIGluCisjIEN5Z3dpbiBmb3JtYXQpLiBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBvbiBlcnJvci4KKyMKKyMgQVJHUyBhcmUgcGFzc2VkIHRvIGN5Z3BhdGgsIHdpdGggdGhlIGxhc3Qgb25lIGJlaW5nIHRoZSBmaWxlIG5hbWUgb3IgcGF0aCB0bworIyBiZSBjb252ZXJ0ZWQuCisjCisjIFNwZWNpZnkgdGhlIGFic29sdXRlICpuaXggKG9yIHczMikgbmFtZSB0byBjeWdwYXRoIGluIHRoZSBMVF9DWUdQQVRICisjIGVudmlyb25tZW50IHZhcmlhYmxlOyBkbyBub3QgcHV0IGl0IGluICRQQVRILgorZnVuY19jeWdwYXRoICgpCit7CisgICRvcHRfZGVidWcKKyAgaWYgdGVzdCAtbiAiJExUX0NZR1BBVEgiICYmIHRlc3QgLWYgIiRMVF9DWUdQQVRIIjsgdGhlbgorICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9YCRMVF9DWUdQQVRIICIkQCIgMj4vZGV2L251bGxgCisgICAgaWYgdGVzdCAiJD8iIC1uZSAwOyB0aGVuCisgICAgICAjIG9uIGZhaWx1cmUsIGVuc3VyZSByZXN1bHQgaXMgZW1wdHkKKyAgICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9CisgICAgZmkKKyAgZWxzZQorICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9CisgICAgZnVuY19lcnJvciAiTFRfQ1lHUEFUSCBpcyBlbXB0eSBvciBzcGVjaWZpZXMgbm9uLWV4aXN0ZW50IGZpbGU6IFxgJExUX0NZR1BBVEgnIgorICBmaQorfQorI2VuZDogZnVuY19jeWdwYXRoCisKKworIyBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiBBUkcKKyMgQ29udmVydCBmaWxlIG5hbWUgb3IgcGF0aCBBUkcgZnJvbSBNU1lTIGZvcm1hdCB0byB3MzIgZm9ybWF0LiAgUmV0dXJuCisjIHJlc3VsdCBpbiBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQuCitmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgICMgYXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdAorICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQ9YCggY21kIC8vYyBlY2hvICIkMSIgKSAyPi9kZXYvbnVsbCB8CisgICAgJFNFRCAtZSAncy9bIF0qJC8vJyAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorfQorI2VuZDogZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIKKworCisjIGZ1bmNfY29udmVydF9maWxlX2NoZWNrIEFSRzEgQVJHMgorIyBWZXJpZnkgdGhhdCBBUkcxIChhIGZpbGUgbmFtZSBpbiAkYnVpbGQgZm9ybWF0KSB3YXMgY29udmVydGVkIHRvICRob3N0CisjIGZvcm1hdCBpbiBBUkcyLiBPdGhlcndpc2UsIGVtaXQgYW4gZXJyb3IgbWVzc2FnZSwgYnV0IGNvbnRpbnVlIChyZXNldHRpbmcKKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IHRvIEFSRzEpLgorZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBpZiB0ZXN0IC16ICIkMiIgJiYgdGVzdCAtbiAiJDEiIDsgdGhlbgorICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgaG9zdCBmaWxlIG5hbWUgY29ycmVzcG9uZGluZyB0byIKKyAgICBmdW5jX2Vycm9yICIgIFxgJDEnIgorICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgorICAgICMgRmFsbGJhY2s6CisgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKyAgZmkKK30KKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX2NoZWNrCisKKworIyBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayBGUk9NX1BBVEhTRVAgVE9fUEFUSFNFUCBGUk9NX1BBVEggVE9fUEFUSAorIyBWZXJpZnkgdGhhdCBGUk9NX1BBVEggKGEgcGF0aCBpbiAkYnVpbGQgZm9ybWF0KSB3YXMgY29udmVydGVkIHRvICRob3N0CisjIGZvcm1hdCBpbiBUT19QQVRILiBPdGhlcndpc2UsIGVtaXQgYW4gZXJyb3IgbWVzc2FnZSwgYnV0IGNvbnRpbnVlLCByZXNldHRpbmcKKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IHRvIGEgc2ltcGxpc3RpYyBmYWxsYmFjayB2YWx1ZSAoc2VlIGJlbG93KS4KK2Z1bmNfY29udmVydF9wYXRoX2NoZWNrICgpCit7CisgICRvcHRfZGVidWcKKyAgaWYgdGVzdCAteiAiJDQiICYmIHRlc3QgLW4gIiQzIjsgdGhlbgorICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGhvc3QgcGF0aCBjb3JyZXNwb25kaW5nIHRvIgorICAgIGZ1bmNfZXJyb3IgIiAgXGAkMyciCisgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCisgICAgIyBGYWxsYmFjay4gIFRoaXMgaXMgYSBkZWxpYmVyYXRlbHkgc2ltcGxpc3RpYyAiY29udmVyc2lvbiIgYW5kCisgICAgIyBzaG91bGQgbm90IGJlICJpbXByb3ZlZCIuICBTZWUgbGlidG9vbC5pbmZvLgorICAgIGlmIHRlc3QgIngkMSIgIT0gIngkMiI7IHRoZW4KKyAgICAgIGx0X3JlcGxhY2VfcGF0aHNlcF9jaGFycz0ic3wkMXwkMnxnIgorICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBlY2hvICIkMyIgfAorICAgICAgICAkU0VEIC1lICIkbHRfcmVwbGFjZV9wYXRoc2VwX2NoYXJzImAKKyAgICBlbHNlCisgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQzIgorICAgIGZpCisgIGZpCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjaworCisKKyMgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwIEZST05UUEFUIEJBQ0tQQVQgUkVQTCBPUklHCisjIE1vZGlmaWVzIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCBieSBwcmVwZW5kaW5nIFJFUEwgaWYgT1JJRyBtYXRjaGVzIEZST05UUEFUCisjIGFuZCBhcHBlbmRpbmcgUkVQTCBpZiBPUklHIG1hdGNoZXMgQkFDS1BBVC4KK2Z1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAoKQoreworICAkb3B0X2RlYnVnCisgIGNhc2UgJDQgaW4KKyAgJDEgKSBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQzJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKyAgICA7OworICBlc2FjCisgIGNhc2UgJDQgaW4KKyAgJDIgKSBmdW5jX2FwcGVuZCBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQgIiQzIgorICAgIDs7CisgIGVzYWMKK30KKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcAorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICRidWlsZCB0byAkaG9zdCBGSUxFIE5BTUUgQ09OVkVSU0lPTiBGVU5DVElPTlMgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgaW52b2tlZCB2aWEgYCR0b19ob3N0X2ZpbGVfY21kIEFSRycKKyMKKyMgSW4gZWFjaCBjYXNlLCBBUkcgaXMgdGhlIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIHRvICRob3N0IGZvcm1hdC4KKyMgUmVzdWx0IHdpbGwgYmUgYXZhaWxhYmxlIGluICRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisKKworIyBmdW5jX3RvX2hvc3RfZmlsZSBBUkcKKyMgQ29udmVydHMgdGhlIGZpbGUgbmFtZSBBUkcgZnJvbSAkYnVpbGQgZm9ybWF0IHRvICRob3N0IGZvcm1hdC4gUmV0dXJuIHJlc3VsdAorIyBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX3RvX2hvc3RfZmlsZSAoKQoreworICAkb3B0X2RlYnVnCisgICR0b19ob3N0X2ZpbGVfY21kICIkMSIKK30KKyMgZW5kIGZ1bmNfdG9faG9zdF9maWxlCisKKworIyBmdW5jX3RvX3Rvb2xfZmlsZSBBUkcgTEFaWQorIyBjb252ZXJ0cyB0aGUgZmlsZSBuYW1lIEFSRyBmcm9tICRidWlsZCBmb3JtYXQgdG8gdG9vbGNoYWluIGZvcm1hdC4gUmV0dXJuCisjIHJlc3VsdCBpbiBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQuICBJZiB0aGUgY29udmVyc2lvbiBpbiB1c2UgaXMgbGlzdGVkCisjIGluICh0aGUgY29tbWEgc2VwYXJhdGVkKSBMQVpZLCBubyBjb252ZXJzaW9uIHRha2VzIHBsYWNlLgorZnVuY190b190b29sX2ZpbGUgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBjYXNlICwkMiwgaW4KKyAgICAqLCIkdG9fdG9vbF9maWxlX2NtZCIsKikKKyAgICAgIGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdD0kMQorICAgICAgOzsKKyAgICAqKQorICAgICAgJHRvX3Rvb2xfZmlsZV9jbWQgIiQxIgorICAgICAgZnVuY190b190b29sX2ZpbGVfcmVzdWx0PSRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQKKyAgICAgIDs7CisgIGVzYWMKK30KKyMgZW5kIGZ1bmNfdG9fdG9vbF9maWxlCisKKworIyBmdW5jX2NvbnZlcnRfZmlsZV9ub29wIEFSRworIyBDb3B5IEFSRyB0byBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfZmlsZV9ub29wICgpCit7CisgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9ub29wCisKKworIyBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiBBUkcKKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gKG1pbmd3KSBNU1lTIHRvIChtaW5ndykgdzMyIGZvcm1hdDsgYXV0b21hdGljCisjIGNvbnZlcnNpb24gdG8gdzMyIGlzIG5vdCBhdmFpbGFibGUgaW5zaWRlIHRoZSBjd3JhcHBlci4gIFJldHVybnMgcmVzdWx0IGluCisjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiQxIgorICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKKyAgZmkKKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKK30KKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisKKworIyBmdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyIEFSRworIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSBDeWd3aW4gdG8gdzMyIGZvcm1hdC4gIFJldHVybnMgcmVzdWx0IGluCisjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICAjIGJlY2F1c2UgJGJ1aWxkIGlzIGN5Z3dpbiwgd2UgY2FsbCAidGhlIiBjeWdwYXRoIGluICRQQVRIOyBubyBuZWVkIHRvIHVzZQorICAgICMgTFRfQ1lHUEFUSCBpbiB0aGlzIGNhc2UuCisgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PWBjeWdwYXRoIC1tICIkMSJgCisgIGZpCisgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisKKworIyBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyIEFSRworIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSAqbml4IHRvIHczMiBmb3JtYXQuICBSZXF1aXJlcyBhIHdpbmUgZW52aXJvbm1lbnQKKyMgYW5kIGEgd29ya2luZyB3aW5lcGF0aC4gUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiQxIgorICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgorICBmaQorICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorfQorIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorCisKKyMgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4gQVJHCisjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tIE1TWVMgdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIExUX0NZR1BBVEggc2V0LgorIyBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkMSIKKyAgICBmdW5jX2N5Z3BhdGggLXUgIiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCisgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKKyAgZmkKKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKK30KKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisKKworIyBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luIEFSRworIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSAqbml4IHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBDeWd3aW4gaW5zdGFsbGVkCisjIGluIGEgd2luZSBlbnZpcm9ubWVudCwgd29ya2luZyB3aW5lcGF0aCwgYW5kIExUX0NZR1BBVEggc2V0LiAgUmV0dXJucyByZXN1bHQKKyMgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgICMgY29udmVydCBmcm9tICpuaXggdG8gdzMyLCB0aGVuIHVzZSBjeWdwYXRoIHRvIGNvbnZlcnQgZnJvbSB3MzIgdG8gY3lnd2luLgorICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiQxIgorICAgIGZ1bmNfY3lncGF0aCAtdSAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgorICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCisgIGZpCisgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICRidWlsZCB0byAkaG9zdCBQQVRIIENPTlZFUlNJT04gRlVOQ1RJT05TICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBpbnZva2VkIHZpYSBgJHRvX2hvc3RfcGF0aF9jbWQgQVJHJworIworIyBJbiBlYWNoIGNhc2UsIEFSRyBpcyB0aGUgcGF0aCB0byBiZSBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgdG8gJGhvc3QgZm9ybWF0LgorIyBUaGUgcmVzdWx0IHdpbGwgYmUgYXZhaWxhYmxlIGluICRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCisjCisjIFBhdGggc2VwYXJhdG9ycyBhcmUgYWxzbyBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgZm9ybWF0IHRvICRob3N0IGZvcm1hdC4gIElmCisjIEFSRyBiZWdpbnMgb3IgZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVyLCBpdCBpcyBwcmVzZXJ2ZWQgKGJ1dAorIyBjb252ZXJ0ZWQgdG8gJGhvc3QgZm9ybWF0KSBvbiBvdXRwdXQuCisjCisjIEFsbCBwYXRoIGNvbnZlcnNpb24gZnVuY3Rpb25zIGFyZSBuYW1lZCB1c2luZyB0aGUgZm9sbG93aW5nIGNvbnZlbnRpb246CisjICAgZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb24gICAgOiBmdW5jX2NvbnZlcnRfZmlsZV9YX3RvX1kgKCkKKyMgICBwYXRoIGNvbnZlcnNpb24gZnVuY3Rpb24gICAgICAgICA6IGZ1bmNfY29udmVydF9wYXRoX1hfdG9fWSAoKQorIyB3aGVyZSwgZm9yIGFueSBnaXZlbiAkYnVpbGQvJGhvc3QgY29tYmluYXRpb24gdGhlICdYX3RvX1knIHZhbHVlIGlzIHRoZQorIyBzYW1lLiAgSWYgY29udmVyc2lvbiBmdW5jdGlvbnMgYXJlIGFkZGVkIGZvciBuZXcgJGJ1aWxkLyRob3N0IGNvbWJpbmF0aW9ucywKKyMgdGhlIHR3byBuZXcgZnVuY3Rpb25zIG11c3QgZm9sbG93IHRoaXMgcGF0dGVybiwgb3IgZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQKKyMgd2lsbCBicmVhay4KKworCisjIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCisjIEVuc3VyZXMgdGhhdCBmdW5jdGlvbiAicG9pbnRlciIgdmFyaWFibGUgJHRvX2hvc3RfcGF0aF9jbWQgaXMgc2V0IHRvIHRoZQorIyBhcHByb3ByaWF0ZSB2YWx1ZSwgYmFzZWQgb24gdGhlIHZhbHVlIG9mICR0b19ob3N0X2ZpbGVfY21kLgordG9faG9zdF9wYXRoX2NtZD0KK2Z1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kICgpCit7CisgICRvcHRfZGVidWcKKyAgaWYgdGVzdCAteiAiJHRvX2hvc3RfcGF0aF9jbWQiOyB0aGVuCisgICAgZnVuY19zdHJpcG5hbWUgJ2Z1bmNfY29udmVydF9maWxlXycgJycgIiR0b19ob3N0X2ZpbGVfY21kIgorICAgIHRvX2hvc3RfcGF0aF9jbWQ9ImZ1bmNfY29udmVydF9wYXRoXyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fSIKKyAgZmkKK30KKworCisjIGZ1bmNfdG9faG9zdF9wYXRoIEFSRworIyBDb252ZXJ0cyB0aGUgcGF0aCBBUkcgZnJvbSAkYnVpbGQgZm9ybWF0IHRvICRob3N0IGZvcm1hdC4gUmV0dXJuIHJlc3VsdAorIyBpbiBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCitmdW5jX3RvX2hvc3RfcGF0aCAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCisgICR0b19ob3N0X3BhdGhfY21kICIkMSIKK30KKyMgZW5kIGZ1bmNfdG9faG9zdF9wYXRoCisKKworIyBmdW5jX2NvbnZlcnRfcGF0aF9ub29wIEFSRworIyBDb3B5IEFSRyB0byBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCitmdW5jX2NvbnZlcnRfcGF0aF9ub29wICgpCit7CisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9ub29wCisKKworIyBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMiBBUkcKKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIChtaW5ndykgTVNZUyB0byAobWluZ3cpIHczMiBmb3JtYXQ7IGF1dG9tYXRpYworIyBjb252ZXJzaW9uIHRvIHczMiBpcyBub3QgYXZhaWxhYmxlIGluc2lkZSB0aGUgY3dyYXBwZXIuICBSZXR1cm5zIHJlc3VsdCBpbgorIyBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCitmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgICMgUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMgZnJvbSBBUkcuICBNU1lTCisgICAgIyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZTsgY3lncGF0aCB0dXJucyB0aGVtIGludG8gJy47JyBhbmQgJzsuJzsKKyAgICAjIGFuZCB3aW5lcGF0aCBpZ25vcmVzIHRoZW0gY29tcGxldGVseS4KKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAorICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCisgIGZpCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMgorCisKKyMgZnVuY19jb252ZXJ0X3BhdGhfY3lnd2luX3RvX3czMiBBUkcKKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIEN5Z3dpbiB0byB3MzIgZm9ybWF0LiAgUmV0dXJucyByZXN1bHQgaW4KKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X3BhdGhfY3lnd2luX3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgICMgU2VlIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyOgorICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBjeWdwYXRoIC1tIC1wICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSJgCisgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAorICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCisgIGZpCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyCisKKworIyBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyIEFSRworIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gKm5peCB0byB3MzIgZm9ybWF0LiAgUmVxdWlyZXMgYSB3aW5lIGVudmlyb25tZW50IGFuZAorIyBhIHdvcmtpbmcgd2luZXBhdGguICBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgIyBTZWUgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzI6CisgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6ICI7IiBcCisgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgIjsiICIkMSIKKyAgZmkKK30KKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25peF90b193MzIKKworCisjIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luIEFSRworIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gTVNZUyB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgTFRfQ1lHUEFUSCBzZXQuCisjIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgIyBTZWUgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzI6CisgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCisgICAgZnVuY19jeWdwYXRoIC11IC1wICIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiA6IFwKKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiA6ICIkMSIKKyAgZmkKK30KKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luCisKKworIyBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luIEFSRworIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gKm5peCB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgQ3lnd2luIGluc3RhbGxlZCBpbiBhCisjIGEgd2luZSBlbnZpcm9ubWVudCwgd29ya2luZyB3aW5lcGF0aCwgYW5kIExUX0NZR1BBVEggc2V0LiAgUmV0dXJucyByZXN1bHQgaW4KKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgICMgUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMgZnJvbQorICAgICMgQVJHLiBtc3lzIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlLCBjeWdwYXRoIHR1cm5zIHRoZW0KKyAgICAjIGludG8gJy47JyBhbmQgJzsuJywgYW5kIHdpbmVwYXRoIGlnbm9yZXMgdGhlbSBjb21wbGV0ZWx5LgorICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgICAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCisgICAgZnVuY19jeWdwYXRoIC11IC1wICIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQiCisgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6IDogXAorICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiIDogIiQxIgorICBmaQorfQorIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbgorCisKICMgZnVuY19tb2RlX2NvbXBpbGUgYXJnLi4uCiBmdW5jX21vZGVfY29tcGlsZSAoKQogewpAQCAtMTEzNywxMiArMTk4NSwxMiBAQAogCSAgOzsKIAogCS1waWUgfCAtZnBpZSB8IC1mUElFKQotICAgICAgICAgIHBpZV9mbGFnPSIkcGllX2ZsYWcgJGFyZyIKKyAgICAgICAgICBmdW5jX2FwcGVuZCBwaWVfZmxhZyAiICRhcmciCiAJICBjb250aW51ZQogCSAgOzsKIAogCS1zaGFyZWQgfCAtc3RhdGljIHwgLXByZWZlci1waWMgfCAtcHJlZmVyLW5vbi1waWMpCi0JICBsYXRlcj0iJGxhdGVyICRhcmciCisJICBmdW5jX2FwcGVuZCBsYXRlciAiICRhcmciCiAJICBjb250aW51ZQogCSAgOzsKIApAQCAtMTE2MywxNSArMjAxMSwxNCBAQAogCSAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JywnCiAJICBmb3IgYXJnIGluICRhcmdzOyBkbwogCSAgICBJRlM9IiRzYXZlX2lmcyIKLQkgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLQkgICAgbGFzdGFyZz0iJGxhc3RhcmcgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCSAgICBmdW5jX2FwcGVuZF9xdW90ZWQgbGFzdGFyZyAiJGFyZyIKIAkgIGRvbmUKIAkgIElGUz0iJHNhdmVfaWZzIgogCSAgZnVuY19zdHJpcG5hbWUgJyAnICcnICIkbGFzdGFyZyIKIAkgIGxhc3Rhcmc9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCiAJICAjIEFkZCB0aGUgYXJndW1lbnRzIHRvIGJhc2VfY29tcGlsZS4KLQkgIGJhc2VfY29tcGlsZT0iJGJhc2VfY29tcGlsZSAkbGFzdGFyZyIKKwkgIGZ1bmNfYXBwZW5kIGJhc2VfY29tcGlsZSAiICRsYXN0YXJnIgogCSAgY29udGludWUKIAkgIDs7CiAKQEAgLTExODcsOCArMjAzNCw3IEBACiAgICAgICBlc2FjICAgICMgIGNhc2UgJGFyZ19tb2RlCiAKICAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSB0aGUgcHJldmlvdXMgYXJndW1lbnQuCi0gICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkbGFzdGFyZyIKLSAgICAgIGJhc2VfY29tcGlsZT0iJGJhc2VfY29tcGlsZSAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgICBmdW5jX2FwcGVuZF9xdW90ZWQgYmFzZV9jb21waWxlICIkbGFzdGFyZyIKICAgICBkb25lICMgZm9yIGFyZwogCiAgICAgY2FzZSAkYXJnX21vZGUgaW4KQEAgLTEyMTMsNyArMjA1OSw3IEBACiAgICAgKi5bY0NGU2lmbXNvXSB8IFwKICAgICAqLmFkYSB8ICouYWRiIHwgKi5hZHMgfCAqLmFzbSB8IFwKICAgICAqLmMrKyB8ICouY2MgfCAqLmlpIHwgKi5jbGFzcyB8ICouY3BwIHwgKi5jeHggfCBcCi0gICAgKi5bZkZdWzA5XT8gfCAqLmZvciB8ICouamF2YSB8ICoub2JqIHwgKi5zeCkKKyAgICAqLltmRl1bMDldPyB8ICouZm9yIHwgKi5qYXZhIHwgKi5vYmogfCAqLnN4IHwgKi5jdSB8ICouY3VwKQogICAgICAgZnVuY194Zm9ybSAiJGxpYm9iaiIKICAgICAgIGxpYm9iaj0kZnVuY194Zm9ybV9yZXN1bHQKICAgICAgIDs7CkBAIC0xMjg4LDcgKzIxMzQsNyBAQAogICAgICMgQ2FsY3VsYXRlIHRoZSBmaWxlbmFtZSBvZiB0aGUgb3V0cHV0IG9iamVjdCBpZiBjb21waWxlciBkb2VzCiAgICAgIyBub3Qgc3VwcG9ydCAtbyB3aXRoIC1jCiAgICAgaWYgdGVzdCAiJGNvbXBpbGVyX2NfbyIgPSBubzsgdGhlbgotICAgICAgb3V0cHV0X29iaj1gJEVDSE8gIlgkc3JjZmlsZSIgfCAkWHNlZCAtZSAncyVeLiovJSUnIC1lICdzJVwuW14uXSokJSUnYC4ke29iamV4dH0KKyAgICAgIG91dHB1dF9vYmo9YCRFQ0hPICIkc3JjZmlsZSIgfCAkU0VEICdzJV4uKi8lJTsgcyVcLlteLl0qJCUlJ2AuJHtvYmpleHR9CiAgICAgICBsb2NrZmlsZT0iJG91dHB1dF9vYmoubG9jayIKICAgICBlbHNlCiAgICAgICBvdXRwdXRfb2JqPQpAQCAtMTMxOSwxNyArMjE2NSwxNiBAQAogCSRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3QKIAlleGl0ICRFWElUX0ZBSUxVUkUKICAgICAgIGZpCi0gICAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkb3V0cHV0X29iaiIKKyAgICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkb3V0cHV0X29iaiIKICAgICAgICRFQ0hPICIkc3JjZmlsZSIgPiAiJGxvY2tmaWxlIgogICAgIGZpCiAKICAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0Ci0gICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJGxvY2tmaWxlIgorICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkbG9ja2ZpbGUiCiAgICAgdHJhcCAnJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFJyAxIDIgMTUKIAotICAgIGlmIHRlc3QgLW4gIiRmaXhfc3JjZmlsZV9wYXRoIjsgdGhlbgotICAgICAgZXZhbCBzcmNmaWxlPVwiJGZpeF9zcmNmaWxlX3BhdGhcIgotICAgIGZpCisgICAgZnVuY190b190b29sX2ZpbGUgIiRzcmNmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICAgIHNyY2ZpbGU9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAogICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRzcmNmaWxlIgogICAgIHFzcmNmaWxlPSRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdAogCkBAIC0xMzQ5LDcgKzIxOTQsNyBAQAogCiAgICAgICBpZiB0ZXN0IC16ICIkb3V0cHV0X29iaiI7IHRoZW4KIAkjIFBsYWNlIFBJQyBvYmplY3RzIGluICRvYmpkaXIKLQljb21tYW5kPSIkY29tbWFuZCAtbyAkbG9iaiIKKwlmdW5jX2FwcGVuZCBjb21tYW5kICIgLW8gJGxvYmoiCiAgICAgICBmaQogCiAgICAgICBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgIiRjb21tYW5kIglcCkBAIC0xMzk2LDExICsyMjQxLDExIEBACiAJY29tbWFuZD0iJGJhc2VfY29tcGlsZSAkcXNyY2ZpbGUgJHBpY19mbGFnIgogICAgICAgZmkKICAgICAgIGlmIHRlc3QgIiRjb21waWxlcl9jX28iID0geWVzOyB0aGVuCi0JY29tbWFuZD0iJGNvbW1hbmQgLW8gJG9iaiIKKwlmdW5jX2FwcGVuZCBjb21tYW5kICIgLW8gJG9iaiIKICAgICAgIGZpCiAKICAgICAgICMgU3VwcHJlc3MgY29tcGlsZXIgb3V0cHV0IGlmIHdlIGFscmVhZHkgZGlkIGEgUElDIGNvbXBpbGF0aW9uLgotICAgICAgY29tbWFuZD0iJGNvbW1hbmQkc3VwcHJlc3Nfb3V0cHV0IgorICAgICAgZnVuY19hcHBlbmQgY29tbWFuZCAiJHN1cHByZXNzX291dHB1dCIKICAgICAgIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAiJGNvbW1hbmQiIFwKICAgICAgICAgJyRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3Q7IGV4aXQgJEVYSVRfRkFJTFVSRScKIApAQCAtMTQ0NSwxMyArMjI5MCwxMyBAQAogfQogCiAkb3B0X2hlbHAgfHwgewotdGVzdCAiJG1vZGUiID0gY29tcGlsZSAmJiBmdW5jX21vZGVfY29tcGlsZSAkezErIiRAIn0KKyAgdGVzdCAiJG9wdF9tb2RlIiA9IGNvbXBpbGUgJiYgZnVuY19tb2RlX2NvbXBpbGUgJHsxKyIkQCJ9CiB9CiAKIGZ1bmNfbW9kZV9oZWxwICgpCiB7CiAgICAgIyBXZSBuZWVkIHRvIGRpc3BsYXkgaGVscCBmb3IgZWFjaCBvZiB0aGUgbW9kZXMuCi0gICAgY2FzZSAkbW9kZSBpbgorICAgIGNhc2UgJG9wdF9tb2RlIGluCiAgICAgICAiIikKICAgICAgICAgIyBHZW5lcmljIGhlbHAgaXMgZXh0cmFjdGVkIGZyb20gdGhlIHVzYWdlIGNvbW1lbnRzCiAgICAgICAgICMgYXQgdGhlIHN0YXJ0IG9mIHRoaXMgZmlsZS4KQEAgLTE0ODIsMTAgKzIzMjcsMTEgQEAKIAogICAtbyBPVVRQVVQtRklMRSAgICBzZXQgdGhlIG91dHB1dCBmaWxlIG5hbWUgdG8gT1VUUFVULUZJTEUKICAgLW5vLXN1cHByZXNzICAgICAgZG8gbm90IHN1cHByZXNzIGNvbXBpbGVyIG91dHB1dCBmb3IgbXVsdGlwbGUgcGFzc2VzCi0gIC1wcmVmZXItcGljICAgICAgIHRyeSB0byBidWlsZGluZyBQSUMgb2JqZWN0cyBvbmx5Ci0gIC1wcmVmZXItbm9uLXBpYyAgIHRyeSB0byBidWlsZGluZyBub24tUElDIG9iamVjdHMgb25seQorICAtcHJlZmVyLXBpYyAgICAgICB0cnkgdG8gYnVpbGQgUElDIG9iamVjdHMgb25seQorICAtcHJlZmVyLW5vbi1waWMgICB0cnkgdG8gYnVpbGQgbm9uLVBJQyBvYmplY3RzIG9ubHkKICAgLXNoYXJlZCAgICAgICAgICAgZG8gbm90IGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKICAgLXN0YXRpYyAgICAgICAgICAgb25seSBidWlsZCBhIFxgLm8nIGZpbGUgc3VpdGFibGUgZm9yIHN0YXRpYyBsaW5raW5nCisgIC1XYyxGTEFHICAgICAgICAgIHBhc3MgRkxBRyBkaXJlY3RseSB0byB0aGUgY29tcGlsZXIKIAogQ09NUElMRS1DT01NQU5EIGlzIGEgY29tbWFuZCB0byBiZSB1c2VkIGluIGNyZWF0aW5nIGEgXGBzdGFuZGFyZCcgb2JqZWN0IGZpbGUKIGZyb20gdGhlIGdpdmVuIFNPVVJDRUZJTEUuCkBAIC0xNTM4LDcgKzIzODQsNyBAQAogCiBUaGUgZm9sbG93aW5nIGNvbXBvbmVudHMgb2YgSU5TVEFMTC1DT01NQU5EIGFyZSB0cmVhdGVkIHNwZWNpYWxseToKIAotICAtaW5zdC1wcmVmaXggUFJFRklYLURJUiAgVXNlIFBSRUZJWC1ESVIgYXMgYSBzdGFnaW5nIGFyZWEgZm9yIGluc3RhbGxhdGlvbgorICAtaW5zdC1wcmVmaXgtZGlyIFBSRUZJWC1ESVIgIFVzZSBQUkVGSVgtRElSIGFzIGEgc3RhZ2luZyBhcmVhIGZvciBpbnN0YWxsYXRpb24KIAogVGhlIHJlc3Qgb2YgdGhlIGNvbXBvbmVudHMgYXJlIGludGVycHJldGVkIGFzIGFyZ3VtZW50cyB0byB0aGF0IGNvbW1hbmQgKG9ubHkKIEJTRC1jb21wYXRpYmxlIGluc3RhbGwgb3B0aW9ucyBhcmUgcmVjb2duaXplZCkuIgpAQCAtMTU1OCw2ICsyNDA0LDggQEAKIAogICAtYWxsLXN0YXRpYyAgICAgICBkbyBub3QgZG8gYW55IGR5bmFtaWMgbGlua2luZyBhdCBhbGwKICAgLWF2b2lkLXZlcnNpb24gICAgZG8gbm90IGFkZCBhIHZlcnNpb24gc3VmZml4IGlmIHBvc3NpYmxlCisgIC1iaW5kaXIgQklORElSICAgIHNwZWNpZnkgcGF0aCB0byBiaW5hcmllcyBkaXJlY3RvcnkgKGZvciBzeXN0ZW1zIHdoZXJlCisgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcyBtdXN0IGJlIGZvdW5kIGluIHRoZSBQQVRIIHNldHRpbmcgYXQgcnVudGltZSkKICAgLWRsb3BlbiBGSUxFICAgICAgXGAtZGxwcmVvcGVuJyBGSUxFIGlmIGl0IGNhbm5vdCBiZSBkbG9wZW5lZCBhdCBydW50aW1lCiAgIC1kbHByZW9wZW4gRklMRSAgIGxpbmsgaW4gRklMRSBhbmQgYWRkIGl0cyBzeW1ib2xzIHRvIGx0X3ByZWxvYWRlZF9zeW1ib2xzCiAgIC1leHBvcnQtZHluYW1pYyAgIGFsbG93IHN5bWJvbHMgZnJvbSBPVVRQVVQtRklMRSB0byBiZSByZXNvbHZlZCB3aXRoIGRsc3ltKDMpCkBAIC0xNTg2LDYgKzI0MzQsMTEgQEAKICAgLXZlcnNpb24taW5mbyBDVVJSRU5UWzpSRVZJU0lPTls6QUdFXV0KICAgICAgICAgICAgICAgICAgICAgc3BlY2lmeSBsaWJyYXJ5IHZlcnNpb24gaW5mbyBbZWFjaCB2YXJpYWJsZSBkZWZhdWx0cyB0byAwXQogICAtd2VhayBMSUJOQU1FICAgICBkZWNsYXJlIHRoYXQgdGhlIHRhcmdldCBwcm92aWRlcyB0aGUgTElCTkFNRSBpbnRlcmZhY2UKKyAgLVdjLEZMQUcKKyAgLVhjb21waWxlciBGTEFHICAgcGFzcyBsaW5rZXItc3BlY2lmaWMgRkxBRyBkaXJlY3RseSB0byB0aGUgY29tcGlsZXIKKyAgLVdsLEZMQUcKKyAgLVhsaW5rZXIgRkxBRyAgICAgcGFzcyBsaW5rZXItc3BlY2lmaWMgRkxBRyBkaXJlY3RseSB0byB0aGUgbGlua2VyCisgIC1YQ0NsaW5rZXIgRkxBRyAgIHBhc3MgbGluay1zcGVjaWZpYyBGTEFHIHRvIHRoZSBjb21waWxlciBkcml2ZXIgKENDKQogCiBBbGwgb3RoZXIgb3B0aW9ucyAoYXJndW1lbnRzIGJlZ2lubmluZyB3aXRoIFxgLScpIGFyZSBpZ25vcmVkLgogCkBAIC0xNjE5LDE4ICsyNDcyLDQ0IEBACiAgICAgICAgIDs7CiAKICAgICAgICopCi0gICAgICAgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRtb2RlJyIKKyAgICAgICAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG9wdF9tb2RlJyIKICAgICAgICAgOzsKICAgICBlc2FjCiAKLSAgICAkRUNITworICAgIGVjaG8KICAgICAkRUNITyAiVHJ5IFxgJHByb2duYW1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgb3RoZXIgbW9kZXMuIgotCi0gICAgZXhpdCAkPwogfQogCi0gICMgTm93IHRoYXQgd2UndmUgY29sbGVjdGVkIGEgcG9zc2libGUgLS1tb2RlIGFyZywgc2hvdyBoZWxwIGlmIG5lY2Vzc2FyeQotICAkb3B0X2hlbHAgJiYgZnVuY19tb2RlX2hlbHAKKyMgTm93IHRoYXQgd2UndmUgY29sbGVjdGVkIGEgcG9zc2libGUgLS1tb2RlIGFyZywgc2hvdyBoZWxwIGlmIG5lY2Vzc2FyeQoraWYgJG9wdF9oZWxwOyB0aGVuCisgIGlmIHRlc3QgIiRvcHRfaGVscCIgPSA6OyB0aGVuCisgICAgZnVuY19tb2RlX2hlbHAKKyAgZWxzZQorICAgIHsKKyAgICAgIGZ1bmNfaGVscCBub2V4aXQKKyAgICAgIGZvciBvcHRfbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCisJZnVuY19tb2RlX2hlbHAKKyAgICAgIGRvbmUKKyAgICB9IHwgc2VkIC1uICcxcDsgMiwkcy9eVXNhZ2U6LyAgb3I6IC9wJworICAgIHsKKyAgICAgIGZ1bmNfaGVscCBub2V4aXQKKyAgICAgIGZvciBvcHRfbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCisJZWNobworCWZ1bmNfbW9kZV9oZWxwCisgICAgICBkb25lCisgICAgfSB8CisgICAgc2VkICcxZAorICAgICAgL15XaGVuIHJlcG9ydGluZy8sL15SZXBvcnQveworCUgKKwlkCisgICAgICB9CisgICAgICAkeAorICAgICAgL2luZm9ybWF0aW9uIGFib3V0IG90aGVyIG1vZGVzL2QKKyAgICAgIC9tb3JlIGRldGFpbGVkIC4qTU9ERS9kCisgICAgICBzL15Vc2FnZTouKi0tbW9kZT1cKFteIF0qXCkgLiovRGVzY3JpcHRpb24gb2YgXDEgbW9kZTovJworICBmaQorICBleGl0ICQ/CitmaQogCiAKICMgZnVuY19tb2RlX2V4ZWN1dGUgYXJnLi4uCkBAIC0xNjQzLDEzICsyNTIyLDE2IEBACiAgICAgICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYSBDT01NQU5EIgogCiAgICAgIyBIYW5kbGUgLWRsb3BlbiBmbGFncyBpbW1lZGlhdGVseS4KLSAgICBmb3IgZmlsZSBpbiAkZXhlY3V0ZV9kbGZpbGVzOyBkbworICAgIGZvciBmaWxlIGluICRvcHRfZGxvcGVuOyBkbwogICAgICAgdGVzdCAtZiAiJGZpbGUiIFwKIAl8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGZpbGUnIGlzIG5vdCBhIGZpbGUiCiAKICAgICAgIGRpcj0KICAgICAgIGNhc2UgJGZpbGUgaW4KICAgICAgICoubGEpCisJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmaWxlIgorCWZpbGU9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorCiAJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgYXJjaGl2ZS4KIAlmdW5jX2xhbGliX3Vuc2FmZV9wICIkZmlsZSIgXAogCSAgfHwgZnVuY19mYXRhbF9oZWxwICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKQEAgLTE2NzEsNyArMjU1Myw3IEBACiAJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKIAogCWlmIHRlc3QgLWYgIiRkaXIvJG9iamRpci8kZGxuYW1lIjsgdGhlbgotCSAgZGlyPSIkZGlyLyRvYmpkaXIiCisJICBmdW5jX2FwcGVuZCBkaXIgIi8kb2JqZGlyIgogCWVsc2UKIAkgIGlmIHRlc3QgISAtZiAiJGRpci8kZGxuYW1lIjsgdGhlbgogCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBcYCRkbG5hbWUnIGluIFxgJGRpcicgb3IgXGAkZGlyLyRvYmpkaXInIgpAQCAtMTcxMiw3ICsyNTk0LDcgQEAKICAgICBmb3IgZmlsZQogICAgIGRvCiAgICAgICBjYXNlICRmaWxlIGluCi0gICAgICAtKikgOzsKKyAgICAgIC0qIHwgKi5sYSB8ICoubG8gKSA7OwogICAgICAgKikKIAkjIERvIGEgdGVzdCB0byBzZWUgaWYgdGhpcyBpcyByZWFsbHkgYSBsaWJ0b29sIHByb2dyYW0uCiAJaWYgZnVuY19sdHdyYXBwZXJfc2NyaXB0X3AgIiRmaWxlIjsgdGhlbgpAQCAtMTcyOCw4ICsyNjEwLDcgQEAKIAk7OwogICAgICAgZXNhYwogICAgICAgIyBRdW90ZSBhcmd1bWVudHMgKHRvIHByZXNlcnZlIHNoZWxsIG1ldGFjaGFyYWN0ZXJzKS4KLSAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmaWxlIgotICAgICAgYXJncz0iJGFyZ3MgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgZnVuY19hcHBlbmRfcXVvdGVkIGFyZ3MgIiRmaWxlIgogICAgIGRvbmUKIAogICAgIGlmIHRlc3QgIlgkb3B0X2RyeV9ydW4iID0gWGZhbHNlOyB0aGVuCkBAIC0xNzU0LDI5ICsyNjM1LDY2IEBACiAgICAgICAjIERpc3BsYXkgd2hhdCB3b3VsZCBiZSBkb25lLgogICAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCiAJZXZhbCAiXCRFQ0hPIFwiXCRzaGxpYnBhdGhfdmFyPVwkJHNobGlicGF0aF92YXJcIiIKLQkkRUNITyAiZXhwb3J0ICRzaGxpYnBhdGhfdmFyIgorCWVjaG8gImV4cG9ydCAkc2hsaWJwYXRoX3ZhciIKICAgICAgIGZpCiAgICAgICAkRUNITyAiJGNtZCRhcmdzIgogICAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCiAgICAgZmkKIH0KIAotdGVzdCAiJG1vZGUiID0gZXhlY3V0ZSAmJiBmdW5jX21vZGVfZXhlY3V0ZSAkezErIiRAIn0KK3Rlc3QgIiRvcHRfbW9kZSIgPSBleGVjdXRlICYmIGZ1bmNfbW9kZV9leGVjdXRlICR7MSsiJEAifQogCiAKICMgZnVuY19tb2RlX2ZpbmlzaCBhcmcuLi4KIGZ1bmNfbW9kZV9maW5pc2ggKCkKIHsKICAgICAkb3B0X2RlYnVnCi0gICAgbGliZGlycz0iJG5vbm9wdCIKKyAgICBsaWJzPQorICAgIGxpYmRpcnM9CiAgICAgYWRtaW5jbWRzPQogCi0gICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KLSAgICAgIGZvciBkaXIKLSAgICAgIGRvCi0JbGliZGlycz0iJGxpYmRpcnMgJGRpciIKLSAgICAgIGRvbmUKKyAgICBmb3Igb3B0IGluICIkbm9ub3B0IiAkezErIiRAIn0KKyAgICBkbworICAgICAgaWYgdGVzdCAtZCAiJG9wdCI7IHRoZW4KKwlmdW5jX2FwcGVuZCBsaWJkaXJzICIgJG9wdCIKIAorICAgICAgZWxpZiB0ZXN0IC1mICIkb3B0IjsgdGhlbgorCWlmIGZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRvcHQiOyB0aGVuCisJICBmdW5jX2FwcGVuZCBsaWJzICIgJG9wdCIKKwllbHNlCisJICBmdW5jX3dhcm5pbmcgIlxgJG9wdCcgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorCWZpCisKKyAgICAgIGVsc2UKKwlmdW5jX2ZhdGFsX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IFxgJG9wdCciCisgICAgICBmaQorICAgIGRvbmUKKworICAgIGlmIHRlc3QgLW4gIiRsaWJzIjsgdGhlbgorICAgICAgaWYgdGVzdCAtbiAiJGx0X3N5c3Jvb3QiOyB0aGVuCisgICAgICAgIHN5c3Jvb3RfcmVnZXg9YCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkc2VkX21ha2VfbGl0ZXJhbF9yZWdleCJgCisgICAgICAgIHN5c3Jvb3RfY21kPSJzL1woWyAnXVwpJHN5c3Jvb3RfcmVnZXgvXDEvZzsiCisgICAgICBlbHNlCisgICAgICAgIHN5c3Jvb3RfY21kPQorICAgICAgZmkKKworICAgICAgIyBSZW1vdmUgc3lzcm9vdCByZWZlcmVuY2VzCisgICAgICBpZiAkb3B0X2RyeV9ydW47IHRoZW4KKyAgICAgICAgZm9yIGxpYiBpbiAkbGliczsgZG8KKyAgICAgICAgICBlY2hvICJyZW1vdmluZyByZWZlcmVuY2VzIHRvICRsdF9zeXNyb290IGFuZCBcYD0nIHByZWZpeGVzIGZyb20gJGxpYiIKKyAgICAgICAgZG9uZQorICAgICAgZWxzZQorICAgICAgICB0bXBkaXI9YGZ1bmNfbWt0ZW1wZGlyYAorICAgICAgICBmb3IgbGliIGluICRsaWJzOyBkbworCSAgc2VkIC1lICIke3N5c3Jvb3RfY21kfSBzL1woWyAnXS1bTFJdXCk9L1wxL2c7IHMvXChbICddXCk9L1wxL2ciICRsaWIgXAorCSAgICA+ICR0bXBkaXIvdG1wLWxhCisJICBtdiAtZiAkdG1wZGlyL3RtcC1sYSAkbGliCisJZG9uZQorICAgICAgICAke1JNfXIgIiR0bXBkaXIiCisgICAgICBmaQorICAgIGZpCisKKyAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgogICAgICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KIAlpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMiOyB0aGVuCiAJICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgZmluaXNoIGNvbW1hbmRzLgpAQCAtMTc4Niw3ICsyNzA0LDcgQEAKIAlpZiB0ZXN0IC1uICIkZmluaXNoX2V2YWwiOyB0aGVuCiAJICAjIERvIHRoZSBzaW5nbGUgZmluaXNoX2V2YWwuCiAJICBldmFsIGNtZHM9XCIkZmluaXNoX2V2YWxcIgotCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiRjbWRzIiB8fCBhZG1pbmNtZHM9IiRhZG1pbmNtZHMKKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkY21kcyIgfHwgZnVuY19hcHBlbmQgYWRtaW5jbWRzICIKICAgICAgICAkY21kcyIKIAlmaQogICAgICAgZG9uZQpAQCAtMTc5NSw1MyArMjcxMyw1NSBAQAogICAgICMgRXhpdCBoZXJlIGlmIHRoZXkgd2FudGVkIHNpbGVudCBtb2RlLgogICAgICRvcHRfc2lsZW50ICYmIGV4aXQgJEVYSVRfU1VDQ0VTUwogCi0gICAgJEVDSE8gIlgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8ICRYc2VkCi0gICAgJEVDSE8gIkxpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOiIKLSAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbwotICAgICAgJEVDSE8gIiAgICRsaWJkaXIiCi0gICAgZG9uZQotICAgICRFQ0hPCi0gICAgJEVDSE8gIklmIHlvdSBldmVyIGhhcHBlbiB0byB3YW50IHRvIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgbGlicmFyaWVzIgotICAgICRFQ0hPICJpbiBhIGdpdmVuIGRpcmVjdG9yeSwgTElCRElSLCB5b3UgbXVzdCBlaXRoZXIgdXNlIGxpYnRvb2wsIGFuZCIKLSAgICAkRUNITyAic3BlY2lmeSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgbGlicmFyeSwgb3IgdXNlIHRoZSBcYC1MTElCRElSJyIKLSAgICAkRUNITyAiZmxhZyBkdXJpbmcgbGlua2luZyBhbmQgZG8gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6IgotICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgotICAgICAgJEVDSE8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkc2hsaWJwYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCi0gICAgICAkRUNITyAiICAgICBkdXJpbmcgZXhlY3V0aW9uIgotICAgIGZpCi0gICAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotICAgICAgJEVDSE8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkcnVucGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgotICAgICAgJEVDSE8gIiAgICAgZHVyaW5nIGxpbmtpbmciCi0gICAgZmkKLSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KLSAgICAgIGxpYmRpcj1MSUJESVIKLSAgICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKyAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgorICAgICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKyAgICAgIGVjaG8gIkxpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOiIKKyAgICAgIGZvciBsaWJkaXIgaW4gJGxpYmRpcnM7IGRvCisJJEVDSE8gIiAgICRsaWJkaXIiCisgICAgICBkb25lCisgICAgICBlY2hvCisgICAgICBlY2hvICJJZiB5b3UgZXZlciBoYXBwZW4gdG8gd2FudCB0byBsaW5rIGFnYWluc3QgaW5zdGFsbGVkIGxpYnJhcmllcyIKKyAgICAgIGVjaG8gImluIGEgZ2l2ZW4gZGlyZWN0b3J5LCBMSUJESVIsIHlvdSBtdXN0IGVpdGhlciB1c2UgbGlidG9vbCwgYW5kIgorICAgICAgZWNobyAic3BlY2lmeSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgbGlicmFyeSwgb3IgdXNlIHRoZSBcYC1MTElCRElSJyIKKyAgICAgIGVjaG8gImZsYWcgZHVyaW5nIGxpbmtpbmcgYW5kIGRvIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nOiIKKyAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgorCWVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkc2hsaWJwYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCisJZWNobyAiICAgICBkdXJpbmcgZXhlY3V0aW9uIgorICAgICAgZmkKKyAgICAgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KKwllY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHJ1bnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKKwllY2hvICIgICAgIGR1cmluZyBsaW5raW5nIgorICAgICAgZmkKKyAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgorCWxpYmRpcj1MSUJESVIKKwlldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCiAKLSAgICAgICRFQ0hPICIgICAtIHVzZSB0aGUgXGAkZmxhZycgbGlua2VyIGZsYWciCi0gICAgZmkKLSAgICBpZiB0ZXN0IC1uICIkYWRtaW5jbWRzIjsgdGhlbgotICAgICAgJEVDSE8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHJ1biB0aGVzZSBjb21tYW5kczokYWRtaW5jbWRzIgotICAgIGZpCi0gICAgaWYgdGVzdCAtZiAvZXRjL2xkLnNvLmNvbmY7IHRoZW4KLSAgICAgICRFQ0hPICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBhZGQgTElCRElSIHRvIFxgL2V0Yy9sZC5zby5jb25mJyIKLSAgICBmaQotICAgICRFQ0hPCisJJEVDSE8gIiAgIC0gdXNlIHRoZSBcYCRmbGFnJyBsaW5rZXIgZmxhZyIKKyAgICAgIGZpCisgICAgICBpZiB0ZXN0IC1uICIkYWRtaW5jbWRzIjsgdGhlbgorCSRFQ0hPICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBydW4gdGhlc2UgY29tbWFuZHM6JGFkbWluY21kcyIKKyAgICAgIGZpCisgICAgICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgorCWVjaG8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGFkZCBMSUJESVIgdG8gXGAvZXRjL2xkLnNvLmNvbmYnIgorICAgICAgZmkKKyAgICAgIGVjaG8KIAotICAgICRFQ0hPICJTZWUgYW55IG9wZXJhdGluZyBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBhYm91dCBzaGFyZWQgbGlicmFyaWVzIGZvciIKLSAgICBjYXNlICRob3N0IGluCi0gICAgICBzb2xhcmlzMi5bNjc4OV18c29sYXJpczIuMVswLTldKQotICAgICAgICAkRUNITyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSksIGNybGUoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCIKLQkkRUNITyAicGFnZXMuIgotCTs7Ci0gICAgICAqKQotICAgICAgICAkRUNITyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCBwYWdlcy4iCi0gICAgICAgIDs7Ci0gICAgZXNhYwotICAgICRFQ0hPICJYLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCAkWHNlZAorICAgICAgZWNobyAiU2VlIGFueSBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gYWJvdXQgc2hhcmVkIGxpYnJhcmllcyBmb3IiCisgICAgICBjYXNlICRob3N0IGluCisJc29sYXJpczIuWzY3ODldfHNvbGFyaXMyLjFbMC05XSkKKwkgIGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpLCBjcmxlKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwiCisJICBlY2hvICJwYWdlcy4iCisJICA7OworCSopCisJICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSBhbmQgbGQuc28oOCkgbWFudWFsIHBhZ2VzLiIKKwkgIDs7CisgICAgICBlc2FjCisgICAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorICAgIGZpCiAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCiB9CiAKLXRlc3QgIiRtb2RlIiA9IGZpbmlzaCAmJiBmdW5jX21vZGVfZmluaXNoICR7MSsiJEAifQordGVzdCAiJG9wdF9tb2RlIiA9IGZpbmlzaCAmJiBmdW5jX21vZGVfZmluaXNoICR7MSsiJEAifQogCiAKICMgZnVuY19tb2RlX2luc3RhbGwgYXJnLi4uCkBAIC0xODUyLDcgKzI3NzIsNyBAQAogICAgICMgaW5zdGFsbF9wcm9nIChlc3BlY2lhbGx5IG9uIFdpbmRvd3MgTlQpLgogICAgIGlmIHRlc3QgIiRub25vcHQiID0gIiRTSEVMTCIgfHwgdGVzdCAiJG5vbm9wdCIgPSAvYmluL3NoIHx8CiAgICAgICAgIyBBbGxvdyB0aGUgdXNlIG9mIEdOVSBzaHRvb2wncyBpbnN0YWxsIGNvbW1hbmQuCi0gICAgICAgJEVDSE8gIlgkbm9ub3B0IiB8ICRHUkVQIHNodG9vbCA+L2Rldi9udWxsOyB0aGVuCisgICAgICAgY2FzZSAkbm9ub3B0IGluICpzaHRvb2wqKSA6OzsgKikgZmFsc2U7OyBlc2FjOyB0aGVuCiAgICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgaXQuCiAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkbm9ub3B0IgogICAgICAgaW5zdGFsbF9wcm9nPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQgIgpAQCAtMTg2Niw3ICsyNzg2LDEyIEBACiAgICAgIyBUaGUgcmVhbCBmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIGluc3RhbGxhdGlvbiBwcm9ncmFtLgogICAgICMgQWVzdGhldGljYWxseSBxdW90ZSBpdC4KICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotICAgIGluc3RhbGxfcHJvZz0iJGluc3RhbGxfcHJvZyRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICBmdW5jX2FwcGVuZCBpbnN0YWxsX3Byb2cgIiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICBpbnN0YWxsX3NoYXJlZF9wcm9nPSRpbnN0YWxsX3Byb2cKKyAgICBjYXNlICIgJGluc3RhbGxfcHJvZyAiIGluCisgICAgICAqW1xcXCAvXWNwXCAqKSBpbnN0YWxsX2NwPTogOzsKKyAgICAgICopIGluc3RhbGxfY3A9ZmFsc2UgOzsKKyAgICBlc2FjCiAKICAgICAjIFdlIG5lZWQgdG8gYWNjZXB0IGF0IGxlYXN0IGFsbCB0aGUgQlNEIGluc3RhbGwgZmxhZ3MuCiAgICAgZGVzdD0KQEAgLTE4NzYsMTAgKzI4MDEsMTIgQEAKICAgICBpbnN0YWxsX3R5cGU9CiAgICAgaXNkaXI9bm8KICAgICBzdHJpcG1lPQorICAgIG5vX21vZGU9OgogICAgIGZvciBhcmcKICAgICBkbworICAgICAgYXJnMj0KICAgICAgIGlmIHRlc3QgLW4gIiRkZXN0IjsgdGhlbgotCWZpbGVzPSIkZmlsZXMgJGRlc3QiCisJZnVuY19hcHBlbmQgZmlsZXMgIiAkZGVzdCIKIAlkZXN0PSRhcmcKIAljb250aW51ZQogICAgICAgZmkKQEAgLTE4ODcsMTAgKzI4MTQsOSBAQAogICAgICAgY2FzZSAkYXJnIGluCiAgICAgICAtZCkgaXNkaXI9eWVzIDs7CiAgICAgICAtZikKLQljYXNlICIgJGluc3RhbGxfcHJvZyAiIGluCi0JKltcXFwgL11jcFwgKikgOzsKLQkqKSBwcmV2PSRhcmcgOzsKLQllc2FjCisJaWYgJGluc3RhbGxfY3A7IHRoZW4gOjsgZWxzZQorCSAgcHJldj0kYXJnCisJZmkKIAk7OwogICAgICAgLWcgfCAtbSB8IC1vKQogCXByZXY9JGFyZwpAQCAtMTkwNCw2ICsyODMwLDEwIEBACiAgICAgICAqKQogCSMgSWYgdGhlIHByZXZpb3VzIG9wdGlvbiBuZWVkZWQgYW4gYXJndW1lbnQsIHRoZW4gc2tpcCBpdC4KIAlpZiB0ZXN0IC1uICIkcHJldiI7IHRoZW4KKwkgIGlmIHRlc3QgIngkcHJldiIgPSB4LW0gJiYgdGVzdCAtbiAiJGluc3RhbGxfb3ZlcnJpZGVfbW9kZSI7IHRoZW4KKwkgICAgYXJnMj0kaW5zdGFsbF9vdmVycmlkZV9tb2RlCisJICAgIG5vX21vZGU9ZmFsc2UKKwkgIGZpCiAJICBwcmV2PQogCWVsc2UKIAkgIGRlc3Q9JGFyZwpAQCAtMTkxNCw3ICsyODQ0LDExIEBACiAKICAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSB0aGUgYXJndW1lbnQuCiAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotICAgICAgaW5zdGFsbF9wcm9nPSIkaW5zdGFsbF9wcm9nICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfcHJvZyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICAgIGlmIHRlc3QgLW4gIiRhcmcyIjsgdGhlbgorCWZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmcyIgorICAgICAgZmkKKyAgICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfc2hhcmVkX3Byb2cgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAgICAgZG9uZQogCiAgICAgdGVzdCAteiAiJGluc3RhbGxfcHJvZyIgJiYgXApAQCAtMTkyMyw2ICsyODU3LDEzIEBACiAgICAgdGVzdCAtbiAiJHByZXYiICYmIFwKICAgICAgIGZ1bmNfZmF0YWxfaGVscCAidGhlIFxgJHByZXYnIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIKIAorICAgIGlmIHRlc3QgLW4gIiRpbnN0YWxsX292ZXJyaWRlX21vZGUiICYmICRub19tb2RlOyB0aGVuCisgICAgICBpZiAkaW5zdGFsbF9jcDsgdGhlbiA6OyBlbHNlCisJZnVuY19xdW90ZV9mb3JfZXZhbCAiJGluc3RhbGxfb3ZlcnJpZGVfbW9kZSIKKwlmdW5jX2FwcGVuZCBpbnN0YWxsX3NoYXJlZF9wcm9nICIgLW0gJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgZmkKKyAgICBmaQorCiAgICAgaWYgdGVzdCAteiAiJGZpbGVzIjsgdGhlbgogICAgICAgaWYgdGVzdCAteiAiJGRlc3QiOyB0aGVuCiAJZnVuY19mYXRhbF9oZWxwICJubyBmaWxlIG9yIGRlc3RpbmF0aW9uIHNwZWNpZmllZCIKQEAgLTE5NzcsMTAgKzI5MTgsMTMgQEAKICAgICAgIGNhc2UgJGZpbGUgaW4KICAgICAgICouJGxpYmV4dCkKIAkjIERvIHRoZSBzdGF0aWMgbGlicmFyaWVzIGxhdGVyLgotCXN0YXRpY2xpYnM9IiRzdGF0aWNsaWJzICRmaWxlIgorCWZ1bmNfYXBwZW5kIHN0YXRpY2xpYnMgIiAkZmlsZSIKIAk7OwogCiAgICAgICAqLmxhKQorCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZmlsZSIKKwlmaWxlPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKwogCSMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhpcyByZWFsbHkgaXMgYSBsaWJ0b29sIGFyY2hpdmUuCiAJZnVuY19sYWxpYl91bnNhZmVfcCAiJGZpbGUiIFwKIAkgIHx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkZmlsZScgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgpAQCAtMTk5NCwyMyArMjkzOCwyMyBAQAogCWlmIHRlc3QgIlgkZGVzdGRpciIgPSAiWCRsaWJkaXIiOyB0aGVuCiAJICBjYXNlICIkY3VycmVudF9saWJkaXJzICIgaW4KIAkgICoiICRsaWJkaXIgIiopIDs7Ci0JICAqKSBjdXJyZW50X2xpYmRpcnM9IiRjdXJyZW50X2xpYmRpcnMgJGxpYmRpciIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIGN1cnJlbnRfbGliZGlycyAiICRsaWJkaXIiIDs7CiAJICBlc2FjCiAJZWxzZQogCSAgIyBOb3RlIHRoZSBsaWJkaXIgYXMgYSBmdXR1cmUgbGliZGlyLgogCSAgY2FzZSAiJGZ1dHVyZV9saWJkaXJzICIgaW4KIAkgICoiICRsaWJkaXIgIiopIDs7Ci0JICAqKSBmdXR1cmVfbGliZGlycz0iJGZ1dHVyZV9saWJkaXJzICRsaWJkaXIiIDs7CisJICAqKSBmdW5jX2FwcGVuZCBmdXR1cmVfbGliZGlycyAiICRsaWJkaXIiIDs7CiAJICBlc2FjCiAJZmkKIAogCWZ1bmNfZGlybmFtZSAiJGZpbGUiICIvIiAiIgogCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0JZGlyPSIkZGlyJG9iamRpciIKKwlmdW5jX2FwcGVuZCBkaXIgIiRvYmpkaXIiCiAKIAlpZiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCiAJICAjIERldGVybWluZSB0aGUgcHJlZml4IHRoZSB1c2VyIGhhcyBhcHBsaWVkIHRvIG91ciBmdXR1cmUgZGlyLgotCSAgaW5zdF9wcmVmaXhfZGlyPWAkRUNITyAiWCRkZXN0ZGlyIiB8ICRYc2VkIC1lICJzJSRsaWJkaXJcJCUlImAKKwkgIGluc3RfcHJlZml4X2Rpcj1gJEVDSE8gIiRkZXN0ZGlyIiB8ICRTRUQgLWUgInMlJGxpYmRpclwkJSUiYAogCiAJICAjIERvbid0IGFsbG93IHRoZSB1c2VyIHRvIHBsYWNlIHVzIG91dHNpZGUgb2Ygb3VyIGV4cGVjdGVkCiAJICAjIGxvY2F0aW9uIGIvYyB0aGlzIHByZXZlbnRzIGZpbmRpbmcgZGVwZW5kZW50IGxpYnJhcmllcyB0aGF0CkBAIC0yMDIzLDkgKzI5NjcsOSBAQAogCiAJICBpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgogCSAgICAjIFN0aWNrIHRoZSBpbnN0X3ByZWZpeF9kaXIgZGF0YSBpbnRvIHRoZSBsaW5rIGNvbW1hbmQuCi0JICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAaW5zdF9wcmVmaXhfZGlyQCUtaW5zdC1wcmVmaXgtZGlyICRpbnN0X3ByZWZpeF9kaXIlImAKKwkgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICIkcmVsaW5rX2NvbW1hbmQiIHwgJFNFRCAicyVAaW5zdF9wcmVmaXhfZGlyQCUtaW5zdC1wcmVmaXgtZGlyICRpbnN0X3ByZWZpeF9kaXIlImAKIAkgIGVsc2UKLQkgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJHJlbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBpbnN0X3ByZWZpeF9kaXJAJSUiYAorCSAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIiRyZWxpbmtfY29tbWFuZCIgfCAkU0VEICJzJUBpbnN0X3ByZWZpeF9kaXJAJSUiYAogCSAgZmkKIAogCSAgZnVuY193YXJuaW5nICJyZWxpbmtpbmcgXGAkZmlsZSciCkBAIC0yMDQzLDcgKzI5ODcsNyBAQAogCSAgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIiAmJiBzcmNuYW1lPSIkcmVhbG5hbWUiVAogCiAJICAjIEluc3RhbGwgdGhlIHNoYXJlZCBsaWJyYXJ5IGFuZCBidWlsZCB0aGUgc3ltbGlua3MuCi0JICBmdW5jX3Nob3dfZXZhbCAiJGluc3RhbGxfcHJvZyAkZGlyLyRzcmNuYW1lICRkZXN0ZGlyLyRyZWFsbmFtZSIgXAorCSAgZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3NoYXJlZF9wcm9nICRkaXIvJHNyY25hbWUgJGRlc3RkaXIvJHJlYWxuYW1lIiBcCiAJICAgICAgJ2V4aXQgJD8nCiAJICB0c3RyaXBtZT0iJHN0cmlwbWUiCiAJICBjYXNlICRob3N0X29zIGluCkBAIC0yMDgzLDcgKzMwMjcsNyBAQAogCWZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nICRpbnN0bmFtZSAkZGVzdGRpci8kbmFtZSIgJ2V4aXQgJD8nCiAKIAkjIE1heWJlIGluc3RhbGwgdGhlIHN0YXRpYyBsaWJyYXJ5LCB0b28uCi0JdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBzdGF0aWNsaWJzPSIkc3RhdGljbGlicyAkZGlyLyRvbGRfbGlicmFyeSIKKwl0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIGZ1bmNfYXBwZW5kIHN0YXRpY2xpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKIAk7OwogCiAgICAgICAqLmxvKQpAQCAtMjE4Myw3ICszMTI3LDcgQEAKIAkgICAgaWYgdGVzdCAtZiAiJGxpYiI7IHRoZW4KIAkgICAgICBmdW5jX3NvdXJjZSAiJGxpYiIKIAkgICAgZmkKLQkgICAgbGliZmlsZT0iJGxpYmRpci8iYCRFQ0hPICJYJGxpYiIgfCAkWHNlZCAtZSAncyVeLiovJSVnJ2AgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CisJICAgIGxpYmZpbGU9IiRsaWJkaXIvImAkRUNITyAiJGxpYiIgfCAkU0VEICdzJV4uKi8lJWcnYCAjIyMgdGVzdHN1aXRlOiBza2lwIG5lc3RlZCBxdW90aW5nIHRlc3QKIAkgICAgaWYgdGVzdCAtbiAiJGxpYmRpciIgJiYgdGVzdCAhIC1mICIkbGliZmlsZSI7IHRoZW4KIAkgICAgICBmdW5jX3dhcm5pbmcgIlxgJGxpYicgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBcYCRsaWJkaXInIgogCSAgICAgIGZpbmFsaXplPW5vCkBAIC0yMjAyLDcgKzMxNDYsNyBAQAogCQlmaWxlPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCiAJICAgICAgICBvdXRwdXRuYW1lPSIkdG1wZGlyLyRmaWxlIgogCSAgICAgICAgIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgotCSAgICAgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJHJlbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dG5hbWUiJyVnJ2AKKwkgICAgICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiJHJlbGlua19jb21tYW5kIiB8ICRTRUQgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0bmFtZSInJWcnYAogCiAJICAgICAgICAkb3B0X3NpbGVudCB8fCB7CiAJICAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZCAiJHJlbGlua19jb21tYW5kIgpAQCAtMjIyMSw3ICszMTY1LDcgQEAKIAkgICAgfQogCSAgZWxzZQogCSAgICAjIEluc3RhbGwgdGhlIGJpbmFyeSB0aGF0IHdlIGNvbXBpbGVkIGVhcmxpZXIuCi0JICAgIGZpbGU9YCRFQ0hPICJYJGZpbGUkc3RyaXBwZWRfZXh0IiB8ICRYc2VkIC1lICJzJVwoW14vXSpcKSQlJG9iamRpci9cMSUiYAorCSAgICBmaWxlPWAkRUNITyAiJGZpbGUkc3RyaXBwZWRfZXh0IiB8ICRTRUQgInMlXChbXi9dKlwpJCUkb2JqZGlyL1wxJSJgCiAJICBmaQogCWZpCiAKQEAgLTIyODAsNyArMzIyNCw3IEBACiAgICAgZmkKIH0KIAotdGVzdCAiJG1vZGUiID0gaW5zdGFsbCAmJiBmdW5jX21vZGVfaW5zdGFsbCAkezErIiRAIn0KK3Rlc3QgIiRvcHRfbW9kZSIgPSBpbnN0YWxsICYmIGZ1bmNfbW9kZV9pbnN0YWxsICR7MSsiJEAifQogCiAKICMgZnVuY19nZW5lcmF0ZV9kbHN5bXMgb3V0cHV0bmFtZSBvcmlnaW5hdG9yIHBpY19wCkBAIC0yMzIzLDYgKzMyNjcsMjIgQEAKIGV4dGVybiBcIkNcIiB7CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDQpICYmIChfX0dOVUNfTUlOT1JfXyA+PSA0KSkgfHwgKF9fR05VQ19fID4gNCkpCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV3N0cmljdC1wcm90b3R5cGVzXCIKKyNlbmRpZgorCisvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisjZWxzZQorIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKyNlbmRpZgorCiAvKiBFeHRlcm5hbCBzeW1ib2wgZGVjbGFyYXRpb25zIGZvciB0aGUgY29tcGlsZXIuICovXAogIgogCkBAIC0yMzMyLDEwICszMjkyLDExIEBACiAJICAkb3B0X2RyeV9ydW4gfHwgZWNobyAnOiBAUFJPR1JBTUAgJyA+ICIkbmxpc3QiCiAKIAkgICMgQWRkIG91ciBvd24gcHJvZ3JhbSBvYmplY3RzIHRvIHRoZSBzeW1ib2wgbGlzdC4KLQkgIHByb2dmaWxlcz1gJEVDSE8gIlgkb2JqcyRvbGRfZGVwbGlicyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAorCSAgcHJvZ2ZpbGVzPWAkRUNITyAiJG9ianMkb2xkX2RlcGxpYnMiIHwgJFNQMk5MIHwgJFNFRCAiJGxvMm8iIHwgJE5MMlNQYAogCSAgZm9yIHByb2dmaWxlIGluICRwcm9nZmlsZXM7IGRvCi0JICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkcHJvZ2ZpbGUnIgotCSAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJE5NICRwcm9nZmlsZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCisJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkcHJvZ2ZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisJICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkZnVuY190b190b29sX2ZpbGVfcmVzdWx0JyIKKwkgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiROTSAkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKIAkgIGRvbmUKIAogCSAgaWYgdGVzdCAtbiAiJGV4Y2x1ZGVfZXhwc3ltcyI7IHRoZW4KQEAgLTIzNzEsNyArMzMzMiw3IEBACiAJICAgICAgZXZhbCAnJEdSRVAgLWYgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIgPCAiJG5saXN0IiA+ICIkbmxpc3QiVCcKIAkgICAgICBldmFsICckTVYgIiRubGlzdCJUICIkbmxpc3QiJwogCSAgICAgIGNhc2UgJGhvc3QgaW4KLQkgICAgICAgICpjeWd3aW4gfCAqbWluZ3cqIHwgKmNlZ2NjKiApCisJICAgICAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKIAkgICAgICAgICAgZXZhbCAiZWNobyBFWFBPUlRTICInPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKIAkgICAgICAgICAgZXZhbCAnY2F0ICIkbmxpc3QiID4+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJwogCSAgICAgICAgICA7OwpAQCAtMjM4NCwxMCArMzM0NSw1MiBAQAogCSAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRkbHByZWZpbGUnIgogCSAgZnVuY19iYXNlbmFtZSAiJGRscHJlZmlsZSIKIAkgIG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLQkgICRvcHRfZHJ5X3J1biB8fCB7Ci0JICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCi0JICAgIGV2YWwgIiROTSAkZGxwcmVmaWxlIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKLQkgIH0KKyAgICAgICAgICBjYXNlICRob3N0IGluCisJICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorCSAgICAgICMgaWYgYW4gaW1wb3J0IGxpYnJhcnksIHdlIG5lZWQgdG8gb2J0YWluIGRsbmFtZQorCSAgICAgIGlmIGZ1bmNfd2luMzJfaW1wb3J0X2xpYl9wICIkZGxwcmVmaWxlIjsgdGhlbgorCSAgICAgICAgZnVuY190cl9zaCAiJGRscHJlZmlsZSIKKwkgICAgICAgIGV2YWwgImN1cnJfbGFmaWxlPVwkbGliZmlsZV8kZnVuY190cl9zaF9yZXN1bHQiCisJICAgICAgICBkbHByZWZpbGVfZGxiYXNlbmFtZT0iIgorCSAgICAgICAgaWYgdGVzdCAtbiAiJGN1cnJfbGFmaWxlIiAmJiBmdW5jX2xhbGliX3AgIiRjdXJyX2xhZmlsZSI7IHRoZW4KKwkgICAgICAgICAgIyBVc2Ugc3Vic2hlbGwsIHRvIGF2b2lkIGNsb2JiZXJpbmcgY3VycmVudCB2YXJpYWJsZSB2YWx1ZXMKKwkgICAgICAgICAgZGxwcmVmaWxlX2RsbmFtZT1gc291cmNlICIkY3Vycl9sYWZpbGUiICYmIGVjaG8gIiRkbG5hbWUiYAorCSAgICAgICAgICBpZiB0ZXN0IC1uICIkZGxwcmVmaWxlX2RsbmFtZSIgOyB0aGVuCisJICAgICAgICAgICAgZnVuY19iYXNlbmFtZSAiJGRscHJlZmlsZV9kbG5hbWUiCisJICAgICAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKwkgICAgICAgICAgZWxzZQorCSAgICAgICAgICAgICMgbm8gbGFmaWxlLiB1c2VyIGV4cGxpY2l0bHkgcmVxdWVzdGVkIC1kbHByZW9wZW4gPGltcG9ydCBsaWJyYXJ5Pi4KKwkgICAgICAgICAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgIiRkbHByZWZpbGUiCisJICAgICAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9JHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0CisJICAgICAgICAgIGZpCisJICAgICAgICBmaQorCSAgICAgICAgJG9wdF9kcnlfcnVuIHx8IHsKKwkgICAgICAgICAgaWYgdGVzdCAtbiAiJGRscHJlZmlsZV9kbGJhc2VuYW1lIiA7IHRoZW4KKwkgICAgICAgICAgICBldmFsICckRUNITyAiOiAkZGxwcmVmaWxlX2RsYmFzZW5hbWUiID4+ICIkbmxpc3QiJworCSAgICAgICAgICBlbHNlCisJICAgICAgICAgICAgZnVuY193YXJuaW5nICJDb3VsZCBub3QgY29tcHV0ZSBETEwgbmFtZSBmcm9tICRuYW1lIgorCSAgICAgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCisJICAgICAgICAgIGZpCisJICAgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorCSAgICAgICAgICBldmFsICIkTk0gXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwKKwkgICAgICAgICAgICAkU0VEIC1lICcvSSBfX2ltcC9kJyAtZSAncy9JIF9fbm1fL0QgLztzL19ubV9fLy8nID4+ICckbmxpc3QnIgorCSAgICAgICAgfQorCSAgICAgIGVsc2UgIyBub3QgYW4gaW1wb3J0IGxpYgorCSAgICAgICAgJG9wdF9kcnlfcnVuIHx8IHsKKwkgICAgICAgICAgZXZhbCAnJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKKwkgICAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisJICAgICAgICAgIGV2YWwgIiROTSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCisJICAgICAgICB9CisJICAgICAgZmkKKwkgICAgOzsKKwkgICAgKikKKwkgICAgICAkb3B0X2RyeV9ydW4gfHwgeworCSAgICAgICAgZXZhbCAnJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKKwkgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorCSAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKKwkgICAgICB9CisJICAgIDs7CisgICAgICAgICAgZXNhYwogCWRvbmUKIAogCSRvcHRfZHJ5X3J1biB8fCB7CkBAIC0yNDE1LDM2ICszNDE4LDE5IEBACiAJICBpZiB0ZXN0IC1mICIkbmxpc3QiUzsgdGhlbgogCSAgICBldmFsICIkZ2xvYmFsX3N5bWJvbF90b19jZGVjbCInIDwgIiRubGlzdCJTID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIicKIAkgIGVsc2UKLQkgICAgJEVDSE8gJy8qIE5PTkUgKi8nID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIgorCSAgICBlY2hvICcvKiBOT05FICovJyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIKIAkgIGZpCiAKLQkgICRFQ0hPID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAorCSAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKIAogLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwogdHlwZWRlZiBzdHJ1Y3QgewogICBjb25zdCBjaGFyICpuYW1lOwogICB2b2lkICphZGRyZXNzOwogfSBsdF9kbHN5bWxpc3Q7Ci0iCi0JICBjYXNlICRob3N0IGluCi0JICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKLQkgICAgJEVDSE8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCi0vKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlCi0gICBydW50aW1lIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbgotICAgb24gcHNldWRvLXJlbG9jcy4gICovIgotCSAgICBsdF9kbHN5bV9jb25zdD0gOzsKLQkgICpvc2Y1KikKLQkgICAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKLS8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEgKi8iCi0JICAgIGx0X2Rsc3ltX2NvbnN0PSA7OwotCSAgKikKLQkgICAgbHRfZGxzeW1fY29uc3Q9Y29uc3QgOzsKLQkgIGVzYWMKLQotCSAgJEVDSE8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCi1leHRlcm4gJGx0X2Rsc3ltX2NvbnN0IGx0X2Rsc3ltbGlzdAorZXh0ZXJuIExUX0RMU1lNX0NPTlNUIGx0X2Rsc3ltbGlzdAogbHRfJHtteV9wcmVmaXh9X0xUWF9wcmVsb2FkZWRfc3ltYm9sc1tdOwotJGx0X2Rsc3ltX2NvbnN0IGx0X2Rsc3ltbGlzdAorTFRfRExTWU1fQ09OU1QgbHRfZGxzeW1saXN0CiBsdF8ke215X3ByZWZpeH1fTFRYX3ByZWxvYWRlZF9zeW1ib2xzW10gPQoge1wKICAgeyBcIiRteV9vcmlnaW5hdG9yXCIsICh2b2lkICopIDAgfSwiCkBAIC0yNDU3LDcgKzM0NDMsNyBAQAogCSAgICBldmFsICIkZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiA8ICIkbmxpc3QiID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIgogCSAgICA7OwogCSAgZXNhYwotCSAgJEVDSE8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCisJICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAogICB7MCwgKHZvaWQgKikgMH0KIH07CiAKQEAgLTI1MDAsNyArMzQ4Niw3IEBACiAJZm9yIGFyZyBpbiAkTFRDRkxBR1M7IGRvCiAJICBjYXNlICRhcmcgaW4KIAkgIC1waWUgfCAtZnBpZSB8IC1mUElFKSA7OwotCSAgKikgc3ltdGFiX2NmbGFncz0iJHN5bXRhYl9jZmxhZ3MgJGFyZyIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIHN5bXRhYl9jZmxhZ3MgIiAkYXJnIiA7OwogCSAgZXNhYwogCWRvbmUKIApAQCAtMjUxNSwxNiArMzUwMSwxNiBAQAogCWNhc2UgJGhvc3QgaW4KIAkqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKIAkgIGlmIHRlc3QgLWYgIiRvdXRwdXRfb2JqZGlyLyRteV9vdXRwdXRuYW1lLmRlZiI7IHRoZW4KLQkgICAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRvdXRwdXRfb2JqZGlyLyRteV9vdXRwdXRuYW1lLmRlZiAkc3ltZmlsZW9iaiUiYAotCSAgICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkb3V0cHV0X29iamRpci8kbXlfb3V0cHV0bmFtZS5kZWYgJHN5bWZpbGVvYmolImAKKwkgICAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiJGNvbXBpbGVfY29tbWFuZCIgfCAkU0VEICJzJUBTWU1GSUxFQCUkb3V0cHV0X29iamRpci8kbXlfb3V0cHV0bmFtZS5kZWYgJHN5bWZpbGVvYmolImAKKwkgICAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIiRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTRUQgInMlQFNZTUZJTEVAJSRvdXRwdXRfb2JqZGlyLyRteV9vdXRwdXRuYW1lLmRlZiAkc3ltZmlsZW9iaiUiYAogCSAgZWxzZQotCSAgICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKLQkgICAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKKwkgICAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiJGNvbXBpbGVfY29tbWFuZCIgfCAkU0VEICJzJUBTWU1GSUxFQCUkc3ltZmlsZW9iaiUiYAorCSAgICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiJGZpbmFsaXplX2NvbW1hbmQiIHwgJFNFRCAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKIAkgIGZpCiAJICA7OwogCSopCi0JICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKLQkgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRzeW1maWxlb2JqJSJgCisJICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICIkY29tcGlsZV9jb21tYW5kIiB8ICRTRUQgInMlQFNZTUZJTEVAJSRzeW1maWxlb2JqJSJgCisJICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiJGZpbmFsaXplX2NvbW1hbmQiIHwgJFNFRCAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKIAkgIDs7CiAJZXNhYwogCTs7CkBAIC0yNTM4LDggKzM1MjQsOCBAQAogICAgICAgIyByZWFsbHkgd2FzIHJlcXVpcmVkLgogCiAgICAgICAjIE51bGxpZnkgdGhlIHN5bWJvbCBmaWxlLgotICAgICAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlIEBTWU1GSUxFQCUlImAKLSAgICAgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlIEBTWU1GSUxFQCUlImAKKyAgICAgIGNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX2NvbW1hbmQiIHwgJFNFRCAicyUgQFNZTUZJTEVAJSUiYAorICAgICAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIiRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTRUQgInMlIEBTWU1GSUxFQCUlImAKICAgICBmaQogfQogCkBAIC0yNTQ5LDYgKzM1MzUsNyBAQAogIyBOZWVkIGEgbG90IG9mIGdvbyB0byBoYW5kbGUgKmJvdGgqIERMTHMgYW5kIGltcG9ydCBsaWJzCiAjIEhhcyB0byBiZSBhIHNoZWxsIGZ1bmN0aW9uIGluIG9yZGVyIHRvICdlYXQnIHRoZSBhcmd1bWVudAogIyB0aGF0IGlzIHN1cHBsaWVkIHdoZW4gJGZpbGVfbWFnaWNfY29tbWFuZCBpcyBjYWxsZWQuCisjIERlc3BpdGUgdGhlIG5hbWUsIGFsc28gZGVhbCB3aXRoIDY0IGJpdCBiaW5hcmllcy4KIGZ1bmNfd2luMzJfbGliaWQgKCkKIHsKICAgJG9wdF9kZWJ1ZwpAQCAtMjU1OSw5ICszNTQ2LDExIEBACiAgICAgd2luMzJfbGliaWRfdHlwZT0ieDg2IGFyY2hpdmUgaW1wb3J0IgogICAgIDs7CiAgICphclwgYXJjaGl2ZSopICMgY291bGQgYmUgYW4gaW1wb3J0LCBvciBzdGF0aWMKKyAgICAjIEtlZXAgdGhlIGVncmVwIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gX0xUX0NIRUNLX01BR0lDX01FVEhPRC4KICAgICBpZiBldmFsICRPQkpEVU1QIC1mICQxIHwgJFNFRCAtZSAnMTBxJyAyPi9kZXYvbnVsbCB8Ci0gICAgICAgJEVHUkVQICdmaWxlIGZvcm1hdCBwZS1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nID4vZGV2L251bGwgOyB0aGVuCi0gICAgICB3aW4zMl9ubXJlcz1gZXZhbCAkTk0gLWYgcG9zaXggLUEgJDEgfAorICAgICAgICRFR1JFUCAnZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJyA+L2Rldi9udWxsOyB0aGVuCisgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgICAgICB3aW4zMl9ubXJlcz1gZXZhbCAkTk0gLWYgcG9zaXggLUEgXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgfAogCSRTRUQgLW4gLWUgJwogCSAgICAxLDEwMHsKIAkJLyBJIC97CkBAIC0yNTkwLDYgKzM1NzksMTMxIEBACiAgICRFQ0hPICIkd2luMzJfbGliaWRfdHlwZSIKIH0KIAorIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIgQVJHCisjCisjIFBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlCisjIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZAorIyBpbXBvcnQgbGlicmFyeSBBUkcuCisjIEludm9rZWQgYnkgZXZhbCdpbmcgdGhlIGxpYnRvb2wgdmFyaWFibGUKKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gdGhlIHZhcmlhYmxlCisjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAorZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliICgpCit7CisgICRvcHRfZGVidWcKKyAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YCRETExUT09MIC0taWRlbnRpZnktc3RyaWN0IC0taWRlbnRpZnkgIiQxImAKK30KKworIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSBTRUNUSU9OX05BTUUgTElCTkFNRXMKKyMKKyMgVGhlIGlzIHRoZSBjb3JlIG9mIGEgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gb2YgYQorIyBwbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZSBuYW1lIG9mIHRoZQorIyBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgaW1wb3J0IGxpYnJhcnkgTElCTkFNRS4KKyMKKyMgU0VDVElPTl9OQU1FIGlzIGVpdGhlciAuaWRhdGEkNiBvciAuaWRhdGEkNywgZGVwZW5kaW5nCisjIG9uIHRoZSBwbGF0Zm9ybSBhbmQgY29tcGlsZXIgdGhhdCBjcmVhdGVkIHRoZSBpbXBsaWIuCisjCisjIEVjaG9zIHRoZSBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZQorIyBzcGVjaWZpZWQgaW1wb3J0IGxpYnJhcnkuCitmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSAoKQoreworICAkb3B0X2RlYnVnCisgIG1hdGNoX2xpdGVyYWw9YCRFQ0hPICIkMSIgfCAkU0VEICIkc2VkX21ha2VfbGl0ZXJhbF9yZWdleCJgCisgICRPQkpEVU1QIC1zIC0tc2VjdGlvbiAiJDEiICIkMiIgMj4vZGV2L251bGwgfAorICAgICRTRUQgJy9eQ29udGVudHMgb2Ygc2VjdGlvbiAnIiRtYXRjaF9saXRlcmFsIic6L3sKKyAgICAgICMgUGxhY2UgbWFya2VyIGF0IGJlZ2lubmluZyBvZiBhcmNoaXZlIG1lbWJlciBkbGxuYW1lIHNlY3Rpb24KKyAgICAgIHMvLiovPT09PU1BUks9PT09LworICAgICAgcAorICAgICAgZAorICAgIH0KKyAgICAjIFRoZXNlIGxpbmVzIGNhbiBzb21ldGltZXMgYmUgbG9uZ2VyIHRoYW4gNDMgY2hhcmFjdGVycywgYnV0CisgICAgIyBhcmUgYWx3YXlzIHVuaW50ZXJlc3RpbmcKKyAgICAvOlsJIF0qZmlsZSBmb3JtYXQgcGVbaV1ceywxXH0tL2QKKyAgICAvXkluIGFyY2hpdmUgW146XSo6L2QKKyAgICAjIEVuc3VyZSBtYXJrZXIgaXMgcHJpbnRlZAorICAgIC9ePT09PU1BUks9PT09L3AKKyAgICAjIFJlbW92ZSBhbGwgbGluZXMgd2l0aCBsZXNzIHRoYW4gNDMgY2hhcmFjdGVycworICAgIC9eLlx7NDNcfS8hZAorICAgICMgRnJvbSByZW1haW5pbmcgbGluZXMsIHJlbW92ZSBmaXJzdCA0MyBjaGFyYWN0ZXJzCisgICAgcy9eLlx7NDNcfS8vJyB8CisgICAgJFNFRCAtbiAnCisgICAgICAjIEpvaW4gbWFya2VyIGFuZCBhbGwgbGluZXMgdW50aWwgbmV4dCBtYXJrZXIgaW50byBhIHNpbmdsZSBsaW5lCisgICAgICAvXj09PT1NQVJLPT09PS8gYiBwYXJhCisgICAgICBICisgICAgICAkIGIgcGFyYQorICAgICAgYgorICAgICAgOnBhcmEKKyAgICAgIHgKKyAgICAgIHMvXG4vL2cKKyAgICAgICMgUmVtb3ZlIHRoZSBtYXJrZXIKKyAgICAgIHMvXj09PT1NQVJLPT09PS8vCisgICAgICAjIFJlbW92ZSB0cmFpbGluZyBkb3RzIGFuZCB3aGl0ZXNwYWNlCisgICAgICBzL1tcLiBcdF0qJC8vCisgICAgICAjIFByaW50CisgICAgICAvLi9wJyB8CisgICAgIyB3ZSBub3cgaGF2ZSBhIGxpc3QsIG9uZSBlbnRyeSBwZXIgbGluZSwgb2YgdGhlIHN0cmluZ2lmaWVkCisgICAgIyBjb250ZW50cyBvZiB0aGUgYXBwcm9wcmlhdGUgc2VjdGlvbiBvZiBhbGwgbWVtYmVycyBvZiB0aGUKKyAgICAjIGFyY2hpdmUgd2hpY2ggcG9zc2VzcyB0aGF0IHNlY3Rpb24uIEhldXJpc3RpYzogZWxpbWluYXRlCisgICAgIyBhbGwgdGhvc2Ugd2hpY2ggaGF2ZSBhIGZpcnN0IG9yIHNlY29uZCBjaGFyYWN0ZXIgdGhhdCBpcworICAgICMgYSAnLicgKHRoYXQgaXMsIG9iamR1bXAncyByZXByZXNlbnRhdGlvbiBvZiBhbiB1bnByaW50YWJsZQorICAgICMgY2hhcmFjdGVyLikgVGhpcyBzaG91bGQgd29yayBmb3IgYWxsIGFyY2hpdmVzIHdpdGggbGVzcyB0aGFuCisgICAgIyAweDMwMmYgZXhwb3J0cyAtLSBidXQgd2lsbCBmYWlsIGZvciBETExzIHdob3NlIG5hbWUgYWN0dWFsbHkKKyAgICAjIGJlZ2lucyB3aXRoIGEgbGl0ZXJhbCAnLicgb3IgYSBzaW5nbGUgY2hhcmFjdGVyIGZvbGxvd2VkIGJ5CisgICAgIyBhICcuJy4KKyAgICAjCisgICAgIyBPZiB0aG9zZSB0aGF0IHJlbWFpbiwgcHJpbnQgdGhlIGZpcnN0IG9uZS4KKyAgICAkU0VEIC1lICcvXlwuL2Q7L14uXC4vZDtxJworfQorCisjIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgQVJHCisjIFRoaXMgcHJlZGljYXRlIHJldHVybnMgd2l0aCB6ZXJvIHN0YXR1cyAoVFJVRSkgaWYKKyMgQVJHIGlzIGEgR05VL2JpbnV0aWxzLXN0eWxlIGltcG9ydCBsaWJyYXJ5LiBSZXR1cm5zCisjIHdpdGggbm9uemVybyBzdGF0dXMgKEZBTFNFKSBvdGhlcndpc2UuCitmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl90bXA9YCROTSAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgfCBldmFsICIkZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRFR1JFUCAnIChfaGVhZF9bQS1aYS16MC05X10rX1thZF1sKnxbQS1aYS16MC05X10rX1thZF1sKl9pbmFtZSkkJ2AKKyAgdGVzdCAtbiAiJGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3RtcCIKK30KKworIyBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgQVJHCisjIFRoaXMgcHJlZGljYXRlIHJldHVybnMgd2l0aCB6ZXJvIHN0YXR1cyAoVFJVRSkgaWYKKyMgQVJHIGlzIGFuIE1TLXN0eWxlIGltcG9ydCBsaWJyYXJ5LiBSZXR1cm5zCisjIHdpdGggbm9uemVybyBzdGF0dXMgKEZBTFNFKSBvdGhlcndpc2UuCitmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfdG1wPWAkTk0gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiIHwgZXZhbCAiJGdsb2JhbF9zeW1ib2xfcGlwZSIgfCAkR1JFUCAnX05VTExfSU1QT1JUX0RFU0NSSVBUT1InYAorICB0ZXN0IC1uICIkZnVuY19jeWdtaW5nX21zX2ltcGxpYl90bXAiCit9CisKKyMgZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrIEFSRworIyBQbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZQorIyBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQKKyMgaW1wb3J0IGxpYnJhcnkgQVJHLgorIworIyBUaGlzIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGlzIGZvciB1c2Ugd2hlbiAkRExMVE9PTAorIyBkb2VzIG5vdCBzdXBwb3J0IHRoZSAtLWlkZW50aWZ5LXN0cmljdCBvcHRpb24uCisjIEludm9rZWQgYnkgZXZhbCdpbmcgdGhlIGxpYnRvb2wgdmFyaWFibGUKKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gdGhlIHZhcmlhYmxlCisjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAorZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrICgpCit7CisgICRvcHRfZGVidWcKKyAgaWYgZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCAiJDEiIDsgdGhlbgorICAgICMgYmludXRpbHMgaW1wb3J0IGxpYnJhcnkKKyAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgJy5pZGF0YSQ3JyAiJDEiYAorICBlbGlmIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfcCAiJDEiIDsgdGhlbgorICAgICMgbXMtZ2VuZXJhdGVkIGltcG9ydCBsaWJyYXJ5CisgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICcuaWRhdGEkNicgIiQxImAKKyAgZWxzZQorICAgICMgdW5rbm93bgorICAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PSIiCisgIGZpCit9CiAKIAogIyBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSBkaXIgb2xkbGliCkBAIC0yNTk4LDcgKzM3MTIsMTggQEAKICAgICAkb3B0X2RlYnVnCiAgICAgZl9leF9hbl9hcl9kaXI9IiQxIjsgc2hpZnQKICAgICBmX2V4X2FuX2FyX29sZGxpYj0iJDEiCi0gICAgZnVuY19zaG93X2V2YWwgIihjZCBcJGZfZXhfYW5fYXJfZGlyICYmICRBUiB4IFwiXCRmX2V4X2FuX2FyX29sZGxpYlwiKSIgJ2V4aXQgJD8nCisgICAgaWYgdGVzdCAiJGxvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbiIgPSB5ZXM7IHRoZW4KKyAgICAgIGxvY2tmaWxlPSRmX2V4X2FuX2FyX29sZGxpYi5sb2NrCisgICAgICB1bnRpbCAkb3B0X2RyeV9ydW4gfHwgbG4gIiRwcm9ncGF0aCIgIiRsb2NrZmlsZSIgMj4vZGV2L251bGw7IGRvCisJZnVuY19lY2hvICJXYWl0aW5nIGZvciAkbG9ja2ZpbGUgdG8gYmUgcmVtb3ZlZCIKKwlzbGVlcCAyCisgICAgICBkb25lCisgICAgZmkKKyAgICBmdW5jX3Nob3dfZXZhbCAiKGNkIFwkZl9leF9hbl9hcl9kaXIgJiYgJEFSIHggXCJcJGZfZXhfYW5fYXJfb2xkbGliXCIpIiBcCisJCSAgICdzdGF0PSQ/OyBybSAtZiAiJGxvY2tmaWxlIjsgZXhpdCAkc3RhdCcKKyAgICBpZiB0ZXN0ICIkbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uIiA9IHllczsgdGhlbgorICAgICAgJG9wdF9kcnlfcnVuIHx8IHJtIC1mICIkbG9ja2ZpbGUiCisgICAgZmkKICAgICBpZiAoJEFSIHQgIiRmX2V4X2FuX2FyX29sZGxpYiIgfCBzb3J0IHwgc29ydCAtdWMgPi9kZXYvbnVsbCAyPiYxKTsgdGhlbgogICAgICA6CiAgICAgZWxzZQpAQCAtMjY2OSw3ICszNzk0LDcgQEAKIAkgICAgZGFyd2luX2ZpbGU9CiAJICAgIGRhcndpbl9maWxlcz0KIAkgICAgZm9yIGRhcndpbl9maWxlIGluICRkYXJ3aW5fZmlsZWxpc3Q7IGRvCi0JICAgICAgZGFyd2luX2ZpbGVzPWBmaW5kIHVuZmF0LSQkIC1uYW1lICRkYXJ3aW5fZmlsZSAtcHJpbnQgfCAkTkwyU1BgCisJICAgICAgZGFyd2luX2ZpbGVzPWBmaW5kIHVuZmF0LSQkIC1uYW1lICRkYXJ3aW5fZmlsZSAtcHJpbnQgfCBzb3J0IHwgJE5MMlNQYAogCSAgICAgICRMSVBPIC1jcmVhdGUgLW91dHB1dCAiJGRhcndpbl9maWxlIiAkZGFyd2luX2ZpbGVzCiAJICAgIGRvbmUgIyAkZGFyd2luX2ZpbGVsaXN0CiAJICAgICRSTSAtcmYgdW5mYXQtJCQKQEAgLTI2ODQsMjUgKzM4MDksMzAgQEAKICAgICAgICAgZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgIiRteV94ZGlyIiAiJG15X3hhYnMiCiAJOzsKICAgICAgIGVzYWMKLSAgICAgIG15X29sZG9ianM9IiRteV9vbGRvYmpzICJgZmluZCAkbXlfeGRpciAtbmFtZSBcKi4kb2JqZXh0IC1wcmludCAtbyAtbmFtZSBcKi5sbyAtcHJpbnQgfCAkTkwyU1BgCisgICAgICBteV9vbGRvYmpzPSIkbXlfb2xkb2JqcyAiYGZpbmQgJG15X3hkaXIgLW5hbWUgXCouJG9iamV4dCAtcHJpbnQgLW8gLW5hbWUgXCoubG8gLXByaW50IHwgc29ydCB8ICROTDJTUGAKICAgICBkb25lCiAKICAgICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0PSIkbXlfb2xkb2JqcyIKIH0KIAogCi0KLSMgZnVuY19lbWl0X3dyYXBwZXJfcGFydDEgW2FyZz1ub10KKyMgZnVuY19lbWl0X3dyYXBwZXIgW2FyZz1ub10KICMKLSMgRW1pdCB0aGUgZmlyc3QgcGFydCBvZiBhIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQgb24gc3Rkb3V0LgotIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBkZXNjcmlwdGlvbiBhc3NvY2lhdGVkIHdpdGgKLSMgZnVuY19lbWl0X3dyYXBwZXIoKSwgYmVsb3cuCi1mdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MSAoKQorIyBFbWl0IGEgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBvbiBzdGRvdXQuCisjIERvbid0IGRpcmVjdGx5IG9wZW4gYSBmaWxlIGJlY2F1c2Ugd2UgbWF5IHdhbnQgdG8KKyMgaW5jb3Jwb3JhdGUgdGhlIHNjcmlwdCBjb250ZW50cyB3aXRoaW4gYSBjeWd3aW4vbWluZ3cKKyMgd3JhcHBlciBleGVjdXRhYmxlLiAgTXVzdCBPTkxZIGJlIGNhbGxlZCBmcm9tIHdpdGhpbgorIyBmdW5jX21vZGVfbGluayBiZWNhdXNlIGl0IGRlcGVuZHMgb24gYSBudW1iZXIgb2YgdmFyaWFibGVzCisjIHNldCB0aGVyZWluLgorIworIyBBUkcgaXMgdGhlIHZhbHVlIHRoYXQgdGhlIFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSCisjIHZhcmlhYmxlIHdpbGwgdGFrZS4gIElmICd5ZXMnLCB0aGVuIHRoZSBlbWl0dGVkIHNjcmlwdAorIyB3aWxsIGFzc3VtZSB0aGF0IHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggaXQgaXMgc3RvcmVkIGlzCisjIHRoZSAkb2JqZGlyIGRpcmVjdG9yeS4gIFRoaXMgaXMgYSBjeWd3aW4vbWluZ3ctc3BlY2lmaWMKKyMgYmVoYXZpb3IuCitmdW5jX2VtaXRfd3JhcHBlciAoKQogewotCWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxX2FyZzE9bm8KLQlpZiB0ZXN0IC1uICIkMSIgOyB0aGVuCi0JICBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MV9hcmcxPSQxCi0JZmkKKwlmdW5jX2VtaXRfd3JhcHBlcl9hcmcxPSR7MS1ub30KIAogCSRFQ0hPICJcCiAjISAkU0hFTEwKQEAgLTI3MTgsNyArMzg0OCw2IEBACiAKICMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGhlbHBzIHVzIGRvIHJvYnVzdCBxdW90aW5nLiAgSXQgYmFja3NsYXNoaWZpZXMKICMgbWV0YWNoYXJhY3RlcnMgdGhhdCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbiBkb3VibGUtcXVvdGVkIHN0cmluZ3MuCi1Yc2VkPScke1NFRH0gLWUgMXMvXlgvLycKIHNlZF9xdW90ZV9zdWJzdD0nJHNlZF9xdW90ZV9zdWJzdCcKIAogIyBCZSBCb3VybmUgY29tcGF0aWJsZQpAQCAtMjc0OSwzMSArMzg3OCwxMzIgQEAKIGVsc2UKICAgIyBXaGVuIHdlIGFyZSBzb3VyY2VkIGluIGV4ZWN1dGUgbW9kZSwgXCRmaWxlIGFuZCBcJEVDSE8gYXJlIGFscmVhZHkgc2V0LgogICBpZiB0ZXN0IFwiXCRsaWJ0b29sX2V4ZWN1dGVfbWFnaWNcIiAhPSBcIiRtYWdpY1wiOyB0aGVuCi0gICAgRUNITz1cIiRxZWNob1wiCi0gICAgZmlsZT1cIlwkMFwiCi0gICAgIyBNYWtlIHN1cmUgZWNobyB3b3Jrcy4KLSAgICBpZiB0ZXN0IFwiWFwkMVwiID0gWC0tbm8tcmVleGVjOyB0aGVuCi0gICAgICAjIERpc2NhcmQgdGhlIC0tbm8tcmVleGVjIGZsYWcsIGFuZCBjb250aW51ZS4KLSAgICAgIHNoaWZ0Ci0gICAgZWxpZiB0ZXN0IFwiWFxgeyBcJEVDSE8gJ1x0JzsgfSAyPi9kZXYvbnVsbFxgXCIgPSAnWFx0JzsgdGhlbgotICAgICAgIyBZaXBwZWUsIFwkRUNITyB3b3JrcyEKLSAgICAgIDoKLSAgICBlbHNlCi0gICAgICAjIFJlc3RhcnQgdW5kZXIgdGhlIGNvcnJlY3Qgc2hlbGwsIGFuZCB0aGVuIG1heWJlIFwkRUNITyB3aWxsIHdvcmsuCi0gICAgICBleGVjICRTSEVMTCBcIlwkMFwiIC0tbm8tcmVleGVjIFwkezErXCJcJEBcIn0KLSAgICBmaQotICBmaVwKKyAgICBmaWxlPVwiXCQwXCIiCisKKyAgICBxRUNITz1gJEVDSE8gIiRFQ0hPIiB8ICRTRUQgIiRzZWRfcXVvdGVfc3Vic3QiYAorICAgICRFQ0hPICJcCisKKyMgQSBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgd2hlbiB0aGVyZSBpcyBubyBwcmludCBidWlsdGluIG9yIHByaW50Zi4KK2Z1bmNfZmFsbGJhY2tfZWNobyAoKQoreworICBldmFsICdjYXQgPDxfTFRFQ0hPX0VPRgorXCQxCitfTFRFQ0hPX0VPRicKK30KKyAgICBFQ0hPPVwiJHFFQ0hPXCIKKyAgZmkKKworIyBWZXJ5IGJhc2ljIG9wdGlvbiBwYXJzaW5nLiBUaGVzZSBvcHRpb25zIGFyZSAoYSkgc3BlY2lmaWMgdG8KKyMgdGhlIGxpYnRvb2wgd3JhcHBlciwgKGIpIGFyZSBpZGVudGljYWwgYmV0d2VlbiB0aGUgd3JhcHBlcgorIyAvc2NyaXB0LyBhbmQgdGhlIHdyYXBwZXIgL2V4ZWN1dGFibGUvIHdoaWNoIGlzIHVzZWQgb25seSBvbgorIyB3aW5kb3dzIHBsYXRmb3JtcywgYW5kIChjKSBhbGwgYmVnaW4gd2l0aCB0aGUgc3RyaW5nICItLWx0LSIKKyMgKGFwcGxpY2F0aW9uIHByb2dyYW1zIGFyZSB1bmxpa2VseSB0byBoYXZlIG9wdGlvbnMgd2hpY2ggbWF0Y2gKKyMgdGhpcyBwYXR0ZXJuKS4KKyMKKyMgVGhlcmUgYXJlIG9ubHkgdHdvIHN1cHBvcnRlZCBvcHRpb25zOiAtLWx0LWRlYnVnIGFuZAorIyAtLWx0LWR1bXAtc2NyaXB0LiBUaGVyZSBpcywgZGVsaWJlcmF0ZWx5LCBubyAtLWx0LWhlbHAuCisjCisjIFRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGlzIHBhcnNpbmcgZnVuY3Rpb24gc2hvdWxkIGJlIHRoZQorIyBzY3JpcHQncyAkMCB2YWx1ZSwgZm9sbG93ZWQgYnkgIiRAIi4KK2x0X29wdGlvbl9kZWJ1Zz0KK2Z1bmNfcGFyc2VfbHRfb3B0aW9ucyAoKQoreworICBsdF9zY3JpcHRfYXJnMD1cJDAKKyAgc2hpZnQKKyAgZm9yIGx0X29wdAorICBkbworICAgIGNhc2UgXCJcJGx0X29wdFwiIGluCisgICAgLS1sdC1kZWJ1ZykgbHRfb3B0aW9uX2RlYnVnPTEgOzsKKyAgICAtLWx0LWR1bXAtc2NyaXB0KQorICAgICAgICBsdF9kdW1wX0Q9XGBcJEVDSE8gXCJYXCRsdF9zY3JpcHRfYXJnMFwiIHwgJFNFRCAtZSAncy9eWC8vJyAtZSAncyUvW14vXSokJSUnXGAKKyAgICAgICAgdGVzdCBcIlhcJGx0X2R1bXBfRFwiID0gXCJYXCRsdF9zY3JpcHRfYXJnMFwiICYmIGx0X2R1bXBfRD0uCisgICAgICAgIGx0X2R1bXBfRj1cYFwkRUNITyBcIlhcJGx0X3NjcmlwdF9hcmcwXCIgfCAkU0VEIC1lICdzL15YLy8nIC1lICdzJV4uKi8lJSdcYAorICAgICAgICBjYXQgXCJcJGx0X2R1bXBfRC9cJGx0X2R1bXBfRlwiCisgICAgICAgIGV4aXQgMAorICAgICAgOzsKKyAgICAtLWx0LSopCisgICAgICAgIFwkRUNITyBcIlVucmVjb2duaXplZCAtLWx0LSBvcHRpb246ICdcJGx0X29wdCdcIiAxPiYyCisgICAgICAgIGV4aXQgMQorICAgICAgOzsKKyAgICBlc2FjCisgIGRvbmUKKworICAjIFByaW50IHRoZSBkZWJ1ZyBiYW5uZXIgaW1tZWRpYXRlbHk6CisgIGlmIHRlc3QgLW4gXCJcJGx0X29wdGlvbl9kZWJ1Z1wiOyB0aGVuCisgICAgZWNobyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IGxpYnRvb2wgd3JhcHBlciAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT05cIiAxPiYyCisgIGZpCit9CisKKyMgVXNlZCB3aGVuIC0tbHQtZGVidWcuIFByaW50cyBpdHMgYXJndW1lbnRzIHRvIHN0ZG91dAorIyAocmVkaXJlY3Rpb24gaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIpCitmdW5jX2x0X2R1bXBfYXJncyAoKQoreworICBsdF9kdW1wX2FyZ3NfTj0xOworICBmb3IgbHRfYXJnCisgIGRvCisgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndltcJGx0X2R1bXBfYXJnc19OXTogXCRsdF9hcmdcIgorICAgIGx0X2R1bXBfYXJnc19OPVxgZXhwciBcJGx0X2R1bXBfYXJnc19OICsgMVxgCisgIGRvbmUKK30KKworIyBDb3JlIGZ1bmN0aW9uIGZvciBsYXVuY2hpbmcgdGhlIHRhcmdldCBhcHBsaWNhdGlvbgorZnVuY19leGVjX3Byb2dyYW1fY29yZSAoKQorewogIgotCSRFQ0hPICJcCisgIGNhc2UgJGhvc3QgaW4KKyAgIyBCYWNrc2xhc2hlcyBzZXBhcmF0ZSBkaXJlY3RvcmllcyBvbiBwbGFpbiB3aW5kb3dzCisgICotKi1taW5ndyB8ICotKi1vczIqIHwgKi1jZWdjYyopCisgICAgJEVDSE8gIlwKKyAgICAgIGlmIHRlc3QgLW4gXCJcJGx0X29wdGlvbl9kZWJ1Z1wiOyB0aGVuCisgICAgICAgIFwkRUNITyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IG5ld2FyZ3ZbMF06IFwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiAxPiYyCisgICAgICAgIGZ1bmNfbHRfZHVtcF9hcmdzIFwkezErXCJcJEBcIn0gMT4mMgorICAgICAgZmkKKyAgICAgIGV4ZWMgXCJcJHByb2dkaXJcXFxcXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQorIgorICAgIDs7CisKKyAgKikKKyAgICAkRUNITyAiXAorICAgICAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KKyAgICAgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndlswXTogXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIDE+JjIKKyAgICAgICAgZnVuY19sdF9kdW1wX2FyZ3MgXCR7MStcIlwkQFwifSAxPiYyCisgICAgICBmaQorICAgICAgZXhlYyBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9CisiCisgICAgOzsKKyAgZXNhYworICAkRUNITyAiXAorICAgICAgXCRFQ0hPIFwiXCQwOiBjYW5ub3QgZXhlYyBcJHByb2dyYW0gXCQqXCIgMT4mMgorICAgICAgZXhpdCAxCit9CisKKyMgQSBmdW5jdGlvbiB0byBlbmNhcHN1bGF0ZSBsYXVuY2hpbmcgdGhlIHRhcmdldCBhcHBsaWNhdGlvbgorIyBTdHJpcHMgb3B0aW9ucyBpbiB0aGUgLS1sdC0qIG5hbWVzcGFjZSBmcm9tIFwkQCBhbmQKKyMgbGF1bmNoZXMgdGFyZ2V0IGFwcGxpY2F0aW9uIHdpdGggdGhlIHJlbWFpbmluZyBhcmd1bWVudHMuCitmdW5jX2V4ZWNfcHJvZ3JhbSAoKQoreworICBmb3IgbHRfd3JfYXJnCisgIGRvCisgICAgY2FzZSBcJGx0X3dyX2FyZyBpbgorICAgIC0tbHQtKikgOzsKKyAgICAqKSBzZXQgeCBcIlwkQFwiIFwiXCRsdF93cl9hcmdcIjsgc2hpZnQ7OworICAgIGVzYWMKKyAgICBzaGlmdAorICBkb25lCisgIGZ1bmNfZXhlY19wcm9ncmFtX2NvcmUgXCR7MStcIlwkQFwifQorfQorCisgICMgUGFyc2Ugb3B0aW9ucworICBmdW5jX3BhcnNlX2x0X29wdGlvbnMgXCJcJDBcIiBcJHsxK1wiXCRAXCJ9CiAKICAgIyBGaW5kIHRoZSBkaXJlY3RvcnkgdGhhdCB0aGlzIHNjcmlwdCBsaXZlcyBpbi4KLSAgdGhpc2Rpcj1cYFwkRUNITyBcIlhcJGZpbGVcIiB8IFwkWHNlZCAtZSAncyUvW14vXSokJSUnXGAKKyAgdGhpc2Rpcj1cYFwkRUNITyBcIlwkZmlsZVwiIHwgJFNFRCAncyUvW14vXSokJSUnXGAKICAgdGVzdCBcInhcJHRoaXNkaXJcIiA9IFwieFwkZmlsZVwiICYmIHRoaXNkaXI9LgogCiAgICMgRm9sbG93IHN5bWJvbGljIGxpbmtzIHVudGlsIHdlIGdldCB0byB0aGUgcmVhbCB0aGlzZGlyLgotICBmaWxlPVxgbHMgLWxkIFwiXCRmaWxlXCIgfCAke1NFRH0gLW4gJ3MvLiotPiAvL3AnXGAKKyAgZmlsZT1cYGxzIC1sZCBcIlwkZmlsZVwiIHwgJFNFRCAtbiAncy8uKi0+IC8vcCdcYAogICB3aGlsZSB0ZXN0IC1uIFwiXCRmaWxlXCI7IGRvCi0gICAgZGVzdGRpcj1cYFwkRUNITyBcIlhcJGZpbGVcIiB8IFwkWHNlZCAtZSAncyUvW14vXSpcJCUlJ1xgCisgICAgZGVzdGRpcj1cYFwkRUNITyBcIlwkZmlsZVwiIHwgJFNFRCAncyUvW14vXSpcJCUlJ1xgCiAKICAgICAjIElmIHRoZXJlIHdhcyBhIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gY2hhbmdlIHRoaXNkaXIuCiAgICAgaWYgdGVzdCBcInhcJGRlc3RkaXJcIiAhPSBcInhcJGZpbGVcIjsgdGhlbgpAQCAtMjc4MywzMCArNDAxMywxMyBAQAogICAgICAgZXNhYwogICAgIGZpCiAKLSAgICBmaWxlPVxgXCRFQ0hPIFwiWFwkZmlsZVwiIHwgXCRYc2VkIC1lICdzJV4uKi8lJSdcYAotICAgIGZpbGU9XGBscyAtbGQgXCJcJHRoaXNkaXIvXCRmaWxlXCIgfCAke1NFRH0gLW4gJ3MvLiotPiAvL3AnXGAKKyAgICBmaWxlPVxgXCRFQ0hPIFwiXCRmaWxlXCIgfCAkU0VEICdzJV4uKi8lJSdcYAorICAgIGZpbGU9XGBscyAtbGQgXCJcJHRoaXNkaXIvXCRmaWxlXCIgfCAkU0VEIC1uICdzLy4qLT4gLy9wJ1xgCiAgIGRvbmUKLSIKLX0KLSMgZW5kOiBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MQotCi0jIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyIFthcmc9bm9dCi0jCi0jIEVtaXQgdGhlIHNlY29uZCBwYXJ0IG9mIGEgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBvbiBzdGRvdXQuCi0jIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIGRlc2NyaXB0aW9uIGFzc29jaWF0ZWQgd2l0aAotIyBmdW5jX2VtaXRfd3JhcHBlcigpLCBiZWxvdy4KLWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyICgpCi17Ci0JZnVuY19lbWl0X3dyYXBwZXJfcGFydDJfYXJnMT1ubwotCWlmIHRlc3QgLW4gIiQxIiA7IHRoZW4KLQkgIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyX2FyZzE9JDEKLQlmaQotCi0JJEVDSE8gIlwKIAogICAjIFVzdWFsbHkgJ25vJywgZXhjZXB0IG9uIGN5Z3dpbi9taW5ndyB3aGVuIGVtYmVkZGVkIGludG8KICAgIyB0aGUgY3dyYXBwZXIuCi0gIFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSPSRmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0Ml9hcmcxCisgIFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSPSRmdW5jX2VtaXRfd3JhcHBlcl9hcmcxCiAgIGlmIHRlc3QgXCJcJFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSXCIgPSBcInllc1wiOyB0aGVuCiAgICAgIyBzcGVjaWFsIGNhc2UgZm9yICcuJwogICAgIGlmIHRlc3QgXCJcJHRoaXNkaXJcIiA9IFwiLlwiOyB0aGVuCkBAIC0yODE0LDcgKzQwMjcsNyBAQAogICAgIGZpCiAgICAgIyByZW1vdmUgLmxpYnMgZnJvbSB0aGlzZGlyCiAgICAgY2FzZSBcIlwkdGhpc2RpclwiIGluCi0gICAgKltcXFxcL10kb2JqZGlyICkgdGhpc2Rpcj1cYFwkRUNITyBcIlhcJHRoaXNkaXJcIiB8IFwkWHNlZCAtZSAncyVbXFxcXC9dW15cXFxcL10qJCUlJ1xgIDs7CisgICAgKltcXFxcL10kb2JqZGlyICkgdGhpc2Rpcj1cYFwkRUNITyBcIlwkdGhpc2RpclwiIHwgJFNFRCAncyVbXFxcXC9dW15cXFxcL10qJCUlJ1xgIDs7CiAgICAgJG9iamRpciApICAgdGhpc2Rpcj0uIDs7CiAgICAgZXNhYwogICBmaQpAQCAtMjg2OSw2ICs0MDgyLDE4IEBACiAKICAgaWYgdGVzdCAtZiBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIjsgdGhlbiIKIAorCSMgZml4dXAgdGhlIGRsbCBzZWFyY2hwYXRoIGlmIHdlIG5lZWQgdG8uCisJIworCSMgRml4IHRoZSBETEwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLiAgRG8gdGhpcyBiZWZvcmUgcHJlcGVuZGluZworCSMgdG8gc2hsaWJwYXRoLCBiZWNhdXNlIG9uIFdpbmRvd3MsIGJvdGggYXJlIFBBVEggYW5kIHVuaW5zdGFsbGVkCisJIyBsaWJyYXJpZXMgbXVzdCBjb21lIGZpcnN0LgorCWlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgorCSAgJEVDSE8gIlwKKyAgICAjIEFkZCB0aGUgZGxsIHNlYXJjaCBwYXRoIGNvbXBvbmVudHMgdG8gdGhlIGV4ZWN1dGFibGUgUEFUSAorICAgIFBBVEg9JGRsbHNlYXJjaHBhdGg6XCRQQVRICisiCisJZmkKKwogCSMgRXhwb3J0IG91ciBzaGxpYnBhdGhfdmFyIGlmIHdlIGhhdmUgb25lLgogCWlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzICYmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkdGVtcF9ycGF0aCI7IHRoZW4KIAkgICRFQ0hPICJcCkBAIC0yODc3LDI1NCArNDEwMiwyOSBAQAogCiAgICAgIyBTb21lIHN5c3RlbXMgY2Fubm90IGNvcGUgd2l0aCBjb2xvbi10ZXJtaW5hdGVkICRzaGxpYnBhdGhfdmFyCiAgICAgIyBUaGUgc2Vjb25kIGNvbG9uIGlzIGEgd29ya2Fyb3VuZCBmb3IgYSBidWcgaW4gQmVPUyBSNCBzZWQKLSAgICAkc2hsaWJwYXRoX3Zhcj1cYFwkRUNITyBcIlhcJCRzaGxpYnBhdGhfdmFyXCIgfCBcJFhzZWQgLWUgJ3MvOjoqXCQvLydcYAorICAgICRzaGxpYnBhdGhfdmFyPVxgXCRFQ0hPIFwiXCQkc2hsaWJwYXRoX3ZhclwiIHwgJFNFRCAncy86OipcJC8vJ1xgCiAKICAgICBleHBvcnQgJHNobGlicGF0aF92YXIKICIKIAlmaQogCi0JIyBmaXh1cCB0aGUgZGxsIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4KLQlpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KLQkgICRFQ0hPICJcCi0gICAgIyBBZGQgdGhlIGRsbCBzZWFyY2ggcGF0aCBjb21wb25lbnRzIHRvIHRoZSBleGVjdXRhYmxlIFBBVEgKLSAgICBQQVRIPSRkbGxzZWFyY2hwYXRoOlwkUEFUSAotIgotCWZpCi0KIAkkRUNITyAiXAogICAgIGlmIHRlc3QgXCJcJGxpYnRvb2xfZXhlY3V0ZV9tYWdpY1wiICE9IFwiJG1hZ2ljXCI7IHRoZW4KICAgICAgICMgUnVuIHRoZSBhY3R1YWwgcHJvZ3JhbSB3aXRoIG91ciBhcmd1bWVudHMuCi0iCi0JY2FzZSAkaG9zdCBpbgotCSMgQmFja3NsYXNoZXMgc2VwYXJhdGUgZGlyZWN0b3JpZXMgb24gcGxhaW4gd2luZG93cwotCSotKi1taW5ndyB8ICotKi1vczIqIHwgKi1jZWdjYyopCi0JICAkRUNITyAiXAotICAgICAgZXhlYyBcIlwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9Ci0iCi0JICA7OwotCi0JKikKLQkgICRFQ0hPICJcCi0gICAgICBleGVjIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KLSIKLQkgIDs7Ci0JZXNhYwotCSRFQ0hPICJcCi0gICAgICBcJEVDSE8gXCJcJDA6IGNhbm5vdCBleGVjIFwkcHJvZ3JhbSBcJCpcIiAxPiYyCi0gICAgICBleGl0IDEKKyAgICAgIGZ1bmNfZXhlY19wcm9ncmFtIFwkezErXCJcJEBcIn0KICAgICBmaQogICBlbHNlCiAgICAgIyBUaGUgcHJvZ3JhbSBkb2Vzbid0IGV4aXN0LgogICAgIFwkRUNITyBcIlwkMDogZXJyb3I6IFxcXGBcJHByb2dkaXIvXCRwcm9ncmFtJyBkb2VzIG5vdCBleGlzdFwiIDE+JjIKICAgICBcJEVDSE8gXCJUaGlzIHNjcmlwdCBpcyBqdXN0IGEgd3JhcHBlciBmb3IgXCRwcm9ncmFtLlwiIDE+JjIKLSAgICAkRUNITyBcIlNlZSB0aGUgJFBBQ0tBR0UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIiAxPiYyCisgICAgXCRFQ0hPIFwiU2VlIHRoZSAkUEFDS0FHRSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlwiIDE+JjIKICAgICBleGl0IDEKICAgZmkKIGZpXAogIgogfQotIyBlbmQ6IGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyCiAKIAotIyBmdW5jX2VtaXRfd3JhcHBlciBbYXJnPW5vXQotIwotIyBFbWl0IGEgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBvbiBzdGRvdXQuCi0jIERvbid0IGRpcmVjdGx5IG9wZW4gYSBmaWxlIGJlY2F1c2Ugd2UgbWF5IHdhbnQgdG8KLSMgaW5jb3Jwb3JhdGUgdGhlIHNjcmlwdCBjb250ZW50cyB3aXRoaW4gYSBjeWd3aW4vbWluZ3cKLSMgd3JhcHBlciBleGVjdXRhYmxlLiAgTXVzdCBPTkxZIGJlIGNhbGxlZCBmcm9tIHdpdGhpbgotIyBmdW5jX21vZGVfbGluayBiZWNhdXNlIGl0IGRlcGVuZHMgb24gYSBudW1iZXIgb2YgdmFyaWFibGVzCi0jIHNldCB0aGVyZWluLgotIwotIyBBUkcgaXMgdGhlIHZhbHVlIHRoYXQgdGhlIFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSCi0jIHZhcmlhYmxlIHdpbGwgdGFrZS4gIElmICd5ZXMnLCB0aGVuIHRoZSBlbWl0dGVkIHNjcmlwdAotIyB3aWxsIGFzc3VtZSB0aGF0IHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggaXQgaXMgc3RvcmVkIGlzCi0jIHRoZSAkb2JqZGlyIGRpcmVjdG9yeS4gIFRoaXMgaXMgYSBjeWd3aW4vbWluZ3ctc3BlY2lmaWMKLSMgYmVoYXZpb3IuCi1mdW5jX2VtaXRfd3JhcHBlciAoKQotewotCWZ1bmNfZW1pdF93cmFwcGVyX2FyZzE9bm8KLQlpZiB0ZXN0IC1uICIkMSIgOyB0aGVuCi0JICBmdW5jX2VtaXRfd3JhcHBlcl9hcmcxPSQxCi0JZmkKLQotCSMgc3BsaXQgdGhpcyB1cCBzbyB0aGF0IGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMKLQkjIGNhbiBjYWxsIGVhY2ggcGFydCBpbmRlcGVuZGVudGx5LgotCWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxICIke2Z1bmNfZW1pdF93cmFwcGVyX2FyZzF9IgotCWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyICIke2Z1bmNfZW1pdF93cmFwcGVyX2FyZzF9IgotfQotCi0KLSMgZnVuY190b19ob3N0X3BhdGggYXJnCi0jCi0jIENvbnZlcnQgcGF0aHMgdG8gaG9zdCBmb3JtYXQgd2hlbiB1c2VkIHdpdGggYnVpbGQgdG9vbHMuCi0jIEludGVuZGVkIGZvciB1c2Ugd2l0aCAibmF0aXZlIiBtaW5ndyAod2hlcmUgbGlidG9vbCBpdHNlbGYKLSMgaXMgcnVubmluZyB1bmRlciB0aGUgbXN5cyBzaGVsbCksIG9yIGluIHRoZSBmb2xsb3dpbmcgY3Jvc3MtCi0jIGJ1aWxkIGVudmlyb25tZW50czoKLSMgICAgJGJ1aWxkICAgICAgICAgICRob3N0Ci0jICAgIG1pbmd3IChtc3lzKSAgICBtaW5ndyAgW2UuZy4gbmF0aXZlXQotIyAgICBjeWd3aW4gICAgICAgICAgbWluZ3cKLSMgICAgKm5peCArIHdpbmUgICAgIG1pbmd3Ci0jIHdoZXJlIHdpbmUgaXMgZXF1aXBwZWQgd2l0aCB0aGUgYHdpbmVwYXRoJyBleGVjdXRhYmxlLgotIyBJbiB0aGUgbmF0aXZlIG1pbmd3IGNhc2UsIHRoZSAobXN5cykgc2hlbGwgYXV0b21hdGljYWxseQotIyBjb252ZXJ0cyBwYXRocyBmb3IgYW55IG5vbi1tc3lzIGFwcGxpY2F0aW9ucyBpdCBsYXVuY2hlcywKLSMgYnV0IHRoYXQgZmFjaWxpdHkgaXNuJ3QgYXZhaWxhYmxlIGZyb20gaW5zaWRlIHRoZSBjd3JhcHBlci4KLSMgU2ltaWxhciBhY2NvbW1vZGF0aW9ucyBhcmUgbmVjZXNzYXJ5IGZvciAkaG9zdCBtaW5ndyBhbmQKLSMgJGJ1aWxkIGN5Z3dpbi4gIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBkb2VzIG5vIGhhcm0gZm9yIG90aGVyCi0jICRob3N0LyRidWlsZCBjb21iaW5hdGlvbnMgbm90IGxpc3RlZCBhYm92ZS4KLSMKLSMgQVJHIGlzIHRoZSBwYXRoIChvbiAkYnVpbGQpIHRoYXQgc2hvdWxkIGJlIGNvbnZlcnRlZCB0bwotIyB0aGUgcHJvcGVyIHJlcHJlc2VudGF0aW9uIGZvciAkaG9zdC4gVGhlIHJlc3VsdCBpcyBzdG9yZWQKLSMgaW4gJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KLWZ1bmNfdG9faG9zdF9wYXRoICgpCi17Ci0gIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0gIGlmIHRlc3QgLW4gIiQxIiA7IHRoZW4KLSAgICBjYXNlICRob3N0IGluCi0gICAgICAqbWluZ3cqICkKLSAgICAgICAgbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJwotICAgICAgICBjYXNlICRidWlsZCBpbgotICAgICAgICAgICptaW5ndyogKSAjIGFjdHVhbGx5LCBtc3lzCi0gICAgICAgICAgICAjIGF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQKLSAgICAgICAgICAgIGx0X3NlZF9zdHJpcF90cmFpbGluZ19zcGFjZXM9InMvWyBdKlwkLy8iCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPWAoIGNtZCAvL2MgZWNobyAiJDEiIHxcCi0gICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfc3RyaXBfdHJhaWxpbmdfc3BhY2VzIiApIDI+L2Rldi9udWxsIHx8IGVjaG8gIiJgCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiB8XAotICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0gICAgICAgICAgICA7OwotICAgICAgICAgICpjeWd3aW4qICkKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9YGN5Z3BhdGggLXcgIiQxImAKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiIHxcCi0gICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLSAgICAgICAgICAgIDs7Ci0gICAgICAgICAgKiApCi0gICAgICAgICAgICAjIFVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXMgbm90IGV4aXQgd2l0aCBhIG5vbi16ZXJvCi0gICAgICAgICAgICAjIGVycm9yIGNvZGUsIHNvIHdlIGFyZSBmb3JjZWQgdG8gY2hlY2sgdGhlIGNvbnRlbnRzIG9mCi0gICAgICAgICAgICAjIHN0ZG91dC4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSBjb21tYW5kIGlzIG5vdAotICAgICAgICAgICAgIyBmb3VuZCwgdGhlIHNoZWxsIHdpbGwgc2V0IGFuIGV4aXQgY29kZSBvZiAxMjcgYW5kIHByaW50Ci0gICAgICAgICAgICAjICphbiBlcnJvciBtZXNzYWdlKiB0byBzdGRvdXQuIFNvIHdlIG11c3QgY2hlY2sgZm9yIGJvdGgKLSAgICAgICAgICAgICMgZXJyb3IgY29kZSBvZiB6ZXJvIEFORCBub24tZW1wdHkgc3Rkb3V0LCB3aGljaCBleHBsYWlucwotICAgICAgICAgICAgIyB0aGUgb2RkIGNvbnN0cnVjdGlvbjoKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9YHdpbmVwYXRoIC13ICIkMSIgMj4vZGV2L251bGxgCi0gICAgICAgICAgICBpZiB0ZXN0ICIkPyIgLWVxIDAgJiYgdGVzdCAtbiAiJHtmdW5jX3RvX2hvc3RfcGF0aF90bXAxfSI7IHRoZW4KLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgfFwKLSAgICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICMgQWxsb3cgd2FybmluZyBiZWxvdy4KLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIiCi0gICAgICAgICAgICBmaQotICAgICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IiA7IHRoZW4KLSAgICAgICAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIGhvc3QgcGF0aCBjb3JyZXNwb25kaW5nIHRvIgotICAgICAgICAgIGZ1bmNfZXJyb3IgIiAgJyQxJyIKLSAgICAgICAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKLSAgICAgICAgICAjIEZhbGxiYWNrOgotICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0gICAgICAgIGZpCi0gICAgICAgIDs7Ci0gICAgZXNhYwotICBmaQotfQotIyBlbmQ6IGZ1bmNfdG9faG9zdF9wYXRoCi0KLSMgZnVuY190b19ob3N0X3BhdGhsaXN0IGFyZwotIwotIyBDb252ZXJ0IHBhdGhsaXN0cyB0byBob3N0IGZvcm1hdCB3aGVuIHVzZWQgd2l0aCBidWlsZCB0b29scy4KLSMgU2VlIGZ1bmNfdG9faG9zdF9wYXRoKCksIGFib3ZlLiBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIHRoZQotIyBmb2xsb3dpbmcgJGJ1aWxkLyRob3N0IGNvbWJpbmF0aW9ucyAoYnV0IGRvZXMgbm8gaGFybSBmb3IKLSMgY29tYmluYXRpb25zIG5vdCBsaXN0ZWQgaGVyZSk6Ci0jICAgICRidWlsZCAgICAgICAgICAkaG9zdAotIyAgICBtaW5ndyAobXN5cykgICAgbWluZ3cgIFtlLmcuIG5hdGl2ZV0KLSMgICAgY3lnd2luICAgICAgICAgIG1pbmd3Ci0jICAgICpuaXggKyB3aW5lICAgICBtaW5ndwotIwotIyBQYXRoIHNlcGFyYXRvcnMgYXJlIGFsc28gY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0bwotIyAkaG9zdCBmb3JtYXQuIElmIEFSRyBiZWdpbnMgb3IgZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IKLSMgY2hhcmFjdGVyLCBpdCBpcyBwcmVzZXJ2ZWQgKGJ1dCBjb252ZXJ0ZWQgdG8gJGhvc3QgZm9ybWF0KQotIyBvbiBvdXRwdXQuCi0jCi0jIEFSRyBpcyBhIHBhdGhsaXN0IChvbiAkYnVpbGQpIHRoYXQgc2hvdWxkIGJlIGNvbnZlcnRlZCB0bwotIyB0aGUgcHJvcGVyIHJlcHJlc2VudGF0aW9uIG9uICRob3N0LiBUaGUgcmVzdWx0IGlzIHN0b3JlZAotIyBpbiAkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdC4KLWZ1bmNfdG9faG9zdF9wYXRobGlzdCAoKQotewotICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkMSIKLSAgaWYgdGVzdCAtbiAiJDEiIDsgdGhlbgotICAgIGNhc2UgJGhvc3QgaW4KLSAgICAgICptaW5ndyogKQotICAgICAgICBsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCi0gICAgICAgICMgUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMgZnJvbQotICAgICAgICAjIEFSRy4gbXN5cyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZSwgY3lncGF0aCB0dXJucyB0aGVtCi0gICAgICAgICMgaW50byAnLjsnIGFuZCAnOy4nLCBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCi0gICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAyPSIkMSIKLSAgICAgICAgIyBPbmNlIHNldCBmb3IgdGhpcyBjYWxsLCB0aGlzIHZhcmlhYmxlIHNob3VsZCBub3QgYmUKLSAgICAgICAgIyByZWFzc2lnbmVkLiBJdCBpcyB1c2VkIGluIHRoYSBmYWxsYmFjayBjYXNlLgotICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMT1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAyIiB8XAotICAgICAgICAgICRTRUQgLWUgJ3N8XjoqfHwnIC1lICdzfDoqJHx8J2AKLSAgICAgICAgY2FzZSAkYnVpbGQgaW4KLSAgICAgICAgICAqbWluZ3cqICkgIyBBY3R1YWxseSwgbXN5cy4KLSAgICAgICAgICAgICMgQXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdC4KLSAgICAgICAgICAgIGx0X3NlZF9zdHJpcF90cmFpbGluZ19zcGFjZXM9InMvWyBdKlwkLy8iCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMj1gKCBjbWQgLy9jIGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSIgfFwKLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9zdHJpcF90cmFpbGluZ19zcGFjZXMiICkgMj4vZGV2L251bGwgfHwgZWNobyAiImAKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMiIgfFwKLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotICAgICAgICAgICAgOzsKLSAgICAgICAgICAqY3lnd2luKiApCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMj1gY3lncGF0aCAtdyAtcCAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxImAKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMiIgfFwKLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotICAgICAgICAgICAgOzsKLSAgICAgICAgICAqICkKLSAgICAgICAgICAgICMgdW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lc24ndCBjb252ZXJ0IHBhdGhsaXN0cwotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iIgotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUz0kSUZTCi0gICAgICAgICAgICBJRlM9OgotICAgICAgICAgICAgZm9yIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIGluICRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSA7IGRvCi0gICAgICAgICAgICAgIElGUz0kZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUwotICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZnVuY190b19ob3N0X3BhdGhsaXN0X2YiIDsgdGhlbgotICAgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkZnVuY190b19ob3N0X3BhdGhsaXN0X2YiCi0gICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIgOyB0aGVuCi0gICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCIgOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0gICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0OyRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0gICAgICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICAgIElGUz06Ci0gICAgICAgICAgICBkb25lCi0gICAgICAgICAgICBJRlM9JGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlMKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLSAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiIDsgdGhlbgotICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGhvc3QgcGF0aChzKSBjb3JyZXNwb25kaW5nIHRvIgotICAgICAgICAgIGZ1bmNfZXJyb3IgIiAgJyQxJyIKLSAgICAgICAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKLSAgICAgICAgICAjIEZhbGxiYWNrLiBUaGlzIG1heSBicmVhayBpZiAkMSBjb250YWlucyBET1Mtc3R5bGUgZHJpdmUKLSAgICAgICAgICAjIHNwZWNpZmljYXRpb25zLiBUaGUgZml4IGlzIG5vdCB0byBjb21wbGljYXRlIHRoZSBleHByZXNzaW9uCi0gICAgICAgICAgIyBiZWxvdywgYnV0IGZvciB0aGUgdXNlciB0byBwcm92aWRlIGEgd29ya2luZyB3aW5lIGluc3RhbGxhdGlvbgotICAgICAgICAgICMgd2l0aCB3aW5lcGF0aCBzbyB0aGF0IHBhdGggdHJhbnNsYXRpb24gaW4gdGhlIGNyb3NzLXRvLW1pbmd3Ci0gICAgICAgICAgIyBjYXNlIHdvcmtzIHByb3Blcmx5LgotICAgICAgICAgIGx0X3JlcGxhY2VfcGF0aHNlcF9uaXhfdG9fZG9zPSJzfDp8O3xnIgotICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSIgfFwKLSAgICAgICAgICAgICRTRUQgLWUgIiRsdF9yZXBsYWNlX3BhdGhzZXBfbml4X3RvX2RvcyJgCi0gICAgICAgIGZpCi0gICAgICAgICMgTm93LCBhZGQgdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9ycyBiYWNrCi0gICAgICAgIGNhc2UgIiQxIiBpbgotICAgICAgICAgIDoqICkgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iOyRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IgotICAgICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgICAgICBjYXNlICIkMSIgaW4KLSAgICAgICAgICAqOiApIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0OyIKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLSAgICAgICAgOzsKLSAgICBlc2FjCi0gIGZpCi19Ci0jIGVuZDogZnVuY190b19ob3N0X3BhdGhsaXN0Ci0KICMgZnVuY19lbWl0X2N3cmFwcGVyZXhlX3NyYwogIyBlbWl0IHRoZSBzb3VyY2UgY29kZSBmb3IgYSB3cmFwcGVyIGV4ZWN1dGFibGUgb24gc3Rkb3V0CiAjIE11c3QgT05MWSBiZSBjYWxsZWQgZnJvbSB3aXRoaW4gZnVuY19tb2RlX2xpbmsgYmVjYXVzZQpAQCAtMzE0MSwzMSArNDE0MSwyMyBAQAogCiAgICBUaGlzIHdyYXBwZXIgZXhlY3V0YWJsZSBzaG91bGQgbmV2ZXIgYmUgbW92ZWQgb3V0IG9mIHRoZSBidWlsZCBkaXJlY3RvcnkuCiAgICBJZiBpdCBpcywgaXQgd2lsbCBub3Qgb3BlcmF0ZSBjb3JyZWN0bHkuCi0KLSAgIEN1cnJlbnRseSwgaXQgc2ltcGx5IGV4ZWNzIHRoZSB3cmFwcGVyICpzY3JpcHQqICIkU0hFTEwgJG91dHB1dCIsCi0gICBidXQgY291bGQgZXZlbnR1YWxseSBhYnNvcmIgYWxsIG9mIHRoZSBzY3JpcHRzIGZ1bmN0aW9uYWxpdHkgYW5kCi0gICBleGVjICRvYmpkaXIvJG91dHB1dG5hbWUgZGlyZWN0bHkuCiAqLwogRU9GCiAJICAgIGNhdCA8PCJFT0YiCisjaWZkZWYgX01TQ19WRVIKKyMgZGVmaW5lIF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSAxCisjZW5kaWYKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2lmZGVmIF9NU0NfVkVSCiAjIGluY2x1ZGUgPGRpcmVjdC5oPgogIyBpbmNsdWRlIDxwcm9jZXNzLmg+CiAjIGluY2x1ZGUgPGlvLmg+Ci0jIGRlZmluZSBzZXRtb2RlIF9zZXRtb2RlCiAjZWxzZQogIyBpbmNsdWRlIDx1bmlzdGQuaD4KICMgaW5jbHVkZSA8c3RkaW50Lmg+CiAjIGlmZGVmIF9fQ1lHV0lOX18KICMgIGluY2x1ZGUgPGlvLmg+Ci0jICBkZWZpbmUgSEFWRV9TRVRFTlYKLSMgIGlmZGVmIF9fU1RSSUNUX0FOU0lfXwotY2hhciAqcmVhbHBhdGggKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKLWludCBwdXRlbnYgKGNoYXIgKik7Ci1pbnQgc2V0ZW52IChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKLSMgIGVuZGlmCiAjIGVuZGlmCiAjZW5kaWYKICNpbmNsdWRlIDxtYWxsb2MuaD4KQEAgLTMxNzcsNiArNDE2OSw0NCBAQAogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KIAorLyogZGVjbGFyYXRpb25zIG9mIG5vbi1BTlNJIGZ1bmN0aW9ucyAqLworI2lmIGRlZmluZWQoX19NSU5HVzMyX18pCisjIGlmZGVmIF9fU1RSSUNUX0FOU0lfXworaW50IF9wdXRlbnYgKGNvbnN0IGNoYXIgKik7CisjIGVuZGlmCisjZWxpZiBkZWZpbmVkKF9fQ1lHV0lOX18pCisjIGlmZGVmIF9fU1RSSUNUX0FOU0lfXworY2hhciAqcmVhbHBhdGggKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKK2ludCBwdXRlbnYgKGNoYXIgKik7CitpbnQgc2V0ZW52IChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKKyMgZW5kaWYKKy8qICNlbGlmIGRlZmluZWQgKG90aGVyIHBsYXRmb3JtcykgLi4uICovCisjZW5kaWYKKworLyogcG9ydGFiaWxpdHkgZGVmaW5lcywgZXhjbHVkaW5nIHBhdGggaGFuZGxpbmcgbWFjcm9zICovCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyMgZGVmaW5lIHNldG1vZGUgX3NldG1vZGUKKyMgZGVmaW5lIHN0YXQgICAgX3N0YXQKKyMgZGVmaW5lIGNobW9kICAgX2NobW9kCisjIGRlZmluZSBnZXRjd2QgIF9nZXRjd2QKKyMgZGVmaW5lIHB1dGVudiAgX3B1dGVudgorIyBkZWZpbmUgU19JWFVTUiBfU19JRVhFQworIyBpZm5kZWYgX0lOVFBUUl9UX0RFRklORUQKKyMgIGRlZmluZSBfSU5UUFRSX1RfREVGSU5FRAorIyAgZGVmaW5lIGludHB0cl90IGludAorIyBlbmRpZgorI2VsaWYgZGVmaW5lZChfX01JTkdXMzJfXykKKyMgZGVmaW5lIHNldG1vZGUgX3NldG1vZGUKKyMgZGVmaW5lIHN0YXQgICAgX3N0YXQKKyMgZGVmaW5lIGNobW9kICAgX2NobW9kCisjIGRlZmluZSBnZXRjd2QgIF9nZXRjd2QKKyMgZGVmaW5lIHB1dGVudiAgX3B1dGVudgorI2VsaWYgZGVmaW5lZChfX0NZR1dJTl9fKQorIyBkZWZpbmUgSEFWRV9TRVRFTlYKKyMgZGVmaW5lIEZPUEVOX1dCICJ3YiIKKy8qICNlbGlmIGRlZmluZWQgKG90aGVyIHBsYXRmb3JtcykgLi4uICovCisjZW5kaWYKKwogI2lmIGRlZmluZWQoUEFUSF9NQVgpCiAjIGRlZmluZSBMVF9QQVRITUFYIFBBVEhfTUFYCiAjZWxpZiBkZWZpbmVkKE1BWFBBVEhMRU4pCkBAIC0zMTkyLDE0ICs0MjIyLDcgQEAKICMgZGVmaW5lIFNfSVhHUlAgMAogI2VuZGlmCiAKLSNpZmRlZiBfTVNDX1ZFUgotIyBkZWZpbmUgU19JWFVTUiBfU19JRVhFQwotIyBkZWZpbmUgc3RhdCBfc3RhdAotIyBpZm5kZWYgX0lOVFBUUl9UX0RFRklORUQKLSMgIGRlZmluZSBpbnRwdHJfdCBpbnQKLSMgZW5kaWYKLSNlbmRpZgotCisvKiBwYXRoIGhhbmRsaW5nIHBvcnRhYmlsaXR5IG1hY3JvcyAqLwogI2lmbmRlZiBESVJfU0VQQVJBVE9SCiAjIGRlZmluZSBESVJfU0VQQVJBVE9SICcvJwogIyBkZWZpbmUgUEFUSF9TRVBBUkFUT1IgJzonCkBAIC0zMjMwLDEwICs0MjUzLDYgQEAKICMgZGVmaW5lIElTX1BBVEhfU0VQQVJBVE9SKGNoKSAoKGNoKSA9PSBQQVRIX1NFUEFSQVRPUl8yKQogI2VuZGlmIC8qIFBBVEhfU0VQQVJBVE9SXzIgKi8KIAotI2lmZGVmIF9fQ1lHV0lOX18KLSMgZGVmaW5lIEZPUEVOX1dCICJ3YiIKLSNlbmRpZgotCiAjaWZuZGVmIEZPUEVOX1dCCiAjIGRlZmluZSBGT1BFTl9XQiAidyIKICNlbmRpZgpAQCAtMzI0NiwyMiArNDI2NSwxMyBAQAogICBpZiAoc3RhbGUpIHsgZnJlZSAoKHZvaWQgKikgc3RhbGUpOyBzdGFsZSA9IDA7IH0gXAogfSB3aGlsZSAoMCkKIAotI3VuZGVmIExUV1JBUFBFUl9ERUJVR1BSSU5URgotI2lmIGRlZmluZWQgREVCVUdXUkFQUEVSCi0jIGRlZmluZSBMVFdSQVBQRVJfREVCVUdQUklOVEYoYXJncykgbHR3cmFwcGVyX2RlYnVncHJpbnRmIGFyZ3MKLXN0YXRpYyB2b2lkCi1sdHdyYXBwZXJfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotewotICAgIHZhX2xpc3QgYXJnczsKLSAgICB2YV9zdGFydCAoYXJncywgZm10KTsKLSAgICAodm9pZCkgdmZwcmludGYgKHN0ZGVyciwgZm10LCBhcmdzKTsKLSAgICB2YV9lbmQgKGFyZ3MpOwotfQorI2lmIGRlZmluZWQoTFRfREVCVUdXUkFQUEVSKQorc3RhdGljIGludCBsdF9kZWJ1ZyA9IDE7CiAjZWxzZQotIyBkZWZpbmUgTFRXUkFQUEVSX0RFQlVHUFJJTlRGKGFyZ3MpCitzdGF0aWMgaW50IGx0X2RlYnVnID0gMDsKICNlbmRpZgogCi1jb25zdCBjaGFyICpwcm9ncmFtX25hbWUgPSBOVUxMOworY29uc3QgY2hhciAqcHJvZ3JhbV9uYW1lID0gImxpYnRvb2wtd3JhcHBlciI7IC8qIGluIGNhc2UgeHN0cmR1cCBmYWlscyAqLwogCiB2b2lkICp4bWFsbG9jIChzaXplX3QgbnVtKTsKIGNoYXIgKnhzdHJkdXAgKGNvbnN0IGNoYXIgKnN0cmluZyk7CkBAIC0zMjcxLDQxICs0MjgxLDI3IEBACiBpbnQgbWFrZV9leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKTsKIGludCBjaGVja19leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKTsKIGNoYXIgKnN0cmVuZHphcCAoY2hhciAqc3RyLCBjb25zdCBjaGFyICpwYXQpOwotdm9pZCBsdF9mYXRhbCAoY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKTsKK3ZvaWQgbHRfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpmbXQsIC4uLik7Cit2b2lkIGx0X2ZhdGFsIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKTsKK3N0YXRpYyBjb25zdCBjaGFyICpub25udWxsIChjb25zdCBjaGFyICpzKTsKK3N0YXRpYyBjb25zdCBjaGFyICpub25lbXB0eSAoY29uc3QgY2hhciAqcyk7CiB2b2lkIGx0X3NldGVudiAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOwogY2hhciAqbHRfZXh0ZW5kX3N0ciAoY29uc3QgY2hhciAqb3JpZ192YWx1ZSwgY29uc3QgY2hhciAqYWRkLCBpbnQgdG9fZW5kKTsKLXZvaWQgbHRfb3B0X3Byb2Nlc3NfZW52X3NldCAoY29uc3QgY2hhciAqYXJnKTsKLXZvaWQgbHRfb3B0X3Byb2Nlc3NfZW52X3ByZXBlbmQgKGNvbnN0IGNoYXIgKmFyZyk7Ci12b2lkIGx0X29wdF9wcm9jZXNzX2Vudl9hcHBlbmQgKGNvbnN0IGNoYXIgKmFyZyk7Ci1pbnQgbHRfc3BsaXRfbmFtZV92YWx1ZSAoY29uc3QgY2hhciAqYXJnLCBjaGFyKiogbmFtZSwgY2hhcioqIHZhbHVlKTsKIHZvaWQgbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSk7CiB2b2lkIGx0X3VwZGF0ZV9saWJfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOwotCi1zdGF0aWMgY29uc3QgY2hhciAqc2NyaXB0X3RleHRfcGFydDEgPQorY2hhciAqKnByZXBhcmVfc3Bhd24gKGNoYXIgKiphcmd2KTsKK3ZvaWQgbHRfZHVtcF9zY3JpcHQgKEZJTEUgKmYpOwogRU9GCiAKLQkgICAgZnVuY19lbWl0X3dyYXBwZXJfcGFydDEgeWVzIHwKLQkgICAgICAgICRTRUQgLWUgJ3MvXChbXFwiXVwpL1xcXDEvZycgXAotCSAgICAgICAgICAgICAtZSAncy9eLyAgIi8nIC1lICdzLyQvXFxuIi8nCi0JICAgIGVjaG8gIjsiCiAJICAgIGNhdCA8PEVPRgotCi1zdGF0aWMgY29uc3QgY2hhciAqc2NyaXB0X3RleHRfcGFydDIgPQotRU9GCi0JICAgIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyIHllcyB8Ci0JICAgICAgICAkU0VEIC1lICdzL1woW1xcIl1cKS9cXFwxL2cnIFwKLQkgICAgICAgICAgICAgLWUgJ3MvXi8gICIvJyAtZSAncy8kL1xcbiIvJwotCSAgICBlY2hvICI7IgotCi0JICAgIGNhdCA8PEVPRgotY29uc3QgY2hhciAqIE1BR0lDX0VYRSA9ICIkbWFnaWNfZXhlIjsKK3ZvbGF0aWxlIGNvbnN0IGNoYXIgKiBNQUdJQ19FWEUgPSAiJG1hZ2ljX2V4ZSI7CiBjb25zdCBjaGFyICogTElCX1BBVEhfVkFSTkFNRSA9ICIkc2hsaWJwYXRoX3ZhciI7CiBFT0YKIAogCSAgICBpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyAmJiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHRlbXBfcnBhdGgiOyB0aGVuCi0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdCAiJHRlbXBfcnBhdGgiCisgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkdGVtcF9ycGF0aCIKIAkgICAgICBjYXQgPDxFT0YKLWNvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IjsKK2NvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiOwogRU9GCiAJICAgIGVsc2UKIAkgICAgICBjYXQgPDwiRU9GIgpAQCAtMzMxNCwxMCArNDMxMCwxMCBAQAogCSAgICBmaQogCiAJICAgIGlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgotICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3QgIiRkbGxzZWFyY2hwYXRoOiIKKyAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiRkbGxzZWFyY2hwYXRoOiIKIAkgICAgICBjYXQgPDxFT0YKIGNvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQVJOQU1FID0gIlBBVEgiOwotY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiOworY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCI7CiBFT0YKIAkgICAgZWxzZQogCSAgICAgIGNhdCA8PCJFT0YiCkBAIC0zMzQwLDI0ICs0MzM2LDEwIEBACiAJICAgIGNhdCA8PCJFT0YiCiAKICNkZWZpbmUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggICAgICAgICAiLS1sdC0iCi0jZGVmaW5lIExUV1JBUFBFUl9PUFRJT05fUFJFRklYX0xFTkdUSCAgNQogCi1zdGF0aWMgY29uc3Qgc2l6ZV90IG9wdF9wcmVmaXhfbGVuICAgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEg7CiBzdGF0aWMgY29uc3QgY2hhciAqbHR3cmFwcGVyX29wdGlvbl9wcmVmaXggPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWDsKLQogc3RhdGljIGNvbnN0IGNoYXIgKmR1bXBzY3JpcHRfb3B0ICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImR1bXAtc2NyaXB0IjsKLQotc3RhdGljIGNvbnN0IHNpemVfdCBlbnZfc2V0X29wdF9sZW4gICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIICsgNzsKLXN0YXRpYyBjb25zdCBjaGFyICplbnZfc2V0X29wdCAgICAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJlbnYtc2V0IjsKLSAgLyogYXJndW1lbnQgaXMgcHV0ZW52LXN0eWxlICJmb289YmFyIiwgdmFsdWUgb2YgZm9vIGlzIHNldCB0byBiYXIgKi8KLQotc3RhdGljIGNvbnN0IHNpemVfdCBlbnZfcHJlcGVuZF9vcHRfbGVuID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIICsgMTE7Ci1zdGF0aWMgY29uc3QgY2hhciAqZW52X3ByZXBlbmRfb3B0ICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZW52LXByZXBlbmQiOwotICAvKiBhcmd1bWVudCBpcyBwdXRlbnYtc3R5bGUgImZvbz1iYXIiLCBuZXcgdmFsdWUgb2YgZm9vIGlzIGJhciR7Zm9vfSAqLwotCi1zdGF0aWMgY29uc3Qgc2l6ZV90IGVudl9hcHBlbmRfb3B0X2xlbiAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEggKyAxMDsKLXN0YXRpYyBjb25zdCBjaGFyICplbnZfYXBwZW5kX29wdCAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJlbnYtYXBwZW5kIjsKLSAgLyogYXJndW1lbnQgaXMgcHV0ZW52LXN0eWxlICJmb289YmFyIiwgbmV3IHZhbHVlIG9mIGZvbyBpcyAke2Zvb31iYXIgKi8KK3N0YXRpYyBjb25zdCBjaGFyICpkZWJ1Z19vcHQgICAgICAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJkZWJ1ZyI7CiAKIGludAogbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKQEAgLTMzNzQsMTAgKzQzNTYsMTMgQEAKICAgaW50IGk7CiAKICAgcHJvZ3JhbV9uYW1lID0gKGNoYXIgKikgeHN0cmR1cCAoYmFzZV9uYW1lIChhcmd2WzBdKSk7Ci0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgYXJndlswXSAgICAgIDogJXNcbiIsIGFyZ3ZbMF0pKTsKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBwcm9ncmFtX25hbWUgOiAlc1xuIiwgcHJvZ3JhbV9uYW1lKSk7CisgIG5ld2FyZ3ogPSBYTUFMTE9DIChjaGFyICosIGFyZ2MgKyAxKTsKIAotICAvKiB2ZXJ5IHNpbXBsZSBhcmcgcGFyc2luZzsgZG9uJ3Qgd2FudCB0byByZWx5IG9uIGdldG9wdCAqLworICAvKiB2ZXJ5IHNpbXBsZSBhcmcgcGFyc2luZzsgZG9uJ3Qgd2FudCB0byByZWx5IG9uIGdldG9wdAorICAgKiBhbHNvLCBjb3B5IGFsbCBub24gY3dyYXBwZXIgb3B0aW9ucyB0byBuZXdhcmd6LCBleGNlcHQKKyAgICogYXJnelswXSwgd2hpY2ggaXMgaGFuZGxlZCBkaWZmZXJlbnRseQorICAgKi8KKyAgbmV3YXJnYz0wOwogICBmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKQogICAgIHsKICAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGR1bXBzY3JpcHRfb3B0KSA9PSAwKQpAQCAtMzM5MSwyNSArNDM3Niw1NyBAQAogCSAgICAgIGVzYWMKIAogCSAgICBjYXQgPDwiRU9GIgotCSAgcHJpbnRmICgiJXMiLCBzY3JpcHRfdGV4dF9wYXJ0MSk7Ci0JICBwcmludGYgKCIlcyIsIHNjcmlwdF90ZXh0X3BhcnQyKTsKKwkgIGx0X2R1bXBfc2NyaXB0IChzdGRvdXQpOwogCSAgcmV0dXJuIDA7CiAJfQorICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgZGVidWdfb3B0KSA9PSAwKQorCXsKKyAgICAgICAgICBsdF9kZWJ1ZyA9IDE7CisgICAgICAgICAgY29udGludWU7CisJfQorICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgpID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAvKiBob3dldmVyLCBpZiB0aGVyZSBpcyBhbiBvcHRpb24gaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCisgICAgICAgICAgICAgbmFtZXNwYWNlLCBidXQgaXQgaXMgbm90IG9uZSBvZiB0aGUgb25lcyB3ZSBrbm93IGFib3V0IGFuZAorICAgICAgICAgICAgIGhhdmUgYWxyZWFkeSBkZWFsdCB3aXRoLCBhYm92ZSAoaW5sdWRpbmcgZHVtcC1zY3JpcHQpLCB0aGVuCisgICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yLiBPdGhlcndpc2UsIHRhcmdldHMgbWlnaHQgYmVnaW4gdG8gYmVsaWV2ZQorICAgICAgICAgICAgIHRoZXkgYXJlIGFsbG93ZWQgdG8gdXNlIG9wdGlvbnMgaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCisgICAgICAgICAgICAgbmFtZXNwYWNlLiBUaGUgZmlyc3QgdGltZSBhbnkgdXNlciBjb21wbGFpbnMgYWJvdXQgdGhpcywgd2UnbGwKKyAgICAgICAgICAgICBuZWVkIHRvIG1ha2UgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggYSBjb25maWd1cmUtdGltZSBvcHRpb24KKyAgICAgICAgICAgICBvciBhIGNvbmZpZ3VyZS5hYy1zZXR0YWJsZSB2YWx1ZS4KKyAgICAgICAgICAgKi8KKyAgICAgICAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAorCQkgICAgInVucmVjb2duaXplZCAlcyBvcHRpb246ICclcyciLAorICAgICAgICAgICAgICAgICAgICBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgYXJndltpXSk7CisgICAgICAgIH0KKyAgICAgIC8qIG90aGVyd2lzZSAuLi4gKi8KKyAgICAgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IHhzdHJkdXAgKGFyZ3ZbaV0pOwogICAgIH0KKyAgbmV3YXJnelsrK25ld2FyZ2NdID0gTlVMTDsKIAotICBuZXdhcmd6ID0gWE1BTExPQyAoY2hhciAqLCBhcmdjICsgMSk7CitFT0YKKwkgICAgY2F0IDw8RU9GCisgIC8qIFRoZSBHTlUgYmFubmVyIG11c3QgYmUgdGhlIGZpcnN0IG5vbi1lcnJvciBkZWJ1ZyBtZXNzYWdlICovCisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICJsaWJ0b29sIHdyYXBwZXIgKEdOVSAkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OXG4iKTsKK0VPRgorCSAgICBjYXQgPDwiRU9GIgorICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIGFyZ3ZbMF06ICVzXG4iLCBhcmd2WzBdKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBwcm9ncmFtX25hbWU6ICVzXG4iLCBwcm9ncmFtX25hbWUpOworCiAgIHRtcF9wYXRoc3BlYyA9IGZpbmRfZXhlY3V0YWJsZSAoYXJndlswXSk7CiAgIGlmICh0bXBfcGF0aHNwZWMgPT0gTlVMTCkKLSAgICBsdF9mYXRhbCAoIkNvdWxkbid0IGZpbmQgJXMiLCBhcmd2WzBdKTsKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBmb3VuZCBleGUgKGJlZm9yZSBzeW1saW5rIGNoYXNlKSBhdCA6ICVzXG4iLAotCQkJICB0bXBfcGF0aHNwZWMpKTsKKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiY291bGRuJ3QgZmluZCAlcyIsIGFyZ3ZbMF0pOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorICAgICAgICAgICAgICAgICAgIihtYWluKSBmb3VuZCBleGUgKGJlZm9yZSBzeW1saW5rIGNoYXNlKSBhdDogJXNcbiIsCisJCSAgdG1wX3BhdGhzcGVjKTsKIAogICBhY3R1YWxfY3dyYXBwZXJfcGF0aCA9IGNoYXNlX3N5bWxpbmtzICh0bXBfcGF0aHNwZWMpOwotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZvdW5kIGV4ZSAoYWZ0ZXIgc3ltbGluayBjaGFzZSkgYXQgOiAlc1xuIiwKLQkJCSAgYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKyAgICAgICAgICAgICAgICAgICIobWFpbikgZm91bmQgZXhlIChhZnRlciBzeW1saW5rIGNoYXNlKSBhdDogJXNcbiIsCisJCSAgYWN0dWFsX2N3cmFwcGVyX3BhdGgpOwogICBYRlJFRSAodG1wX3BhdGhzcGVjKTsKIAotICBhY3R1YWxfY3dyYXBwZXJfbmFtZSA9IHhzdHJkdXAoIGJhc2VfbmFtZSAoYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKKyAgYWN0dWFsX2N3cmFwcGVyX25hbWUgPSB4c3RyZHVwIChiYXNlX25hbWUgKGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7CiAgIHN0cmVuZHphcCAoYWN0dWFsX2N3cmFwcGVyX3BhdGgsIGFjdHVhbF9jd3JhcHBlcl9uYW1lKTsKIAogICAvKiB3cmFwcGVyIG5hbWUgdHJhbnNmb3JtcyAqLwpAQCAtMzQyNyw4ICs0NDQ0LDkgQEAKICAgdGFyZ2V0X25hbWUgPSB0bXBfcGF0aHNwZWM7CiAgIHRtcF9wYXRoc3BlYyA9IDA7CiAKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBsaWJ0b29sIHRhcmdldCBuYW1lOiAlc1xuIiwKLQkJCSAgdGFyZ2V0X25hbWUpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJICAiKG1haW4pIGxpYnRvb2wgdGFyZ2V0IG5hbWU6ICVzXG4iLAorCQkgIHRhcmdldF9uYW1lKTsKIEVPRgogCiAJICAgIGNhdCA8PEVPRgpAQCAtMzQ3OCw4MCArNDQ5NiwxOSBAQAogCiAgIGx0X3NldGVudiAoIkJJTl9TSCIsICJ4cGc0Iik7IC8qIGZvciBUcnU2NCAqLwogICBsdF9zZXRlbnYgKCJEVUFMQ0FTRSIsICIxIik7ICAvKiBmb3IgTVNLIHNoICovCi0gIGx0X3VwZGF0ZV9saWJfcGF0aCAoTElCX1BBVEhfVkFSTkFNRSwgTElCX1BBVEhfVkFMVUUpOworICAvKiBVcGRhdGUgdGhlIERMTCBzZWFyY2hwYXRoLiAgRVhFX1BBVEhfVkFMVUUgKCRkbGxzZWFyY2hwYXRoKSBtdXN0CisgICAgIGJlIHByZXBlbmRlZCBiZWZvcmUgKHRoYXQgaXMsIGFwcGVhciBhZnRlcikgTElCX1BBVEhfVkFMVUUgKCR0ZW1wX3JwYXRoKQorICAgICBiZWNhdXNlIG9uIFdpbmRvd3MsIGJvdGggKl9WQVJOQU1FcyBhcmUgUEFUSCBidXQgdW5pbnN0YWxsZWQKKyAgICAgbGlicmFyaWVzIG11c3QgY29tZSBmaXJzdC4gKi8KICAgbHRfdXBkYXRlX2V4ZV9wYXRoIChFWEVfUEFUSF9WQVJOQU1FLCBFWEVfUEFUSF9WQUxVRSk7CisgIGx0X3VwZGF0ZV9saWJfcGF0aCAoTElCX1BBVEhfVkFSTkFNRSwgTElCX1BBVEhfVkFMVUUpOwogCi0gIG5ld2FyZ2M9MDsKLSAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKLSAgICB7Ci0gICAgICBpZiAoc3RybmNtcCAoYXJndltpXSwgZW52X3NldF9vcHQsIGVudl9zZXRfb3B0X2xlbikgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgIGlmIChhcmd2W2ldW2Vudl9zZXRfb3B0X2xlbl0gPT0gJz0nKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjb25zdCBjaGFyICpwID0gYXJndltpXSArIGVudl9zZXRfb3B0X2xlbiArIDE7Ci0gICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9zZXQgKHApOwotICAgICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKGFyZ3ZbaV1bZW52X3NldF9vcHRfbGVuXSA9PSAnXDAnICYmIGkgKyAxIDwgYXJnYykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgbHRfb3B0X3Byb2Nlc3NfZW52X3NldCAoYXJndlsrK2ldKTsgLyogZG9uJ3QgY29weSAqLwotICAgICAgICAgICAgfQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGx0X2ZhdGFsICgiJXMgbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudCIsIGVudl9zZXRfb3B0KTsKLSAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgaWYgKHN0cm5jbXAgKGFyZ3ZbaV0sIGVudl9wcmVwZW5kX29wdCwgZW52X3ByZXBlbmRfb3B0X2xlbikgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgIGlmIChhcmd2W2ldW2Vudl9wcmVwZW5kX29wdF9sZW5dID09ICc9JykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY29uc3QgY2hhciAqcCA9IGFyZ3ZbaV0gKyBlbnZfcHJlcGVuZF9vcHRfbGVuICsgMTsKLSAgICAgICAgICAgICAgbHRfb3B0X3Byb2Nlc3NfZW52X3ByZXBlbmQgKHApOwotICAgICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKGFyZ3ZbaV1bZW52X3ByZXBlbmRfb3B0X2xlbl0gPT0gJ1wwJyAmJiBpICsgMSA8IGFyZ2MpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9wcmVwZW5kIChhcmd2WysraV0pOyAvKiBkb24ndCBjb3B5ICovCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgbHRfZmF0YWwgKCIlcyBtaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50IiwgZW52X3ByZXBlbmRfb3B0KTsKLSAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgaWYgKHN0cm5jbXAgKGFyZ3ZbaV0sIGVudl9hcHBlbmRfb3B0LCBlbnZfYXBwZW5kX29wdF9sZW4pID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoYXJndltpXVtlbnZfYXBwZW5kX29wdF9sZW5dID09ICc9JykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY29uc3QgY2hhciAqcCA9IGFyZ3ZbaV0gKyBlbnZfYXBwZW5kX29wdF9sZW4gKyAxOwotICAgICAgICAgICAgICBsdF9vcHRfcHJvY2Vzc19lbnZfYXBwZW5kIChwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmIChhcmd2W2ldW2Vudl9hcHBlbmRfb3B0X2xlbl0gPT0gJ1wwJyAmJiBpICsgMSA8IGFyZ2MpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9hcHBlbmQgKGFyZ3ZbKytpXSk7IC8qIGRvbid0IGNvcHkgKi8KLSAgICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBsdF9mYXRhbCAoIiVzIG1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQiLCBlbnZfYXBwZW5kX29wdCk7Ci0gICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgIGlmIChzdHJuY21wIChhcmd2W2ldLCBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgb3B0X3ByZWZpeF9sZW4pID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAvKiBob3dldmVyLCBpZiB0aGVyZSBpcyBhbiBvcHRpb24gaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCi0gICAgICAgICAgICAgbmFtZXNwYWNlLCBidXQgaXQgaXMgbm90IG9uZSBvZiB0aGUgb25lcyB3ZSBrbm93IGFib3V0IGFuZAotICAgICAgICAgICAgIGhhdmUgYWxyZWFkeSBkZWFsdCB3aXRoLCBhYm92ZSAoaW5sdWRpbmcgZHVtcC1zY3JpcHQpLCB0aGVuCi0gICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yLiBPdGhlcndpc2UsIHRhcmdldHMgbWlnaHQgYmVnaW4gdG8gYmVsaWV2ZQotICAgICAgICAgICAgIHRoZXkgYXJlIGFsbG93ZWQgdG8gdXNlIG9wdGlvbnMgaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCi0gICAgICAgICAgICAgbmFtZXNwYWNlLiBUaGUgZmlyc3QgdGltZSBhbnkgdXNlciBjb21wbGFpbnMgYWJvdXQgdGhpcywgd2UnbGwKLSAgICAgICAgICAgICBuZWVkIHRvIG1ha2UgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggYSBjb25maWd1cmUtdGltZSBvcHRpb24KLSAgICAgICAgICAgICBvciBhIGNvbmZpZ3VyZS5hYy1zZXR0YWJsZSB2YWx1ZS4KLSAgICAgICAgICAgKi8KLSAgICAgICAgICBsdF9mYXRhbCAoIlVucmVjb2duaXplZCBvcHRpb24gaW4gJXMgbmFtZXNwYWNlOiAnJXMnIiwKLSAgICAgICAgICAgICAgICAgICAgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIGFyZ3ZbaV0pOwotICAgICAgICB9Ci0gICAgICAvKiBvdGhlcndpc2UgLi4uICovCi0gICAgICBuZXdhcmd6WysrbmV3YXJnY10gPSB4c3RyZHVwIChhcmd2W2ldKTsKLSAgICB9Ci0gIG5ld2FyZ3pbKytuZXdhcmdjXSA9IE5VTEw7Ci0KLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICAgICAoKCIobWFpbikgbHRfYXJndl96ZXJvIDogJXNcbiIsIChsdF9hcmd2X3plcm8gPyBsdF9hcmd2X3plcm8gOiAiPE5VTEw+IikpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBsdF9hcmd2X3plcm86ICVzXG4iLAorCQkgIG5vbm51bGwgKGx0X2FyZ3ZfemVybykpOwogICBmb3IgKGkgPSAwOyBpIDwgbmV3YXJnYzsgaSsrKQogICAgIHsKLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgbmV3YXJnelslZF0gICA6ICVzXG4iLCBpLCAobmV3YXJneltpXSA/IG5ld2FyZ3pbaV0gOiAiPE5VTEw+IikpKTsKKyAgICAgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgbmV3YXJnelslZF06ICVzXG4iLAorCQkgICAgICBpLCBub25udWxsIChuZXdhcmd6W2ldKSk7CiAgICAgfQogCiBFT0YKQEAgLTM1NjAsMTEgKzQ1MTcsMTQgQEAKIAkgICAgICBtaW5ndyopCiAJCWNhdCA8PCJFT0YiCiAgIC8qIGV4ZWN2IGRvZXNuJ3QgYWN0dWFsbHkgd29yayBvbiBtaW5ndyBhcyBleHBlY3RlZCBvbiB1bml4ICovCisgIG5ld2FyZ3ogPSBwcmVwYXJlX3NwYXduIChuZXdhcmd6KTsKICAgcnZhbCA9IF9zcGF3bnYgKF9QX1dBSVQsIGx0X2FyZ3ZfemVybywgKGNvbnN0IGNoYXIgKiBjb25zdCAqKSBuZXdhcmd6KTsKICAgaWYgKHJ2YWwgPT0gLTEpCiAgICAgewogICAgICAgLyogZmFpbGVkIHRvIHN0YXJ0IHByb2Nlc3MgKi8KLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZmFpbGVkIHRvIGxhdW5jaCB0YXJnZXQgXCIlc1wiOiBlcnJubyA9ICVkXG4iLCBsdF9hcmd2X3plcm8sIGVycm5vKSk7CisgICAgICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorCQkgICAgICAiKG1haW4pIGZhaWxlZCB0byBsYXVuY2ggdGFyZ2V0IFwiJXNcIjogJXNcbiIsCisJCSAgICAgIGx0X2FyZ3ZfemVybywgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOwogICAgICAgcmV0dXJuIDEyNzsKICAgICB9CiAgIHJldHVybiBydmFsOwpAQCAtMzU4Niw3ICs0NTQ2LDcgQEAKIHsKICAgdm9pZCAqcCA9ICh2b2lkICopIG1hbGxvYyAobnVtKTsKICAgaWYgKCFwKQotICAgIGx0X2ZhdGFsICgiTWVtb3J5IGV4aGF1c3RlZCIpOworICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJtZW1vcnkgZXhoYXVzdGVkIik7CiAKICAgcmV0dXJuIHA7CiB9CkBAIC0zNjIwLDggKzQ1ODAsOCBAQAogewogICBzdHJ1Y3Qgc3RhdCBzdDsKIAotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGNoZWNrX2V4ZWN1dGFibGUpICA6ICVzXG4iLAotCQkJICBwYXRoID8gKCpwYXRoID8gcGF0aCA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihjaGVja19leGVjdXRhYmxlKTogJXNcbiIsCisgICAgICAgICAgICAgICAgICBub25lbXB0eSAocGF0aCkpOwogICBpZiAoKCFwYXRoKSB8fCAoISpwYXRoKSkKICAgICByZXR1cm4gMDsKIApAQCAtMzYzOCw4ICs0NTk4LDggQEAKICAgaW50IHJ2YWwgPSAwOwogICBzdHJ1Y3Qgc3RhdCBzdDsKIAotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1ha2VfZXhlY3V0YWJsZSkgICA6ICVzXG4iLAotCQkJICBwYXRoID8gKCpwYXRoID8gcGF0aCA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWtlX2V4ZWN1dGFibGUpOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5IChwYXRoKSk7CiAgIGlmICgoIXBhdGgpIHx8ICghKnBhdGgpKQogICAgIHJldHVybiAwOwogCkBAIC0zNjY1LDggKzQ2MjUsOCBAQAogICBpbnQgdG1wX2xlbjsKICAgY2hhciAqY29uY2F0X25hbWU7CiAKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihmaW5kX2V4ZWN1dGFibGUpICAgOiAlc1xuIiwKLQkJCSAgd3JhcHBlciA/ICgqd3JhcHBlciA/IHdyYXBwZXIgOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIoZmluZF9leGVjdXRhYmxlKTogJXNcbiIsCisgICAgICAgICAgICAgICAgICBub25lbXB0eSAod3JhcHBlcikpOwogCiAgIGlmICgod3JhcHBlciA9PSBOVUxMKSB8fCAoKndyYXBwZXIgPT0gJ1wwJykpCiAgICAgcmV0dXJuIE5VTEw7CkBAIC0zNzE5LDcgKzQ2NzksOCBAQAogCQl7CiAJCSAgLyogZW1wdHkgcGF0aDogY3VycmVudCBkaXJlY3RvcnkgKi8KIAkJICBpZiAoZ2V0Y3dkICh0bXAsIExUX1BBVEhNQVgpID09IE5VTEwpCi0JCSAgICBsdF9mYXRhbCAoImdldGN3ZCBmYWlsZWQiKTsKKwkJICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJnZXRjd2QgZmFpbGVkOiAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7CiAJCSAgdG1wX2xlbiA9IHN0cmxlbiAodG1wKTsKIAkJICBjb25jYXRfbmFtZSA9CiAJCSAgICBYTUFMTE9DIChjaGFyLCB0bXBfbGVuICsgMSArIHN0cmxlbiAod3JhcHBlcikgKyAxKTsKQEAgLTM3NDQsNyArNDcwNSw4IEBACiAgICAgfQogICAvKiBSZWxhdGl2ZSBwYXRoIHwgbm90IGZvdW5kIGluIHBhdGg6IHByZXBlbmQgY3dkICovCiAgIGlmIChnZXRjd2QgKHRtcCwgTFRfUEFUSE1BWCkgPT0gTlVMTCkKLSAgICBsdF9mYXRhbCAoImdldGN3ZCBmYWlsZWQiKTsKKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiZ2V0Y3dkIGZhaWxlZDogJXMiLAorICAgICAgICAgICAgICBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7CiAgIHRtcF9sZW4gPSBzdHJsZW4gKHRtcCk7CiAgIGNvbmNhdF9uYW1lID0gWE1BTExPQyAoY2hhciwgdG1wX2xlbiArIDEgKyBzdHJsZW4gKHdyYXBwZXIpICsgMSk7CiAgIG1lbWNweSAoY29uY2F0X25hbWUsIHRtcCwgdG1wX2xlbik7CkBAIC0zNzcwLDggKzQ3MzIsOSBAQAogICBpbnQgaGFzX3N5bWxpbmtzID0gMDsKICAgd2hpbGUgKHN0cmxlbiAodG1wX3BhdGhzcGVjKSAmJiAhaGFzX3N5bWxpbmtzKQogICAgIHsKLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCJjaGVja2luZyBwYXRoIGNvbXBvbmVudCBmb3Igc3ltbGlua3M6ICVzXG4iLAotCQkJICAgICAgdG1wX3BhdGhzcGVjKSk7CisgICAgICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorCQkgICAgICAiY2hlY2tpbmcgcGF0aCBjb21wb25lbnQgZm9yIHN5bWxpbmtzOiAlc1xuIiwKKwkJICAgICAgdG1wX3BhdGhzcGVjKTsKICAgICAgIGlmIChsc3RhdCAodG1wX3BhdGhzcGVjLCAmcykgPT0gMCkKIAl7CiAJICBpZiAoU19JU0xOSyAocy5zdF9tb2RlKSAhPSAwKQpAQCAtMzc5Myw4ICs0NzU2LDkgQEAKIAl9CiAgICAgICBlbHNlCiAJewotCSAgY2hhciAqZXJyc3RyID0gc3RyZXJyb3IgKGVycm5vKTsKLQkgIGx0X2ZhdGFsICgiRXJyb3IgYWNjZXNzaW5nIGZpbGUgJXMgKCVzKSIsIHRtcF9wYXRoc3BlYywgZXJyc3RyKTsKKwkgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSAgICAiZXJyb3IgYWNjZXNzaW5nIGZpbGUgXCIlc1wiOiAlcyIsCisJCSAgICB0bXBfcGF0aHNwZWMsIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKIAl9CiAgICAgfQogICBYRlJFRSAodG1wX3BhdGhzcGVjKTsKQEAgLTM4MDcsNyArNDc3MSw4IEBACiAgIHRtcF9wYXRoc3BlYyA9IHJlYWxwYXRoIChwYXRoc3BlYywgYnVmKTsKICAgaWYgKHRtcF9wYXRoc3BlYyA9PSAwKQogICAgIHsKLSAgICAgIGx0X2ZhdGFsICgiQ291bGQgbm90IGZvbGxvdyBzeW1saW5rcyBmb3IgJXMiLCBwYXRoc3BlYyk7CisgICAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAorCQkiY291bGQgbm90IGZvbGxvdyBzeW1saW5rcyBmb3IgJXMiLCBwYXRoc3BlYyk7CiAgICAgfQogICByZXR1cm4geHN0cmR1cCAodG1wX3BhdGhzcGVjKTsKICNlbmRpZgpAQCAtMzgzMywxMSArNDc5OCwyNSBAQAogICByZXR1cm4gc3RyOwogfQogCit2b2lkCitsdF9kZWJ1Z3ByaW50ZiAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworICB2YV9saXN0IGFyZ3M7CisgIGlmIChsdF9kZWJ1ZykKKyAgICB7CisgICAgICAodm9pZCkgZnByaW50ZiAoc3RkZXJyLCAiJXM6JXM6JWQ6ICIsIHByb2dyYW1fbmFtZSwgZmlsZSwgbGluZSk7CisgICAgICB2YV9zdGFydCAoYXJncywgZm10KTsKKyAgICAgICh2b2lkKSB2ZnByaW50ZiAoc3RkZXJyLCBmbXQsIGFyZ3MpOworICAgICAgdmFfZW5kIChhcmdzKTsKKyAgICB9Cit9CisKIHN0YXRpYyB2b2lkCi1sdF9lcnJvcl9jb3JlIChpbnQgZXhpdF9zdGF0dXMsIGNvbnN0IGNoYXIgKm1vZGUsCitsdF9lcnJvcl9jb3JlIChpbnQgZXhpdF9zdGF0dXMsIGNvbnN0IGNoYXIgKmZpbGUsCisJICAgICAgIGludCBsaW5lLCBjb25zdCBjaGFyICptb2RlLAogCSAgICAgICBjb25zdCBjaGFyICptZXNzYWdlLCB2YV9saXN0IGFwKQogewotICBmcHJpbnRmIChzdGRlcnIsICIlczogJXM6ICIsIHByb2dyYW1fbmFtZSwgbW9kZSk7CisgIGZwcmludGYgKHN0ZGVyciwgIiVzOiVzOiVkOiAlczogIiwgcHJvZ3JhbV9uYW1lLCBmaWxlLCBsaW5lLCBtb2RlKTsKICAgdmZwcmludGYgKHN0ZGVyciwgbWVzc2FnZSwgYXApOwogICBmcHJpbnRmIChzdGRlcnIsICIuXG4iKTsKIApAQCAtMzg0NiwyMCArNDgyNSwzMiBAQAogfQogCiB2b2lkCi1sdF9mYXRhbCAoY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKQorbHRfZmF0YWwgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pCiB7CiAgIHZhX2xpc3QgYXA7CiAgIHZhX3N0YXJ0IChhcCwgbWVzc2FnZSk7Ci0gIGx0X2Vycm9yX2NvcmUgKEVYSVRfRkFJTFVSRSwgIkZBVEFMIiwgbWVzc2FnZSwgYXApOworICBsdF9lcnJvcl9jb3JlIChFWElUX0ZBSUxVUkUsIGZpbGUsIGxpbmUsICJGQVRBTCIsIG1lc3NhZ2UsIGFwKTsKICAgdmFfZW5kIChhcCk7CiB9CiAKK3N0YXRpYyBjb25zdCBjaGFyICoKK25vbm51bGwgKGNvbnN0IGNoYXIgKnMpCit7CisgIHJldHVybiBzID8gcyA6ICIobnVsbCkiOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqCitub25lbXB0eSAoY29uc3QgY2hhciAqcykKK3sKKyAgcmV0dXJuIChzICYmICEqcykgPyAiKGVtcHR5KSIgOiBub25udWxsIChzKTsKK30KKwogdm9pZAogbHRfc2V0ZW52IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKIHsKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF9zZXRlbnYpIHNldHRpbmcgJyVzJyB0byAnJXMnXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSAgIihsdF9zZXRlbnYpIHNldHRpbmcgJyVzJyB0byAnJXMnXG4iLAorICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7CiAgIHsKICNpZmRlZiBIQVZFX1NFVEVOVgogICAgIC8qIGFsd2F5cyBtYWtlIGEgY29weSwgZm9yIGNvbnNpc3RlbmN5IHdpdGggIUhBVkVfU0VURU5WICovCkBAIC0zOTA0LDk1ICs0ODk1LDEyIEBACiAgIHJldHVybiBuZXdfdmFsdWU7CiB9CiAKLWludAotbHRfc3BsaXRfbmFtZV92YWx1ZSAoY29uc3QgY2hhciAqYXJnLCBjaGFyKiogbmFtZSwgY2hhcioqIHZhbHVlKQotewotICBjb25zdCBjaGFyICpwOwotICBpbnQgbGVuOwotICBpZiAoIWFyZyB8fCAhKmFyZykKLSAgICByZXR1cm4gMTsKLQotICBwID0gc3RyY2hyIChhcmcsIChpbnQpJz0nKTsKLQotICBpZiAoIXApCi0gICAgcmV0dXJuIDE7Ci0KLSAgKnZhbHVlID0geHN0cmR1cCAoKytwKTsKLQotICBsZW4gPSBzdHJsZW4gKGFyZykgLSBzdHJsZW4gKCp2YWx1ZSk7Ci0gICpuYW1lID0gWE1BTExPQyAoY2hhciwgbGVuKTsKLSAgc3RybmNweSAoKm5hbWUsIGFyZywgbGVuLTEpOwotICAoKm5hbWUpW2xlbiAtIDFdID0gJ1wwJzsKLQotICByZXR1cm4gMDsKLX0KLQotdm9pZAotbHRfb3B0X3Byb2Nlc3NfZW52X3NldCAoY29uc3QgY2hhciAqYXJnKQotewotICBjaGFyICpuYW1lID0gTlVMTDsKLSAgY2hhciAqdmFsdWUgPSBOVUxMOwotCi0gIGlmIChsdF9zcGxpdF9uYW1lX3ZhbHVlIChhcmcsICZuYW1lLCAmdmFsdWUpICE9IDApCi0gICAgewotICAgICAgWEZSRUUgKG5hbWUpOwotICAgICAgWEZSRUUgKHZhbHVlKTsKLSAgICAgIGx0X2ZhdGFsICgiYmFkIGFyZ3VtZW50IGZvciAlczogJyVzJyIsIGVudl9zZXRfb3B0LCBhcmcpOwotICAgIH0KLQotICBsdF9zZXRlbnYgKG5hbWUsIHZhbHVlKTsKLSAgWEZSRUUgKG5hbWUpOwotICBYRlJFRSAodmFsdWUpOwotfQotCi12b2lkCi1sdF9vcHRfcHJvY2Vzc19lbnZfcHJlcGVuZCAoY29uc3QgY2hhciAqYXJnKQotewotICBjaGFyICpuYW1lID0gTlVMTDsKLSAgY2hhciAqdmFsdWUgPSBOVUxMOwotICBjaGFyICpuZXdfdmFsdWUgPSBOVUxMOwotCi0gIGlmIChsdF9zcGxpdF9uYW1lX3ZhbHVlIChhcmcsICZuYW1lLCAmdmFsdWUpICE9IDApCi0gICAgewotICAgICAgWEZSRUUgKG5hbWUpOwotICAgICAgWEZSRUUgKHZhbHVlKTsKLSAgICAgIGx0X2ZhdGFsICgiYmFkIGFyZ3VtZW50IGZvciAlczogJyVzJyIsIGVudl9wcmVwZW5kX29wdCwgYXJnKTsKLSAgICB9Ci0KLSAgbmV3X3ZhbHVlID0gbHRfZXh0ZW5kX3N0ciAoZ2V0ZW52IChuYW1lKSwgdmFsdWUsIDApOwotICBsdF9zZXRlbnYgKG5hbWUsIG5ld192YWx1ZSk7Ci0gIFhGUkVFIChuZXdfdmFsdWUpOwotICBYRlJFRSAobmFtZSk7Ci0gIFhGUkVFICh2YWx1ZSk7Ci19Ci0KLXZvaWQKLWx0X29wdF9wcm9jZXNzX2Vudl9hcHBlbmQgKGNvbnN0IGNoYXIgKmFyZykKLXsKLSAgY2hhciAqbmFtZSA9IE5VTEw7Ci0gIGNoYXIgKnZhbHVlID0gTlVMTDsKLSAgY2hhciAqbmV3X3ZhbHVlID0gTlVMTDsKLQotICBpZiAobHRfc3BsaXRfbmFtZV92YWx1ZSAoYXJnLCAmbmFtZSwgJnZhbHVlKSAhPSAwKQotICAgIHsKLSAgICAgIFhGUkVFIChuYW1lKTsKLSAgICAgIFhGUkVFICh2YWx1ZSk7Ci0gICAgICBsdF9mYXRhbCAoImJhZCBhcmd1bWVudCBmb3IgJXM6ICclcyciLCBlbnZfYXBwZW5kX29wdCwgYXJnKTsKLSAgICB9Ci0KLSAgbmV3X3ZhbHVlID0gbHRfZXh0ZW5kX3N0ciAoZ2V0ZW52IChuYW1lKSwgdmFsdWUsIDEpOwotICBsdF9zZXRlbnYgKG5hbWUsIG5ld192YWx1ZSk7Ci0gIFhGUkVFIChuZXdfdmFsdWUpOwotICBYRlJFRSAobmFtZSk7Ci0gIFhGUkVFICh2YWx1ZSk7Ci19Ci0KIHZvaWQKIGx0X3VwZGF0ZV9leGVfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCiB7Ci0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobHRfdXBkYXRlX2V4ZV9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lID8gbmFtZSA6ICI8TlVMTD4iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJICAiKGx0X3VwZGF0ZV9leGVfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAorICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7CiAKICAgaWYgKG5hbWUgJiYgKm5hbWUgJiYgdmFsdWUgJiYgKnZhbHVlKQogICAgIHsKQEAgLTQwMTEsOSArNDkxOSw5IEBACiB2b2lkCiBsdF91cGRhdGVfbGliX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQogewotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3VwZGF0ZV9saWJfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSAgIihsdF91cGRhdGVfbGliX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKKyAgICAgICAgICAgICAgICAgIG5vbm51bGwgKG5hbWUpLCBub25udWxsICh2YWx1ZSkpOwogCiAgIGlmIChuYW1lICYmICpuYW1lICYmIHZhbHVlICYmICp2YWx1ZSkKICAgICB7CkBAIC00MDIzLDExICs0OTMxLDE1MiBAQAogICAgIH0KIH0KIAorRU9GCisJICAgIGNhc2UgJGhvc3Rfb3MgaW4KKwkgICAgICBtaW5ndyopCisJCWNhdCA8PCJFT0YiCiAKKy8qIFByZXBhcmVzIGFuIGFyZ3VtZW50IHZlY3RvciBiZWZvcmUgY2FsbGluZyBzcGF3bigpLgorICAgTm90ZSB0aGF0IHNwYXduKCkgZG9lcyBub3QgYnkgaXRzZWxmIGNhbGwgdGhlIGNvbW1hbmQgaW50ZXJwcmV0ZXIKKyAgICAgKGdldGVudiAoIkNPTVNQRUMiKSAhPSBOVUxMID8gZ2V0ZW52ICgiQ09NU1BFQyIpIDoKKyAgICAgICh7IE9TVkVSU0lPTklORk8gdjsgdi5kd09TVmVyc2lvbkluZm9TaXplID0gc2l6ZW9mKE9TVkVSU0lPTklORk8pOworICAgICAgICAgR2V0VmVyc2lvbkV4KCZ2KTsKKyAgICAgICAgIHYuZHdQbGF0Zm9ybUlkID09IFZFUl9QTEFURk9STV9XSU4zMl9OVDsKKyAgICAgIH0pID8gImNtZC5leGUiIDogImNvbW1hbmQuY29tIikuCisgICBJbnN0ZWFkIGl0IHNpbXBseSBjb25jYXRlbmF0ZXMgdGhlIGFyZ3VtZW50cywgc2VwYXJhdGVkIGJ5ICcgJywgYW5kIGNhbGxzCisgICBDcmVhdGVQcm9jZXNzKCkuICBXZSBtdXN0IHF1b3RlIHRoZSBhcmd1bWVudHMgc2luY2UgV2luMzIgQ3JlYXRlUHJvY2VzcygpCisgICBpbnRlcnByZXRzIGNoYXJhY3RlcnMgbGlrZSAnICcsICdcdCcsICdcXCcsICciJyAoYnV0IG5vdCAnPCcgYW5kICc+JykgaW4gYQorICAgc3BlY2lhbCB3YXk6CisgICAtIFNwYWNlIGFuZCB0YWIgYXJlIGludGVycHJldGVkIGFzIGRlbGltaXRlcnMuIFRoZXkgYXJlIG5vdCB0cmVhdGVkIGFzCisgICAgIGRlbGltaXRlcnMgaWYgdGhleSBhcmUgc3Vycm91bmRlZCBieSBkb3VibGUgcXVvdGVzOiAiLi4uIi4KKyAgIC0gVW5lc2NhcGVkIGRvdWJsZSBxdW90ZXMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgaW5wdXQuIFRoZWlyIG9ubHkgZWZmZWN0IGlzCisgICAgIHRoYXQgd2l0aGluIGRvdWJsZSBxdW90ZXMsIHNwYWNlIGFuZCB0YWIgYXJlIHRyZWF0ZWQgbGlrZSBub3JtYWwKKyAgICAgY2hhcmFjdGVycy4KKyAgIC0gQmFja3NsYXNoZXMgbm90IGZvbGxvd2VkIGJ5IGRvdWJsZSBxdW90ZXMgYXJlIG5vdCBzcGVjaWFsLgorICAgLSBCdXQgMipuKzEgYmFja3NsYXNoZXMgZm9sbG93ZWQgYnkgYSBkb3VibGUgcXVvdGUgYmVjb21lCisgICAgIG4gYmFja3NsYXNoZXMgZm9sbG93ZWQgYnkgYSBkb3VibGUgcXVvdGUgKG4gPj0gMCk6CisgICAgICAgXCIgLT4gIgorICAgICAgIFxcXCIgLT4gXCIKKyAgICAgICBcXFxcXCIgLT4gXFwiCisgKi8KKyNkZWZpbmUgU0hFTExfU1BFQ0lBTF9DSEFSUyAiXCJcXCBcMDAxXDAwMlwwMDNcMDA0XDAwNVwwMDZcMDA3XDAxMFwwMTFcMDEyXDAxM1wwMTRcMDE1XDAxNlwwMTdcMDIwXDAyMVwwMjJcMDIzXDAyNFwwMjVcMDI2XDAyN1wwMzBcMDMxXDAzMlwwMzNcMDM0XDAzNVwwMzZcMDM3IgorI2RlZmluZSBTSEVMTF9TUEFDRV9DSEFSUyAiIFwwMDFcMDAyXDAwM1wwMDRcMDA1XDAwNlwwMDdcMDEwXDAxMVwwMTJcMDEzXDAxNFwwMTVcMDE2XDAxN1wwMjBcMDIxXDAyMlwwMjNcMDI0XDAyNVwwMjZcMDI3XDAzMFwwMzFcMDMyXDAzM1wwMzRcMDM1XDAzNlwwMzciCitjaGFyICoqCitwcmVwYXJlX3NwYXduIChjaGFyICoqYXJndikKK3sKKyAgc2l6ZV90IGFyZ2M7CisgIGNoYXIgKipuZXdfYXJndjsKKyAgc2l6ZV90IGk7CisKKyAgLyogQ291bnQgbnVtYmVyIG9mIGFyZ3VtZW50cy4gICovCisgIGZvciAoYXJnYyA9IDA7IGFyZ3ZbYXJnY10gIT0gTlVMTDsgYXJnYysrKQorICAgIDsKKworICAvKiBBbGxvY2F0ZSBuZXcgYXJndW1lbnQgdmVjdG9yLiAgKi8KKyAgbmV3X2FyZ3YgPSBYTUFMTE9DIChjaGFyICosIGFyZ2MgKyAxKTsKKworICAvKiBQdXQgcXVvdGVkIGFyZ3VtZW50cyBpbnRvIHRoZSBuZXcgYXJndW1lbnQgdmVjdG9yLiAgKi8KKyAgZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykKKyAgICB7CisgICAgICBjb25zdCBjaGFyICpzdHJpbmcgPSBhcmd2W2ldOworCisgICAgICBpZiAoc3RyaW5nWzBdID09ICdcMCcpCisJbmV3X2FyZ3ZbaV0gPSB4c3RyZHVwICgiXCJcIiIpOworICAgICAgZWxzZSBpZiAoc3RycGJyayAoc3RyaW5nLCBTSEVMTF9TUEVDSUFMX0NIQVJTKSAhPSBOVUxMKQorCXsKKwkgIGludCBxdW90ZV9hcm91bmQgPSAoc3RycGJyayAoc3RyaW5nLCBTSEVMTF9TUEFDRV9DSEFSUykgIT0gTlVMTCk7CisJICBzaXplX3QgbGVuZ3RoOworCSAgdW5zaWduZWQgaW50IGJhY2tzbGFzaGVzOworCSAgY29uc3QgY2hhciAqczsKKwkgIGNoYXIgKnF1b3RlZF9zdHJpbmc7CisJICBjaGFyICpwOworCisJICBsZW5ndGggPSAwOworCSAgYmFja3NsYXNoZXMgPSAwOworCSAgaWYgKHF1b3RlX2Fyb3VuZCkKKwkgICAgbGVuZ3RoKys7CisJICBmb3IgKHMgPSBzdHJpbmc7ICpzICE9ICdcMCc7IHMrKykKKwkgICAgeworCSAgICAgIGNoYXIgYyA9ICpzOworCSAgICAgIGlmIChjID09ICciJykKKwkJbGVuZ3RoICs9IGJhY2tzbGFzaGVzICsgMTsKKwkgICAgICBsZW5ndGgrKzsKKwkgICAgICBpZiAoYyA9PSAnXFwnKQorCQliYWNrc2xhc2hlcysrOworCSAgICAgIGVsc2UKKwkJYmFja3NsYXNoZXMgPSAwOworCSAgICB9CisJICBpZiAocXVvdGVfYXJvdW5kKQorCSAgICBsZW5ndGggKz0gYmFja3NsYXNoZXMgKyAxOworCisJICBxdW90ZWRfc3RyaW5nID0gWE1BTExPQyAoY2hhciwgbGVuZ3RoICsgMSk7CisKKwkgIHAgPSBxdW90ZWRfc3RyaW5nOworCSAgYmFja3NsYXNoZXMgPSAwOworCSAgaWYgKHF1b3RlX2Fyb3VuZCkKKwkgICAgKnArKyA9ICciJzsKKwkgIGZvciAocyA9IHN0cmluZzsgKnMgIT0gJ1wwJzsgcysrKQorCSAgICB7CisJICAgICAgY2hhciBjID0gKnM7CisJICAgICAgaWYgKGMgPT0gJyInKQorCQl7CisJCSAgdW5zaWduZWQgaW50IGo7CisJCSAgZm9yIChqID0gYmFja3NsYXNoZXMgKyAxOyBqID4gMDsgai0tKQorCQkgICAgKnArKyA9ICdcXCc7CisJCX0KKwkgICAgICAqcCsrID0gYzsKKwkgICAgICBpZiAoYyA9PSAnXFwnKQorCQliYWNrc2xhc2hlcysrOworCSAgICAgIGVsc2UKKwkJYmFja3NsYXNoZXMgPSAwOworCSAgICB9CisJICBpZiAocXVvdGVfYXJvdW5kKQorCSAgICB7CisJICAgICAgdW5zaWduZWQgaW50IGo7CisJICAgICAgZm9yIChqID0gYmFja3NsYXNoZXM7IGogPiAwOyBqLS0pCisJCSpwKysgPSAnXFwnOworCSAgICAgICpwKysgPSAnIic7CisJICAgIH0KKwkgICpwID0gJ1wwJzsKKworCSAgbmV3X2FyZ3ZbaV0gPSBxdW90ZWRfc3RyaW5nOworCX0KKyAgICAgIGVsc2UKKwluZXdfYXJndltpXSA9IChjaGFyICopIHN0cmluZzsKKyAgICB9CisgIG5ld19hcmd2W2FyZ2NdID0gTlVMTDsKKworICByZXR1cm4gbmV3X2FyZ3Y7Cit9CitFT0YKKwkJOzsKKwkgICAgZXNhYworCisgICAgICAgICAgICBjYXQgPDwiRU9GIgordm9pZCBsdF9kdW1wX3NjcmlwdCAoRklMRSogZikKK3sKK0VPRgorCSAgICBmdW5jX2VtaXRfd3JhcHBlciB5ZXMgfAorICAgICAgICAgICAgICAkU0VEIC1lICdzL1woW1xcIl1cKS9cXFwxL2cnIFwKKwkgICAgICAgICAgIC1lICdzL14vICBmcHV0cyAoIi8nIC1lICdzLyQvXFxuIiwgZik7LycKKworICAgICAgICAgICAgY2F0IDw8IkVPRiIKK30KIEVPRgogfQogIyBlbmQ6IGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMKIAorIyBmdW5jX3dpbjMyX2ltcG9ydF9saWJfcCBBUkcKKyMgVHJ1ZSBpZiBBUkcgaXMgYW4gaW1wb3J0IGxpYiwgYXMgaW5kaWNhdGVkIGJ5ICRmaWxlX21hZ2ljX2NtZAorZnVuY193aW4zMl9pbXBvcnRfbGliX3AgKCkKK3sKKyAgICAkb3B0X2RlYnVnCisgICAgY2FzZSBgZXZhbCAkZmlsZV9tYWdpY19jbWQgXCJcJDFcIiAyPi9kZXYvbnVsbCB8ICRTRUQgLWUgMTBxYCBpbgorICAgICppbXBvcnQqKSA6IDs7CisgICAgKikgZmFsc2UgOzsKKyAgICBlc2FjCit9CisKICMgZnVuY19tb2RlX2xpbmsgYXJnLi4uCiBmdW5jX21vZGVfbGluayAoKQogewpAQCAtNDA3Miw2ICs1MTIxLDcgQEAKICAgICBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0KIAogICAgIGF2b2lkX3ZlcnNpb249bm8KKyAgICBiaW5kaXI9CiAgICAgZGxmaWxlcz0KICAgICBkbHByZWZpbGVzPQogICAgIGRsc2VsZj1ubwpAQCAtNDE2NCw2ICs1MjE0LDExIEBACiAJZXNhYwogCiAJY2FzZSAkcHJldiBpbgorCWJpbmRpcikKKwkgIGJpbmRpcj0iJGFyZyIKKwkgIHByZXY9CisJICBjb250aW51ZQorCSAgOzsKIAlkbGZpbGVzfGRscHJlZmlsZXMpCiAJICBpZiB0ZXN0ICIkcHJlbG9hZCIgPSBubzsgdGhlbgogCSAgICAjIEFkZCB0aGUgc3ltYm9sIG9iamVjdCBpbnRvIHRoZSBsaW5raW5nIGNvbW1hbmRzLgpAQCAtNDE5NSw5ICs1MjUwLDkgQEAKIAkgICAgOzsKIAkgICopCiAJICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KLQkgICAgICBkbGZpbGVzPSIkZGxmaWxlcyAkYXJnIgorCSAgICAgIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkYXJnIgogCSAgICBlbHNlCi0JICAgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGFyZyIKKwkgICAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGFyZyIKIAkgICAgZmkKIAkgICAgcHJldj0KIAkgICAgY29udGludWUKQEAgLTQyMjEsNyArNTI3Niw3IEBACiAJICAgICotKi1kYXJ3aW4qKQogCSAgICAgIGNhc2UgIiRkZXBsaWJzICIgaW4KIAkJKiIgJHFhcmcubHRmcmFtZXdvcmsgIiopIDs7Ci0JCSopIGRlcGxpYnM9IiRkZXBsaWJzICRxYXJnLmx0ZnJhbWV3b3JrIiAjIHRoaXMgaXMgZml4ZWQgbGF0ZXIKKwkJKikgZnVuY19hcHBlbmQgZGVwbGlicyAiICRxYXJnLmx0ZnJhbWV3b3JrIiAjIHRoaXMgaXMgZml4ZWQgbGF0ZXIKIAkJICAgOzsKIAkgICAgICBlc2FjCiAJICAgICAgOzsKQEAgLTQyNDAsNyArNTI5NSw3IEBACiAJICAgIG1vcmVhcmdzPQogCSAgICBmb3IgZmlsIGluIGBjYXQgIiRzYXZlX2FyZyJgCiAJICAgIGRvCi0jCSAgICAgIG1vcmVhcmdzPSIkbW9yZWFyZ3MgJGZpbCIKKyMJICAgICAgZnVuY19hcHBlbmQgbW9yZWFyZ3MgIiAkZmlsIgogCSAgICAgIGFyZz0kZmlsCiAJICAgICAgIyBBIGxpYnRvb2wtY29udHJvbGxlZCBvYmplY3QuCiAKQEAgLTQyNjksNyArNTMyNCw3IEBACiAKIAkJICBpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCiAJCSAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0geWVzOyB0aGVuCi0JCSAgICAgIGRsZmlsZXM9IiRkbGZpbGVzICRwaWNfb2JqZWN0IgorCQkgICAgICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJHBpY19vYmplY3QiCiAJCSAgICAgIHByZXY9CiAJCSAgICAgIGNvbnRpbnVlCiAJCSAgICBlbHNlCkBAIC00MjgxLDcgKzUzMzYsNyBAQAogCQkgICMgQ0hFQ0sgTUU6ICBJIHRoaW5rIEkgYnVzdGVkIHRoaXMuICAtT3NzYW1hCiAJCSAgaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgogCQkgICAgIyBQcmVsb2FkIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgotCQkgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJHBpY19vYmplY3QiCisJCSAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJHBpY19vYmplY3QiCiAJCSAgICBwcmV2PQogCQkgIGZpCiAKQEAgLTQzNTEsMTIgKzU0MDYsMTIgQEAKIAkgIGlmIHRlc3QgIiRwcmV2IiA9IHJwYXRoOyB0aGVuCiAJICAgIGNhc2UgIiRycGF0aCAiIGluCiAJICAgICoiICRhcmcgIiopIDs7Ci0JICAgICopIHJwYXRoPSIkcnBhdGggJGFyZyIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgcnBhdGggIiAkYXJnIiA7OwogCSAgICBlc2FjCiAJICBlbHNlCiAJICAgIGNhc2UgIiR4cnBhdGggIiBpbgogCSAgICAqIiAkYXJnICIqKSA7OwotCSAgICAqKSB4cnBhdGg9IiR4cnBhdGggJGFyZyIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJGFyZyIgOzsKIAkgICAgZXNhYwogCSAgZmkKIAkgIHByZXY9CkBAIC00MzY4LDI4ICs1NDIzLDI4IEBACiAJICBjb250aW51ZQogCSAgOzsKIAl3ZWFrKQotCSAgd2Vha19saWJzPSIkd2Vha19saWJzICRhcmciCisJICBmdW5jX2FwcGVuZCB3ZWFrX2xpYnMgIiAkYXJnIgogCSAgcHJldj0KIAkgIGNvbnRpbnVlCiAJICA7OwogCXhjY2xpbmtlcikKLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkcWFyZyIKLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHFhcmciCisJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkcWFyZyIKKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHFhcmciCiAJICBwcmV2PQogCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHFhcmciCiAJICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHFhcmciCiAJICBjb250aW51ZQogCSAgOzsKIAl4Y29tcGlsZXIpCi0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRxYXJnIgorCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkcWFyZyIKIAkgIHByZXY9CiAJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkcWFyZyIKIAkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkcWFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwogCXhsaW5rZXIpCi0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJHFhcmciCi0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR3bCRxYXJnIgorCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJHFhcmciCisJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR3bCRxYXJnIgogCSAgcHJldj0KIAkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICR3bCRxYXJnIgogCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICR3bCRxYXJnIgpAQCAtNDQyNSw2ICs1NDgwLDExIEBACiAJY29udGludWUKIAk7OwogCisgICAgICAtYmluZGlyKQorCXByZXY9YmluZGlyCisJY29udGludWUKKwk7OworCiAgICAgICAtZGxvcGVuKQogCXByZXY9ZGxmaWxlcwogCWNvbnRpbnVlCkBAIC00NDc1LDE1ICs1NTM1LDE2IEBACiAJOzsKIAogICAgICAgLUwqKQotCWZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRhcmciCi0JZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLQlpZiB0ZXN0IC16ICIkZGlyIjsgdGhlbgorCWZ1bmNfc3RyaXBuYW1lICItTCIgJycgIiRhcmciCisJaWYgdGVzdCAteiAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCI7IHRoZW4KIAkgIGlmIHRlc3QgIiQjIiAtZ3QgMDsgdGhlbgogCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJyZXF1aXJlIG5vIHNwYWNlIGJldHdlZW4gXGAtTCcgYW5kIFxgJDEnIgogCSAgZWxzZQogCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJuZWVkIHBhdGggZm9yIFxgLUwnIG9wdGlvbiIKIAkgIGZpCiAJZmkKKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwlkaXI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAogCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgogCWNhc2UgJGRpciBpbgogCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKQEAgLTQ0OTUsMjQgKzU1NTYsMzAgQEAKIAkgIDs7CiAJZXNhYwogCWNhc2UgIiRkZXBsaWJzICIgaW4KLQkqIiAtTCRkaXIgIiopIDs7CisJKiIgLUwkZGlyICIqIHwgKiIgJGFyZyAiKikKKwkgICMgV2lsbCBvbmx5IGhhcHBlbiBmb3IgYWJzb2x1dGUgb3Igc3lzcm9vdCBhcmd1bWVudHMKKwkgIDs7CiAJKikKLQkgIGRlcGxpYnM9IiRkZXBsaWJzIC1MJGRpciIKLQkgIGxpYl9zZWFyY2hfcGF0aD0iJGxpYl9zZWFyY2hfcGF0aCAkZGlyIgorCSAgIyBQcmVzZXJ2ZSBzeXNyb290LCBidXQgbmV2ZXIgaW5jbHVkZSByZWxhdGl2ZSBkaXJlY3RvcmllcworCSAgY2FzZSAkZGlyIGluCisJICAgIFtcXC9dKiB8IFtBLVphLXpdOltcXC9dKiB8ID0qKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGFyZyIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgZGVwbGlicyAiIC1MJGRpciIgOzsKKwkgIGVzYWMKKwkgIGZ1bmNfYXBwZW5kIGxpYl9zZWFyY2hfcGF0aCAiICRkaXIiCiAJICA7OwogCWVzYWMKIAljYXNlICRob3N0IGluCiAJKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKLQkgIHRlc3RiaW5kaXI9YCRFQ0hPICJYJGRpciIgfCAkWHNlZCAtZSAncyovbGliJCovYmluKidgCisJICB0ZXN0YmluZGlyPWAkRUNITyAiJGRpciIgfCAkU0VEICdzKi9saWIkKi9iaW4qJ2AKIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgogCSAgKiI6JGRpcjoiKikgOzsKIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSRkaXI7OwotCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JGRpciI7OworCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiRkaXIiOzsKIAkgIGVzYWMKIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgogCSAgKiI6JHRlc3RiaW5kaXI6IiopIDs7CiAJICA6OikgZGxsc2VhcmNocGF0aD0kdGVzdGJpbmRpcjs7Ci0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokdGVzdGJpbmRpciI7OworCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiR0ZXN0YmluZGlyIjs7CiAJICBlc2FjCiAJICA7OwogCWVzYWMKQEAgLTQ1MjIsNyArNTU4OSw3IEBACiAgICAgICAtbCopCiAJaWYgdGVzdCAiWCRhcmciID0gIlgtbGMiIHx8IHRlc3QgIlgkYXJnIiA9ICJYLWxtIjsgdGhlbgogCSAgY2FzZSAkaG9zdCBpbgotCSAgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLWJlb3MqIHwgKi1jZWdjYyopCisJICAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotYmVvcyogfCAqLWNlZ2NjKiB8ICotKi1oYWlrdSopCiAJICAgICMgVGhlc2Ugc3lzdGVtcyBkb24ndCBhY3R1YWxseSBoYXZlIGEgQyBvciBtYXRoIGxpYnJhcnkgKGFzIHN1Y2gpCiAJICAgIGNvbnRpbnVlCiAJICAgIDs7CkBAIC00NTM2LDcgKzU2MDMsNyBAQAogCSAgICA7OwogCSAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQogCSAgICAjIFJoYXBzb2R5IEMgYW5kIG1hdGggbGlicmFyaWVzIGFyZSBpbiB0aGUgU3lzdGVtIGZyYW1ld29yawotCSAgICBkZXBsaWJzPSIkZGVwbGlicyBTeXN0ZW0ubHRmcmFtZXdvcmsiCisJICAgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiBTeXN0ZW0ubHRmcmFtZXdvcmsiCiAJICAgIGNvbnRpbnVlCiAJICAgIDs7CiAJICAqLSotc2NvMy4ydjUqIHwgKi0qLXNjbzV2NiopCkBAIC00NTU2LDcgKzU2MjMsNyBAQAogCSAgIDs7CiAJIGVzYWMKIAlmaQotCWRlcGxpYnM9IiRkZXBsaWJzICRhcmciCisJZnVuY19hcHBlbmQgZGVwbGlicyAiICRhcmciCiAJY29udGludWUKIAk7OwogCkBAIC00NTY4LDIxICs1NjM1LDIxIEBACiAgICAgICAjIFRydTY0IFVOSVggdXNlcyAtbW9kZWwgW2FyZ10gdG8gZGV0ZXJtaW5lIHRoZSBsYXlvdXQgb2YgQysrCiAgICAgICAjIGNsYXNzZXMsIG5hbWUgbWFuZ2xpbmcsIGFuZCBleGNlcHRpb24gaGFuZGxpbmcuCiAgICAgICAjIERhcndpbiB1c2VzIHRoZSAtYXJjaCBmbGFnIHRvIGRldGVybWluZSBvdXRwdXQgYXJjaGl0ZWN0dXJlLgotICAgICAgLW1vZGVsfC1hcmNofC1pc3lzcm9vdCkKLQljb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCisgICAgICAtbW9kZWx8LWFyY2h8LWlzeXNyb290fC0tc3lzcm9vdCkKKwlmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCiAJZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKIAlmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKIAlwcmV2PXhjb21waWxlcgogCWNvbnRpbnVlCiAJOzsKIAotICAgICAgLW10fC1tdGhyZWFkc3wta3RocmVhZHwtS3RocmVhZHwtcHRocmVhZHwtcHRocmVhZHN8LS10aHJlYWQtc2FmZXwtdGhyZWFkc3wtZnN0YWNrLXByb3RlY3RvciopCi0JY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorICAgICAgLW10fC1tdGhyZWFkc3wta3RocmVhZHwtS3RocmVhZHwtcHRocmVhZHwtcHRocmVhZHN8LS10aHJlYWQtc2FmZXwtdGhyZWFkcykKKwlmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCiAJZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKIAlmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKIAljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgogCSAgICAqIiAkYXJnICIqKSA7OwotCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkYXJnIiA7OworCSAgICAqICkgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkYXJnIiA7OwogCWVzYWMKIAljb250aW51ZQogCTs7CkBAIC00NjQ5LDEzICs1NzE2LDE3IEBACiAJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCiAJY2FzZSAkZGlyIGluCiAJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OworCT0qKQorCSAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkZGlyIgorCSAgZGlyPSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorCSAgOzsKIAkqKQogCSAgZnVuY19mYXRhbF9lcnJvciAib25seSBhYnNvbHV0ZSBydW4tcGF0aHMgYXJlIGFsbG93ZWQiCiAJICA7OwogCWVzYWMKIAljYXNlICIkeHJwYXRoICIgaW4KIAkqIiAkZGlyICIqKSA7OwotCSopIHhycGF0aD0iJHhycGF0aCAkZGlyIiA7OworCSopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRkaXIiIDs7CiAJZXNhYwogCWNvbnRpbnVlCiAJOzsKQEAgLTQ3MDgsOCArNTc3OSw4IEBACiAJZm9yIGZsYWcgaW4gJGFyZ3M7IGRvCiAJICBJRlM9IiRzYXZlX2lmcyIKICAgICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmxhZyIKLQkgIGFyZz0iJGFyZyAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgIGZ1bmNfYXBwZW5kIGFyZyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogCWRvbmUKIAlJRlM9IiRzYXZlX2lmcyIKIAlmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRhcmciCkBAIC00NzI0LDkgKzU3OTUsOSBAQAogCWZvciBmbGFnIGluICRhcmdzOyBkbwogCSAgSUZTPSIkc2F2ZV9pZnMiCiAgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZsYWciCi0JICBhcmc9IiRhcmcgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCSAgZnVuY19hcHBlbmQgYXJnICIgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAJZG9uZQogCUlGUz0iJHNhdmVfaWZzIgogCWZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGFyZyIKQEAgLTQ3NTQsMjMgKzU4MjUsMjggQEAKIAlhcmc9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKIAk7OwogCi0gICAgICAjIC02NCwgLW1pcHNbMC05XSBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIFNHSSBjb21waWxlcgotICAgICAgIyAtclswLTldWzAtOV0qIHNwZWNpZmllcyB0aGUgcHJvY2Vzc29yIG9uIHRoZSBTR0kgY29tcGlsZXIKLSAgICAgICMgLXhhcmNoPSosIC14dGFyZ2V0PSogZW5hYmxlIDY0LWJpdCBtb2RlIG9uIHRoZSBTdW4gY29tcGlsZXIKLSAgICAgICMgK0RBKiwgK0REKiBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIEhQIGNvbXBpbGVyCi0gICAgICAjIC1xKiBwYXNzIHRocm91Z2ggY29tcGlsZXIgYXJncyBmb3IgdGhlIElCTSBjb21waWxlcgotICAgICAgIyAtbSosIC10WzQ1XSosIC10eHNjYWxlKiBwYXNzIHRocm91Z2ggYXJjaGl0ZWN0dXJlLXNwZWNpZmljCi0gICAgICAjIGNvbXBpbGVyIGFyZ3MgZm9yIEdDQwotICAgICAgIyAtRi9wYXRoIGdpdmVzIHBhdGggdG8gdW5pbnN0YWxsZWQgZnJhbWV3b3JrcywgZ2NjIG9uIGRhcndpbgotICAgICAgIyAtcCwgLXBnLCAtLWNvdmVyYWdlLCAtZnByb2ZpbGUtKiBwYXNzIHRocm91Z2ggcHJvZmlsaW5nIGZsYWcgZm9yIEdDQwotICAgICAgIyBAZmlsZSBHQ0MgcmVzcG9uc2UgZmlsZXMKKyAgICAgICMgRmxhZ3MgdG8gYmUgcGFzc2VkIHRocm91Z2ggdW5jaGFuZ2VkLCB3aXRoIHJhdGlvbmFsZToKKyAgICAgICMgLTY0LCAtbWlwc1swLTldICAgICAgZW5hYmxlIDY0LWJpdCBtb2RlIGZvciB0aGUgU0dJIGNvbXBpbGVyCisgICAgICAjIC1yWzAtOV1bMC05XSogICAgICAgIHNwZWNpZnkgcHJvY2Vzc29yIGZvciB0aGUgU0dJIGNvbXBpbGVyCisgICAgICAjIC14YXJjaD0qLCAteHRhcmdldD0qIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIFN1biBjb21waWxlcgorICAgICAgIyArREEqLCArREQqICAgICAgICAgICBlbmFibGUgNjQtYml0IG1vZGUgZm9yIHRoZSBIUCBjb21waWxlcgorICAgICAgIyAtcSogICAgICAgICAgICAgICAgICBjb21waWxlciBhcmdzIGZvciB0aGUgSUJNIGNvbXBpbGVyCisgICAgICAjIC1tKiwgLXRbNDVdKiwgLXR4c2NhbGUqIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmbGFncyBmb3IgR0NDCisgICAgICAjIC1GL3BhdGggICAgICAgICAgICAgIHBhdGggdG8gdW5pbnN0YWxsZWQgZnJhbWV3b3JrcywgZ2NjIG9uIGRhcndpbgorICAgICAgIyAtcCwgLXBnLCAtLWNvdmVyYWdlLCAtZnByb2ZpbGUtKiAgcHJvZmlsaW5nIGZsYWdzIGZvciBHQ0MKKyAgICAgICMgLWZzdGFjay1wcm90ZWN0b3IqICAgc3RhY2sgcHJvdGVjdG9yIGZsYWdzIGZvciBHQ0MKKyAgICAgICMgQGZpbGUgICAgICAgICAgICAgICAgR0NDIHJlc3BvbnNlIGZpbGVzCisgICAgICAjIC10cD0qICAgICAgICAgICAgICAgIFBvcnRsYW5kIHBnY2MgdGFyZ2V0IHByb2Nlc3NvciBzZWxlY3Rpb24KKyAgICAgICMgLS1zeXNyb290PSogICAgICAgICAgZm9yIHN5c3Jvb3Qgc3VwcG9ydAorICAgICAgIyAtTyosIC1mbHRvKiwgLWZ3aG9wciosIC1mdXNlLWxpbmtlci1wbHVnaW4gR0NDIGxpbmstdGltZSBvcHRpbWl6YXRpb24KICAgICAgIC02NHwtbWlwc1swLTldfC1yWzAtOV1bMC05XSp8LXhhcmNoPSp8LXh0YXJnZXQ9KnwrREEqfCtERCp8LXEqfC1tKnwgXAotICAgICAgLXRbNDVdKnwtdHhzY2FsZSp8LXB8LXBnfC0tY292ZXJhZ2V8LWZwcm9maWxlLSp8LUYqfEAqKQorICAgICAgLXRbNDVdKnwtdHhzY2FsZSp8LXB8LXBnfC0tY292ZXJhZ2V8LWZwcm9maWxlLSp8LUYqfEAqfC10cD0qfC0tc3lzcm9vdD0qfCBcCisgICAgICAtTyp8LWZsdG8qfC1md2hvcHIqfC1mdXNlLWxpbmtlci1wbHVnaW58LWZzdGFjay1wcm90ZWN0b3IqKQogICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgogCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogICAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgogICAgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKLSAgICAgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorICAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCiAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIDs7CiAKQEAgLTQ3ODIsNyArNTg1OCw3IEBACiAKICAgICAgICouJG9iamV4dCkKIAkjIEEgc3RhbmRhcmQgb2JqZWN0LgotCW9ianM9IiRvYmpzICRhcmciCisJZnVuY19hcHBlbmQgb2JqcyAiICRhcmciCiAJOzsKIAogICAgICAgKi5sbykKQEAgLTQ4MTMsNyArNTg4OSw3IEBACiAKIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgogCSAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzICYmIHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgPSB5ZXM7IHRoZW4KLQkJZGxmaWxlcz0iJGRsZmlsZXMgJHBpY19vYmplY3QiCisJCWZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkcGljX29iamVjdCIKIAkJcHJldj0KIAkJY29udGludWUKIAkgICAgICBlbHNlCkBAIC00ODI1LDcgKzU5MDEsNyBAQAogCSAgICAjIENIRUNLIE1FOiAgSSB0aGluayBJIGJ1c3RlZCB0aGlzLiAgLU9zc2FtYQogCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCiAJICAgICAgIyBQcmVsb2FkIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgotCSAgICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRwaWNfb2JqZWN0IgorCSAgICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkcGljX29iamVjdCIKIAkgICAgICBwcmV2PQogCSAgICBmaQogCkBAIC00ODcwLDI0ICs1OTQ2LDI1IEBACiAKICAgICAgICouJGxpYmV4dCkKIAkjIEFuIGFyY2hpdmUuCi0JZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKLQlvbGRfZGVwbGlicz0iJG9sZF9kZXBsaWJzICRhcmciCisJZnVuY19hcHBlbmQgZGVwbGlicyAiICRhcmciCisJZnVuY19hcHBlbmQgb2xkX2RlcGxpYnMgIiAkYXJnIgogCWNvbnRpbnVlCiAJOzsKIAogICAgICAgKi5sYSkKIAkjIEEgbGlidG9vbC1jb250cm9sbGVkIGxpYnJhcnkuCiAKKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGFyZyIKIAlpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCiAJICAjIFRoaXMgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRsb3Blbi4KLQkgIGRsZmlsZXM9IiRkbGZpbGVzICRhcmciCisJICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKIAkgIHByZXY9CiAJZWxpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCiAJICAjIFRoZSBsaWJyYXJ5IHdhcyBzcGVjaWZpZWQgd2l0aCAtZGxwcmVvcGVuLgotCSAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGFyZyIKKwkgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCSAgcHJldj0KIAllbHNlCi0JICBkZXBsaWJzPSIkZGVwbGlicyAkYXJnIgorCSAgZnVuY19hcHBlbmQgZGVwbGlicyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCiAJZmkKIAljb250aW51ZQogCTs7CkBAIC00OTI1LDcgKzYwMDIsNyBAQAogCiAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCiAgICAgICAjIGdldCB0aGUgZGlyZWN0b3JpZXMgbGlzdGVkIGluICRzaGxpYnBhdGhfdmFyCi0gICAgICBldmFsIHNobGliX3NlYXJjaF9wYXRoPVxgXCRFQ0hPIFwiWFwkeyRzaGxpYnBhdGhfdmFyfVwiIFx8IFwkWHNlZCAtZSBcJ3MvOi8gL2dcJ1xgCisgICAgICBldmFsIHNobGliX3NlYXJjaF9wYXRoPVxgXCRFQ0hPIFwiXCR7JHNobGlicGF0aF92YXJ9XCIgXHwgXCRTRUQgXCdzLzovIC9nXCdcYAogICAgIGVsc2UKICAgICAgIHNobGliX3NlYXJjaF9wYXRoPQogICAgIGZpCkBAIC00OTM0LDYgKzYwMTEsOCBAQAogCiAgICAgZnVuY19kaXJuYW1lICIkb3V0cHV0IiAiLyIgIiIKICAgICBvdXRwdXRfb2JqZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCRvYmpkaXIiCisgICAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyIKKyAgICB0b29sX291dHB1dF9vYmpkaXI9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAogICAgICMgQ3JlYXRlIHRoZSBvYmplY3QgZGlyZWN0b3J5LgogICAgIGZ1bmNfbWtkaXJfcCAiJG91dHB1dF9vYmpkaXIiCiAKQEAgLTQ5NTQsMTIgKzYwMzMsMTIgQEAKICAgICAjIEZpbmQgYWxsIGludGVyZGVwZW5kZW50IGRlcGxpYnMgYnkgc2VhcmNoaW5nIGZvciBsaWJyYXJpZXMKICAgICAjIHRoYXQgYXJlIGxpbmtlZCBtb3JlIHRoYW4gb25jZSAoZS5nLiAtbGEgLWxiIC1sYSkKICAgICBmb3IgZGVwbGliIGluICRkZXBsaWJzOyBkbwotICAgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKyAgICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCiAJY2FzZSAiJGxpYnMgIiBpbgotCSoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKwkqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7CiAJZXNhYwogICAgICAgZmkKLSAgICAgIGxpYnM9IiRsaWJzICRkZXBsaWIiCisgICAgICBmdW5jX2FwcGVuZCBsaWJzICIgJGRlcGxpYiIKICAgICBkb25lCiAKICAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliOyB0aGVuCkBAIC00OTcyLDkgKzYwNTEsOSBAQAogICAgICAgaWYgJG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM7IHRoZW4KIAlmb3IgcHJlX3Bvc3RfZGVwIGluICRwcmVkZXBzICRwb3N0ZGVwczsgZG8KIAkgIGNhc2UgIiRwcmVfcG9zdF9kZXBzICIgaW4KLQkgICoiICRwcmVfcG9zdF9kZXAgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJHByZV9wb3N0X2RlcHMiIDs7CisJICAqIiAkcHJlX3Bvc3RfZGVwICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRwcmVfcG9zdF9kZXBzIiA7OwogCSAgZXNhYwotCSAgcHJlX3Bvc3RfZGVwcz0iJHByZV9wb3N0X2RlcHMgJHByZV9wb3N0X2RlcCIKKwkgIGZ1bmNfYXBwZW5kIHByZV9wb3N0X2RlcHMgIiAkcHJlX3Bvc3RfZGVwIgogCWRvbmUKICAgICAgIGZpCiAgICAgICBwcmVfcG9zdF9kZXBzPQpAQCAtNTA0MSwxNyArNjEyMCwxOSBAQAogCWZvciBsaWIgaW4gJGRscHJlZmlsZXM7IGRvCiAJICAjIElnbm9yZSBub24tbGlidG9vbC1saWJzCiAJICBkZXBlbmRlbmN5X2xpYnM9CisJICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGxpYiIKIAkgIGNhc2UgJGxpYiBpbgotCSAgKi5sYSkJZnVuY19zb3VyY2UgIiRsaWIiIDs7CisJICAqLmxhKQlmdW5jX3NvdXJjZSAiJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIgOzsKIAkgIGVzYWMKIAogCSAgIyBDb2xsZWN0IHByZW9wZW5lZCBsaWJ0b29sIGRlcGxpYnMsIGV4Y2VwdCBhbnkgdGhpcyBsaWJyYXJ5CiAJICAjIGhhcyBkZWNsYXJlZCBhcyB3ZWFrIGxpYnMKIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KLSAgICAgICAgICAgIGRlcGxpYl9iYXNlPWAkRUNITyAiWCRkZXBsaWIiIHwgJFhzZWQgLWUgIiRiYXNlbmFtZSJgCisJICAgIGZ1bmNfYmFzZW5hbWUgIiRkZXBsaWIiCisgICAgICAgICAgICBkZXBsaWJfYmFzZT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKIAkgICAgY2FzZSAiICR3ZWFrX2xpYnMgIiBpbgogCSAgICAqIiAkZGVwbGliX2Jhc2UgIiopIDs7Ci0JICAgICopIGRlcGxpYnM9IiRkZXBsaWJzICRkZXBsaWIiIDs7CisJICAgICopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkZGVwbGliIiA7OwogCSAgICBlc2FjCiAJICBkb25lCiAJZG9uZQpAQCAtNTA3MiwxMSArNjE1MywxMSBAQAogCSAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKIAkgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKIAkgIGVsc2UKLQkgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkZGVwbGliIgorCSAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRkZXBsaWIiCiAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgOyB0aGVuCiAJCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCiAJCSAgICAqIiAkZGVwbGliICIqKSA7OwotCQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGRlcGxpYiIgOzsKKwkJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRkZXBsaWIiIDs7CiAJCWVzYWMKIAkgICAgZmkKIAkgIGZpCkBAIC01MTYxLDcgKzYyNDIsNyBAQAogCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliIDsgdGhlbgogCQljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgogCQkgICAgKiIgJGRlcGxpYiAiKikgOzsKLQkJICAgICogKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRkZXBsaWIiIDs7CisJCSAgICAqICkgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkZGVwbGliIiA7OwogCQllc2FjCiAJICAgIGZpCiAJICBmaQpAQCAtNTE3NCw3ICs2MjU1LDggQEAKIAkgICAgdGVzdCAiJHBhc3MiID0gY29udiAmJiBjb250aW51ZQogCSAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKIAkgICAgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKLQkgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorCSAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCSAgICA7OwogCSAgcHJvZykKIAkgICAgaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgpAQCAtNTE4OCw3ICs2MjcwLDggQEAKIAkgICAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgogCSAgICBmaQogCSAgICBmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkZGVwbGliIgotCSAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJICAgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCiAJICAgIDs7CiAJICAqKQogCSAgICBmdW5jX3dhcm5pbmcgIlxgLUwnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzL29iamVjdHMiCkBAIC01MTk5LDE3ICs2MjgyLDIxIEBACiAJLVIqKQogCSAgaWYgdGVzdCAiJHBhc3MiID0gbGluazsgdGhlbgogCSAgICBmdW5jX3N0cmlwbmFtZSAnLVInICcnICIkZGVwbGliIgotCSAgICBkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorCSAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkgICAgZGlyPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKIAkgICAgIyBNYWtlIHN1cmUgdGhlIHhycGF0aCBjb250YWlucyBvbmx5IHVuaXF1ZSBkaXJlY3Rvcmllcy4KIAkgICAgY2FzZSAiJHhycGF0aCAiIGluCiAJICAgICoiICRkaXIgIiopIDs7Ci0JICAgICopIHhycGF0aD0iJHhycGF0aCAkZGlyIiA7OworCSAgICAqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkZGlyIiA7OwogCSAgICBlc2FjCiAJICBmaQogCSAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKIAkgIGNvbnRpbnVlCiAJICA7OwotCSoubGEpIGxpYj0iJGRlcGxpYiIgOzsKKwkqLmxhKQorCSAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCisJICBsaWI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorCSAgOzsKIAkqLiRsaWJleHQpCiAJICBpZiB0ZXN0ICIkcGFzcyIgPSBjb252OyB0aGVuCiAJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCkBAIC01MjI3LDcgKzYzMTQsNyBAQAogCQltYXRjaF9wYXR0ZXJuKikKIAkJICBzZXQgZHVtbXkgJGRlcGxpYnNfY2hlY2tfbWV0aG9kOyBzaGlmdAogCQkgIG1hdGNoX3BhdHRlcm5fcmVnZXg9YGV4cHIgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgOiAiJDEgXCguKlwpImAKLQkJICBpZiBldmFsICJcJEVDSE8gXCJYJGRlcGxpYlwiIiAyPi9kZXYvbnVsbCB8ICRYc2VkIC1lIDEwcSBcCisJCSAgaWYgZXZhbCAiXCRFQ0hPIFwiJGRlcGxpYlwiIiAyPi9kZXYvbnVsbCB8ICRTRUQgMTBxIFwKIAkJICAgIHwgJEVHUkVQICIkbWF0Y2hfcGF0dGVybl9yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KIAkJICAgIHZhbGlkX2FfbGliPXllcwogCQkgIGZpCkBAIC01MjM3LDE1ICs2MzI0LDE1IEBACiAJCTs7CiAJICAgICAgZXNhYwogCSAgICAgIGlmIHRlc3QgIiR2YWxpZF9hX2xpYiIgIT0geWVzOyB0aGVuCi0JCSRFQ0hPCisJCWVjaG8KIAkJJEVDSE8gIioqKiBXYXJuaW5nOiBUcnlpbmcgdG8gbGluayB3aXRoIHN0YXRpYyBsaWIgYXJjaGl2ZSAkZGVwbGliLiIKLQkJJEVDSE8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JCSRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCQkkRUNITyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgotCQkkRUNITyAiKioqIGJlY2F1c2UgdGhlIGZpbGUgZXh0ZW5zaW9ucyAuJGxpYmV4dCBvZiB0aGlzIGFyZ3VtZW50IG1ha2VzIG1lIGJlbGlldmUiCi0JCSRFQ0hPICIqKiogdGhhdCBpdCBpcyBqdXN0IGEgc3RhdGljIGFyY2hpdmUgdGhhdCBJIHNob3VsZCBub3QgdXNlIGhlcmUuIgorCQllY2hvICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgorCQllY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCQllY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCisJCWVjaG8gIioqKiBiZWNhdXNlIHRoZSBmaWxlIGV4dGVuc2lvbnMgLiRsaWJleHQgb2YgdGhpcyBhcmd1bWVudCBtYWtlcyBtZSBiZWxpZXZlIgorCQllY2hvICIqKiogdGhhdCBpdCBpcyBqdXN0IGEgc3RhdGljIGFyY2hpdmUgdGhhdCBJIHNob3VsZCBub3QgdXNlIGhlcmUuIgogCSAgICAgIGVsc2UKLQkJJEVDSE8KKwkJZWNobwogCQkkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIHNoYXJlZCBsaWJyYXJ5ICRvdXRwdXQgYWdhaW5zdCB0aGUiCiAJCSRFQ0hPICIqKiogc3RhdGljIGxpYnJhcnkgJGRlcGxpYiBpcyBub3QgcG9ydGFibGUhIgogCQlkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgpAQCAtNTI3MiwxMSArNjM1OSwxMSBAQAogCSAgICBpZiB0ZXN0ICIkcGFzcyIgPSBkbHByZW9wZW4gfHwgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiAhPSB5ZXMgfHwgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSBubzsgdGhlbgogCSAgICAgICMgSWYgdGhlcmUgaXMgbm8gZGxvcGVuIHN1cHBvcnQgb3Igd2UncmUgbGlua2luZyBzdGF0aWNhbGx5LAogCSAgICAgICMgd2UgbmVlZCB0byBwcmVsb2FkLgotCSAgICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkZXBsaWIiCisJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkZXBsaWIiCiAJICAgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCiAJICAgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKIAkgICAgZWxzZQotCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRkZXBsaWIiCisJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRkZXBsaWIiCiAJICAgIGZpCiAJICBmaQogCSAgY29udGludWUKQEAgLTUzMTgsMjAgKzY0MDUsMjAgQEAKIAogCSMgQ29udmVydCAiLWZyYW1ld29yayBmb28iIHRvICJmb28ubHRmcmFtZXdvcmsiCiAJaWYgdGVzdCAtbiAiJGluaGVyaXRlZF9saW5rZXJfZmxhZ3MiOyB0aGVuCi0JICB0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz1gJEVDSE8gIlgkaW5oZXJpdGVkX2xpbmtlcl9mbGFncyIgfCAkWHNlZCAtZSAncy8tZnJhbWV3b3JrIFwoW14gJF0qXCkvXDEubHRmcmFtZXdvcmsvZydgCisJICB0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz1gJEVDSE8gIiRpbmhlcml0ZWRfbGlua2VyX2ZsYWdzIiB8ICRTRUQgJ3MvLWZyYW1ld29yayBcKFteICRdKlwpL1wxLmx0ZnJhbWV3b3JrL2cnYAogCSAgZm9yIHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWcgaW4gJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWdzOyBkbwogCSAgICBjYXNlICIgJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KIAkgICAgICAqIiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyAiKikgOzsKLQkgICAgICAqKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIjs7CisJICAgICAgKikgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyI7OwogCSAgICBlc2FjCiAJICBkb25lCiAJZmkKLQlkZXBlbmRlbmN5X2xpYnM9YCRFQ0hPICJYICRkZXBlbmRlbmN5X2xpYnMiIHwgJFhzZWQgLWUgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJZGVwZW5kZW5jeV9saWJzPWAkRUNITyAiICRkZXBlbmRlbmN5X2xpYnMiIHwgJFNFRCAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKIAlpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gImxpYixsaW5rIiB8fAogCSAgIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxzY2FuIiB8fAogCSAgIHsgdGVzdCAiJGxpbmttb2RlIiAhPSBwcm9nICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliOyB9OyB0aGVuCi0JICB0ZXN0IC1uICIkZGxvcGVuIiAmJiBkbGZpbGVzPSIkZGxmaWxlcyAkZGxvcGVuIgotCSAgdGVzdCAtbiAiJGRscHJlb3BlbiIgJiYgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGRscHJlb3BlbiIKKwkgIHRlc3QgLW4gIiRkbG9wZW4iICYmIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkZGxvcGVuIgorCSAgdGVzdCAtbiAiJGRscHJlb3BlbiIgJiYgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRkbHByZW9wZW4iCiAJZmkKIAogCWlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KQEAgLTUzNDIsMjAgKzY0MjksMjAgQEAKIAkgICAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBuYW1lIG9mIGxpbmsgbGlicmFyeSBmb3IgXGAkbGliJyIKIAkgICAgZmkKIAkgICAgIyBJdCBpcyBhIGxpYnRvb2wgY29udmVuaWVuY2UgbGlicmFyeSwgc28gYWRkIGluIGl0cyBvYmplY3RzLgotCSAgICBjb252ZW5pZW5jZT0iJGNvbnZlbmllbmNlICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKLQkgICAgb2xkX2NvbnZlbmllbmNlPSIkb2xkX2NvbnZlbmllbmNlICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgZnVuY19hcHBlbmQgY29udmVuaWVuY2UgIiAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCisJICAgIGZ1bmNfYXBwZW5kIG9sZF9jb252ZW5pZW5jZSAiICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKIAkgIGVsaWYgdGVzdCAiJGxpbmttb2RlIiAhPSBwcm9nICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliOyB0aGVuCiAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgY29udmVuaWVuY2UgbGlicmFyeSIKIAkgIGZpCiAJICB0bXBfbGlicz0KIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KIAkgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKwkgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgotCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKwkgICAgICAqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7CiAJICAgICAgZXNhYwogCSAgICBmaQotCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCisJICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIKIAkgIGRvbmUKIAkgIGNvbnRpbnVlCiAJZmkgIyAkcGFzcyA9IGNvbnYKQEAgLTUzNjMsOSArNjQ1MCwxNSBAQAogCiAJIyBHZXQgdGhlIG5hbWUgb2YgdGhlIGxpYnJhcnkgd2UgbGluayBhZ2FpbnN0LgogCWxpbmtsaWI9Ci0JZm9yIGwgaW4gJG9sZF9saWJyYXJ5ICRsaWJyYXJ5X25hbWVzOyBkbwotCSAgbGlua2xpYj0iJGwiCi0JZG9uZQorCWlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYKKwkgICB7IHRlc3QgIiRwcmVmZXJfc3RhdGljX2xpYnMiID0geWVzIHx8CisJICAgICB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzLCRpbnN0YWxsZWQiID0gImJ1aWx0LG5vIjsgfTsgdGhlbgorCSAgbGlua2xpYj0kb2xkX2xpYnJhcnkKKwllbHNlCisJICBmb3IgbCBpbiAkb2xkX2xpYnJhcnkgJGxpYnJhcnlfbmFtZXM7IGRvCisJICAgIGxpbmtsaWI9IiRsIgorCSAgZG9uZQorCWZpCiAJaWYgdGVzdCAteiAiJGxpbmtsaWIiOyB0aGVuCiAJICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBuYW1lIG9mIGxpbmsgbGlicmFyeSBmb3IgXGAkbGliJyIKIAlmaQpAQCAtNTM4Miw5ICs2NDc1LDkgQEAKIAkgICAgIyBzdGF0aWNhbGx5LCB3ZSBuZWVkIHRvIHByZWxvYWQuICBXZSBhbHNvIG5lZWQgdG8gcHJlbG9hZCBhbnkKIAkgICAgIyBkZXBlbmRlbnQgbGlicmFyaWVzIHNvIGxpYmx0ZGwncyBkZXBsaWIgcHJlbG9hZGVyIGRvZXNuJ3QKIAkgICAgIyBib21iIG91dCBpbiB0aGUgbG9hZCBkZXBsaWJzIHBoYXNlLgotCSAgICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkbGliICRkZXBlbmRlbmN5X2xpYnMiCisJICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkbGliICRkZXBlbmRlbmN5X2xpYnMiCiAJICBlbHNlCi0JICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWIiCisJICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkbGliIgogCSAgZmkKIAkgIGNvbnRpbnVlCiAJZmkgIyAkcGFzcyA9IGRsb3BlbgpAQCAtNTQwNiwxNCArNjQ5OSwxNCBAQAogCiAJIyBGaW5kIHRoZSByZWxldmFudCBvYmplY3QgZGlyZWN0b3J5IGFuZCBsaWJyYXJ5IG5hbWUuCiAJaWYgdGVzdCAiWCRpbnN0YWxsZWQiID0gWHllczsgdGhlbgotCSAgaWYgdGVzdCAhIC1mICIkbGliZGlyLyRsaW5rbGliIiAmJiB0ZXN0IC1mICIkYWJzX2xhZGlyLyRsaW5rbGliIjsgdGhlbgorCSAgaWYgdGVzdCAhIC1mICIkbHRfc3lzcm9vdCRsaWJkaXIvJGxpbmtsaWIiICYmIHRlc3QgLWYgIiRhYnNfbGFkaXIvJGxpbmtsaWIiOyB0aGVuCiAJICAgIGZ1bmNfd2FybmluZyAibGlicmFyeSBcYCRsaWInIHdhcyBtb3ZlZC4iCiAJICAgIGRpcj0iJGxhZGlyIgogCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCiAJICAgIGxpYmRpcj0iJGFic19sYWRpciIKIAkgIGVsc2UKLQkgICAgZGlyPSIkbGliZGlyIgotCSAgICBhYnNkaXI9IiRsaWJkaXIiCisJICAgIGRpcj0iJGx0X3N5c3Jvb3QkbGliZGlyIgorCSAgICBhYnNkaXI9IiRsdF9zeXNyb290JGxpYmRpciIKIAkgIGZpCiAJICB0ZXN0ICJYJGhhcmRjb2RlX2F1dG9tYXRpYyIgPSBYeWVzICYmIGF2b2lkdGVtcHJwYXRoPXllcwogCWVsc2UKQEAgLTU0MjEsMTIgKzY1MTQsMTIgQEAKIAkgICAgZGlyPSIkbGFkaXIiCiAJICAgIGFic2Rpcj0iJGFic19sYWRpciIKIAkgICAgIyBSZW1vdmUgdGhpcyBzZWFyY2ggcGF0aCBsYXRlcgotCSAgICBub3RpbnN0X3BhdGg9IiRub3RpbnN0X3BhdGggJGFic19sYWRpciIKKwkgICAgZnVuY19hcHBlbmQgbm90aW5zdF9wYXRoICIgJGFic19sYWRpciIKIAkgIGVsc2UKIAkgICAgZGlyPSIkbGFkaXIvJG9iamRpciIKIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyLyRvYmpkaXIiCiAJICAgICMgUmVtb3ZlIHRoaXMgc2VhcmNoIHBhdGggbGF0ZXIKLQkgICAgbm90aW5zdF9wYXRoPSIkbm90aW5zdF9wYXRoICRhYnNfbGFkaXIiCisJICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfcGF0aCAiICRhYnNfbGFkaXIiCiAJICBmaQogCWZpICMgJGluc3RhbGxlZCA9IHllcwogCWZ1bmNfc3RyaXBuYW1lICdsaWInICcubGEnICIkbGFuYW1lIgpAQCAtNTQzNywyMCArNjUzMCw0NiBAQAogCSAgaWYgdGVzdCAteiAiJGxpYmRpciIgJiYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2c7IHRoZW4KIAkgICAgZnVuY19mYXRhbF9lcnJvciAib25seSBsaWJyYXJpZXMgbWF5IC1kbHByZW9wZW4gYSBjb252ZW5pZW5jZSBsaWJyYXJ5OiBcYCRsaWInIgogCSAgZmkKLQkgICMgUHJlZmVyIHVzaW5nIGEgc3RhdGljIGxpYnJhcnkgKHNvIHRoYXQgbm8gc2lsbHkgX0RZTkFNSUMgc3ltYm9scwotCSAgIyBhcmUgcmVxdWlyZWQgdG8gbGluaykuCi0JICBpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiOyB0aGVuCi0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJG9sZF9saWJyYXJ5IgotCSAgICAjIEtlZXAgYSBsaXN0IG9mIHByZW9wZW5lZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgdG8gY2hlY2sKLQkgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCi0JICAgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKLQkJZGxwcmVjb252ZW5pZW5jZWxpYnM9IiRkbHByZWNvbnZlbmllbmNlbGlicyAkZGlyLyRvbGRfbGlicmFyeSIKLQkgICMgT3RoZXJ3aXNlLCB1c2UgdGhlIGRsbmFtZSwgc28gdGhhdCBsdF9kbG9wZW4gZmluZHMgaXQuCi0JICBlbGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCi0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJGRsbmFtZSIKLQkgIGVsc2UKLQkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kbGlua2xpYiIKLQkgIGZpCisJICBjYXNlICIkaG9zdCIgaW4KKwkgICAgIyBzcGVjaWFsIGhhbmRsaW5nIGZvciBwbGF0Zm9ybXMgd2l0aCBQRS1ETExzLgorCSAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKKwkgICAgICAjIExpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgbGluayBhZ2FpbnN0IHNoYXJlZCBsaWJyYXJ5IGlmIGJvdGgKKwkgICAgICAjIHN0YXRpYyBhbmQgc2hhcmVkIGFyZSBwcmVzZW50LiAgVGhlcmVmb3JlLCBlbnN1cmUgd2UgZXh0cmFjdAorCSAgICAgICMgc3ltYm9scyBmcm9tIHRoZSBpbXBvcnQgbGlicmFyeSBpZiBhIHNoYXJlZCBsaWJyYXJ5IGlzIHByZXNlbnQKKwkgICAgICAjIChvdGhlcndpc2UsIHRoZSBkbG9wZW4gbW9kdWxlIG5hbWUgd2lsbCBiZSBpbmNvcnJlY3QpLiAgV2UgZG8KKwkgICAgICAjIHRoaXMgYnkgcHV0dGluZyB0aGUgaW1wb3J0IGxpYnJhcnkgbmFtZSBpbnRvICRuZXdkbHByZWZpbGVzLgorCSAgICAgICMgV2UgcmVjb3ZlciB0aGUgZGxvcGVuIG1vZHVsZSBuYW1lIGJ5ICdzYXZpbmcnIHRoZSBsYSBmaWxlCisJICAgICAgIyBuYW1lIGluIGEgc3BlY2lhbCBwdXJwb3NlIHZhcmlhYmxlLCBhbmQgKGxhdGVyKSBleHRyYWN0aW5nIHRoZQorCSAgICAgICMgZGxuYW1lIGZyb20gdGhlIGxhIGZpbGUuCisJICAgICAgaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KKwkgICAgICAgIGZ1bmNfdHJfc2ggIiRkaXIvJGxpbmtsaWIiCisJICAgICAgICBldmFsICJsaWJmaWxlXyRmdW5jX3RyX3NoX3Jlc3VsdD1cJGFic19sYWRpci9cJGxhbmFtZSIKKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRsaW5rbGliIgorCSAgICAgIGVsc2UKKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjaworCSAgICAgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCisJICAgICAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisJICAgICAgICAgIGZ1bmNfYXBwZW5kIGRscHJlY29udmVuaWVuY2VsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCisJICAgICAgZmkKKwkgICAgOzsKKwkgICAgKiApCisJICAgICAgIyBQcmVmZXIgdXNpbmcgYSBzdGF0aWMgbGlicmFyeSAoc28gdGhhdCBubyBzaWxseSBfRFlOQU1JQyBzeW1ib2xzCisJICAgICAgIyBhcmUgcmVxdWlyZWQgdG8gbGluaykuCisJICAgICAgaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IjsgdGhlbgorCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJG9sZF9saWJyYXJ5IgorCSAgICAgICAgIyBLZWVwIGEgbGlzdCBvZiBwcmVvcGVuZWQgY29udmVuaWVuY2UgbGlicmFyaWVzIHRvIGNoZWNrCisJICAgICAgICAjIHRoYXQgdGhleSBhcmUgYmVpbmcgdXNlZCBjb3JyZWN0bHkgaW4gdGhlIGxpbmsgcGFzcy4KKwkgICAgICAgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKKwkgICAgICAgICAgZnVuY19hcHBlbmQgZGxwcmVjb252ZW5pZW5jZWxpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgICAjIE90aGVyd2lzZSwgdXNlIHRoZSBkbG5hbWUsIHNvIHRoYXQgbHRfZGxvcGVuIGZpbmRzIGl0LgorCSAgICAgIGVsaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRkbG5hbWUiCisJICAgICAgZWxzZQorCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJGxpbmtsaWIiCisJICAgICAgZmkKKwkgICAgOzsKKwkgIGVzYWMKIAlmaSAjICRwYXNzID0gZGxwcmVvcGVuCiAKIAlpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgpAQCAtNTQ2OCw3ICs2NTg3LDcgQEAKIAogCiAJaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgJiYgdGVzdCAiJHBhc3MiICE9IGxpbms7IHRoZW4KLQkgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkbGFkaXIiCisJICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkbGFkaXIiCiAJICBkZXBsaWJzPSIkbGliICRkZXBsaWJzIgogCiAJICBsaW5rYWxsZGVwbGlicz1ubwpAQCAtNTQ4MSw3ICs2NjAwLDggQEAKIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KIAkgICAgY2FzZSAkZGVwbGliIGluCiAJICAgIC1MKikgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKLQkgICAgICAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkgICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkgICAgICAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCQkgOzsKIAkgICAgZXNhYwogCSAgICAjIE5lZWQgdG8gbGluayBhZ2FpbnN0IGFsbCBkZXBlbmRlbmN5X2xpYnM/CkBAIC01NDkyLDEyICs2NjEyLDEyIEBACiAJICAgICAgIyBvci9hbmQgbGluayBhZ2FpbnN0IHN0YXRpYyBsaWJyYXJpZXMKIAkgICAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKIAkgICAgZmkKLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKwkgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgotCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKwkgICAgICAqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7CiAJICAgICAgZXNhYwogCSAgICBmaQotCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCisJICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIKIAkgIGRvbmUgIyBmb3IgZGVwbGliCiAJICBjb250aW51ZQogCWZpICMgJGxpbmttb2RlID0gcHJvZy4uLgpAQCAtNTUxMiw3ICs2NjMyLDcgQEAKIAkgICAgICAjIE1ha2Ugc3VyZSB0aGUgcnBhdGggY29udGFpbnMgb25seSB1bmlxdWUgZGlyZWN0b3JpZXMuCiAJICAgICAgY2FzZSAiJHRlbXBfcnBhdGg6IiBpbgogCSAgICAgICoiJGFic2RpcjoiKikgOzsKLQkgICAgICAqKSB0ZW1wX3JwYXRoPSIkdGVtcF9ycGF0aCRhYnNkaXI6IiA7OworCSAgICAgICopIGZ1bmNfYXBwZW5kIHRlbXBfcnBhdGggIiRhYnNkaXI6IiA7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKIApAQCAtNTUyNCw3ICs2NjQ0LDcgQEAKIAkgICAgKikKIAkgICAgICBjYXNlICIkY29tcGlsZV9ycGF0aCAiIGluCiAJICAgICAgKiIgJGFic2RpciAiKikgOzsKLQkgICAgICAqKSBjb21waWxlX3JwYXRoPSIkY29tcGlsZV9ycGF0aCAkYWJzZGlyIgorCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfcnBhdGggIiAkYWJzZGlyIiA7OwogCSAgICAgIGVzYWMKIAkgICAgICA7OwogCSAgICBlc2FjCkBAIC01NTMzLDcgKzY2NTMsNyBAQAogCSAgICAqKQogCSAgICAgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCiAJICAgICAgKiIgJGxpYmRpciAiKikgOzsKLQkgICAgICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiCisJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OwogCSAgICAgIGVzYWMKIAkgICAgICA7OwogCSAgICBlc2FjCkBAIC01NTU4LDEyICs2Njc4LDEyIEBACiAJICBjYXNlICRob3N0IGluCiAJICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqKQogCSAgICAgICMgTm8gcG9pbnQgaW4gcmVsaW5raW5nIERMTHMgYmVjYXVzZSBwYXRocyBhcmUgbm90IGVuY29kZWQKLQkgICAgICBub3RpbnN0X2RlcGxpYnM9IiRub3RpbnN0X2RlcGxpYnMgJGxpYiIKKwkgICAgICBmdW5jX2FwcGVuZCBub3RpbnN0X2RlcGxpYnMgIiAkbGliIgogCSAgICAgIG5lZWRfcmVsaW5rPW5vCiAJICAgIDs7CiAJICAqKQogCSAgICBpZiB0ZXN0ICIkaW5zdGFsbGVkIiA9IG5vOyB0aGVuCi0JICAgICAgbm90aW5zdF9kZXBsaWJzPSIkbm90aW5zdF9kZXBsaWJzICRsaWIiCisJICAgICAgZnVuY19hcHBlbmQgbm90aW5zdF9kZXBsaWJzICIgJGxpYiIKIAkgICAgICBuZWVkX3JlbGluaz15ZXMKIAkgICAgZmkKIAkgICAgOzsKQEAgLTU1ODAsNyArNjcwMCw3IEBACiAJICAgIGZpCiAJICBkb25lCiAJICBpZiB0ZXN0IC16ICIkZGxvcGVubW9kdWxlIiAmJiB0ZXN0ICIkc2hvdWxkbm90bGluayIgPSB5ZXMgJiYgdGVzdCAiJHBhc3MiID0gbGluazsgdGhlbgotCSAgICAkRUNITworCSAgICBlY2hvCiAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCiAJICAgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBleGVjdXRhYmxlICRvdXRwdXQgYWdhaW5zdCB0aGUgbG9hZGFibGUgbW9kdWxlIgogCSAgICBlbHNlCkBAIC01NTk4LDcgKzY3MTgsNyBAQAogCSAgICAqKQogCSAgICAgIGNhc2UgIiRjb21waWxlX3JwYXRoICIgaW4KIAkgICAgICAqIiAkYWJzZGlyICIqKSA7OwotCSAgICAgICopIGNvbXBpbGVfcnBhdGg9IiRjb21waWxlX3JwYXRoICRhYnNkaXIiCisJICAgICAgKikgZnVuY19hcHBlbmQgY29tcGlsZV9ycGF0aCAiICRhYnNkaXIiIDs7CiAJICAgICAgZXNhYwogCSAgICAgIDs7CiAJICAgIGVzYWMKQEAgLTU2MDcsNyArNjcyNyw3IEBACiAJICAgICopCiAJICAgICAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KIAkgICAgICAqIiAkbGliZGlyICIqKSA7OwotCSAgICAgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7CiAJICAgICAgZXNhYwogCSAgICAgIDs7CiAJICAgIGVzYWMKQEAgLTU2NjEsNyArNjc4MSw3IEBACiAJICAgIGxpbmtsaWI9JG5ld2xpYgogCSAgZmkgIyB0ZXN0IC1uICIkb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHMiCiAKLQkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRtb2RlIiAhPSByZWxpbms7IHRoZW4KKwkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rOyB0aGVuCiAJICAgIGFkZF9zaGxpYnBhdGg9CiAJICAgIGFkZF9kaXI9CiAJICAgIGFkZD0KQEAgLTU2ODMsOSArNjgwMyw5IEBACiAJCSAgICAgIGlmIHRlc3QgIlgkZGxvcGVubW9kdWxlIiAhPSAiWCRsaWIiOyB0aGVuCiAJCQkkRUNITyAiKioqIFdhcm5pbmc6IGxpYiAkbGlua2xpYiBpcyBhIG1vZHVsZSwgbm90IGEgc2hhcmVkIGxpYnJhcnkiCiAJCQlpZiB0ZXN0IC16ICIkb2xkX2xpYnJhcnkiIDsgdGhlbgotCQkJICAkRUNITwotCQkJICAkRUNITyAiKioqIEFuZCB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYSBzdGF0aWMgYXJjaGl2ZSBhdmFpbGFibGUiCi0JCQkgICRFQ0hPICIqKiogVGhlIGxpbmsgd2lsbCBwcm9iYWJseSBmYWlsLCBzb3JyeSIKKwkJCSAgZWNobworCQkJICBlY2hvICIqKiogQW5kIHRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZSBhIHN0YXRpYyBhcmNoaXZlIGF2YWlsYWJsZSIKKwkJCSAgZWNobyAiKioqIFRoZSBsaW5rIHdpbGwgcHJvYmFibHkgZmFpbCwgc29ycnkiCiAJCQllbHNlCiAJCQkgIGFkZD0iJGRpci8kb2xkX2xpYnJhcnkiCiAJCQlmaQpAQCAtNTcxNyw3ICs2ODM3LDcgQEAKIAkJaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KIAkJICBjYXNlICRsaWJkaXIgaW4KIAkJICAgIFtcXC9dKikKLQkJICAgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKwkJICAgICAgZnVuY19hcHBlbmQgYWRkX2RpciAiIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCiAJCSAgICAgIDs7CiAJCSAgZXNhYwogCQlmaQpAQCAtNTczOSw3ICs2ODU5LDcgQEAKIAkgICAgaWYgdGVzdCAtbiAiJGFkZF9zaGxpYnBhdGgiOyB0aGVuCiAJICAgICAgY2FzZSA6JGNvbXBpbGVfc2hsaWJwYXRoOiBpbgogCSAgICAgICoiOiRhZGRfc2hsaWJwYXRoOiIqKSA7OwotCSAgICAgICopIGNvbXBpbGVfc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkYWRkX3NobGlicGF0aDoiIDs7CisJICAgICAgKikgZnVuY19hcHBlbmQgY29tcGlsZV9zaGxpYnBhdGggIiRhZGRfc2hsaWJwYXRoOiIgOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCiAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCkBAIC01NzUzLDEzICs2ODczLDEzIEBACiAJCSB0ZXN0ICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgPSB5ZXM7IHRoZW4KIAkJY2FzZSA6JGZpbmFsaXplX3NobGlicGF0aDogaW4KIAkJKiI6JGxpYmRpcjoiKikgOzsKLQkJKikgZmluYWxpemVfc2hsaWJwYXRoPSIkZmluYWxpemVfc2hsaWJwYXRoJGxpYmRpcjoiIDs7CisJCSopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3NobGlicGF0aCAiJGxpYmRpcjoiIDs7CiAJCWVzYWMKIAkgICAgICBmaQogCSAgICBmaQogCSAgZmkKIAotCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCisJICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCiAJICAgIGFkZF9zaGxpYnBhdGg9CiAJICAgIGFkZF9kaXI9CiAJICAgIGFkZD0KQEAgLTU3NzMsNyArNjg5Myw3IEBACiAJICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiID0geWVzOyB0aGVuCiAJICAgICAgY2FzZSA6JGZpbmFsaXplX3NobGlicGF0aDogaW4KIAkgICAgICAqIjokbGliZGlyOiIqKSA7OwotCSAgICAgICopIGZpbmFsaXplX3NobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCRsaWJkaXI6IiA7OworCSAgICAgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3NobGlicGF0aCAiJGxpYmRpcjoiIDs7CiAJICAgICAgZXNhYwogCSAgICAgIGFkZD0iLWwkbmFtZSIKIAkgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfYXV0b21hdGljIiA9IHllczsgdGhlbgpAQCAtNTc5MCw3ICs2OTEwLDcgQEAKIAkgICAgICBpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgogCQljYXNlICRsaWJkaXIgaW4KIAkJICBbXFwvXSopCi0JCSAgICBhZGRfZGlyPSIkYWRkX2RpciAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgorCQkgICAgZnVuY19hcHBlbmQgYWRkX2RpciAiIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCiAJCSAgICA7OwogCQllc2FjCiAJICAgICAgZmkKQEAgLTU4MjUsMjEgKzY5NDUsMjEgQEAKIAogCSAgICAjIEp1c3QgcHJpbnQgYSB3YXJuaW5nIGFuZCBhZGQgdGhlIGxpYnJhcnkgdG8gZGVwZW5kZW5jeV9saWJzIHNvCiAJICAgICMgdGhhdCB0aGUgcHJvZ3JhbSBjYW4gYmUgbGlua2VkIGFnYWluc3QgdGhlIHN0YXRpYyBsaWJyYXJ5LgotCSAgICAkRUNITworCSAgICBlY2hvCiAJICAgICRFQ0hPICIqKiogV2FybmluZzogVGhpcyBzeXN0ZW0gY2FuIG5vdCBsaW5rIHRvIHN0YXRpYyBsaWIgYXJjaGl2ZSAkbGliLiIKLQkgICAgJEVDSE8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JICAgICRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCSAgICAkRUNITyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlLiIKKwkgICAgZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkgICAgZWNobyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKKwkgICAgZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlLiIKIAkgICAgaWYgdGVzdCAiJG1vZHVsZSIgPSB5ZXM7IHRoZW4KLQkgICAgICAkRUNITyAiKioqIEJ1dCBhcyB5b3UgdHJ5IHRvIGJ1aWxkIGEgbW9kdWxlIGxpYnJhcnksIGxpYnRvb2wgd2lsbCBzdGlsbCBjcmVhdGUgIgotCSAgICAgICRFQ0hPICIqKiogYSBzdGF0aWMgbW9kdWxlLCB0aGF0IHNob3VsZCB3b3JrIGFzIGxvbmcgYXMgdGhlIGRsb3BlbmluZyBhcHBsaWNhdGlvbiIKLQkgICAgICAkRUNITyAiKioqIGlzIGxpbmtlZCB3aXRoIHRoZSAtZGxvcGVuIGZsYWcgdG8gcmVzb2x2ZSBzeW1ib2xzIGF0IHJ1bnRpbWUuIgorCSAgICAgIGVjaG8gIioqKiBCdXQgYXMgeW91IHRyeSB0byBidWlsZCBhIG1vZHVsZSBsaWJyYXJ5LCBsaWJ0b29sIHdpbGwgc3RpbGwgY3JlYXRlICIKKwkgICAgICBlY2hvICIqKiogYSBzdGF0aWMgbW9kdWxlLCB0aGF0IHNob3VsZCB3b3JrIGFzIGxvbmcgYXMgdGhlIGRsb3BlbmluZyBhcHBsaWNhdGlvbiIKKwkgICAgICBlY2hvICIqKiogaXMgbGlua2VkIHdpdGggdGhlIC1kbG9wZW4gZmxhZyB0byByZXNvbHZlIHN5bWJvbHMgYXQgcnVudGltZS4iCiAJICAgICAgaWYgdGVzdCAteiAiJGdsb2JhbF9zeW1ib2xfcGlwZSI7IHRoZW4KLQkJJEVDSE8KLQkJJEVDSE8gIioqKiBIb3dldmVyLCB0aGlzIHdvdWxkIG9ubHkgd29yayBpZiBsaWJ0b29sIHdhcyBhYmxlIHRvIGV4dHJhY3Qgc3ltYm9sIgotCQkkRUNITyAiKioqIGxpc3RzIGZyb20gYSBwcm9ncmFtLCB1c2luZyBcYG5tJyBvciBlcXVpdmFsZW50LCBidXQgbGlidG9vbCBjb3VsZCIKLQkJJEVDSE8gIioqKiBub3QgZmluZCBzdWNoIGEgcHJvZ3JhbS4gIFNvLCB0aGlzIG1vZHVsZSBpcyBwcm9iYWJseSB1c2VsZXNzLiIKLQkJJEVDSE8gIioqKiBcYG5tJyBmcm9tIEdOVSBiaW51dGlscyBhbmQgYSBmdWxsIHJlYnVpbGQgbWF5IGhlbHAuIgorCQllY2hvCisJCWVjaG8gIioqKiBIb3dldmVyLCB0aGlzIHdvdWxkIG9ubHkgd29yayBpZiBsaWJ0b29sIHdhcyBhYmxlIHRvIGV4dHJhY3Qgc3ltYm9sIgorCQllY2hvICIqKiogbGlzdHMgZnJvbSBhIHByb2dyYW0sIHVzaW5nIFxgbm0nIG9yIGVxdWl2YWxlbnQsIGJ1dCBsaWJ0b29sIGNvdWxkIgorCQllY2hvICIqKiogbm90IGZpbmQgc3VjaCBhIHByb2dyYW0uICBTbywgdGhpcyBtb2R1bGUgaXMgcHJvYmFibHkgdXNlbGVzcy4iCisJCWVjaG8gIioqKiBcYG5tJyBmcm9tIEdOVSBiaW51dGlscyBhbmQgYSBmdWxsIHJlYnVpbGQgbWF5IGhlbHAuIgogCSAgICAgIGZpCiAJICAgICAgaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IG5vOyB0aGVuCiAJCWJ1aWxkX2xpYnRvb2xfbGlicz1tb2R1bGUKQEAgLTU4NjcsMzcgKzY5ODcsNDYgQEAKIAkgICAgICAgICAgIHRlbXBfeHJwYXRoPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAkJICAgY2FzZSAiICR4cnBhdGggIiBpbgogCQkgICAqIiAkdGVtcF94cnBhdGggIiopIDs7Ci0JCSAgICopIHhycGF0aD0iJHhycGF0aCAkdGVtcF94cnBhdGgiOzsKKwkJICAgKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJHRlbXBfeHJwYXRoIjs7CiAJCSAgIGVzYWM7OwotCSAgICAgICopIHRlbXBfZGVwbGlicz0iJHRlbXBfZGVwbGlicyAkbGliZGlyIjs7CisJICAgICAgKikgZnVuY19hcHBlbmQgdGVtcF9kZXBsaWJzICIgJGxpYmRpciI7OwogCSAgICAgIGVzYWMKIAkgICAgZG9uZQogCSAgICBkZXBlbmRlbmN5X2xpYnM9IiR0ZW1wX2RlcGxpYnMiCiAJICBmaQogCi0JICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGFic2RpciIKKwkgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRhYnNkaXIiCiAJICAjIExpbmsgYWdhaW5zdCB0aGlzIGxpYnJhcnkKIAkgIHRlc3QgIiRsaW5rX3N0YXRpYyIgPSBubyAmJiBuZXdkZXBlbmRlbmN5X2xpYnM9IiRhYnNfbGFkaXIvJGxhbmFtZSAkbmV3ZGVwZW5kZW5jeV9saWJzIgogCSAgIyAuLi4gYW5kIGl0cyBkZXBlbmRlbmN5X2xpYnMKIAkgIHRtcF9saWJzPQogCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwogCSAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKwkgICAgY2FzZSAkZGVwbGliIGluCisgICAgICAgICAgICAgIC1MKikgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKKyAgICAgICAgICAgICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCI7OworICAgICAgICAgICAgICAqKSBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIgOzsKKyAgICAgICAgICAgIGVzYWMKKwkgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgotCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKwkgICAgICAqIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0ICIqKQorICAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIgOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCi0JICAgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIKKwkgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCSAgZG9uZQogCiAJICBpZiB0ZXN0ICIkbGlua19hbGxfZGVwbGlicyIgIT0gbm87IHRoZW4KIAkgICAgIyBBZGQgdGhlIHNlYXJjaCBwYXRocyBvZiBhbGwgZGVwZW5kZW5jeSBsaWJyYXJpZXMKIAkgICAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbworCSAgICAgIHBhdGg9CiAJICAgICAgY2FzZSAkZGVwbGliIGluCiAJICAgICAgLUwqKSBwYXRoPSIkZGVwbGliIiA7OwogCSAgICAgICoubGEpCisJICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIKKwkgICAgICAgIGRlcGxpYj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CiAJICAgICAgICBmdW5jX2Rpcm5hbWUgIiRkZXBsaWIiICIiICIuIgotCQlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorCQlkaXI9JGZ1bmNfZGlybmFtZV9yZXN1bHQKIAkJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCiAJCWNhc2UgJGRpciBpbgogCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIGFic2Rpcj0iJGRpciIgOzsKQEAgLTU5MjQsOCArNzA1Myw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGRhcndpbl9pbnN0YWxsX25hbWUiOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhcndpbl9pbnN0YWxsX25hbWU9YCR7T1RPT0w2NH0gLUwgJGRlcGRlcGwgIHwgYXdrICd7aWYgKE5SID09IDIpIHtwcmludCAkMTtleGl0fX0nYAogICAgICAgICAgICAgICAgICAgICAgIGZpCi0JCSAgICAgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHt3bH0tZHlsaWJfZmlsZSAke3dsfSR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKLQkJICAgICAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzIC1keWxpYl9maWxlICR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKKwkJICAgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAke3dsfS1keWxpYl9maWxlICR7d2x9JHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgorCQkgICAgICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAtZHlsaWJfZmlsZSAke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCiAJCSAgICAgIHBhdGg9CiAJCSAgICBmaQogCQkgIGZpCkBAIC01OTU4LDcgKzcwODcsNyBAQAogCSAgY29tcGlsZV9kZXBsaWJzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGNvbXBpbGVfZGVwbGlicyIKIAkgIGZpbmFsaXplX2RlcGxpYnM9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkZmluYWxpemVfZGVwbGlicyIKIAllbHNlCi0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICJgJEVDSE8gIlggJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAiYCRFQ0hPICIgJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzIiB8ICRTRUQgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCiAJZmkKICAgICAgIGZpCiAgICAgICBkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMiCkBAIC01OTc1LDcgKzcxMDQsNyBAQAogCSAgZm9yIGRpciBpbiAkbmV3bGliX3NlYXJjaF9wYXRoOyBkbwogCSAgICBjYXNlICIkbGliX3NlYXJjaF9wYXRoICIgaW4KIAkgICAgKiIgJGRpciAiKikgOzsKLQkgICAgKikgbGliX3NlYXJjaF9wYXRoPSIkbGliX3NlYXJjaF9wYXRoICRkaXIiIDs7CisJICAgICopIGZ1bmNfYXBwZW5kIGxpYl9zZWFyY2hfcGF0aCAiICRkaXIiIDs7CiAJICAgIGVzYWMKIAkgIGRvbmUKIAkgIG5ld2xpYl9zZWFyY2hfcGF0aD0KQEAgLTYwMzMsMTAgKzcxNjIsMTAgQEAKIAkgICAgLUwqKQogCSAgICAgIGNhc2UgIiAkdG1wX2xpYnMgIiBpbgogCSAgICAgICoiICRkZXBsaWIgIiopIDs7Ci0JICAgICAgKikgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIiA7OworCSAgICAgICopIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIgOzsKIAkgICAgICBlc2FjCiAJICAgICAgOzsKLQkgICAgKikgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIiA7OworCSAgICAqKSBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiIDs7CiAJICAgIGVzYWMKIAkgIGRvbmUKIAkgIGV2YWwgJHZhcj1cIiR0bXBfbGlic1wiCkBAIC02MDUyLDcgKzcxODEsNyBAQAogCSAgOzsKIAllc2FjCiAJaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgotCSAgdG1wX2xpYnM9IiR0bXBfbGlicyAkaSIKKwkgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGkiCiAJZmkKICAgICAgIGRvbmUKICAgICAgIGRlcGVuZGVuY3lfbGlicz0kdG1wX2xpYnMKQEAgLTYwOTMsNyArNzIyMiw3IEBACiAgICAgICAjIE5vdyBzZXQgdGhlIHZhcmlhYmxlcyBmb3IgYnVpbGRpbmcgb2xkIGxpYnJhcmllcy4KICAgICAgIGJ1aWxkX2xpYnRvb2xfbGlicz1ubwogICAgICAgb2xkbGlicz0iJG91dHB1dCIKLSAgICAgIG9ianM9IiRvYmpzJG9sZF9kZXBsaWJzIgorICAgICAgZnVuY19hcHBlbmQgb2JqcyAiJG9sZF9kZXBsaWJzIgogICAgICAgOzsKIAogICAgIGxpYikKQEAgLTYxMjYsMTAgKzcyNTUsMTAgQEAKIAlpZiB0ZXN0ICIkZGVwbGlic19jaGVja19tZXRob2QiICE9IHBhc3NfYWxsOyB0aGVuCiAJICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgYnVpbGQgbGlidG9vbCBsaWJyYXJ5IFxgJG91dHB1dCcgZnJvbSBub24tbGlidG9vbCBvYmplY3RzIG9uIHRoaXMgaG9zdDokb2JqcyIKIAllbHNlCi0JICAkRUNITworCSAgZWNobwogCSAgJEVDSE8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBzaGFyZWQgbGlicmFyeSAkb3V0cHV0IGFnYWluc3QgdGhlIG5vbi1saWJ0b29sIgogCSAgJEVDSE8gIioqKiBvYmplY3RzICRvYmpzIGlzIG5vdCBwb3J0YWJsZSEiCi0JICBsaWJvYmpzPSIkbGlib2JqcyAkb2JqcyIKKwkgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkb2JqcyIKIAlmaQogICAgICAgZmkKIApAQCAtNjE5NCw3ICs3MzIzLDcgQEAKIAkgICAgYWdlPSIkbnVtYmVyX21pbm9yIgogCSAgICByZXZpc2lvbj0iJG51bWJlcl9yZXZpc2lvbiIKIAkgICAgOzsKLQkgIGZyZWVic2QtYW91dHxmcmVlYnNkLWVsZnxzdW5vcykKKwkgIGZyZWVic2QtYW91dHxmcmVlYnNkLWVsZnxxbnh8c3Vub3MpCiAJICAgIGN1cnJlbnQ9IiRudW1iZXJfbWFqb3IiCiAJICAgIHJldmlzaW9uPSIkbnVtYmVyX21pbm9yIgogCSAgICBhZ2U9IjAiCkBAIC02MzI3LDcgKzc0NTYsNyBAQAogCSAgZG9uZQogCiAJICAjIE1ha2UgZXhlY3V0YWJsZXMgZGVwZW5kIG9uIG91ciBjdXJyZW50IHZlcnNpb24uCi0JICB2ZXJzdHJpbmc9IiR2ZXJzdHJpbmc6JHtjdXJyZW50fS4wIgorCSAgZnVuY19hcHBlbmQgdmVyc3RyaW5nICI6JHtjdXJyZW50fS4wIgogCSAgOzsKIAogCXFueCkKQEAgLTYzOTUsMTAgKzc1MjQsMTAgQEAKICAgICAgIGZpCiAKICAgICAgIGZ1bmNfZ2VuZXJhdGVfZGxzeW1zICIkbGlibmFtZSIgIiRsaWJuYW1lIiAieWVzIgotICAgICAgbGlib2Jqcz0iJGxpYm9ianMgJHN5bWZpbGVvYmoiCisgICAgICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJHN5bWZpbGVvYmoiCiAgICAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQogCi0gICAgICBpZiB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rOyB0aGVuCisgICAgICBpZiB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluazsgdGhlbgogCSMgUmVtb3ZlIG91ciBvdXRwdXRzLCBidXQgZG9uJ3QgcmVtb3ZlIG9iamVjdCBmaWxlcyBzaW5jZSB0aGV5CiAJIyBtYXkgaGF2ZSBiZWVuIGNyZWF0ZWQgd2hlbiBjb21waWxpbmcgUElDIG9iamVjdHMuCiAJcmVtb3ZlbGlzdD0KQEAgLTY0MTQsNyArNzU0Myw3IEBACiAJCSAgIGNvbnRpbnVlCiAJCSBmaQogCSAgICAgICBmaQotCSAgICAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkcCIKKwkgICAgICAgZnVuY19hcHBlbmQgcmVtb3ZlbGlzdCAiICRwIgogCSAgICAgICA7OwogCSAgICAqKSA7OwogCSAgZXNhYwpAQCAtNjQyNSwyNyArNzU1NCwyOCBAQAogCiAgICAgICAjIE5vdyBzZXQgdGhlIHZhcmlhYmxlcyBmb3IgYnVpbGRpbmcgb2xkIGxpYnJhcmllcy4KICAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0gY29udmVuaWVuY2UgOyB0aGVuCi0Jb2xkbGlicz0iJG9sZGxpYnMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKKwlmdW5jX2FwcGVuZCBvbGRsaWJzICIgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKIAogCSMgVHJhbnNmb3JtIC5sbyBmaWxlcyB0byAubyBmaWxlcy4KLQlvbGRvYmpzPSIkb2JqcyAiYCRFQ0hPICJYJGxpYm9ianMiIHwgJFNQMk5MIHwgJFhzZWQgLWUgJy9cLicke2xpYmV4dH0nJC9kJyAtZSAiJGxvMm8iIHwgJE5MMlNQYAorCW9sZG9ianM9IiRvYmpzICJgJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIi9cLiR7bGliZXh0fSQvZDsgJGxvMm8iIHwgJE5MMlNQYAogICAgICAgZmkKIAogICAgICAgIyBFbGltaW5hdGUgYWxsIHRlbXBvcmFyeSBkaXJlY3Rvcmllcy4KICAgICAgICNmb3IgcGF0aCBpbiAkbm90aW5zdF9wYXRoOyBkbwotICAgICAgIwlsaWJfc2VhcmNoX3BhdGg9YCRFQ0hPICJYJGxpYl9zZWFyY2hfcGF0aCAiIHwgJFhzZWQgLWUgInMlICRwYXRoICUgJWciYAotICAgICAgIwlkZXBsaWJzPWAkRUNITyAiWCRkZXBsaWJzICIgfCAkWHNlZCAtZSAicyUgLUwkcGF0aCAlICVnImAKLSAgICAgICMJZGVwZW5kZW5jeV9saWJzPWAkRUNITyAiWCRkZXBlbmRlbmN5X2xpYnMgIiB8ICRYc2VkIC1lICJzJSAtTCRwYXRoICUgJWciYAorICAgICAgIwlsaWJfc2VhcmNoX3BhdGg9YCRFQ0hPICIkbGliX3NlYXJjaF9wYXRoICIgfCAkU0VEICJzJSAkcGF0aCAlICVnImAKKyAgICAgICMJZGVwbGlicz1gJEVDSE8gIiRkZXBsaWJzICIgfCAkU0VEICJzJSAtTCRwYXRoICUgJWciYAorICAgICAgIwlkZXBlbmRlbmN5X2xpYnM9YCRFQ0hPICIkZGVwZW5kZW5jeV9saWJzICIgfCAkU0VEICJzJSAtTCRwYXRoICUgJWciYAogICAgICAgI2RvbmUKIAogICAgICAgaWYgdGVzdCAtbiAiJHhycGF0aCI7IHRoZW4KIAkjIElmIHRoZSB1c2VyIHNwZWNpZmllZCBhbnkgcnBhdGggZmxhZ3MsIHRoZW4gYWRkIHRoZW0uCiAJdGVtcF94cnBhdGg9CiAJZm9yIGxpYmRpciBpbiAkeHJwYXRoOyBkbwotCSAgdGVtcF94cnBhdGg9IiR0ZW1wX3hycGF0aCAtUiRsaWJkaXIiCisJICBmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKKwkgIGZ1bmNfYXBwZW5kIHRlbXBfeHJwYXRoICIgLVIkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgogCSAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KIAkgICoiICRsaWJkaXIgIiopIDs7Ci0JICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiIDs7CisJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7CiAJICBlc2FjCiAJZG9uZQogCWlmIHRlc3QgIiRoYXJkY29kZV9pbnRvX2xpYnMiICE9IHllcyB8fCB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCkBAIC02NDU5LDcgKzc1ODksNyBAQAogICAgICAgZm9yIGxpYiBpbiAkb2xkX2RsZmlsZXM7IGRvCiAJY2FzZSAiICRkbHByZWZpbGVzICRkbGZpbGVzICIgaW4KIAkqIiAkbGliICIqKSA7OwotCSopIGRsZmlsZXM9IiRkbGZpbGVzICRsaWIiIDs7CisJKikgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRsaWIiIDs7CiAJZXNhYwogICAgICAgZG9uZQogCkBAIC02NDY5LDE5ICs3NTk5LDE5IEBACiAgICAgICBmb3IgbGliIGluICRvbGRfZGxwcmVmaWxlczsgZG8KIAljYXNlICIkZGxwcmVmaWxlcyAiIGluCiAJKiIgJGxpYiAiKikgOzsKLQkqKSBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkbGliIiA7OworCSopIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkbGliIiA7OwogCWVzYWMKICAgICAgIGRvbmUKIAogICAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXM7IHRoZW4KIAlpZiB0ZXN0IC1uICIkcnBhdGgiOyB0aGVuCiAJICBjYXNlICRob3N0IGluCi0JICAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotb3MyKiB8ICotKi1iZW9zKiB8ICotY2VnY2MqKQorCSAgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiogfCAqLSotYmVvcyogfCAqLWNlZ2NjKiB8ICotKi1oYWlrdSopCiAJICAgICMgdGhlc2Ugc3lzdGVtcyBkb24ndCBhY3R1YWxseSBoYXZlIGEgYyBsaWJyYXJ5IChhcyBzdWNoKSEKIAkgICAgOzsKIAkgICotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKIAkgICAgIyBSaGFwc29keSBDIGxpYnJhcnkgaXMgaW4gdGhlIFN5c3RlbSBmcmFtZXdvcmsKLQkgICAgZGVwbGlicz0iJGRlcGxpYnMgU3lzdGVtLmx0ZnJhbWV3b3JrIgorCSAgICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgU3lzdGVtLmx0ZnJhbWV3b3JrIgogCSAgICA7OwogCSAgKi0qLW5ldGJzZCopCiAJICAgICMgRG9uJ3QgbGluayB3aXRoIGxpYmMgdW50aWwgdGhlIGEub3V0IGxkLnNvIGlzIGZpeGVkLgpAQCAtNjQ5OCw3ICs3NjI4LDcgQEAKIAkgICopCiAJICAgICMgQWRkIGxpYmMgdG8gZGVwbGlicyBvbiBhbGwgb3RoZXIgc3lzdGVtcyBpZiBuZWNlc3NhcnkuCiAJICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX25lZWRfbGMiID0gInllcyI7IHRoZW4KLQkgICAgICBkZXBsaWJzPSIkZGVwbGlicyAtbGMiCisJICAgICAgZnVuY19hcHBlbmQgZGVwbGlicyAiIC1sYyIKIAkgICAgZmkKIAkgICAgOzsKIAkgIGVzYWMKQEAgLTY1NDcsNyArNzY3Nyw3IEBACiAJCWlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KIAkJICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkJICAqIiAkaSAiKikKLQkJICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorCQkgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgogCQkgICAgaT0iIgogCQkgICAgOzsKIAkJICBlc2FjCkBAIC02NTU4LDIxICs3Njg4LDIxIEBACiAJCSAgc2V0IGR1bW15ICRkZXBsaWJfbWF0Y2hlczsgc2hpZnQKIAkJICBkZXBsaWJfbWF0Y2g9JDEKIAkJICBpZiB0ZXN0IGBleHByICIkbGRkX291dHB1dCIgOiAiLiokZGVwbGliX21hdGNoImAgLW5lIDAgOyB0aGVuCi0JCSAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkJICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKIAkJICBlbHNlCiAJCSAgICBkcm9wcGVkZGVwcz15ZXMKLQkJICAgICRFQ0hPCisJCSAgICBlY2hvCiAJCSAgICAkRUNITyAiKioqIFdhcm5pbmc6IGR5bmFtaWMgbGlua2VyIGRvZXMgbm90IGFjY2VwdCBuZWVkZWQgbGlicmFyeSAkaS4iCi0JCSAgICAkRUNITyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKLQkJICAgICRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCQkgICAgJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggSSBiZWxpZXZlIHlvdSBkbyBub3QgaGF2ZSIKLQkJICAgICRFQ0hPICIqKiogYmVjYXVzZSBhIHRlc3RfY29tcGlsZSBkaWQgcmV2ZWFsIHRoYXQgdGhlIGxpbmtlciBkaWQgbm90IHVzZSBpdCBmb3IiCi0JCSAgICAkRUNITyAiKioqIGl0cyBkeW5hbWljIGRlcGVuZGVuY3kgbGlzdCB0aGF0IHByb2dyYW1zIGdldCByZXNvbHZlZCB3aXRoIGF0IHJ1bnRpbWUuIgorCQkgICAgZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkJICAgIGVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCSAgICBlY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIEkgYmVsaWV2ZSB5b3UgZG8gbm90IGhhdmUiCisJCSAgICBlY2hvICIqKiogYmVjYXVzZSBhIHRlc3RfY29tcGlsZSBkaWQgcmV2ZWFsIHRoYXQgdGhlIGxpbmtlciBkaWQgbm90IHVzZSBpdCBmb3IiCisJCSAgICBlY2hvICIqKiogaXRzIGR5bmFtaWMgZGVwZW5kZW5jeSBsaXN0IHRoYXQgcHJvZ3JhbXMgZ2V0IHJlc29sdmVkIHdpdGggYXQgcnVudGltZS4iCiAJCSAgZmkKIAkJZmkKIAkJOzsKIAkgICAgICAqKQotCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgogCQk7OwogCSAgICAgIGVzYWMKIAkgICAgZG9uZQpAQCAtNjU5MCw3ICs3NzIwLDcgQEAKIAkJICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCiAJCSAgICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkJICAgICoiICRpICIqKQotCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgogCQkgICAgICBpPSIiCiAJCSAgICAgIDs7CiAJCSAgICBlc2FjCkBAIC02NjAxLDI5ICs3NzMxLDI5IEBACiAJCSAgICBzZXQgZHVtbXkgJGRlcGxpYl9tYXRjaGVzOyBzaGlmdAogCQkgICAgZGVwbGliX21hdGNoPSQxCiAJCSAgICBpZiB0ZXN0IGBleHByICIkbGRkX291dHB1dCIgOiAiLiokZGVwbGliX21hdGNoImAgLW5lIDAgOyB0aGVuCi0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCiAJCSAgICBlbHNlCiAJCSAgICAgIGRyb3BwZWRkZXBzPXllcwotCQkgICAgICAkRUNITworCQkgICAgICBlY2hvCiAJCSAgICAgICRFQ0hPICIqKiogV2FybmluZzogZHluYW1pYyBsaW5rZXIgZG9lcyBub3QgYWNjZXB0IG5lZWRlZCBsaWJyYXJ5ICRpLiIKLQkJICAgICAgJEVDSE8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JCSAgICAgICRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCQkgICAgICAkRUNITyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgotCQkgICAgICAkRUNITyAiKioqIGJlY2F1c2UgYSB0ZXN0X2NvbXBpbGUgZGlkIHJldmVhbCB0aGF0IHRoZSBsaW5rZXIgZGlkIG5vdCB1c2UgdGhpcyBvbmUiCi0JCSAgICAgICRFQ0hPICIqKiogYXMgYSBkeW5hbWljIGRlcGVuZGVuY3kgdGhhdCBwcm9ncmFtcyBjYW4gZ2V0IHJlc29sdmVkIHdpdGggYXQgcnVudGltZS4iCisJCSAgICAgIGVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJCSAgICAgIGVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCSAgICAgIGVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKKwkJICAgICAgZWNobyAiKioqIGJlY2F1c2UgYSB0ZXN0X2NvbXBpbGUgZGlkIHJldmVhbCB0aGF0IHRoZSBsaW5rZXIgZGlkIG5vdCB1c2UgdGhpcyBvbmUiCisJCSAgICAgIGVjaG8gIioqKiBhcyBhIGR5bmFtaWMgZGVwZW5kZW5jeSB0aGF0IHByb2dyYW1zIGNhbiBnZXQgcmVzb2x2ZWQgd2l0aCBhdCBydW50aW1lLiIKIAkJICAgIGZpCiAJCSAgZmkKIAkJZWxzZQogCQkgIGRyb3BwZWRkZXBzPXllcwotCQkgICRFQ0hPCisJCSAgZWNobwogCQkgICRFQ0hPICIqKiogV2FybmluZyEgIExpYnJhcnkgJGkgaXMgbmVlZGVkIGJ5IHRoaXMgbGlicmFyeSBidXQgSSB3YXMgbm90IGFibGUgdG8iCi0JCSAgJEVDSE8gIioqKiBtYWtlIGl0IGxpbmsgaW4hICBZb3Ugd2lsbCBwcm9iYWJseSBuZWVkIHRvIGluc3RhbGwgaXQgb3Igc29tZSIKLQkJICAkRUNITyAiKioqIGxpYnJhcnkgdGhhdCBpdCBkZXBlbmRzIG9uIGJlZm9yZSB0aGlzIGxpYnJhcnkgd2lsbCBiZSBmdWxseSIKLQkJICAkRUNITyAiKioqIGZ1bmN0aW9uYWwuICBJbnN0YWxsaW5nIGl0IGJlZm9yZSBjb250aW51aW5nIHdvdWxkIGJlIGV2ZW4gYmV0dGVyLiIKKwkJICBlY2hvICIqKiogbWFrZSBpdCBsaW5rIGluISAgWW91IHdpbGwgcHJvYmFibHkgbmVlZCB0byBpbnN0YWxsIGl0IG9yIHNvbWUiCisJCSAgZWNobyAiKioqIGxpYnJhcnkgdGhhdCBpdCBkZXBlbmRzIG9uIGJlZm9yZSB0aGlzIGxpYnJhcnkgd2lsbCBiZSBmdWxseSIKKwkJICBlY2hvICIqKiogZnVuY3Rpb25hbC4gIEluc3RhbGxpbmcgaXQgYmVmb3JlIGNvbnRpbnVpbmcgd291bGQgYmUgZXZlbiBiZXR0ZXIuIgogCQlmaQogCQk7OwogCSAgICAgICopCi0JCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorCQlmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCiAJCTs7CiAJICAgICAgZXNhYwogCSAgICBkb25lCkBAIC02NjQwLDE1ICs3NzcwLDI3IEBACiAJICAgICAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgogCQljYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkJKiIgJGFfZGVwbGliICIqKQotCQkgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkJICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgogCQkgIGFfZGVwbGliPSIiCiAJCSAgOzsKIAkJZXNhYwogCSAgICAgIGZpCiAJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIiA7IHRoZW4KIAkJbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCisJCWlmIHRlc3QgLW4gIiRmaWxlX21hZ2ljX2dsb2IiOyB0aGVuCisJCSAgbGlibmFtZWdsb2I9YGZ1bmNfZWNob19hbGwgIiRsaWJuYW1lIiB8ICRTRUQgLWUgJGZpbGVfbWFnaWNfZ2xvYmAKKwkJZWxzZQorCQkgIGxpYm5hbWVnbG9iPSRsaWJuYW1lCisJCWZpCisJCXRlc3QgIiR3YW50X25vY2FzZWdsb2IiID0geWVzICYmIG5vY2FzZWdsb2I9YHNob3B0IC1wIG5vY2FzZWdsb2JgCiAJCWZvciBpIGluICRsaWJfc2VhcmNoX3BhdGggJHN5c19saWJfc2VhcmNoX3BhdGggJHNobGliX3NlYXJjaF9wYXRoOyBkbwotCQkgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZVsuLV0qIDI+L2Rldi9udWxsYAorCQkgIGlmIHRlc3QgIiR3YW50X25vY2FzZWdsb2IiID0geWVzOyB0aGVuCisJCSAgICBzaG9wdCAtcyBub2Nhc2VnbG9iCisJCSAgICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVnbG9iWy4tXSogMj4vZGV2L251bGxgCisJCSAgICAkbm9jYXNlZ2xvYgorCQkgIGVsc2UKKwkJICAgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZWdsb2JbLi1dKiAyPi9kZXYvbnVsbGAKKwkJICBmaQogCQkgIGZvciBwb3RlbnRfbGliIGluICRwb3RlbnRpYWxfbGliczsgZG8KIAkJICAgICAgIyBGb2xsb3cgc29mdCBsaW5rcy4KIAkJICAgICAgaWYgbHMgLWxMZCAiJHBvdGVudF9saWIiIDI+L2Rldi9udWxsIHwKQEAgLTY2NjUsMTMgKzc4MDcsMTMgQEAKIAkJCXBvdGxpYmxpbms9YGxzIC1sZCAkcG90bGliIHwgJHtTRUR9ICdzLy4qIC0+IC8vJ2AKIAkJCWNhc2UgJHBvdGxpYmxpbmsgaW4KIAkJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgcG90bGliPSIkcG90bGlibGluayI7OwotCQkJKikgcG90bGliPWAkRUNITyAiWCRwb3RsaWIiIHwgJFhzZWQgLWUgJ3MsW14vXSokLCwnYCIkcG90bGlibGluayI7OworCQkJKikgcG90bGliPWAkRUNITyAiJHBvdGxpYiIgfCAkU0VEICdzLFteL10qJCwsJ2AiJHBvdGxpYmxpbmsiOzsKIAkJCWVzYWMKIAkJICAgICAgZG9uZQogCQkgICAgICBpZiBldmFsICRmaWxlX21hZ2ljX2NtZCBcIlwkcG90bGliXCIgMj4vZGV2L251bGwgfAogCQkJICRTRUQgLWUgMTBxIHwKIAkJCSAkRUdSRVAgIiRmaWxlX21hZ2ljX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgotCQkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorCQkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKIAkJCWFfZGVwbGliPSIiCiAJCQlicmVhayAyCiAJCSAgICAgIGZpCkBAIC02NjgwLDEyICs3ODIyLDEyIEBACiAJICAgICAgZmkKIAkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgogCQlkcm9wcGVkZGVwcz15ZXMKLQkJJEVDSE8KKwkJZWNobwogCQkkRUNITyAiKioqIFdhcm5pbmc6IGxpbmtlciBwYXRoIGRvZXMgbm90IGhhdmUgcmVhbCBmaWxlIGZvciBsaWJyYXJ5ICRhX2RlcGxpYi4iCi0JCSRFQ0hPICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgotCQkkRUNITyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkJJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKLQkJJEVDSE8gIioqKiBiZWNhdXNlIEkgZGlkIGNoZWNrIHRoZSBsaW5rZXIgcGF0aCBsb29raW5nIGZvciBhIGZpbGUgc3RhcnRpbmciCisJCWVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJCWVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCWVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKKwkJZWNobyAiKioqIGJlY2F1c2UgSSBkaWQgY2hlY2sgdGhlIGxpbmtlciBwYXRoIGxvb2tpbmcgZm9yIGEgZmlsZSBzdGFydGluZyIKIAkJaWYgdGVzdCAteiAiJHBvdGxpYiIgOyB0aGVuCiAJCSAgJEVDSE8gIioqKiB3aXRoICRsaWJuYW1lIGJ1dCBubyBjYW5kaWRhdGVzIHdlcmUgZm91bmQuICguLi5mb3IgZmlsZSBtYWdpYyB0ZXN0KSIKIAkJZWxzZQpAQCAtNjY5Niw3ICs3ODM4LDcgQEAKIAkgICAgICA7OwogCSAgICAqKQogCSAgICAgICMgQWRkIGEgLUwgYXJndW1lbnQuCi0JICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCiAJICAgICAgOzsKIAkgICAgZXNhYwogCSAgZG9uZSAjIEdvbmUgdGhyb3VnaCBhbGwgZGVwbGlicy4KQEAgLTY3MTIsNyArNzg1NCw3IEBACiAJICAgICAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgogCQljYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkJKiIgJGFfZGVwbGliICIqKQotCQkgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkJICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgogCQkgIGFfZGVwbGliPSIiCiAJCSAgOzsKIAkJZXNhYwpAQCAtNjcyMyw5ICs3ODY1LDkgQEAKIAkJICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVbLi1dKiAyPi9kZXYvbnVsbGAKIAkJICBmb3IgcG90ZW50X2xpYiBpbiAkcG90ZW50aWFsX2xpYnM7IGRvCiAJCSAgICBwb3RsaWI9IiRwb3RlbnRfbGliIiAjIHNlZSBzeW1saW5rLWNoZWNrIGFib3ZlIGluIGZpbGVfbWFnaWMgdGVzdAotCQkgICAgaWYgZXZhbCAiXCRFQ0hPIFwiWCRwb3RlbnRfbGliXCIiIDI+L2Rldi9udWxsIHwgJFhzZWQgLWUgMTBxIHwgXAorCQkgICAgaWYgZXZhbCAiXCRFQ0hPIFwiJHBvdGVudF9saWJcIiIgMj4vZGV2L251bGwgfCAkU0VEIDEwcSB8IFwKIAkJICAgICAgICRFR1JFUCAiJG1hdGNoX3BhdHRlcm5fcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCi0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKIAkJICAgICAgYV9kZXBsaWI9IiIKIAkJICAgICAgYnJlYWsgMgogCQkgICAgZmkKQEAgLTY3MzQsMTIgKzc4NzYsMTIgQEAKIAkgICAgICBmaQogCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCiAJCWRyb3BwZWRkZXBzPXllcwotCQkkRUNITworCQllY2hvCiAJCSRFQ0hPICIqKiogV2FybmluZzogbGlua2VyIHBhdGggZG9lcyBub3QgaGF2ZSByZWFsIGZpbGUgZm9yIGxpYnJhcnkgJGFfZGVwbGliLiIKLQkJJEVDSE8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JCSRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCQkkRUNITyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgotCQkkRUNITyAiKioqIGJlY2F1c2UgSSBkaWQgY2hlY2sgdGhlIGxpbmtlciBwYXRoIGxvb2tpbmcgZm9yIGEgZmlsZSBzdGFydGluZyIKKwkJZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkJZWNobyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKKwkJZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgorCQllY2hvICIqKiogYmVjYXVzZSBJIGRpZCBjaGVjayB0aGUgbGlua2VyIHBhdGggbG9va2luZyBmb3IgYSBmaWxlIHN0YXJ0aW5nIgogCQlpZiB0ZXN0IC16ICIkcG90bGliIiA7IHRoZW4KIAkJICAkRUNITyAiKioqIHdpdGggJGxpYm5hbWUgYnV0IG5vIGNhbmRpZGF0ZXMgd2VyZSBmb3VuZC4gKC4uLmZvciByZWdleCBwYXR0ZXJuIHRlc3QpIgogCQllbHNlCkBAIC02NzUwLDMyICs3ODkyLDMyIEBACiAJICAgICAgOzsKIAkgICAgKikKIAkgICAgICAjIEFkZCBhIC1MIGFyZ3VtZW50LgotCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgogCSAgICAgIDs7CiAJICAgIGVzYWMKIAkgIGRvbmUgIyBHb25lIHRocm91Z2ggYWxsIGRlcGxpYnMuCiAJICA7OwogCW5vbmUgfCB1bmtub3duIHwgKikKIAkgIG5ld2RlcGxpYnM9IiIKLQkgIHRtcF9kZXBsaWJzPWAkRUNITyAiWCAkZGVwbGlicyIgfCAkWHNlZCBcCi0JICAgICAgLWUgJ3MvIC1sYyQvLycgLWUgJ3MvIC1bTFJdW14gXSovL2cnYAorCSAgdG1wX2RlcGxpYnM9YCRFQ0hPICIgJGRlcGxpYnMiIHwgJFNFRCAncy8gLWxjJC8vOyBzLyAtW0xSXVteIF0qLy9nJ2AKIAkgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KIAkgICAgZm9yIGkgaW4gJHByZWRlcHMgJHBvc3RkZXBzIDsgZG8KIAkgICAgICAjIGNhbid0IHVzZSBYc2VkIGJlbG93LCBiZWNhdXNlICRpIG1pZ2h0IGNvbnRhaW4gJy8nCi0JICAgICAgdG1wX2RlcGxpYnM9YCRFQ0hPICJYICR0bXBfZGVwbGlicyIgfCAkWHNlZCAtZSAicywkaSwsImAKKwkgICAgICB0bXBfZGVwbGlicz1gJEVDSE8gIiAkdG1wX2RlcGxpYnMiIHwgJFNFRCAicywkaSwsImAKIAkgICAgZG9uZQogCSAgZmkKLQkgIGlmICRFQ0hPICJYICR0bXBfZGVwbGlicyIgfCAkWHNlZCAtZSAncy9bCSBdLy9nJyB8Ci0JICAgICAkR1JFUCAuID4vZGV2L251bGw7IHRoZW4KLQkgICAgJEVDSE8KKwkgIGNhc2UgJHRtcF9kZXBsaWJzIGluCisJICAqWyFcCVwgXSopCisJICAgIGVjaG8KIAkgICAgaWYgdGVzdCAiWCRkZXBsaWJzX2NoZWNrX21ldGhvZCIgPSAiWG5vbmUiOyB0aGVuCi0JICAgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgbm90IHN1cHBvcnRlZCBpbiB0aGlzIHBsYXRmb3JtLiIKKwkgICAgICBlY2hvICIqKiogV2FybmluZzogaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBwbGF0Zm9ybS4iCiAJICAgIGVsc2UKLQkgICAgICAkRUNITyAiKioqIFdhcm5pbmc6IGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBub3Qga25vd24gdG8gYmUgc3VwcG9ydGVkLiIKKwkgICAgICBlY2hvICIqKiogV2FybmluZzogaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBrbm93biB0byBiZSBzdXBwb3J0ZWQuIgogCSAgICBmaQotCSAgICAkRUNITyAiKioqIEFsbCBkZWNsYXJlZCBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgYmVpbmcgZHJvcHBlZC4iCisJICAgIGVjaG8gIioqKiBBbGwgZGVjbGFyZWQgaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIGJlaW5nIGRyb3BwZWQuIgogCSAgICBkcm9wcGVkZGVwcz15ZXMKLQkgIGZpCisJICAgIDs7CisJICBlc2FjCiAJICA7OwogCWVzYWMKIAl2ZXJzdWZmaXg9JHZlcnN1ZmZpeF9zYXZlCkBAIC02Nzg3LDIzICs3OTI5LDIzIEBACiAJY2FzZSAkaG9zdCBpbgogCSotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKIAkgICMgT24gUmhhcHNvZHkgcmVwbGFjZSB0aGUgQyBsaWJyYXJ5IHdpdGggdGhlIFN5c3RlbSBmcmFtZXdvcmsKLQkgIG5ld2RlcGxpYnM9YCRFQ0hPICJYICRuZXdkZXBsaWJzIiB8ICRYc2VkIC1lICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCisJICBuZXdkZXBsaWJzPWAkRUNITyAiICRuZXdkZXBsaWJzIiB8ICRTRUQgJ3MvIC1sYyAvIFN5c3RlbS5sdGZyYW1ld29yayAvJ2AKIAkgIDs7CiAJZXNhYwogCiAJaWYgdGVzdCAiJGRyb3BwZWRkZXBzIiA9IHllczsgdGhlbgogCSAgaWYgdGVzdCAiJG1vZHVsZSIgPSB5ZXM7IHRoZW4KLQkgICAgJEVDSE8KLQkgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBsaWJ0b29sIGNvdWxkIG5vdCBzYXRpc2Z5IGFsbCBkZWNsYXJlZCBpbnRlci1saWJyYXJ5IgorCSAgICBlY2hvCisJICAgIGVjaG8gIioqKiBXYXJuaW5nOiBsaWJ0b29sIGNvdWxkIG5vdCBzYXRpc2Z5IGFsbCBkZWNsYXJlZCBpbnRlci1saWJyYXJ5IgogCSAgICAkRUNITyAiKioqIGRlcGVuZGVuY2llcyBvZiBtb2R1bGUgJGxpYm5hbWUuICBUaGVyZWZvcmUsIGxpYnRvb2wgd2lsbCBjcmVhdGUiCi0JICAgICRFQ0hPICIqKiogYSBzdGF0aWMgbW9kdWxlLCB0aGF0IHNob3VsZCB3b3JrIGFzIGxvbmcgYXMgdGhlIGRsb3BlbmluZyIKLQkgICAgJEVDSE8gIioqKiBhcHBsaWNhdGlvbiBpcyBsaW5rZWQgd2l0aCB0aGUgLWRsb3BlbiBmbGFnLiIKKwkgICAgZWNobyAiKioqIGEgc3RhdGljIG1vZHVsZSwgdGhhdCBzaG91bGQgd29yayBhcyBsb25nIGFzIHRoZSBkbG9wZW5pbmciCisJICAgIGVjaG8gIioqKiBhcHBsaWNhdGlvbiBpcyBsaW5rZWQgd2l0aCB0aGUgLWRsb3BlbiBmbGFnLiIKIAkgICAgaWYgdGVzdCAteiAiJGdsb2JhbF9zeW1ib2xfcGlwZSI7IHRoZW4KLQkgICAgICAkRUNITwotCSAgICAgICRFQ0hPICIqKiogSG93ZXZlciwgdGhpcyB3b3VsZCBvbmx5IHdvcmsgaWYgbGlidG9vbCB3YXMgYWJsZSB0byBleHRyYWN0IHN5bWJvbCIKLQkgICAgICAkRUNITyAiKioqIGxpc3RzIGZyb20gYSBwcm9ncmFtLCB1c2luZyBcYG5tJyBvciBlcXVpdmFsZW50LCBidXQgbGlidG9vbCBjb3VsZCIKLQkgICAgICAkRUNITyAiKioqIG5vdCBmaW5kIHN1Y2ggYSBwcm9ncmFtLiAgU28sIHRoaXMgbW9kdWxlIGlzIHByb2JhYmx5IHVzZWxlc3MuIgotCSAgICAgICRFQ0hPICIqKiogXGBubScgZnJvbSBHTlUgYmludXRpbHMgYW5kIGEgZnVsbCByZWJ1aWxkIG1heSBoZWxwLiIKKwkgICAgICBlY2hvCisJICAgICAgZWNobyAiKioqIEhvd2V2ZXIsIHRoaXMgd291bGQgb25seSB3b3JrIGlmIGxpYnRvb2wgd2FzIGFibGUgdG8gZXh0cmFjdCBzeW1ib2wiCisJICAgICAgZWNobyAiKioqIGxpc3RzIGZyb20gYSBwcm9ncmFtLCB1c2luZyBcYG5tJyBvciBlcXVpdmFsZW50LCBidXQgbGlidG9vbCBjb3VsZCIKKwkgICAgICBlY2hvICIqKiogbm90IGZpbmQgc3VjaCBhIHByb2dyYW0uICBTbywgdGhpcyBtb2R1bGUgaXMgcHJvYmFibHkgdXNlbGVzcy4iCisJICAgICAgZWNobyAiKioqIFxgbm0nIGZyb20gR05VIGJpbnV0aWxzIGFuZCBhIGZ1bGwgcmVidWlsZCBtYXkgaGVscC4iCiAJICAgIGZpCiAJICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSBubzsgdGhlbgogCSAgICAgIG9sZGxpYnM9IiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCkBAIC02ODEzLDE2ICs3OTU1LDE2IEBACiAJICAgICAgYnVpbGRfbGlidG9vbF9saWJzPW5vCiAJICAgIGZpCiAJICBlbHNlCi0JICAgICRFQ0hPICIqKiogVGhlIGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIHRoYXQgaGF2ZSBiZWVuIGRyb3BwZWQgaGVyZSB3aWxsIGJlIgotCSAgICAkRUNITyAiKioqIGF1dG9tYXRpY2FsbHkgYWRkZWQgd2hlbmV2ZXIgYSBwcm9ncmFtIGlzIGxpbmtlZCB3aXRoIHRoaXMgbGlicmFyeSIKLQkgICAgJEVDSE8gIioqKiBvciBpcyBkZWNsYXJlZCB0byAtZGxvcGVuIGl0LiIKKwkgICAgZWNobyAiKioqIFRoZSBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyB0aGF0IGhhdmUgYmVlbiBkcm9wcGVkIGhlcmUgd2lsbCBiZSIKKwkgICAgZWNobyAiKioqIGF1dG9tYXRpY2FsbHkgYWRkZWQgd2hlbmV2ZXIgYSBwcm9ncmFtIGlzIGxpbmtlZCB3aXRoIHRoaXMgbGlicmFyeSIKKwkgICAgZWNobyAiKioqIG9yIGlzIGRlY2xhcmVkIHRvIC1kbG9wZW4gaXQuIgogCiAJICAgIGlmIHRlc3QgIiRhbGxvd191bmRlZmluZWQiID0gbm87IHRoZW4KLQkgICAgICAkRUNITwotCSAgICAgICRFQ0hPICIqKiogU2luY2UgdGhpcyBsaWJyYXJ5IG11c3Qgbm90IGNvbnRhaW4gdW5kZWZpbmVkIHN5bWJvbHMsIgotCSAgICAgICRFQ0hPICIqKiogYmVjYXVzZSBlaXRoZXIgdGhlIHBsYXRmb3JtIGRvZXMgbm90IHN1cHBvcnQgdGhlbSBvciIKLQkgICAgICAkRUNITyAiKioqIGl0IHdhcyBleHBsaWNpdGx5IHJlcXVlc3RlZCB3aXRoIC1uby11bmRlZmluZWQsIgotCSAgICAgICRFQ0hPICIqKiogbGlidG9vbCB3aWxsIG9ubHkgY3JlYXRlIGEgc3RhdGljIHZlcnNpb24gb2YgaXQuIgorCSAgICAgIGVjaG8KKwkgICAgICBlY2hvICIqKiogU2luY2UgdGhpcyBsaWJyYXJ5IG11c3Qgbm90IGNvbnRhaW4gdW5kZWZpbmVkIHN5bWJvbHMsIgorCSAgICAgIGVjaG8gIioqKiBiZWNhdXNlIGVpdGhlciB0aGUgcGxhdGZvcm0gZG9lcyBub3Qgc3VwcG9ydCB0aGVtIG9yIgorCSAgICAgIGVjaG8gIioqKiBpdCB3YXMgZXhwbGljaXRseSByZXF1ZXN0ZWQgd2l0aCAtbm8tdW5kZWZpbmVkLCIKKwkgICAgICBlY2hvICIqKiogbGlidG9vbCB3aWxsIG9ubHkgY3JlYXRlIGEgc3RhdGljIHZlcnNpb24gb2YgaXQuIgogCSAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSBubzsgdGhlbgogCQlvbGRsaWJzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgogCQlidWlsZF9saWJ0b29sX2xpYnM9bW9kdWxlCkBAIC02ODM5LDkgKzc5ODEsOSBAQAogICAgICAgIyBUaW1lIHRvIGNoYW5nZSBhbGwgb3VyICJmb28ubHRmcmFtZXdvcmsiIHN0dWZmIGJhY2sgdG8gIi1mcmFtZXdvcmsgZm9vIgogICAgICAgY2FzZSAkaG9zdCBpbgogCSotKi1kYXJ3aW4qKQotCSAgbmV3ZGVwbGlicz1gJEVDSE8gIlggJG5ld2RlcGxpYnMiIHwgJFhzZWQgLWUgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCi0JICBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz1gJEVDSE8gIlggJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAotCSAgZGVwbGlicz1gJEVDSE8gIlggJGRlcGxpYnMiIHwgJFhzZWQgLWUgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJICBuZXdkZXBsaWJzPWAkRUNITyAiICRuZXdkZXBsaWJzIiB8ICRTRUQgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJICBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz1gJEVDSE8gIiAkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MiIHwgJFNFRCAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwkgIGRlcGxpYnM9YCRFQ0hPICIgJGRlcGxpYnMiIHwgJFNFRCAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKIAkgIDs7CiAgICAgICBlc2FjCiAKQEAgLTY4NTQsNyArNzk5Niw3IEBACiAJKikKIAkgIGNhc2UgIiAkZGVwbGlicyAiIGluCiAJICAqIiAtTCRwYXRoLyRvYmpkaXIgIiopCi0JICAgIG5ld19saWJzPSIkbmV3X2xpYnMgLUwkcGF0aC8kb2JqZGlyIiA7OworCSAgICBmdW5jX2FwcGVuZCBuZXdfbGlicyAiIC1MJHBhdGgvJG9iamRpciIgOzsKIAkgIGVzYWMKIAkgIDs7CiAJZXNhYwpAQCAtNjg2NCwxMCArODAwNiwxMCBAQAogCS1MKikKIAkgIGNhc2UgIiAkbmV3X2xpYnMgIiBpbgogCSAgKiIgJGRlcGxpYiAiKikgOzsKLQkgICopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKIAkgIGVzYWMKIAkgIDs7Ci0JKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OworCSopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKIAllc2FjCiAgICAgICBkb25lCiAgICAgICBkZXBsaWJzPSIkbmV3X2xpYnMiCkBAIC02ODg0LDEwICs4MDI2LDEyIEBACiAJICBoYXJkY29kZV9saWJkaXJzPQogCSAgZGVwX3JwYXRoPQogCSAgcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCIKLQkgIHRlc3QgIiRtb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgorCSAgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgogCSAgZm9yIGxpYmRpciBpbiAkcnBhdGg7IGRvCiAJICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgogCSAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgorCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKKwkJbGliZGlyPSRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQKIAkJaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCiAJCSAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKIAkJZWxzZQpAQCAtNjg5NiwxOCArODA0MCwxOCBAQAogCQkgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKIAkJICAgIDs7CiAJCSAgKikKLQkJICAgIGhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorCQkgICAgZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgogCQkgICAgOzsKIAkJICBlc2FjCiAJCWZpCiAJICAgICAgZWxzZQogCQlldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0JCWRlcF9ycGF0aD0iJGRlcF9ycGF0aCAkZmxhZyIKKwkJZnVuY19hcHBlbmQgZGVwX3JwYXRoICIgJGZsYWciCiAJICAgICAgZmkKIAkgICAgZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCiAJICAgICAgY2FzZSAiJHBlcm1fcnBhdGggIiBpbgogCSAgICAgICoiICRsaWJkaXIgIiopIDs7Ci0JICAgICAgKikgcGVybV9ycGF0aD0iJHBlcm1fcnBhdGggJGxpYmRpciIgOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBwZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCiAJICBkb25lCkBAIC02OTI1LDcgKzgwNjksNyBAQAogCSAgICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgogCSAgICBycGF0aD0KIAkgICAgZm9yIGRpciBpbiAkcGVybV9ycGF0aDsgZG8KLQkgICAgICBycGF0aD0iJHJwYXRoJGRpcjoiCisJICAgICAgZnVuY19hcHBlbmQgcnBhdGggIiRkaXI6IgogCSAgICBkb25lCiAJICAgIGV2YWwgIiRydW5wYXRoX3Zhcj0nJHJwYXRoXCQkcnVucGF0aF92YXInOyBleHBvcnQgJHJ1bnBhdGhfdmFyIgogCSAgZmkKQEAgLTY5MzMsNyArODA3Nyw3IEBACiAJZmkKIAogCXNobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCIKLQl0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rICYmIHNobGlicGF0aD0iJGNvbXBpbGVfc2hsaWJwYXRoJHNobGlicGF0aCIKKwl0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluayAmJiBzaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRzaGxpYnBhdGgiCiAJaWYgdGVzdCAtbiAiJHNobGlicGF0aCI7IHRoZW4KIAkgIGV2YWwgIiRzaGxpYnBhdGhfdmFyPSckc2hsaWJwYXRoXCQkc2hsaWJwYXRoX3Zhcic7IGV4cG9ydCAkc2hsaWJwYXRoX3ZhciIKIAlmaQpAQCAtNjk1OSwxOCArODEwMywxOCBAQAogCWxpbmtuYW1lcz0KIAlmb3IgbGluawogCWRvCi0JICBsaW5rbmFtZXM9IiRsaW5rbmFtZXMgJGxpbmsiCisJICBmdW5jX2FwcGVuZCBsaW5rbmFtZXMgIiAkbGluayIKIAlkb25lCiAKIAkjIFVzZSBzdGFuZGFyZCBvYmplY3RzIGlmIHRoZXkgYXJlIHBpYwotCXRlc3QgLXogIiRwaWNfZmxhZyIgJiYgbGlib2Jqcz1gJEVDSE8gIlgkbGlib2JqcyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAorCXRlc3QgLXogIiRwaWNfZmxhZyIgJiYgbGlib2Jqcz1gJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIiRsbzJvIiB8ICROTDJTUGAKIAl0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQogCiAJZGVsZmlsZXM9CiAJaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgogCSAgJG9wdF9kcnlfcnVuIHx8IGNwICIkZXhwb3J0X3N5bWJvbHMiICIkb3V0cHV0X29iamRpci8kbGlibmFtZS51ZXhwIgogCSAgZXhwb3J0X3N5bWJvbHM9IiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnVleHAiCi0JICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyIKKwkgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJGV4cG9ydF9zeW1ib2xzIgogCWZpCiAKIAlvcmlnX2V4cG9ydF9zeW1ib2xzPQpAQCAtNzAwMSwxNCArODE0NSw0NiBAQAogCSAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRleHBvcnRfc3ltYm9scwogCSAgICBjbWRzPSRleHBvcnRfc3ltYm9sc19jbWRzCiAJICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwotCSAgICBmb3IgY21kIGluICRjbWRzOyBkbworCSAgICBmb3IgY21kMSBpbiAkY21kczsgZG8KIAkgICAgICBJRlM9IiRzYXZlX2lmcyIKLQkgICAgICBldmFsIGNtZD1cIiRjbWRcIgotCSAgICAgIGZ1bmNfbGVuICIgJGNtZCIKLQkgICAgICBsZW49JGZ1bmNfbGVuX3Jlc3VsdAotCSAgICAgIGlmIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgorCSAgICAgICMgVGFrZSB0aGUgbm9ybWFsIGJyYW5jaCBpZiB0aGUgbm1fZmlsZV9saXN0X3NwZWMgYnJhbmNoCisJICAgICAgIyBkb2Vzbid0IHdvcmsgb3IgaWYgdG9vbCBjb252ZXJzaW9uIGlzIG5vdCBuZWVkZWQuCisJICAgICAgY2FzZSAkbm1fZmlsZV9saXN0X3NwZWN+JHRvX3Rvb2xfZmlsZV9jbWQgaW4KKwkJKn5mdW5jX2NvbnZlcnRfZmlsZV9ub29wIHwgKn5mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiB8IH4qKQorCQkgIHRyeV9ub3JtYWxfYnJhbmNoPXllcworCQkgIGV2YWwgY21kPVwiJGNtZDFcIgorCQkgIGZ1bmNfbGVuICIgJGNtZCIKKwkJICBsZW49JGZ1bmNfbGVuX3Jlc3VsdAorCQkgIDs7CisJCSopCisJCSAgdHJ5X25vcm1hbF9icmFuY2g9bm8KKwkJICA7OworCSAgICAgIGVzYWMKKwkgICAgICBpZiB0ZXN0ICIkdHJ5X25vcm1hbF9icmFuY2giID0geWVzIFwKKwkJICYmIHsgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIFwKKwkJICAgICAgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IH0KKwkgICAgICB0aGVuCiAJCWZ1bmNfc2hvd19ldmFsICIkY21kIiAnZXhpdCAkPycKIAkJc2tpcHBlZF9leHBvcnQ9ZmFsc2UKKwkgICAgICBlbGlmIHRlc3QgLW4gIiRubV9maWxlX2xpc3Rfc3BlYyI7IHRoZW4KKwkJZnVuY19iYXNlbmFtZSAiJG91dHB1dCIKKwkJb3V0cHV0X2xhPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAorCQlzYXZlX2xpYm9ianM9JGxpYm9ianMKKwkJc2F2ZV9vdXRwdXQ9JG91dHB1dAorCQlvdXRwdXQ9JHtvdXRwdXRfb2JqZGlyfS8ke291dHB1dF9sYX0ubm0KKwkJZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCisJCWxpYm9ianM9JG5tX2ZpbGVfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAorCQlmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCisJCWZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgJE5NIGlucHV0IGZpbGUgbGlzdDogJG91dHB1dCIKKwkJZm9yIG9iaiBpbiAkc2F2ZV9saWJvYmpzOyBkbworCQkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgorCQkgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgorCQlkb25lID4gIiRvdXRwdXQiCisJCWV2YWwgY21kPVwiJGNtZDFcIgorCQlmdW5jX3Nob3dfZXZhbCAiJGNtZCIgJ2V4aXQgJD8nCisJCW91dHB1dD0kc2F2ZV9vdXRwdXQKKwkJbGlib2Jqcz0kc2F2ZV9saWJvYmpzCisJCXNraXBwZWRfZXhwb3J0PWZhbHNlCiAJICAgICAgZWxzZQogCQkjIFRoZSBjb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgdG8gZXhlY3V0ZSBpbiBvbmUgc3RlcC4KIAkJZnVuY192ZXJib3NlICJ1c2luZyByZWxvYWRhYmxlIG9iamVjdCBmaWxlIGZvciBleHBvcnQgbGlzdC4uLiIKQEAgLTcwMjksNyArODIwNSw3IEBACiAJaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgogCSAgdG1wX2V4cG9ydF9zeW1ib2xzPSIkZXhwb3J0X3N5bWJvbHMiCiAJICB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyIgJiYgdG1wX2V4cG9ydF9zeW1ib2xzPSIkb3JpZ19leHBvcnRfc3ltYm9scyIKLQkgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiWCRpbmNsdWRlX2V4cHN5bXMiIHwgJFhzZWQgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJworCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyInCiAJZmkKIAogCWlmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiOyB0aGVuCkBAIC03MDQxLDcgKzgyMTcsNyBAQAogCSAgIyBnbG9iYWwgdmFyaWFibGVzLiBqb2luKDEpIHdvdWxkIGJlIG5pY2UgaGVyZSwgYnV0IHVuZm9ydHVuYXRlbHkKIAkgICMgaXNuJ3QgYSBibGVzc2VkIHRvb2wuCiAJICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZSAnL1sgLF1EQVRBLyFkO3MsXCguKlwpXChbIFwsXS4qXCksc3xeXDEkfFwxXDJ8LCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIKLQkgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKKwkgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKIAkgIGV4cG9ydF9zeW1ib2xzPSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZgogCSAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWYgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIDwgJG9yaWdfZXhwb3J0X3N5bWJvbHMgPiAkZXhwb3J0X3N5bWJvbHMKIAlmaQpAQCAtNzA1MSw3ICs4MjI3LDcgQEAKIAkgIGNhc2UgIiAkY29udmVuaWVuY2UgIiBpbgogCSAgKiIgJHRlc3RfZGVwbGliICIqKSA7OwogCSAgKikKLQkgICAgdG1wX2RlcGxpYnM9IiR0bXBfZGVwbGlicyAkdGVzdF9kZXBsaWIiCisJICAgIGZ1bmNfYXBwZW5kIHRtcF9kZXBsaWJzICIgJHRlc3RfZGVwbGliIgogCSAgICA7OwogCSAgZXNhYwogCWRvbmUKQEAgLTcwNzEsMjEgKzgyNDcsMjEgQEAKIAkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KIAkgIGVsc2UKIAkgICAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLQkgICAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisJICAgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCiAKIAkgICAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGNvbnZlbmllbmNlCi0JICAgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorCSAgICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCiAJICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CiAJICBmaQogCWZpCiAKIAlpZiB0ZXN0ICIkdGhyZWFkX3NhZmUiID0geWVzICYmIHRlc3QgLW4gIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWMiOyB0aGVuCiAJICBldmFsIGZsYWc9XCIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjXCIKLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkZmxhZyIKKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRmbGFnIgogCWZpCiAKIAkjIE1ha2UgYSBiYWNrdXAgb2YgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgd2hlbiByZWxpbmtpbmcKLQlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKwlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCiAJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVUgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVUpJyB8fCBleGl0ICQ/CiAJZmkKIApAQCAtNzEzMCw3ICs4MzA2LDggQEAKIAkgICAgc2F2ZV9saWJvYmpzPSRsaWJvYmpzCiAJICBmaQogCSAgc2F2ZV9vdXRwdXQ9JG91dHB1dAotCSAgb3V0cHV0X2xhPWAkRUNITyAiWCRvdXRwdXQiIHwgJFhzZWQgLWUgIiRiYXNlbmFtZSJgCisJICBmdW5jX2Jhc2VuYW1lICIkb3V0cHV0IgorCSAgb3V0cHV0X2xhPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAogCiAJICAjIENsZWFyIHRoZSByZWxvYWRhYmxlIG9iamVjdCBjcmVhdGlvbiBjb21tYW5kIHF1ZXVlIGFuZAogCSAgIyBpbml0aWFsaXplIGsgdG8gb25lLgpAQCAtNzE0MywxMyArODMyMCwxNiBAQAogCSAgaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyIgJiYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IiAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCiAJICAgIG91dHB1dD0ke291dHB1dF9vYmpkaXJ9LyR7b3V0cHV0X2xhfS5sbmtzY3JpcHQKIAkgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyBHTlUgbGQgc2NyaXB0OiAkb3V0cHV0IgotCSAgICAkRUNITyAnSU5QVVQgKCcgPiAkb3V0cHV0CisJICAgIGVjaG8gJ0lOUFVUICgnID4gJG91dHB1dAogCSAgICBmb3Igb2JqIGluICRzYXZlX2xpYm9ianMKIAkgICAgZG8KLQkgICAgICAkRUNITyAiJG9iaiIgPj4gJG91dHB1dAorCSAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgorCSAgICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiA+PiAkb3V0cHV0CiAJICAgIGRvbmUKLQkgICAgJEVDSE8gJyknID4+ICRvdXRwdXQKLQkgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkb3V0cHV0IgorCSAgICBlY2hvICcpJyA+PiAkb3V0cHV0CisJICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCisJICAgIG91dHB1dD0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0CiAJICBlbGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiICYmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAiWCRmaWxlX2xpc3Rfc3BlYyIgIT0gWDsgdGhlbgogCSAgICBvdXRwdXQ9JHtvdXRwdXRfb2JqZGlyfS8ke291dHB1dF9sYX0ubG5rCiAJICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgbGlua2VyIGlucHV0IGZpbGUgbGlzdDogJG91dHB1dCIKQEAgLTcxNjMsMTAgKzgzNDMsMTIgQEAKIAkgICAgZmkKIAkgICAgZm9yIG9iagogCSAgICBkbwotCSAgICAgICRFQ0hPICIkb2JqIiA+PiAkb3V0cHV0CisJICAgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCisJICAgICAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiID4+ICRvdXRwdXQKIAkgICAgZG9uZQotCSAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCi0JICAgIG91dHB1dD0kZmlyc3RvYmpcIiRmaWxlX2xpc3Rfc3BlYyRvdXRwdXRcIgorCSAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCisJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorCSAgICBvdXRwdXQ9JGZpcnN0b2JqXCIkZmlsZV9saXN0X3NwZWMkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIKIAkgIGVsc2UKIAkgICAgaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyI7IHRoZW4KIAkgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzLi4uIgpAQCAtNzE5MCwxNyArODM3MiwxOSBAQAogCQkgICMgY29tbWFuZCB0byB0aGUgcXVldWUuCiAJCSAgaWYgdGVzdCAiJGsiIC1lcSAxIDsgdGhlbgogCQkgICAgIyBUaGUgZmlyc3QgZmlsZSBkb2Vzbid0IGhhdmUgYSBwcmV2aW91cyBjb21tYW5kIHRvIGFkZC4KLQkJICAgIGV2YWwgY29uY2F0X2NtZHM9XCIkcmVsb2FkX2NtZHMgJG9iamxpc3QgJGxhc3Rfcm9ialwiCisJCSAgICByZWxvYWRfb2Jqcz0kb2JqbGlzdAorCQkgICAgZXZhbCBjb25jYXRfY21kcz1cIiRyZWxvYWRfY21kc1wiCiAJCSAgZWxzZQogCQkgICAgIyBBbGwgc3Vic2VxdWVudCByZWxvYWRhYmxlIG9iamVjdCBmaWxlcyB3aWxsIGxpbmsgaW4KIAkJICAgICMgdGhlIGxhc3Qgb25lIGNyZWF0ZWQuCi0JCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc34kcmVsb2FkX2NtZHMgJG9iamxpc3QgJGxhc3Rfcm9ian5cJFJNICRsYXN0X3JvYmpcIgorCQkgICAgcmVsb2FkX29ianM9IiRvYmpsaXN0ICRsYXN0X3JvYmoiCisJCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc34kcmVsb2FkX2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIKIAkJICBmaQogCQkgIGxhc3Rfcm9iaj0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAogCQkgIGZ1bmNfYXJpdGggJGsgKyAxCiAJCSAgaz0kZnVuY19hcml0aF9yZXN1bHQKIAkJICBvdXRwdXQ9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2t9LiRvYmpleHQKLQkJICBvYmpsaXN0PSRvYmoKKwkJICBvYmpsaXN0PSIgJG9iaiIKIAkJICBmdW5jX2xlbiAiICRsYXN0X3JvYmoiCiAJCSAgZnVuY19hcml0aCAkbGVuMCArICRmdW5jX2xlbl9yZXN1bHQKIAkJICBsZW49JGZ1bmNfYXJpdGhfcmVzdWx0CkBAIC03MjEwLDExICs4Mzk0LDEyIEBACiAJICAgICAgIyByZWxvYWRhYmxlIG9iamVjdCBmaWxlLiAgQWxsIHN1YnNlcXVlbnQgcmVsb2FkYWJsZSBvYmplY3QKIAkgICAgICAjIGZpbGVzIHdpbGwgbGluayBpbiB0aGUgbGFzdCBvbmUgY3JlYXRlZC4KIAkgICAgICB0ZXN0IC16ICIkY29uY2F0X2NtZHMiIHx8IGNvbmNhdF9jbWRzPSRjb25jYXRfY21kc34KLQkgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JHJlbG9hZF9jbWRzICRvYmpsaXN0ICRsYXN0X3JvYmpcIgorCSAgICAgIHJlbG9hZF9vYmpzPSIkb2JqbGlzdCAkbGFzdF9yb2JqIgorCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kcmVsb2FkX2NtZHNcIgogCSAgICAgIGlmIHRlc3QgLW4gIiRsYXN0X3JvYmoiOyB0aGVuCiAJICAgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9flwkUk0gJGxhc3Rfcm9ialwiCiAJICAgICAgZmkKLQkgICAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCisJICAgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgogCiAJICAgIGVsc2UKIAkgICAgICBvdXRwdXQ9CkBAIC03MjQ4LDcgKzg0MzMsNyBAQAogCQlsdF9leGl0PSQ/CiAKIAkJIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0Ci0JCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorCQlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCiAJCSAgKCBjZCAiJG91dHB1dF9vYmpkaXIiICYmIFwKIAkJICAgICRSTSAiJHtyZWFsbmFtZX1UIiAmJiBcCiAJCSAgICAkTVYgIiR7cmVhbG5hbWV9VSIgIiRyZWFsbmFtZSIgKQpAQCAtNzI2OSw3ICs4NDU0LDcgQEAKIAkgICAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgogCSAgICAgIHRtcF9leHBvcnRfc3ltYm9scz0iJGV4cG9ydF9zeW1ib2xzIgogCSAgICAgIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIiAmJiB0bXBfZXhwb3J0X3N5bWJvbHM9IiRvcmlnX2V4cG9ydF9zeW1ib2xzIgotCSAgICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiWCRpbmNsdWRlX2V4cHN5bXMiIHwgJFhzZWQgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJworCSAgICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJwogCSAgICBmaQogCiAJICAgIGlmIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIjsgdGhlbgpAQCAtNzI4MSw3ICs4NDY2LDcgQEAKIAkgICAgICAjIGdsb2JhbCB2YXJpYWJsZXMuIGpvaW4oMSkgd291bGQgYmUgbmljZSBoZXJlLCBidXQgdW5mb3J0dW5hdGVseQogCSAgICAgICMgaXNuJ3QgYSBibGVzc2VkIHRvb2wuCiAJICAgICAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWUgJy9bICxdREFUQS8hZDtzLFwoLipcKVwoWyBcLF0uKlwpLHN8XlwxJHxcMVwyfCwnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyCi0JICAgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgorCSAgICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKIAkgICAgICBleHBvcnRfc3ltYm9scz0kb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYKIAkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIgPCAkb3JpZ19leHBvcnRfc3ltYm9scyA+ICRleHBvcnRfc3ltYm9scwogCSAgICBmaQpAQCAtNzMyMiwxMCArODUwNywxMCBAQAogCSMgQWRkIGFueSBvYmplY3RzIGZyb20gcHJlbG9hZGVkIGNvbnZlbmllbmNlIGxpYnJhcmllcwogCWlmIHRlc3QgLW4gIiRkbHByZWZpbGVzIjsgdGhlbgogCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKIAogCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGRscHJlZmlsZXMKLQkgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorCSAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgogCSAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KIAlmaQogCkBAIC03MzQxLDcgKzg1MjYsNyBAQAogCSAgICBsdF9leGl0PSQ/CiAKIAkgICAgIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0Ci0JICAgIGlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorCSAgICBpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCiAJICAgICAgKCBjZCAiJG91dHB1dF9vYmpkaXIiICYmIFwKIAkgICAgICAgICRSTSAiJHtyZWFsbmFtZX1UIiAmJiBcCiAJCSRNViAiJHtyZWFsbmFtZX1VIiAiJHJlYWxuYW1lIiApCkBAIC03MzUzLDcgKzg1MzgsNyBAQAogCUlGUz0iJHNhdmVfaWZzIgogCiAJIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0Ci0JaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCisJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgogCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1UICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1UICYmICRNViAke3JlYWxuYW1lfVUgJHJlYWxuYW1lKScgfHwgZXhpdCAkPwogCiAJICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiOyB0aGVuCkBAIC03NDM0LDE4ICs4NjE5LDIxIEBACiAgICAgICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiOyB0aGVuCiAJaWYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgogCSAgZXZhbCB0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncz1cIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCi0JICByZWxvYWRfY29udl9vYmpzPSRyZWxvYWRfb2Jqc1wgYCRFQ0hPICJYJHRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzIiB8ICRYc2VkIC1lICdzfCx8IHxnJ2AKKwkgIHJlbG9hZF9jb252X29ianM9JHJlbG9hZF9vYmpzXCBgJEVDSE8gIiR0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncyIgfCAkU0VEICdzfCx8IHxnJ2AKIAllbHNlCiAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b2JqfXgiCi0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCiAKIAkgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRjb252ZW5pZW5jZQogCSAgcmVsb2FkX2NvbnZfb2Jqcz0iJHJlbG9hZF9vYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgogCWZpCiAgICAgICBmaQogCisgICAgICAjIElmIHdlJ3JlIG5vdCBidWlsZGluZyBzaGFyZWQsIHdlIG5lZWQgdG8gdXNlIG5vbl9waWNfb2JqcworICAgICAgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIGxpYm9ianM9IiRub25fcGljX29iamVjdHMiCisKICAgICAgICMgQ3JlYXRlIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgotICAgICAgcmVsb2FkX29ianM9IiRvYmpzJG9sZF9kZXBsaWJzICJgJEVDSE8gIlgkbGlib2JqcyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAnL1wuJyR7bGliZXh0fSQnL2QnIC1lICcvXC5saWIkL2QnIC1lICIkbG8ybyIgfCAkTkwyU1BgIiAkcmVsb2FkX2NvbnZfb2JqcyIgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CisgICAgICByZWxvYWRfb2Jqcz0iJG9ianMkb2xkX2RlcGxpYnMgImAkRUNITyAiJGxpYm9ianMiIHwgJFNQMk5MIHwgJFNFRCAiL1wuJHtsaWJleHR9JC9kOyAvXC5saWIkL2Q7ICRsbzJvIiB8ICROTDJTUGAiICRyZWxvYWRfY29udl9vYmpzIiAjIyMgdGVzdHN1aXRlOiBza2lwIG5lc3RlZCBxdW90aW5nIHRlc3QKIAogICAgICAgb3V0cHV0PSIkb2JqIgogICAgICAgZnVuY19leGVjdXRlX2NtZHMgIiRyZWxvYWRfY21kcyIgJ2V4aXQgJD8nCkBAIC03NTA1LDggKzg2OTMsOCBAQAogICAgICAgY2FzZSAkaG9zdCBpbgogICAgICAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQogCSMgT24gUmhhcHNvZHkgcmVwbGFjZSB0aGUgQyBsaWJyYXJ5IGlzIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCi0JY29tcGlsZV9kZXBsaWJzPWAkRUNITyAiWCAkY29tcGlsZV9kZXBsaWJzIiB8ICRYc2VkIC1lICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCi0JZmluYWxpemVfZGVwbGlicz1gJEVDSE8gIlggJGZpbmFsaXplX2RlcGxpYnMiIHwgJFhzZWQgLWUgJ3MvIC1sYyAvIFN5c3RlbS5sdGZyYW1ld29yayAvJ2AKKwljb21waWxlX2RlcGxpYnM9YCRFQ0hPICIgJGNvbXBpbGVfZGVwbGlicyIgfCAkU0VEICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCisJZmluYWxpemVfZGVwbGlicz1gJEVDSE8gIiAkZmluYWxpemVfZGVwbGlicyIgfCAkU0VEICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCiAJOzsKICAgICAgIGVzYWMKIApAQCAtNzUxNywxNCArODcwNSwxNCBAQAogCWlmIHRlc3QgIiR0YWduYW1lIiA9IENYWCA7IHRoZW4KIAkgIGNhc2UgJHtNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQtMTAuMH0gaW4KIAkgICAgMTAuWzAxMjNdKQotCSAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAke3dsfS1iaW5kX2F0X2xvYWQiCi0JICAgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJHt3bH0tYmluZF9hdF9sb2FkIgorCSAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICR7d2x9LWJpbmRfYXRfbG9hZCIKKwkgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHt3bH0tYmluZF9hdF9sb2FkIgogCSAgICA7OwogCSAgZXNhYwogCWZpCiAJIyBUaW1lIHRvIGNoYW5nZSBhbGwgb3VyICJmb28ubHRmcmFtZXdvcmsiIHN0dWZmIGJhY2sgdG8gIi1mcmFtZXdvcmsgZm9vIgotCWNvbXBpbGVfZGVwbGlicz1gJEVDSE8gIlggJGNvbXBpbGVfZGVwbGlicyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKLQlmaW5hbGl6ZV9kZXBsaWJzPWAkRUNITyAiWCAkZmluYWxpemVfZGVwbGlicyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwljb21waWxlX2RlcGxpYnM9YCRFQ0hPICIgJGNvbXBpbGVfZGVwbGlicyIgfCAkU0VEICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCWZpbmFsaXplX2RlcGxpYnM9YCRFQ0hPICIgJGZpbmFsaXplX2RlcGxpYnMiIHwgJFNFRCAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKIAk7OwogICAgICAgZXNhYwogCkBAIC03NTM4LDcgKzg3MjYsNyBAQAogCSopCiAJICBjYXNlICIgJGNvbXBpbGVfZGVwbGlicyAiIGluCiAJICAqIiAtTCRwYXRoLyRvYmpkaXIgIiopCi0JICAgIG5ld19saWJzPSIkbmV3X2xpYnMgLUwkcGF0aC8kb2JqZGlyIiA7OworCSAgICBmdW5jX2FwcGVuZCBuZXdfbGlicyAiIC1MJHBhdGgvJG9iamRpciIgOzsKIAkgIGVzYWMKIAkgIDs7CiAJZXNhYwpAQCAtNzU0OCwxNyArODczNiwxNyBAQAogCS1MKikKIAkgIGNhc2UgIiAkbmV3X2xpYnMgIiBpbgogCSAgKiIgJGRlcGxpYiAiKikgOzsKLQkgICopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKIAkgIGVzYWMKIAkgIDs7Ci0JKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OworCSopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKIAllc2FjCiAgICAgICBkb25lCiAgICAgICBjb21waWxlX2RlcGxpYnM9IiRuZXdfbGlicyIKIAogCi0gICAgICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJGNvbXBpbGVfZGVwbGlicyIKLSAgICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICRmaW5hbGl6ZV9kZXBsaWJzIgorICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGNvbXBpbGVfZGVwbGlicyIKKyAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkZmluYWxpemVfZGVwbGlicyIKIAogICAgICAgaWYgdGVzdCAtbiAiJHJwYXRoJHhycGF0aCI7IHRoZW4KIAkjIElmIHRoZSB1c2VyIHNwZWNpZmllZCBhbnkgcnBhdGggZmxhZ3MsIHRoZW4gYWRkIHRoZW0uCkBAIC03NTY2LDcgKzg3NTQsNyBAQAogCSAgIyBUaGlzIGlzIHRoZSBtYWdpYyB0byB1c2UgLXJwYXRoLgogCSAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KIAkgICoiICRsaWJkaXIgIiopIDs7Ci0JICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiIDs7CisJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7CiAJICBlc2FjCiAJZG9uZQogICAgICAgZmkKQEAgLTc1ODUsMTggKzg3NzMsMTggQEAKIAkgICAgICAqIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCiAJCTs7CiAJICAgICAgKikKLQkJaGFyZGNvZGVfbGliZGlycz0iJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCisJCWZ1bmNfYXBwZW5kIGhhcmRjb2RlX2xpYmRpcnMgIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKIAkJOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCiAJICBlbHNlCiAJICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLQkgICAgcnBhdGg9IiRycGF0aCAkZmxhZyIKKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiAkZmxhZyIKIAkgIGZpCiAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCiAJICBjYXNlICIkcGVybV9ycGF0aCAiIGluCiAJICAqIiAkbGliZGlyICIqKSA7OwotCSAgKikgcGVybV9ycGF0aD0iJHBlcm1fcnBhdGggJGxpYmRpciIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIHBlcm1fcnBhdGggIiAkbGliZGlyIiA7OwogCSAgZXNhYwogCWZpCiAJY2FzZSAkaG9zdCBpbgpAQCAtNzYwNSwxMiArODc5MywxMiBAQAogCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCiAJICAqIjokbGliZGlyOiIqKSA7OwogCSAgOjopIGRsbHNlYXJjaHBhdGg9JGxpYmRpcjs7Ci0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokbGliZGlyIjs7CisJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JGxpYmRpciI7OwogCSAgZXNhYwogCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCiAJICAqIjokdGVzdGJpbmRpcjoiKikgOzsKIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSR0ZXN0YmluZGlyOzsKLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiR0ZXN0YmluZGlyIjs7CisJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JHRlc3RiaW5kaXIiOzsKIAkgIGVzYWMKIAkgIDs7CiAJZXNhYwpAQCAtNzYzNiwxOCArODgyNCwxOCBAQAogCSAgICAgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKIAkJOzsKIAkgICAgICAqKQotCQloYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKwkJZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgogCQk7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKIAkgIGVsc2UKIAkgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotCSAgICBycGF0aD0iJHJwYXRoICRmbGFnIgorCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgogCSAgZmkKIAllbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KIAkgIGNhc2UgIiRmaW5hbGl6ZV9wZXJtX3JwYXRoICIgaW4KIAkgICoiICRsaWJkaXIgIiopIDs7Ci0JICAqKSBmaW5hbGl6ZV9wZXJtX3JwYXRoPSIkZmluYWxpemVfcGVybV9ycGF0aCAkbGliZGlyIiA7OworCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7CiAJICBlc2FjCiAJZmkKICAgICAgIGRvbmUKQEAgLTc2NjEsOCArODg0OSw4IEBACiAKICAgICAgIGlmIHRlc3QgLW4gIiRsaWJvYmpzIiAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCiAJIyBUcmFuc2Zvcm0gYWxsIHRoZSBsaWJyYXJ5IG9iamVjdHMgaW50byBzdGFuZGFyZCBvYmplY3RzLgotCWNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICIkbG8ybyIgfCAkTkwyU1BgCi0JZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAorCWNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFNFRCAiJGxvMm8iIHwgJE5MMlNQYAorCWZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICIkZmluYWxpemVfY29tbWFuZCIgfCAkU1AyTkwgfCAkU0VEICIkbG8ybyIgfCAkTkwyU1BgCiAgICAgICBmaQogCiAgICAgICBmdW5jX2dlbmVyYXRlX2Rsc3ltcyAiJG91dHB1dG5hbWUiICJAUFJPR1JBTUAiICJubyIKQEAgLTc2NzQsMTUgKzg4NjIsMTUgQEAKIAogICAgICAgd3JhcHBlcnNfcmVxdWlyZWQ9eWVzCiAgICAgICBjYXNlICRob3N0IGluCisgICAgICAqY2VnY2MqIHwgKm1pbmd3MzJjZSopCisgICAgICAgICMgRGlzYWJsZSB3cmFwcGVycyBmb3IgY2VnY2MgYW5kIG1pbmd3MzJjZSBob3N0cywgd2UgYXJlIGNyb3NzIGNvbXBpbGluZyBhbnl3YXkuCisgICAgICAgIHdyYXBwZXJzX3JlcXVpcmVkPW5vCisgICAgICAgIDs7CiAgICAgICAqY3lnd2luKiB8ICptaW5ndyogKQogICAgICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXM7IHRoZW4KICAgICAgICAgICB3cmFwcGVyc19yZXF1aXJlZD1ubwogICAgICAgICBmaQogICAgICAgICA7OwotICAgICAgKmNlZ2NjKQotICAgICAgICAjIERpc2FibGUgd3JhcHBlcnMgZm9yIGNlZ2NjLCB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5nIGFueXdheS4KLSAgICAgICAgd3JhcHBlcnNfcmVxdWlyZWQ9bm8KLSAgICAgICAgOzsKICAgICAgICopCiAgICAgICAgIGlmIHRlc3QgIiRuZWVkX3JlbGluayIgPSBubyB8fCB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXM7IHRoZW4KICAgICAgICAgICB3cmFwcGVyc19yZXF1aXJlZD1ubwpAQCAtNzY5MSwxMyArODg3OSwxOSBAQAogICAgICAgZXNhYwogICAgICAgaWYgdGVzdCAiJHdyYXBwZXJzX3JlcXVpcmVkIiA9IG5vOyB0aGVuCiAJIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgotCWNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnYAorCWNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX2NvbW1hbmQiIHwgJFNFRCAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJ2AKIAlsaW5rX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aCIKIAogCSMgV2UgaGF2ZSBubyB1bmluc3RhbGxlZCBsaWJyYXJ5IGRlcGVuZGVuY2llcywgc28gZmluYWxpemUgcmlnaHQgbm93LgogCWV4aXRfc3RhdHVzPTAKIAlmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXRfc3RhdHVzPSQ/JwogCisJaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCisJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKwkgIHBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKKwkgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdGxpbmtfY21kcyIgJ2V4aXQgJD8nCisJZmkKKwogCSMgRGVsZXRlIHRoZSBnZW5lcmF0ZWQgZmlsZXMuCiAJaWYgdGVzdCAtZiAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IjsgdGhlbgogCSAgZnVuY19zaG93X2V2YWwgJyRSTSAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IicKQEAgLTc3MjAsNyArODkxNCw3IEBACiAJICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgogCSAgcnBhdGg9CiAJICBmb3IgZGlyIGluICRwZXJtX3JwYXRoOyBkbwotCSAgICBycGF0aD0iJHJwYXRoJGRpcjoiCisJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIkZGlyOiIKIAkgIGRvbmUKIAkgIGNvbXBpbGVfdmFyPSIkcnVucGF0aF92YXI9XCIkcnBhdGhcJCRydW5wYXRoX3ZhclwiICIKIAlmaQpAQCAtNzcyOCw3ICs4OTIyLDcgQEAKIAkgICMgV2Ugc2hvdWxkIHNldCB0aGUgcnVucGF0aF92YXIuCiAJICBycGF0aD0KIAkgIGZvciBkaXIgaW4gJGZpbmFsaXplX3Blcm1fcnBhdGg7IGRvCi0JICAgIHJwYXRoPSIkcnBhdGgkZGlyOiIKKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiRkaXI6IgogCSAgZG9uZQogCSAgZmluYWxpemVfdmFyPSIkcnVucGF0aF92YXI9XCIkcnBhdGhcJCRydW5wYXRoX3ZhclwiICIKIAlmaQpAQCAtNzczOCwxMSArODkzMiwxOCBAQAogCSMgV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSB3cmFwcGVyIHNjcmlwdC4KIAlsaW5rX2NvbW1hbmQ9IiRjb21waWxlX3ZhciRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aCIKIAkjIFJlcGxhY2UgdGhlIG91dHB1dCBmaWxlIHNwZWNpZmljYXRpb24uCi0JbGlua19jb21tYW5kPWAkRUNITyAiWCRsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZydgCisJbGlua19jb21tYW5kPWAkRUNITyAiJGxpbmtfY29tbWFuZCIgfCAkU0VEICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnYAogCSMgRGVsZXRlIHRoZSBvbGQgb3V0cHV0IGZpbGUuCiAJJG9wdF9kcnlfcnVuIHx8ICRSTSAkb3V0cHV0CiAJIyBMaW5rIHRoZSBleGVjdXRhYmxlIGFuZCBleGl0CiAJZnVuY19zaG93X2V2YWwgIiRsaW5rX2NvbW1hbmQiICdleGl0ICQ/JworCisJaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCisJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKwkgIHBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKKwkgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdGxpbmtfY21kcyIgJ2V4aXQgJD8nCisJZmkKKwogCWV4aXQgJEVYSVRfU1VDQ0VTUwogICAgICAgZmkKIApAQCAtNzc1Nyw3ICs4OTU4LDcgQEAKIAlpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiAhPSBubzsgdGhlbgogCSAgbGlua19jb21tYW5kPSIkZmluYWxpemVfdmFyJGNvbXBpbGVfY29tbWFuZCRmaW5hbGl6ZV9ycGF0aCIKIAkgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0geWVzOyB0aGVuCi0JICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiWCRjb21waWxlX3ZhciRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aCIgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCVcJHByb2dkaXIvXCRmaWxlJWcnYAorCSAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX3ZhciRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aCIgfCAkU0VEICdzJUBPVVRQVVRAJVwkcHJvZ2Rpci9cJGZpbGUlZydgCiAJICBlbHNlCiAJICAgICMgZmFzdF9pbnN0YWxsIGlzIHNldCB0byBuZWVkbGVzcwogCSAgICByZWxpbmtfY29tbWFuZD0KQEAgLTc3NjksMTMgKzg5NzAsMTkgQEAKICAgICAgIGZpCiAKICAgICAgICMgUmVwbGFjZSB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWNhdGlvbi4KLSAgICAgIGxpbmtfY29tbWFuZD1gJEVDSE8gIlgkbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUiJyVnJ2AKKyAgICAgIGxpbmtfY29tbWFuZD1gJEVDSE8gIiRsaW5rX2NvbW1hbmQiIHwgJFNFRCAncyVAT1VUUFVUQCUnIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIiclZydgCiAKICAgICAgICMgRGVsZXRlIHRoZSBvbGQgb3V0cHV0IGZpbGVzLgogICAgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkb3V0cHV0ICRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lICRvdXRwdXRfb2JqZGlyL2x0LSRvdXRwdXRuYW1lCiAKICAgICAgIGZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdCAkPycKIAorICAgICAgaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCisJZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIgorCXBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSInJWcnIC1lICdzJUBUT09MX09VVFBVVEAlJyIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiclZydgCisJZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0bGlua19jbWRzIiAnZXhpdCAkPycKKyAgICAgIGZpCisKICAgICAgICMgTm93IGNyZWF0ZSB0aGUgd3JhcHBlciBzY3JpcHQuCiAgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nICRvdXRwdXQiCiAKQEAgLTc3OTMsMTggKzkwMDAsNyBAQAogCSAgZmkKIAlkb25lCiAJcmVsaW5rX2NvbW1hbmQ9IihjZCBgcHdkYDsgJHJlbGlua19jb21tYW5kKSIKLQlyZWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkcmVsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotICAgICAgZmkKLQotICAgICAgIyBRdW90ZSAkRUNITyBmb3Igc2hpcHBpbmcuCi0gICAgICBpZiB0ZXN0ICJYJEVDSE8iID0gIlgkU0hFTEwgJHByb2dwYXRoIC0tZmFsbGJhY2stZWNobyI7IHRoZW4KLQljYXNlICRwcm9ncGF0aCBpbgotCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgcWVjaG89IiRTSEVMTCAkcHJvZ3BhdGggLS1mYWxsYmFjay1lY2hvIjs7Ci0JKikgcWVjaG89IiRTSEVMTCBgcHdkYC8kcHJvZ3BhdGggLS1mYWxsYmFjay1lY2hvIjs7Ci0JZXNhYwotCXFlY2hvPWAkRUNITyAiWCRxZWNobyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0gICAgICBlbHNlCi0JcWVjaG89YCRFQ0hPICJYJEVDSE8iIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorCXJlbGlua19jb21tYW5kPWAkRUNITyAiJHJlbGlua19jb21tYW5kIiB8ICRTRUQgIiRzZWRfcXVvdGVfc3Vic3QiYAogICAgICAgZmkKIAogICAgICAgIyBPbmx5IGFjdHVhbGx5IGRvIHRoaW5ncyBpZiBub3QgaW4gZHJ5IHJ1biBtb2RlLgpAQCAtNzg4NCw3ICs5MDgwLDcgQEAKIAllbHNlCiAJICBvbGRvYmpzPSIkb2xkX2RlcGxpYnMgJG5vbl9waWNfb2JqZWN0cyIKIAkgIGlmIHRlc3QgIiRwcmVsb2FkIiA9IHllcyAmJiB0ZXN0IC1mICIkc3ltZmlsZW9iaiI7IHRoZW4KLQkgICAgb2xkb2Jqcz0iJG9sZG9ianMgJHN5bWZpbGVvYmoiCisJICAgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkc3ltZmlsZW9iaiIKIAkgIGZpCiAJZmkKIAlhZGRsaWJzPSIkb2xkX2NvbnZlbmllbmNlIgpAQCAtNzg5MiwxMCArOTA4OCwxMCBAQAogCiAgICAgICBpZiB0ZXN0IC1uICIkYWRkbGlicyI7IHRoZW4KIAlnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotCWdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorCWZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCiAKIAlmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkYWRkbGlicwotCW9sZG9ianM9IiRvbGRvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorCWZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKICAgICAgIGZpCiAKICAgICAgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBhcmNoaXZlIGNvbW1hbmRzLgpAQCAtNzkwNiwxMCArOTEwMiwxMCBAQAogCSMgQWRkIGFueSBvYmplY3RzIGZyb20gcHJlbG9hZGVkIGNvbnZlbmllbmNlIGxpYnJhcmllcwogCWlmIHRlc3QgLW4gIiRkbHByZWZpbGVzIjsgdGhlbgogCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKIAogCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGRscHJlZmlsZXMKLQkgIG9sZG9ianM9IiRvbGRvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorCSAgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgogCWZpCiAKIAkjIFBPU0lYIGRlbWFuZHMgbm8gcGF0aHMgdG8gYmUgZW5jb2RlZCBpbiBhcmNoaXZlcy4gIFdlIGhhdmUKQEAgLTc5MjUsOSArOTEyMSw5IEBACiAJICAgIGRvbmUgfCBzb3J0IHwgc29ydCAtdWMgPi9kZXYvbnVsbCAyPiYxKTsgdGhlbgogCSAgOgogCWVsc2UKLQkgICRFQ0hPICJjb3B5aW5nIHNlbGVjdGVkIG9iamVjdCBmaWxlcyB0byBhdm9pZCBiYXNlbmFtZSBjb25mbGljdHMuLi4iCisJICBlY2hvICJjb3B5aW5nIHNlbGVjdGVkIG9iamVjdCBmaWxlcyB0byBhdm9pZCBiYXNlbmFtZSBjb25mbGljdHMuLi4iCiAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgogCSAgZnVuY19ta2Rpcl9wICIkZ2VudG9wIgogCSAgc2F2ZV9vbGRvYmpzPSRvbGRvYmpzCiAJICBvbGRvYmpzPQpAQCAtNzk1MSw5ICs5MTQ3LDkgQEAKIAkJZXNhYwogCSAgICAgIGRvbmUKIAkgICAgICBmdW5jX3Nob3dfZXZhbCAibG4gJG9iaiAkZ2VudG9wLyRuZXdvYmogfHwgY3AgJG9iaiAkZ2VudG9wLyRuZXdvYmoiCi0JICAgICAgb2xkb2Jqcz0iJG9sZG9ianMgJGdlbnRvcC8kbmV3b2JqIgorCSAgICAgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZ2VudG9wLyRuZXdvYmoiCiAJICAgICAgOzsKLQkgICAgKikgb2xkb2Jqcz0iJG9sZG9ianMgJG9iaiIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRvYmoiIDs7CiAJICAgIGVzYWMKIAkgIGRvbmUKIAlmaQpAQCAtNzk2Myw2ICs5MTU5LDE2IEBACiAJbGVuPSRmdW5jX2xlbl9yZXN1bHQKIAlpZiB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IHRoZW4KIAkgIGNtZHM9JG9sZF9hcmNoaXZlX2NtZHMKKwllbGlmIHRlc3QgLW4gIiRhcmNoaXZlcl9saXN0X3NwZWMiOyB0aGVuCisJICBmdW5jX3ZlcmJvc2UgInVzaW5nIGNvbW1hbmQgZmlsZSBhcmNoaXZlIGxpbmtpbmcuLi4iCisJICBmb3Igb2JqIGluICRvbGRvYmpzCisJICBkbworCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKKwkgICAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiCisJICBkb25lID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUubGliY21kCisJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUubGliY21kIgorCSAgb2xkb2Jqcz0iICRhcmNoaXZlcl9saXN0X3NwZWMkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgorCSAgY21kcz0kb2xkX2FyY2hpdmVfY21kcwogCWVsc2UKIAkgICMgdGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB0byBsaW5rIGluIG9uZSBzdGVwLCBsaW5rIGluIHBhcnRzCiAJICBmdW5jX3ZlcmJvc2UgInVzaW5nIHBpZWNld2lzZSBhcmNoaXZlIGxpbmtpbmcuLi4iCkBAIC04MDM2LDcgKzkyNDIsNyBAQAogICAgICAgZG9uZQogICAgICAgIyBRdW90ZSB0aGUgbGluayBjb21tYW5kIGZvciBzaGlwcGluZy4KICAgICAgIHJlbGlua19jb21tYW5kPSIoY2QgYHB3ZGA7ICRTSEVMTCAkcHJvZ3BhdGggJHByZXNlcnZlX2FyZ3MgLS1tb2RlPXJlbGluayAkbGlidG9vbF9hcmdzIEBpbnN0X3ByZWZpeF9kaXJAKSIKLSAgICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisgICAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIiRyZWxpbmtfY29tbWFuZCIgfCAkU0VEICIkc2VkX3F1b3RlX3N1YnN0ImAKICAgICAgIGlmIHRlc3QgIiRoYXJkY29kZV9hdXRvbWF0aWMiID0geWVzIDsgdGhlbgogCXJlbGlua19jb21tYW5kPQogICAgICAgZmkKQEAgLTgwNTksOSArOTI2NSwxOSBAQAogCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAogCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCiAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkZGVwbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi0JCW5ld2RlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyAkbGliZGlyLyRuYW1lIgorCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKIAkJOzsKLQkgICAgICAqKSBuZXdkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMgJGRlcGxpYiIgOzsKKwkgICAgICAtTCopCisJCWZ1bmNfc3RyaXBuYW1lIC1MICcnICIkZGVwbGliIgorCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkJZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgLUwkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgorCQk7OworCSAgICAgIC1SKikKKwkJZnVuY19zdHJpcG5hbWUgLVIgJycgIiRkZXBsaWIiCisJCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAtUiRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQiCisJCTs7CisJICAgICAgKikgZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgJGRlcGxpYiIgOzsKIAkgICAgICBlc2FjCiAJICAgIGRvbmUKIAkgICAgZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzIgpAQCAtODA3NSw5ICs5MjkxLDkgQEAKIAkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGxpYmAKIAkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAogCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotCQluZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliZGlyLyRuYW1lIgorCQlmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCiAJCTs7Ci0JICAgICAgKikgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGxpYiIgOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGxpYiIgOzsKIAkgICAgICBlc2FjCiAJICAgIGRvbmUKIAkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCkBAIC04MDk0LDcgKzkzMTAsNyBAQAogCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAogCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCiAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi0JCW5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRsaWJkaXIvJG5hbWUiCisJCWZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKIAkJOzsKIAkgICAgICBlc2FjCiAJICAgIGRvbmUKQEAgLTgxMDYsNyArOTMyMiw3IEBACiAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSIkbGliIiA7OwogCQkqKSBhYnM9YHB3ZGAiLyRsaWIiIDs7CiAJICAgICAgZXNhYwotCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRhYnMiCisJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRhYnMiCiAJICAgIGRvbmUKIAkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCiAJICAgIG5ld2RscHJlZmlsZXM9CkBAIC04MTE1LDE1ICs5MzMxLDMzIEBACiAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSIkbGliIiA7OwogCQkqKSBhYnM9YHB3ZGAiLyRsaWIiIDs7CiAJICAgICAgZXNhYwotCSAgICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRhYnMiCisJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRhYnMiCiAJICAgIGRvbmUKIAkgICAgZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMiCiAJICBmaQogCSAgJFJNICRvdXRwdXQKIAkgICMgcGxhY2UgZGxuYW1lIGluIGNvcnJlY3QgcG9zaXRpb24gZm9yIGN5Z3dpbgorCSAgIyBJbiBmYWN0LCBpdCB3b3VsZCBiZSBuaWNlIGlmIHdlIGNvdWxkIHVzZSB0aGlzIGNvZGUgZm9yIGFsbCB0YXJnZXQKKwkgICMgc3lzdGVtcyB0aGF0IGNhbid0IGhhcmQtY29kZSBsaWJyYXJ5IHBhdGhzIGludG8gdGhlaXIgZXhlY3V0YWJsZXMKKwkgICMgYW5kIHRoYXQgaGF2ZSBubyBzaGFyZWQgbGlicmFyeSBwYXRoIHZhcmlhYmxlIGluZGVwZW5kZW50IG9mIFBBVEgsCisJICAjIGJ1dCBpdCB0dXJucyBvdXQgd2UgY2FuJ3QgZWFzaWx5IGRldGVybWluZSB0aGF0IGZyb20gaW5zcGVjdGluZworCSAgIyBsaWJ0b29sIHZhcmlhYmxlcywgc28gd2UgaGF2ZSB0byBoYXJkLWNvZGUgdGhlIE9TcyB0byB3aGljaCBpdAorCSAgIyBhcHBsaWVzIGhlcmU7IGF0IHRoZSBtb21lbnQsIHRoYXQgbWVhbnMgcGxhdGZvcm1zIHRoYXQgdXNlIHRoZSBQRQorCSAgIyBvYmplY3QgZm9ybWF0IHdpdGggRExMIGZpbGVzLiAgU2VlIHRoZSBsb25nIGNvbW1lbnQgYXQgdGhlIHRvcCBvZgorCSAgIyB0ZXN0cy9iaW5kaXIuYXQgZm9yIGZ1bGwgZGV0YWlscy4KIAkgIHRkbG5hbWU9JGRsbmFtZQogCSAgY2FzZSAkaG9zdCwkb3V0cHV0LCRpbnN0YWxsZWQsJG1vZHVsZSwkZGxuYW1lIGluCi0JICAgICpjeWd3aW4qLCpsYWkseWVzLG5vLCouZGxsIHwgKm1pbmd3KiwqbGFpLHllcyxubywqLmRsbCB8ICpjZWdjYyosKmxhaSx5ZXMsbm8sKi5kbGwpIHRkbG5hbWU9Li4vYmluLyRkbG5hbWUgOzsKKwkgICAgKmN5Z3dpbiosKmxhaSx5ZXMsbm8sKi5kbGwgfCAqbWluZ3cqLCpsYWkseWVzLG5vLCouZGxsIHwgKmNlZ2NjKiwqbGFpLHllcyxubywqLmRsbCkKKwkgICAgICAjIElmIGEgLWJpbmRpciBhcmd1bWVudCB3YXMgc3VwcGxpZWQsIHBsYWNlIHRoZSBkbGwgdGhlcmUuCisJICAgICAgaWYgdGVzdCAieCRiaW5kaXIiICE9IHggOworCSAgICAgIHRoZW4KKwkJZnVuY19yZWxhdGl2ZV9wYXRoICIkaW5zdGFsbF9saWJkaXIiICIkYmluZGlyIgorCQl0ZGxuYW1lPSRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0JGRsbmFtZQorCSAgICAgIGVsc2UKKwkJIyBPdGhlcndpc2UgZmFsbCBiYWNrIG9uIGhldXJpc3RpYy4KKwkJdGRsbmFtZT0uLi9iaW4vJGRsbmFtZQorCSAgICAgIGZpCisJICAgICAgOzsKIAkgIGVzYWMKIAkgICRFQ0hPID4gJG91dHB1dCAiXAogIyAkb3V0cHV0bmFtZSAtIGEgbGlidG9vbCBsaWJyYXJ5IGZpbGUKQEAgLTgxODIsNyArOTQxNiw3IEBACiAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCiB9CiAKLXsgdGVzdCAiJG1vZGUiID0gbGluayB8fCB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IH0gJiYKK3sgdGVzdCAiJG9wdF9tb2RlIiA9IGxpbmsgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgfSAmJgogICAgIGZ1bmNfbW9kZV9saW5rICR7MSsiJEAifQogCiAKQEAgLTgyMDIsOSArOTQzNiw5IEBACiAgICAgZm9yIGFyZwogICAgIGRvCiAgICAgICBjYXNlICRhcmcgaW4KLSAgICAgIC1mKSBSTT0iJFJNICRhcmciOyBybWZvcmNlPXllcyA7OwotICAgICAgLSopIFJNPSIkUk0gJGFyZyIgOzsKLSAgICAgICopIGZpbGVzPSIkZmlsZXMgJGFyZyIgOzsKKyAgICAgIC1mKSBmdW5jX2FwcGVuZCBSTSAiICRhcmciOyBybWZvcmNlPXllcyA7OworICAgICAgLSopIGZ1bmNfYXBwZW5kIFJNICIgJGFyZyIgOzsKKyAgICAgICopIGZ1bmNfYXBwZW5kIGZpbGVzICIgJGFyZyIgOzsKICAgICAgIGVzYWMKICAgICBkb25lCiAKQEAgLTgyMTMsMjQgKzk0NDcsMjMgQEAKIAogICAgIHJtZGlycz0KIAotICAgIG9yaWdvYmpkaXI9IiRvYmpkaXIiCiAgICAgZm9yIGZpbGUgaW4gJGZpbGVzOyBkbwogICAgICAgZnVuY19kaXJuYW1lICIkZmlsZSIgIiIgIi4iCiAgICAgICBkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgogICAgICAgaWYgdGVzdCAiWCRkaXIiID0gWC47IHRoZW4KLQlvYmpkaXI9IiRvcmlnb2JqZGlyIgorCW9kaXI9IiRvYmpkaXIiCiAgICAgICBlbHNlCi0Jb2JqZGlyPSIkZGlyLyRvcmlnb2JqZGlyIgorCW9kaXI9IiRkaXIvJG9iamRpciIKICAgICAgIGZpCiAgICAgICBmdW5jX2Jhc2VuYW1lICIkZmlsZSIKICAgICAgIG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLSAgICAgIHRlc3QgIiRtb2RlIiA9IHVuaW5zdGFsbCAmJiBvYmpkaXI9IiRkaXIiCisgICAgICB0ZXN0ICIkb3B0X21vZGUiID0gdW5pbnN0YWxsICYmIG9kaXI9IiRkaXIiCiAKLSAgICAgICMgUmVtZW1iZXIgb2JqZGlyIGZvciByZW1vdmFsIGxhdGVyLCBiZWluZyBjYXJlZnVsIHRvIGF2b2lkIGR1cGxpY2F0ZXMKLSAgICAgIGlmIHRlc3QgIiRtb2RlIiA9IGNsZWFuOyB0aGVuCisgICAgICAjIFJlbWVtYmVyIG9kaXIgZm9yIHJlbW92YWwgbGF0ZXIsIGJlaW5nIGNhcmVmdWwgdG8gYXZvaWQgZHVwbGljYXRlcworICAgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuOyB0aGVuCiAJY2FzZSAiICRybWRpcnMgIiBpbgotCSAgKiIgJG9iamRpciAiKikgOzsKLQkgICopIHJtZGlycz0iJHJtZGlycyAkb2JqZGlyIiA7OworCSAgKiIgJG9kaXIgIiopIDs7CisJICAqKSBmdW5jX2FwcGVuZCBybWRpcnMgIiAkb2RpciIgOzsKIAllc2FjCiAgICAgICBmaQogCkBAIC04MjU2LDE4ICs5NDg5LDE3IEBACiAKIAkgICMgRGVsZXRlIHRoZSBsaWJ0b29sIGxpYnJhcmllcyBhbmQgc3ltbGlua3MuCiAJICBmb3IgbiBpbiAkbGlicmFyeV9uYW1lczsgZG8KLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbiIKKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuIgogCSAgZG9uZQotCSAgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRvbGRfbGlicmFyeSIKKwkgIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRvbGRfbGlicmFyeSIKIAotCSAgY2FzZSAiJG1vZGUiIGluCisJICBjYXNlICIkb3B0X21vZGUiIGluCiAJICBjbGVhbikKLQkgICAgY2FzZSAiICAkbGlicmFyeV9uYW1lcyAiIGluCi0JICAgICMgIiAgIiBpbiB0aGUgYmVnaW5uaW5nIGNhdGNoZXMgZW1wdHkgJGRsbmFtZQorCSAgICBjYXNlICIgJGxpYnJhcnlfbmFtZXMgIiBpbgogCSAgICAqIiAkZGxuYW1lICIqKSA7OwotCSAgICAqKSBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRkbG5hbWUiIDs7CisJICAgICopIHRlc3QgLW4gIiRkbG5hbWUiICYmIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kZGxuYW1lIiA7OwogCSAgICBlc2FjCi0JICAgIHRlc3QgLW4gIiRsaWJkaXIiICYmIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG5hbWUgJG9iamRpci8ke25hbWV9aSIKKwkgICAgdGVzdCAtbiAiJGxpYmRpciIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuYW1lICRvZGlyLyR7bmFtZX1pIgogCSAgICA7OwogCSAgdW5pbnN0YWxsKQogCSAgICBpZiB0ZXN0IC1uICIkbGlicmFyeV9uYW1lcyI7IHRoZW4KQEAgLTgyOTUsMTkgKzk1MjcsMTkgQEAKIAkgICMgQWRkIFBJQyBvYmplY3QgdG8gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gcmVtb3ZlLgogCSAgaWYgdGVzdCAtbiAiJHBpY19vYmplY3QiICYmCiAJICAgICB0ZXN0ICIkcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgotCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZGlyLyRwaWNfb2JqZWN0IgorCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGRpci8kcGljX29iamVjdCIKIAkgIGZpCiAKIAkgICMgQWRkIG5vbi1QSUMgb2JqZWN0IHRvIHRoZSBsaXN0IG9mIGZpbGVzIHRvIHJlbW92ZS4KIAkgIGlmIHRlc3QgLW4gIiRub25fcGljX29iamVjdCIgJiYKIAkgICAgIHRlc3QgIiRub25fcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgotCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZGlyLyRub25fcGljX29iamVjdCIKKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRkaXIvJG5vbl9waWNfb2JqZWN0IgogCSAgZmkKIAlmaQogCTs7CiAKICAgICAgICopCi0JaWYgdGVzdCAiJG1vZGUiID0gY2xlYW4gOyB0aGVuCisJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuIDsgdGhlbgogCSAgbm9leGVuYW1lPSRuYW1lCiAJICBjYXNlICRmaWxlIGluCiAJICAqLmV4ZSkKQEAgLTgzMTcsNyArOTU0OSw3IEBACiAJICAgIG5vZXhlbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJICAgICMgJGZpbGUgd2l0aCAuZXhlIGhhcyBhbHJlYWR5IGJlZW4gYWRkZWQgdG8gcm1maWxlcywKIAkgICAgIyBhZGQgJGZpbGUgd2l0aG91dCAuZXhlCi0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRmaWxlIgorCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGZpbGUiCiAJICAgIDs7CiAJICBlc2FjCiAJICAjIERvIGEgdGVzdCB0byBzZWUgaWYgdGhpcyBpcyBhIGxpYnRvb2wgcHJvZ3JhbS4KQEAgLTgzMjYsNyArOTU1OCw3IEBACiAJICAgICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZSAiJGZpbGUiCiAJICAgICAgcmVsaW5rX2NvbW1hbmQ9CiAJICAgICAgZnVuY19zb3VyY2UgJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0Ci0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0IgorCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQiCiAJICAgIGVsc2UKIAkgICAgICByZWxpbmtfY29tbWFuZD0KIAkgICAgICBmdW5jX3NvdXJjZSAkZGlyLyRub2V4ZW5hbWUKQEAgLTgzMzQsMTIgKzk1NjYsMTIgQEAKIAogCSAgICAjIG5vdGUgJG5hbWUgc3RpbGwgY29udGFpbnMgLmV4ZSBpZiBpdCB3YXMgaW4gJGZpbGUgb3JpZ2luYWxseQogCSAgICAjIGFzIGRvZXMgdGhlIHZlcnNpb24gb2YgJGZpbGUgdGhhdCB3YXMgYWRkZWQgaW50byAkcm1maWxlcwotCSAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuYW1lICRvYmpkaXIvJHtuYW1lfVMuJHtvYmpleHR9IgorCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG5hbWUgJG9kaXIvJHtuYW1lfVMuJHtvYmpleHR9IgogCSAgICBpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiA9IHllcyAmJiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCi0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci9sdC0kbmFtZSIKKwkgICAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvbHQtJG5hbWUiCiAJICAgIGZpCiAJICAgIGlmIHRlc3QgIlgkbm9leGVuYW1lIiAhPSAiWCRuYW1lIiA7IHRoZW4KLQkgICAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyL2x0LSR7bm9leGVuYW1lfS5jIgorCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci9sdC0ke25vZXhlbmFtZX0uYyIKIAkgICAgZmkKIAkgIGZpCiAJZmkKQEAgLTgzNDcsNyArOTU3OSw2IEBACiAgICAgICBlc2FjCiAgICAgICBmdW5jX3Nob3dfZXZhbCAiJFJNICRybWZpbGVzIiAnZXhpdF9zdGF0dXM9MScKICAgICBkb25lCi0gICAgb2JqZGlyPSIkb3JpZ29iamRpciIKIAogICAgICMgVHJ5IHRvIHJlbW92ZSB0aGUgJHtvYmpkaXJ9cyBpbiB0aGUgZGlyZWN0b3JpZXMgd2hlcmUgd2UgZGVsZXRlZCBmaWxlcwogICAgIGZvciBkaXIgaW4gJHJtZGlyczsgZG8KQEAgLTgzNTksMTYgKzk1OTAsMTYgQEAKICAgICBleGl0ICRleGl0X3N0YXR1cwogfQogCi17IHRlc3QgIiRtb2RlIiA9IHVuaW5zdGFsbCB8fCB0ZXN0ICIkbW9kZSIgPSBjbGVhbjsgfSAmJgoreyB0ZXN0ICIkb3B0X21vZGUiID0gdW5pbnN0YWxsIHx8IHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbjsgfSAmJgogICAgIGZ1bmNfbW9kZV91bmluc3RhbGwgJHsxKyIkQCJ9CiAKLXRlc3QgLXogIiRtb2RlIiAmJiB7Cit0ZXN0IC16ICIkb3B0X21vZGUiICYmIHsKICAgaGVscD0iJGdlbmVyaWNfaGVscCIKICAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGEgTU9ERSIKIH0KIAogdGVzdCAteiAiJGV4ZWNfY21kIiAmJiBcCi0gIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRtb2RlJyIKKyAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG9wdF9tb2RlJyIKIAogaWYgdGVzdCAtbiAiJGV4ZWNfY21kIjsgdGhlbgogICBldmFsIGV4ZWMgIiRleGVjX2NtZCIKZGlmZiAtLWdpdCBhL200L2xpYnRvb2wubTQgYi9tNC9saWJ0b29sLm00CmluZGV4IDM5YmE5OTYuLmQ4MTI1ODQgMTAwNjQ0Ci0tLSBhL200L2xpYnRvb2wubTQKKysrIGIvbTQvbGlidG9vbC5tNApAQCAtMSw3ICsxLDggQEAKICMgbGlidG9vbC5tNCAtIENvbmZpZ3VyZSBsaWJ0b29sIGZvciB0aGUgaG9zdCBzeXN0ZW0uIC0qLUF1dG9jb25mLSotCiAjCiAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorIyAgICAgICAgICAgICAgICAgSW5jLgogIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKQEAgLTEwLDcgKzExLDggQEAKIAogbTRfZGVmaW5lKFtfTFRfQ09QWUlOR10sIFtkbmwKICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisjICAgICAgICAgICAgICAgICBJbmMuCiAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgogIwogIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgpAQCAtMzcsNyArMzksNyBAQAogIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KIF0pCiAKLSMgc2VyaWFsIDU2IExUX0lOSVQKKyMgc2VyaWFsIDU3IExUX0lOSVQKIAogCiAjIExUX1BSRVJFUShWRVJTSU9OKQpAQCAtNjYsNiArNjgsNyBAQAogIyAtLS0tLS0tLS0tLS0tLS0tLS0KIEFDX0RFRlVOKFtMVF9JTklUXSwKIFtBQ19QUkVSRVEoWzIuNThdKWRubCBXZSB1c2UgQUNfSU5DTFVERVNfREVGQVVMVAorQUNfUkVRVUlSRShbQUNfQ09ORklHX0FVWF9ESVJfREVGQVVMVF0pZG5sCiBBQ19CRUZPUkUoWyQwXSwgW0xUX0xBTkddKWRubAogQUNfQkVGT1JFKFskMF0sIFtMVF9PVVRQVVRdKWRubAogQUNfQkVGT1JFKFskMF0sIFtMVERMX0lOSVRdKWRubApAQCAtODIsNiArODUsOCBAQAogQUNfUkVRVUlSRShbTFRPQlNPTEVURV9WRVJTSU9OXSlkbmwKIG00X3JlcXVpcmUoW19MVF9QUk9HX0xUTUFJTl0pZG5sCiAKK19MVF9TSEVMTF9JTklUKFtTSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofV0pCisKIGRubCBQYXJzZSBPUFRJT05TCiBfTFRfU0VUX09QVElPTlMoWyQwXSwgWyQxXSkKIApAQCAtMTE4LDcgKzEyMyw3IEBACiAgICAgKikgYnJlYWs7OwogICBlc2FjCiBkb25lCi1jY19iYXNlbmFtZT1gJEVDSE8gIlgkY2NfdGVtcCIgfCAkWHNlZCAtZSAncyUuKi8lJScgLWUgInMlXiRob3N0X2FsaWFzLSUlImAKK2NjX2Jhc2VuYW1lPWAkRUNITyAiJGNjX3RlbXAiIHwgJFNFRCAicyUuKi8lJTsgcyVeJGhvc3RfYWxpYXMtJSUiYAogXSkKIAogCkBAIC0xMzgsNiArMTQzLDkgQEAKIG00X2RlZnVuKFtfTFRfU0VUVVBdLAogW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9CVUlMRF0pZG5sCitBQ19SRVFVSVJFKFtfTFRfUFJFUEFSRV9TRURfUVVPVEVfVkFSU10pZG5sCitBQ19SRVFVSVJFKFtfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSF0pZG5sCisKIF9MVF9ERUNMKFtdLCBbaG9zdF9hbGlhc10sIFswXSwgW1RoZSBob3N0IHN5c3RlbV0pZG5sCiBfTFRfREVDTChbXSwgW2hvc3RdLCBbMF0pZG5sCiBfTFRfREVDTChbXSwgW2hvc3Rfb3NdLCBbMF0pZG5sCkBAIC0xNjAsMTAgKzE2OCwxMyBAQAogZG5sCiBtNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKIG00X3JlcXVpcmUoW19MVF9DSEVDS19TSEVMTF9GRUFUVVJFU10pZG5sCittNF9yZXF1aXJlKFtfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OU10pZG5sCiBtNF9yZXF1aXJlKFtfTFRfQ01EX1JFTE9BRF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9EXSlkbmwKK200X3JlcXVpcmUoW19MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCXSlkbmwKIG00X3JlcXVpcmUoW19MVF9DTURfT0xEX0FSQ0hJVkVdKWRubAogbTRfcmVxdWlyZShbX0xUX0NNRF9HTE9CQUxfU1lNQk9MU10pZG5sCittNF9yZXF1aXJlKFtfTFRfV0lUSF9TWVNST09UXSlkbmwKIAogX0xUX0NPTkZJR19MSUJUT09MX0lOSVQoWwogIyBTZWUgaWYgd2UgYXJlIHJ1bm5pbmcgb24genNoLCBhbmQgc2V0IHRoZSBvcHRpb25zIHdoaWNoIGFsbG93IG91cgpAQCAtMTc5LDcgKzE5MCw2IEBACiBfTFRfQ0hFQ0tfT0JKRElSCiAKIG00X3JlcXVpcmUoW19MVF9UQUdfQ09NUElMRVJdKWRubAotX0xUX1BST0dfRUNIT19CQUNLU0xBU0gKIAogY2FzZSAkaG9zdF9vcyBpbgogYWl4MyopCkBAIC0xOTMsMjMgKzIwMyw2IEBACiAgIDs7CiBlc2FjCiAKLSMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGhlbHBzIHVzIGRvIHJvYnVzdCBxdW90aW5nLiAgSXQgYmFja3NsYXNoaWZpZXMKLSMgbWV0YWNoYXJhY3RlcnMgdGhhdCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbiBkb3VibGUtcXVvdGVkIHN0cmluZ3MuCi1zZWRfcXVvdGVfc3Vic3Q9J3MvXChbWyJgJFxcXV1cKS9cXFwxL2cnCi0KLSMgU2FtZSBhcyBhYm92ZSwgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgotZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woW1siYFxcXV1cKS9cXFwxL2cnCi0KLSMgU2VkIHN1YnN0aXR1dGlvbiB0byBkZWxheSBleHBhbnNpb24gb2YgYW4gZXNjYXBlZCBzaGVsbCB2YXJpYWJsZSBpbiBhCi0jIGRvdWJsZV9xdW90ZV9zdWJzdCdlZCBzdHJpbmcuCi1kZWxheV92YXJpYWJsZV9zdWJzdD0ncy9cXFxcXFxcXFxcXCQvXFxcXFxcJC9nJwotCi0jIFNlZCBzdWJzdGl0dXRpb24gdG8gZGVsYXkgZXhwYW5zaW9uIG9mIGFuIGVzY2FwZWQgc2luZ2xlIHF1b3RlLgotZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0PSdzLydcJycvJ1wnXFxcXFxcXCdcJycvZycKLQotIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGF2b2lkIGFjY2lkZW50YWwgZ2xvYmJpbmcgaW4gZXZhbGVkIGV4cHJlc3Npb25zCi1ub19nbG9iX3N1YnN0PSdzL1wqL1xcXCovZycKLQogIyBHbG9iYWwgdmFyaWFibGVzOgogb2ZpbGU9bGlidG9vbAogY2FuX2J1aWxkX3NoYXJlZD15ZXMKQEAgLTI1MCw2ICsyNDMsMjggQEAKIF0pIyBfTFRfU0VUVVAKIAogCisjIF9MVF9QUkVQQVJFX1NFRF9RVU9URV9WQVJTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERlZmluZSBhIGZldyBzZWQgc3Vic3RpdHV0aW9uIHRoYXQgaGVscCB1cyBkbyByb2J1c3QgcXVvdGluZy4KK200X2RlZnVuKFtfTFRfUFJFUEFSRV9TRURfUVVPVEVfVkFSU10sCitbIyBCYWNrc2xhc2hpZnkgbWV0YWNoYXJhY3RlcnMgdGhhdCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbgorIyBkb3VibGUtcXVvdGVkIHN0cmluZ3MuCitzZWRfcXVvdGVfc3Vic3Q9J3MvXChbWyJgJFxcXV1cKS9cXFwxL2cnCisKKyMgU2FtZSBhcyBhYm92ZSwgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgorZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woW1siYFxcXV1cKS9cXFwxL2cnCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0byBkZWxheSBleHBhbnNpb24gb2YgYW4gZXNjYXBlZCBzaGVsbCB2YXJpYWJsZSBpbiBhCisjIGRvdWJsZV9xdW90ZV9zdWJzdCdlZCBzdHJpbmcuCitkZWxheV92YXJpYWJsZV9zdWJzdD0ncy9cXFxcXFxcXFxcXCQvXFxcXFxcJC9nJworCisjIFNlZCBzdWJzdGl0dXRpb24gdG8gZGVsYXkgZXhwYW5zaW9uIG9mIGFuIGVzY2FwZWQgc2luZ2xlIHF1b3RlLgorZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0PSdzLydcJycvJ1wnXFxcXFxcXCdcJycvZycKKworIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGF2b2lkIGFjY2lkZW50YWwgZ2xvYmJpbmcgaW4gZXZhbGVkIGV4cHJlc3Npb25zCitub19nbG9iX3N1YnN0PSdzL1wqL1xcXCovZycKK10pCisKICMgX0xUX1BST0dfTFRNQUlOCiAjIC0tLS0tLS0tLS0tLS0tLQogIyBOb3RlIHRoYXQgdGhpcyBjb2RlIGlzIGNhbGxlZCBib3RoIGZyb20gYGNvbmZpZ3VyZScsIGFuZCBgY29uZmlnLnN0YXR1cycKQEAgLTQwOCw3ICs0MjMsNyBAQAogIyBkZWNsYXJhdGlvbiB0aGVyZSB3aWxsIGhhdmUgdGhlIHNhbWUgdmFsdWUgYXMgaW4gYGNvbmZpZ3VyZScuICBWQVJOQU1FCiAjIG11c3QgaGF2ZSBhIHNpbmdsZSBxdW90ZSBkZWxpbWl0ZWQgdmFsdWUgZm9yIHRoaXMgdG8gd29yay4KIG00X2RlZmluZShbX0xUX0NPTkZJR19TVEFUVVNfREVDTEFSRV0sCi1bJDE9J2AkRUNITyAiWCRdWyQxIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnXSkKK1skMT0nYCRFQ0hPICIkXVskMSIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnXSkKIAogCiAjIF9MVF9DT05GSUdfU1RBVFVTX0RFQ0xBUkFUSU9OUwpAQCAtNDE4LDcgKzQzMyw3IEBACiAjIGVtYmVkZGVkIHNpbmdsZSBxdW90ZXMgcHJvcGVybHkuICBJbiBjb25maWd1cmUsIHRoaXMgbWFjcm8gZXhwYW5kcwogIyBlYWNoIHZhcmlhYmxlIGRlY2xhcmVkIHdpdGggX0xUX0RFQ0wgKGFuZCBfTFRfVEFHREVDTCkgaW50bzoKICMKLSMgICAgPHZhcj49J2AkRUNITyAiWCQ8dmFyPiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIyAgICA8dmFyPj0nYCRFQ0hPICIkPHZhcj4iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogbTRfZGVmdW4oW19MVF9DT05GSUdfU1RBVFVTX0RFQ0xBUkFUSU9OU10sCiBbbTRfZm9yZWFjaChbX2x0X3Zhcl0sIG00X3F1b3RlKGx0X2RlY2xfYWxsX3Zhcm5hbWVzKSwKICAgICBbbTRfbihbX0xUX0NPTkZJR19TVEFUVVNfREVDTEFSRShfbHRfdmFyKV0pXSldKQpAQCAtNTE3LDEyICs1MzIsMjAgQEAKIExUQ0ZMQUdTPSckTFRDRkxBR1MnCiBjb21waWxlcj0nJGNvbXBpbGVyX0RFRkFVTFQnCiAKKyMgQSBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgd2hlbiB0aGVyZSBpcyBubyBwcmludCBidWlsdGluIG9yIHByaW50Zi4KK2Z1bmNfZmFsbGJhY2tfZWNobyAoKQoreworICBldmFsICdjYXQgPDxfTFRFQ0hPX0VPRgorXCRbXTEKK19MVEVDSE9fRU9GJworfQorCiAjIFF1b3RlIGV2YWxlZCBzdHJpbmdzLgogZm9yIHZhciBpbiBsdF9kZWNsX2FsbF92YXJuYW1lcyhbWyBcCiBdXSwgbHRfZGVjbF9xdW90ZV92YXJuYW1lcyk7IGRvCi0gICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyAiWFxcXFxcJFwkdmFyIlxgIGluCisgICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyBcXFxcIiJcXFxcXCRcJHZhciJcXFxcIlxgIGluCiAgICAgKltbXFxcXFxcXGBcXCJcXFwkXV0qKQotICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJYXFxcJFwkdmFyXFwiIHwgXFxcJFhzZWQgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgorICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKICAgICAgIDs7CiAgICAgKikKICAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFwkXCR2YXJcXFxcXFwiIgpAQCAtNTMzLDkgKzU1Niw5IEBACiAjIERvdWJsZS1xdW90ZSBkb3VibGUtZXZhbGVkIHN0cmluZ3MuCiBmb3IgdmFyIGluIGx0X2RlY2xfYWxsX3Zhcm5hbWVzKFtbIFwKIF1dLCBsdF9kZWNsX2RxdW90ZV92YXJuYW1lcyk7IGRvCi0gICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyAiWFxcXFxcJFwkdmFyIlxgIGluCisgICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyBcXFxcIiJcXFxcXCRcJHZhciJcXFxcIlxgIGluCiAgICAgKltbXFxcXFxcXGBcXCJcXFwkXV0qKQotICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJYXFxcJFwkdmFyXFwiIHwgXFxcJFhzZWQgLWUgXFwiXFxcJGRvdWJsZV9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRkZWxheV92YXJpYWJsZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgorICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIC1lIFxcIlxcXCRkb3VibGVfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkZGVsYXlfdmFyaWFibGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKICAgICAgIDs7CiAgICAgKikKICAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFwkXCR2YXJcXFxcXFwiIgpAQCAtNTQzLDE2ICs1NjYsMzggQEAKICAgICBlc2FjCiBkb25lCiAKLSMgRml4LXVwIGZhbGxiYWNrIGVjaG8gaWYgaXQgd2FzIG1hbmdsZWQgYnkgdGhlIGFib3ZlIHF1b3RpbmcgcnVsZXMuCi1jYXNlIFwkbHRfRUNITyBpbgotKidcXFxbJF0wIC0tZmFsbGJhY2stZWNobyInKWRubCAiCi0gIGx0X0VDSE89XGBcJEVDSE8gIlhcJGx0X0VDSE8iIHwgXCRYc2VkIC1lICdzL1xcXFxcXFxcXFxcXFxcXFskXTAgLS1mYWxsYmFjay1lY2hvIlxbJF0vXFskXTAgLS1mYWxsYmFjay1lY2hvIi8nXGAKLSAgOzsKLWVzYWMKLQogX0xUX09VVFBVVF9MSUJUT09MX0lOSVQKIF0pCiAKKyMgX0xUX0dFTkVSQVRFRF9GSUxFX0lOSVQoRklMRSwgW0NPTU1FTlRdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgR2VuZXJhdGUgYSBjaGlsZCBzY3JpcHQgRklMRSB3aXRoIGFsbCBpbml0aWFsaXphdGlvbiBuZWNlc3NhcnkgdG8KKyMgcmV1c2UgdGhlIGVudmlyb25tZW50IGxlYXJuZWQgYnkgdGhlIHBhcmVudCBzY3JpcHQsIGFuZCBtYWtlIHRoZQorIyBmaWxlIGV4ZWN1dGFibGUuICBJZiBDT01NRU5UIGlzIHN1cHBsaWVkLCBpdCBpcyBpbnNlcnRlZCBhZnRlciB0aGUKKyMgYCMhJyBzZXF1ZW5jZSBidXQgYmVmb3JlIGluaXRpYWxpemF0aW9uIHRleHQgYmVnaW5zLiAgQWZ0ZXIgdGhpcworIyBtYWNybywgYWRkaXRpb25hbCB0ZXh0IGNhbiBiZSBhcHBlbmRlZCB0byBGSUxFIHRvIGZvcm0gdGhlIGJvZHkgb2YKKyMgdGhlIGNoaWxkIHNjcmlwdC4gIFRoZSBtYWNybyBlbmRzIHdpdGggbm9uLXplcm8gc3RhdHVzIGlmIHRoZQorIyBmaWxlIGNvdWxkIG5vdCBiZSBmdWxseSB3cml0dGVuIChzdWNoIGFzIGlmIHRoZSBkaXNrIGlzIGZ1bGwpLgorbTRfaWZkZWYoW0FTX0lOSVRfR0VORVJBVEVEXSwKK1ttNF9kZWZ1bihbX0xUX0dFTkVSQVRFRF9GSUxFX0lOSVRdLFtBU19JTklUX0dFTkVSQVRFRCgkQCldKV0sCitbbTRfZGVmdW4oW19MVF9HRU5FUkFURURfRklMRV9JTklUXSwKK1ttNF9yZXF1aXJlKFtBU19QUkVQQVJFXSldZG5sCitbbTRfcHVzaGRlZihbQVNfTUVTU0FHRV9MT0dfRkRdKV1kbmwKK1tsdF93cml0ZV9mYWlsPTAKK2NhdCA+JDEgPDxfQVNFT0YgfHwgbHRfd3JpdGVfZmFpbD0xCisjISAkU0hFTEwKKyMgR2VuZXJhdGVkIGJ5ICRhc19tZS4KKyQyCitTSEVMTD1cJHtDT05GSUdfU0hFTEwtJFNIRUxMfQorZXhwb3J0IFNIRUxMCitfQVNFT0YKK2NhdCA+PiQxIDw8XF9BU0VPRiB8fCBsdF93cml0ZV9mYWlsPTEKK0FTX1NIRUxMX1NBTklUSVpFCitfQVNfUFJFUEFSRQorZXhlYyBBU19NRVNTQUdFX0ZEPiYxCitfQVNFT0YKK3Rlc3QgJGx0X3dyaXRlX2ZhaWwgPSAwICYmIGNobW9kICt4ICQxW11kbmwKK200X3BvcGRlZihbQVNfTUVTU0FHRV9MT0dfRkRdKV0pXSkjIF9MVF9HRU5FUkFURURfRklMRV9JTklUCiAKICMgTFRfT1VUUFVUCiAjIC0tLS0tLS0tLQpAQCAtNTYyLDIwICs2MDcsMTEgQEAKIEFDX0RFRlVOKFtMVF9PVVRQVVRdLAogWzogJHtDT05GSUdfTFQ9Li9jb25maWcubHR9CiBBQ19NU0dfTk9USUNFKFtjcmVhdGluZyAkQ09ORklHX0xUXSkKLWNhdCA+IiRDT05GSUdfTFQiIDw8X0xURU9GCi0jISAkU0hFTEwKLSMgR2VuZXJhdGVkIGJ5ICRhc19tZS4KLSMgUnVuIHRoaXMgZmlsZSB0byByZWNyZWF0ZSBhIGxpYnRvb2wgc3R1YiB3aXRoIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCi0KLWx0X2NsX3NpbGVudD1mYWxzZQotU0hFTEw9XCR7Q09ORklHX1NIRUxMLSRTSEVMTH0KLV9MVEVPRgorX0xUX0dFTkVSQVRFRF9GSUxFX0lOSVQoWyIkQ09ORklHX0xUIl0sCitbIyBSdW4gdGhpcyBmaWxlIHRvIHJlY3JlYXRlIGEgbGlidG9vbCBzdHViIHdpdGggdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi5dKQogCiBjYXQgPj4iJENPTkZJR19MVCIgPDxcX0xURU9GCi1BU19TSEVMTF9TQU5JVElaRQotX0FTX1BSRVBBUkUKLQotZXhlYyBBU19NRVNTQUdFX0ZEPiYxCitsdF9jbF9zaWxlbnQ9ZmFsc2UKIGV4ZWMgQVNfTUVTU0FHRV9MT0dfRkQ+PmNvbmZpZy5sb2cKIHsKICAgZWNobwpAQCAtNjAxLDcgKzYzNyw3IEBACiBtNF9pZnNldChbQUNfUEFDS0FHRV9WRVJTSU9OXSwgWyBBQ19QQUNLQUdFX1ZFUlNJT05dKQogY29uZmlndXJlZCBieSAkWzBdLCBnZW5lcmF0ZWQgYnkgbTRfUEFDS0FHRV9TVFJJTkcuCiAKLUNvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK0NvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIFRoaXMgY29uZmlnLmx0IHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4iCiAKQEAgLTY0NiwxNSArNjgyLDEzIEBACiAjIGFwcGVuZGluZyB0byBjb25maWcubG9nLCB3aGljaCBmYWlscyBvbiBET1MsIGFzIGNvbmZpZy5sb2cgaXMgc3RpbGwga2VwdAogIyBvcGVuIGJ5IGNvbmZpZ3VyZS4gIEhlcmUgd2UgZXhlYyB0aGUgRkQgdG8gL2Rldi9udWxsLCBlZmZlY3RpdmVseSBjbG9zaW5nCiAjIGNvbmZpZy5sb2csIHNvIGl0IGNhbiBiZSBwcm9wZXJseSAocmUpb3BlbmVkIGFuZCBhcHBlbmRlZCB0byBieSBjb25maWcubHQuCi1pZiB0ZXN0ICIkbm9fY3JlYXRlIiAhPSB5ZXM7IHRoZW4KLSAgbHRfY2xfc3VjY2Vzcz06Ci0gIHRlc3QgIiRzaWxlbnQiID0geWVzICYmCi0gICAgbHRfY29uZmlnX2x0X2FyZ3M9IiRsdF9jb25maWdfbHRfYXJncyAtLXF1aWV0IgotICBleGVjIEFTX01FU1NBR0VfTE9HX0ZEPi9kZXYvbnVsbAotICAkU0hFTEwgIiRDT05GSUdfTFQiICRsdF9jb25maWdfbHRfYXJncyB8fCBsdF9jbF9zdWNjZXNzPWZhbHNlCi0gIGV4ZWMgQVNfTUVTU0FHRV9MT0dfRkQ+PmNvbmZpZy5sb2cKLSAgJGx0X2NsX3N1Y2Nlc3MgfHwgQVNfRVhJVCgxKQotZmkKK2x0X2NsX3N1Y2Nlc3M9OgordGVzdCAiJHNpbGVudCIgPSB5ZXMgJiYKKyAgbHRfY29uZmlnX2x0X2FyZ3M9IiRsdF9jb25maWdfbHRfYXJncyAtLXF1aWV0IgorZXhlYyBBU19NRVNTQUdFX0xPR19GRD4vZGV2L251bGwKKyRTSEVMTCAiJENPTkZJR19MVCIgJGx0X2NvbmZpZ19sdF9hcmdzIHx8IGx0X2NsX3N1Y2Nlc3M9ZmFsc2UKK2V4ZWMgQVNfTUVTU0FHRV9MT0dfRkQ+PmNvbmZpZy5sb2cKKyRsdF9jbF9zdWNjZXNzIHx8IEFTX0VYSVQoMSkKIF0pIyBMVF9PVVRQVVQKIAogCkBAIC03MTcsMTUgKzc1MSwxMiBAQAogICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCiAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCiAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/Ci0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQogCi0gIF9MVF9QUk9HX1hTSV9TSEVMTEZOUworICBfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TCiAKLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0KLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAogICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCiAgIGNobW9kICt4ICIkb2ZpbGUiCiBdLApAQCAtODMxLDExICs4NjIsMTMgQEAKIEFVX0RFRlVOKFtBQ19MSUJUT09MX0Y3N10sIFtMVF9MQU5HKEZvcnRyYW4gNzcpXSkKIEFVX0RFRlVOKFtBQ19MSUJUT09MX0ZDXSwgW0xUX0xBTkcoRm9ydHJhbildKQogQVVfREVGVU4oW0FDX0xJQlRPT0xfR0NKXSwgW0xUX0xBTkcoSmF2YSldKQorQVVfREVGVU4oW0FDX0xJQlRPT0xfUkNdLCBbTFRfTEFORyhXaW5kb3dzIFJlc291cmNlKV0pCiBkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CiBkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfQ1hYXSwgW10pCiBkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfRjc3XSwgW10pCiBkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfRkNdLCBbXSkKIGRubCBBQ19ERUZVTihbQUNfTElCVE9PTF9HQ0pdLCBbXSkKK2RubCBBQ19ERUZVTihbQUNfTElCVE9PTF9SQ10sIFtdKQogCiAKICMgX0xUX1RBR19DT01QSUxFUgpAQCAtOTQwLDYgKzk3MywzMSBAQAogCVtsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3Q9bm9dKQogCUxERkxBR1M9IiRzYXZlX0xERkxBR1MiCiAgICAgXSkKKyAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIC1mb3JjZV9sb2FkIGxpbmtlciBmbGFnXSxbbHRfY3ZfbGRfZm9yY2VfbG9hZF0sCisgICAgICBbbHRfY3ZfbGRfZm9yY2VfbG9hZD1ubworICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCitpbnQgZm9yY2VkX2xvYWRlZCgpIHsgcmV0dXJuIDI7fQorX0xUX0VPRgorICAgICAgZWNobyAiJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCitpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorX0xUX0VPRgorICAgICAgZWNobyAiJExUQ0MgJExUQ0ZMQUdTICRMREZMQUdTIC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMgLVdsLC1mb3JjZV9sb2FkLC4vbGliY29uZnRlc3QuYSIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgJExUQ0MgJExUQ0ZMQUdTICRMREZMQUdTIC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMgLVdsLC1mb3JjZV9sb2FkLC4vbGliY29uZnRlc3QuYSAyPmNvbmZ0ZXN0LmVycgorICAgICAgX2x0X3Jlc3VsdD0kPworICAgICAgaWYgdGVzdCAtZiBjb25mdGVzdCAmJiB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyICYmIHRlc3QgJF9sdF9yZXN1bHQgPSAwICYmICRHUkVQIGZvcmNlZF9sb2FkIGNvbmZ0ZXN0IDI+JjEgPi9kZXYvbnVsbDsgdGhlbgorCWx0X2N2X2xkX2ZvcmNlX2xvYWQ9eWVzCisgICAgICBlbHNlCisJY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICBmaQorICAgICAgICBybSAtZiBjb25mdGVzdC5lcnIgbGliY29uZnRlc3QuYSBjb25mdGVzdCBjb25mdGVzdC5jCisgICAgICAgIHJtIC1yZiBjb25mdGVzdC5kU1lNCisgICAgXSkKICAgICBjYXNlICRob3N0X29zIGluCiAgICAgcmhhcHNvZHkqIHwgZGFyd2luMS5bWzAxMl1dKQogICAgICAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR7d2x9LXVuZGVmaW5lZCAke3dsfXN1cHByZXNzJyA7OwpAQCAtOTY3LDcgKzEwMjUsNyBAQAogICAgIGVsc2UKICAgICAgIF9sdF9kYXJfZXhwb3J0X3N5bXM9J34kTk1FRElUIC1zICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0tc3ltYm9scy5leHBzeW0gJHtsaWJ9JwogICAgIGZpCi0gICAgaWYgdGVzdCAiJERTWU1VVElMIiAhPSAiOiI7IHRoZW4KKyAgICBpZiB0ZXN0ICIkRFNZTVVUSUwiICE9ICI6IiAmJiB0ZXN0ICIkbHRfY3ZfbGRfZm9yY2VfbG9hZCIgPSAibm8iOyB0aGVuCiAgICAgICBfbHRfZHN5bXV0aWw9J34kRFNZTVVUSUwgJGxpYiB8fCA6JwogICAgIGVsc2UKICAgICAgIF9sdF9kc3ltdXRpbD0KQEAgLTk4Nyw3ICsxMDQ1LDExIEBACiAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KICAgX0xUX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKT15ZXMKICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9dW5zdXBwb3J0ZWQKLSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScnCisgIGlmIHRlc3QgIiRsdF9jdl9sZF9mb3JjZV9sb2FkIiA9ICJ5ZXMiOyB0aGVuCisgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSdgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UgJHt3bH0tZm9yY2VfbG9hZCwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCcKKyAgZWxzZQorICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJworICBmaQogICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSIkX2x0X2Rhcl9hbGxvd191bmRlZmluZWQiCiAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCkBAIC05OTUsNyArMTA1Nyw3IEBACiAgICAgICopIF9sdF9kYXJfY2FuX3NoYXJlZD0kR0NDIDs7CiAgIGVzYWMKICAgaWYgdGVzdCAiJF9sdF9kYXJfY2FuX3NoYXJlZCIgPSAieWVzIjsgdGhlbgotICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPWVjaG8KKyAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD1mdW5jX2VjaG9fYWxsCiAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0iXCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJF9sdF9kYXJfc2luZ2xlX21vZCR7X2x0X2RzeW11dGlsfSIKICAgICBfTFRfVEFHVkFSKG1vZHVsZV9jbWRzLCAkMSk9IlwkQ0MgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiAtYnVuZGxlIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyR7X2x0X2RzeW11dGlsfSIKICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ic2VkICdzLF4sXywnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX5cJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyAke19sdF9kYXJfc2luZ2xlX21vZH0ke19sdF9kYXJfZXhwb3J0X3N5bXN9JHtfbHRfZHN5bXV0aWx9IgpAQCAtMTAxMSwyMDMgKzEwNzMsMTQyIEBACiAgIGZpCiBdKQogCi0jIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFtUQUdOQU1FXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBMaW5rcyBhIG1pbmltYWwgcHJvZ3JhbSBhbmQgY2hlY2tzIHRoZSBleGVjdXRhYmxlCiAjIGZvciB0aGUgc3lzdGVtIGRlZmF1bHQgaGFyZGNvZGVkIGxpYnJhcnkgcGF0aC4gSW4gbW9zdCBjYXNlcywKICMgdGhpcyBpcyAvdXNyL2xpYjovbGliLCBidXQgd2hlbiB0aGUgTVBJIGNvbXBpbGVycyBhcmUgdXNlZAogIyB0aGUgbG9jYXRpb24gb2YgdGhlIGNvbW11bmljYXRpb24gYW5kIE1QSSBsaWJzIGFyZSBpbmNsdWRlZCB0b28uCiAjIElmIHdlIGRvbid0IGZpbmQgYW55dGhpbmcsIHVzZSB0aGUgZGVmYXVsdCBsaWJyYXJ5IHBhdGggYWNjb3JkaW5nCiAjIHRvIHRoZSBhaXggbGQgbWFudWFsLgorIyBTdG9yZSB0aGUgcmVzdWx0cyBmcm9tIHRoZSBkaWZmZXJlbnQgY29tcGlsZXJzIGZvciBlYWNoIFRBR05BTUUuCisjIEFsbG93IHRvIG92ZXJyaWRlIHRoZW0gZm9yIGFsbCB0YWdzIHRocm91Z2ggbHRfY3ZfYWl4X2xpYnBhdGguCiBtNF9kZWZ1bihbX0xUX1NZU19NT0RVTEVfUEFUSF9BSVhdLAogW200X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCi1BQ19MSU5LX0lGRUxTRShBQ19MQU5HX1BST0dSQU0sWwotbHRfYWl4X2xpYnBhdGhfc2VkPScKLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0JL14wLyB7Ci0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotCSAgICBwCi0JfQotICAgIH0nCi1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi1maV0sW10pCi1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK2lmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCitlbHNlCisgIEFDX0NBQ0hFX1ZBTChbX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSldLAorICBbQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTV0sWworICBsdF9haXhfbGlicGF0aF9zZWQ9J1sKKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKwkgIC9eMC8geworCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisJICAgICAgcAorCSAgfQorICAgICAgfV0nCisgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisgIGlmIHRlc3QgLXogIiRfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKSI7IHRoZW4KKyAgICBfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKT1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKyAgZmldLFtdKQorICBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkiOyB0aGVuCisgICAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9Ii91c3IvbGliOi9saWIiCisgIGZpCisgIF0pCisgIGFpeF9saWJwYXRoPSRfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKQorZmkKIF0pIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAogCiAKICMgX0xUX1NIRUxMX0lOSVQoQVJHKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tCiBtNF9kZWZpbmUoW19MVF9TSEVMTF9JTklUXSwKLVtpZmRlZihbQUNfRElWRVJTSU9OX05PVElDRV0sCi0JICAgICBbQUNfRElWRVJUX1BVU0goQUNfRElWRVJTSU9OX05PVElDRSldLAotCSBbQUNfRElWRVJUX1BVU0goTk9USUNFKV0pCi0kMQotQUNfRElWRVJUX1BPUAotXSkjIF9MVF9TSEVMTF9JTklUCitbbTRfZGl2ZXJ0X3RleHQoW000U0gtSU5JVF0sIFskMQorXSldKSMgX0xUX1NIRUxMX0lOSVQKKwogCiAKICMgX0xUX1BST0dfRUNIT19CQUNLU0xBU0gKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQWRkIHNvbWUgY29kZSB0byB0aGUgc3RhcnQgb2YgdGhlIGdlbmVyYXRlZCBjb25maWd1cmUgc2NyaXB0IHdoaWNoCi0jIHdpbGwgZmluZCBhbiBlY2hvIGNvbW1hbmQgd2hpY2ggZG9lc24ndCBpbnRlcnByZXQgYmFja3NsYXNoZXMuCisjIEZpbmQgaG93IHdlIGNhbiBmYWtlIGFuIGVjaG8gY29tbWFuZCB0aGF0IGRvZXMgbm90IGludGVycHJldCBiYWNrc2xhc2guCisjIEluIHBhcnRpY3VsYXIsIHdpdGggQXV0b2NvbmYgMi42MCBvciBsYXRlciB3ZSBhZGQgc29tZSBjb2RlIHRvIHRoZSBzdGFydAorIyBvZiB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyZSBzY3JpcHQgd2hpY2ggd2lsbCBmaW5kIGEgc2hlbGwgd2l0aCBhIGJ1aWx0aW4KKyMgcHJpbnRmICh3aGljaCB3ZSBjYW4gdXNlIGFzIGFuIGVjaG8gY29tbWFuZCkuCiBtNF9kZWZ1bihbX0xUX1BST0dfRUNIT19CQUNLU0xBU0hdLAotW19MVF9TSEVMTF9JTklUKFsKLSMgQ2hlY2sgdGhhdCB3ZSBhcmUgcnVubmluZyB1bmRlciB0aGUgY29ycmVjdCBzaGVsbC4KLVNIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9CitbRUNITz0nXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXCcKK0VDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KIAotY2FzZSBYJGx0X0VDSE8gaW4KLVgqLS1mYWxsYmFjay1lY2hvKQotICAjIFJlbW92ZSBvbmUgbGV2ZWwgb2YgcXVvdGF0aW9uICh3aGljaCB3YXMgcmVxdWlyZWQgZm9yIE1ha2UpLgotICBFQ0hPPWBlY2hvICIkbHRfRUNITyIgfCBzZWQgJ3MsXFxcXFxbJF1cXFskXTAsJ1skXTAnLCdgCi0gIDs7CitBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBwcmludCBzdHJpbmdzXSkKKyMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgoraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICBFQ0hPPSdwcmludCAtciAtLScKK2VsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgIEVDSE89J3ByaW50ZiAlc1xuJworZWxzZQorICAjIFVzZSB0aGlzIGZ1bmN0aW9uIGFzIGEgZmFsbGJhY2sgdGhhdCBhbHdheXMgd29ya3MuCisgIGZ1bmNfZmFsbGJhY2tfZWNobyAoKQorICB7CisgICAgZXZhbCAnY2F0IDw8X0xURUNIT19FT0YKKyRbXTEKK19MVEVDSE9fRU9GJworICB9CisgIEVDSE89J2Z1bmNfZmFsbGJhY2tfZWNobycKK2ZpCisKKyMgZnVuY19lY2hvX2FsbCBhcmcuLi4KKyMgSW52b2tlICRFQ0hPIHdpdGggYWxsIGFyZ3MsIHNwYWNlLXNlcGFyYXRlZC4KK2Z1bmNfZWNob19hbGwgKCkKK3sKKyAgICAkRUNITyAiJCoiIAorfQorCitjYXNlICIkRUNITyIgaW4KKyAgcHJpbnRmKikgQUNfTVNHX1JFU1VMVChbcHJpbnRmXSkgOzsKKyAgcHJpbnQqKSBBQ19NU0dfUkVTVUxUKFtwcmludCAtcl0pIDs7CisgICopIEFDX01TR19SRVNVTFQoW2NhdF0pIDs7CiBlc2FjCiAKLUVDSE89JHtsdF9FQ0hPLWVjaG99Ci1pZiB0ZXN0ICJYWyRdMSIgPSBYLS1uby1yZWV4ZWM7IHRoZW4KLSAgIyBEaXNjYXJkIHRoZSAtLW5vLXJlZXhlYyBmbGFnLCBhbmQgY29udGludWUuCi0gIHNoaWZ0Ci1lbGlmIHRlc3QgIlhbJF0xIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KLSAgIyBBdm9pZCBpbmxpbmUgZG9jdW1lbnQgaGVyZSwgaXQgbWF5IGJlIGxlZnQgb3ZlcgotICA6Ci1lbGlmIHRlc3QgIlhgeyAkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JyA7IHRoZW4KLSAgIyBZaXBwZWUsICRFQ0hPIHdvcmtzIQotICA6Ci1lbHNlCi0gICMgUmVzdGFydCB1bmRlciB0aGUgY29ycmVjdCBzaGVsbC4KLSAgZXhlYyAkU0hFTEwgIlskXTAiIC0tbm8tcmVleGVjICR7MSsiWyRdQCJ9Ci1maQorbTRfaWZkZWYoW19BU19ERVRFQ1RfU1VHR0VTVEVEXSwKK1tfQVNfREVURUNUX1NVR0dFU1RFRChbCisgIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSR7QkFTSF9WRVJTSU9OK3NldH0iIHx8ICgKKyAgICBFQ0hPPSdcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcJworICAgIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworICAgIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgICAgUEFUSD0vZW1wdHkgRlBBVEg9L2VtcHR5OyBleHBvcnQgUEFUSCBGUEFUSAorICAgIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPYCIgPSAiWCRFQ0hPIiBcCisgICAgICB8fCB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPYCIgPSAiWCRFQ0hPIiApXSldKQogCi1pZiB0ZXN0ICJYWyRdMSIgPSBYLS1mYWxsYmFjay1lY2hvOyB0aGVuCi0gICMgdXNlZCBhcyBmYWxsYmFjayBlY2hvCi0gIHNoaWZ0Ci0gIGNhdCA8PF9MVF9FT0YKLVskXSoKLV9MVF9FT0YKLSAgZXhpdCAwCi1maQotCi0jIFRoZSBIUC1VWCBrc2ggYW5kIFBPU0lYIHNoZWxsIHByaW50IHRoZSB0YXJnZXQgZGlyZWN0b3J5IHRvIHN0ZG91dAotIyBpZiBDRFBBVEggaXMgc2V0LgotKHVuc2V0IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSAotCi1pZiB0ZXN0IC16ICIkbHRfRUNITyI7IHRoZW4KLSAgaWYgdGVzdCAiWCR7ZWNob190ZXN0X3N0cmluZytzZXR9IiAhPSBYc2V0OyB0aGVuCi0gICAgIyBmaW5kIGEgc3RyaW5nIGFzIGxhcmdlIGFzIHBvc3NpYmxlLCBhcyBsb25nIGFzIHRoZSBzaGVsbCBjYW4gY29wZSB3aXRoIGl0Ci0gICAgZm9yIGNtZCBpbiAnc2VkIDUwcSAiWyRdMCInICdzZWQgMjBxICJbJF0wIicgJ3NlZCAxMHEgIlskXTAiJyAnc2VkIDJxICJbJF0wIicgJ2VjaG8gdGVzdCc7IGRvCi0gICAgICAjIGV4cGVjdGVkIHNpemVzOiBsZXNzIHRoYW4gMktiLCAxS2IsIDUxMiBieXRlcywgMTYgYnl0ZXMsIC4uLgotICAgICAgaWYgeyBlY2hvX3Rlc3Rfc3RyaW5nPWBldmFsICRjbWRgOyB9IDI+L2Rldi9udWxsICYmCi0JIHsgdGVzdCAiWCRlY2hvX3Rlc3Rfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsCi0gICAgICB0aGVuCi0gICAgICAgIGJyZWFrCi0gICAgICBmaQotICAgIGRvbmUKLSAgZmkKLQotICBpZiB0ZXN0ICJYYHsgJEVDSE8gJ1x0JzsgfSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKLSAgICAgZWNob190ZXN0aW5nX3N0cmluZz1geyAkRUNITyAiJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsYCAmJgotICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLSAgICA6Ci0gIGVsc2UKLSAgICAjIFRoZSBTb2xhcmlzLCBBSVgsIGFuZCBEaWdpdGFsIFVuaXggZGVmYXVsdCBlY2hvIHByb2dyYW1zIHVucXVvdGUKLSAgICAjIGJhY2tzbGFzaGVzLiAgVGhpcyBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIHF1b3RlIGJhY2tzbGFzaGVzIHVzaW5nCi0gICAgIyAgIGVjaG8gIiRzb21ldGhpbmciIHwgc2VkICdzL1xcL1xcXFwvZycKLSAgICAjCi0gICAgIyBTbywgZmlyc3Qgd2UgbG9vayBmb3IgYSB3b3JraW5nIGVjaG8gaW4gdGhlIHVzZXIncyBQQVRILgotCi0gICAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0gICAgZm9yIGRpciBpbiAkUEFUSCAvdXNyL3VjYjsgZG8KLSAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgotICAgICAgaWYgKHRlc3QgLWYgJGRpci9lY2hvIHx8IHRlc3QgLWYgJGRpci9lY2hvJGFjX2V4ZWV4dCkgJiYKLSAgICAgICAgIHRlc3QgIlhgKCRkaXIvZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKLSAgICAgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkZGlyL2VjaG8gIiRlY2hvX3Rlc3Rfc3RyaW5nIikgMj4vZGV2L251bGxgICYmCi0gICAgICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLSAgICAgICAgRUNITz0iJGRpci9lY2hvIgotICAgICAgICBicmVhawotICAgICAgZmkKLSAgICBkb25lCi0gICAgSUZTPSIkbHRfc2F2ZV9pZnMiCi0KLSAgICBpZiB0ZXN0ICJYJEVDSE8iID0gWGVjaG87IHRoZW4KLSAgICAgICMgV2UgZGlkbid0IGZpbmQgYSBiZXR0ZXIgZWNobywgc28gbG9vayBmb3IgYWx0ZXJuYXRpdmVzLgotICAgICAgaWYgdGVzdCAiWGB7IHByaW50IC1yICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCi0gICAgICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWB7IHByaW50IC1yICIkZWNob190ZXN0X3N0cmluZyI7IH0gMj4vZGV2L251bGxgICYmCi0gICAgICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLSAgICAgICAgIyBUaGlzIHNoZWxsIGhhcyBhIGJ1aWx0aW4gcHJpbnQgLXIgdGhhdCBkb2VzIHRoZSB0cmljay4KLSAgICAgICAgRUNITz0ncHJpbnQgLXInCi0gICAgICBlbGlmIHsgdGVzdCAtZiAvYmluL2tzaCB8fCB0ZXN0IC1mIC9iaW4va3NoJGFjX2V4ZWV4dDsgfSAmJgotCSAgIHRlc3QgIlgkQ09ORklHX1NIRUxMIiAhPSBYL2Jpbi9rc2g7IHRoZW4KLSAgICAgICAgIyBJZiB3ZSBoYXZlIGtzaCwgdHJ5IHJ1bm5pbmcgY29uZmlndXJlIGFnYWluIHdpdGggaXQuCi0gICAgICAgIE9SSUdJTkFMX0NPTkZJR19TSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofQotICAgICAgICBleHBvcnQgT1JJR0lOQUxfQ09ORklHX1NIRUxMCi0gICAgICAgIENPTkZJR19TSEVMTD0vYmluL2tzaAotICAgICAgICBleHBvcnQgQ09ORklHX1NIRUxMCi0gICAgICAgIGV4ZWMgJENPTkZJR19TSEVMTCAiWyRdMCIgLS1uby1yZWV4ZWMgJHsxKyJbJF1AIn0KLSAgICAgIGVsc2UKLSAgICAgICAgIyBUcnkgdXNpbmcgcHJpbnRmLgotICAgICAgICBFQ0hPPSdwcmludGYgJXNcbicKLSAgICAgICAgaWYgdGVzdCAiWGB7ICRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCi0JICAgZWNob190ZXN0aW5nX3N0cmluZz1geyAkRUNITyAiJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsYCAmJgotCSAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotCSAgIyBDb29sLCBwcmludGYgd29ya3MKLQkgIDoKLSAgICAgICAgZWxpZiBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJE9SSUdJTkFMX0NPTkZJR19TSEVMTCAiWyRdMCIgLS1mYWxsYmFjay1lY2hvICdcdCcpIDI+L2Rldi9udWxsYCAmJgotCSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICdYXHQnICYmCi0JICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJE9SSUdJTkFMX0NPTkZJR19TSEVMTCAiWyRdMCIgLS1mYWxsYmFjay1lY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgotCSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0JICBDT05GSUdfU0hFTEw9JE9SSUdJTkFMX0NPTkZJR19TSEVMTAotCSAgZXhwb3J0IENPTkZJR19TSEVMTAotCSAgU0hFTEw9IiRDT05GSUdfU0hFTEwiCi0JICBleHBvcnQgU0hFTEwKLQkgIEVDSE89IiRDT05GSUdfU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8iCi0gICAgICAgIGVsaWYgZWNob190ZXN0aW5nX3N0cmluZz1gKCRDT05GSUdfU0hFTEwgIlskXTAiIC0tZmFsbGJhY2stZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAgJiYKLQkgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAnWFx0JyAmJgotCSAgICAgZWNob190ZXN0aW5nX3N0cmluZz1gKCRDT05GSUdfU0hFTEwgIlskXTAiIC0tZmFsbGJhY2stZWNobyAiJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbGAgJiYKLQkgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotCSAgRUNITz0iJENPTkZJR19TSEVMTCBbJF0wIC0tZmFsbGJhY2stZWNobyIKLSAgICAgICAgZWxzZQotCSAgIyBtYXliZSB3aXRoIGEgc21hbGxlciBzdHJpbmcuLi4KLQkgIHByZXY9OgotCi0JICBmb3IgY21kIGluICdlY2hvIHRlc3QnICdzZWQgMnEgIlskXTAiJyAnc2VkIDEwcSAiWyRdMCInICdzZWQgMjBxICJbJF0wIicgJ3NlZCA1MHEgIlskXTAiJzsgZG8KLQkgICAgaWYgeyB0ZXN0ICJYJGVjaG9fdGVzdF9zdHJpbmciID0gIlhgZXZhbCAkY21kYCI7IH0gMj4vZGV2L251bGwKLQkgICAgdGhlbgotCSAgICAgIGJyZWFrCi0JICAgIGZpCi0JICAgIHByZXY9IiRjbWQiCi0JICBkb25lCi0KLQkgIGlmIHRlc3QgIiRwcmV2IiAhPSAnc2VkIDUwcSAiWyRdMCInOyB0aGVuCi0JICAgIGVjaG9fdGVzdF9zdHJpbmc9YGV2YWwgJHByZXZgCi0JICAgIGV4cG9ydCBlY2hvX3Rlc3Rfc3RyaW5nCi0JICAgIGV4ZWMgJHtPUklHSU5BTF9DT05GSUdfU0hFTEwtJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH19ICJbJF0wIiAkezErIlskXUAifQotCSAgZWxzZQotCSAgICAjIE9vcHMuICBXZSBsb3N0IGNvbXBsZXRlbHksIHNvIGp1c3Qgc3RpY2sgd2l0aCBlY2hvLgotCSAgICBFQ0hPPWVjaG8KLQkgIGZpCi0gICAgICAgIGZpCi0gICAgICBmaQotICAgIGZpCi0gIGZpCi1maQotCi0jIENvcHkgZWNobyBhbmQgcXVvdGUgdGhlIGNvcHkgc3VpdGFibHkgZm9yIHBhc3NpbmcgdG8gbGlidG9vbCBmcm9tCi0jIHRoZSBNYWtlZmlsZSwgaW5zdGVhZCBvZiBxdW90aW5nIHRoZSBvcmlnaW5hbCwgd2hpY2ggaXMgdXNlZCBsYXRlci4KLWx0X0VDSE89JEVDSE8KLWlmIHRlc3QgIlgkbHRfRUNITyIgPSAiWCRDT05GSUdfU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8iOyB0aGVuCi0gICBsdF9FQ0hPPSIkQ09ORklHX1NIRUxMIFxcXCRcWyRdMCAtLWZhbGxiYWNrLWVjaG8iCi1maQotCi1BQ19TVUJTVChsdF9FQ0hPKQotXSkKIF9MVF9ERUNMKFtdLCBbU0hFTExdLCBbMV0sIFtTaGVsbCB0byB1c2Ugd2hlbiBpbnZva2luZyBzaGVsbCBzY3JpcHRzXSkKLV9MVF9ERUNMKFtdLCBbRUNIT10sIFsxXSwKLSAgICBbQW4gZWNobyBwcm9ncmFtIHRoYXQgZG9lcyBub3QgaW50ZXJwcmV0IGJhY2tzbGFzaGVzXSkKK19MVF9ERUNMKFtdLCBbRUNIT10sIFsxXSwgW0FuIGVjaG8gcHJvZ3JhbSB0aGF0IHByb3RlY3RzIGJhY2tzbGFzaGVzXSkKIF0pIyBfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSAogCiAKKyMgX0xUX1dJVEhfU1lTUk9PVAorIyAtLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbX0xUX1dJVEhfU1lTUk9PVF0sCitbQUNfTVNHX0NIRUNLSU5HKFtmb3Igc3lzcm9vdF0pCitBQ19BUkdfV0lUSChbc3lzcm9vdF0sCitbICAtLXdpdGgtc3lzcm9vdFs9RElSXSBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgorICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuXSwKK1tdLCBbd2l0aF9zeXNyb290PW5vXSkKKworZG5sIGx0X3N5c3Jvb3Qgd2lsbCBhbHdheXMgYmUgcGFzc2VkIHVucXVvdGVkLiAgV2UgcXVvdGUgaXQgaGVyZQorZG5sIGluIGNhc2UgdGhlIHVzZXIgcGFzc2VkIGEgZGlyZWN0b3J5IG5hbWUuCitsdF9zeXNyb290PQorY2FzZSAke3dpdGhfc3lzcm9vdH0gaW4gIygKKyB5ZXMpCisgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorICAgZmkKKyAgIDs7ICMoCisgLyopCisgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisgICA7OyAjKAorIG5vfCcnKQorICAgOzsgIygKKyAqKQorICAgQUNfTVNHX1JFU1VMVChbJHt3aXRoX3N5c3Jvb3R9XSkKKyAgIEFDX01TR19FUlJPUihbVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLl0pCisgICA7OworZXNhYworCisgQUNfTVNHX1JFU1VMVChbJHtsdF9zeXNyb290Oi1ub31dKQorX0xUX0RFQ0woW10sIFtsdF9zeXNyb290XSwgWzBdLCBbVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBdZG5sCitbZGVwZW5kZW50IGxpYnJhcmllcywgYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC5dKV0pCisKICMgX0xUX0VOQUJMRV9MT0NLCiAjIC0tLS0tLS0tLS0tLS0tLQogbTRfZGVmdW4oW19MVF9FTkFCTEVfTE9DS10sCkBAIC0xMjM2LDcgKzEyMzcsNyBAQAogICA7OwogKi0qLWlyaXg2KikKICAgIyBGaW5kIG91dCB3aGljaCBBQkkgd2UgYXJlIHVzaW5nLgotICBlY2hvICdbI11saW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIicgPiBjb25mdGVzdC4kYWNfZXh0CisgIGVjaG8gJ1sjXWxpbmUgJyRMSU5FTk8nICJjb25maWd1cmUiJyA+IGNvbmZ0ZXN0LiRhY19leHQKICAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KICAgICBpZiB0ZXN0ICIkbHRfY3ZfcHJvZ19nbnVfbGQiID0geWVzOyB0aGVuCiAgICAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0LiRhY19vYmpleHRgIGluCkBAIC0xMzU0LDE0ICsxMzU1LDQ3IEBACiBdKSMgX0xUX0VOQUJMRV9MT0NLCiAKIAorIyBfTFRfUFJPR19BUgorIyAtLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9QUk9HX0FSXSwKK1tBQ19DSEVDS19UT09MUyhBUiwgW2FyXSwgZmFsc2UpCis6ICR7QVI9YXJ9Cis6ICR7QVJfRkxBR1M9Y3J1fQorX0xUX0RFQ0woW10sIFtBUl0sIFsxXSwgW1RoZSBhcmNoaXZlcl0pCitfTFRfREVDTChbXSwgW0FSX0ZMQUdTXSwgWzFdLCBbRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmVdKQorCitBQ19DQUNIRV9DSEVDSyhbZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnRdLCBbbHRfY3ZfYXJfYXRfZmlsZV0sCisgIFtsdF9jdl9hcl9hdF9maWxlPW5vCisgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNXSwKKyAgICAgW2VjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JkFTX01FU1NBR0VfTE9HX0ZEJworICAgICAgQUNfVFJZX0VWQUwoW2x0X2FyX3RyeV0pCisgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCisJQUNfVFJZX0VWQUwoW2x0X2FyX3RyeV0pCisJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKKyAgICAgXSkKKyAgXSkKKworaWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgorICBhcmNoaXZlcl9saXN0X3NwZWM9CitlbHNlCisgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQorZmkKK19MVF9ERUNMKFtdLCBbYXJjaGl2ZXJfbGlzdF9zcGVjXSwgWzFdLAorICBbSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyXSkKK10pIyBfTFRfUFJPR19BUgorCisKICMgX0xUX0NNRF9PTERfQVJDSElWRQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tCiBtNF9kZWZ1bihbX0xUX0NNRF9PTERfQVJDSElWRV0sCi1bQUNfQ0hFQ0tfVE9PTChBUiwgYXIsIGZhbHNlKQotdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLV9MVF9ERUNMKFtdLCBbQVJdLCBbMV0sIFtUaGUgYXJjaGl2ZXJdKQotX0xUX0RFQ0woW10sIFtBUl9GTEFHU10sIFsxXSkKK1tfTFRfUFJPR19BUgogCiBBQ19DSEVDS19UT09MKFNUUklQLCBzdHJpcCwgOikKIHRlc3QgLXogIiRTVFJJUCIgJiYgU1RSSVA9OgpAQCAtMTM4OCwxMCArMTQyMiwxOSBAQAogICBlc2FjCiAgIG9sZF9hcmNoaXZlX2NtZHM9IiRvbGRfYXJjaGl2ZV9jbWRzflwkUkFOTElCIFwkb2xkbGliIgogZmkKKworY2FzZSAkaG9zdF9vcyBpbgorICBkYXJ3aW4qKQorICAgIGxvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbj15ZXMgOzsKKyAgKikKKyAgICBsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb249bm8gOzsKK2VzYWMKIF9MVF9ERUNMKFtdLCBbb2xkX3Bvc3RpbnN0YWxsX2NtZHNdLCBbMl0pCiBfTFRfREVDTChbXSwgW29sZF9wb3N0dW5pbnN0YWxsX2NtZHNdLCBbMl0pCiBfTFRfVEFHREVDTChbXSwgW29sZF9hcmNoaXZlX2NtZHNdLCBbMl0sCiAgICAgW0NvbW1hbmRzIHVzZWQgdG8gYnVpbGQgYW4gb2xkLXN0eWxlIGFyY2hpdmVdKQorX0xUX0RFQ0woW10sIFtsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb25dLCBbMF0sCisgICAgW1doZXRoZXIgdG8gdXNlIGEgbG9jayBmb3Igb2xkIGFyY2hpdmUgZXh0cmFjdGlvbl0pCiBdKSMgX0xUX0NNRF9PTERfQVJDSElWRQogCiAKQEAgLTE0MTYsMTUgKzE0NTksMTUgQEAKICAgIC1lICdzOi4qRkxBR1N9XHswLDFcfSA6JiRsdF9jb21waWxlcl9mbGFnIDo7IHQnIFwKICAgIC1lICdzOiBbW14gXV0qY29uZnRlc3RcLjogJGx0X2NvbXBpbGVyX2ZsYWcmOjsgdCcgXAogICAgLWUgJ3M6JDogJGx0X2NvbXBpbGVyX2ZsYWc6J2AKLSAgIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186ICRsdF9jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCisgICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogJGx0X2NvbXBpbGVcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKICAgIChldmFsICIkbHRfY29tcGlsZSIgMj5jb25mdGVzdC5lcnIpCiAgICBhY19zdGF0dXM9JD8KICAgIGNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAotICAgZWNobyAiJGFzX21lOl9fb2xpbmVfXzogXCQ/ID0gJGFjX3N0YXR1cyIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mQVNfTUVTU0FHRV9MT0dfRkQKICAgIGlmIChleGl0ICRhY19zdGF0dXMpICYmIHRlc3QgLXMgIiRhY19vdXRmaWxlIjsgdGhlbgogICAgICAjIFRoZSBjb21waWxlciBjYW4gb25seSB3YXJuIGFuZCBpZ25vcmUgdGhlIG9wdGlvbiBpZiBub3QgcmVjb2duaXplZAogICAgICAjIFNvIHNheSBubyBpZiB0aGVyZSBhcmUgd2FybmluZ3Mgb3RoZXIgdGhhbiB0aGUgdXN1YWwgb3V0cHV0LgotICAgICAkRUNITyAiWCRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+Y29uZnRlc3QuZXhwCisgICAgICRFQ0hPICIkX2x0X2NvbXBpbGVyX2JvaWxlcnBsYXRlIiB8ICRTRUQgJy9eJC9kJyA+Y29uZnRlc3QuZXhwCiAgICAgICRTRUQgJy9eJC9kOyAvXiAqKy9kJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMgogICAgICBpZiB0ZXN0ICEgLXMgY29uZnRlc3QuZXIyIHx8IGRpZmYgY29uZnRlc3QuZXhwIGNvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgJDI9eWVzCkBAIC0xNDY0LDcgKzE1MDcsNyBAQAogICAgICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgogICAgICAgICMgQXBwZW5kIGFueSBlcnJvcnMgdG8gdGhlIGNvbmZpZy5sb2cuCiAgICAgICAgY2F0IGNvbmZ0ZXN0LmVyciAxPiZBU19NRVNTQUdFX0xPR19GRAotICAgICAgICRFQ0hPICJYJF9sdF9saW5rZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+IGNvbmZ0ZXN0LmV4cAorICAgICAgICRFQ0hPICIkX2x0X2xpbmtlcl9ib2lsZXJwbGF0ZSIgfCAkU0VEICcvXiQvZCcgPiBjb25mdGVzdC5leHAKICAgICAgICAkU0VEICcvXiQvZDsgL14gKisvZCcgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjIKICAgICAgICBpZiBkaWZmIGNvbmZ0ZXN0LmV4cCBjb25mdGVzdC5lcjIgPi9kZXYvbnVsbDsgdGhlbgogICAgICAgICAgJDI9eWVzCkBAIC0xNTI3LDYgKzE1NzAsMTEgQEAKICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49ODE5MjsKICAgICA7OwogCisgIG1pbnQqKQorICAgICMgT24gTWlOVCB0aGlzIGNhbiB0YWtlIGEgbG9uZyB0aW1lIGFuZCBydW4gb3V0IG9mIG1lbW9yeS4KKyAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49ODE5MjsKKyAgICA7OworCiAgIGFtaWdhb3MqKQogICAgICMgT24gQW1pZ2FPUyB3aXRoIHBka3NoLCB0aGlzIHRlc3QgdGFrZXMgaG91cnMsIGxpdGVyYWxseS4KICAgICAjIFNvIHdlIGp1c3QgcHVudCBhbmQgdXNlIGEgbWluaW11bSBsaW5lIGxlbmd0aCBvZiA4MTkyLgpAQCAtMTU5MSw4ICsxNjM5LDggQEAKICAgICAgICMgSWYgdGVzdCBpcyBub3QgYSBzaGVsbCBidWlsdC1pbiwgd2UnbGwgcHJvYmFibHkgZW5kIHVwIGNvbXB1dGluZyBhCiAgICAgICAjIG1heGltdW0gbGVuZ3RoIHRoYXQgaXMgb25seSBoYWxmIG9mIHRoZSBhY3R1YWwgbWF4aW11bSBsZW5ndGgsIGJ1dAogICAgICAgIyB3ZSBjYW4ndCB0ZWxsLgotICAgICAgd2hpbGUgeyB0ZXN0ICJYImAkU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8gIlgkdGVzdHN0cmluZyR0ZXN0c3RyaW5nIiAyPi9kZXYvbnVsbGAgXAotCSAgICAgICAgID0gIlhYJHRlc3RzdHJpbmckdGVzdHN0cmluZyI7IH0gPi9kZXYvbnVsbCAyPiYxICYmCisgICAgICB3aGlsZSB7IHRlc3QgIlgiYGZ1bmNfZmFsbGJhY2tfZWNobyAiJHRlc3RzdHJpbmckdGVzdHN0cmluZyIgMj4vZGV2L251bGxgIFwKKwkgICAgICAgICA9ICJYJHRlc3RzdHJpbmckdGVzdHN0cmluZyI7IH0gPi9kZXYvbnVsbCAyPiYxICYmCiAJICAgICAgdGVzdCAkaSAhPSAxNyAjIDEvMiBNQiBzaG91bGQgYmUgZW5vdWdoCiAgICAgICBkbwogICAgICAgICBpPWBleHByICRpICsgMWAKQEAgLTE2NDMsNyArMTY5MSw3IEBACiAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLVsjbGluZSBfX29saW5lX18gImNvbmZpZ3VyZSIKK1sjbGluZSAkTElORU5PICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogI2lmIEhBVkVfRExGQ05fSApAQCAtMTY4NCw3ICsxNzMyLDEzIEBACiAjICBlbmRpZgogI2VuZGlmCiAKLXZvaWQgZm5vcmQoKSB7IGludCBpPTQyO30KKy8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQoraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworI2VuZGlmCisKK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQogaW50IG1haW4gKCkKIHsKICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CkBAIC0xNjkzLDcgKzE3NDcsMTEgQEAKICAgaWYgKHNlbGYpCiAgICAgewogICAgICAgaWYgKGRsc3ltIChzZWxmLCJmbm9yZCIpKSAgICAgICBzdGF0dXMgPSAkbHRfZGxub191c2NvcmU7Ci0gICAgICBlbHNlIGlmIChkbHN5bSggc2VsZiwiX2Zub3JkIikpIHN0YXR1cyA9ICRsdF9kbG5lZWRfdXNjb3JlOworICAgICAgZWxzZQorICAgICAgICB7CisJICBpZiAoZGxzeW0oIHNlbGYsIl9mbm9yZCIpKSAgc3RhdHVzID0gJGx0X2RsbmVlZF91c2NvcmU7CisgICAgICAgICAgZWxzZSBwdXRzIChkbGVycm9yICgpKTsKKwl9CiAgICAgICAvKiBkbGNsb3NlIChzZWxmKTsgKi8KICAgICB9CiAgIGVsc2UKQEAgLTE4NjksMTYgKzE5MjcsMTYgQEAKICAgIC1lICdzOi4qRkxBR1N9XHswLDFcfSA6JiRsdF9jb21waWxlcl9mbGFnIDo7IHQnIFwKICAgIC1lICdzOiBbW14gXV0qY29uZnRlc3RcLjogJGx0X2NvbXBpbGVyX2ZsYWcmOjsgdCcgXAogICAgLWUgJ3M6JDogJGx0X2NvbXBpbGVyX2ZsYWc6J2AKLSAgIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186ICRsdF9jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCisgICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogJGx0X2NvbXBpbGVcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKICAgIChldmFsICIkbHRfY29tcGlsZSIgMj5vdXQvY29uZnRlc3QuZXJyKQogICAgYWNfc3RhdHVzPSQ/CiAgICBjYXQgb3V0L2NvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECi0gICBlY2hvICIkYXNfbWU6X19vbGluZV9fOiBcJD8gPSAkYWNfc3RhdHVzIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiZBU19NRVNTQUdFX0xPR19GRAogICAgaWYgKGV4aXQgJGFjX3N0YXR1cykgJiYgdGVzdCAtcyBvdXQvY29uZnRlc3QyLiRhY19vYmpleHQKICAgIHRoZW4KICAgICAgIyBUaGUgY29tcGlsZXIgY2FuIG9ubHkgd2FybiBhbmQgaWdub3JlIHRoZSBvcHRpb24gaWYgbm90IHJlY29nbml6ZWQKICAgICAgIyBTbyBzYXkgbm8gaWYgdGhlcmUgYXJlIHdhcm5pbmdzCi0gICAgICRFQ0hPICJYJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID4gb3V0L2NvbmZ0ZXN0LmV4cAorICAgICAkRUNITyAiJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkU0VEICcvXiQvZCcgPiBvdXQvY29uZnRlc3QuZXhwCiAgICAgICRTRUQgJy9eJC9kOyAvXiAqKy9kJyBvdXQvY29uZnRlc3QuZXJyID5vdXQvY29uZnRlc3QuZXIyCiAgICAgIGlmIHRlc3QgISAtcyBvdXQvY29uZnRlc3QuZXIyIHx8IGRpZmYgb3V0L2NvbmZ0ZXN0LmV4cCBvdXQvY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KICAgICAgICBfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfY19vLCAkMSk9eWVzCkBAIC0yMDM3LDYgKzIwOTUsNyBAQAogbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9PQkpEVU1QXSlkbmwKIG00X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCittNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVNdKWRubAogQUNfTVNHX0NIRUNLSU5HKFtkeW5hbWljIGxpbmtlciBjaGFyYWN0ZXJpc3RpY3NdKQogbTRfaWYoWyQxXSwKIAlbXSwgWwpAQCAtMjA0NSwxNiArMjEwNCwyMyBAQAogICAgIGRhcndpbiopIGx0X2F3a19hcmc9Ii9ebGlicmFyaWVzOi8sL0xSLyIgOzsKICAgICAqKSBsdF9hd2tfYXJnPSIvXmxpYnJhcmllczovIiA7OwogICBlc2FjCi0gIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRDQyAtcHJpbnQtc2VhcmNoLWRpcnMgfCBhd2sgJGx0X2F3a19hcmcgfCAkU0VEIC1lICJzL15saWJyYXJpZXM6Ly8iIC1lICJzLD0vLC8sZyJgCi0gIGlmICRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnOycgPi9kZXYvbnVsbCA7IHRoZW4KKyAgY2FzZSAkaG9zdF9vcyBpbgorICAgIG1pbmd3KiB8IGNlZ2NjKikgbHRfc2VkX3N0cmlwX2VxPSJzLD1cKFtbQS1aYS16XV06XCksXDEsZyIgOzsKKyAgICAqKSBsdF9zZWRfc3RyaXBfZXE9InMsPS8sLyxnIiA7OworICBlc2FjCisgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRDQyAtcHJpbnQtc2VhcmNoLWRpcnMgfCBhd2sgJGx0X2F3a19hcmcgfCAkU0VEIC1lICJzL15saWJyYXJpZXM6Ly8iIC1lICRsdF9zZWRfc3RyaXBfZXFgCisgIGNhc2UgJGx0X3NlYXJjaF9wYXRoX3NwZWMgaW4KKyAgKlw7KikKICAgICAjIGlmIHRoZSBwYXRoIGNvbnRhaW5zICI7IiB0aGVuIHdlIGFzc3VtZSBpdCB0byBiZSB0aGUgc2VwYXJhdG9yCiAgICAgIyBvdGhlcndpc2UgZGVmYXVsdCB0byB0aGUgc3RhbmRhcmQgcGF0aCBzZXBhcmF0b3IgKGkuZS4gIjoiKSAtIGl0IGlzCiAgICAgIyBhc3N1bWVkIHRoYXQgbm8gcGFydCBvZiBhIG5vcm1hbCBwYXRobmFtZSBjb250YWlucyAiOyIgYnV0IHRoYXQgc2hvdWxkCiAgICAgIyBva2F5IGluIHRoZSByZWFsIHdvcmxkIHdoZXJlICI7IiBpbiBkaXJwYXRocyBpcyBpdHNlbGYgcHJvYmxlbWF0aWMuCi0gICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotICBlbHNlCi0gICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotICBmaQorICAgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICdzLzsvIC9nJ2AKKyAgICA7OworICAqKQorICAgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorICAgIDs7CisgIGVzYWMKICAgIyBPaywgbm93IHdlIGhhdmUgdGhlIHBhdGgsIHNlcGFyYXRlZCBieSBzcGFjZXMsIHdlIGNhbiBzdGVwIHRocm91Z2ggaXQKICAgIyBhbmQgYWRkIG11bHRpbGliIGRpciBpZiBuZWNlc3NhcnkuCiAgIGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjPQpAQCAtMjA2Nyw3ICsyMTMzLDcgQEAKIAlsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYz0iJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjICRsdF9zeXNfcGF0aCIKICAgICBmaQogICBkb25lCi0gIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICRsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYyB8IGF3ayAnCisgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMiIHwgYXdrICcKIEJFR0lOIHtSUz0iICI7IEZTPSIvfFxuIjt9IHsKICAgbHRfZm9vPSIiOwogICBsdF9jb3VudD0wOwpAQCAtMjA4Nyw3ICsyMTUzLDEzIEBACiAgIGlmIChsdF9mb28gIT0gIiIpIHsgbHRfZnJlcVtbbHRfZm9vXV0rKzsgfQogICBpZiAobHRfZnJlcVtbbHRfZm9vXV0gPT0gMSkgeyBwcmludCBsdF9mb287IH0KIH0nYAotICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICRsdF9zZWFyY2hfcGF0aF9zcGVjYAorICAjIEFXSyBwcm9ncmFtIGFib3ZlIGVycm9uZW91c2x5IHByZXBlbmRzICcvJyB0byBDOi9kb3MvcGF0aHMKKyAgIyBmb3IgdGhlc2UgaG9zdHMuCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICBtaW5ndyogfCBjZWdjYyopIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfFwKKyAgICAgICRTRUQgJ3MsL1woW1tBLVphLXpdXTpcKSxcMSxnJ2AgOzsKKyAgZXNhYworICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkbHRfTkwyU1BgCiBlbHNlCiAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNyL2xpYiAvdXNyL2xvY2FsL2xpYiIKIGZpXSkKQEAgLTIxNzUsNyArMjI0Nyw3IEBACiAgIG02OGspCiAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5peGxpYnJhcnkgJGxpYm5hbWUuYScKICAgICAjIENyZWF0ZSAke2xpYm5hbWV9X2l4bGlicmFyeS5hIGVudHJpZXMgaW4gL3N5cy9saWJzLgotICAgIGZpbmlzaF9ldmFsPSdmb3IgbGliIGluIGBscyAkbGliZGlyLyouaXhsaWJyYXJ5IDI+L2Rldi9udWxsYDsgZG8gbGlibmFtZT1gJEVDSE8gIlgkbGliIiB8ICRYc2VkIC1lICdcJydzJV4uKi9cKFtbXi9dXSpcKVwuaXhsaWJyYXJ5JCVcMSUnXCcnYDsgdGVzdCAkUk0gL3N5cy9saWJzLyR7bGlibmFtZX1faXhsaWJyYXJ5LmE7ICRzaG93ICJjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIjsgY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSB8fCBleGl0IDE7IGRvbmUnCisgICAgZmluaXNoX2V2YWw9J2ZvciBsaWIgaW4gYGxzICRsaWJkaXIvKi5peGxpYnJhcnkgMj4vZGV2L251bGxgOyBkbyBsaWJuYW1lPWBmdW5jX2VjaG9fYWxsICIkbGliIiB8ICRTRUQgJ1wnJ3MlXi4qL1woW1teL11dKlwpXC5peGxpYnJhcnkkJVwxJSdcJydgOyB0ZXN0ICRSTSAvc3lzL2xpYnMvJHtsaWJuYW1lfV9peGxpYnJhcnkuYTsgJHNob3cgImNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEiOyBjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIHx8IGV4aXQgMTsgZG9uZScKICAgICA7OwogICBlc2FjCiAgIDs7CkBAIC0yMjA2LDggKzIyNzgsOSBAQAogICBuZWVkX3ZlcnNpb249bm8KICAgbmVlZF9saWJfcHJlZml4PW5vCiAKLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKyAgeWVzLCopCisgICAgIyBnY2MKICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwogICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KQEAgLTIyMjgsMzYgKzIzMDEsODMgQEAKICAgICBjeWd3aW4qKQogICAgICAgIyBDeWd3aW4gRExMcyB1c2UgJ2N5ZycgcHJlZml4IHJhdGhlciB0aGFuICdsaWInCiAgICAgICBzb25hbWVfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL2N5Zy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIgL2xpYi93MzJhcGkgL2xpYiAvdXNyL2xvY2FsL2xpYiIKK200X2lmKFskMV0sIFtdLFsKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAvdXNyL2xpYi93MzJhcGkiXSkKICAgICAgIDs7CiAgICAgbWluZ3cqIHwgY2VnY2MqKQogICAgICAgIyBNaW5HVyBETExzIHVzZSB0cmFkaXRpb25hbCAnbGliJyBwcmVmaXgKICAgICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkQ0MgLXByaW50LXNlYXJjaC1kaXJzIHwgJEdSRVAgIl5saWJyYXJpZXM6IiB8ICRTRUQgLWUgInMvXmxpYnJhcmllczovLyIgLWUgInMsPS8sLyxnImAKLSAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IFskR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGxdOyB0aGVuCi0gICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEggcHJpbnRlZCBieQotICAgICAgICAjIG1pbmd3IGdjYywgYnV0IHdlIGFyZSBydW5uaW5nIG9uIEN5Z3dpbi4gR2NjIHByaW50cyBpdHMgc2VhcmNoCi0gICAgICAgICMgcGF0aCB3aXRoIDsgc2VwYXJhdG9ycywgYW5kIHdpdGggZHJpdmUgbGV0dGVycy4gV2UgY2FuIGhhbmRsZSB0aGUKLSAgICAgICAgIyBkcml2ZSBsZXR0ZXJzIChjeWd3aW4gZmlsZXV0aWxzIHVuZGVyc3RhbmRzIHRoZW0pLCBzbyBsZWF2ZSB0aGVtLAotICAgICAgICAjIGVzcGVjaWFsbHkgYXMgd2UgbWlnaHQgcGFzcyBmaWxlcyBmb3VuZCB0aGVyZSB0byBhIG1pbmd3IG9iamR1bXAsCi0gICAgICAgICMgd2hpY2ggd291bGRuJ3QgdW5kZXJzdGFuZCBhIGN5Z3dpbmlmaWVkIHBhdGguIEFoaC4KLSAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSAgICAgIGVsc2UKLSAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSAgICAgIGZpCiAgICAgICA7OwogICAgIHB3MzIqKQogICAgICAgIyBwdzMyIERMTHMgdXNlICdwdycgcHJlZml4IHJhdGhlciB0aGFuICdsaWInCiAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKICAgICAgIDs7CiAgICAgZXNhYworICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgOzsKKworICAqLGNsKikKKyAgICAjIE5hdGl2ZSBNU1ZDCisgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKworICAgIGNhc2UgJGJ1aWxkX29zIGluCisgICAgbWluZ3cqKQorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorICAgICAgbHRfc2F2ZV9pZnM9JElGUworICAgICAgSUZTPSc7JworICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorICAgICAgZG8KKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorICAgICAgZG9uZQorICAgICAgSUZTPSRsdF9zYXZlX2lmcworICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFtbYS16QS1aXV1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorICAgICAgOzsKKyAgICBjeWd3aW4qKQorICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisgICAgICA7OworICAgICopCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBbJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsXTsgdGhlbgorICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorICAgICAgZWxzZQorICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisgICAgICBmaQorICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisgICAgICA7OworICAgIGVzYWMKKworICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKyAgICAgICAkUk0gXCRkbHBhdGgnCisgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKICAgICA7OwogCiAgICopCisgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCiAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwogICAgIDs7CiAgIGVzYWMKLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCiAgIHNobGlicGF0aF92YXI9UEFUSAogICA7OwpAQCAtMjM0NCw2ICsyNDY0LDE5IEBACiAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKICAgOzsKIAoraGFpa3UqKQorICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgcnVudGltZV9sb2FkZXIiCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0ke21ham9yfSAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKKyAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworICA7OworCiBocHV4OSogfCBocHV4MTAqIHwgaHB1eDExKikKICAgIyBHaXZlIGEgc29uYW1lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1ham9yIHZlcnNpb24gc28gdGhhdCBkbGQuc2wgcmVmdXNlcyB0bwogICAjIGxpbmsgYWdhaW5zdCBvdGhlciB2ZXJzaW9ucy4KQEAgLTIzODYsOCArMjUxOSwxMCBAQAogICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgICAgOzsKICAgZXNhYwotICAjIEhQLVVYIHJ1bnMgKnJlYWxseSogc2xvd2x5IHVubGVzcyBzaGFyZWQgbGlicmFyaWVzIGFyZSBtb2RlIDU1NS4KKyAgIyBIUC1VWCBydW5zICpyZWFsbHkqIHNsb3dseSB1bmxlc3Mgc2hhcmVkIGxpYnJhcmllcyBhcmUgbW9kZSA1NTUsIC4uLgogICBwb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA1NTUgJGxpYicKKyAgIyBvciBmYWlscyBvdXRyaWdodCwgc28gb3ZlcnJpZGUgYXRvbWljYWxseToKKyAgaW5zdGFsbF9vdmVycmlkZV9tb2RlPTU1NQogICA7OwogCiBpbnRlcml4W1szLTldXSopCkBAIC0yNDQ1LDcgKzI1ODAsNyBAQAogICA7OwogCiAjIFRoaXMgbXVzdCBiZSBMaW51eCBFTEYuCi1saW51eCogfCBrKmJzZCotZ251KQorbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogICB2ZXJzaW9uX3R5cGU9bGludXgKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwpAQCAtMjQ1NCwxNiArMjU4OSwyMSBAQAogICBmaW5pc2hfY21kcz0nUEFUSD0iXCRQQVRIOi9zYmluIiBsZGNvbmZpZyAtbiAkbGliZGlyJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKwogICAjIFNvbWUgYmludXRpbHMgbGQgYXJlIHBhdGNoZWQgdG8gc2V0IERUX1JVTlBBVEgKLSAgc2F2ZV9MREZMQUdTPSRMREZMQUdTCi0gIHNhdmVfbGliZGlyPSRsaWJkaXIKLSAgZXZhbCAibGliZGlyPS9mb287IHdsPVwiJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpXCI7IFwKLSAgICAgICBMREZMQUdTPVwiXCRMREZMQUdTICRfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKVwiIgotICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtdLFtdKV0sCi0gICAgW0FTX0lGKFsgKCRPQkpEVU1QIC1wIGNvbmZ0ZXN0JGFjX2V4ZWV4dCkgMj4vZGV2L251bGwgfCBncmVwICJSVU5QQVRILiokbGliZGlyIiA+L2Rldi9udWxsXSwKLSAgICAgICBbc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllc10pXSkKLSAgTERGTEFHUz0kc2F2ZV9MREZMQUdTCi0gIGxpYmRpcj0kc2F2ZV9saWJkaXIKKyAgQUNfQ0FDSEVfVkFMKFtsdF9jdl9zaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGhdLAorICAgIFtsdF9jdl9zaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKyAgICBzYXZlX0xERkxBR1M9JExERkxBR1MKKyAgICBzYXZlX2xpYmRpcj0kbGliZGlyCisgICAgZXZhbCAibGliZGlyPS9mb287IHdsPVwiJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpXCI7IFwKKwkgTERGTEFHUz1cIlwkTERGTEFHUyAkX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSlcIiIKKyAgICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtdLFtdKV0sCisgICAgICBbQVNfSUYoWyAoJE9CSkRVTVAgLXAgY29uZnRlc3QkYWNfZXhlZXh0KSAyPi9kZXYvbnVsbCB8IGdyZXAgIlJVTlBBVEguKiRsaWJkaXIiID4vZGV2L251bGxdLAorCSBbbHRfY3Zfc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllc10pXSkKKyAgICBMREZMQUdTPSRzYXZlX0xERkxBR1MKKyAgICBsaWJkaXI9JHNhdmVfbGliZGlyCisgICAgXSkKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPSRsdF9jdl9zaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgKIAogICAjIFRoaXMgaW1wbGllcyBubyBmYXN0X2luc3RhbGwsIHdoaWNoIGlzIHVuYWNjZXB0YWJsZS4KICAgIyBTb21lIHJld29yayB3aWxsIGJlIG5lZWRlZCB0byBhbGxvdyBmb3IgZmFzdF9pbnN0YWxsCkBAIC0yNDcyLDcgKzI2MTIsNyBAQAogCiAgICMgQXBwZW5kIGxkLnNvLmNvbmYgY29udGVudHMgdG8gdGhlIHNlYXJjaCBwYXRoCiAgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCi0gICAgbHRfbGRfZXh0cmE9YGF3ayAnL15pbmNsdWRlIC8geyBzeXN0ZW0oc3ByaW50ZigiY2QgL2V0YzsgY2F0ICVzIDI+L2Rldi9udWxsIiwgXFskXTIpKTsgc2tpcCA9IDE7IH0geyBpZiAoIXNraXApIHByaW50IFxbJF0wOyBza2lwID0gMDsgfScgPCAvZXRjL2xkLnNvLmNvbmYgfCAkU0VEIC1lICdzLyMuKi8vOy9eWwkgXSpod2NhcFsJIF0vZDtzL1s6LAldLyAvZztzLz1bXj1dKiQvLztzLz1bXj0gXSogLyAvZzsvXiQvZCcgfCB0ciAnXG4nICcgJ2AKKyAgICBsdF9sZF9leHRyYT1gYXdrICcvXmluY2x1ZGUgLyB7IHN5c3RlbShzcHJpbnRmKCJjZCAvZXRjOyBjYXQgJXMgMj4vZGV2L251bGwiLCBcWyRdMikpOyBza2lwID0gMTsgfSB7IGlmICghc2tpcCkgcHJpbnQgXFskXTA7IHNraXAgPSAwOyB9JyA8IC9ldGMvbGQuc28uY29uZiB8ICRTRUQgLWUgJ3MvIy4qLy87L15bCSBdKmh3Y2FwWwkgXS9kO3MvWzosCV0vIC9nO3MvPVtePV0qJC8vO3MvPVtePSBdKiAvIC9nO3MvIi8vZzsvXiQvZCcgfCB0ciAnXG4nICcgJ2AKICAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNyL2xpYiAkbHRfbGRfZXh0cmEiCiAgIGZpCiAKQEAgLTI3MDUsNiArMjg0NSw4IEBACiAgICAgVGhlIGxhc3QgbmFtZSBpcyB0aGUgb25lIHRoYXQgdGhlIGxpbmtlciBmaW5kcyB3aXRoIC1sTkFNRV1dKQogX0xUX0RFQ0woW10sIFtzb25hbWVfc3BlY10sIFsxXSwKICAgICBbW1RoZSBjb2RlZCBuYW1lIG9mIHRoZSBsaWJyYXJ5LCBpZiBkaWZmZXJlbnQgZnJvbSB0aGUgcmVhbCBuYW1lXV0pCitfTFRfREVDTChbXSwgW2luc3RhbGxfb3ZlcnJpZGVfbW9kZV0sIFsxXSwKKyAgICBbUGVybWlzc2lvbiBtb2RlIG92ZXJyaWRlIGZvciBpbnN0YWxsYXRpb24gb2Ygc2hhcmVkIGxpYnJhcmllc10pCiBfTFRfREVDTChbXSwgW3Bvc3RpbnN0YWxsX2NtZHNdLCBbMl0sCiAgICAgW0NvbW1hbmQgdG8gdXNlIGFmdGVyIGluc3RhbGxhdGlvbiBvZiBhIHNoYXJlZCBhcmNoaXZlXSkKIF9MVF9ERUNMKFtdLCBbcG9zdHVuaW5zdGFsbF9jbWRzXSwgWzJdLApAQCAtMjgxNyw2ICsyOTU5LDcgQEAKIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9CVUlMRF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAogbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAorbTRfcmVxdWlyZShbX0xUX1BST0dfRUNIT19CQUNLU0xBU0hdKWRubAogCiBBQ19BUkdfV0lUSChbZ251LWxkXSwKICAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1nbnUtbGRdLApAQCAtMjkzOCw2ICszMDgxLDExIEBACiBlc2FjCiByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCiBjYXNlICRob3N0X29zIGluCisgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisgICAgZmkKKyAgICA7OwogICBkYXJ3aW4qKQogICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCkBAIC0yOTQ2LDggKzMwOTQsOCBAQAogICAgIGZpCiAgICAgOzsKIGVzYWMKLV9MVF9ERUNMKFtdLCBbcmVsb2FkX2ZsYWddLCBbMV0sIFtIb3cgdG8gY3JlYXRlIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzXSlkbmwKLV9MVF9ERUNMKFtdLCBbcmVsb2FkX2NtZHNdLCBbMl0pZG5sCitfTFRfVEFHREVDTChbXSwgW3JlbG9hZF9mbGFnXSwgWzFdLCBbSG93IHRvIGNyZWF0ZSByZWxvYWRhYmxlIG9iamVjdCBmaWxlc10pZG5sCitfTFRfVEFHREVDTChbXSwgW3JlbG9hZF9jbWRzXSwgWzJdKWRubAogXSkjIF9MVF9DTURfUkVMT0FECiAKIApAQCAtMjk5OSwxNiArMzE0NywxOCBAQAogICAjIEJhc2UgTVNZUy9NaW5HVyBkbyBub3QgcHJvdmlkZSB0aGUgJ2ZpbGUnIGNvbW1hbmQgbmVlZGVkIGJ5CiAgICMgZnVuY193aW4zMl9saWJpZCBzaGVsbCBmdW5jdGlvbiwgc28gdXNlIGEgd2Vha2VyIHRlc3QgYmFzZWQgb24gJ29iamR1bXAnLAogICAjIHVubGVzcyB3ZSBmaW5kICdmaWxlJywgZm9yIGV4YW1wbGUgYmVjYXVzZSB3ZSBhcmUgY3Jvc3MtY29tcGlsaW5nLgotICBpZiAoIGZpbGUgLyApID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAjIGZ1bmNfd2luMzJfbGliaWQgYXNzdW1lcyBCU0Qgbm0sIHNvIGRpc2FsbG93IGl0IGlmIHVzaW5nIE1TIGR1bXBiaW4uCisgIGlmICggdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiQlNEIG5tIiAmJiBmaWxlIC8gKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwogICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwogICBlbHNlCi0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCiAgIGZpCiAgIDs7CiAKLWNlZ2NjKQorY2VnY2MqKQogICAjIHVzZSB0aGUgd2Vha2VyIHRlc3QgYmFzZWQgb24gJ29iamR1bXAnLiBTZWUgbWluZ3cqLgogICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZS1hcm0tLipsaXR0bGUoLiphcmNoaXRlY3R1cmU6IGFybSk/JwogICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCkBAIC0zMDM4LDYgKzMxODgsMTAgQEAKICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKICAgOzsKIAoraGFpa3UqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworCiBocHV4MTAuMjAqIHwgaHB1eDExKikKICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9L3Vzci9iaW4vZmlsZQogICBjYXNlICRob3N0X2NwdSBpbgpAQCAtMzA0NiwxMSArMzIwMCwxMSBAQAogICAgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS91c3IvbGliL2hwdXgzMi9saWJjLnNvCiAgICAgOzsKICAgaHBwYSo2NCopCi0gICAgW2x0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChzWzAtOV1bMC05XVswLTldfEVMRi1bMC05XVswLTldKSBzaGFyZWQgb2JqZWN0IGZpbGUgLSBQQS1SSVNDIFswLTldLlswLTldJ10KKyAgICBbbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKHNbMC05XVswLTldWzAtOV18RUxGWyAtXVswLTldWzAtOV0pKC1iaXQpPyggW0xNXVNCKT8gc2hhcmVkIG9iamVjdCggZmlsZSk/WywgLV0qIFBBLVJJU0MgWzAtOV1cLlswLTldJ10KICAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9wYTIwXzY0L2xpYmMuc2wKICAgICA7OwogICAqKQotICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChzW1swLTldXVtbMC05XV1bWzAtOV1dfFBBLVJJU0NbWzAtOV1dLltbMC05XV0pIHNoYXJlZCBsaWJyYXJ5JworICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChzW1swLTldXVtbMC05XV1bWzAtOV1dfFBBLVJJU0NbWzAtOV1dXC5bWzAtOV1dKSBzaGFyZWQgbGlicmFyeScKICAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9saWJjLnNsCiAgICAgOzsKICAgZXNhYwpAQCAtMzA3Miw3ICszMjI2LDcgQEAKICAgOzsKIAogIyBUaGlzIG11c3QgYmUgTGludXggRUxGLgotbGludXgqIHwgaypic2QqLWdudSkKK2xpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKICAgOzsKIApAQCAtMzE1MCw2ICszMzA0LDIxIEBACiAgIDs7CiBlc2FjCiBdKQorCitmaWxlX21hZ2ljX2dsb2I9Cit3YW50X25vY2FzZWdsb2I9bm8KK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgbWluZ3cqIHwgcHczMiopCisgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworICAgIGVsc2UKKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1tcMV1dXC9bW1wxXV1cL2c7L2ciYAorICAgIGZpCisgICAgOzsKKyAgZXNhYworZmkKKwogZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCiBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgpAQCAtMzE1Nyw3ICszMzI2LDExIEBACiBfTFRfREVDTChbXSwgW2RlcGxpYnNfY2hlY2tfbWV0aG9kXSwgWzFdLAogICAgIFtNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0c10pCiBfTFRfREVDTChbXSwgW2ZpbGVfbWFnaWNfY21kXSwgWzFdLAotICAgIFtDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIl0pCisgICAgW0NvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQorX0xUX0RFQ0woW10sIFtmaWxlX21hZ2ljX2dsb2JdLCBbMV0sCisgICAgW0hvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKK19MVF9ERUNMKFtdLCBbd2FudF9ub2Nhc2VnbG9iXSwgWzFdLAorICAgIFtGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQogXSkjIF9MVF9DSEVDS19NQUdJQ19NRVRIT0QKIAogCkBAIC0zMjE0LDcgKzMzODcsMTkgQEAKICAgTk09IiRsdF9jdl9wYXRoX05NIgogZWxzZQogICAjIERpZG4ndCBmaW5kIGFueSBCU0QgY29tcGF0aWJsZSBuYW1lIGxpc3RlciwgbG9vayBmb3IgZHVtcGJpbi4KLSAgQUNfQ0hFQ0tfVE9PTFMoRFVNUEJJTiwgWyJkdW1wYmluIC1zeW1ib2xzIiAibGluayAtZHVtcCAtc3ltYm9scyJdLCA6KQorICBpZiB0ZXN0IC1uICIkRFVNUEJJTiI7IHRoZW4gOgorICAgICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorICBlbHNlCisgICAgQUNfQ0hFQ0tfVE9PTFMoRFVNUEJJTiwgW2R1bXBiaW4gImxpbmsgLWR1bXAiXSwgOikKKyAgICBjYXNlIGAkRFVNUEJJTiAtc3ltYm9scyAvZGV2L251bGwgMj4mMSB8IHNlZCAnMXEnYCBpbgorICAgICpDT0ZGKikKKyAgICAgIERVTVBCSU49IiREVU1QQklOIC1zeW1ib2xzIgorICAgICAgOzsKKyAgICAqKQorICAgICAgRFVNUEJJTj06CisgICAgICA7OworICAgIGVzYWMKKyAgZmkKICAgQUNfU1VCU1QoW0RVTVBCSU5dKQogICBpZiB0ZXN0ICIkRFVNUEJJTiIgIT0gIjoiOyB0aGVuCiAgICAgTk09IiREVU1QQklOIgpAQCAtMzIyNywxMyArMzQxMiwxMyBAQAogQUNfQ0FDSEVfQ0hFQ0soW3RoZSBuYW1lIGxpc3RlciAoJE5NKSBpbnRlcmZhY2VdLCBbbHRfY3Zfbm1faW50ZXJmYWNlXSwKICAgW2x0X2N2X25tX2ludGVyZmFjZT0iQlNEIG5tIgogICBlY2hvICJpbnQgc29tZV92YXJpYWJsZSA9IDA7IiA+IGNvbmZ0ZXN0LiRhY19leHQKLSAgKGV2YWwgZWNobyAiXCJcJGFzX21lOl9fb2xpbmVfXzogJGFjX2NvbXBpbGVcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKKyAgKGV2YWwgZWNobyAiXCJcJGFzX21lOiRMSU5FTk86ICRhY19jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCiAgIChldmFsICIkYWNfY29tcGlsZSIgMj5jb25mdGVzdC5lcnIpCiAgIGNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAotICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6X19vbGluZV9fOiAkTk0gXFxcImNvbmZ0ZXN0LiRhY19vYmpleHRcXFwiXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCisgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiAkTk0gXFxcImNvbmZ0ZXN0LiRhY19vYmpleHRcXFwiXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCiAgIChldmFsICIkTk0gXCJjb25mdGVzdC4kYWNfb2JqZXh0XCIiIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0KQogICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKLSAgKGV2YWwgZWNobyAiXCJcJGFzX21lOl9fb2xpbmVfXzogb3V0cHV0XCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCisgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiBvdXRwdXRcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKICAgY2F0IGNvbmZ0ZXN0Lm91dCA+JkFTX01FU1NBR0VfTE9HX0ZECiAgIGlmICRHUkVQICdFeHRlcm5hbC4qc29tZV92YXJpYWJsZScgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCiAgICAgbHRfY3Zfbm1faW50ZXJmYWNlPSJNUyBkdW1wYmluIgpAQCAtMzI0OCw2ICszNDMzLDY3IEBACiBkbmwgQUNfREVGVU4oW0FNX1BST0dfTk1dLCBbXSkKIGRubCBBQ19ERUZVTihbQUNfUFJPR19OTV0sIFtdKQogCisjIF9MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGhvdyB0byBkZXRlcm1pbmUgdGhlIG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5CisjIGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIGxpbmsgbGlicmFyeS4KKyMgIC0tIFBPUlRNRSBmaWxsIGluIHdpdGggdGhlIGR5bmFtaWMgbGlicmFyeSBjaGFyYWN0ZXJpc3RpY3MKK200X2RlZnVuKFtfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQl0sCitbbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKQorbTRfcmVxdWlyZShbX0xUX0RFQ0xfT0JKRFVNUF0pCittNF9yZXF1aXJlKFtfTFRfREVDTF9ETExUT09MXSkKK0FDX0NBQ0hFX0NIRUNLKFtob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzXSwKK2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kLAorW2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworCitjYXNlICRob3N0X29zIGluCitjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAorICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKyAgKi0taWRlbnRpZnktc3RyaWN0KikKKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKKyAgICA7OworICAqKQorICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjaworICAgIDs7CisgIGVzYWMKKyAgOzsKKyopCisgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgorICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisgIDs7Citlc2FjCitdKQorc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCit0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCisKK19MVF9ERUNMKFtdLCBbc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWRdLCBbMV0sCisgICAgW0NvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXNdKQorXSkjIF9MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCCisKKworIyBfTFRfUEFUSF9NQU5JRkVTVF9UT09MCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgbG9jYXRlIHRoZSBtYW5pZmVzdCB0b29sCittNF9kZWZ1bihbX0xUX1BBVEhfTUFOSUZFU1RfVE9PTF0sCitbQUNfQ0hFQ0tfVE9PTChNQU5JRkVTVF9UT09MLCBtdCwgOikKK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CitBQ19DQUNIRV9DSEVDSyhbaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sXSwgW2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbF0sCisgIFtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAorICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKyAgZmkKKyAgcm0gLWYgY29uZnRlc3QqXSkKK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisgIE1BTklGRVNUX1RPT0w9OgorZmkKK19MVF9ERUNMKFtdLCBbTUFOSUZFU1RfVE9PTF0sIFsxXSwgW01hbmlmZXN0IHRvb2xdKWRubAorXSkjIF9MVF9QQVRIX01BTklGRVNUX1RPT0wKKwogCiAjIExUX0xJQl9NCiAjIC0tLS0tLS0tCkBAIC0zMjU2LDcgKzM1MDIsNyBAQAogW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKIExJQk09CiBjYXNlICRob3N0IGluCi0qLSotYmVvcyogfCAqLSotY3lnd2luKiB8ICotKi1wdzMyKiB8ICotKi1kYXJ3aW4qKQorKi0qLWJlb3MqIHwgKi0qLWNlZ2NjKiB8ICotKi1jeWd3aW4qIHwgKi0qLWhhaWt1KiB8ICotKi1wdzMyKiB8ICotKi1kYXJ3aW4qKQogICAjIFRoZXNlIHN5c3RlbSBkb24ndCBoYXZlIGxpYm0sIG9yIGRvbid0IG5lZWQgaXQKICAgOzsKICotbmNyLXN5c3Y0LjMqKQpAQCAtMzI4NCw3ICszNTMwLDEyIEBACiBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSk9CiAKIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0nIC1mbm8tYnVpbHRpbicKKyAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgbnZjYyopCisgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPScgLVhjb21waWxlciAtZm5vLWJ1aWx0aW4nIDs7CisgICopCisgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPScgLWZuby1idWlsdGluJyA7OworICBlc2FjCiAKICAgX0xUX0NPTVBJTEVSX09QVElPTihbaWYgJGNvbXBpbGVyIHN1cHBvcnRzIC1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnNdLAogICAgIGx0X2N2X3Byb2dfY29tcGlsZXJfcnR0aV9leGNlcHRpb25zLApAQCAtMzMwMSw2ICszNTUyLDcgQEAKIG00X2RlZnVuKFtfTFRfQ01EX0dMT0JBTF9TWU1CT0xTXSwKIFtBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCiBBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSlkbmwKK0FDX1JFUVVJUkUoW0FDX1BST0dfQVdLXSlkbmwKIEFDX1JFUVVJUkUoW0xUX1BBVEhfTk1dKWRubAogQUNfUkVRVUlSRShbTFRfUEFUSF9MRF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubApAQCAtMzM2OCw4ICszNjIwLDggQEAKIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCiAKICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwobGliW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXClbWyBdXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKVtbIF1dKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChsaWJbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgogCiAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KIG9wdF9jcj0KQEAgLTM0MDUsNiArMzY1Nyw3IEBACiAgIGVsc2UKICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qW1sJIF1dXCgkc3ltY29kZSRzeW1jb2RlKlwpW1sJIF1dW1sJIF1dKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgogICBmaQorICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCiAKICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCiAgIHBpcGVfd29ya3M9bm8KQEAgLTM0MjYsNyArMzY3OSw3IEBACiAgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCiAgICAgIyBOb3cgdHJ5IHRvIGdyYWIgdGhlIHN5bWJvbHMuCiAgICAgbmxpc3Q9Y29uZnRlc3Qubm0KLSAgICBpZiBBQ19UUllfRVZBTChOTSBjb25mdGVzdC4kYWNfb2JqZXh0IFx8ICRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFw+ICRubGlzdCkgJiYgdGVzdCAtcyAiJG5saXN0IjsgdGhlbgorICAgIGlmIEFDX1RSWV9FVkFMKE5NIGNvbmZ0ZXN0LiRhY19vYmpleHQgXHwgIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiBcPiAkbmxpc3QpICYmIHRlc3QgLXMgIiRubGlzdCI7IHRoZW4KICAgICAgICMgVHJ5IHNvcnRpbmcgYW5kIHVuaXF1aWZ5aW5nIHRoZSBvdXRwdXQuCiAgICAgICBpZiBzb3J0ICIkbmxpc3QiIHwgdW5pcSA+ICIkbmxpc3QiVDsgdGhlbgogCW12IC1mICIkbmxpc3QiVCAiJG5saXN0IgpAQCAtMzQzOCw2ICszNjkxLDE4IEBACiAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUCisjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKyMgZGVmaW5lIExUQCZ0QF9ETFNZTV9DT05TVAorI2Vsc2UKKyMgZGVmaW5lIExUQCZ0QF9ETFNZTV9DT05TVCBjb25zdAorI2VuZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKQEAgLTM0NDksNyArMzcxNCw3IEBACiAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKIAogLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwotY29uc3Qgc3RydWN0IHsKK0xUQCZ0QF9ETFNZTV9DT05TVCBzdHJ1Y3QgewogICBjb25zdCBjaGFyICpuYW1lOwogICB2b2lkICAgICAgICphZGRyZXNzOwogfQpAQCAtMzQ3NSwxNSArMzc0MCwxNSBAQAogX0xUX0VPRgogCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwogCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKIAkgIENGTEFHUz0iJENGTEFHUyRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSkiCiAJICBpZiBBQ19UUllfRVZBTChhY19saW5rKSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAJICAgIHBpcGVfd29ya3M9eWVzCiAJICBmaQotCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwogCWVsc2UKIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mQVNfTUVTU0FHRV9MT0dfRkQKIAlmaQpAQCAtMzUxNiw2ICszNzgxLDEzIEBACiAgIEFDX01TR19SRVNVTFQob2spCiBmaQogCisjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW1tAXV1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworZmkKKwogX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfcGlwZV0sIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlXSwgWzFdLAogICAgIFtUYWtlIHRoZSBvdXRwdXQgb2Ygbm0gYW5kIHByb2R1Y2UgYSBsaXN0aW5nIG9mIHJhdyBzeW1ib2xzIGFuZCBDIG5hbWVzXSkKIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NkZWNsXSwgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsXSwgWzFdLApAQCAtMzUyNiw2ICszNzk4LDggQEAKIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXhdLAogICAgIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4XSwgWzFdLAogICAgIFtUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZF0pCitfTFRfREVDTChbXSwgW25tX2ZpbGVfbGlzdF9zcGVjXSwgWzFdLAorICAgIFtTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yICROTV0pCiBdKSAjIF9MVF9DTURfR0xPQkFMX1NZTUJPTFMKIAogCkBAIC0zNTM3LDcgKzM4MTEsNiBAQAogX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQogX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPQogCi1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDXSkKIG00X2lmKFskMV0sIFtDWFhdLCBbCiAgICMgQysrIHNwZWNpZmljIGNhc2VzIGZvciBwaWMsIHN0YXRpYywgd2wsIGV0Yy4KICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KQEAgLTM1ODgsNiArMzg2MSwxMSBAQAogICAgICAgIyBESkdQUCBkb2VzIG5vdCBzdXBwb3J0IHNoYXJlZCBsaWJyYXJpZXMgYXQgYWxsCiAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9CiAgICAgICA7OworICAgIGhhaWt1KikKKyAgICAgICMgUElDIGlzIHRoZSBkZWZhdWx0IGZvciBIYWlrdS4KKyAgICAgICMgVGhlICItc3RhdGljIiBmbGFnIGV4aXN0cywgYnV0IGlzIGJyb2tlbi4KKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0KKyAgICAgIDs7CiAgICAgaW50ZXJpeFtbMy05XV0qKQogICAgICAgIyBJbnRlcml4IDMueCBnY2MgLWZwaWMvLWZQSUMgb3B0aW9ucyBnZW5lcmF0ZSBicm9rZW4gY29kZS4KICAgICAgICMgSW5zdGVhZCwgd2UgcmVsb2NhdGUgc2hhcmVkIGxpYnJhcmllcyBhdCBydW50aW1lLgpAQCAtMzYzNyw2ICszOTE1LDEyIEBACiAJICA7OwogCWVzYWMKIAk7OworICAgICAgbWluZ3cqIHwgY3lnd2luKiB8IG9zMiogfCBwdzMyKiB8IGNlZ2NjKikKKwkjIFRoaXMgaGFjayBpcyBzbyB0aGF0IHRoZSBzb3VyY2UgZmlsZSBjYW4gdGVsbCB3aGV0aGVyIGl0IGlzIGJlaW5nCisJIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KKwltNF9pZihbJDFdLCBbR0NKXSwgW10sCisJICBbX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctRERMTF9FWFBPUlQnXSkKKwk7OwogICAgICAgZGd1eCopCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KIAkgIGVjKysqKQpAQCAtMzY5Myw3ICszOTc3LDcgQEAKIAkgICAgOzsKIAllc2FjCiAJOzsKLSAgICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUpCisgICAgICBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KIAkgIEtDQyopCiAJICAgICMgS0FJIEMrKyBDb21waWxlcgpAQCAtMzcyNiw4ICs0MDEwLDggQEAKIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQogCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ub25fc2hhcmVkJwogCSAgICA7OwotCSAgeGxjKiB8IHhsQyopCi0JICAgICMgSUJNIFhMIDguMCBvbiBQUEMKKwkgIHhsYyogfCB4bEMqIHwgYmd4bFtbY0NdXSogfCBtcGl4bFtbY0NdXSopCisJICAgICMgSUJNIFhMIDguMCwgOS4wIG9uIFBQQyBhbmQgQmx1ZUdlbmUKIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCiAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLXFwaWMnCiAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXFzdGF0aWNsaW5rJwpAQCAtMzc4OSw3ICs0MDczLDcgQEAKIAk7OwogICAgICAgc29sYXJpcyopCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KLQkgIENDKikKKwkgIENDKiB8IHN1bkNDKikKIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKwogCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwogCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwpAQCAtMzg5Myw2ICs0MTc3LDEyIEBACiAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mbm8tY29tbW9uJwogICAgICAgOzsKIAorICAgIGhhaWt1KikKKyAgICAgICMgUElDIGlzIHRoZSBkZWZhdWx0IGZvciBIYWlrdS4KKyAgICAgICMgVGhlICItc3RhdGljIiBmbGFnIGV4aXN0cywgYnV0IGlzIGJyb2tlbi4KKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0KKyAgICAgIDs7CisKICAgICBocHV4KikKICAgICAgICMgUElDIGlzIHRoZSBkZWZhdWx0IGZvciA2NC1iaXQgUEEgSFAtVVgsIGJ1dCBub3QgZm9yIDMyLWJpdAogICAgICAgIyBQQSBIUC1VWC4gIE9uIElBNjQgSFAtVVgsIFBJQyBpcyB0aGUgZGVmYXVsdCBidXQgdGhlIHBpYyBmbGFnCkBAIC0zOTM1LDYgKzQyMjUsMTMgQEAKICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMnCiAgICAgICA7OwogICAgIGVzYWMKKworICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgbnZjYyopICMgQ3VkYSBDb21waWxlciBEcml2ZXIgMi4yCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVhsaW5rZXIgJworICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctWGNvbXBpbGVyIC1mUElDJworICAgICAgOzsKKyAgICBlc2FjCiAgIGVsc2UKICAgICAjIFBPUlRNRSBDaGVjayBmb3IgZmxhZyB0byBwYXNzIGxpbmtlciBmbGFncyB0aHJvdWdoIHRoZSBzeXN0ZW0gY29tcGlsZXIuCiAgICAgY2FzZSAkaG9zdF9vcyBpbgpAQCAtMzk3Nyw3ICs0Mjc0LDcgQEAKICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLW5vbl9zaGFyZWQnCiAgICAgICA7OwogCi0gICAgbGludXgqIHwgaypic2QqLWdudSkKKyAgICBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCiAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgogICAgICAgIyBvbGQgSW50ZWwgZm9yIHg4Nl82NCB3aGljaCBzdGlsbCBzdXBwb3J0ZWQgLUtQSUMuCiAgICAgICBlY2MqKQpAQCAtMzk5OCw3ICs0Mjk1LDEzIEBACiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctLXNoYXJlZCcKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy0tc3RhdGljJwogCTs7Ci0gICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KikKKyAgICAgIG5hZ2ZvciopCisJIyBOQUcgRm9ydHJhbiBjb21waWxlcgorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsLVdsLCwnCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctUElDJworCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisJOzsKKyAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwpAQCAtNDAxMCwyNiArNDMxMywyNiBAQAogICAgICAgICAjIEFsbCBBbHBoYSBjb2RlIGlzIFBJQy4KICAgICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctbm9uX3NoYXJlZCcKICAgICAgICAgOzsKLSAgICAgIHhsKikKLQkjIElCTSBYTCBDIDguMC9Gb3J0cmFuIDEwLjEgb24gUFBDCisgICAgICB4bCogfCBiZ3hsKiB8IGJnZiogfCBtcGl4bCopCisJIyBJQk0gWEwgQyA4LjAvRm9ydHJhbiAxMC4xLCAxMS4xIG9uIFBQQyBhbmQgQmx1ZUdlbmUKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1xcGljJwogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXFzdGF0aWNsaW5rJwogCTs7CiAgICAgICAqKQogCWNhc2UgYCRDQyAtViAyPiYxIHwgc2VkIDVxYCBpbgorCSpTdW5cIEYqIHwgKlN1bipGb3J0cmFuKikKKwkgICMgU3VuIEZvcnRyYW4gOC4zIHBhc3NlcyBhbGwgdW5yZWNvZ25pemVkIGZsYWdzIHRvIHRoZSBsaW5rZXIKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9JycKKwkgIDs7CiAJKlN1blwgQyopCiAJICAjIFN1biBDIDUuOQogCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKIAkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCiAJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKIAkgIDs7Ci0JKlN1blwgRiopCi0JICAjIFN1biBGb3J0cmFuIDguMyBwYXNzZXMgYWxsIHVucmVjb2duaXplZCBmbGFncyB0byB0aGUgbGlua2VyCi0JICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwotCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKLQkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPScnCi0JICA7OwogCWVzYWMKIAk7OwogICAgICAgZXNhYwpAQCAtNDA2MCw3ICs0MzYzLDcgQEAKICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCiAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwogICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVFvcHRpb24gbGQgJzs7CiAgICAgICAqKQogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJzs7CkBAIC00MTE3LDkgKzQ0MjAsMTEgQEAKICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9IiRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSlAJnRAbTRfaWYoWyQxXSxbXSxbIC1EUElDXSxbbTRfaWYoWyQxXSxbQ1hYXSxbIC1EUElDXSxbXSldKSIKICAgICA7OwogZXNhYwotQUNfTVNHX1JFU1VMVChbJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKV0pCi1fTFRfVEFHREVDTChbd2xdLCBbbHRfcHJvZ19jb21waWxlcl93bF0sIFsxXSwKLQlbSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlcl0pCisKK0FDX0NBQ0hFX0NIRUNLKFtmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQ10sCisgIFtfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfcGljLCAkMSldLAorICBbX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSldKQorX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSRfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfcGljLCAkMSkKIAogIwogIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgpAQCAtNDEzOCw2ICs0NDQzLDggQEAKIF9MVF9UQUdERUNMKFtwaWNfZmxhZ10sIFtsdF9wcm9nX2NvbXBpbGVyX3BpY10sIFsxXSwKIAlbQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzXSkKIAorX0xUX1RBR0RFQ0woW3dsXSwgW2x0X3Byb2dfY29tcGlsZXJfd2xdLCBbMV0sCisJW0hvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXJdKQogIwogIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgogIwpAQCAtNDE1OCw2ICs0NDY1LDcgQEAKIG00X2RlZnVuKFtfTFRfTElOS0VSX1NITElCU10sCiBbQUNfUkVRVUlSRShbTFRfUEFUSF9MRF0pZG5sCiBBQ19SRVFVSVJFKFtMVF9QQVRIX05NXSlkbmwKK200X3JlcXVpcmUoW19MVF9QQVRIX01BTklGRVNUX1RPT0xdKWRubAogbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubApAQCAtNDE2NiwyNyArNDQ3NCwzNSBAQAogQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRoZSAkY29tcGlsZXIgbGlua2VyICgkTEQpIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXNdKQogbTRfaWYoWyQxXSwgW0NYWF0sIFsKICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKyAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKiddCiAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgYWl4W1s0LTldXSopCiAgICAgIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCiAgICAgIyAtQyBtZWFucyBkZW1hbmdsZSB0byBBSVggbm0sIGJ1dCBtZWFucyBkb24ndCBkZW1hbmdsZSB3aXRoIEdOVSBubQorICAgICMgQWxzbywgQUlYIG5tIHRyZWF0cyB3ZWFrIGRlZmluZWQgc3ltYm9scyBsaWtlIG90aGVyIGdsb2JhbCBkZWZpbmVkCisgICAgIyBzeW1ib2xzLCB3aGVyZWFzIEdOVSBubSBtYXJrcyB0aGVtIGFzICJXIi4KICAgICBpZiAkTk0gLVYgMj4mMSB8ICRHUkVQICdHTlUnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJworICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpIHx8IChcJCAyID09ICJXIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJwogICAgIGVsc2UKICAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJDcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJwogICAgIGZpCiAgICAgOzsKICAgcHczMiopCiAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9IiRsdGRsbF9jbWRzIgotICA7OworICAgIDs7CiAgIGN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCi0gICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS87L14uKltbIF1dX19ubV9fL3MvXi4qW1sgXV1fX25tX19cKFtbXiBdXSpcKVtbIF1dW1teIF1dKi9cMSBEQVRBLzsvXklbWyBdXS9kOy9eW1tBSVRXXV1bWyBdXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotICA7OworICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgY2wqKSA7OworICAgICopCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLztzL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKyAgICAgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnXQorICAgICAgOzsKKyAgICBlc2FjCisgICAgOzsKICAgKikKICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotICA7OworICAgIDs7CiAgIGVzYWMKLSAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKiddCiBdLCBbCiAgIHJ1bnBhdGhfdmFyPQogICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9CkBAIC00MjQ5LDcgKzQ1NjUsMzMgQEAKICAgZXNhYwogCiAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9eWVzCisKKyAgIyBPbiBzb21lIHRhcmdldHMsIEdOVSBsZCBpcyBjb21wYXRpYmxlIGVub3VnaCB3aXRoIHRoZSBuYXRpdmUgbGlua2VyCisgICMgdGhhdCB3ZSdyZSBiZXR0ZXIgb2ZmIHVzaW5nIHRoZSBuYXRpdmUgaW50ZXJmYWNlIGZvciBib3RoLgorICBsdF91c2VfZ251X2xkX2ludGVyZmFjZT1ubwogICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgYWl4KikKKwkjIFRoZSBBSVggcG9ydCBvZiBHTlUgbGQgaGFzIGFsd2F5cyBhc3BpcmVkIHRvIGNvbXBhdGliaWxpdHkKKwkjIHdpdGggdGhlIG5hdGl2ZSBsaW5rZXIuICBIb3dldmVyLCBhcyB0aGUgd2FybmluZyBpbiB0aGUgR05VIGxkCisJIyBibG9jayBzYXlzLCB2ZXJzaW9ucyBiZWZvcmUgMi4xOS41KiBjb3VsZG4ndCByZWFsbHkgY3JlYXRlIHdvcmtpbmcKKwkjIHNoYXJlZCBsaWJyYXJpZXMsIHJlZ2FyZGxlc3Mgb2YgdGhlIGludGVyZmFjZSB1c2VkLgorCWNhc2UgYCRMRCAtdiAyPiYxYCBpbgorCSAgKlwgXChHTlVcIEJpbnV0aWxzXClcIDIuMTkuNSopIDs7CisJICAqXCBcKEdOVVwgQmludXRpbHNcKVwgMi5bWzItOV1dKikgOzsKKwkgICpcIFwoR05VXCBCaW51dGlsc1wpXCBbWzMtOV1dKikgOzsKKwkgICopCisJICAgIGx0X3VzZV9nbnVfbGRfaW50ZXJmYWNlPXllcworCSAgICA7OworCWVzYWMKKwk7OworICAgICAgKikKKwlsdF91c2VfZ251X2xkX2ludGVyZmFjZT15ZXMKKwk7OworICAgIGVzYWMKKyAgZmkKKworICBpZiB0ZXN0ICIkbHRfdXNlX2dudV9sZF9pbnRlcmZhY2UiID0geWVzOyB0aGVuCiAgICAgIyBJZiBhcmNoaXZlX2NtZHMgcnVucyBMRCwgbm90IENDLCB3bGFyYyBzaG91bGQgYmUgZW1wdHkKICAgICB3bGFyYz0nJHt3bH0nCiAKQEAgLTQyNjcsNiArNDYwOSw3IEBACiAgICAgZmkKICAgICBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9bm8KICAgICBjYXNlIGAkTEQgLXYgMj4mMWAgaW4KKyAgICAgICpHTlVcIGdvbGQqKSBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9eWVzIDs7CiAgICAgICAqXCBbWzAxXV0uKiB8ICpcIDIuW1swLTldXS4qIHwgKlwgMi4xMC4qKSA7OyAjIGNhdGNoIHZlcnNpb25zIDwgMi4xMQogICAgICAgKlwgMi4xMS45My4wLjJcICopIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz15ZXMgOzsgIyBSSDcuMyAuLi4KICAgICAgICpcIDIuMTEuOTIuMC4xMlwgKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OyAjIE1hbmRyYWtlIDguMiAuLi4KQEAgLTQyODIsMTEgKzQ2MjUsMTIgQEAKIAlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCiAJY2F0IDw8X0xUX0VPRiAxPiYyCiAKLSoqKiBXYXJuaW5nOiB0aGUgR05VIGxpbmtlciwgYXQgbGVhc3QgdXAgdG8gcmVsZWFzZSAyLjkuMSwgaXMgcmVwb3J0ZWQKKyoqKiBXYXJuaW5nOiB0aGUgR05VIGxpbmtlciwgYXQgbGVhc3QgdXAgdG8gcmVsZWFzZSAyLjE5LCBpcyByZXBvcnRlZAogKioqIHRvIGJlIHVuYWJsZSB0byByZWxpYWJseSBjcmVhdGUgc2hhcmVkIGxpYnJhcmllcyBvbiBBSVguCiAqKiogVGhlcmVmb3JlLCBsaWJ0b29sIGlzIGRpc2FibGluZyBzaGFyZWQgbGlicmFyaWVzIHN1cHBvcnQuICBJZiB5b3UKLSoqKiByZWFsbHkgY2FyZSBmb3Igc2hhcmVkIGxpYnJhcmllcywgeW91IG1heSB3YW50IHRvIG1vZGlmeSB5b3VyIFBBVEgKLSoqKiBzbyB0aGF0IGEgbm9uLUdOVSBsaW5rZXIgaXMgZm91bmQsIGFuZCB0aGVuIHJlc3RhcnQuCisqKiogcmVhbGx5IGNhcmUgZm9yIHNoYXJlZCBsaWJyYXJpZXMsIHlvdSBtYXkgd2FudCB0byBpbnN0YWxsIGJpbnV0aWxzCisqKiogMi4yMCBvciBhYm92ZSwgb3IgbW9kaWZ5IHlvdXIgUEFUSCBzbyB0aGF0IGEgbm9uLUdOVSBsaW5rZXIgaXMgZm91bmQuCisqKiogWW91IHdpbGwgdGhlbiBuZWVkIHRvIHJlc3RhcnQgdGhlIGNvbmZpZ3VyYXRpb24gcHJvY2Vzcy4KIAogX0xUX0VPRgogICAgICAgZmkKQEAgLTQzMjIsMTAgKzQ2NjYsMTIgQEAKICAgICAgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCiAgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCiAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKICAgICAgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KICAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwotICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS87cy9eLipbWyBdXV9fbm1fX1woW1teIF1dKlwpW1sgXV1bW14gXV0qL1wxIERBVEEvOy9eSVtbIF1dL2Q7L15bW0FJVFddXVtbIF1dL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisgICAgICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJ10KIAogICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKQEAgLTQzNDMsNiArNDY4OSwxMSBAQAogICAgICAgZmkKICAgICAgIDs7CiAKKyAgICBoYWlrdSopCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworICAgICAgOzsKKwogICAgIGludGVyaXhbWzMtOV1dKikKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCkBAIC00MzU4LDcgKzQ3MDksNyBAQAogICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J3NlZCAicyxeLF8sIiAkZXhwb3J0X3N5bWJvbHMgPiRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCwkc29uYW1lICR7d2x9LS1yZXRhaW4tc3ltYm9scy1maWxlLCRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltICR7d2x9LS1pbWFnZS1iYXNlLGBleHByICR7UkFORE9NLSQkfSAlIDQwOTYgLyAyIFwqIDI2MjE0NCArIDEzNDIxNzcyODBgIC1vICRsaWInCiAgICAgICA7OwogCi0gICAgZ251KiB8IGxpbnV4KiB8IHRwZiogfCBrKmJzZCotZ251KQorICAgIGdudSogfCBsaW51eCogfCB0cGYqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogICAgICAgdG1wX2RpZXQ9bm8KICAgICAgIGlmIHRlc3QgIiRob3N0X29zIiA9IGxpbnV4LWRpZXRsaWJjOyB0aGVuCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTQzNjgsMTUgKzQ3MTksMTYgQEAKICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRFR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsIFwKIAkgJiYgdGVzdCAiJHRtcF9kaWV0IiA9IG5vCiAgICAgICB0aGVuCi0JdG1wX2FkZGZsYWc9CisJdG1wX2FkZGZsYWc9JyAkcGljX2ZsYWcnCiAJdG1wX3NoYXJlZGZsYWc9Jy1zaGFyZWQnCiAJY2FzZSAkY2NfYmFzZW5hbWUsJGhvc3RfY3B1IGluCiAgICAgICAgIHBnY2MqKQkJCQkjIFBvcnRsYW5kIEdyb3VwIEMgY29tcGlsZXIKLQkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIHRtcF9hZGRmbGFnPScgJHBpY19mbGFnJwogCSAgOzsKLQlwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSopCSMgUG9ydGxhbmQgR3JvdXAgZjc3IGFuZCBmOTAgY29tcGlsZXJzCi0JICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRFQ0hPIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwlwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQorCQkJCQkjIFBvcnRsYW5kIEdyb3VwIGY3NyBhbmQgZjkwIGNvbXBpbGVycworCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIHRtcF9hZGRmbGFnPScgJHBpY19mbGFnIC1Nbm9tYWluJyA7OwogCWVjYyosaWE2NCogfCBpY2MqLGlhNjQqKQkjIEludGVsIEMgY29tcGlsZXIgb24gaWE2NAogCSAgdG1wX2FkZGZsYWc9JyAtaV9keW5hbWljJyA7OwpAQCAtNDM4NywxMyArNDczOSwxNyBAQAogCWxmOTUqKQkJCQkjIExhaGV5IEZvcnRyYW4gOC4xCiAJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CiAJICB0bXBfc2hhcmVkZmxhZz0nLS1zaGFyZWQnIDs7Ci0JeGxbW2NDXV0qKQkJCSMgSUJNIFhMIEMgOC4wIG9uIFBQQyAoZGVhbCB3aXRoIHhsZiBiZWxvdykKKwl4bFtbY0NdXSogfCBiZ3hsW1tjQ11dKiB8IG1waXhsW1tjQ11dKikgIyBJQk0gWEwgQyA4LjAgb24gUFBDIChkZWFsIHdpdGggeGxmIGJlbG93KQogCSAgdG1wX3NoYXJlZGZsYWc9Jy1xbWtzaHJvYmonCiAJICB0bXBfYWRkZmxhZz0gOzsKKwludmNjKikJIyBDdWRhIENvbXBpbGVyIERyaXZlciAyLjIKKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICBfTFRfVEFHVkFSKGNvbXBpbGVyX25lZWRzX29iamVjdCwgJDEpPXllcworCSAgOzsKIAllc2FjCiAJY2FzZSBgJENDIC1WIDI+JjEgfCBzZWQgNXFgIGluCiAJKlN1blwgQyopCQkJIyBTdW4gQyA1LjkKLQkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgbmV3X2NvbnZlbmllbmNlPTsgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAteiBcIiRjb252XCIgfHwgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyAkRUNITyBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYG5ld19jb252ZW5pZW5jZT07IGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgLXogXCIkY29udlwiIHx8IG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCiAJICBfTFRfVEFHVkFSKGNvbXBpbGVyX25lZWRzX29iamVjdCwgJDEpPXllcwogCSAgdG1wX3NoYXJlZGZsYWc9Jy1HJyA7OwogCSpTdW5cIEYqKQkJCSMgU3VuIEZvcnRyYW4gOC4zCkBAIC00NDA5LDE3ICs0NzY1LDE3IEBACiAgICAgICAgIGZpCiAKIAljYXNlICRjY19iYXNlbmFtZSBpbgotCXhsZiopCisJeGxmKiB8IGJnZiogfCBiZ3hsZiogfCBtcGl4bGYqKQogCSAgIyBJQk0gWEwgRm9ydHJhbiAxMC4xIG9uIFBQQyBjYW5ub3QgY3JlYXRlIHNoYXJlZCBsaWJzIGl0c2VsZgogCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwogCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9CiAJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0nLXJwYXRoICRsaWJkaXInCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwogCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgogCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CiAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwogCSAgZmkKIAkgIDs7CiAJZXNhYwpAQCAtNDQzMyw4ICs0Nzg5LDggQEAKIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwogCXdsYXJjPQogICAgICAgZWxzZQotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGZpCiAgICAgICA7OwogCkBAIC00NDUyLDggKzQ4MDgsOCBAQAogCiBfTFRfRU9GCiAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwogICAgICAgZmkKQEAgLTQ0OTksOCArNDg1NSw4IEBACiAKICAgICAqKQogICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGVsc2UKIAlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCiAgICAgICBmaQpAQCAtNDU0MCw4ICs0ODk2LDEwIEBACiAgICAgICBlbHNlCiAJIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCiAJIyAtQyBtZWFucyBkZW1hbmdsZSB0byBBSVggbm0sIGJ1dCBtZWFucyBkb24ndCBkZW1hbmdsZSB3aXRoIEdOVSBubQorCSMgQWxzbywgQUlYIG5tIHRyZWF0cyB3ZWFrIGRlZmluZWQgc3ltYm9scyBsaWtlIG90aGVyIGdsb2JhbAorCSMgZGVmaW5lZCBzeW1ib2xzLCB3aGVyZWFzIEdOVSBubSBtYXJrcyB0aGVtIGFzICJXIi4KIAlpZiAkTk0gLVYgMj4mMSB8ICRHUkVQICdHTlUnID4gL2Rldi9udWxsOyB0aGVuCi0JICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJworCSAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpIHx8IChcJCAyID09ICJXIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJwogCWVsc2UKIAkgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJDcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJwogCWZpCkBAIC00NjI4LDkgKzQ5ODYsOSBAQAogCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nLWJlcm9rJwogICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQogICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuICRFQ0hPICJYJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgfCAkWHNlZDsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKICAgICAgIGVsc2UKIAlpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgogCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LVIgJGxpYmRpcjovdXNyL2xpYjovbGliJwpAQCAtNDYzOSwxNCArNDk5NywxOSBAQAogCWVsc2UKIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLQkgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKwkgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKIAkgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAogCSAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgogCSAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tYmVybm90b2snCiAJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1iZXJvaycKLQkgICMgRXhwb3J0ZWQgc3ltYm9scyBjYW4gYmUgcHVsbGVkIGludG8gc2hhcmVkIG9iamVjdHMgZnJvbSBhcmNoaXZlcwotCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSckY29udmVuaWVuY2UnCisJICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisJICAgICMgV2Ugb25seSB1c2UgdGhpcyBjb2RlIGZvciBHTlUgbGRzIHRoYXQgc3VwcG9ydCAtLXdob2xlLWFyY2hpdmUuCisJICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICBlbHNlCisJICAgICMgRXhwb3J0ZWQgc3ltYm9scyBjYW4gYmUgcHVsbGVkIGludG8gc2hhcmVkIG9iamVjdHMgZnJvbSBhcmNoaXZlcworCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyRjb252ZW5pZW5jZScKKwkgIGZpCiAJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9eWVzCiAJICAjIFRoaXMgaXMgc2ltaWxhciB0byBob3cgQUlYIHRyYWRpdGlvbmFsbHkgYnVpbGRzIGl0cyBzaGFyZWQgbGlicmFyaWVzLgogCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9IlwkQ0MgJHNoYXJlZF9mbGFnIicgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAke3dsfS1ibm9lbnRyeSAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tYkU6JGV4cG9ydF9zeW1ib2xzJHthbGxvd191bmRlZmluZWRfZmxhZ31+JEFSICRBUl9GTEFHUyAkb3V0cHV0X29iamRpci8kbGlibmFtZSRyZWxlYXNlLmEgJG91dHB1dF9vYmpkaXIvJHNvbmFtZScKQEAgLTQ2NzgsMjAgKzUwNDEsNjMgQEAKICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCiAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCiAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCi0gICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0gICAgICBsaWJleHQ9bGliCi0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGAkRUNITyAiWCRkZXBsaWJzIiB8ICRYc2VkIC1lICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCi0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSAgICAgIF9MVF9UQUdWQVIoZml4X3NyY2ZpbGVfcGF0aCwgJDEpPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLSAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgIGNsKikKKwkjIE5hdGl2ZSBNU1ZDCisJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCisJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisJX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT15ZXMKKwlfTFRfVEFHVkFSKGZpbGVfbGlzdF9zcGVjLCAkMSk9J0AnCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKwlsaWJleHQ9bGliCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisJc2hyZXh0X2NtZHM9Ii5kbGwiCisJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworCSAgZWxzZQorCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworCSAgZml+CisJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisJICBsaW5rbmFtZXM9JworCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJworCV9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworCV9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW1tBSVRXXV1bWyBdXS9zLy4qW1sgXV0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKwkjIERvbid0IHVzZSByYW5saWIKKwlfTFRfVEFHVkFSKG9sZF9wb3N0aW5zdGFsbF9jbWRzLCAkMSk9J2NobW9kIDY0NCAkb2xkbGliJworCV9MVF9UQUdWQVIocG9zdGxpbmtfY21kcywgJDEpPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorCSAgICAqLmV4ZXwqLkVYRSkgOzsKKwkgICAgKikKKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKwkgICAgICA7OworCSAgZXNhY34KKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworCSAgZmknCisJOzsKKyAgICAgICopCisJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCisJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKwlsaWJleHQ9bGliCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisJc2hyZXh0X2NtZHM9Ii5kbGwiCisJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisJX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCisJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKwlfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworCV9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworCTs7CisgICAgICBlc2FjCiAgICAgICA7OwogCiAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKQEAgLTQ3MjksNyArNTEzNSw3IEBACiAKICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCiAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCkBAIC00NzM3LDcgKzUxNDMsNyBAQAogCiAgICAgaHB1eDkqKQogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgZWxzZQogCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgZmkKQEAgLTQ3NTIsOCArNTE1OCw4IEBACiAgICAgICA7OwogCiAgICAgaHB1eDEwKikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzIC1hICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKICAgICAgIGZpCkBAIC00NzcxLDE2ICs1MTc3LDE2IEBACiAgICAgICA7OwogCiAgICAgaHB1eDExKikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzIC1hICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgogCWNhc2UgJGhvc3RfY3B1IGluCiAJaHBwYSo2NCopCiAJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJaWE2NCopCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJKikKLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJZXNhYwogICAgICAgZWxzZQpAQCAtNDc5Miw3ICs1MTk4LDE0IEBACiAJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogCSopCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwltNF9pZigkMSwgW10sIFsKKwkgICMgT2xkZXIgdmVyc2lvbnMgb2YgdGhlIDExLjAwIGNvbXBpbGVyIGRvIG5vdCB1bmRlcnN0YW5kIC1iIHlldAorCSAgIyAoSFA5MjQ1My0wMSBBLjExLjAxLjIwIGRvZXNuJ3QsIEhQOTI0NTMtMDEgQi4xMS5YLjM1MTc1LTM1MTc2LkdQIGRvZXMpCisJICBfTFRfTElOS0VSX09QVElPTihbaWYgJENDIHVuZGVyc3RhbmRzIC1iXSwKKwkgICAgX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX19iLCAkMSksIFstYl0sCisJICAgIFtfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyddLAorCSAgICBbX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyddKV0sCisJICBbX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnXSkKIAkgIDs7CiAJZXNhYwogICAgICAgZmkKQEAgLTQ4MjAsMTkgKzUyMzMsMzQgQEAKIAogICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCiAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotICAgICAgICBBQ19MSU5LX0lGRUxTRShpbnQgZm9vKHZvaWQpIHt9LAotICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgICApCi0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKwlBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbF0sCisJICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2xdLAorCSAgW3NhdmVfTERGTEFHUz0iJExERkxBR1MiCisJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorCSAgIEFDX0xJTktfSUZFTFNFKAorCSAgICAgW0FDX0xBTkdfU09VUkNFKAorCSAgICAgICAgW0FDX0xBTkdfQ0FTRShbQ10sIFtbaW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfV1dLAorCQkJICAgICAgW0MrK10sIFtbaW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfV1dLAorCQkJICAgICAgW0ZvcnRyYW4gNzddLCBbWworICAgICAgc3Vicm91dGluZSBmb28KKyAgICAgIGVuZF1dLAorCQkJICAgICAgW0ZvcnRyYW5dLCBbWworICAgICAgc3Vicm91dGluZSBmb28KKyAgICAgIGVuZF1dKV0pXSwKKwkgICAgICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzXSwKKwkgICAgICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm9dKQorICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIl0pCisJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCWZpCiAgICAgICBlbHNlCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogICAgICAgZmkKICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT0nbm8nCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwpAQCAtNDg5NCwxNyArNTMyMiwxNyBAQAogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcwogICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0gICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckRUNITyAiTElCUkFSWSAkbGlibmFtZSBJTklUSU5TVEFOQ0UiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPICJERVNDUklQVElPTiBcIiRsaWJuYW1lXCIiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyBEQVRBID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyAiIFNJTkdMRSBOT05TSEFSRUQiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyBFWFBPUlRTID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lbXhleHAgJGxpYm9ianMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRDQyAtWmRsbCAtWmNydGRsbCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckRUNITyAiTElCUkFSWSAkbGlibmFtZSBJTklUSU5TVEFOQ0UiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPICJERVNDUklQVElPTiBcIiRsaWJuYW1lXCIiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lY2hvIERBVEEgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVjaG8gIiBTSU5HTEUgTk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZWNobyBFWFBPUlRTID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lbXhleHAgJGxpYm9ianMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRDQyAtWmRsbCAtWmNydGRsbCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCiAgICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0nZW14aW1wIC1vICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmEgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJwogICAgICAgOzsKIAogICAgIG9zZjMqKQogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAgICAgICBmaQogICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPSdubycKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCkBAIC00OTE0LDEzICs1MzQyLDEzIEBACiAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2ZvciBpIGluIGBjYXQgJGV4cG9ydF9zeW1ib2xzYDsgZG8gcHJpbnRmICIlcyAlc1xcbiIgLWV4cG9ydGVkX3N5bWJvbCAiXCRpIiA+PiAkbGliLmV4cDsgZG9uZTsgcHJpbnRmICIlc1xcbiIgIi1oaWRkZW4iPj4gJGxpYi5leHB+Ci0JJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAke3dsfS1pbnB1dCAke3dsfSRsaWIuZXhwICRjb21waWxlcl9mbGFncyAkbGlib2JqcyAkZGVwbGlicyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYn4kUk0gJGxpYi5leHAnCisJJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAke3dsfS1pbnB1dCAke3dsfSRsaWIuZXhwICRjb21waWxlcl9mbGFncyAkbGlib2JqcyAkZGVwbGlicyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYn4kUk0gJGxpYi5leHAnCiAKIAkjIEJvdGggYyBhbmQgY3h4IGNvbXBpbGVyIHN1cHBvcnQgLXJwYXRoIGRpcmVjdGx5CiAJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1ycGF0aCAkbGliZGlyJwpAQCAtNDkzMyw5ICs1MzYxLDkgQEAKICAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC16IGRlZnMnCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogCXdsYXJjPScke3dsfScKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKICAgICAgIGVsc2UKIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KIAkqIkNvbXBpbGVycyA1LjAiKikKQEAgLTUxMTEsMzYgKzU1MzksMzggQEAKICAgICAgICMgVGVzdCB3aGV0aGVyIHRoZSBjb21waWxlciBpbXBsaWNpdGx5IGxpbmtzIHdpdGggLWxjIHNpbmNlIG9uIHNvbWUKICAgICAgICMgc3lzdGVtcywgLWxnY2MgaGFzIHRvIGNvbWUgYmVmb3JlIC1sYy4gSWYgZ2NjIGFscmVhZHkgcGFzc2VzIC1sYwogICAgICAgIyB0byBsZCwgZG9uJ3QgYWRkIC1sYyBiZWZvcmUgLWxnY2MuCi0gICAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgLWxjIHNob3VsZCBiZSBleHBsaWNpdGx5IGxpbmtlZCBpbl0pCi0gICAgICAkUk0gY29uZnRlc3QqCi0gICAgICBlY2hvICIkbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKKyAgICAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIC1sYyBzaG91bGQgYmUgZXhwbGljaXRseSBsaW5rZWQgaW5dLAorCVtsdF9jdl9dX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpLAorCVskUk0gY29uZnRlc3QqCisJZWNobyAiJGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZSIgPiBjb25mdGVzdC4kYWNfZXh0CiAKLSAgICAgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpIDI+Y29uZnRlc3QuZXJyOyB0aGVuCi0gICAgICAgIHNvbmFtZT1jb25mdGVzdAotICAgICAgICBsaWI9Y29uZnRlc3QKLSAgICAgICAgbGlib2Jqcz1jb25mdGVzdC4kYWNfb2JqZXh0Ci0gICAgICAgIGRlcGxpYnM9Ci0gICAgICAgIHdsPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKQotCXBpY19mbGFnPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSkKLSAgICAgICAgY29tcGlsZXJfZmxhZ3M9LXYKLSAgICAgICAgbGlua2VyX2ZsYWdzPS12Ci0gICAgICAgIHZlcnN0cmluZz0KLSAgICAgICAgb3V0cHV0X29iamRpcj0uCi0gICAgICAgIGxpYm5hbWU9Y29uZnRlc3QKLSAgICAgICAgbHRfc2F2ZV9hbGxvd191bmRlZmluZWRfZmxhZz0kX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpCi0gICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KLSAgICAgICAgaWYgQUNfVFJZX0VWQUwoX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKSAyXD5cJjEgXHwgJEdSRVAgXCIgLWxjIFwiIFw+L2Rldi9udWxsIDJcPlwmMSkKLSAgICAgICAgdGhlbgotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCi0gICAgICAgIGVsc2UKLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKLSAgICAgICAgZmkKLSAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSRsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnCi0gICAgICBlbHNlCi0gICAgICAgIGNhdCBjb25mdGVzdC5lcnIgMT4mNQotICAgICAgZmkKLSAgICAgICRSTSBjb25mdGVzdCoKLSAgICAgIEFDX01TR19SRVNVTFQoWyRfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSldKQorCWlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpIDI+Y29uZnRlc3QuZXJyOyB0aGVuCisJICBzb25hbWU9Y29uZnRlc3QKKwkgIGxpYj1jb25mdGVzdAorCSAgbGlib2Jqcz1jb25mdGVzdC4kYWNfb2JqZXh0CisJICBkZXBsaWJzPQorCSAgd2w9JF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpCisJICBwaWNfZmxhZz0kX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpCisJICBjb21waWxlcl9mbGFncz0tdgorCSAgbGlua2VyX2ZsYWdzPS12CisJICB2ZXJzdHJpbmc9CisJICBvdXRwdXRfb2JqZGlyPS4KKwkgIGxpYm5hbWU9Y29uZnRlc3QKKwkgIGx0X3NhdmVfYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKQorCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQorCSAgaWYgQUNfVFJZX0VWQUwoX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKSAyXD5cJjEgXHwgJEdSRVAgXCIgLWxjIFwiIFw+L2Rldi9udWxsIDJcPlwmMSkKKwkgIHRoZW4KKwkgICAgbHRfY3ZfW11fTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KKwkgIGVsc2UKKwkgICAgbHRfY3ZfW11fTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9eWVzCisJICBmaQorCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSRsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnCisJZWxzZQorCSAgY2F0IGNvbmZ0ZXN0LmVyciAxPiY1CisJZmkKKwkkUk0gY29uZnRlc3QqCisJXSkKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT0kbHRfY3ZfW11fTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSkKICAgICAgIDs7CiAgICAgZXNhYwogICBmaQpAQCAtNTIwNSw4ICs1NjM1LDYgQEAKICAgICB0byBydW50aW1lIHBhdGggbGlzdF0pCiBfTFRfVEFHREVDTChbXSwgW2xpbmtfYWxsX2RlcGxpYnNdLCBbMF0sCiAgICAgW1doZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllc10pCi1fTFRfVEFHREVDTChbXSwgW2ZpeF9zcmNmaWxlX3BhdGhdLCBbMV0sCi0gICAgW0ZpeCB0aGUgc2hlbGwgdmFyaWFibGUgJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlcl0pCiBfTFRfVEFHREVDTChbXSwgW2Fsd2F5c19leHBvcnRfc3ltYm9sc10sIFswXSwKICAgICBbU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkXSkKIF9MVF9UQUdERUNMKFtdLCBbZXhwb3J0X3N5bWJvbHNfY21kc10sIFsyXSwKQEAgLTUyMTcsNiArNTY0NSw4IEBACiAgICAgW1N5bWJvbHMgdGhhdCBtdXN0IGFsd2F5cyBiZSBleHBvcnRlZF0pCiBfTFRfVEFHREVDTChbXSwgW3ByZWxpbmtfY21kc10sIFsyXSwKICAgICBbQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXNdKQorX0xUX1RBR0RFQ0woW10sIFtwb3N0bGlua19jbWRzXSwgWzJdLAorICAgIFtDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zXSkKIF9MVF9UQUdERUNMKFtdLCBbZmlsZV9saXN0X3NwZWNdLCBbMV0sCiAgICAgW1NwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlc10pCiBkbmwgRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKQEAgLTUzMTAsMTQgKzU3NDAsMTUgQEAKIF0pIyBfTFRfTEFOR19DX0NPTkZJRwogCiAKLSMgX0xUX1BST0dfQ1hYCi0jIC0tLS0tLS0tLS0tLQotIyBTaW5jZSBBQ19QUk9HX0NYWCBpcyBicm9rZW4sIGluIHRoYXQgaXQgcmV0dXJucyBnKysgaWYgdGhlcmUgaXMgbm8gYysrCi0jIGNvbXBpbGVyLCB3ZSBoYXZlIG91ciBvd24gdmVyc2lvbiBoZXJlLgotbTRfZGVmdW4oW19MVF9QUk9HX0NYWF0sCi1bCi1wdXNoZGVmKFtBQ19NU0dfRVJST1JdLCBbX2x0X2NhdWdodF9DWFhfZXJyb3I9eWVzXSkKLUFDX1BST0dfQ1hYCisjIF9MVF9MQU5HX0NYWF9DT05GSUcoW1RBR10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgYSBDKysgY29tcGlsZXIgYXJlIHN1aXRhYmx5CisjIGRlZmluZWQuICBUaGVzZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5IF9MVF9DT05GSUcgdG8gd3JpdGUKKyMgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgorbTRfZGVmdW4oW19MVF9MQU5HX0NYWF9DT05GSUddLAorW200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAorbTRfcmVxdWlyZShbX0xUX1BBVEhfTUFOSUZFU1RfVE9PTF0pZG5sCiBpZiB0ZXN0IC1uICIkQ1hYIiAmJiAoIHRlc3QgIlgkQ1hYIiAhPSAiWG5vIiAmJgogICAgICggKHRlc3QgIlgkQ1hYIiA9ICJYZysrIiAmJiBgZysrIC12ID4vZGV2L251bGwgMj4mMWAgKSB8fAogICAgICh0ZXN0ICJYJENYWCIgIT0gIlhnKysiKSkpIDsgdGhlbgpAQCAtNTMyNSwyMiArNTc1Niw2IEBACiBlbHNlCiAgIF9sdF9jYXVnaHRfQ1hYX2Vycm9yPXllcwogZmkKLXBvcGRlZihbQUNfTVNHX0VSUk9SXSkKLV0pIyBfTFRfUFJPR19DWFgKLQotZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgotZG5sIEFDX0RFRlVOKFtfTFRfUFJPR19DWFhdLCBbXSkKLQotCi0jIF9MVF9MQU5HX0NYWF9DT05GSUcoW1RBR10pCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgYSBDKysgY29tcGlsZXIgYXJlIHN1aXRhYmx5Ci0jIGRlZmluZWQuICBUaGVzZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5IF9MVF9DT05GSUcgdG8gd3JpdGUKLSMgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgotbTRfZGVmdW4oW19MVF9MQU5HX0NYWF9DT05GSUddLAotW0FDX1JFUVVJUkUoW19MVF9QUk9HX0NYWF0pZG5sCi1tNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKLW00X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSlkbmwKIAogQUNfTEFOR19QVVNIKEMrKykKIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwpAQCAtNTM2Miw2ICs1Nzc3LDggQEAKIF9MVF9UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9CiBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT11bmtub3duCiBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcworX0xUX1RBR1ZBUihyZWxvYWRfZmxhZywgJDEpPSRyZWxvYWRfZmxhZworX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpPSRyZWxvYWRfY21kcwogX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPQogX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQogX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9bm8KQEAgLTUzOTMsNiArNTgxMCw3IEBACiAKICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KICAgbHRfc2F2ZV9DQz0kQ0MKKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwogICBsdF9zYXZlX0xEPSRMRAogICBsdF9zYXZlX0dDQz0kR0NDCiAgIEdDQz0kR1hYCkBAIC01NDEwLDYgKzU4MjgsNyBAQAogICBmaQogICB0ZXN0IC16ICIke0xEQ1hYK3NldH0iIHx8IExEPSRMRENYWAogICBDQz0ke0NYWC0iYysrIn0KKyAgQ0ZMQUdTPSRDWFhGTEFHUwogICBjb21waWxlcj0kQ0MKICAgX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQwogICBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCkBAIC01NDMxLDggKzU4NTAsOCBAQAogICAgICAgIyBDaGVjayBpZiBHTlUgQysrIHVzZXMgR05VIGxkIGFzIHRoZSB1bmRlcmx5aW5nIGxpbmtlciwgc2luY2UgdGhlCiAgICAgICAjIGFyY2hpdmluZyBjb21tYW5kcyBiZWxvdyBhc3N1bWUgdGhhdCBHTlUgbGQgaXMgYmVpbmcgdXNlZC4KICAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KLSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgJHBpY19mbGFnIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDICRwaWNfZmxhZyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKIAogICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwogICAgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCkBAIC01NDY0LDcgKzU4ODMsNyBAQAogICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwogICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCiAgICAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLSAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJcLUwiJworICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgLXYgIl5Db25maWd1cmVkIHdpdGg6IiB8ICRHUkVQICJcLUwiJwogCiAgICAgZWxzZQogICAgICAgR1hYPW5vCkBAIC01NTczLDEwICs1OTkyLDEwIEBACiAgICAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSctYmVyb2snCiAgICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuIGVtcHR5CiAgICAgICAgICAgIyBleGVjdXRhYmxlLgotICAgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisgICAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKICAgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKIAotICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiAkRUNITyAiWCR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iIHwgJFhzZWQ7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKKyAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKICAgICAgICAgZWxzZQogICAgICAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCiAJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SICRsaWJkaXI6L3Vzci9saWI6L2xpYicKQEAgLTU1ODUsMTQgKzYwMDQsMTkgQEAKICAgICAgICAgICBlbHNlCiAJICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgogCSAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0JICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisJICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCiAJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogCSAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAogCSAgICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCiAJICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWJlcm5vdG9rJwogCSAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1iZXJvaycKLQkgICAgIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCi0JICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJGNvbnZlbmllbmNlJworCSAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisJICAgICAgIyBXZSBvbmx5IHVzZSB0aGlzIGNvZGUgZm9yIEdOVSBsZHMgdGhhdCBzdXBwb3J0IC0td2hvbGUtYXJjaGl2ZS4KKwkgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgICBlbHNlCisJICAgICAgIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCisJICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSckY29udmVuaWVuY2UnCisJICAgIGZpCiAJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKIAkgICAgIyBUaGlzIGlzIHNpbWlsYXIgdG8gaG93IEFJWCB0cmFkaXRpb25hbGx5IGJ1aWxkcyBpdHMgc2hhcmVkCiAJICAgICMgbGlicmFyaWVzLgpAQCAtNTYyMiwyOCArNjA0Niw3NSBAQAogICAgICAgICA7OwogCiAgICAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgICAgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCi0gICAgICAgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0gICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCi0gICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotICAgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCi0gICAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworCWNhc2UgJEdYWCwkY2NfYmFzZW5hbWUgaW4KKwksY2wqIHwgbm8sY2wqKQorCSAgIyBOYXRpdmUgTVNWQworCSAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworCSAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJworCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisJICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcworCSAgX0xUX1RBR1ZBUihmaWxlX2xpc3Rfc3BlYywgJDEpPSdAJworCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKwkgIGxpYmV4dD1saWIKKwkgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorCSAgc2hyZXh0X2NtZHM9Ii5kbGwiCisJICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorCSAgICAgICRTRUQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworCSAgICBlbHNlCisJICAgICAgJFNFRCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisJICAgIGZpfgorCSAgICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisJICAgIGxpbmtuYW1lcz0nCisJICAjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisJICAjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJworCSAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisJICAjIERvbid0IHVzZSByYW5saWIKKwkgIF9MVF9UQUdWQVIob2xkX3Bvc3RpbnN0YWxsX2NtZHMsICQxKT0nY2htb2QgNjQ0ICRvbGRsaWInCisJICBfTFRfVEFHVkFSKHBvc3RsaW5rX2NtZHMsICQxKT0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorCSAgICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorCSAgICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisJICAgICAgKi5leGV8Ki5FWEUpIDs7CisJICAgICAgKikKKwkJbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorCQlsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorCQk7OworCSAgICBlc2FjfgorCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGx0X291dHB1dGZpbGUifgorCSAgICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorCSAgICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisJICAgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisJICAgIGZpJworCSAgOzsKKwkqKQorCSAgIyBnKysKKwkgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCisJICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKwkgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCisJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKwkgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KKwkgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwogCi0gICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0gICAgICAgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQotICAgICAgICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCi0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0JICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSAgICAgICAgICBlbHNlCi0JICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotCSAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotICAgICAgICAgIGZpfgotICAgICAgICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLSAgICAgICAgZWxzZQotICAgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSAgICAgICAgZmkKLSAgICAgICAgOzsKKwkgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworCSAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCisJICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorCSAgICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKwkgICAgZWxzZQorCSAgICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisJICAgIGZpfgorCSAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisJICBlbHNlCisJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgIGZpCisJICA7OworCWVzYWMKKwk7OwogICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKICAgICAgICAgX0xUX0RBUldJTl9MSU5LRVJfRkVBVFVSRVMoJDEpCiAJOzsKQEAgLTU2ODUsNiArNjE1NiwxMSBAQAogICAgICAgZ251KikKICAgICAgICAgOzsKIAorICAgICAgaGFpa3UqKQorICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICAgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCisgICAgICAgIDs7CisKICAgICAgIGhwdXg5KikKICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwogICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CkBAIC01NzA5LDExICs2MTg1LDExIEBACiAgICAgICAgICAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQogICAgICAgICAgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQogICAgICAgICAgICAgIyBkZXBlbmRlbmNpZXMuCi0gICAgICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCgkQ0MgLWIgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEpIHwgJEVHUkVQICJcLUwiYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7ICRFQ0hPICJYJGxpc3QiIHwgJFhzZWQnCisgICAgICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCgkQ0MgLWIgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEpIHwgJEVHUkVQICJcLUwiYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGZ1bmNfZWNob19hbGwgIiRsaXN0IicKICAgICAgICAgICAgIDs7CiAgICAgICAgICAgKikKICAgICAgICAgICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0gICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAogICAgICAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCkBAIC01Nzc0LDcgKzYyNTAsNyBAQAogCSAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQogCSAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CiAJICAgICMgZGVwZW5kZW5jaWVzLgotCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCgkQ0MgLWIgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEpIHwgJEdSRVAgIlwtTCJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgJEVDSE8gIlgkbGlzdCIgfCAkWHNlZCcKKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRHUkVQICJcLUwiYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGZ1bmNfZWNob19hbGwgIiRsaXN0IicKIAkgICAgOzsKICAgICAgICAgICAqKQogCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgpAQCAtNTc4NCwxMCArNjI2MCwxMCBAQAogCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKIAkgICAgICAgICAgICA7OwogCSAgICAgICAgICBpYTY0KikKLQkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKIAkgICAgICAgICAgICA7OwogCSAgICAgICAgICAqKQotCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKIAkgICAgICAgICAgICA7OwogCSAgICAgICAgZXNhYwogCSAgICAgIGZpCkBAIC01ODE3LDcgKzYyOTMsNyBAQAogICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgogICAgICAgICAgIENDKikKIAkgICAgIyBTR0kgQysrCi0JICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1hbGwgLW11bHRpZ290ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWFsbCAtbXVsdGlnb3QgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAKIAkgICAgIyBBcmNoaXZlcyBjb250YWluaW5nIEMrKyBvYmplY3QgZmlsZXMgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCiAJICAgICMgIkNDIC1hciIsIHdoZXJlICJDQyIgaXMgdGhlIElSSVggQysrIGNvbXBpbGVyLiAgVGhpcyBpcwpAQCAtNTgyOCw5ICs2MzA0LDkgQEAKICAgICAgICAgICAqKQogCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgogCSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJICAgICAgZWxzZQotCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgIC1vICRsaWInCiAJICAgICAgZmkKIAkgICAgZmkKIAkgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCkBAIC01ODQxLDcgKzYzMTcsNyBAQAogICAgICAgICBfTFRfVEFHVkFSKGluaGVyaXRfcnBhdGgsICQxKT15ZXMKICAgICAgICAgOzsKIAotICAgICAgbGludXgqIHwgaypic2QqLWdudSkKKyAgICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKICAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KICAgICAgICAgICBLQ0MqKQogCSAgICAjIEt1Y2sgYW5kIEFzc29jaWF0ZXMsIEluYy4gKEtBSSkgQysrIENvbXBpbGVyCkBAIC01ODU5LDcgKzYzMzUsNyBAQAogCSAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQogCSAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CiAJICAgICMgZGVwZW5kZW5jaWVzLgotCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgLW8gbGliY29uZnRlc3Qkc2hhcmVkX2V4dCAyPiYxIHwgJEdSRVAgImxkImA7IHJtIC1mIGxpYmNvbmZ0ZXN0JHNoYXJlZF9leHQ7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyAkRUNITyAiWCRsaXN0IiB8ICRYc2VkJworCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgLW8gbGliY29uZnRlc3Qkc2hhcmVkX2V4dCAyPiYxIHwgJEdSRVAgImxkImA7IHJtIC1mIGxpYmNvbmZ0ZXN0JHNoYXJlZF9leHQ7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICIkbGlzdCInCiAKIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCiAJICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKQEAgLTU4OTYsMjYgKzYzNzIsMjYgQEAKICAgICAgICAgICBwZ0NDKiB8IHBnY3BwKikKICAgICAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgQysrIGNvbXBpbGVyCiAJICAgIGNhc2UgYCRDQyAtVmAgaW4KLQkgICAgKnBnQ0NcIFtbMS01XV0qIHwgKnBnY3BwXCBbWzEtNV1dKikKKwkgICAgKnBnQ0NcIFtbMS01XV0uKiB8ICpwZ2NwcFwgW1sxLTVdXS4qKQogCSAgICAgIF9MVF9UQUdWQVIocHJlbGlua19jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CiAJCXJtIC1yZiAkdHBsZGlyfgogCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvYmpzICRsaWJvYmpzICRjb21waWxlX2RlcGxpYnN+Ci0JCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgIicKKwkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgIicKIAkgICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KIAkJcm0gLXJmICR0cGxkaXJ+CiAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9sZG9ianMkb2xkX2RlcGxpYnN+Ci0JCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGB+CisJCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgfgogCQkkUkFOTElCICRvbGRsaWInCiAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KIAkJcm0gLXJmICR0cGxkaXJ+CiAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgotCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJworCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KIAkJcm0gLXJmICR0cGxkaXJ+CiAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgotCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAJICAgICAgOzsKLQkgICAgKikgIyBWZXJzaW9uIDYgd2lsbCB1c2Ugd2VhayBzeW1ib2xzCisJICAgICopICMgVmVyc2lvbiA2IGFuZCBhYm92ZSB1c2Ugd2VhayBzeW1ib2xzCiAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCiAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAJICAgICAgOzsKQEAgLTU5MjMsNyArNjM5OSw3IEBACiAKIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1ycGF0aCAke3dsfSRsaWJkaXInCiAJICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKLQkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyAkRUNITyBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCiAgICAgICAgICAgICA7OwogCSAgY3h4KikKIAkgICAgIyBDb21wYXEgQysrCkBAIC01OTQyLDkgKzY0MTgsOSBAQAogCSAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQogCSAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CiAJICAgICMgZGVwZW5kZW5jaWVzLgotCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgImxkImA7IHRlbXBsaXN0PWAkRUNITyAiWCR0ZW1wbGlzdCIgfCAkWHNlZCAtZSAicy9cKF4uKmxkLipcKVwoIC4qbGQgLiokXCkvXDEvImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyAkRUNITyAiWCRsaXN0IiB8ICRYc2VkJworCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgImxkImA7IHRlbXBsaXN0PWBmdW5jX2VjaG9fYWxsICIkdGVtcGxpc3QiIHwgJFNFRCAicy9cKF4uKmxkLipcKVwoIC4qbGQgLiokXCkvXDEvImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICJYJGxpc3QiIHwgJFhzZWQnCiAJICAgIDs7Ci0JICB4bCopCisJICB4bCogfCBtcGl4bCogfCBiZ3hsKikKIAkgICAgIyBJQk0gWEwgOC4wIG9uIFBQQywgd2l0aCBHTlUgbGQKIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKIAkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJwpAQCAtNTk2NCwxMyArNjQ0MCwxMyBAQAogCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1oJHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1HJHthbGxvd191bmRlZmluZWRfZmxhZ30gLWgkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMnCiAJICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKLQkgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYG5ld19jb252ZW5pZW5jZT07IGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgLXogXCIkY29udlwiIHx8IG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgbmV3X2NvbnZlbmllbmNlPTsgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAteiBcIiRjb252XCIgfHwgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKIAkgICAgICBfTFRfVEFHVkFSKGNvbXBpbGVyX25lZWRzX29iamVjdCwgJDEpPXllcwogCiAJICAgICAgIyBOb3Qgc3VyZSB3aGV0aGVyIHNvbWV0aGluZyBiYXNlZCBvbgogCSAgICAgICMgJENDICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAtbyBsaWJjb25mdGVzdCRzaGFyZWRfZXh0IDI+JjEKIAkgICAgICAjIHdvdWxkIGJlIGJldHRlci4KLQkgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nZWNobycKKwkgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nZnVuY19lY2hvX2FsbCcKIAogCSAgICAgICMgQXJjaGl2ZXMgY29udGFpbmluZyBDKysgb2JqZWN0IGZpbGVzIG11c3QgYmUgY3JlYXRlZCB1c2luZwogCSAgICAgICMgIkNDIC14YXIiLCB3aGVyZSAiQ0MiIGlzIHRoZSBTdW4gQysrIGNvbXBpbGVyLiAgVGhpcyBpcwpAQCAtNjAzOSw3ICs2NTE1LDcgQEAKIAkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKIAkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSIkd2xhcmMiJy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAnIiR3bGFyYyInLS1uby13aG9sZS1hcmNoaXZlJwogCSAgZmkKLQkgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPWVjaG8KKwkgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPWZ1bmNfZWNob19hbGwKIAllbHNlCiAJICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCiAJZmkKQEAgLTYwNzQsMTUgKzY1NTAsMTUgQEAKIAkgICAgY2FzZSAkaG9zdCBpbgogCSAgICAgIG9zZjMqKQogCSAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCSAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKIAkJOzsKIAkgICAgICAqKQogCSAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2ZvciBpIGluIGBjYXQgJGV4cG9ydF9zeW1ib2xzYDsgZG8gcHJpbnRmICIlcyAlc1xcbiIgLWV4cG9ydGVkX3N5bWJvbCAiXCRpIiA+PiAkbGliLmV4cDsgZG9uZX4KIAkgICAgICAgICAgZWNobyAiLWhpZGRlbiI+PiAkbGliLmV4cH4KLQkgICAgICAgICAgJENDIC1zaGFyZWQkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSAke3dsfS1pbnB1dCAke3dsfSRsaWIuZXhwICBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifgorCSAgICAgICAgICAkQ0MgLXNoYXJlZCRhbGxvd191bmRlZmluZWRfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lICR7d2x9LWlucHV0ICR7d2x9JGxpYi5leHAgIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWJ+CiAJICAgICAgICAgICRSTSAkbGliLmV4cCcKIAkgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctcnBhdGggJGxpYmRpcicKIAkJOzsKQEAgLTYwOTgsMTcgKzY1NzQsMTcgQEAKIAkgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KIAkgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQogCSAgICAjIGRlcGVuZGVuY2llcy4KLQkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJsZCIgfCAkR1JFUCAtdiAibGQ6ImA7IHRlbXBsaXN0PWAkRUNITyAiWCR0ZW1wbGlzdCIgfCAkWHNlZCAtZSAicy9cKF4uKmxkLipcKVwoIC4qbGQuKiRcKS9cMS8iYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7ICRFQ0hPICJYJGxpc3QiIHwgJFhzZWQnCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAibGQiIHwgJEdSRVAgLXYgImxkOiJgOyB0ZW1wbGlzdD1gZnVuY19lY2hvX2FsbCAiJHRlbXBsaXN0IiB8ICRTRUQgInMvXCheLipsZC4qXClcKCAuKmxkLiokXCkvXDEvImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICIkbGlzdCInCiAJICAgIDs7CiAJICAqKQogCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KIAkgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwogCSAgICAgIGNhc2UgJGhvc3QgaW4KIAkgICAgICAgIG9zZjMqKQotCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJCSAgOzsKIAkgICAgICAgICopCi0JICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJCSAgOzsKIAkgICAgICBlc2FjCiAKQEAgLTYxMTgsNyArNjU5NCw3IEBACiAJICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwogCSAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgogCSAgICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgotCSAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJcLUwiJworCSAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQIC12ICJeQ29uZmlndXJlZCB3aXRoOiIgfCAkR1JFUCAiXC1MIicKIAogCSAgICBlbHNlCiAJICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CkBAIC02MTU0LDcgKzY2MzAsNyBAQAogCiAgICAgICBzb2xhcmlzKikKICAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgICAgICBDQyopCisgICAgICAgICAgQ0MqIHwgc3VuQ0MqKQogCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCiAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCQxKT15ZXMKIAkgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgLXpkZWZzJwpAQCAtNjE3NSw3ICs2NjUxLDcgQEAKIAkgICAgZXNhYwogCSAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKIAotCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nZWNobycKKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J2Z1bmNfZWNob19hbGwnCiAKIAkgICAgIyBBcmNoaXZlcyBjb250YWluaW5nIEMrKyBvYmplY3QgZmlsZXMgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCiAJICAgICMgIkNDIC14YXIiLCB3aGVyZSAiQ0MiIGlzIHRoZSBTdW4gQysrIGNvbXBpbGVyLiAgVGhpcyBpcwpAQCAtNjE5NSwxNCArNjY3MSwxNCBAQAogCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KIAkgICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS16ICR7d2x9ZGVmcycKIAkgICAgICBpZiAkQ0MgLS12ZXJzaW9uIHwgJEdSRVAgLXYgJ14yXC43JyA+IC9kZXYvbnVsbDsgdGhlbgotCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJwogCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLQkJICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisJCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKIAogCSAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwogCSAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCiAJICAgICAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLQkgICAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJcLUwiJworCSAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgLXYgIl5Db25maWd1cmVkIHdpdGg6IiB8ICRHUkVQICJcLUwiJwogCSAgICAgIGVsc2UKIAkgICAgICAgICMgZysrIDIuNyBhcHBlYXJzIHRvIHJlcXVpcmUgYC1HJyBOT1QgYC1zaGFyZWQnIG9uIHRoaXMKIAkgICAgICAgICMgcGxhdGZvcm0uCkBAIC02MjEzLDcgKzY2ODksNyBAQAogCSAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwogCSAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCiAJICAgICAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLQkgICAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLUcgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAiXC1MIicKKwkgICAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLUcgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAtdiAiXkNvbmZpZ3VyZWQgd2l0aDoiIHwgJEdSRVAgIlwtTCInCiAJICAgICAgZmkKIAogCSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SICR3bCRsaWJkaXInCkBAIC02MjY3LDYgKzY3NDMsMTAgQEAKICAgICAgICAgICBDQyopCiAJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nJENDIC1UcHJlbGlua19vYmplY3RzICRvbGRvYmpzfgorCSAgICAgICciJF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpIgorCSAgICBfTFRfVEFHVkFSKHJlbG9hZF9jbWRzLCAkMSk9JyRDQyAtVHByZWxpbmtfb2JqZWN0cyAkcmVsb2FkX29ianN+CisJICAgICAgJyIkX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpIgogCSAgICA7OwogCSAgKikKIAkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwpAQCAtNjMyMiw2ICs2ODAyLDcgQEAKICAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCiAKICAgQ0M9JGx0X3NhdmVfQ0MKKyAgQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUwogICBMRENYWD0kTEQKICAgTEQ9JGx0X3NhdmVfTEQKICAgR0NDPSRsdF9zYXZlX0dDQwpAQCAtNjMzNiw2ICs2ODE3LDI5IEBACiBdKSMgX0xUX0xBTkdfQ1hYX0NPTkZJRwogCiAKKyMgX0xUX0ZVTkNfU1RSSVBOQU1FX0NORgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGZ1bmNfc3RyaXBuYW1lX2NuZiBwcmVmaXggc3VmZml4IG5hbWUKKyMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCisjIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCisjIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCisjCisjIFRoaXMgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIHRvIHRoZSAobm9uLVhTSSkgdmVyc2lvbiBvZiBmdW5jX3N0cmlwbmFtZSwKKyMgZXhjZXB0IHRoaXMgb25lIGNhbiBiZSB1c2VkIGJ5IG00IGNvZGUgdGhhdCBtYXkgYmUgZXhlY3V0ZWQgYnkgY29uZmlndXJlLAorIyByYXRoZXIgdGhhbiB0aGUgbGlidG9vbCBzY3JpcHQuCittNF9kZWZ1bihbX0xUX0ZVTkNfU1RSSVBOQU1FX0NORl0sW2RubAorQUNfUkVRVUlSRShbX0xUX0RFQ0xfU0VEXSkKK0FDX1JFUVVJUkUoW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSkKK2Z1bmNfc3RyaXBuYW1lX2NuZiAoKQoreworICBjYXNlICR7Mn0gaW4KKyAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKyAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworICBlc2FjCit9ICMgZnVuY19zdHJpcG5hbWVfY25mCitdKSMgX0xUX0ZVTkNfU1RSSVBOQU1FX0NORgorCiAjIF9MVF9TWVNfSElEREVOX0xJQkRFUFMoW1RBR05BTUVdKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgRmlndXJlIG91dCAiaGlkZGVuIiBsaWJyYXJ5IGRlcGVuZGVuY2llcyBmcm9tIHZlcmJvc2UKQEAgLTYzNDQsNiArNjg0OCw3IEBACiAjIG9iamVjdHMsIGxpYnJhcmllcyBhbmQgbGlicmFyeSBmbGFncy4KIG00X2RlZnVuKFtfTFRfU1lTX0hJRERFTl9MSUJERVBTXSwKIFttNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKK0FDX1JFUVVJUkUoW19MVF9GVU5DX1NUUklQTkFNRV9DTkZdKWRubAogIyBEZXBlbmRlbmNpZXMgdG8gcGxhY2UgYmVmb3JlIGFuZCBhZnRlciB0aGUgb2JqZWN0IGJlaW5nIGxpbmtlZDoKIF9MVF9UQUdWQVIocHJlZGVwX29iamVjdHMsICQxKT0KIF9MVF9UQUdWQVIocG9zdGRlcF9vYmplY3RzLCAkMSk9CkBAIC02Mzk0LDYgKzY4OTksMTMgQEAKIH07CiBfTFRfRU9GCiBdKQorCitfbHRfbGliZGVwc19zYXZlX0NGTEFHUz0kQ0ZMQUdTCitjYXNlICIkQ0MgJENGTEFHUyAiIGluICMoCisqXCAtZmx0bypcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLWx0byIgOzsKKypcIC1md2hvcHIqXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby13aG9wciIgOzsKK2VzYWMKKwogZG5sIFBhcnNlIHRoZSBjb21waWxlciBvdXRwdXQgYW5kIGV4dHJhY3QgdGhlIG5lY2Vzc2FyeQogZG5sIG9iamVjdHMsIGxpYnJhcmllcyBhbmQgbGlicmFyeSBmbGFncy4KIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCkBAIC02NDA1LDcgKzY5MTcsNyBAQAogICBwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lPW5vCiAKICAgZm9yIHAgaW4gYGV2YWwgIiRvdXRwdXRfdmVyYm9zZV9saW5rX2NtZCJgOyBkbwotICAgIGNhc2UgJHAgaW4KKyAgICBjYXNlICR7cHJldn0ke3B9IGluCiAKICAgICAtTCogfCAtUiogfCAtbCopCiAgICAgICAgIyBTb21lIGNvbXBpbGVycyBwbGFjZSBzcGFjZSBiZXR3ZWVuICIte0wsUn0iIGFuZCB0aGUgcGF0aC4KQEAgLTY0MTQsMTMgKzY5MjYsMjIgQEAKICAgICAgICAgICB0ZXN0ICRwID0gIi1SIjsgdGhlbgogCSBwcmV2PSRwCiAJIGNvbnRpbnVlCi0gICAgICAgZWxzZQotCSBwcmV2PQogICAgICAgIGZpCiAKKyAgICAgICAjIEV4cGFuZCB0aGUgc3lzcm9vdCB0byBlYXNlIGV4dHJhY3RpbmcgdGhlIGRpcmVjdG9yaWVzIGxhdGVyLgorICAgICAgIGlmIHRlc3QgLXogIiRwcmV2IjsgdGhlbgorICAgICAgICAgY2FzZSAkcCBpbgorICAgICAgICAgLUwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1MJyAnJyAiJHAiOyBwcmV2PS1MOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKyAgICAgICAgIC1SKikgZnVuY19zdHJpcG5hbWVfY25mICctUicgJycgIiRwIjsgcHJldj0tUjsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisgICAgICAgICAtbCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLWwnICcnICIkcCI7IHByZXY9LWw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworICAgICAgICAgZXNhYworICAgICAgIGZpCisgICAgICAgY2FzZSAkcCBpbgorICAgICAgID0qKSBmdW5jX3N0cmlwbmFtZV9jbmYgJz0nICcnICIkcCI7IHA9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisgICAgICAgZXNhYwogICAgICAgIGlmIHRlc3QgIiRwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lIiA9IG5vOyB0aGVuCi0JIGNhc2UgJHAgaW4KLQkgLUwqIHwgLVIqKQorCSBjYXNlICR7cHJldn0gaW4KKwkgLUwgfCAtUikKIAkgICAjIEludGVybmFsIGNvbXBpbGVyIGxpYnJhcnkgcGF0aHMgc2hvdWxkIGNvbWUgYWZ0ZXIgdGhvc2UKIAkgICAjIHByb3ZpZGVkIHRoZSB1c2VyLiAgVGhlIHBvc3RkZXBzIGFscmVhZHkgY29tZSBhZnRlciB0aGUKIAkgICAjIHVzZXIgc3VwcGxpZWQgbGlicyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHByb2Nlc3MgdGhlbS4KQEAgLTY0NDAsOCArNjk2MSwxMCBAQAogCSAgIF9MVF9UQUdWQVIocG9zdGRlcHMsICQxKT0iJHtfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSl9ICR7cHJldn0ke3B9IgogCSBmaQogICAgICAgIGZpCisgICAgICAgcHJldj0KICAgICAgICA7OwogCisgICAgKi5sdG8uJG9iamV4dCkgOzsgIyBJZ25vcmUgR0NDIExUTyBvYmplY3RzCiAgICAgKi4kb2JqZXh0KQogICAgICAgICMgVGhpcyBhc3N1bWVzIHRoYXQgdGhlIHRlc3Qgb2JqZWN0IGZpbGUgb25seSBzaG93cyB1cAogICAgICAgICMgb25jZSBpbiB0aGUgY29tcGlsZXIgb3V0cHV0LgpAQCAtNjQ3Nyw2ICs3MDAwLDcgQEAKIGZpCiAKICRSTSAtZiBjb25mZXN0LiRvYmpleHQKK0NGTEFHUz0kX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1MKIAogIyBQT1JUTUU6IG92ZXJyaWRlIGFib3ZlIHRlc3Qgb24gc3lzdGVtcyB3aGVyZSBpdCBpcyBicm9rZW4KIG00X2lmKFskMV0sIFtDWFhdLApAQCAtNjUxMyw3ICs3MDM3LDcgQEAKIAogc29sYXJpcyopCiAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gIENDKikKKyAgQ0MqIHwgc3VuQ0MqKQogICAgICMgVGhlIG1vcmUgc3RhbmRhcmRzLWNvbmZvcm1pbmcgc3RscG9ydDQgbGlicmFyeSBpcwogICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZwogICAgICMgaXQgaWYgaXQncyBpbiBDWFhGTEFHUy4gSWdub3JlIGxpYkNydW4gYXMKQEAgLTY1NTcsMzIgKzcwODEsMTYgQEAKIF0pIyBfTFRfU1lTX0hJRERFTl9MSUJERVBTCiAKIAotIyBfTFRfUFJPR19GNzcKLSMgLS0tLS0tLS0tLS0tCi0jIFNpbmNlIEFDX1BST0dfRjc3IGlzIGJyb2tlbiwgaW4gdGhhdCBpdCByZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcKLSMgaWYgdGhlcmUgaXMgbm8gZm9ydHJhbiBjb21waWxlciwgd2UgaGF2ZSBvdXIgb3duIHZlcnNpb24gaGVyZS4KLW00X2RlZnVuKFtfTFRfUFJPR19GNzddLAotWwotcHVzaGRlZihbQUNfTVNHX0VSUk9SXSwgW19sdF9kaXNhYmxlX0Y3Nz15ZXNdKQotQUNfUFJPR19GNzcKLWlmIHRlc3QgLXogIiRGNzciIHx8IHRlc3QgIlgkRjc3IiA9ICJYbm8iOyB0aGVuCi0gIF9sdF9kaXNhYmxlX0Y3Nz15ZXMKLWZpCi1wb3BkZWYoW0FDX01TR19FUlJPUl0pCi1dKSMgX0xUX1BST0dfRjc3Ci0KLWRubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKLWRubCBBQ19ERUZVTihbX0xUX1BST0dfRjc3XSwgW10pCi0KLQogIyBfTFRfTEFOR19GNzdfQ09ORklHKFtUQUddKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIGEgRm9ydHJhbiA3NyBjb21waWxlciBhcmUKICMgc3VpdGFibHkgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRwogIyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCiBtNF9kZWZ1bihbX0xUX0xBTkdfRjc3X0NPTkZJR10sCi1bQUNfUkVRVUlSRShbX0xUX1BST0dfRjc3XSlkbmwKLUFDX0xBTkdfUFVTSChGb3J0cmFuIDc3KQorW0FDX0xBTkdfUFVTSChGb3J0cmFuIDc3KQoraWYgdGVzdCAteiAiJEY3NyIgfHwgdGVzdCAiWCRGNzciID0gIlhubyI7IHRoZW4KKyAgX2x0X2Rpc2FibGVfRjc3PXllcworZmkKIAogX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCiBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9CkBAIC02NjAxLDYgKzcxMDksOCBAQAogX0xUX1RBR1ZBUihtb2R1bGVfZXhwc3ltX2NtZHMsICQxKT0KIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXVua25vd24KIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSRvbGRfYXJjaGl2ZV9jbWRzCitfTFRfVEFHVkFSKHJlbG9hZF9mbGFnLCAkMSk9JHJlbG9hZF9mbGFnCitfTFRfVEFHVkFSKHJlbG9hZF9jbWRzLCAkMSk9JHJlbG9hZF9jbWRzCiBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9CiBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CiBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT1ubwpAQCAtNjY0MCw3ICs3MTUwLDkgQEAKICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KICAgbHRfc2F2ZV9DQz0iJENDIgogICBsdF9zYXZlX0dDQz0kR0NDCisgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKICAgQ0M9JHtGNzctImY3NyJ9CisgIENGTEFHUz0kRkZMQUdTCiAgIGNvbXBpbGVyPSRDQwogICBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCiAgIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKQEAgLTY2OTQsMzggKzcyMDYsMjQgQEAKIAogICBHQ0M9JGx0X3NhdmVfR0NDCiAgIENDPSIkbHRfc2F2ZV9DQyIKKyAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCiBmaSAjIHRlc3QgIiRfbHRfZGlzYWJsZV9GNzciICE9IHllcwogCiBBQ19MQU5HX1BPUAogXSkjIF9MVF9MQU5HX0Y3N19DT05GSUcKIAogCi0jIF9MVF9QUk9HX0ZDCi0jIC0tLS0tLS0tLS0tCi0jIFNpbmNlIEFDX1BST0dfRkMgaXMgYnJva2VuLCBpbiB0aGF0IGl0IHJldHVybnMgdGhlIGVtcHR5IHN0cmluZwotIyBpZiB0aGVyZSBpcyBubyBmb3J0cmFuIGNvbXBpbGVyLCB3ZSBoYXZlIG91ciBvd24gdmVyc2lvbiBoZXJlLgotbTRfZGVmdW4oW19MVF9QUk9HX0ZDXSwKLVsKLXB1c2hkZWYoW0FDX01TR19FUlJPUl0sIFtfbHRfZGlzYWJsZV9GQz15ZXNdKQotQUNfUFJPR19GQwotaWYgdGVzdCAteiAiJEZDIiB8fCB0ZXN0ICJYJEZDIiA9ICJYbm8iOyB0aGVuCi0gIF9sdF9kaXNhYmxlX0ZDPXllcwotZmkKLXBvcGRlZihbQUNfTVNHX0VSUk9SXSkKLV0pIyBfTFRfUFJPR19GQwotCi1kbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6Ci1kbmwgQUNfREVGVU4oW19MVF9QUk9HX0ZDXSwgW10pCi0KLQogIyBfTFRfTEFOR19GQ19DT05GSUcoW1RBR10pCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZvciBhIEZvcnRyYW4gY29tcGlsZXIgYXJlCiAjIHN1aXRhYmx5IGRlZmluZWQuICBUaGVzZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5IF9MVF9DT05GSUcKICMgdG8gd3JpdGUgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgogbTRfZGVmdW4oW19MVF9MQU5HX0ZDX0NPTkZJR10sCi1bQUNfUkVRVUlSRShbX0xUX1BST0dfRkNdKWRubAotQUNfTEFOR19QVVNIKEZvcnRyYW4pCitbQUNfTEFOR19QVVNIKEZvcnRyYW4pCisKK2lmIHRlc3QgLXogIiRGQyIgfHwgdGVzdCAiWCRGQyIgPSAiWG5vIjsgdGhlbgorICBfbHRfZGlzYWJsZV9GQz15ZXMKK2ZpCiAKIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwogX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQpAQCAtNjc0NCw2ICs3MjQyLDggQEAKIF9MVF9UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9CiBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT11bmtub3duCiBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcworX0xUX1RBR1ZBUihyZWxvYWRfZmxhZywgJDEpPSRyZWxvYWRfZmxhZworX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpPSRyZWxvYWRfY21kcwogX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPQogX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQogX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9bm8KQEAgLTY3ODMsNyArNzI4Myw5IEBACiAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCiAgIGx0X3NhdmVfQ0M9IiRDQyIKICAgbHRfc2F2ZV9HQ0M9JEdDQworICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCiAgIENDPSR7RkMtImY5NSJ9CisgIENGTEFHUz0kRkNGTEFHUwogICBjb21waWxlcj0kQ0MKICAgR0NDPSRhY19jdl9mY19jb21waWxlcl9nbnUKIApAQCAtNjgzOSw3ICs3MzQxLDggQEAKICAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCiAKICAgR0NDPSRsdF9zYXZlX0dDQwotICBDQz0iJGx0X3NhdmVfQ0MiCisgIENDPSRsdF9zYXZlX0NDCisgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKIGZpICMgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXMKIAogQUNfTEFOR19QT1AKQEAgLTY4NzYsMTAgKzczNzksMTIgQEAKIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKIAogIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KLWx0X3NhdmVfQ0M9IiRDQyIKK2x0X3NhdmVfQ0M9JENDCitsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCiBsdF9zYXZlX0dDQz0kR0NDCiBHQ0M9eWVzCiBDQz0ke0dDSi0iZ2NqIn0KK0NGTEFHUz0kR0NKRkxBR1MKIGNvbXBpbGVyPSRDQwogX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQwogX0xUX1RBR1ZBUihMRCwgJDEpPSIkTEQiCkBAIC02ODg5LDYgKzczOTQsOCBAQAogX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCiAKIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSRvbGRfYXJjaGl2ZV9jbWRzCitfTFRfVEFHVkFSKHJlbG9hZF9mbGFnLCAkMSk9JHJlbG9hZF9mbGFnCitfTFRfVEFHVkFSKHJlbG9hZF9jbWRzLCAkMSk9JHJlbG9hZF9jbWRzCiAKICMjIENBVkVBVCBFTVBUT1I6CiAjIyBUaGVyZSBpcyBubyBlbmNhcHN1bGF0aW9uIHdpdGhpbiB0aGUgZm9sbG93aW5nIG1hY3JvcywgZG8gbm90IGNoYW5nZQpAQCAtNjkwOCw3ICs3NDE1LDggQEAKIEFDX0xBTkdfUkVTVE9SRQogCiBHQ0M9JGx0X3NhdmVfR0NDCi1DQz0iJGx0X3NhdmVfQ0MiCitDQz0kbHRfc2F2ZV9DQworQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUwogXSkjIF9MVF9MQU5HX0dDSl9DT05GSUcKIAogCkBAIC02OTQzLDkgKzc0NTEsMTEgQEAKIAogIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KIGx0X3NhdmVfQ0M9IiRDQyIKK2x0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKIGx0X3NhdmVfR0NDPSRHQ0MKIEdDQz0KIENDPSR7UkMtIndpbmRyZXMifQorQ0ZMQUdTPQogY29tcGlsZXI9JENDCiBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCiBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCkBAIC02OTU4LDcgKzc0NjgsOCBAQAogCiBHQ0M9JGx0X3NhdmVfR0NDCiBBQ19MQU5HX1JFU1RPUkUKLUNDPSIkbHRfc2F2ZV9DQyIKK0NDPSRsdF9zYXZlX0NDCitDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCiBdKSMgX0xUX0xBTkdfUkNfQ09ORklHCiAKIApAQCAtNzAxNyw2ICs3NTI4LDE1IEBACiBBQ19TVUJTVChbT0JKRFVNUF0pCiBdKQogCisjIF9MVF9ERUNMX0RMTFRPT0wKKyMgLS0tLS0tLS0tLS0tLS0tLQorIyBFbnN1cmUgRExMVE9PTCB2YXJpYWJsZSBpcyBzZXQuCittNF9kZWZ1bihbX0xUX0RFQ0xfRExMVE9PTF0sCitbQUNfQ0hFQ0tfVE9PTChETExUT09MLCBkbGx0b29sLCBmYWxzZSkKK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKK19MVF9ERUNMKFtdLCBbRExMVE9PTF0sIFsxXSwgW0RMTCBjcmVhdGlvbiBwcm9ncmFtXSkKK0FDX1NVQlNUKFtETExUT09MXSkKK10pCiAKICMgX0xUX0RFQ0xfU0VECiAjIC0tLS0tLS0tLS0tLQpAQCAtNzExMCw4ICs3NjMwLDggQEAKICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCiB4c2lfc2hlbGw9bm8KICggX2x0X2R1bW15PSJhL2IvYyIKLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSAgICAgID0gYyxhL2IsLCBcCisgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisgICAgICA9IGMsYS9iLGIvYywgXAogICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAogICAmJiB4c2lfc2hlbGw9eWVzCkBAIC03MTUwLDIwOCArNzY3MCwxNjIgQEAKIF0pIyBfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVMKIAogCi0jIF9MVF9QUk9HX1hTSV9TSEVMTEZOUwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQm91cm5lIGFuZCBYU0kgY29tcGF0aWJsZSB2YXJpYW50cyBvZiBzb21lIHVzZWZ1bCBzaGVsbCBmdW5jdGlvbnMuCi1tNF9kZWZ1bihbX0xUX1BST0dfWFNJX1NIRUxMRk5TXSwKLVtjYXNlICR4c2lfc2hlbGwgaW4KLSAgeWVzKQotICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi1mdW5jX2Rpcm5hbWUgKCkKLXsKLSAgY2FzZSAkezF9IGluCi0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0gIGVzYWMKLX0KLQotIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLWZ1bmNfYmFzZW5hbWUgKCkKLXsKLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotfQotCi0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0jIGNhbGw6Ci0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0Ci0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCi0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bwotIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi17Ci0gIGNhc2UgJHsxfSBpbgotICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotICBlc2FjCi0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLX0KLQotIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi1mdW5jX3N0cmlwbmFtZSAoKQotewotICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLX0KLQotIyBmdW5jX29wdF9zcGxpdAotZnVuY19vcHRfc3BsaXQgKCkKLXsKLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci19Ci0KLSMgZnVuY19sbzJvIG9iamVjdAotZnVuY19sbzJvICgpCi17Ci0gIGNhc2UgJHsxfSBpbgotICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0gIGVzYWMKLX0KLQotIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLWZ1bmNfeGZvcm0gKCkKLXsKLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotfQotCi0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi1mdW5jX2FyaXRoICgpCi17Ci0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkWypdICkpCi19Ci0KLSMgZnVuY19sZW4gc3RyaW5nCi0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi1mdW5jX2xlbiAoKQotewotICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLX0KLQotX0xUX0VPRgotICAgIDs7Ci0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgotICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi1mdW5jX2Rpcm5hbWUgKCkKLXsKLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkZGlybmFtZSJgCi0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLSAgZWxzZQotICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLSAgZmkKLX0KLQotIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLWZ1bmNfYmFzZW5hbWUgKCkKLXsKLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJGJhc2VuYW1lImAKLX0KLQotZG5sIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUKLWRubCBBIHBvcnRhYmxlIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiBpcyBhbHJlYWR5IGRlZmluZWQgaW4gZ2VuZXJhbC5tNHNoCi1kbmwgc28gdGhlcmUgaXMgbm8gbmVlZCBmb3IgaXQgaGVyZS4KLQotIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi1mdW5jX3N0cmlwbmFtZSAoKQotewotICBjYXNlICR7Mn0gaW4KLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiWCR7M30iIFwKLSAgICAgICAgICAgfCAkWHNlZCAtZSAicyVeJHsxfSUlIiAtZSAicyVcXFxcJHsyfVwkJSUiYDs7Ci0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezN9IiBcCi0gICAgICAgICAgIHwgJFhzZWQgLWUgInMlXiR7MX0lJSIgLWUgInMlJHsyfVwkJSUiYDs7Ci0gIGVzYWMKLX0KLQotIyBzZWQgc2NyaXB0czoKLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtbXj1dXSpcKT0uKi9cMS87cScKLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bW149XV0qPS8vJwotCi0jIGZ1bmNfb3B0X3NwbGl0Ci1mdW5jX29wdF9zcGxpdCAoKQotewotICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJG15X3NlZF9sb25nX29wdCJgCi0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkbXlfc2VkX2xvbmdfYXJnImAKLX0KLQotIyBmdW5jX2xvMm8gb2JqZWN0Ci1mdW5jX2xvMm8gKCkKLXsKLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkbG8ybyJgCi19Ci0KLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi1mdW5jX3hmb3JtICgpCi17Ci0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgJ3MvXC5bW14uXV0qJC8ubG8vJ2AKLX0KLQotIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotZnVuY19hcml0aCAoKQotewotICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJFtAXSJgCi19Ci0KLSMgZnVuY19sZW4gc3RyaW5nCi0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi1mdW5jX2xlbiAoKQotewotICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiRbMV0iIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLX0KLQotX0xUX0VPRgotZXNhYwotCi1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLSAgeWVzKQotICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLWZ1bmNfYXBwZW5kICgpCi17Ci0gIGV2YWwgIiRbMV0rPVwkWzJdIgotfQotX0xUX0VPRgotICAgIDs7Ci0gICopCi0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLQotIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotZnVuY19hcHBlbmQgKCkKLXsKLSAgZXZhbCAiJFsxXT1cJCRbMV1cJFsyXSIKLX0KLQotX0xUX0VPRgotICAgIDs7Ci0gIGVzYWMKKyMgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRSAoRlVOQ05BTUUsIFJFUExBQ0VNRU5ULUJPRFkpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBJbiBgJGNmZ2ZpbGUnLCBsb29rIGZvciBmdW5jdGlvbiBGVU5DTkFNRSBkZWxpbWl0ZWQgYnkgYF5GVU5DTkFNRSAoKSQnIGFuZAorIyAnXn0gRlVOQ05BTUUgJywgYW5kIHJlcGxhY2UgaXRzIGJvZHkgd2l0aCBSRVBMQUNFTUVOVC1CT0RZLgorbTRfZGVmdW4oW19MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0VdLAorW2RubCB7CitzZWQgLWUgJy9eJDEgKCkkLywvXn0gIyAkMSAvY1wKKyQxICgpXAore1wKK200X2JwYXRzdWJzdHMoWyQyXSwgWyRdLCBbXFxdLCBbXlwoWwkgXVwpXSwgW1xcXDFdKQorfSAjIEV4dGVuZGVkLXNoZWxsICQxIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CiBdKQorCisKKyMgX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJlcGxhY2UgZXhpc3RpbmcgcG9ydGFibGUgaW1wbGVtZW50YXRpb25zIG9mIHNldmVyYWwgc2hlbGwgZnVuY3Rpb25zIHdpdGgKKyMgZXF1aXZhbGVudCBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbnMgd2hlcmUgdGhvc2UgZmVhdHVyZXMgYXJlIGF2YWlsYWJsZS4uCittNF9kZWZ1bihbX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOU10sCitbaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Rpcm5hbWVdLCBbZG5sCisgICAgY2FzZSAkezF9IGluCisgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworICAgIGVzYWNdKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYmFzZW5hbWVdLCBbZG5sCisgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99Il0pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZV0sIFtkbmwKKyAgICBjYXNlICR7MX0gaW4KKyAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CisgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CisgICAgZXNhYworICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJdKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3RyaXBuYW1lXSwgW2RubAorICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKyAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCisgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3NwbGl0X2xvbmdfb3B0XSwgW2RubAorICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfQorICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1dKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3BsaXRfc2hvcnRfb3B0XSwgW2RubAorICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99CisgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifV0pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19sbzJvXSwgW2RubAorICAgIGNhc2UgJHsxfSBpbgorICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKyAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworICAgIGVzYWNdKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfeGZvcm1dLCBbICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9dKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXJpdGhdLCBbICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkWypdICkpXSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2xlbl0sIFsgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XSkKK2ZpCisKK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcHBlbmRdLCBbICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJdKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXBwZW5kX3F1b3RlZF0sIFtkbmwKKyAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IgorZG5sIG00IGV4cGFuc2lvbiB0dXJucyBcXFxcIGludG8gXFwsIGFuZCB0aGVuIHRoZSBzaGVsbCBldmFsIHR1cm5zIHRoYXQgaW50byBcCisgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJdKQorCisgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW1thLXpBLVpfXV1cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CitlbHNlCisgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCisgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFtbYS16QS1aX11dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CitmaQorCitpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorICBBQ19NU0dfV0FSTihbVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZV0pCitmaQorXSkKKworIyBfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBEZXRlcm1pbmUgd2hpY2ggZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb25zIHNob3VsZCBiZSB1c2VkIGJ5CisjIGZ1bmNfdG9faG9zdF9maWxlIChhbmQsIGltcGxpY2l0bHksIGJ5IGZ1bmNfdG9faG9zdF9wYXRoKS4gIFRoZXNlIGFyZSBuZWVkZWQKKyMgZm9yIGNlcnRhaW4gY3Jvc3MtY29tcGlsZSBjb25maWd1cmF0aW9ucyBhbmQgbmF0aXZlIG1pbmd3LgorbTRfZGVmdW4oW19MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TXSwKK1tBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCitBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfQlVJTERdKWRubAorQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXRdKQorQUNfQ0FDSEVfVkFMKGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQsCitbY2FzZSAkaG9zdCBpbgorICAqLSotbWluZ3cqICkKKyAgICBjYXNlICRidWlsZCBpbgorICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgICAgICAgIDs7CisgICAgICAqLSotY3lnd2luKiApCisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorICAgICAgICA7OworICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKyAgICAgICAgOzsKKyAgICBlc2FjCisgICAgOzsKKyAgKi0qLWN5Z3dpbiogKQorICAgIGNhc2UgJGJ1aWxkIGluCisgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKyAgICAgICAgOzsKKyAgICAgICotKi1jeWd3aW4qICkKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisgICAgICAgIDs7CisgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorICAgICAgICA7OworICAgIGVzYWMKKyAgICA7OworICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQorICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorICAgIDs7Citlc2FjCitdKQordG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorQUNfTVNHX1JFU1VMVChbJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWRdKQorX0xUX0RFQ0woW3RvX2hvc3RfZmlsZV9jbWRdLCBbbHRfY3ZfdG9faG9zdF9maWxlX2NtZF0sCisgICAgICAgICBbMF0sIFtjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdF0pZG5sCisKK0FDX01TR19DSEVDS0lORyhbaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdF0pCitBQ19DQUNIRV9WQUwobHRfY3ZfdG9fdG9vbF9maWxlX2NtZCwKK1sjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCitsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKK2Nhc2UgJGhvc3QgaW4KKyAgKi0qLW1pbmd3KiApCisgICAgY2FzZSAkYnVpbGQgaW4KKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICAgICAgICA7OworICAgIGVzYWMKKyAgICA7OworZXNhYworXSkKK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKK0FDX01TR19SRVNVTFQoWyRsdF9jdl90b190b29sX2ZpbGVfY21kXSkKK19MVF9ERUNMKFt0b190b29sX2ZpbGVfY21kXSwgW2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWRdLAorICAgICAgICAgWzBdLCBbY29udmVydCAkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdF0pZG5sCitdKSMgX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlMKZGlmZiAtLWdpdCBhL200L2x0b3B0aW9ucy5tNCBiL200L2x0b3B0aW9ucy5tNAppbmRleCAzNDE1MWEzLi4xN2NmZDUxIDEwMDY0NAotLS0gYS9tNC9sdG9wdGlvbnMubTQKKysrIGIvbTQvbHRvcHRpb25zLm00CkBAIC0xLDEzICsxLDE0IEBACiAjIEhlbHBlciBmdW5jdGlvbnMgZm9yIG9wdGlvbiBoYW5kbGluZy4gICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KICMKLSMgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyMgICBJbmMuCiAjICAgV3JpdHRlbiBieSBHYXJ5IFYuIFZhdWdoYW4sIDIwMDQKICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgogCi0jIHNlcmlhbCA2IGx0b3B0aW9ucy5tNAorIyBzZXJpYWwgNyBsdG9wdGlvbnMubTQKIAogIyBUaGlzIGlzIHRvIGhlbHAgYWNsb2NhbCBmaW5kIHRoZXNlIG1hY3JvcywgYXMgaXQgY2FuJ3Qgc2VlIG00X2RlZmluZS4KIEFDX0RFRlVOKFtMVE9QVElPTlNfVkVSU0lPTl0sIFttNF9pZihbMV0pXSkKQEAgLTEyNSw3ICsxMjYsNyBAQAogW2VuYWJsZV93aW4zMl9kbGw9eWVzCiAKIGNhc2UgJGhvc3QgaW4KLSotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotY2VnY2MqKQorKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLWNlZ2NjKikKICAgQUNfQ0hFQ0tfVE9PTChBUywgYXMsIGZhbHNlKQogICBBQ19DSEVDS19UT09MKERMTFRPT0wsIGRsbHRvb2wsIGZhbHNlKQogICBBQ19DSEVDS19UT09MKE9CSkRVTVAsIG9iamR1bXAsIGZhbHNlKQpAQCAtMTMzLDEzICsxMzQsMTMgQEAKIGVzYWMKIAogdGVzdCAteiAiJEFTIiAmJiBBUz1hcwotX0xUX0RFQ0woW10sIFtBU10sICAgICAgWzBdLCBbQXNzZW1ibGVyIHByb2dyYW1dKWRubAorX0xUX0RFQ0woW10sIFtBU10sICAgICAgWzFdLCBbQXNzZW1ibGVyIHByb2dyYW1dKWRubAogCiB0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCi1fTFRfREVDTChbXSwgW0RMTFRPT0xdLCBbMF0sIFtETEwgY3JlYXRpb24gcHJvZ3JhbV0pZG5sCitfTFRfREVDTChbXSwgW0RMTFRPT0xdLCBbMV0sIFtETEwgY3JlYXRpb24gcHJvZ3JhbV0pZG5sCiAKIHRlc3QgLXogIiRPQkpEVU1QIiAmJiBPQkpEVU1QPW9iamR1bXAKLV9MVF9ERUNMKFtdLCBbT0JKRFVNUF0sIFswXSwgW09iamVjdCBkdW1wZXIgcHJvZ3JhbV0pZG5sCitfTFRfREVDTChbXSwgW09CSkRVTVBdLCBbMV0sIFtPYmplY3QgZHVtcGVyIHByb2dyYW1dKWRubAogXSkjIHdpbjMyLWRsbAogCiBBVV9ERUZVTihbQUNfTElCVE9PTF9XSU4zMl9ETExdLApkaWZmIC0tZ2l0IGEvbTQvbHR2ZXJzaW9uLm00IGIvbTQvbHR2ZXJzaW9uLm00CmluZGV4IGI4ZTE1NGYuLjljN2I1ZDQgMTAwNjQ0Ci0tLSBhL200L2x0dmVyc2lvbi5tNAorKysgYi9tNC9sdHZlcnNpb24ubTQKQEAgLTcsMTcgKzcsMTcgQEAKICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgogCi0jIEdlbmVyYXRlZCBmcm9tIGx0dmVyc2lvbi5pbi4KKyMgQGNvbmZpZ3VyZV9pbnB1dEAKIAotIyBzZXJpYWwgMzAxMiBsdHZlcnNpb24ubTQKKyMgc2VyaWFsIDMyOTMgbHR2ZXJzaW9uLm00CiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sCiAKLW00X2RlZmluZShbTFRfUEFDS0FHRV9WRVJTSU9OXSwgWzIuMi42XSkKLW00X2RlZmluZShbTFRfUEFDS0FHRV9SRVZJU0lPTl0sIFsxLjMwMTJdKQorbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1ZFUlNJT05dLCBbMi40XSkKK200X2RlZmluZShbTFRfUEFDS0FHRV9SRVZJU0lPTl0sIFsxLjMyOTNdKQogCiBBQ19ERUZVTihbTFRWRVJTSU9OX1ZFUlNJT05dLAotW21hY3JvX3ZlcnNpb249JzIuMi42JwotbWFjcm9fcmV2aXNpb249JzEuMzAxMicKK1ttYWNyb192ZXJzaW9uPScyLjQnCittYWNyb19yZXZpc2lvbj0nMS4zMjkzJwogX0xUX0RFQ0woLCBtYWNyb192ZXJzaW9uLCAwLCBbV2hpY2ggcmVsZWFzZSBvZiBsaWJ0b29sLm00IHdhcyB1c2VkP10pCiBfTFRfREVDTCgsIG1hY3JvX3JldmlzaW9uLCAwKQogXSkKZGlmZiAtLWdpdCBhL200L2x0fm9ic29sZXRlLm00IGIvbTQvbHR+b2Jzb2xldGUubTQKaW5kZXggNjM3YmIyMC4uYzU3M2RhOSAxMDA2NDQKLS0tIGEvbTQvbHR+b2Jzb2xldGUubTQKKysrIGIvbTQvbHR+b2Jzb2xldGUubTQKQEAgLTEsMTMgKzEsMTMgQEAKICMgbHR+b2Jzb2xldGUubTQgLS0gYWNsb2NhbCBzYXRpc2Z5aW5nIG9ic29sZXRlIGRlZmluaXRpb25zLiAgICAtKi1BdXRvY29uZi0qLQogIwotIyAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjICAgV3JpdHRlbiBieSBTY290dCBKYW1lcyBSZW1uYW50LCAyMDA0LgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcwogIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKLSMgc2VyaWFsIDQgbHR+b2Jzb2xldGUubTQKKyMgc2VyaWFsIDUgbHR+b2Jzb2xldGUubTQKIAogIyBUaGVzZSBleGlzdCBlbnRpcmVseSB0byBmb29sIGFjbG9jYWwgd2hlbiBib290c3RyYXBwaW5nIGxpYnRvb2wuCiAjCkBAIC03Nyw3ICs3Nyw2IEBACiBtNF9pZm5kZWYoW19MVF9BQ19MQU5HX0NYWF0sCQlbQUNfREVGVU4oW19MVF9BQ19MQU5HX0NYWF0pXSkKIG00X2lmbmRlZihbX0xUX0FDX0xBTkdfRjc3XSwJCVtBQ19ERUZVTihbX0xUX0FDX0xBTkdfRjc3XSldKQogbTRfaWZuZGVmKFtfTFRfQUNfTEFOR19HQ0pdLAkJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19HQ0pdKV0pCi1tNF9pZm5kZWYoW0FDX0xJQlRPT0xfUkNdLAkJW0FDX0RFRlVOKFtBQ19MSUJUT09MX1JDXSldKQogbTRfaWZuZGVmKFtBQ19MSUJUT09MX0xBTkdfQ19DT05GSUddLAlbQUNfREVGVU4oW0FDX0xJQlRPT0xfTEFOR19DX0NPTkZJR10pXSkKIG00X2lmbmRlZihbX0xUX0FDX0xBTkdfQ19DT05GSUddLAlbQUNfREVGVU4oW19MVF9BQ19MQU5HX0NfQ09ORklHXSldKQogbTRfaWZuZGVmKFtBQ19MSUJUT09MX0xBTkdfQ1hYX0NPTkZJR10sCVtBQ19ERUZVTihbQUNfTElCVE9PTF9MQU5HX0NYWF9DT05GSUddKV0pCkBAIC05MCwzICs4OSwxMCBAQAogbTRfaWZuZGVmKFtfTFRfQUNfTEFOR19SQ19DT05GSUddLAlbQUNfREVGVU4oW19MVF9BQ19MQU5HX1JDX0NPTkZJR10pXSkKIG00X2lmbmRlZihbQUNfTElCVE9PTF9DT05GSUddLAkJW0FDX0RFRlVOKFtBQ19MSUJUT09MX0NPTkZJR10pXSkKIG00X2lmbmRlZihbX0xUX0FDX0ZJTEVfTFRETExfQ10sCVtBQ19ERUZVTihbX0xUX0FDX0ZJTEVfTFRETExfQ10pXSkKK200X2lmbmRlZihbX0xUX1JFUVVJUkVEX0RBUldJTl9DSEVDS1NdLAlbQUNfREVGVU4oW19MVF9SRVFVSVJFRF9EQVJXSU5fQ0hFQ0tTXSldKQorbTRfaWZuZGVmKFtfTFRfQUNfUFJPR19DWFhDUFBdLAkJW0FDX0RFRlVOKFtfTFRfQUNfUFJPR19DWFhDUFBdKV0pCittNF9pZm5kZWYoW19MVF9QUkVQQVJFX1NFRF9RVU9URV9WQVJTXSwJW0FDX0RFRlVOKFtfTFRfUFJFUEFSRV9TRURfUVVPVEVfVkFSU10pXSkKK200X2lmbmRlZihbX0xUX1BST0dfRUNIT19CQUNLU0xBU0hdLAlbQUNfREVGVU4oW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSldKQorbTRfaWZuZGVmKFtfTFRfUFJPR19GNzddLAkJW0FDX0RFRlVOKFtfTFRfUFJPR19GNzddKV0pCittNF9pZm5kZWYoW19MVF9QUk9HX0ZDXSwJCVtBQ19ERUZVTihbX0xUX1BST0dfRkNdKV0pCittNF9pZm5kZWYoW19MVF9QUk9HX0NYWF0sCQlbQUNfREVGVU4oW19MVF9QUk9HX0NYWF0pXSkKZGlmZiAtLWdpdCBhL21hbi9NYWtlZmlsZS5pbiBiL21hbi9NYWtlZmlsZS5pbgppbmRleCA3OWYyMzZiLi4yMjAwOWNjIDEwMDY0NAotLS0gYS9tYW4vTWFrZWZpbGUuaW4KKysrIGIvbWFuL01ha2VmaWxlLmluCkBAIC01NCwxMSArNTQsMTMgQEAKIEFMQVJNX0FMSUFTRVMgICA9IHNubXBfYWxhcm1fcmVnaXN0ZXIuMyBzbm1wX2FsYXJtX3JlZ2lzdGVyX2hyLjMgc25tcF9hbGFybV91bnJlZ2lzdGVyLjMKIFNFU1NJT05fQUxJQVNFUyA9IHNubXBfYXBpX2VycnN0cmluZy4zIHNubXBfY2xvc2UuMyBzbm1wX2Vycm9yLjMgICAgXAogCXNubXBfb3Blbi4zIHNubXBfcGVycm9yLjMgc25tcF9yZWFkLjMgc25tcF9zZWxlY3RfaW5mby4zICAgIFwKLQlzbm1wX3NlbmQuMyBzbm1wX3Nlc3NfcGVycm9yLjMgc25tcF90aW1lb3V0LjMKKwlzbm1wX3NlbmQuMyBzbm1wX3Nlc3NfcGVycm9yLjMgc25tcF90aW1lb3V0LjMgICAgICAgICAgICAgICBcCisJc25tcF9hc3luY19zZW5kLjMgc25tcF9zeW5jaF9yZXNwb25zZS4zCiBTU0VTU19BTElBU0VTICAgPSBzbm1wX3Nlc3NfYXN5bmNfc2VuZC4zIHNubXBfc2Vzc19jbG9zZS4zIHNubXBfc2Vzc19lcnJvci4zIFwKIAlzbm1wX3Nlc3NfaW5pdC4zIHNubXBfc2Vzc19vcGVuLjMgc25tcF9zZXNzX3JlYWQuMwkJICAgICBcCiAJc25tcF9zZXNzX3NlbGVjdF9pbmZvLjMgc25tcF9zZXNzX3NlbmQuMwkJCSAgICAgXAotCXNubXBfc2Vzc19zZXNzaW9uLjMgc25tcF9zZXNzX3RpbWVvdXQuMworCXNubXBfc2Vzc19zZXNzaW9uLjMgc25tcF9zZXNzX3RpbWVvdXQuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwlzbm1wX3Nlc3Nfc3luY2hfcmVzcG9uc2UuMwogVFJBUF9BTElBU0VTICAgID0gc2VuZF9lYXN5X3RyYXAuMyBzZW5kX3RyYXBfdmFycy4zIHNlbmRfdjJ0cmFwLjMgCiBWQVJCSU5EX0FMSUFTRVMgPSBmcHJpbnRfdmFsdWUuMyBmcHJpbnRfdmFyaWFibGUuMwlcCiAJcHJpbnRfdmFsdWUuMyBwcmludF92YXJpYWJsZS4zCQkJXApAQCAtODEsMTQgKzgzLDI0IEBACiAKIGFsbDogJChUQVJHRVRTKSBzdGFuZGFyZGFsbCBtYW5hbGlhc2VzCiAKLW1hbmFsaWFzZXM6IE1ha2VmaWxlCittYW5hbGlhc2VzOiBNYWtlZmlsZSAkKE1BTjNfQVBJKQogCXRvdWNoIG1hbmFsaWFzZXMKLQlAZm9yIGkgaW4gJChNQU4zX0FQSSkgOyBkbwkJCQkgIFwKLSAgICAgICAgICAgIGZvciBqIGluIGBzZWQgLW4gJy9eLlNIIE5BTUUvLC9eLlNIIFNZTk9QU0lTL3AnICQkaSAgfCBzZWQgLWUgJ3MvLi0gLiovLycgfCBzZWQgJ3MvLC4qLy8nICB8IEBFR1JFUEAgLXYgJ14uU0ggJyBgOyBkbyBcCisJQHJlc3VsdD0wIDsgXAorICAgICAgICBmb3IgaSBpbiAkKE1BTjNfQVBJKSA7IGRvCQkJCSAgXAorICAgICAgICAgICAgZm9yIGogaW4gYHNlZCAtbiAnL14uU0ggTkFNRS8sL14uU0ggU1lOT1BTSVMvcCcgJCRpICB8IHNlZCAtZSAncy8uLSAuKi8vJyB8IHNlZCAncy8sLiovLycgIHwgL2Jpbi9ncmVwIC1FIC12ICdeLlNIICcgYDsgZG8gXAogCQllY2hvICJtYWtpbmcgbWFuIHBhZ2UgYWxpYXMgJCRqIC0+ICQkaSBBUElzIiA7ICAgIFwKIAkJZWNobyAiLnNvIG1hbjMvJCRpIiA+ICQkai4zIDsgCQkgIFwKKwkJaWYgISBleHByIG1hdGNoICIkKE1BTkFMSUFTRVMpIiAiLiokJGpcXC4zIiA+IC9kZXYvbnVsbCA7IFwKKwkJdGhlbiBcCisJCSAgICB2YXI9YGVjaG8gJCRpIHwgc2VkIC1lICdzL15uZXRzbm1wXy8vJyAtZSAncy9fYXBpLjMvLycgfCB0ciAnW2Etel0nICdbQS1aXSdgIDsgXAorCQkgICAgZWNobyAiWW91IG11c3QgYWRkICQkai4zIHRvIHRoZSAkJHt2YXJ9X0FMSUFTRVMgdmFyaWFibGUgaW4gdGhlIE1ha2VmaWxlLmluIiA7IFwKKwkJICAgIHJlc3VsdD0xIDsgXAorCSAgICAgICAgZmk7IFwKIAkgICAgZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotCWRvbmUKKwlkb25lIDsgXAorCWV4aXQgJCRyZXN1bHQKKworJChNQU5BTElBU0VTKTogbWFuYWxpYXNlcwogCiBhZ2VudHh0cmFwLjE6ICQoc3JjZGlyKS9hZ2VudHh0cmFwLjEuZGVmIC4uL3NlZHNjcmlwdAogCSQoU0VEKSAtZiAuLi9zZWRzY3JpcHQgPCAkKHNyY2RpcikvYWdlbnR4dHJhcC4xLmRlZiA+IGFnZW50eHRyYXAuMQpAQCAtMjM5LDcgKzI1MSw3IEBACiAJICB0b3VjaCBtaWIyYy5jb25mLjUgOyBcCiAJZmkKIAotbWFuaW5zdGFsbDogIG1hbmluc3RhbGxkaXJzICQoTUFOMSkgJChNQU4xRykgJChNQU4zKSAkKE1BTjVHKSAkKE1BTjgpICQoTUFOQUxJQVNFUykKK21hbmluc3RhbGw6ICBtYW5pbnN0YWxsZGlycyAkKE1BTjEpICQoTUFOMUcpICQoTUFOMykgJChNQU4zX0FQSSkgJChNQU4zRykgJChNQU41RykgJChNQU44RykgJChNQU5BTElBU0VTKQogCUBmb3IgaSBpbiAkKE1BTjEpIDsgZG8gJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9gYmFzZW5hbWUgJCRpYCAkKElOU1RBTExfUFJFRklYKSQobWFuMWRpcikgOyBlY2hvICJpbnN0YWxsOiAgaW5zdGFsbGVkICQkaSBpbiAkKElOU1RBTExfUFJFRklYKSQobWFuMWRpcikiIDsgZG9uZQogCUAkKElOU1RBTExfREFUQSkgJChNQU4xRykgJChJTlNUQUxMX1BSRUZJWCkkKG1hbjFkaXIpCiAJQGZvciBpIGluICQoTUFOMUcpIDsgZG8gZWNobyAiaW5zdGFsbDogIGluc3RhbGxlZCAkJGkgaW4gJChJTlNUQUxMX1BSRUZJWCkkKG1hbjFkaXIpIiA7IGRvbmUKZGlmZiAtLWdpdCBhL21hbi9kZWZhdWx0X3N0b3JlLjMuYm90IGIvbWFuL2RlZmF1bHRfc3RvcmUuMy5ib3QKaW5kZXggMTZjMDhlZS4uZWJkMmJmNiAxMDA2NDQKLS0tIGEvbWFuL2RlZmF1bHRfc3RvcmUuMy5ib3QKKysrIGIvbWFuL2RlZmF1bHRfc3RvcmUuMy5ib3QKQEAgLTExMSw3ICsxMTEsNyBAQAogYWxsb2NhdGlvbiBmYWlsdXJlKS4KIC5UUAogLkJJICJpbnQgbmV0c25tcF9kc19yZWdpc3Rlcl9wcmVtaWIodV9jaGFyICIgdHlwZSAiLCBjb25zdCBjaGFyICoiIGZ0eXBlICIsIGNvbnN0IGNoYXIgKiIgdG9rZW4gIiwgaW50ICIgc3RvcmUgIiwgaW50ICIgd2hpY2ggIik7IgotQW5hbG9nb3VzIHRvIHRoZSBwcmVjZWVkaW5nIGZ1bmN0aW9uLCBidXQgdGhlCitBbmFsb2dvdXMgdG8gdGhlIHByZWNlZGluZyBmdW5jdGlvbiwgYnV0IHRoZQogLkkgdG9rZW4KIGlzIHByb2Nlc3NlZCBiZWZvcmUgTUlCcyBhcmUgcmVhZCAodGhpcyBpcyB0aGVyZWZvcmUgdXNlZnVsIGZvciBjb250cm9sbGluZwogTUlCIHByb2Nlc3Npbmcgb3B0aW9ucykuCmRpZmYgLS1naXQgYS9tYW4vZW5jb2RlX2tleWNoYW5nZS4xLmRlZiBiL21hbi9lbmNvZGVfa2V5Y2hhbmdlLjEuZGVmCmluZGV4IDc0MTU2MTcuLjIwZjVjYzMgMTAwNjQ0Ci0tLSBhL21hbi9lbmNvZGVfa2V5Y2hhbmdlLjEuZGVmCisrKyBiL21hbi9lbmNvZGVfa2V5Y2hhbmdlLjEuZGVmCkBAIC0zLDEzICszLDEzIEBACiBlbmNvZGVfa2V5Y2hhbmdlIC0gcHJvZHVjZSB0aGUgS2V5Q2hhbmdlIHN0cmluZyBmb3IgU05NUHYzCiAuU0ggU1lOT1BTSVMKIC5CIGVuY29kZV9rZXljaGFuZ2UgCi0tdCBtZDV8c2hhMQorXC10IG1kNXxzaGExCiBbXGZJT1BUSU9OU1xmUl0KIC5TSCBERVNDUklQVElPTgogLkIgZW5jb2RlX2tleWNoYW5nZQogcHJvZHVjZXMgYSBLZXlDaGFuZ2Ugc3RyaW5nIHVzaW5nIHRoZSBvbGQgYW5kIG5ldyBwYXNzcGhyYXNlcyAKIGFzIGRlc2NyaWJlZCBpbiBTZWN0aW9uIDUgb2YgUkZDIDIyNzQgIlVzZXItYmFzZWQgU2VjdXJpdHkgTW9kZWwgKFVTTSkgZm9yIAotdmVyc2lvbiAzIG9mIHRoZSBTaW1wbGUgTmV0d29yayBNYW5hZ2VtZW50IFByb3RvY29sIChTTk1QdjMpIi4gXGZCLXRcZlIKK3ZlcnNpb24gMyBvZiB0aGUgU2ltcGxlIE5ldHdvcmsgTWFuYWdlbWVudCBQcm90b2NvbCAoU05NUHYzKSIuIFxmQlwtdFxmUgogb3B0aW9uIGlzIG1hbmRhdG9yeSBhbmQgc3BlY2lmaWVzIHRoZSBoYXNoIHRyYW5zZm9ybSB0eXBlIHRvIHVzZS4KIAogVGhlIHRyYW5zZm9ybSBpcyB1c2VkIHRvIGNvbnZlcnQgcGFzc3BocmFzZSB0byBtYXN0ZXIga2V5IGZvciBhIGdpdmVuCkBAIC0yMCw5ICsyMCw5IEBACiAoaW4gb3JkZXIgbGlzdGVkKToKIC5JUAogY29tbWFuZCBsaW5lIG9wdGlvbnMgKHNlZSAKLS5CIC1OCisuQiBcLU4KIGFuZAotLkIgLU8KKy5CIFwtTwogb3B0aW9ucyBiZWxvdyk7CiAuSVAKIHRoZSBmaWxlIApAQCAtMzUsNyArMzUsNyBAQAogLlNIIE9QVElPTlMKIC5UUAogXGZCXC1FXGZSIFsweF08XGZJZW5naW5lSURcZlI+IEVuZ2luZUlEIHVzZWQgZm9yIEt1bCBnZW5lcmF0aW9uLgotPFxmSWVuZ2luZUlEXGZSPiBpcyBpbnRlcHJldGVkIGFzIGEgaGV4IHN0cmluZyB3aGVuIHByZWNlZWRlZCBieSAweCwKKzxcZkllbmdpbmVJRFxmUj4gaXMgaW50ZXByZXRlZCBhcyBhIGhleCBzdHJpbmcgd2hlbiBwcmVjZWRlZCBieSAweCwKIG90aGVyd2lzZSBpdCBpcyB0cmVhdGVkIGFzIGEgdGV4dCBzdHJpbmcuIElmIG5vIDxcZkllbmdpbmVJRFxmUj4gaXMKIHNwZWNpZmllZCwgaXQgaXMgY29uc3RydWN0ZWQgZnJvbSB0aGUgZmlyc3QgSVAgYWRkcmVzcyBmb3IgdGhlIGxvY2FsCiBob3N0LgpkaWZmIC0tZ2l0IGEvbWFuL2ZpeHByb2MuMS5kZWYgYi9tYW4vZml4cHJvYy4xLmRlZgppbmRleCBlZjkwMDM2Li5hZTg4YTNkIDEwMDY0NAotLS0gYS9tYW4vZml4cHJvYy4xLmRlZgorKysgYi9tYW4vZml4cHJvYy4xLmRlZgpAQCAtMjcsMTAgKzI3LDEwIEBACiBjaGVjayBwcm9jZXNzIGFnYWluc3QgZGF0YWJhc2UgL2xvY2FsL2V0Yy9maXhwcm9jLmNvbmYuCiAuVFAKIC5CIFwta2lsbAota2lsbCBwcm9jZXNzLCB3YWl0IDUgc2Vjb25kcywga2lsbCAtOSBpZiBzdGlsbCBleGlzdAora2lsbCBwcm9jZXNzLCB3YWl0IDUgc2Vjb25kcywga2lsbCBcLTkgaWYgc3RpbGwgZXhpc3QKIC5UUAogLkIgXC1yZXN0YXJ0Ci1raWxsIHByb2Nlc3MsIHdhaXQgNSBzZWNvbmRzLCBraWxsIC05IGlmIHN0aWxsIGV4aXN0LCB0aGVuIHN0YXJ0IGFnYWluCitraWxsIHByb2Nlc3MsIHdhaXQgNSBzZWNvbmRzLCBraWxsIFwtOSBpZiBzdGlsbCBleGlzdCwgdGhlbiBzdGFydCBhZ2FpbgogLlRQCiAuQiBcLWV4aXN0CiBjaGVja3MgaWYgcHJvYyBleGlzdHMgaW4gcHMgJiYgKG1pbiA8PSBudW0uIG9mIHByb2Nlc3NlcyA8PSBtYXgpCmRpZmYgLS1naXQgYS9tYW4vbWliMmMuY29uZi41LmluIGIvbWFuL21pYjJjLmNvbmYuNS5pbgppbmRleCA3ZTVhMjEwLi4zNjkyYTY1IDEwMDY0NAotLS0gYS9tYW4vbWliMmMuY29uZi41LmluCisrKyBiL21hbi9taWIyYy5jb25mLjUuaW4KQEAgLTEsNiArMSw2IEBACiAuVEggTUlCMkMuQ09ORiA1ICIyOCBBcHIgMjAwNCIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKIC5TSCBOQU1FCi1taWIyYy5jb25mIC0tIEhvdyB0byB3cml0ZSBtaWIyYy5jb25mIGZpbGVzIHRvIGRvIEFOWVRISU5HIGJhc2VkIG9uIE1JQiBpbnB1dC4KK21pYjJjLmNvbmYgXFtlbV0gSG93IHRvIHdyaXRlIG1pYjJjLmNvbmYgZmlsZXMgdG8gZG8gQU5ZVEhJTkcgYmFzZWQgb24gTUlCIGlucHV0LgogLlNIIFNZTk9QU0lTCiAlIGNhdCA+IG1pYjJjLnRlc3QuY29uZiAgPDwgRU9GCiBAZm9yZWFjaCAkdCB0YWJsZUAKQEAgLTEyLDcgKzEyLDcgQEAKIEBlbmRACiBFT0YKIAotJSBtaWIyYyAtYyBtaWIyYy50ZXN0LmNvbmYgaW50ZXJuZXQKKyUgbWliMmMgXC1jIG1pYjJjLnRlc3QuY29uZiBpbnRlcm5ldAogLlNIIERFU0NSSVBUSU9OCiBUaGUgbWliMmMuY29uZiBzY3JpcHQgbGFuZ3VhZ2UgaXMgYSBNSUItcGFydGljdWxhciBsYW5ndWFnZSBkZXNpZ25lZAogdG8gZWFzaWx5IHByb2Nlc3MgTUlCIG5vZGVzIGluIHdheXMgdGhhdCB5b3Ugd2FudC4gIG1pYjJjIGlzIGEKZGlmZiAtLWdpdCBhL21hbi9uZXQtc25tcC1jb25maWcuMS5kZWYgYi9tYW4vbmV0LXNubXAtY29uZmlnLjEuZGVmCmluZGV4IDY1MjFjOWUuLjNhMGZhMmIgMTAwNjQ0Ci0tLSBhL21hbi9uZXQtc25tcC1jb25maWcuMS5kZWYKKysrIGIvbWFuL25ldC1zbm1wLWNvbmZpZy4xLmRlZgpAQCAtMSwxNyArMSwxNyBAQAogLlRIIG5ldC1zbm1wLWNvbmZpZyAxICIxNiBOb3YgMjAwNiIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKIC5TSCBOQU1FCi1uZXQtc25tcC1jb25maWcgXC0gcmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBpbnN0YWxsZWQgbmV0LXNubXAgbGlicmFyaWVzIGFuZCBiaW5hcmllcyAKK25ldFwtc25tcFwtY29uZmlnIC0gcmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBpbnN0YWxsZWQgbmV0LXNubXAgbGlicmFyaWVzIGFuZCBiaW5hcmllcyAKIC5TSCBTWU5PUFNJUwogLlBQCi0uQiBuZXQtc25tcC1jb25maWcKKy5CIG5ldFwtc25tcFwtY29uZmlnCiBbT1BUSU9OU10KIC5TSCBERVNDUklQVElPTgogLlBQCi1UaGUgXGZJbmV0LXNubXAtY29uZmlnXGZQIHNoZWxsIHNjcmlwdCBpcyBkZXNpZ25lZCB0byByZXRyaWV2ZSB0aGUKK1RoZSBcZkluZXRcLXNubXBcLWNvbmZpZ1xmUCBzaGVsbCBzY3JpcHQgaXMgZGVzaWduZWQgdG8gcmV0cmlldmUgdGhlCiBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFib3V0IHRoZSBsaWJyYXJpZXMgYW5kIGJpbmFyaWVzIGRlYWxpbmcgd2l0aAogdGhlIFNpbXBsZSBOZXR3b3JrIE1hbmFnZW1lbnQgUHJvdG9jb2wgKFNOTVApLCBidWlsdCBmcm9tIHRoZSAKIC5CIG5ldC1zbm1wIAotc291cmNlIHBhY2thZ2UuIFRoZSBpbmZvcm1hdGlvbiBpcyBwYXJ0aWN1bGFyaWx5IHVzZWZ1bCBmb3IKK3NvdXJjZSBwYWNrYWdlLiBUaGUgaW5mb3JtYXRpb24gaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IKIGFwcGxpY2F0aW9ucyB0aGF0IG5lZWQgdG8gbGluayBhZ2FpbnN0IHRoZSBTTk1QIGxpYnJhcmllcyBhbmQgaGVuY2UKIG11c3Qga25vdyBhYm91dCBhbnkgb3RoZXIgbGlicmFyaWVzIHRoYXQgbXVzdCBiZSBsaW5rZWQgaW4gYXMgd2VsbC4KIApAQCAtMjksOCArMjksOCBAQAogLlBQCiBTTk1QIFNldHVwIGNvbW1hbmRzOgogLlRQCi1cZkJcLVwtY3JlYXRlXC1zbm1wdjNcLXVzZXJcZlIgWy1yb10gWy1hIGF1dGhwYXNzXSBbLXggcHJpdnBhc3NdIFstWCBERVN8QUVTXQotWy1BIE1ENXxTSEFdIFt1c2VybmFtZV0KK1xmQlwtXC1jcmVhdGVcLXNubXB2M1wtdXNlclxmUiBbXC1yb10gW1wtYSBhdXRocGFzc10gW1wteCBwcml2cGFzc10KK1tcLVggREVTfEFFU10gW1wtQSBNRDV8U0hBXSBbdXNlcm5hbWVdCiAuUFAKIFRoZXNlIG9wdGlvbnMgcHJvZHVjZSB0aGUgdmFyaW91cyBjb21waWxhdGlvbiBmbGFncyBuZWVkZWQgd2hlbgogYnVpbGRpbmcgZXh0ZXJuYWwgU05NUCBhcHBsaWNhdGlvbnM6CkBAIC02Myw4ICs2Myw4IEBACiBBdXRvbWF0ZWQgc3ViYWdlbnQgYnVpbGRpbmcgKHByb2R1Y2VzIGFuIE9VVFBVVE5BTUUgYmluYXJ5IGZpbGUpOgogW1RoaXMgZmVhdHVyZSBoYXMgbm90IGJlZW4gZXh0ZW5zaXZlbHkgdGVzdGVkLCAgdXNlIGF0IHlvdXIgb3duIHJpc2suXQogLlRQCi1cZkJcLVwtY29tcGlsZVwtc3ViYWdlbnRcZlIgT1VUUFVUTkFNRSBbLS1ub3JtXSBbLS1jZmxhZ3MgZmxhZ3NdCi1bLS1sZGZsYWdzIGZsYWdzXSBtaWJtb2R1bGUxLmMgWy4uLl1dCitcZkJcLVwtY29tcGlsZVwtc3ViYWdlbnRcZlIgT1VUUFVUTkFNRSBbXC1cLW5vcm1dIFtcLVwtY2ZsYWdzIGZsYWdzXQorW1wtXC1sZGZsYWdzIGZsYWdzXSBtaWJtb2R1bGUxLmMgWy4uLl1dCiAuVFAKIFxmQlwtXC1ub3JtXGZSCiBsZWF2ZSB0aGUgZ2VuZXJhdGVkIC5jIGZpbGUgYXJvdW5kIHRvIHJlYWQuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9hZ2VudF9hcGkuMy5kZWYgYi9tYW4vbmV0c25tcF9hZ2VudF9hcGkuMy5kZWYKaW5kZXggODdkYzU0MS4uMTllZmQwMCAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfYWdlbnRfYXBpLjMuZGVmCisrKyBiL21hbi9uZXRzbm1wX2FnZW50X2FwaS4zLmRlZgpAQCAtMSwxMSArMSwxMSBAQAogLlRIIE5FVFNOTVBfQUdFTlRfQVBJIDMgIjEzIEF1ZyAyMDEwIiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgogLlNIIE5BTUUKLW5ldHNubXBfYWdlbnRfYXBpIFwtIGVtYmVkZGluZyBhbiBhZ2VudCBpbnRvIGEgZXh0ZXJuYWwgYXBwbGljYXRpb24KK25ldHNubXBfYWdlbnRfYXBpIC0gZW1iZWRkaW5nIGFuIGFnZW50IGludG8gYSBleHRlcm5hbCBhcHBsaWNhdGlvbgogLlNIIFNZTk9QU0lTCiAubmYKLSNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0XC1zbm1wL25ldFwtc25tcFwtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0XC1zbm1wL25ldFwtc25tcFwtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXRcLXNubXAvYWdlbnQvbmV0XC1zbm1wXC1hZ2VudFwtaW5jbHVkZXMuaD4KIAogaW50CiBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQpAQCAtNDUsNyArNDUsNyBAQAogfQogCiBUaGVuOgotJChDQykgLi4uIGBuZXQtc25tcC1jb25maWcgLS1hZ2VudC1saWJzYAorJChDQykgLi4uIGBuZXRcLXNubXBcLWNvbmZpZyBcLVwtYWdlbnRcLWxpYnNgCiAKIC5maQogLlNIIERFU0NSSVBUSU9OCkBAIC03Niw4ICs3Niw4IEBACiBjb25maWd1cmVkIHRoZSBOZXQtU05NUCBwYWNrYWdlIHdpdGggYWdlbnR4IHN1cHBvcnQgKHdoaWNoIGlzIHR1cm5lZAogb24gYnkgZGVmYXVsdCwgc28ganVzdCBkb24ndCB0dXJuIGl0IG9mZikKIC5QUAotQWRkaXRpb25hbGx5LCB5b3Ugd2lsbCBuZWVkIHRvIGxpbmsgYWdhaW5zdCB0aGUgbmV0LXNubXAgbGlicmFyaWVzCi0odXNlIHRoZSBvdXRwdXQgb2YgIm5ldC1zbm1wLWNvbmZpZyAtLWFnZW50LWxpYnMiIHRvIGdldCBhIGxpYnJhcnkKK0FkZGl0aW9uYWxseSwgeW91IHdpbGwgbmVlZCB0byBsaW5rIGFnYWluc3QgdGhlIE5ldC1TTk1QIGxpYnJhcmllcworKHVzZSB0aGUgb3V0cHV0IG9mICJuZXRcLXNubXBcLWNvbmZpZyBcLVwtYWdlbnRcLWxpYnMiIHRvIGdldCBhIGxpYnJhcnkKIGxpc3QpIGFuZCBjYWxsIHN1YmFnZW50X3ByZV9pbml0KCkgYXMgaW5kaWNhdGVkIGFib3ZlLgogLlNIIENPTVBJTElORwogLlBQCkBAIC04Niw3ICs4Niw3IEBACiAuU0ggRlVOQ1RJT05TCiAuUFAgVGhpcyBpcyBhIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBmdW5jdGlvbnMgY2FsbGVkIGFib3ZlIGFuZAogd2hlcmUgdG8gZmluZCBvdXQgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGVtLiAgSXQgaXMgY2VydGFpbmx5IG5vdCBhCi1jb21wbGV0ZSBsaXN0IG9mIHdoYXQgaXMgYXZhaWxhYmxlIHdpdGhpbiBhbGwgdGhlIG5ldC1zbm1wIGxpYnJhcmllcy4gCitjb21wbGV0ZSBsaXN0IG9mIHdoYXQgaXMgYXZhaWxhYmxlIHdpdGhpbiBhbGwgdGhlIE5ldC1TTk1QIGxpYnJhcmllcy4gCiAuSVAgInNubXBfZW5hYmxlX3N0ZGVycmxvZygpIgogTG9ncyBlcnJvciBvdXRwdXQgZnJvbSB0aGUgU05NUCBhZ2VudCB0byB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtLgogLklQICJuZXRzbm1wX2RzX3NldF9ib29sZWFuKCkiCkBAIC0xMjMsMTAgKzEyMywxMCBAQAogYWxhcm0gbXVzdCBiZSBydW4gKHNlZQogLklSIHNubXBfYWxhcm0oMykgKS4KIFRoZSByZXR1cm4gdmFsdWUgZnJvbSB0aGlzIGZ1bmN0aW9uIGlzIGEgcG9zaXRpdmUgaW50ZWdlciBpZiBwYWNrZXRzCi13ZXJlIHByb2Nlc3NlZCwgemVybyBpZiBhbiBhbGFybSBvY2N1cnJlZCBhbmQgLTEgaWYgYW4gZXJyb3Igb2NjdXJlZC4KK3dlcmUgcHJvY2Vzc2VkLCB6ZXJvIGlmIGFuIGFsYXJtIG9jY3VycmVkIGFuZCBcLTEgaWYgYW4gZXJyb3Igb2NjdXJlZC4KIC5JUCAic25tcF9zaHV0ZG93bihjaGFyICpuYW1lKTsiCiBUaGlzIHNodXRzIGRvd24gdGhlIGFnZW50LCBzYXZpbmcgYW55IG5lZWRlZCBwZXJzaXN0ZW50IHN0b3JhZ2UsIGV0Yy4KIC5TSCAiU0VFIEFMU08iCi1odHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy90dXRvcmlhbC01L3Rvb2xraXQvIHNlbGVjdCgyKSwgc25tcF9hcGkoMyksCitodHRwOi8vd3d3Lm5ldFwtc25tcC5vcmcvdHV0b3JpYWxcLTUvdG9vbGtpdC8gc2VsZWN0KDIpLCBzbm1wX2FwaSgzKSwKIGRlZmF1bHRfc3RvcmUoMyksIHNubXBfYWxhcm0oMyksIG5ldHNubXBfY29uZmlnX2FwaSgzKSwgc25tcF9jb25maWcoNSksCiBzbm1wZC5jb25mKDUpCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9taWJfYXBpLjMuZGVmIGIvbWFuL25ldHNubXBfbWliX2FwaS4zLmRlZgppbmRleCBjYzBkMGNiLi4yZTFkYThmIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9taWJfYXBpLjMuZGVmCisrKyBiL21hbi9uZXRzbm1wX21pYl9hcGkuMy5kZWYKQEAgLTIxLDcgKzIxLDcgQEAKIGZwcmludF9kZXNjcmlwdGlvbiwKIHNucHJpbnRfZGVzY3JpcHRpb24gLSBuZXRzbm1wX21pYl9hcGkgZnVuY3Rpb25zCiAuU0ggU1lOT1BTSVMKLS5CICNpbmNsdWRlIDxuZXQtc25tcC9taWJfYXBpLmg+CisuQiAjaW5jbHVkZSA8bmV0XC1zbm1wL21pYl9hcGkuaD4KIC5QUAogLlNTIEluaXRpYWxpc2F0aW9uIGFuZCBTaHV0ZG93bgogLkJJICJpbnQgYWRkX21pYmRpcihjb25zdCBjaGFyICoiICJkaXJuYW1lIiApOwpAQCAtMTA0LDcgKzEwNCw3IEBACiBpbiB0aGF0IGRpcmVjdG9yeSwgYnV0IGlzIHNpbXBseSBhbiBpbml0aWFsaXNhdGlvbiBzdGVwIHRvIG1ha2UKIHRoZW0gYXZhaWxhYmxlIHRvCiAuQlIgbmV0c25tcF9yZWFkX21vZHVsZSAuCi1UaGlzIGZ1bmN0aW9uIHJldHVybnMgYSBjb3VudCBvZiBmaWxlcyBmb3VuZCBpbiB0aGUgZGlyZWN0b3J5LCBvciBhIC0xCitUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSBjb3VudCBvZiBmaWxlcyBmb3VuZCBpbiB0aGUgZGlyZWN0b3J5LCBvciBhIFwtMQogaWYgdGhlcmUgaXMgYW4gZXJyb3IuICAKIEl0IHNob3VsZCBiZSBjYWxsZWQgXGZJYmVmb3JlXGZQIGludm9raW5nIFxmQm5ldHNubXBfaW5pdF9taWJcZlAuCiAuUFAKQEAgLTE4MCw3ICsxODAsNyBAQAogaW4gTUlCIElNUE9SVFMgY2xhdXNlcyAoc3VjaCBhcyByZWZlcnJpbmcgdG8KIC5JIFJGQzEyMTMKIGluc3RlYWQgb2YKLS5JUiBSRkMxMjEzLU1JQiApLgorLklSIFJGQzEyMTNcLU1JQiApLgogLlNTIFNlYXJjaGluZyB0aGUgTUlCIFRyZWUKIC5QUAogLkIgcmVhZF9vYmppZApAQCAtMjM0LDcgKzIzNCw3IEBACiAuSSBidWYKIHdoaWNoIGlzIG9mIGxlbmd0aAogLklSIGxlbiAuCi1JdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBwcmludGVkLCBvciAtMSBpZiB0aGUKK0l0IHJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHByaW50ZWQsIG9yIFwtMSBpZiB0aGUKIGJ1ZmZlciB3YXMgbm90IGxhcmdlIGVub3VnaC4gIEluIHRoZSBsYXR0ZXIgY2FzZSwKIC5JIGJ1Zgogd2lsbCB0eXBpY2FsbHkgY29udGFpbiBhIHRydW5jYXRlZCB2ZXJzaW9uIG9mIHRoZSBpbmZvcm1hdGlvbiAoYnV0CkBAIC0yNzcsNyArMjc3LDcgQEAKIC5icgogVGhlIGRlZmF1bHQgbGlzdCBvZiBtb2R1bGVzIHdpbGwgZGVwZW5kIG9uIGhvdyB0aGUgTmV0LVNOTVAgc29mdHdhcmUKIHdhcyBvcmlnaW5hbGx5IGNvbXBpbGVkLCBidXQgaXMgdHlwaWNhbGx5OgotSVAtTUlCOklGLU1JQjpUQ1AtTUlCOlVEUC1NSUI6U05NUHYyLU1JQjpSRkMxMjEzLU1JQjogVUNELVNOTVAtTUlCOkhPU1QtUkVTT1VSQ0VTLU1JQgorSVBcLU1JQjpJRlwtTUlCOlRDUFwtTUlCOlVEUFwtTUlCOlNOTVB2MlwtTUlCOlJGQzEyMTNcLU1JQjogVUNEXC1TTk1QXC1NSUI6SE9TVFwtUkVTT1VSQ0VTXC1NSUIKIC5JUAogSWYgdGhlIHZhbHVlIG9mIHRoZQogLkIgTUlCUwpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfc2Vzc19hcGkuMy5kZWYgYi9tYW4vbmV0c25tcF9zZXNzX2FwaS4zLmRlZgppbmRleCA4NjQxNTM4Li44OTAzNTNkIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9zZXNzX2FwaS4zLmRlZgorKysgYi9tYW4vbmV0c25tcF9zZXNzX2FwaS4zLmRlZgpAQCAtOCw2ICs4LDcgQEAKIHNubXBfc2Vzc19zZWxlY3RfaW5mbywKIHNubXBfc2Vzc19yZWFkLAogc25tcF9zZXNzX3RpbWVvdXQsCitzbm1wX3Nlc3Nfc3luY2hfcmVzcG9uc2UsCiBzbm1wX3Nlc3NfY2xvc2UsCiBzbm1wX3Nlc3NfZXJyb3IgLSBzZXNzaW9uIGZ1bmN0aW9ucwogLlNIIFNZTk9QU0lTCkBAIC00MSw2ICs0MiwxMyBAQAogLlBQCiAuQkkgInZvaWQgc25tcF9zZXNzX3RpbWVvdXQodm9pZCAqIiBoYW5kbGUgIik7IgogLlBQCisuQkkgImludCBzbm1wX3Nlc3Nfc3luY2hfcmVzcG9uc2UgKCB2b2lkICoiICJoYW5kbGUsIgorLlJTCisuQkkgIm5ldHNubXBfcGR1ICoiICJwZHUiICIsICIKKy5icgorLkJJICJuZXRzbm1wX3BkdSAqKiIgInJlc3BvbnNlIiApOworLlJFCisuUFAKIC5CSSAiaW50IHNubXBfc2Vzc19jbG9zZSh2b2lkICoiIGhhbmRsZSAiKTsiCiAuUFAKIC5CSSAidm9pZCBzbm1wX3Nlc3NfZXJyb3Iodm9pZCAqIiBoYW5kbGUgIiwgaW50ICoiIHBjbGliZXJyICIsICIKQEAgLTk5LDYgKzEwNywxMiBAQAogLlBQCiBDb25zdWx0IHNubXBfYXBpLmggZm9yIHRoZSBkZWZpbml0aW9ucyBvZiB0aGVzZSBzdHJ1Y3R1cmVzLgogLlBQCitXaXRoIHRoZQorLkkgc25tcF9zZXNzX2FzeW5jX3NlbmQoKQorY2FsbCwKKy5JIHNubXBfc2Vzc19yZWFkCit3aWxsIGludm9rZSB0aGUgc3BlY2lmaWVkIGNhbGxiYWNrIHdoZW4gdGhlIHJlc3BvbnNlIGlzIHJlY2VpdmVkLgorLlBQCiAuQlIgc25tcF9zZXNzX3NlbGVjdF9pbmZvKCkgIiwgIiBzbm1wX3Nlc3NfcmVhZCgpICIgYW5kICIgc25tcF9zZXNzX3RpbWVvdXQoKQogcHJvdmlkZSBhbiBpbnRlcmZhY2UgZm9yIHRoZSB1c2Ugb2YgdGhlCiAuQlIgc2VsZWN0ICgyKQpAQCAtMTQ4LDYgKzE2MiwxMyBAQAogLkIgc25tcF9zZXNzX3RpbWVvdXQoKQogc2hvdWxkIGJlIGNhbGxlZCB0byBzZWUgaWYgYSB0aW1lb3V0IGhhcyBvY2N1cnJlZCBvbiB0aGUgU05NUAogc2Vzc2lvbi4KKy5QUAorLkkgc25tcF9zZXNzX3N5bmNoX3Jlc3BvbnNlCitpcyBhIGNvbnZlbmllbmNlIHJvdXRpbmUgdGhhdCB3aWxsIHNlbmQgdGhlIHJlcXVlc3QsCit3YWl0IGZvciB0aGUgcmVzcG9uc2UgYW5kIHByb2Nlc3MgaXQgYmVmb3JlIHJldHVybmluZy4KK1NlZSB0aGUgZGVzY3JpcHRpb25zIG9mCisuSSAic25tcF9zZXNzX3NlbmQiICIsICIgInNubXBfc2Vzc19yZWFkIgorZXRjIGZvciBkZXRhaWxzLgogLlNIIERJQUdOT1NUSUNTCiAuUFAKIEVycm9yIHJldHVybiBzdGF0dXMgZnJvbSAKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3Nlc3Npb25fYXBpLjMuZGVmIGIvbWFuL25ldHNubXBfc2Vzc2lvbl9hcGkuMy5kZWYKaW5kZXggNjBiNjhkMS4uYzg4OTFhMSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfc2Vzc2lvbl9hcGkuMy5kZWYKKysrIGIvbWFuL25ldHNubXBfc2Vzc2lvbl9hcGkuMy5kZWYKQEAgLTEsNyArMSw3IEBACiAuXCIgLSotIG5yb2ZmIC0qLQotLlwiIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodC4gCi0uXCIgU2VlIHRoZSBOZXQtU05NUCBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIKLS5cIiBjb3B5cmlnaHRzIHRoYXQgbWF5IGFwcGx5OgorLlwiIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodC4gIFNlZQorLlwiIHRoZSBOZXQtU05NUCBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworLlwiIHRoYXQgbWF5IGFwcGx5OgogLlwiIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiIAlDb3B5cmlnaHQgMTk4OSBieSBDYXJuZWdpZSBNZWxsb24gVW5pdmVyc2l0eQogLlwiIApAQCAtMjgsOSArMjgsMTEgQEAKIHNubXBfc2Vzc19pbml0LAogc25tcF9vcGVuLAogc25tcF9zZW5kLAorc25tcF9hc3luY19zZW5kLAogc25tcF9zZWxlY3RfaW5mbywKIHNubXBfcmVhZCwKIHNubXBfdGltZW91dCwKK3NubXBfc3luY2hfcmVzcG9uc2UsCiBzbm1wX2Nsb3NlLAogc25tcF9wZXJyb3IsCiBzbm1wX3Nlc3NfcGVycm9yLApAQCAtNTEsNiArNTMsMTUgQEAKIC5CSSAibmV0c25tcF9wZHUgKiIgInBkdSIgKTsKIC5SRQogLlBQCisuQkkgImludCBzbm1wX2FzeW5jX3NlbmQgKCBuZXRzbm1wX3Nlc3Npb24gKiIgInNlc3Npb24sIgorLlJTCisuQkkgIiAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3BkdSAqIiBwZHUgIiwgIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX2NhbGxiYWNrICIgY2FsbGJhY2sgIiwgIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoiIGNhbGxiYWNrRGF0YSAiKTsiCisuUkUKKy5QUAogLkJJICJpbnQgc25tcF9zZWxlY3RfaW5mbyAoIGludCAqICIgbnVtZmRzLCAiZmRfc2V0ICoiIGZkc2V0LAogLlJTCiAuQkkgInN0cnVjdCB0aW1ldmFsICoiIHRpbWVvdXQsICJpbnQgKiIgYmxvY2sgKTsKQEAgLTYwLDYgKzcxLDEzIEBACiAuUFAKIC5CICB2b2lkIHNubXBfdGltZW91dCAoIHZvaWQgKTsKIC5QUAorLkJJICJpbnQgc25tcF9zeW5jaF9yZXNwb25zZSAoIG5ldHNubXBfc2Vzc2lvbiAqIiAic2Vzc2lvbiwiCisuUlMKKy5CSSAibmV0c25tcF9wZHUgKiIgInBkdSIgIiwgIgorLmJyCisuQkkgIm5ldHNubXBfcGR1ICoqIiAicmVzcG9uc2UiICk7CisuUkUKKy5QUAogLkJJICJpbnQgc25tcF9jbG9zZSAoIG5ldHNubXBfc2Vzc2lvbiAqIiBzZXNzaW9uICk7CiAuYnIKIC5CICAiaW50IHNubXBfY2xvc2Vfc2Vzc2lvbnMgKCB2b2lkICk7CkBAIC05OCw4ICsxMTYsMTAgQEAKIG9iamVjdCwgd2hpY2ggdGhlIGFwcGxpY2F0aW9uIG11c3QgdXNlIHRvIHJlZmVyZW5jZSB0aGUKIGFjdGl2ZSBTTk1QIHNlc3Npb24uCiAuUFAKLS5JIFNubXBfc2VuZAotdGFrZXMgYXMgaW5wdXQgYSBwb2ludGVyIHRvIGEKKy5JIHNubXBfc2VuZAorYW5kCisuSSBzbm1wX2FzeW5jX3NlbmQoKQorZWFjaCB0YWtlIGFzIGlucHV0IGEgcG9pbnRlciB0byBhCiAuSSBuZXRzbm1wX3BkdQogb2JqZWN0LgogVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgaW5mb3JtYXRpb24gdGhhdCBkZXNjcmliZXMgYSB0cmFuc2FjdGlvbgpAQCAtMTA3LDYgKzEyNywxMiBAQAogLlBQCiBDb25zdWx0IHNubXBfYXBpLmggZm9yIHRoZSBkZWZpbml0aW9ucyBvZiB0aGVzZSBzdHJ1Y3R1cmVzLgogLlBQCitXaXRoIHRoZQorLkkgc25tcF9hc3luY19zZW5kKCkKK2NhbGwsCisuSSBzbm1wX3JlYWQKK3dpbGwgaW52b2tlIHRoZSBzcGVjaWZpZWQgY2FsbGJhY2sgd2hlbiB0aGUgcmVzcG9uc2UgaXMgcmVjZWl2ZWQuCisuUFAKIC5JIFNubXBfcmVhZCwgc25tcF9zZWxlY3RfaW5mbywKIGFuZAogLkkgc25tcF90aW1lb3V0CkBAIC0xNTYsNiArMTgyLDEzIEBACiB0aW1lcyBvdXQsCiAuSSBzbm1wX3RpbWVvdXQKIHNob3VsZCBiZSBjYWxsZWQgdG8gc2VlIGlmIHRoZSB0aW1lb3V0IHdhcyBpbnRlbmRlZCBmb3IgU05NUC4KKy5QUAorLkkgc25tcF9zeW5jaF9yZXNwb25zZQoraXMgYSBjb252ZW5pZW5jZSByb3V0aW5lIHRoYXQgd2lsbCBzZW5kIHRoZSByZXF1ZXN0LAord2FpdCBmb3IgdGhlIHJlc3BvbnNlIGFuZCBwcm9jZXNzIGl0IGJlZm9yZSByZXR1cm5pbmcuCitTZWUgdGhlIGRlc2NyaXB0aW9ucyBvZgorLkkgInNubXBfc2VuZCIgIiwgIiAic25tcF9yZWFkIgorZXRjIGZvciBkZXRhaWxzLgogLlNIIERJQUdOT1NUSUNTCiAuUFAKIFByZXZpb3VzIHZlcnNpb25zIG9mIHRoZSBsaWJyYXJ5IHVzZWQKZGlmZiAtLWdpdCBhL21hbi9zbm1wLmNvbmYuNS5kZWYgYi9tYW4vc25tcC5jb25mLjUuZGVmCmluZGV4IDJmZTU4MTAuLjQ2MjAzZDAgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wLmNvbmYuNS5kZWYKKysrIGIvbWFuL3NubXAuY29uZi41LmRlZgpAQCAtMzUsOCArMzUsOCBAQAogImRvbnRMb2FkSG9zdENvbmZpZyB0cnVlIiBpbiB5b3VyIHNubXAuY29uZiBmaWxlLgogLlNIIENPTU1BTkQtTElORSBPUFRJT05TCiBBbGwgb2YgdGhlIHRva2VucyBkZXNjcmliZWQgaW4gdGhpcyBmaWxlIGNhbiBiZSB1c2VkIG9uIHRoZSBjb21tYW5kCi1saW5lIG9mIE5ldC1TTk1QIGFwcGxpY2F0aW9ucyBhcyB3ZWxsIGJ5IHByZWZpeGluZyB0aGVtIHdpdGggIi0tIi4KLUVHLCBzcGVjaWZ5aW5nIFxmSS0tZG9udExvYWRIb3N0Q29uZmlnPXRydWVcZlIgb24gdGhlIGNvbW1hbmQgbGluZSB3aWxsCitsaW5lIG9mIE5ldC1TTk1QIGFwcGxpY2F0aW9ucyBhcyB3ZWxsIGJ5IHByZWZpeGluZyB0aGVtIHdpdGggIlwtXC0iLgorRUcsIHNwZWNpZnlpbmcgXGZJXC1cLWRvbnRMb2FkSG9zdENvbmZpZz10cnVlXGZSIG9uIHRoZSBjb21tYW5kIGxpbmUgd2lsbAogdHVybiBvZiBsb2FkaW5nIG9mIHRoZSBob3N0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZXMuCiAuU0ggSU1QT1JUQU5UIE5PVEUKIFNldmVyYWwgb2YgdGhlc2UgZGlyZWN0aXZlcyBtYXkgY29udGFpbiBzZW5zaXRpdmUgaW5mb3JtYXRpb24KQEAgLTgyLDEwICs4MiwxMCBAQAogVENQIHRvIFxmSWZvby5leG1hcGxlLmNvbVxmUiBvbiBwb3J0IDk4NzYuCiAuSVAgImRlZlZlcnNpb24gKDF8MmN8MykiCiBkZWZpbmVzIHRoZSBkZWZhdWx0IHZlcnNpb24gb2YgU05NUCB0byB1c2UuCi1UaGlzIGNhbiBiZSBvdmVycmlkZGVuIHVzaW5nIHRoZSBcZkItdlxmUiBvcHRpb24uCitUaGlzIGNhbiBiZSBvdmVycmlkZGVuIHVzaW5nIHRoZSBcZkJcLXZcZlIgb3B0aW9uLgogLklQICJkZWZDb21tdW5pdHkgU1RSSU5HIgogZGVmaW5lcyB0aGUgZGVmYXVsdCBjb21tdW5pdHkgdG8gdXNlIGZvciBTTk1QdjEgYW5kIFNOTVB2MmMgcmVxdWVzdHMuCi1UaGlzIGNhbiBiZSBvdmVycmlkZGVuIHVzaW5nIHRoZSBcZkItY1xmUiBvcHRpb24uCitUaGlzIGNhbiBiZSBvdmVycmlkZGVuIHVzaW5nIHRoZSBcZkJcLWNcZlIgb3B0aW9uLgogLlwiLklQICJkdW1wUGFja2V0ICgxfHllc3x0cnVlfDB8bm98ZmFsc2UpIgogLklQICJhbGlhcyBOQU1FIERFRklOSVRJT04iCiBDcmVhdGVzIGFuIGFsaWFzZWQgdGllZCB0byBOQU1FIGZvciBhIGdpdmVuIHRyYW5zcG9ydCBkZWZpbml0aW9uLiAgVGhlCkBAIC05Nyw3ICs5Nyw3IEBACiAuSVAgImR1bXBQYWNrZXQgeWVzIgogZGVmaW5lcyB3aGV0aGVyIHRvIGRpc3BsYXkgYSBoZXhhZGVjaW1hbCBkdW1wIG9mIHRoZSByYXcgU05NUCByZXF1ZXN0cwogc2VudCBhbmQgcmVjZWl2ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLgotVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBcZkItZFxmUiBvcHRpb24uCitUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhlIFxmQlwtZFxmUiBvcHRpb24uCiAuSVAgImRvRGVidWdnaW5nICgxfDApIgogdHVybnMgb24gZGVidWdnaW5nIGZvciBhbGwgYXBwbGljYXRpb25zIHJ1biBpZiBzZXQgdG8gMS4KIC5cIgpAQCAtMTA3LDcgKzEwNyw3IEBACiAuSVAgImRlYnVnVG9rZW5zIFRPS0VOWyxUT0tFTi4uLl0iCiBkZWZpbmVzIHRoZSBkZWJ1Z2dpbmcgdG9rZW5zIHRoYXQgc2hvdWxkIGJlIHR1cm5lZCBvbiB3aGVuCiBcZklkb0RlYnVnZ2luZ1xmUiBpcyBzZXQuCi1UaGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhlIFxmQi1EXGZSIG9wdGlvbi4KK1RoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgXGZCXC1EXGZSIG9wdGlvbi4KIC5cIi5JUCAiMTZiaXRJRHMgKDF8eWVzfHRydWV8MHxub3xmYWxzZSkiCiAuSVAgIjE2Yml0SURzIHllcyIKIHJlc3RyaWN0cyByZXF1ZXN0SURzLCBldGMgdG8gMTYtYml0IHZhbHVlcy4KQEAgLTE0Myw3ICsxNDMsNyBAQAogLklQICJub1JhbmdlQ2hlY2sgeWVzIgogZGlzYWJsZXMgdGhlIHZhbGlkYXRpb24gb2YgdmFyYmluZCB2YWx1ZXMgYWdhaW5zdCB0aGUgTUlCIGRlZmluaXRpb24KIGZvciB0aGUgcmVsZXZhbnQgT0lELgotVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBcZkItSXJcZlIgb3B0aW9uLgorVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBcZkJcLUlyXGZSIG9wdGlvbi4KIC5JUAogVGhpcyBkaXJlY3RpdmUgaXMgcHJpbWFyaWx5IHJlbGV2YW50IHRvIHRoZSBcZkJzbm1wc2V0XGZSIGNvbW1hbmQsCiBidXQgd2lsbCBhbHNvIGFwcGx5IHRvIGFueSBhcHBsaWNhdGlvbiB0aGF0IGNhbGxzIFxmSXNubXBfYWRkX3ZhcigpXGZSCkBAIC0xNzAsMTYgKzE3MCwyMCBAQAogU3BlY2lmaWVzIHdoZXRoZXIgb3Igbm90IHRoZSBob3N0LXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlCiBsb2FkZWQuICBTZXQgdG8gInRydWUiIHRvIHR1cm4gb2ZmIHRoZSBsb2FkaW5nIG9mIHRoZSBob3N0IHNwZWNpZmljCiBjb25maWd1cmF0aW9uIGZpbGVzLgorLklQICJyZXRyaWVzIElOVEVHRVIiCitTcGVjaWZpZXMgdGhlIG51bWJlciBvZiByZXRyaWVzIHRvIGJlIHVzZWQgaW4gdGhlIHJlcXVlc3RzLgorLklQICJ0aW1lb3V0IElOVEVHRVIiCitTcGVjaWZpZXMgdGhlIHRpbWVvdXQgaW4gc2Vjb25kcyBiZXR3ZWVuIHJldHJpZXMuCiAuXCIKIC5cIiBYWFggLSBJdCBpcyBwcm9iYWJseSBhYm91dCB0aW1lIHRvIHJlbW92ZSB0aGlzIGNob2ljZSEKIC5cIgogLlNIIFNOTVB2MyBTRVRUSU5HUwogLklQICJkZWZTZWN1cml0eU5hbWUgU1RSSU5HIgogZGVmaW5lcyB0aGUgZGVmYXVsdCBzZWN1cml0eSBuYW1lIHRvIHVzZSBmb3IgU05NUHYzIHJlcXVlc3RzLgotVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB1c2luZyB0aGUgXGZCLXVcZlIgb3B0aW9uLgorVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB1c2luZyB0aGUgXGZCXC11XGZSIG9wdGlvbi4KIC5JUCAiZGVmU2VjdXJpdHlMZXZlbCBub0F1dGhOb1ByaXZ8YXV0aE5vUHJpdnxhdXRoUHJpdiIKIGRlZmluZXMgdGhlIGRlZmF1bHQgc2VjdXJpdHkgbGV2ZWwgdG8gdXNlIGZvciBTTk1QdjMgcmVxdWVzdHMuCi1UaGlzIGNhbiBiZSBvdmVycmlkZGVuIHVzaW5nIHRoZSBcZkItbFxmUiBvcHRpb24uCitUaGlzIGNhbiBiZSBvdmVycmlkZGVuIHVzaW5nIHRoZSBcZkJcLWxcZlIgb3B0aW9uLgogLklQCiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcyB0b2tlbiBpcyBcZklub0F1dGhOb1ByaXZcZlIuCiAuXCIKQEAgLTE5NSw3ICsxOTksNyBAQAogLklQICJkZWZQcml2UGFzc3BocmFzZSBTVFJJTkciCiBkZWZpbmUgdGhlIGRlZmF1bHQgYXV0aGVudGljYXRpb24gYW5kIHByaXZhY3kgcGFzcyBwaHJhc2VzIHRvIHVzZQogZm9yIFNOTVB2MyByZXF1ZXN0cy4KLVRoZXNlIGNhbiBiZSBvdmVycmlkZGVuIHVzaW5nIHRoZSBcZkItQVxmUiBhbmQgXGZCLVhcZlIgb3B0aW9ucyByZXNwZWN0aXZlbHkuCitUaGVzZSBjYW4gYmUgb3ZlcnJpZGRlbiB1c2luZyB0aGUgXGZCXC1BXGZSIGFuZCBcZkJcLVhcZlIgb3B0aW9ucyByZXNwZWN0aXZlbHkuCiAuSVAKIFRoZSAKIC5CIGRlZlBhc3NwaHJhc2UKQEAgLTIwNSw3ICsyMDksNyBAQAogLklQICJkZWZQcml2VHlwZSBERVN8QUVTIgogZGVmaW5lIHRoZSBkZWZhdWx0IGF1dGhlbnRpY2F0aW9uIGFuZCBwcml2YWN5IHByb3RvY29scyB0byB1c2UgZm9yCiBTTk1QdjMgcmVxdWVzdHMuCi1UaGVzZSBjYW4gYmUgb3ZlcnJpZGRlbiB1c2luZyB0aGUgXGZCLWFcZlIgYW5kIFxmQi14XGZSIG9wdGlvbnMgcmVzcGVjdGl2ZWx5LgorVGhlc2UgY2FuIGJlIG92ZXJyaWRkZW4gdXNpbmcgdGhlIFxmQlwtYVxmUiBhbmQgXGZCXC14XGZSIG9wdGlvbnMgcmVzcGVjdGl2ZWx5LgogLklQCiBJZiBub3Qgc3BlY2lmaWVkLCBTTk1QdjMgcmVxdWVzdHMgd2lsbCBkZWZhdWx0IHRvIE1ENSBhdXRoZW50aWNhdGlvbgogYW5kIERFUyBlbmNyeXB0aW9uLgpAQCAtMjE3LDcgKzIyMSw3IEBACiAuUkUKIC5JUCAiZGVmQ29udGV4dCBTVFJJTkciCiBkZWZpbmVzIHRoZSBkZWZhdWx0IGNvbnRleHQgdG8gdXNlIGZvciBTTk1QdjMgcmVxdWVzdHMuCi1UaGlzIGNhbiBiZSBvdmVycmlkZGVuIHVzaW5nIHRoZSBcZkItblxmUiBvcHRpb24uCitUaGlzIGNhbiBiZSBvdmVycmlkZGVuIHVzaW5nIHRoZSBcZkJcLW5cZlIgb3B0aW9uLgogLklQCiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcyB0b2tlbiBpcyB0aGUgZGVmYXVsdCBjb250ZXh0CiAoaS5lLiB0aGUgZW1wdHkgc3RyaW5nICIiKS4KQEAgLTIzNiw3ICsyNDAsNyBAQAogbm9ybWFsbHkgaGFzIGJldHRlciBlbnRyb3B5IHRoYW4gYSBwYXNzd29yZCB1bmxlc3MgaXQgaXMKIGFtYXppbmdseSBsb25nKS4KIFRoZSBkaXJlY3RpdmVzIGFyZSBlcXVpdmFsZW50IHRvIHRoZSBzaG9ydC1mb3JtCi1jb21tYW5kIGxpbmUgb3B0aW9ucyBcZkItM21cZlIsIFxmQi0zTVxmUiwgXGZCLTNrXGZSLCBhbmQgXGZCLTNLXGZSLgorY29tbWFuZCBsaW5lIG9wdGlvbnMgXGZCXC0zbVxmUiwgXGZCXC0zTVxmUiwgXGZCXC0za1xmUiwgYW5kIFxmQlwtM0tcZlIuCiAuSVAKIExvY2FsaXplZCBrZXlzIGFyZQogbWFzdGVyIGtleXMgd2hpY2ggaGF2ZSBiZWVuIGNvbnZlcnRlZCB0byBhIHVuaXF1ZSBrZXkgd2hpY2ggaXMgb25seQpAQCAtMjU2LDYgKzI2MCwxMiBAQAogcHJpdmlsZWdlZCBmb3IgU1NIIHVzZXJzIHRoYXQgYXJlIGFsbG93ZWQgdG8gY29ubmVjdCB0byB0aGUgU05NUAogc2VydmljZSAoVkFDTSBhY2Nlc3Mgc3RpbGwgbmVlZHMgdG8gYmUgZ3JhbnRlZCBhcyB3ZWxsLCBtb3N0IGxpa2VseQogdGhyb3VnaCB0aGUgVFNNIHNlY3VyaXR5IG1vZGVsKS4KKy5JUCAic3NodXNlcm5hbWUgTkFNRSIKK1NldHMgdGhlIFNTSCB1c2VyIG5hbWUgZm9yIGxvZ2dpbmcgaW50byB0aGUgcmVtb3RlIHN5c3RlbS4KKy5JUCAic3NocHVia2V5IEZJTEUiCitTZXQgdGhlIHB1YmxpYyBrZXkgZmlsZSB0byB1c2Ugd2hlbiBjb25uZWN0aW5nIHRvIGEgcmVtb3RlIHN5c3RlbS4KKy5JUCAic3NocHJpdmtleSBGSUxFIgorU2V0IHRoZSBwcml2YXRlIGtleSBmaWxlIHRvIHVzZSB3aGVuIGNvbm5lY3RpbmcgdG8gYSByZW1vdGUgc3lzdGVtLgogLlwiCiAuXCIgWFhYIC0gYXJlIHRoZXNlIGxlbmd0aHMgc3RpbGwgY29ycmVjdCA/CiAuXCIKQEAgLTI5NiwxOCArMzA2LDE4IEBACiAuU0ggTUlCIEhBTkRMSU5HCiAuSVAgIm1pYmRpcnMgRElSTElTVCIKIHNwZWNpZmllcyBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZvciBNSUIgZmlsZXMuCi1UaGlzIG9wZXJhdGVzIGluIHRoZSBzYW1lIHdheSBhcyB0aGUgXGZCLU1cZlIgb3B0aW9uIC0KK1RoaXMgb3BlcmF0ZXMgaW4gdGhlIHNhbWUgd2F5IGFzIHRoZSBcZkJcLU1cZlIgb3B0aW9uIC0KIHNlZSBcZklzbm1wY21kKDEpXGZSIGZvciBkZXRhaWxzLgogTm90ZSB0aGF0IHRoaXMgdmFsdWUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlCiAuQiBNSUJESVJTCi1lbnZpcm9ubWVudCB2YXJpYWJsZSwgYW5kIHRoZSBcZkItTVxmUiBvcHRpb24uCitlbnZpcm9ubWVudCB2YXJpYWJsZSwgYW5kIHRoZSBcZkJcLU1cZlIgb3B0aW9uLgogLklQICJtaWJzIE1JQkxJU1QiCiBzcGVjaWZpZXMgYSBsaXN0IG9mIE1JQiBtb2R1bGVzIChub3QgZmlsZXMpIHRoYXQgc2hvdWxkIGJlIGxvYWRlZC4KLVRoaXMgb3BlcmF0ZXMgaW4gdGhlIHNhbWUgd2F5IGFzIHRoZSBcZkItbVxmUiBvcHRpb24gLQorVGhpcyBvcGVyYXRlcyBpbiB0aGUgc2FtZSB3YXkgYXMgdGhlIFxmQlwtbVxmUiBvcHRpb24gLQogc2VlIFxmSXNubXBjbWQoMSlcZlIgZm9yIGRldGFpbHMuCiBOb3RlIHRoYXQgdGhpcyBsaXN0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZQogLkIgTUlCUwotZW52aXJvbm1lbnQgdmFyaWFibGUsIGFuZCB0aGUgXGZCLW1cZlIgb3B0aW9uLgorZW52aXJvbm1lbnQgdmFyaWFibGUsIGFuZCB0aGUgXGZCXC1tXGZSIG9wdGlvbi4KIC5JUCAibWliZmlsZSBGSUxFIgogc3BlY2lmaWVzIGEgKHNpbmdsZSkgTUlCIGZpbGUgdG8gbG9hZCwgaW4gYWRkaXRpb24gdG8gdGhlCiBsaXN0IHJlYWQgZnJvbSB0aGUgXGZJbWlic1xmUiB0b2tlbiAob3IgZXF1aXZhbGVudCBjb25maWd1cmF0aW9uKS4KQEAgLTMxOSw3ICszMjksNyBAQAogLklQICJjb21tZW50VG9FT0wgKDF8eWVzfHRydWV8MHxub3xmYWxzZSkiCiB3aGV0aGVyIE1JQiBwYXJzaW5nIHNob3VsZCBiZSBzdHJpY3QgYWJvdXQgY29tbWVudCB0ZXJtaW5hdGlvbi4KIE1hbnkgTUlCIHdyaXRlcnMgYXNzdW1lIHRoYXQgQVNOLjEgY29tbWVudHMgZXh0ZW5kIHRvIHRoZSBlbmQgb2YKLXRoZSB0ZXh0IGxpbmUsIHJhdGhlciB0aGFuIGJlaW5nIHRlcm1pbmF0ZWQgYnkgdGhlIG5leHQgIi0tIiB0b2tlbi4KK3RoZSB0ZXh0IGxpbmUsIHJhdGhlciB0aGFuIGJlaW5nIHRlcm1pbmF0ZWQgYnkgdGhlIG5leHQgIlwtXC0iIHRva2VuLgogVGhpcyB0b2tlbiBjYW4gYmUgdXNlZCB0byBhY2NlcHQgc3VjaCAoc3RyaWN0bHkgaW5jb3JyZWN0KSBNSUJzLgogLmJyCiBOb3RlIHRoYXQgdGhpcyBkaXJlY3RpdmUgd2FzIHByZXZpb3VzIChtaXMtKW5hbWVkIFxmSXN0cmljdENvbW1lbnRUZXJtXGZSLApAQCAtMzQwLDQ5ICszNTAsNDkgQEAKIGJlaW5nIHBhc3NlZCB0byB0aGUgbG9nZ2luZyByb3V0aW5lcy4gIFRoaXMgb3B0aW9uIGlzIG9ubHkgdXNlZCB3aGVuIGZpbGUgbG9nZ2luZyBpcyBhY3RpdmUuIAogLklQICJwcmludE51bWVyaWNFbnVtcyAoMXx5ZXN8dHJ1ZXwwfG5vfGZhbHNlKSIKIEVxdWl2YWxlbnQgdG8KLS5CUiAtT2UgLgorLkJSIFwtT2UgLgogLklQICJwcmludE51bWVyaWNPaWRzICgxfHllc3x0cnVlfDB8bm98ZmFsc2UpIgogRXF1aXZhbGVudCB0bwotLkJSIC1PbiAuCisuQlIgXC1PbiAuCiAuSVAgImRvbnRCcmVha2Rvd25PaWRzICgxfHllc3x0cnVlfDB8bm98ZmFsc2UpIgogRXF1aXZhbGVudCB0bwotLkJSIC1PYiAuCisuQlIgXC1PYiAuCiAuSVAgImVzY2FwZVF1b3RlcyAoMXx5ZXN8dHJ1ZXwwfG5vfGZhbHNlKSIKIEVxdWl2YWxlbnQgdG8KLS5CUiAtT0UgLgorLkJSIFwtT0UgLgogLklQICJxdWlja1ByaW50aW5nICgxfHllc3x0cnVlfDB8bm98ZmFsc2UpIgogRXF1aXZhbGVudCB0bwotLkJSIC1PcSAuCisuQlIgXC1PcSAuCiAuSVAgInByaW50VmFsdWVPbmx5ICgxfHllc3x0cnVlfDB8bm98ZmFsc2UpIgogRXF1aXZhbGVudCB0bwotLkJSIC1PdiAuCisuQlIgXC1PdiAuCiAuSVAgImRvbnRQcmludFVuaXRzICgxfHllc3x0cnVlfDB8bm98ZmFsc2UpIgogRXF1aXZhbGVudCB0bwotLkJSIC1PVSAuCisuQlIgXC1PVSAuCiAuSVAgIm51bWVyaWNUaW1ldGlja3MgKDF8eWVzfHRydWV8MHxub3xmYWxzZSkiCiBFcXVpdmFsZW50IHRvCi0uQlIgLU90IC4KKy5CUiBcLU90IC4KIC5JUCAicHJpbnRIZXhUZXh0ICgxfHllc3x0cnVlfDB8bm98ZmFsc2UpIgogRXF1aXZhbGVudCB0bwotLkJSIC1PVCAuCisuQlIgXC1PVCAuCiAuSVAgImhleE91dHB1dExlbmd0aCBpbnRlZ2VyIgogU3BlY2lmaWVzIHdoZXJlIHRvIGJyZWFrIHVwIHRoZSBvdXRwdXQgb2YgaGV4YWRlY2ltYWwgc3RyaW5ncy4gIAogU2V0IHRvIDAgdG8gZGlzYWJsZSBsaW5lIGJyZWFrcy4gIERlZmF1bHRzIHRvIDE2LgogLklQICJzdWZmaXhQcmludGluZyAoMHwxfDIpIgogVGhlIHZhbHVlIDEgaXMgZXF1aXZhbGVudCB0bwotLkIgLU9zCisuQiBcLU9zCiBhbmQgdGhlIHZhbHVlIDIgaXMgZXF1aXZhbGVudCB0bwotLkJSIC1PUyAuCisuQlIgXC1PUyAuCiAuSVAgIm9pZE91dHB1dEZvcm1hdCAoMXwyfDN8NHw1fDYpIgotTWFwcyAtTyBvcHRpb25zIGFzIGZvbGxvdzogLU9zPTEsIC1PUz0yLCAtT2Y9MywgLU9uPTQsIC1PdT01LgotVGhlIHZhbHVlIDYgaGFzIG5vIG1hdGNoaW5nIC1PIG9wdGlvbi4gSXQgc3VwcHJlc3NlcyBvdXRwdXQuCitNYXBzIFwtTyBvcHRpb25zIGFzIGZvbGxvdzogXC1Pcz0xLCBcLU9TPTIsIFwtT2Y9MywgXC1Pbj00LCBcLU91PTUuCitUaGUgdmFsdWUgNiBoYXMgbm8gbWF0Y2hpbmcgXC1PIG9wdGlvbi4gSXQgc3VwcHJlc3NlcyBvdXRwdXQuCiAuSVAgImV4dGVuZGVkSW5kZXggKDF8eWVzfHRydWV8MHxub3xmYWxzZSkiCiBFcXVpdmFsZW50IHRvCi0uQlIgLU9YIC4KKy5CUiBcLU9YIC4KIC5JUCAibm9EaXNwbGF5SGludCAoMXx5ZXN8dHJ1ZXwwfG5vfGZhbHNlKSIKIERpc2FibGVzIHRoZSB1c2Ugb2YgRElTUExBWS1ISU5UIGluZm9ybWF0aW9uIHdoZW4gcGFyc2luZyBpbmRpY2VzIGFuZAogdmFsdWVzIHRvIHNldC4gRXF1aXZhbGVudCB0bwotLkJSIC1JaCAuCisuQlIgXC1JaCAuCiAuU0ggRklMRVMKIC5JUCAiU3lzdGVtLXdpZGUgY29uZmlndXJhdGlvbiBmaWxlczoiCiBTWVNDT05GRElSL3NubXAvc25tcC5jb25mCmRpZmYgLS1naXQgYS9tYW4vc25tcGJ1bGtnZXQuMS5kZWYgYi9tYW4vc25tcGJ1bGtnZXQuMS5kZWYKaW5kZXggYjRlMDYyZC4uMjUyMTBmMyAxMDA2NDQKLS0tIGEvbWFuL3NubXBidWxrZ2V0LjEuZGVmCisrKyBiL21hbi9zbm1wYnVsa2dldC4xLmRlZgpAQCAtMTcsMTMgKzE3LDEzIEBACiBwaW5wb2ludCB3aHkgdGhlIHJlcXVlc3Qgd2FzIG1hbGZvcm1lZC4KIC5TSCBPUFRJT05TCiAuVFAgOAotLkJJIC1DbiA8TlVNPgorLkJJIFwtQ24gPE5VTT4KIFNldCB0aGUKIC5JIG5vbi1yZXBlYXRlcnMKIGZpZWxkIGluIHRoZSBHRVRCVUxLIFBEVS4gIFRoaXMgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2Ygc3VwcGxpZWQKIHZhcmlhYmxlcyB0aGF0IHNob3VsZCBub3QgYmUgaXRlcmF0ZWQgb3Zlci4gIFRoZSBkZWZhdWx0IGlzIDAuCiAuVFAKLS5CSSAtQ3IgPE5VTT4KKy5CSSBcLUNyIDxOVU0+CiBTZXQgdGhlCiAuSSBtYXgtcmVwZXRpdGlvbnMKIGZpZWxkIGluIHRoZSBHRVRCVUxLIFBEVS4gIFRoaXMgc3BlY2lmaWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZgpAQCAtNDEsNyArNDEsNyBAQAogLlNIIEVYQU1QTEUKIFRoZSBjb21tYW5kOgogLlBQCi1zbm1wYnVsa2dldCAtdjJjIC1DbjEgLUNyNSAtT3MgLWMgcHVibGljIHpldXMgc3lzdGVtIGlmVGFibGUKK3NubXBidWxrZ2V0IFwtdjJjIFwtQ24xIFwtQ3I1IFwtT3MgXC1jIHB1YmxpYyB6ZXVzIHN5c3RlbSBpZlRhYmxlCiAuUFAKIHdpbGwgcmV0cmlldmUgdGhlIHZhcmlhYmxlIHN5c3RlbS5zeXNEZXNjci4wICh3aGljaCBpcyB0aGUKIGxleGljb2dyYXBoaWNhbGx5IG5leHQgb2JqZWN0IHRvIHN5c3RlbSkgYW5kIHRoZSBmaXJzdCA1IG9iamVjdHMgaW4KZGlmZiAtLWdpdCBhL21hbi9zbm1wYnVsa3dhbGsuMS5kZWYgYi9tYW4vc25tcGJ1bGt3YWxrLjEuZGVmCmluZGV4IGU2YzdhNjkuLmM1ZjRhMDYgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wYnVsa3dhbGsuMS5kZWYKKysrIGIvbWFuL3NubXBidWxrd2Fsay4xLmRlZgpAQCAtMSw3ICsxLDcgQEAKIC5cIiAtKi0gbnJvZmYgLSotCi0uXCIgUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0LiAKLS5cIiBTZWUgdGhlIE5ldC1TTk1QIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlcgotLlwiIGNvcHlyaWdodHMgdGhhdCBtYXkgYXBwbHk6CisuXCIgUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0LiAgU2VlCisuXCIgdGhlIE5ldC1TTk1QIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisuXCIgdGhhdCBtYXkgYXBwbHk6CiAuXCIgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIgCUNvcHlyaWdodCAxOTg4LCAxOTg5IGJ5IENhcm5lZ2llIE1lbGxvbiBVbml2ZXJzaXR5CiAuXCIgCkBAIC00Miw3ICs0Miw3IEBACiAuSVIgdmFyaWFibGVzKDUpIC4KIElmIG5vIE9JRCBhcmd1bWVudCBpcyBwcmVzZW50LAogLkIgc25tcGJ1bGt3YWxrCi13aWxsIHNlYXJjaCBNSUItMi4KK3dpbGwgc2VhcmNoIE1JQlwtMi4KIC5QUAogSWYgdGhlIG5ldHdvcmsgZW50aXR5IGhhcyBhbiBlcnJvciBwcm9jZXNzaW5nIHRoZSByZXF1ZXN0IHBhY2tldCwgYW4KIGVycm9yIHBhY2tldCB3aWxsIGJlIHJldHVybmVkIGFuZCBhIG1lc3NhZ2Ugd2lsbCBiZSBzaG93biwgaGVscGluZyB0bwpAQCAtNTIsNyArNTIsNyBAQAogTUlCLCB0aGUgbWVzc2FnZSAiRW5kIG9mIE1JQiIgd2lsbCBiZSBkaXNwbGF5ZWQuCiAuU0ggT1BUSU9OUwogLlRQIDgKLS5CIC1DYworLkIgXC1DYwogRG8gbm90IGNoZWNrIHdoZXRoZXIgdGhlIHJldHVybmVkIE9JRHMgYXJlIGluY3JlYXNpbmcuICBTb21lIGFnZW50cwogKExhc2VySmV0cyBhcmUgYW4gZXhhbXBsZSkgcmV0dXJuIE9JRHMgb3V0IG9mIG9yZGVyLCBidXQgY2FuCiBjb21wbGV0ZSB0aGUgd2FsayBhbnl3YXkuICBPdGhlciBhZ2VudHMgcmV0dXJuIE9JRHMgdGhhdCBhcmUgb3V0IG9mCkBAIC02MiwxMCArNjIsMTAgQEAKIC5CIHNubXBidWxrd2FsawogdHJpZXMgdG8gZGV0ZWN0IHRoaXMgYmVoYXZpb3IgYW5kIHdhcm5zIHlvdSB3aGVuIGl0IGhpdHMgYW4gYWdlbnQKIGFjdGluZyBpbGxlZ2FsbHkuICBVc2UKLS5CIC1DYworLkIgXC1DYwogdG8gdHVybiBvZmYgdGhpcyBiZWhhdmlvdXIuCiAuVFAKLS5CIC1DaQorLkIgXC1DaQogSW5jbHVkZSB0aGUgZ2l2ZW4gT0lEIGluIHRoZSBzZWFyY2ggcmFuZ2UuICBOb3JtYWxseQogLkIgc25tcGJ1bGt3YWxrCiB1c2VzIEdFVEJVTEsgcmVxdWVzdHMgc3RhcnRpbmcgd2l0aCB0aGUgT0lEIHlvdSBzcGVjaWZpZWQgYW5kIHJldHVybnMKQEAgLTc0LDE2ICs3NCwxNiBAQAogcmVzdWx0cyBpZiBpdCBpcyBhIHZhbGlkIE9JRCBpbiB0aGUgdHJlZSBpdHNlbGYuICBUaGlzIG9wdGlvbiBsZXRzIHlvdQogZG8gdGhpcy4KIC5UUAotLkJJIC1DbiA8TlVNPgorLkJJIFwtQ24gPE5VTT4KIFNldCB0aGUKIC5JIG5vbi1yZXBlYXRlcnMKIGZpZWxkIGluIHRoZSBHRVRCVUxLIFBEVXMuICBUaGlzIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHN1cHBsaWVkCiB2YXJpYWJsZXMgdGhhdCBzaG91bGQgbm90IGJlIGl0ZXJhdGVkIG92ZXIuICBUaGUgZGVmYXVsdCBpcyAwLgogLlRQCi0uQiAtQ3AKKy5CIFwtQ3AKIFVwb24gY29tcGxldGlvbiBvZiB0aGUgd2FsaywgcHJpbnQgdGhlIG51bWJlciBvZiB2YXJpYWJsZXMgZm91bmQuCiAuVFAKLS5CSSAtQ3IgPE5VTT4KKy5CSSBcLUNyIDxOVU0+CiBTZXQgdGhlCiAuSSBtYXgtcmVwZXRpdGlvbnMKIGZpZWxkIGluIHRoZSBHRVRCVUxLIFBEVXMuICBUaGlzIHNwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2YKQEAgLTEwMSw3ICsxMDEsNyBAQAogLlNIIEVYQU1QTEUKIFRoZSBjb21tYW5kOgogLlBQCi1zbm1wYnVsa3dhbGsgLXYyYyAtT3MgLWMgcHVibGljIHpldXMgc3lzdGVtCitzbm1wYnVsa3dhbGsgXC12MmMgXC1PcyBcLWMgcHVibGljIHpldXMgc3lzdGVtCiAuUFAKIHdpbGwgcmV0cmlldmUgYWxsIG9mIHRoZSB2YXJpYWJsZXMgdW5kZXIgc3lzdGVtOgogLlBQCmRpZmYgLS1naXQgYS9tYW4vc25tcGNtZC4xLmRlZiBiL21hbi9zbm1wY21kLjEuZGVmCmluZGV4IGQ5N2NjMTQuLmU0ZGY4YjIgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wY21kLjEuZGVmCisrKyBiL21hbi9zbm1wY21kLjEuZGVmCkBAIC00OSw4ICs0OSw4IEBACiBJbiBhZGRpdGlvbiB0byB0aGUgb3B0aW9ucyBkZXNjcmliZWQgaW4gdGhpcyBtYW51YWwgcGFnZSwgYWxsIG9mIHRoZQogdG9rZW5zIGRlc2NyaWJlZCBpbiB0aGUgXGZJc25tcC5jb25mXGZSIGFuZCBvdGhlciAuY29uZiBtYW51YWwgcGFnZXMKIGNhbiBiZSB1c2VkIG9uIHRoZSBjb21tYW5kIGxpbmUgb2YgTmV0LVNOTVAgYXBwbGljYXRpb25zIGFzIHdlbGwgYnkKLXByZWZpeGluZyB0aGVtIHdpdGggIi0tIi4gIEVHLCBzcGVjaWZ5aW5nCi1cZkktLWRvbnRMb2FkSG9zdENvbmZpZz10cnVlXGZSIG9uIHRoZSBjb21tYW5kIGxpbmUgd2lsbCB0dXJuIG9mCitwcmVmaXhpbmcgdGhlbSB3aXRoICJcLVwtIi4gIEVHLCBzcGVjaWZ5aW5nCitcZklcLVwtZG9udExvYWRIb3N0Q29uZmlnPXRydWVcZlIgb24gdGhlIGNvbW1hbmQgbGluZSB3aWxsIHR1cm4gb2YKIGxvYWRpbmcgb2YgdGhlIGhvc3Qgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmaWxlcy4KIC5QUAogVGhlIHNubXAuY29uZiBmaWxlIHNldHRpbmdzIGFuZCB0aGUgZG91YmxlLWRhc2ggYXJndW1lbnRzIG92ZXItcmlkZQpAQCAtNjAsMTQgKzYwLDE0IEBACiB0aGUgbG9uZ2VyLWZvcm0gZG91YmxlLWRhc2ggYXJndW1lbnRzIHRvIHN1Y2Nlc3NmdWxseSB0cnVtcCB0aGUKIFxmSXNubXAuY29uZlxmUiBmaWxlIHNldHRpbmdzLgogLlNIIEdlbmVyaWMgT3B0aW9ucwotVGhlcyBvcHRpb25zIGNvbnRyb2wgaG93IHRoZSBOZXQtU05NUCBjb21tYW5kcyBiZWhhdmUgcmVnYXJkbGVzcyBvZgorVGhlc2Ugb3B0aW9ucyBjb250cm9sIGhvdyB0aGUgTmV0LVNOTVAgY29tbWFuZHMgYmVoYXZlIHJlZ2FyZGxlc3Mgb2YKIHdoYXQgdmVyc2lvbiBvZiBTTk1QIHlvdSBhcmUgdXNpbmcuICBTZWUgZnVydGhlciBiZWxvdyBmb3Igb3B0aW9ucwogdGhhdCBjb250cm9sIHNwZWNpZmljIHZlcnNpb25zIG9yIHN1Yi1tb2R1bGVzIG9mIHRoZSBTTk1QIHByb3RvY29sLiAKIC5UUAotLkIgLWQKKy5CIFwtZAogRHVtcCAoaW4gaGV4YWRlY2ltYWwpIHRoZSByYXcgU05NUCBwYWNrZXRzIHNlbnQgYW5kIHJlY2VpdmVkLgogLlRQCi0uQiAtRFxmSVtUT0tFTlssLi4uXV0KKy5CIFwtRFxmSVtUT0tFTlssLi4uXV0KIFR1cm4gb24gZGVidWdnaW5nIG91dHB1dCBmb3IgdGhlIGdpdmVuCiAuSVIgIlRPS0VOIiAiKHMpLiIKIFRyeQpAQCAtNzUsMjQgKzc1LDI0IEBACiBmb3IgZXh0cmVtZWx5IHZlcmJvc2Ugb3V0cHV0LgogLlRQCiAuVFAKLS5CIC1oLCAtLWhlbHAKKy5CIFwtaCwgXC1cLWhlbHAKIERpc3BsYXkgYSBicmllZiB1c2FnZSBtZXNzYWdlIGFuZCB0aGVuIGV4aXQuCiAuVFAKLS5CIC1ICisuQiBcLUgKIERpc3BsYXkgYSBsaXN0IG9mIGNvbmZpZ3VyYXRpb24gZmlsZSBkaXJlY3RpdmVzIHVuZGVyc3Rvb2QgYnkgdGhlCiBjb21tYW5kIGFuZCB0aGVuIGV4aXQuCiAuVFAKLS5CSSAtSSAiIFticlJodV0iCisuQkkgXC1JICIgW2JyUmh1XSIKIFNwZWNpZmllcyBpbnB1dCBwYXJzaW5nIG9wdGlvbnMuIFNlZSAKIC5CIElOUFVUIE9QVElPTlMgCiBiZWxvdy4KIC5UUAotLkJJIC1MICIgW2VFZkZvT3NTXSIKKy5CSSBcLUwgIiBbZUVmRm9Pc1NdIgogU3BlY2lmaWVzIG91dHB1dCBsb2dnaW5nIG9wdGlvbnMuIFNlZSAKIC5CIExPR0dJTkcgT1BUSU9OUyAKIGJlbG93LgogLlRQCi0uQkkgLW0gIiBNSUJMSVNUIgorLkJJIFwtbSAiIE1JQkxJU1QiCiBTcGVjaWZpZXMgYSBjb2xvbiBzZXBhcmF0ZWQgbGlzdCBvZiBNSUIgbW9kdWxlcyAobm90IGZpbGVzKSB0byBsb2FkIGZvcgogdGhpcyBhcHBsaWNhdGlvbi4gIFRoaXMgb3ZlcnJpZGVzIChvciBhdWdtZW50cykgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCiBNSUJTLCB0aGUgXGZJc25tcC5jb25mXGZSIGRpcmVjdGl2ZSBcZkltaWJzXGZSLCBhbmQgdGhlIGxpc3Qgb2YgTUlCcwpAQCAtMTAwLDcgKzEwMCw3IEBACiAuSVAKIElmIAogLkkgTUlCTElTVAotaGFzIGEgbGVhZGluZyAnLScgb3IgJysnIGNoYXJhY3RlciwgdGhlbiB0aGUgTUlCIG1vZHVsZXMgbGlzdGVkIGFyZQoraGFzIGEgbGVhZGluZyAnXC0nIG9yICcrJyBjaGFyYWN0ZXIsIHRoZW4gdGhlIE1JQiBtb2R1bGVzIGxpc3RlZCBhcmUKIGxvYWRlZCBpbiBhZGRpdGlvbiB0byB0aGUgZGVmYXVsdCBsaXN0LCBjb21pbmcgYmVmb3JlIG9yIGFmdGVyCiB0aGlzIGxpc3QgcmVzcGVjdGl2ZWx5LgogT3RoZXJ3aXNlLCB0aGUgc3BlY2lmaWVkIE1JQnMgYXJlIGxvYWRlZCBcZklpbnN0ZWFkXGZSIG9mIHRoaXMKQEAgLTExMiw3ICsxMTIsNyBAQAogRXZlcnkgZmlsZSB3aG9zZSBuYW1lIGRvZXMgbm90IGJlZ2luIHdpdGggIi4iIHdpbGwgYmUgcGFyc2VkIGFzCiBpZiBpdCB3ZXJlIGEgTUlCIGZpbGUuCiAuVFAKLS5CSSAtTSAiIERJUkxJU1QiCisuQkkgXC1NICIgRElSTElTVCIKIFNwZWNpZmllcyBhIGNvbG9uIHNlcGFyYXRlZCBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIHNlYXJjaCBmb3IgTUlCcy4KIFRoaXMgb3ZlcnJpZGVzIChvciBhdWdtZW50cykgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIE1JQkRJUlMsCiB0aGUgXGZJc25tcC5jb25mXGZSIGRpcmVjdGl2ZSBcZkltaWJkaXJzXGZSLCBhbmQgdGhlIGRlZmF1bHQKQEAgLTEyMSw3ICsxMjEsNyBAQAogLklQCiBJZiAKIC5JIERJUkxJU1QKLWhhcyBhIGxlYWRpbmcgJy0nIG9yICcrJyBjaGFyYWN0ZXIsIHRoZW4gdGhlIGdpdmVuIGRpcmVjdG9yaWVzIGFyZQoraGFzIGEgbGVhZGluZyAnXC0nIG9yICcrJyBjaGFyYWN0ZXIsIHRoZW4gdGhlIGdpdmVuIGRpcmVjdG9yaWVzIGFyZQogYWRkZWQgdG8gdGhlIGRlZmF1bHQgbGlzdCwgYmVpbmcgc2VhcmNoZWQgYmVmb3JlIG9yIGFmdGVyIHRoZQogZGlyZWN0b3JpZXMgb24gdGhpcyBsaXN0IHJlc3BlY3RpdmVseS4KIE90aGVyd2lzZSwgdGhlIHNwZWNpZmllZCBkaXJlY3RvcmllcyBhcmUgc2VhcmNoZWQgXGZJaW5zdGVhZFxmUgpAQCAtMTM1LDQ2ICsxMzUsNDYgQEAKIFRvIGF2b2lkIHNlYXJjaGluZyBhbnkgTUlCIGRpcmVjdG9yaWVzLCBzZXQgdGhlIE1JQkRJUlMKIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHRoZSBlbXB0eSBzdHJpbmcgKCIiKS4KIC5cIgotLlwiIFhYWCAtIG9yICAgICAtTSAiIiAgICA/PworLlwiIFhYWCAtIG9yICAgICBcLU0gIiIgICAgPz8KIC5cIgogCi1Ob3RlIHRoYXQgTUlCcyBzcGVjaWZpZWQgdXNpbmcgdGhlIC1tIG9wdGlvbiBvciB0aGUgXGZJbWlic1xmUgorTm90ZSB0aGF0IE1JQnMgc3BlY2lmaWVkIHVzaW5nIHRoZSBcLW0gb3B0aW9uIG9yIHRoZSBcZkltaWJzXGZSCiBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZSB3aWxsIGJlIGxvYWRlZCBmcm9tIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXMKLWxpc3RlZCBieSB0aGUgLU0gb3B0aW9uIChvciBlcXVpdmFsZW50cykuCitsaXN0ZWQgYnkgdGhlIFwtTSBvcHRpb24gKG9yIGVxdWl2YWxlbnRzKS4KIFRoZSBcZkltaWJmaWxlXGZSIGRpcmVjdGl2ZSB0YWtlcyBhIGZ1bGwgcGF0aCB0byB0aGUgc3BlY2lmaWVkIE1JQgogZmlsZSwgc28gdGhpcyBkb2VzIG5vdCBuZWVkIHRvIGJlIGluIHRoZSBNSUIgZGlyZWN0b3J5IHNlYXJjaCBsaXN0LgogLlRQCi0uQiAtdiBcZkkxXGZSIHwgXGZJMmNcZlIgfCBcZkkzCisuQiBcLXYgXGZJMVxmUiB8IFxmSTJjXGZSIHwgXGZJMwogU3BlY2lmaWVzIHRoZSBwcm90b2NvbCB2ZXJzaW9uIHRvIHVzZTogMSAoUkZDcyAxMTU1LTExNTcpLCAyYyAoUkZDcyAxOTAxLTE5MDgpLAogb3IgMyAoUkZDcyAyNTcxLTI1NzQpLiAgVGhlIGRlZmF1bHQgaXMgdHlwaWNhbGx5IHZlcnNpb24gMy4KIE92ZXJyaWRlcyB0aGUgXGZJZGVmVmVyc2lvblxmUiB0b2tlbiBpbiB0aGUKIC5JIHNubXAuY29uZgogZmlsZS4KLS5CSSAtTyAiIFthYmVFZm5xUXNTdFR1VXZ4WF0iCisuQkkgXC1PICIgW2FiZUVmbnFRc1N0VHVVdnhYXSIKIFNwZWNpZmllcyBvdXRwdXQgcHJpbnRpbmcgb3B0aW9ucy4gU2VlIAogLkIgT1VUUFVUIE9QVElPTlMKIGJlbG93LgogLlRQCi0uQkkgLVAgIiBbY2RlUnV3V10iCisuQkkgXC1QICIgW2NkZVJ1d1ddIgogU3BlY2lmaWVzIE1JQiBwYXJzaW5nIG9wdGlvbnMuICBTZWUKIC5CIE1JQiBQQVJTSU5HIE9QVElPTlMKIGJlbG93LgogLlRQCi0uQkkgLXIgIiByZXRyaWVzIgorLkJJIFwtciAiIHJldHJpZXMiCiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiByZXRyaWVzIHRvIGJlIHVzZWQgaW4gdGhlIHJlcXVlc3RzLiBUaGUgZGVmYXVsdAogaXMgNS4KIC5UUAotLkJJIC10ICIgdGltZW91dCIKKy5CSSBcLXQgIiB0aW1lb3V0IgogU3BlY2lmaWVzIHRoZSB0aW1lb3V0IGluIHNlY29uZHMgYmV0d2VlbiByZXRyaWVzLiBUaGUgZGVmYXVsdCBpcyAxLgogRmxvYXRpbmcgcG9pbnQgbnVtYmVycyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGZyYWN0aW9ucyBvZiBzZWNvbmRzLgogLlRQCi0uQiAtViwgLS12ZXJzaW9uCisuQiBcLVYsIFwtXC12ZXJzaW9uCiBEaXNwbGF5IHZlcnNpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBhcHBsaWNhdGlvbiBhbmQgdGhlbiBleGl0LgogLlRQCi0uQkkgLVkgIm5hbWUiPSJ2YWx1ZSIKKy5CSSBcLVkgIm5hbWUiPSJ2YWx1ZSIKIC5UUAotLkJJIC0tICJuYW1lIj0idmFsdWUiCi1BbGxvd3MgdG8gc3BlY2lmeSBhbnkgdG9rZW4gKCJuYW1lIikgc3VwcG9ydGVkIGluIHRoZQorLkJJIFwtXC0gIm5hbWUiPSJ2YWx1ZSIKK0FsbG93cyBvbmUgdG8gc3BlY2lmeSBhbnkgdG9rZW4gKCJuYW1lIikgc3VwcG9ydGVkIGluIHRoZQogLkkgc25tcC5jb25mCiBmaWxlIGFuZCBzZXRzIGl0cyB2YWx1ZSB0byAidmFsdWUiLiBPdmVycmlkZXMgdGhlIGNvcnJlc3BvbmRpbmcgdG9rZW4gaW4gdGhlCiAuSSBzbm1wLmNvbmYKQEAgLTE4OSw3ICsxODksNyBAQAogKEQpVExTIHN1cHBvcnQuCiAKIC5UUAotLkJJIC1sICIgc2VjTGV2ZWwiCisuQkkgXC1sICIgc2VjTGV2ZWwiCiBTZXQgdGhlIHNlY3VyaXR5TGV2ZWwgdXNlZCBmb3IgU05NUHYzIG1lc3NhZ2VzCiAobm9BdXRoTm9Qcml2fGF1dGhOb1ByaXZ8YXV0aFByaXYpLiAgQXBwcm9wcmlhdGUgcGFzcyBwaHJhc2UocykgbXVzdAogcHJvdmlkZWQgd2hlbiB1c2luZyBhbnkgbGV2ZWwgaGlnaGVyIHRoYW4gbm9BdXRoTm9Qcml2LgpAQCAtMTk3LDcgKzE5Nyw3IEBACiAuSSBzbm1wLmNvbmYKIGZpbGUuCiAuVFAKLS5CSSAtbiAiIGNvbnRleHROYW1lIgorLkJJIFwtbiAiIGNvbnRleHROYW1lIgogU2V0IHRoZSBjb250ZXh0TmFtZSB1c2VkIGZvciBTTk1QdjMgbWVzc2FnZXMuICBUaGUgZGVmYXVsdAogY29udGV4dE5hbWUgaXMgdGhlIGVtcHR5IHN0cmluZyAiIi4gIE92ZXJyaWRlcyB0aGUgXGZJZGVmQ29udGV4dFxmUiB0b2tlbgogaW4gdGhlCkBAIC0yMTcsMzkgKzIxNywzOSBAQAogaXQgd2lsbCBsb29rIGluIH4vLnNubXAvdGxzIGFuZCBpbiAvdXNyL2xvY2FsL3NoYXJlL3NubXAvdGxzIGZvcgogY2VydGlmaWNhdGVzLiAgVGhlIGNlcnRpZmljYXRlIGNvbXBvbmVudHMgKGVnLCB0aGUgcHVibGljIGFuZCBwcml2YXRlCiBoYWx2ZXMpIGFyZSBzdG9yZWQgaW4gc3ViLWRpcmVjdG9yaWVzIHVuZGVybmVhdGggdGhpcyByb290IHNldCBvZgotZGlyZWN0b3JpZXMuICBTZWUgdGhlIG5ldC1zbm1wLWNlcnQgdG9vbCBmb3IgaGVscCBpbiBpbXBvcnRpbmcsCitkaXJlY3Rvcmllcy4gIFNlZSB0aGUgbmV0XC1zbm1wXC1jZXJ0IHRvb2wgZm9yIGhlbHAgaW4gaW1wb3J0aW5nLAogY3JlYXRpbmcgYW5kIG1hbmFnaW5nIE5ldC1TTk1QIGNlcnRpZmljYXRlcy4KIC5JICI8Y2VydGlmaWNhdGUtc3BlY2lmaWVyPnMiCiBjYW4gcmVmZXJlbmNlIGVpdGhlciBhIGZpbmdlcnByaW50IG9mIHRoZSBjZXJ0aWZpY2F0ZSB0byB1c2UgKHRoZQotbmV0LXNubXAtY2VydCB0b29sIGNhbiBoZWxwIHlvdSBmaWd1cmUgb3V0IHRoZSBjZXJ0aWZpY2F0ZXMpIG9yIHRoZQorbmV0XC1zbm1wXC1jZXJ0IHRvb2wgY2FuIGhlbHAgeW91IGZpZ3VyZSBvdXQgdGhlIGNlcnRpZmljYXRlcykgb3IgdGhlCiBmaWxlbmFtZSdzIHByZWZpeCBjYW4gYmUgdXNlZC4gIEZvciBleGFtcGxlLCBpZiB5b3UgaGFkIGEgInNubXBkLmNydCIKIGNlcnRpZmljYXRlIGZpbGUgdGhlbiB5b3UgY291bGQgc2ltcGx5IHJlZmVyIHRvIHRoZSBjZXJ0aWZpY2F0ZSB2aWEKIHRoZSAic25tcGQiIHNwZWNpZmllci4KIC5UUAotLkJJICItVCBvdXJfaWRlbnRpdHk9PGNlcnRpZmljYXRlLXNwZWNpZmllcj4iCisuQkkgIlwtVCBsb2NhbENlcnQ9PGNlcnRpZmljYXRlLXNwZWNpZmllcj4iCiBJbmRpY2F0ZXMgdG8gdGhlIHRyYW5zcG9ydCB3aGljaCBrZXkgc2hvdWxkIGJlIHVzZWQgdG8gaW5pdGlhdGUgKEQpVExTCiBjbGllbnQgY29ubmVjdGlvbnMuICBUaGlzIHdvdWxkIHR5cGljYWxseSBiZSBhIGNlcnRpZmljYXRlIGZvdW5kIHVzaW5nCi10aGUgYXBwbGljYXRpb24gbmFtZSAoZWcgc25tcGQsIHNubXB0cmFwZCwgcGVybCwgcHl0aG9uKSBvcgordGhlIGNlcnRpZmljYXRlIGZpbmdlcnByaW50LCB0aGUgYXBwbGljYXRpb24gbmFtZSAoZWcgc25tcGQsIHNubXB0cmFwZCwgcGVybCwgcHl0aG9uKSBvcgogZ2VuZXJpY2l6ZWQgbmFtZSAic25tcGFwcCIgaWYgdXNpbmcgb25lIG9mIHRoZSBnZW5lcmljIGFwcGxpY2F0aW9ucwogKHNubXBnZXQsIHNubXB3YWxrLCBldGMpLiAgVGhpcyBjYW4gYWxzbyBiZSBzZXQgdXNpbmcgdGhlCi1jbGllbnRDZXJ0IHNwZWNpZmllciBpbiBhIHNubXAuY29uZiBjb25maWd1cmF0aW9uIGZpbGUuCitsb2NhbENlcnQgc3BlY2lmaWVyIGluIGEgc25tcC5jb25mIGNvbmZpZ3VyYXRpb24gZmlsZS4KIC5UUAotLkJJICItVCB0aGVpcl9pZGVudGl0eT08Y2VydGlmaWNhdGUtc3BlY2lmaWVyPiIKKy5CSSAiXC1UIHBlZXJDZXJ0PTxjZXJ0aWZpY2F0ZS1zcGVjaWZpZXI+IgogSWYgeW91IGV4cGVjdCBhIHBhcnRpY3VsYXIgY2VydGlmaWNhdGUgdG8gYmUgcHJlc2VudGVkIGJ5IHRoZSBvdGhlcgogc2lkZSB0aGVuIHlvdSBjYW4gdXNlIHRoaXMgc3BlY2lmaWVyIHRvIGluZGljYXRlIHRoZSBjZXJ0aWZpY2F0ZSBpdAogc2hvdWxkIHByZXNlbnQuICBJZiBpdCBmYWlscyB0byBwcmVzZW50IHRoZSBleHBlY3RlZCBjZXJ0aWZpY2F0ZSB0aGUKIGNsaWVudCB3aWxsIHJlZnVzZSB0byBvcGVuIHRoZSBjb25uZWN0aW9uIChiZWNhdXNlIGRvaW5nIG90aGVyd2lzZQogY291bGQgbGVhZCB0byBtYW4taW4tdGhlLW1pZGRsZSBhdHRhY2tzKS4gIFRoaXMgY2FuIGFsc28gYmUgc2V0IHVzaW5nCi10aGUgc2VydmVyQ2VydCBzcGVjaWZpZXIgaW4gYSBzbm1wLmNvbmYgY29uZmlndXJhdGlvbiBmaWxlLgordGhlIHBlZXJDZXJ0IHNwZWNpZmllciBpbiBhIHNubXAuY29uZiBjb25maWd1cmF0aW9uIGZpbGUuCiAuVFAKLS5CSSAiLVQgdHJ1c3RfY2VydD08Y2VydGlmaWNhdGUtc3BlY2lmaWVyPiIKKy5CSSAiXC1UIHRydXN0X2NlcnQ9PGNlcnRpZmljYXRlLXNwZWNpZmllcj4iCiBJZiB5b3UgaGF2ZSBhIHRydXN0ZWQgQ0EgY2VydGlmaWNhdGUgeW91IHdpc2ggdG8gYW5jaG9yIHRydXN0IHdpdGgsCiB5b3UgY2FuIHVzZSB0aGlzIGZsYWcgdG8gbG9hZCBhIGdpdmVuIGNlcnRpZmljYXRlIGFzIGEgdHJ1c3QgYW5jaG9yLgogQSBjb3B5IG9mIHRoZSBjZXJ0aWZpY2F0ZSBtdXN0IGV4aXN0IHdpdGhpbiB0aGUgTmV0LVNOTVAgY2VydGlmaWNhdGUKIHN0b3JhZ2Ugc3lzdGVtIG9yIHRoaXMgbXVzdCBwb2ludCB0byBhIGNvbXBsZXRlIHBhdGggbmFtZS4gIEFsc28gc2VlCiB0aGUgInRydXN0Q2VydCIgc25tcC5jb25mIGNvbmZpZ3VyYXRpb24gdG9rZW4uCiAuVFAKLS5CSSAiLVQgdGhlaXJfaG9zdG5hbWU9PG5hbWU+IgorLkJJICJcLVQgdGhlaXJfaG9zdG5hbWU9PG5hbWU+IgogSWYgdGhlIHNlcnZlcidzIHByZXNlbnRlZCBjZXJ0aWZpY2F0ZSBjYW4gYmUgdmFsaWRhdGluZyB1c2luZyBhIHRydXN0CiBhbmNob3IgdGhlbiB0aGVpciBob3N0bmFtZSB3aWxsIGJlIGNoZWNrZWQgdG8gZW5zdXJlIHRoZWlyIHByZXNlbnRlZAogaG9zdG5hbWUgbWF0Y2hlcyBvbmUgdGhhdCBpcyBleHBlY3RlZCAoeW91IGRvbid0IHdhbnQgdG8gY29ubmVjdCB0bwpAQCAtMjYyLDI5ICsyNjIsMjkgQEAKIFRoZXNlIG9wdGlvbnMgYXJlIHNwZWNpZmljIHRvIHVzaW5nIFNOTVB2MyB3aXRoIHRoZSBvcmlnaW5hbAogVXNlci1iYXNlZCBTZWN1cml0eSBNb2RlbCAoVVNNKS4KIC5UUAotLkJJICItM1tNbUtrXSAgMHhIRVhLRVkiCisuQkkgIlwtM1tNbUtrXSAgMHhIRVhLRVkiCiBTZXRzIHRoZSBrZXlzIHRvIGJlIHVzZWQgZm9yIFNOTVB2MyB0cmFuc2FjdGlvbnMuICBUaGVzZSBvcHRpb25zIGFsbG93Ci15b3UgdG8gc2V0IHRoZSBtYXN0ZXIgYXV0aGVudGljYXRpb24gYW5kIGVuY3J5cHRpb24ga2V5cyAoLTNtIGFuZCAtM00KK3lvdSB0byBzZXQgdGhlIG1hc3RlciBhdXRoZW50aWNhdGlvbiBhbmQgZW5jcnlwdGlvbiBrZXlzIChcLTNtIGFuZCBcLTNNCiByZXNwZWN0aXZlbHkpIG9yIHNldCB0aGUgbG9jYWxpemVkIGF1dGhlbnRpY2F0aW9uIGFuZCBlbmNyeXB0aW9uIGtleXMKLSgtM2sgYW5kIC0zSyByZXNwZWN0aXZlbHkpLiAgU05NUHYzIGtleXMgY2FuIGJlIGVpdGhlciBwYXNzZWQgaW4gYnkKKyhcLTNrIGFuZCBcLTNLIHJlc3BlY3RpdmVseSkuICBTTk1QdjMga2V5cyBjYW4gYmUgZWl0aGVyIHBhc3NlZCBpbiBieQogaGFuZCB1c2luZyB0aGVzZSBmbGFncywgb3IgYnkgdGhlIHVzZSBvZiBrZXlzIGdlbmVyYXRlZCBmcm9tIHBhc3N3b3JkcwotdXNpbmcgdGhlIC1BIGFuZCAtWCBmbGFncyBkaXNjdXNzZWQgYmVsb3cuICBGb3IgZnVydGhlciBkZXRhaWxzIG9uCit1c2luZyB0aGUgXC1BIGFuZCBcLVggZmxhZ3MgZGlzY3Vzc2VkIGJlbG93LiAgRm9yIGZ1cnRoZXIgZGV0YWlscyBvbgogU05NUHYzIGFuZCBpdHMgdXNhZ2Ugb2Yga2V5aW5nIGluZm9ybWF0aW9uLCBzZWUgdGhlIE5ldC1TTk1QIHR1dG9yaWFsCi13ZWIgc2l0ZSAoIGh0dHA6Ly93d3cuTmV0LVNOTVAub3JnL3R1dG9yaWFsLTUvY29tbWFuZHMvICkuIAotT3ZlcnJpZGVzIHRoZSBkZWZBdXRoTWFzdGVyS2V5ICgtM20pLCBkZWZQcml2TWFzdGVyS2V5ICgtM00pLCAKLWRlZkF1dGhMb2NhbGl6ZWRLZXkgKC0zaykgb3IgZGVmUHJpdkxvY2FsaXplZEtleSAoLTNLKSB0b2tlbnMsIHJlc3BlY3RpdmVseSwgCit3ZWIgc2l0ZSAoIGh0dHA6Ly93d3cuTmV0XC1TTk1QLm9yZy90dXRvcmlhbFwtNS9jb21tYW5kcy8gKS4gCitPdmVycmlkZXMgdGhlIGRlZkF1dGhNYXN0ZXJLZXkgKFwtM20pLCBkZWZQcml2TWFzdGVyS2V5IChcLTNNKSwgCitkZWZBdXRoTG9jYWxpemVkS2V5IChcLTNrKSBvciBkZWZQcml2TG9jYWxpemVkS2V5IChcLTNLKSB0b2tlbnMsIHJlc3BlY3RpdmVseSwgCiBpbiB0aGUKIC5JIHNubXAuY29uZgogZmlsZSwgc2VlCiAuSSBzbm1wLmNvbmYoNSkuCiAuVFAKLS5CSSAtYSAiIGF1dGhQcm90b2NvbCIKKy5CSSBcLWEgIiBhdXRoUHJvdG9jb2wiCiBTZXQgdGhlIGF1dGhlbnRpY2F0aW9uIHByb3RvY29sIChNRDUgb3IgU0hBKSB1c2VkIGZvciBhdXRoZW50aWNhdGVkIFNOTVB2MwogbWVzc2FnZXMuIE92ZXJyaWRlcyB0aGUgXGZJZGVmQXV0aFR5cGVcZlIgdG9rZW4gaW4gdGhlCiAuSSBzbm1wLmNvbmYKIGZpbGUuCiAuVFAKLS5CSSAtQSAiIGF1dGhQYXNzd29yZCIKKy5CSSBcLUEgIiBhdXRoUGFzc3dvcmQiCiBTZXQgdGhlIGF1dGhlbnRpY2F0aW9uIHBhc3MgcGhyYXNlIHVzZWQgZm9yIGF1dGhlbnRpY2F0ZWQgU05NUHYzCiBtZXNzYWdlcy4gIE92ZXJyaWRlcyB0aGUgXGZJZGVmQXV0aFBhc3NwaHJhc2VcZlIgdG9rZW4gaW4gdGhlCiAuSSBzbm1wLmNvbmYKQEAgLTI5MiwzMSArMjkyLDMxIEBACiBzZWUKIC5JIHNubXAuY29uZig1KS4KIC5UUAotLkJJIC1lICIgZW5naW5lSUQiCisuQkkgXC1lICIgZW5naW5lSUQiCiBTZXQgdGhlIGF1dGhvcml0YXRpdmUgKHNlY3VyaXR5KSBlbmdpbmVJRCB1c2VkIGZvciBTTk1QdjMgUkVRVUVTVAogbWVzc2FnZXMsIGdpdmVuIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nIChvcHRpb25hbGx5IHByZWZpeGVkIGJ5ICIweCIpLgogSXQgaXMgdHlwaWNhbGx5IG5vdCBuZWNlc3NhcnkgdG8gc3BlY2lmeSB0aGlzIGVuZ2luZSBJRCwgYXMgaXQgd2lsbAogdXN1YWxseSBiZSBkaXNjb3ZlcmVkIGF1dG9tYXRpY2FsbHkuCiAuVFAKLS5CSSAtRSAiIGVuZ2luZUlEIgorLkJJIFwtRSAiIGVuZ2luZUlEIgogU2V0IHRoZSBjb250ZXh0IGVuZ2luZUlEIHVzZWQgZm9yIFNOTVB2MyBSRVFVRVNUIG1lc3NhZ2VzIHNjb3BlZFBkdSwKIGdpdmVuIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nLgogSWYgbm90IHNwZWNpZmllZCwgdGhpcyB3aWxsIGRlZmF1bHQgdG8gdGhlIGF1dGhvcml0YXRpdmUgZW5naW5lSUQuCiAuVFAKLS5CSSAtdSAiIHNlY05hbWUiCisuQkkgXC11ICIgc2VjTmFtZSIKIFNldCB0aGUgc2VjdXJpdHlOYW1lIHVzZWQgZm9yIGF1dGhlbnRpY2F0ZWQgU05NUHYzIG1lc3NhZ2VzLgogT3ZlcnJpZGVzIHRoZSBcZklkZWZTZWN1cml0eU5hbWVcZlIgdG9rZW4gaW4gdGhlCiAuSSBzbm1wLmNvbmYKIGZpbGUuCiAuVFAKLS5CSSAteCAiIHByaXZQcm90b2NvbCIKKy5CSSBcLXggIiBwcml2UHJvdG9jb2wiCiBTZXQgdGhlIHByaXZhY3kgcHJvdG9jb2wgKERFUyBvciBBRVMpIHVzZWQgZm9yIGVuY3J5cHRlZCBTTk1QdjMgbWVzc2FnZXMuIAogT3ZlcnJpZGVzIHRoZSBcZklkZWZQcml2VHlwZVxmUiB0b2tlbiBpbiB0aGUKIC5JIHNubXAuY29uZgogZmlsZS4gVGhpcyBvcHRpb24gaXMgb25seSB2YWxpZCBpZiB0aGUgTmV0LVNOTVAgc29mdHdhcmUgd2FzIGJ1aWxkCiB0byB1c2UgT3BlblNTTC4KIC5UUAotLkJJIC1YICIgcHJpdlBhc3N3b3JkIgorLkJJIFwtWCAiIHByaXZQYXNzd29yZCIKIFNldCB0aGUgcHJpdmFjeSBwYXNzIHBocmFzZSB1c2VkIGZvciBlbmNyeXB0ZWQgU05NUHYzIG1lc3NhZ2VzLgogT3ZlcnJpZGVzIHRoZSBcZklkZWZQcml2UGFzc3BocmFzZVxmUiB0b2tlbiBpbiB0aGUKIC5JIHNubXAuY29uZgpAQCAtMzI0LDcgKzMyNCw3IEBACiBJdCBpcyBpbnNlY3VyZSB0byBzcGVjaWZ5IHBhc3MgcGhyYXNlcyBvbiB0aGUgY29tbWFuZCBsaW5lLCBzZWUKIC5JIHNubXAuY29uZig1KS4KIC5UUAotLkJJIC1aICIgYm9vdHMsdGltZSIKKy5CSSBcLVogIiBib290cyx0aW1lIgogU2V0IHRoZSBlbmdpbmVCb290cyBhbmQgZW5naW5lVGltZSB1c2VkIGZvciBhdXRoZW50aWNhdGVkIFNOTVB2MwogbWVzc2FnZXMuICBUaGlzIHdpbGwgaW5pdGlhbGl6ZSB0aGUgbG9jYWwgbm90aW9uIG9mIHRoZSBhZ2VudHMKIGJvb3RzL3RpbWUgd2l0aCBhbiBhdXRoZW50aWNhdGVkIHZhbHVlIHN0b3JlZCBpbiB0aGUgTENELgpAQCAtMzM0LDcgKzMzNCw3IEBACiAKIC5TSCBTTk1QdjEgYW5kIFNOTVB2MmMgT3B0aW9ucyAKIC5UUAotLkJJIC1jICIgY29tbXVuaXR5IgorLkJJIFwtYyAiIGNvbW11bml0eSIKIFNldCB0aGUgY29tbXVuaXR5IHN0cmluZyBmb3IgU05NUHYxL3YyYyB0cmFuc2FjdGlvbnMuCiBPdmVycmlkZXMgdGhlIFxmSWRlZkNvbW11bml0eVxmUiB0b2tlbiBpbiB0aGUKIC5JIHNubXAuY29uZgpAQCAtNDQxLDcgKzQ0MSw3IEBACiAuSVIgInNzaDpob3N0bmFtZToyMiIKIENvbm5lY3RzIHVzaW5nIFNOTVAgb3ZlciBTU0ggYXMgZG9jdW1lbnRlZCBieSB0aGUgSVNNUyB3b3JraW5nIGdyb3VwCiAoUkZDcyBub3QgeWV0IHB1Ymxpc2hlZCBhcyBvZiB0aGlzIGRhdGUpLiAgVGhpcyB3aWxsIHJlcXVpcmUgdGhhdCB0aGUKLVRTTSBzZWN1cml0eSBtb2RlbCBpcyBpbiB1c2UgKC0tZGVmU2VjdXJpdHlNb2RlbD10c20pLgorVFNNIHNlY3VyaXR5IG1vZGVsIGlzIGluIHVzZSAoXC1cLWRlZlNlY3VyaXR5TW9kZWw9dHNtKS4KIC5UUCAyNAogLklSICJpcHg6OjAwRDBCN0FBRTMwOCIKIHBlcmZvcm0gcXVlcnkgdXNpbmcgSVBYIGRhdGFncmFtcyB0byBub2RlIG51bWJlciAKQEAgLTQ1NywxMiArNDU3LDEyIEBACiBvbiBuZXR3b3JrIG51bWJlcgogLklSIDBBRTQzNDA5IC4KIC5UUCAyNAotLklSICJ1bml4Oi90bXAvbG9jYWwtYWdlbnQiCisuSVIgInVuaXg6L3RtcC9sb2NhbFwtYWdlbnQiCiBjb25uZWN0IHRvIHRoZSBVbml4IGRvbWFpbiBzb2NrZXQgCi0uSVIgL3RtcC9sb2NhbC1hZ2VudCAsCisuSVIgL3RtcC9sb2NhbFwtYWdlbnQgLAogYW5kIHBlcmZvcm0gdGhlIHF1ZXJ5IG92ZXIgdGhhdCBjb25uZWN0aW9uLgogLlRQIDI0Ci0uSVIgIi90bXAvbG9jYWwtYWdlbnQiCisuSVIgIi90bXAvbG9jYWxcLWFnZW50IgogaWRlbnRpY2FsIHRvIHRoZSBwcmV2aW91cyBzcGVjaWZpY2F0aW9uLCBzaW5jZSB0aGUgVW5peCBkb21haW4gaXMgdGhlCiBkZWZhdWx0IHRyYW5zcG9ydCBpZmYgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgPHRyYW5zcG9ydC1hZGRyZXNzPgogaXMgYSAnLycuCkBAIC00OTksMjYgKzQ5OSwyNiBAQAogaW4gcmVjb2duaXRpb24gb2YgdGhlIChhaGVtKSBkaXZlcnNpdHkgaW4gY29tcGxpYW5jZSBleHByZXNzZWQgaW4gTUlCCiBmaWxlcywgYWRkaXRpb25hbCBvcHRpb25zIHByb3ZpZGUgbW9yZSBmbGV4aWJpbGl0eSBpbiByZWFkaW5nIE1JQiBmaWxlcy4KIC5UUAotLkIgIi1QYyIKKy5CICJcLVBjIgogVG9nZ2xlcyB3aGV0aGVyIEFTTi4xIGNvbW1lbnRzIHNob3VsZCBleHRlbmQgdG8gdGhlIGVuZCBvZiB0aGUgTUlCCiBzb3VyY2UgbGluZS4KLVN0cmljdGx5IHNwZWFraW5nLCBhIHNlY29uZCBhcHBlYXJhbmNlIG9mICItLSIgc2hvdWxkIHRlcm1pbmF0ZSB0aGUKK1N0cmljdGx5IHNwZWFraW5nLCBhIHNlY29uZCBhcHBlYXJhbmNlIG9mICJcLVwtIiBzaG91bGQgdGVybWluYXRlIHRoZQogY29tbWVudCwgYnV0IHRoaXMgYnJlYWtzIHNvbWUgTUlCIGZpbGVzLgogVGhlIGRlZmF1bHQgYmVoYXZpb3VyICh0byBpbnRlcnByZXQgY29tbWVudHMgY29ycmVjdGx5KSBjYW4gYWxzbwogYmUgc2V0IHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gdG9rZW4gXGZJY29tbWVudFRvRU9MXGZSLgogLlRQCi0uQiAiLVBkIgorLkIgIlwtUGQiCiBEaXNhYmxlcyB0aGUgbG9hZGluZyBvZiBNSUIgb2JqZWN0IERFU0NSSVBUSU9OcyB3aGVuIHBhcnNpbmcgTUlCIGZpbGVzLgogVGhpcyByZWR1Y2VzIHRoZSBhbW91bnQgb2YgbWVtb3J5IHVzZWQgYnkgdGhlIHJ1bm5pbmcgYXBwbGljYXRpb24uCiAuVFAKLS5CICItUGUiCisuQiAiXC1QZSIKIFRvZ2dsZXMgd2hldGhlciB0byBzaG93IGVycm9ycyBlbmNvdW50ZXJlZCB3aGVuIHBhcnNpbmcgTUlCIGZpbGVzLgogVGhlc2UgaW5jbHVkZQogcmVmZXJlbmNlcyB0byBJTVBPUlRlZCBtb2R1bGVzIGFuZCBNSUIgb2JqZWN0cyB0aGF0IGNhbm5vdCBiZQogbG9jYXRlZCBpbiB0aGUgTUlCIGRpcmVjdG9yeSBzZWFyY2ggbGlzdC4KIFRoZSBkZWZhdWx0IGJlaGF2aW91ciBjYW4gYWxzbyBiZSBzZXQgd2l0aCB0aGUgY29uZmlndXJhdGlvbiB0b2tlbiBcZklzaG93TWliRXJyb3JzXGZSLgogLlRQCi0uQiAiLVBSIgorLkIgIlwtUFIiCiBJZiB0aGUgc2FtZSBNSUIgb2JqZWN0IChwYXJlbnQgbmFtZSBhbmQgc3ViLWlkZW50aWZpZXIpIGFwcGVhcnMgbXVsdGlwbGUKIHRpbWVzIGluIHRoZSBsaXN0IG9mIE1JQiBkZWZpbml0aW9ucyBsb2FkZWQsIHVzZSB0aGUgbGFzdCB2ZXJzaW9uIHRvIGJlCiByZWFkIGluLiAgQnkgZGVmYXVsdCwgdGhlIGZpcnN0IHZlcnNpb24gd2lsbCBiZSB1c2VkLCBhbmQgYW55IGR1cGxpY2F0ZXMKQEAgLTUzMiwyMCArNTMyLDIwIEBACiAuXCIgU2V0dGluZyB0aGlzIG9wdGlvbiBtYXkgcmVzdWx0IGluIGFuIGluY29ycmVjdCBoaWVyYXJjaHkuCiAuXCIgWFhYIC0gV2h5PwogLlRQCi0uQiAiLVB1IgorLkIgIlwtUHUiCiBUb2dnbGVzIHdoZXRoZXIgdG8gYWxsb3cgdGhlIHVuZGVybGluZSBjaGFyYWN0ZXIgaW4gTUlCIG9iamVjdCBuYW1lcwogYW5kIG90aGVyIHN5bWJvbHMuCiBTdHJpY3RseSBzcGVha2luZywgdGhpcyBpcyBub3QgdmFsaWQgU01JIHN5bnRheCwgYnV0IHNvbWUgdmVuZG9yIE1JQgogZmlsZXMgZGVmaW5lIHN1Y2ggbmFtZXMuCiBUaGUgZGVmYXVsdCBiZWhhdmlvdXIgY2FuIGFsc28gYmUgc2V0IHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gdG9rZW4gXGZJbWliQWxsb3dVbmRlcmxpbmVcZlIuCiAuVFAKLS5CICItUHciCisuQiAiXC1QdyIKIFNob3cgdmFyaW91cyB3YXJuaW5nIG1lc3NhZ2VzIGluIHBhcnNpbmcgTUlCIGZpbGVzIGFuZCBidWlsZGluZwogdGhlIG92ZXJhbGwgT0lEIHRyZWUuCiBUaGlzIGNhbiBhbHNvIGJlIHNldCB3aXRoIHRoZSBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZQogXGZJbWliV2FybmluZ0xldmVsIDFcZlIKIC5UUAotLkIgIi1QVyIKKy5CICJcLVBXIgogU2hvdyBzb21lIGFkZGl0aW9uYWwgd2FybmluZyBtZXNzYWdlcywgbW9zdGx5IHJlbGF0aW5nIHRvIHBhcnNpbmcKIGluZGl2aWR1YWwgTUlCIG9iamVjdHMuCiBUaGlzIGNhbiBhbHNvIGJlIHNldCB3aXRoIHRoZSBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZQpAQCAtNTUzLDEwNyArNTUzLDEwNyBAQAogCiAuU0ggIk9VVFBVVCBPUFRJT05TIgogVGhlIGZvcm1hdCBvZiB0aGUgb3V0cHV0IGZyb20gU05NUCBjb21tYW5kcyBjYW4gYmUgY29udHJvbGxlZCB1c2luZwotdmFyaW91cyBwYXJhbWV0ZXJzIG9mIHRoZSBcZkItT1xmUiBmbGFnLgordmFyaW91cyBwYXJhbWV0ZXJzIG9mIHRoZSBcZkJcLU9cZlIgZmxhZy4KIFRoZSBlZmZlY3RzIG9mIHRoZXNlIHN1Yi1vcHRpb25zIGNhbiBiZSBzZWVuIGJ5IGNvbXBhcmlzb24gd2l0aAogdGhlIGZvbGxvd2luZyBkZWZhdWx0IG91dHB1dCAodW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQpOgogLlJTCiAubmYKLVxmQyQgc25tcGdldCAtYyBwdWJsaWMgLXYgMSBsb2NhbGhvc3Qgc3lzVXBUaW1lLjAKLVNOTVB2Mi1NSUI6OnN5c1VwVGltZS4wID0gVGltZXRpY2tzOiAoMTQwOTY3NjMpIDEgZGF5LCAxNTowOToyNy42M1xmUgorXGZDJCBzbm1wZ2V0IFwtYyBwdWJsaWMgXC12IDEgbG9jYWxob3N0IHN5c1VwVGltZS4wCitTTk1QdjJcLU1JQjo6c3lzVXBUaW1lLjAgPSBUaW1ldGlja3M6ICgxNDA5Njc2MykgMSBkYXksIDE1OjA5OjI3LjYzXGZSCiAuZmkKIC5SRQogCiAuVFAKLS5CIC1PYQorLkIgXC1PYQogRGlzcGxheSBzdHJpbmcgdmFsdWVzIGFzIEFTQ0lJIHN0cmluZ3MgKHVubGVzcyB0aGVyZSBpcyBhIAotXGZDRElTUExBWS1ISU5UXGZSIGRlZmluZWQgZm9yIHRoZSBjb3JyZXNwb25kaW5nIE1JQiBvYmplY3QpLgorXGZDRElTUExBWVwtSElOVFxmUiBkZWZpbmVkIGZvciB0aGUgY29ycmVzcG9uZGluZyBNSUIgb2JqZWN0KS4KIEJ5IGRlZmF1bHQsIHRoZSBsaWJyYXJ5IGF0dGVtcHRzIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSB2YWx1ZSBpcwogYSBwcmludGFibGUgb3IgYmluYXJ5IHN0cmluZywgYW5kIGRpc3BsYXlzIGl0IGFjY29yZGluZ2x5LgogCiBUaGlzIG9wdGlvbiBkb2VzIG5vdCBhZmZlY3Qgb2JqZWN0cyB0aGF0IFxmSWRvXGZSIGhhdmUgYSBEaXNwbGF5IEhpbnQuCiAuVFAKLS5CIC1PYgorLkIgXC1PYgogRGlzcGxheSB0YWJsZSBpbmRleGVzIG51bWVyaWNhbGx5LCByYXRoZXIgdGhhbiB0cnlpbmcgdG8gaW50ZXJwcmV0CiB0aGUgaW5zdGFuY2Ugc3ViaWRlbnRpZmllcnMgYXMgc3RyaW5nIG9yIE9JRCB2YWx1ZXM6CiAuUlMKIC5uZgotXGZDICAgICQgc25tcGdldG5leHQgLWMgcHVibGljIC12IDEgbG9jYWxob3N0IHZhY21TZWN1cml0eU1vZGVsCi0gICAgU05NUC1WSUVXLUJBU0VELUFDTS1NSUI6OnZhY21TZWN1cml0eU1vZGVsLjAuIndlcyIgPSB4eHgKLSAgICAkIHNubXBnZXRuZXh0IC1jIHB1YmxpYyAtdiAxIFxmQi1PYlxmUCBsb2NhbGhvc3QgdmFjbVNlY3VyaXR5TW9kZWwKLSAgICBTTk1QLVZJRVctQkFTRUQtQUNNLU1JQjo6dmFjbVNlY3VyaXR5TW9kZWwuMC4zLjExOS4xMDEuMTE1ID0geHh4XGZSCitcZkMgICAgJCBzbm1wZ2V0bmV4dCBcLWMgcHVibGljIFwtdiAxIGxvY2FsaG9zdCB2YWNtU2VjdXJpdHlNb2RlbAorICAgIFNOTVBcLVZJRVdcLUJBU0VEXC1BQ01cLU1JQjo6dmFjbVNlY3VyaXR5TW9kZWwuMC4id2VzIiA9IHh4eAorICAgICQgc25tcGdldG5leHQgXC1jIHB1YmxpYyBcLXYgMSBcZkJcLU9iXGZQIGxvY2FsaG9zdCB2YWNtU2VjdXJpdHlNb2RlbAorICAgIFNOTVBcLVZJRVdcLUJBU0VEXC1BQ01cLU1JQjo6dmFjbVNlY3VyaXR5TW9kZWwuMC4zLjExOS4xMDEuMTE1ID0geHh4XGZSCiAuZmkKIC5SRQogLlRQCi0uQiAtT2UKKy5CIFwtT2UKIFJlbW92ZXMgdGhlIHN5bWJvbGljIGxhYmVscyBmcm9tIGVudW1lcmF0aW9uIHZhbHVlczoKIC5SUwogLm5mCi1cZkMgICAgJCBzbm1wZ2V0IC1jIHB1YmxpYyAtdiAxIGxvY2FsaG9zdCBpcEZvcndhcmRpbmcuMAotICAgIElQLU1JQjo6aXBGb3J3YXJkaW5nLjAgPSBJTlRFR0VSOiBmb3J3YXJkaW5nKDEpCi1cZkMgICAgJCBzbm1wZ2V0IC1jIHB1YmxpYyAtdiAxIFxmQi1PZVxmUCBsb2NhbGhvc3QgaXBGb3J3YXJkaW5nLjAKLSAgICBJUC1NSUI6OmlwRm9yd2FyZGluZy4wID0gSU5URUdFUjogMVxmUgorXGZDICAgICQgc25tcGdldCBcLWMgcHVibGljIFwtdiAxIGxvY2FsaG9zdCBpcEZvcndhcmRpbmcuMAorICAgIElQXC1NSUI6OmlwRm9yd2FyZGluZy4wID0gSU5URUdFUjogZm9yd2FyZGluZygxKQorXGZDICAgICQgc25tcGdldCBcLWMgcHVibGljIFwtdiAxIFxmQlwtT2VcZlAgbG9jYWxob3N0IGlwRm9yd2FyZGluZy4wCisgICAgSVBcLU1JQjo6aXBGb3J3YXJkaW5nLjAgPSBJTlRFR0VSOiAxXGZSCiAuZmkKIC5SRQogLlRQCi0uQiAtT0UKKy5CIFwtT0UKIE1vZGlmaWVzIGluZGV4IHN0cmluZ3MgdG8gZXNjYXBlIHRoZSBxdW90ZSBjaGFyYWN0ZXJzOgogLlJTCiAubmYKLVxmQyAgICAkIHNubXBnZXRuZXh0IC1jIHB1YmxpYyAtdiAxIGxvY2FsaG9zdCB2YWNtU2VjdXJpdHlNb2RlbAotICAgIFNOTVAtVklFVy1CQVNFRC1BQ00tTUlCOjp2YWNtU2VjdXJpdHlNb2RlbC4wLiJ3ZXMiID0geHh4Ci0gICAgJCBzbm1wZ2V0bmV4dCAtYyBwdWJsaWMgLXYgMSBcZkItT0VcZlAgbG9jYWxob3N0IHZhY21TZWN1cml0eU1vZGVsCi0gICAgU05NUC1WSUVXLUJBU0VELUFDTS1NSUI6OnZhY21TZWN1cml0eU1vZGVsLjAuXFwid2VzXFwiID0geHh4XGZSCitcZkMgICAgJCBzbm1wZ2V0bmV4dCBcLWMgcHVibGljIFwtdiAxIGxvY2FsaG9zdCB2YWNtU2VjdXJpdHlNb2RlbAorICAgIFNOTVBcLVZJRVdcLUJBU0VEXC1BQ01cLU1JQjo6dmFjbVNlY3VyaXR5TW9kZWwuMC4id2VzIiA9IHh4eAorICAgICQgc25tcGdldG5leHQgXC1jIHB1YmxpYyBcLXYgMSBcZkJcLU9FXGZQIGxvY2FsaG9zdCB2YWNtU2VjdXJpdHlNb2RlbAorICAgIFNOTVBcLVZJRVdcLUJBU0VEXC1BQ01cLU1JQjo6dmFjbVNlY3VyaXR5TW9kZWwuMC5cXCJ3ZXNcXCIgPSB4eHhcZlIKIC5maQogLlJFCiAuSVAKIFRoaXMgYWxsb3dzIHRoZSBvdXRwdXQgdG8gYmUgcmV1c2VkIGluIHNoZWxsIGNvbW1hbmRzLgogLlRQCi0uQiAtT2YKKy5CIFwtT2YKIEluY2x1ZGUgdGhlIGZ1bGwgbGlzdCBvZiBNSUIgb2JqZWN0cyB3aGVuIGRpc3BsYXlpbmcgYW4gT0lEOgogLlJTCi1cZkMgICAgLmlzby5vcmcuZG9kLmludGVybmV0Lm1nbXQubWliLTIuc3lzdGVtLnN5c1VwVGltZS4wID1cZlIKK1xmQyAgICAuaXNvLm9yZy5kb2QuaW50ZXJuZXQubWdtdC5taWJcLTIuc3lzdGVtLnN5c1VwVGltZS4wID1cZlIKIC5SUwogXGZDICAgICAgICBUaW1ldGlja3M6ICgxNDA5Njc2MykgMSBkYXksIDE1OjA5OjI3LjYzXGZSCiAuUkUKIC5SRQogLlRQCi0uQiAtT24KKy5CIFwtT24KIERpc3BsYXlzIHRoZSBPSUQgbnVtZXJpY2FsbHk6CiAuYnIKIFxmQyAgICAuMS4zLjYuMS4yLjEuMS4zLjAgPSBUaW1ldGlja3M6ICgxNDA5Njc2MykgMSBkYXksIDE1OjA5OjI3LjYzXGZSCiAuVFAKLS5CIC1PcQorLkIgXC1PcQogUmVtb3ZlcyB0aGUgZXF1YWwgc2lnbiBhbmQgdHlwZSBpbmZvcm1hdGlvbiB3aGVuIGRpc3BsYXlpbmcgdmFyYmluZCB2YWx1ZXM6CiAuYnIKLVxmQyAgICBTTk1QdjItTUlCOjpzeXNVcFRpbWUuMCAxOjE1OjA5OjI3LjYzXGZSCitcZkMgICAgU05NUHYyXC1NSUI6OnN5c1VwVGltZS4wIDE6MTU6MDk6MjcuNjNcZlIKIC5UUAotLkIgLU9RCisuQiBcLU9RCiBSZW1vdmVzIHRoZSB0eXBlIGluZm9ybWF0aW9uIHdoZW4gZGlzcGxheWluZyB2YXJiaW5kIHZhbHVlczoKIC5icgotXGZDICAgIFNOTVB2Mi1NSUI6OnN5c1VwVGltZS4wID0gMToxNTowOToyNy42M1xmUgorXGZDICAgIFNOTVB2MlwtTUlCOjpzeXNVcFRpbWUuMCA9IDE6MTU6MDk6MjcuNjNcZlIKIC5UUAotLkIgLU9zCisuQiBcLU9zCiBEaXNwbGF5IHRoZSBNSUIgb2JqZWN0IG5hbWUgKHBsdXMgYW55IGluc3RhbmNlIG9yIG90aGVyIHN1YmlkZW50aWZpZXJzKToKIC5icgogXGZDICAgIHN5c1VwVGltZS4wID0gVGltZXRpY2tzOiAoMTQwOTY3NjMpIDEgZGF5LCAxNTowOToyNy42M1xmUgogLlRQCi0uQiAtT1MKKy5CIFwtT1MKIERpc3BsYXkgdGhlIG5hbWUgb2YgdGhlIE1JQiwgYXMgd2VsbCBhcyB0aGUgb2JqZWN0IG5hbWU6CiAuYnIKLVxmQyAgICBTTk1QdjItTUlCOjpzeXNVcFRpbWUuMCA9IFRpbWV0aWNrczogKDE0MDk2NzYzKSAxIGRheSwgMTU6MDk6MjcuNjNcZlIKK1xmQyAgICBTTk1QdjJcLU1JQjo6c3lzVXBUaW1lLjAgPSBUaW1ldGlja3M6ICgxNDA5Njc2MykgMSBkYXksIDE1OjA5OjI3LjYzXGZSCiAuSVAKIFRoaXMgaXMgdGhlIGRlZmF1bHQgT0lEIG91dHB1dCBmb3JtYXQuCiAuVFAKLS5CIC1PdAorLkIgXC1PdAogRGlzcGxheSBcZkNUaW1lVGlja3NcZlIgdmFsdWVzIGFzIHJhdyBudW1iZXJzOgogLmJyCi1cZkMgICAgU05NUHYyLU1JQjo6c3lzVXBUaW1lLjAgPSAxNDA5Njc2M1xmUgorXGZDICAgIFNOTVB2MlwtTUlCOjpzeXNVcFRpbWUuMCA9IDE0MDk2NzYzXGZSCiAuVFAKLS5CIC1PVAorLkIgXC1PVAogSWYgdmFsdWVzIGFyZSBwcmludGVkIGFzIEhleCBzdHJpbmdzLAogZGlzcGxheSBhIHByaW50YWJsZSB2ZXJzaW9uIGFzIHdlbGwuCiAuVFAKLS5CIC1PdQorLkIgXC1PdQogRGlzcGxheSB0aGUgT0lEIGluIHRoZSB0cmFkaXRpb25hbCBVQ0Qtc3R5bGUgKGluaGVyaXRlZCBmcm9tIHRoZSBvcmlnaW5hbAogQ01VIGNvZGUpLgogVGhhdCBtZWFucyByZW1vdmluZyBhIHNlcmllcyBvZiAic3RhbmRhcmQiIHByZWZpeGVzIGZyb20gdGhlIE9JRCwKQEAgLTY2MiwzNSArNjYyLDM1IEBACiAuYnIKIFxmQyAgICBzeXN0ZW0uc3lzVXBUaW1lLjAgPSBUaW1ldGlja3M6ICgxNDA5Njc2MykgMSBkYXksIDE1OjA5OjI3LjYzXGZSCiAuVFAKLS5CIC1PVQorLkIgXC1PVQogRG8gbm90IHByaW50IHRoZSBVTklUUyBzdWZmaXggYXQgdGhlIGVuZCBvZiB0aGUgdmFsdWUuCiAuVFAKLS5CIC1PdgorLkIgXC1PdgogRGlzcGxheSB0aGUgdmFyYmluZCB2YWx1ZSBvbmx5LCBub3QgdGhlIE9JRDoKIC5SUwogLm5mCi1cZkMgICAgJCBzbm1wZ2V0IC1jIHB1YmxpYyAtdiAxIFxmQi1PdlxmUCBsb2NhbGhvc3QgaXBGb3J3YXJkaW5nLjAKK1xmQyAgICAkIHNubXBnZXQgXC1jIHB1YmxpYyBcLXYgMSBcZkJcLU92XGZQIGxvY2FsaG9zdCBpcEZvcndhcmRpbmcuMAogICAgIElOVEVHRVI6IGZvcndhcmRpbmcoMSlcZlIKIC5maQogLlJFCiAuVFAKLS5CIC1PeAorLkIgXC1PeAogRGlzcGxheSBzdHJpbmcgdmFsdWVzIGFzIEhleCBzdHJpbmdzICh1bmxlc3MgdGhlcmUgaXMgYSAKLVxmQ0RJU1BMQVktSElOVFxmUiBkZWZpbmVkIGZvciB0aGUgY29ycmVzcG9uZGluZyBNSUIgb2JqZWN0KS4KK1xmQ0RJU1BMQVlcLUhJTlRcZlIgZGVmaW5lZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgTUlCIG9iamVjdCkuCiBCeSBkZWZhdWx0LCB0aGUgbGlicmFyeSBhdHRlbXB0cyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgdmFsdWUgaXMKIGEgcHJpbnRhYmxlIG9yIGJpbmFyeSBzdHJpbmcsIGFuZCBkaXNwbGF5cyBpdCBhY2NvcmRpbmdseS4KIAogVGhpcyBvcHRpb24gZG9lcyBub3QgYWZmZWN0IG9iamVjdHMgdGhhdCBcZklkb1xmUiBoYXZlIGEgRGlzcGxheSBIaW50LgogLlRQCi0uQiAtT1gKKy5CIFwtT1gKIERpc3BsYXkgdGFibGUgaW5kZXhlcyBpbiBhIG1vcmUgInByb2dyYW0gbGlrZSIgb3V0cHV0LCBpbWl0YXRpbmcKIGEgdHJhZGl0aW9uYWwgYXJyYXktc3R5bGUgaW5kZXggZm9ybWF0OgogLlJTCiAubmYKLVxmQyAgICAkIHNubXBnZXRuZXh0IC1jIHB1YmxpYyAtdiAxIGxvY2FsaG9zdCBpcHY2Um91dGVUYWJsZQotICAgIElQdjYtTUlCOjppcHY2Um91dGVJZkluZGV4LjYzLjI1NC4xLjAuMjU1LjAuMC4wLjAuMC4wLjAuMC4wLjAuMC42NC4xID0gSU5URUdFUjogMgotICAgICQgc25tcGdldG5leHQgLWMgcHVibGljIC12IDEgXGZCLU9YXGZQIGxvY2FsaG9zdCBpcHY2Um91dGVUYWJsZQotICAgIElQdjYtTUlCOjppcHY2Um91dGVJZkluZGV4WzNmZmU6MTAwOmZmMDA6MDowOjA6MDowXVs2NF1bMV0gPSBJTlRFR0VSOiAyCitcZkMgICAgJCBzbm1wZ2V0bmV4dCBcLWMgcHVibGljIFwtdiAxIGxvY2FsaG9zdCBpcHY2Um91dGVUYWJsZQorICAgIElQdjZcLU1JQjo6aXB2NlJvdXRlSWZJbmRleC42My4yNTQuMS4wLjI1NS4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuNjQuMSA9IElOVEVHRVI6IDIKKyAgICAkIHNubXBnZXRuZXh0IFwtYyBwdWJsaWMgXC12IDEgXGZCXC1PWFxmUCBsb2NhbGhvc3QgaXB2NlJvdXRlVGFibGUKKyAgICBJUHY2XC1NSUI6OmlwdjZSb3V0ZUlmSW5kZXhbM2ZmZToxMDA6ZmYwMDowOjA6MDowOjBdWzY0XVsxXSA9IElOVEVHRVI6IDIKIC5maQogLlJFCiAuUFAKQEAgLTcwMiwxOSArNzAyLDE5IEBACiAuU0ggIkxPR0dJTkcgT1BUSU9OUyIKIFRoZSBtZWNoYW5pc20gYW5kIGRlc3RpbmF0aW9uIHRvIHVzZSBmb3IgbG9nZ2luZyBvZiB3YXJuaW5nIGFuZCBlcnJvcgogbWVzc2FnZXMgY2FuIGJlIGNvbnRyb2xsZWQgYnkgcGFzc2luZyB2YXJpb3VzIHBhcmFtZXRlcnMgdG8gdGhlCi0uQiAtTAorLkIgXC1MCiBmbGFnLgogLlRQCi0uQiAtTGUKKy5CIFwtTGUKIExvZyBtZXNzYWdlcyB0byB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtLgogLlRQCi0uQiAtTGYgRklMRQorLkIgXC1MZiBGSUxFCiBMb2cgbWVzc2FnZXMgdG8gdGhlIHNwZWNpZmllZCBmaWxlLgogLlRQCi0uQiAtTG8KKy5CIFwtTG8KIExvZyBtZXNzYWdlcyB0byB0aGUgc3RhbmRhcmQgb3V0cHV0IHN0cmVhbS4KIC5UUAotLkIgLUxzIEZBQ0lMSVRZCisuQiBcLUxzIEZBQ0lMSVRZCiBMb2cgbWVzc2FnZXMgdmlhIHN5c2xvZywgdXNpbmcgdGhlIHNwZWNpZmllZCBmYWNpbGl0eQogKCdkJyBmb3IgTE9HX0RBRU1PTiwgJ3UnIGZvciBMT0dfVVNFUiwKIG9yICcwJy0nNycgZm9yIExPR19MT0NBTDAgdGhyb3VnaCBMT0dfTE9DQUw3KS4KQEAgLTcyNCwxNyArNzI0LDE3IEBACiBhbGxvdyB0aGUgY29ycmVzcG9uZGluZyBsb2dnaW5nIG1lY2hhbmlzbSB0byBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4KIHByaW9yaXRpZXMgb2YgbWVzc2FnZS4gIFVzaW5nIHN0YW5kYXJkIGVycm9yIGxvZ2dpbmcgYXMgYW4gZXhhbXBsZToKIC5UUAotLkIgLUxFIHByaQorLkIgXC1MRSBwcmkKIHdpbGwgbG9nIG1lc3NhZ2VzIG9mIHByaW9yaXR5ICdwcmknIGFuZCBhYm92ZSB0byBzdGFuZGFyZCBlcnJvci4KIC5UUAotLkIgLUxFIHAxLXAyCisuQiBcLUxFIHAxXC1wMgogd2lsbCBsb2cgbWVzc2FnZXMgd2l0aCBwcmlvcml0eSBiZXR3ZWVuICdwMScgYW5kICdwMicgKGluY2x1c2l2ZSkgdG8KIHN0YW5kYXJkIGVycm9yLgogLlBQCiBGb3IKLS5CIC1MRgorLkIgXC1MRgogYW5kCi0uQiAtTFMKKy5CIFwtTFMKIHRoZSBwcmlvcml0eSBzcGVjaWZpY2F0aW9uIGNvbWVzIGJlZm9yZSB0aGUgZmlsZSBvciBmYWNpbGl0eSB0b2tlbi4KIFRoZSBwcmlvcml0aWVzIHJlY29nbmlzZWQgYXJlOgogLklQCkBAIC03ODMsMTAgKzc4MywxMCBAQAogCiAuU0ggIklOUFVUIE9QVElPTlMiCiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgaW5wdXQgb2JqZWN0IG5hbWVzIGFuZCB0aGUgdmFsdWVzIHRvIGJlIGFzc2lnbmVkCi1jYW4gYmUgY29udHJvbGxlZCB1c2luZyB2YXJpb3VzIHBhcmFtZXRlcnMgb2YgdGhlIFxmQi1JXGZSIGZsYWcuCitjYW4gYmUgY29udHJvbGxlZCB1c2luZyB2YXJpb3VzIHBhcmFtZXRlcnMgb2YgdGhlIFxmQlwtSVxmUiBmbGFnLgogVGhlIGRlZmF1bHQgYmVoYXZpb3VyIHdpbGwgYmUgZGVzY3JpYmVkIGF0IHRoZSBlbmQgb2YgdGhpcyBzZWN0aW9uLgogLlRQCi0uQiAtSWIKKy5CIFwtSWIKIHNwZWNpZmllcyB0aGF0IHRoZSBnaXZlbiBuYW1lIHNob3VsZCBiZSByZWdhcmRlZCBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiwKIHRvIG1hdGNoIChjYXNlLWluc2Vuc2l0aXZlbHkpIGFnYWluc3Qgb2JqZWN0IG5hbWVzIGluIHRoZSBNSUIgdHJlZS4KIFRoZSAiYmVzdCIgbWF0Y2ggd2lsbCBiZSB1c2VkIC0gY2FsY3VsYXRlZCBhcyB0aGUgb25lIHRoYXQgbWF0Y2hlcyB0aGUKQEAgLTgwNywyMyArODA3LDIzIEBACiBpbnN0YW5jZSBcZkNzeXNDb250YWN0LjBcZlIgKGFsdGhvdWdoIFxmSXN5cypvbnRhY3RcZlIgd291bGQgbWF0Y2gKIFxmQ3N5c0NvbnRhY3RcZlIpLgogU2ltaWxhcmx5LCBzcGVjaWZ5aW5nIGEgTUlCIG1vZHVsZSBuYW1lIHdpbGwgbm90IHN1Y2NlZWQKLShzbyBcZklTTk1QdjItTUlCOjpzeXMuKm9udGFjdFxmUiB3b3VsZCBub3QgbWF0Y2ggZWl0aGVyKS4KKyhzbyBcZklTTk1QdjJcLU1JQjo6c3lzLipvbnRhY3RcZlIgd291bGQgbm90IG1hdGNoIGVpdGhlcikuCiAuVFAKLS5CIC1JaAotZGlzYWJsZXMgdGhlIHVzZSBvZiBESVNQTEFZLUhJTlQgaW5mb3JtYXRpb24gd2hlbiBhc3NpZ25pbmcgdmFsdWVzLgorLkIgXC1JaAorZGlzYWJsZXMgdGhlIHVzZSBvZiBESVNQTEFZXC1ISU5UIGluZm9ybWF0aW9uIHdoZW4gYXNzaWduaW5nIHZhbHVlcy4KIFRoaXMgd291bGQgdGhlbiByZXF1aXJlIHByb3ZpZGluZyB0aGUgcmF3IHZhbHVlOgogLmJyCi1cZkMgICAgc25tcHNldCAuLi4gSE9TVC1SRVNPVVJDRVMtTUlCOjpoclN5c3RlbURhdGUuMAorXGZDICAgIHNubXBzZXQgLi4uIEhPU1RcLVJFU09VUkNFU1wtTUlCOjpoclN5c3RlbURhdGUuMAogLmJyCiAgICAgICAgICAgICAgICAgICAgIHggIjA3IEQyIDBDIDBBIDAyIDA0IDA2IDA4IlxmUgogLmJyCiBpbnN0ZWFkIG9mIGEgZm9ybWF0dGVkIHZlcnNpb246CiAuYnIKLVxmQyAgICBzbm1wc2V0IC4uLiBIT1NULVJFU09VUkNFUy1NSUI6OmhyU3lzdGVtRGF0ZS4wCitcZkMgICAgc25tcHNldCAuLi4gSE9TVFwtUkVTT1VSQ0VTXC1NSUI6OmhyU3lzdGVtRGF0ZS4wCiAuYnIKLSAgICAgICAgICAgICAgICAgICAgPSAyMDAyLTEyLTEwLDI6NDo2LjhcZlIKKyAgICAgICAgICAgICAgICAgICAgPSAyMDAyXC0xMlwtMTAsMjo0OjYuOFxmUgogLlRQCi0uQiAtSXIKKy5CIFwtSXIKIGRpc2FibGVzIGNoZWNraW5nIHRhYmxlIGluZGV4ZXMgYW5kIHRoZSB2YWx1ZSB0byBiZSBhc3NpZ25lZCBhZ2FpbnN0IHRoZQogcmVsZXZhbnQgTUlCIGRlZmluaXRpb25zLiAgVGhpcyB3aWxsIChob3BlZnVsbHkpIHJlc3VsdCBpbiB0aGUgcmVtb3RlCiBhZ2VudCByZXBvcnRpbmcgYW4gaW52YWxpZCByZXF1ZXN0LCByYXRoZXIgdGhhbiBjaGVja2luZyAoYW5kIHJlamVjdGluZykKQEAgLTgzMywxMyArODMzLDEzIEBACiB0ZW5kIHRvIGJlIG1vcmUgcHJlY2lzZSksIGJ1dCBkaXNhYmxpbmcgdGhpcyBiZWhhdmlvdXIgaXMgcGFydGljdWxhcmx5CiB1c2VmdWwgd2hlbiB0ZXN0aW5nIHRoZSByZW1vdGUgYWdlbnQuCiAuVFAKLS5CIC1JUgorLkIgXC1JUgogZW5hYmxlcyAicmFuZG9tIGFjY2VzcyIgbG9va3VwIG9mIE1JQiBuYW1lcy4KIFJhdGhlciB0aGFuIHByb3ZpZGluZyBhIGZ1bGwgT0lEIHBhdGggdG8gdGhlIGRlc2lyZWQgTUlCIG9iamVjdAogKG9yIHF1YWxpZnlpbmcgdGhpcyBvYmplY3Qgd2l0aCBhbiBleHBsaWNpdCBNSUIgbW9kdWxlIG5hbWUpLAogdGhlIE1JQiB0cmVlIHdpbGwgYmUgc2VhcmNoZWQgZm9yIHRoZSBtYXRjaGluZyBvYmplY3QgbmFtZS4KLVRodXMgXGZDLmlzby5vcmcuZG9kLmludGVybmV0Lm1pYi0yLnN5c3RlbS5zeXNEZXNjci4wXGZSCi0ob3IgXGZDU05NUHYyLU1JQjo6c3lzRGVzY3IuMFxmUikgY2FuIGJlIHNwZWNpZmllZCBzaW1wbHkKK1RodXMgXGZDLmlzby5vcmcuZG9kLmludGVybmV0Lm1pYlwtMi5zeXN0ZW0uc3lzRGVzY3IuMFxmUgorKG9yIFxmQ1NOTVB2MlwtTUlCOjpzeXNEZXNjci4wXGZSKSBjYW4gYmUgc3BlY2lmaWVkIHNpbXBseQogYXMgXGZDc3lzRGVzY3IuMFxmUi4KIC5SUwogLklQICJXYXJuaW5nOiIKQEAgLTg0OCwyNCArODQ4LDI0IEBACiBoYXZlIGJlZW4gbG9hZGVkLgogLlJFCiAuSVAKLVRoZSBcZklNSUItTU9EVUxFOjpvYmplY3ROYW1lXGZSIHN5bnRheCBoYXMKK1RoZSBcZklNSUJcLU1PRFVMRTo6b2JqZWN0TmFtZVxmUiBzeW50YXggaGFzCiB0aGUgYWR2YW50YWdlIG9mIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIGEgcGFydGljdWxhciBNSUIgb2JqZWN0LAogYXMgd2VsbCBhcyBiZWluZyBzbGlnaHRseSBtb3JlIGVmZmljaWVudCAoYW5kIGF1dG9tYXRpY2FsbHkKIGxvYWRpbmcgdGhlIG5lY2Vzc2FyeSBNSUIgZmlsZSBpZiBuZWNlc3NhcnkpLgogLlRQCi0uQiAtSXMgU1VGRklYCisuQiBcLUlzIFNVRkZJWAogYWRkcyB0aGUgc3BlY2lmaWVkIHN1ZmZpeCB0byBlYWNoIHRleHR1YWwgT0lEIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUuCiBUaGlzIGNhbiBiZSB1c2VkIHRvIHJldHJpZXZlIG11bHRpcGxlIG9iamVjdHMgZnJvbSB0aGUgc2FtZSByb3cgb2YKIGEgdGFibGUsIGJ5IHNwZWNpZnlpbmcgYSBjb21tb24gaW5kZXggdmFsdWUuCiAuVFAKLS5CIC1JUyBQUkVGSVgKKy5CIFwtSVMgUFJFRklYCiBhZGRzIHRoZSBzcGVjaWZpZWQgcHJlZml4IHRvIGVhY2ggdGV4dHVhbCBPSUQgZ2l2ZW4gb24gdGhlIGNvbW1hbmQgbGluZS4KIFRoaXMgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhbiBleHBsaWNpdCBNSUIgbW9kdWxlIG5hbWUgZm9yIGFsbCBvYmplY3RzCiBiZWluZyByZXRyaWV2ZWQgKG9yIGZvciBpbmN1cmFibHkgbGF6eSB0eXBpc3RzKS4KIC5UUAotLkIgLUl1CisuQiBcLUl1CiBlbmFibGVzIHRoZSB0cmFkaXRpb25hbCBVQ0Qtc3R5bGUgYXBwcm9hY2ggdG8gaW50ZXJwcmV0aW5nIGlucHV0IE9JRHMuCi1UaGlzIGFzc3VtZXMgdGhhdCBPSURzIGFyZSByb290ZWQgYXQgdGhlICdtaWItMicgcG9pbnQgaW4gdGhlIHRyZWUKK1RoaXMgYXNzdW1lcyB0aGF0IE9JRHMgYXJlIHJvb3RlZCBhdCB0aGUgJ21pYlwtMicgcG9pbnQgaW4gdGhlIHRyZWUKICh1bmxlc3MgdGhleSBzdGFydCB3aXRoIGFuIGV4cGxpY2l0ICcuJyBvciBpbmNsdWRlIGEgTUlCIG1vZHVsZSBuYW1lKS4KIFNvIHRoZSBcZkNzeXNEZXNjclxmUiBpbnN0YW5jZSBhYm92ZSB3b3VsZCBiZSByZWZlcmVuY2VkIGFzCiBcZkNzeXN0ZW0uc3lzRGVzY3IuMFxmUi4gCkBAIC04NzQsMjggKzg3NCwyOCBAQAogT2JqZWN0IG5hbWVzIHNwZWNpZmllZCB3aXRoIGEgbGVhZGluZyAnLicgYXJlIGFsd2F5cyBpbnRlcnByZXRlZCBhcwogImZ1bGx5IHF1YWxpZmllZCIgT0lEcywgbGlzdGluZyB0aGUgc2VxdWVuY2Ugb2YgTUlCIG9iamVjdHMgZnJvbSB0aGUKIHJvb3Qgb2YgdGhlIE1JQiB0cmVlLiAgU3VjaCBvYmplY3RzIGFuZCB0aG9zZSBxdWFsaWZpZWQgYnkgYW4gZXhwbGljaXQKLU1JQiBtb2R1bGUgbmFtZSBhcmUgdW5hZmZlY3RlZCBieSB0aGUgXGZCLUliXGZSLCBcZkItSVJcZlIgYW5kIFxmQi1JdVxmUiBmbGFncy4KK01JQiBtb2R1bGUgbmFtZSBhcmUgdW5hZmZlY3RlZCBieSB0aGUgXGZCXC1JYlxmUiwgXGZCXC1JUlxmUiBhbmQgXGZCXC1JdVxmUiBmbGFncy4KIAogT3RoZXJ3aXNlLCBpZiBub25lIG9mIHRoZSBhYm92ZSBpbnB1dCBvcHRpb25zIGFyZSBzcGVjaWZpZWQsIHRoZQogZGVmYXVsdCBiZWhhdmlvdXIgZm9yIGEgInJlbGF0aXZlIiBPSUQgaXMgdG8gdHJ5IGFuZCBpbnRlcnByZXQgaXQKIGFzIGFuIChpbXBsaWNpdGx5KSBmdWxseSBxdWFsaWZpZWQgT0lELAotdGhlbiBhcHBseSAicmFuZG9tIGFjY2VzcyIgbG9va3VwIChcZkItSVJcZlIpLAotZm9sbG93ZWQgYnkgImJlc3QgbWF0Y2giIHBhdHRlcm4gbWF0Y2hpbmcgKFxmQi1JYlxmUikuCit0aGVuIGFwcGx5ICJyYW5kb20gYWNjZXNzIiBsb29rdXAgKFxmQlwtSVJcZlIpLAorZm9sbG93ZWQgYnkgImJlc3QgbWF0Y2giIHBhdHRlcm4gbWF0Y2hpbmcgKFxmQlwtSWJcZlIpLgogCiAuU0ggIkVOVklST05NRU5UIFZBUklBQkxFUyIKIC5JUCBQUkVGSVgKIFRoZSBzdGFuZGFyZCBwcmVmaXggZm9yIG9iamVjdCBpZGVudGlmaWVycyAod2hlbiB1c2luZyBVQ0Qtc3R5bGUgb3V0cHV0KS4KLURlZmF1bHRzIHRvIC5pc28ub3JnLmRvZC5pbnRlcm5ldC5tZ210Lm1pYi0yCitEZWZhdWx0cyB0byAuaXNvLm9yZy5kb2QuaW50ZXJuZXQubWdtdC5taWJcLTIKIC5JUCBNSUJTCiBUaGUgbGlzdCBvZiBNSUJzIHRvIGxvYWQuIERlZmF1bHRzIHRvCi1TTk1QdjItVEM6U05NUHYyLU1JQjpJRi1NSUI6SVAtTUlCOlRDUC1NSUI6VURQLU1JQjpTTk1QLVZBQ00tTUlCLgorU05NUHYyXC1UQzpTTk1QdjJcLU1JQjpJRlwtTUlCOklQXC1NSUI6VENQXC1NSUI6VURQXC1NSUI6U05NUFwtVkFDTVwtTUlCLgogT3ZlcnJpZGRlbiBieSB0aGUKLS5CIC1tCisuQiBcLW0KIG9wdGlvbi4KIC5JUCBNSUJESVJTCiBUaGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBzZWFyY2ggZm9yIE1JQnMuIERlZmF1bHRzIHRvIERBVEFESVIvc25tcC9taWJzLgogT3ZlcnJpZGRlbiBieSB0aGUKLS5CIC1NCisuQiBcLU0KIG9wdGlvbi4KIAogLlNIIEZJTEVTCmRpZmYgLS1naXQgYS9tYW4vc25tcGNvbmYuMS5kZWYgYi9tYW4vc25tcGNvbmYuMS5kZWYKaW5kZXggODQ4OGFhNS4uY2QwYzEwNCAxMDA2NDQKLS0tIGEvbWFuL3NubXBjb25mLjEuZGVmCisrKyBiL21hbi9zbm1wY29uZi4xLmRlZgpAQCAtNiw3ICs2LDcgQEAKIFtPUFRJT05TXSBbZmlsZVRvQ3JlYXRlXQogLklQICJTdGFydCB3aXRoOiIKIC5CIHNubXBjb25mCi0tZyBiYXNpY19zZXR1cAorXC1nIGJhc2ljX3NldHVwCiAuSVAgIk9yIGV2ZW4ganVzdDoiCiAuQiBzbm1wY29uZgogLlNIIERFU0NSSVBUSU9OCkBAIC0yNywzNSArMjcsMzUgQEAKIGNvbW1lbnRlZC4KIC5QUAogQSBwYXJ0aWN1bGFybHkgdXNlZnVsIG9wdGlvbiBpcyB0aGUKLS5CIC1nCisuQiBcLWcKIHN3aXRjaCwgd2hpY2ggd2Fsa3MgYSB1c2VyIHRocm91Z2ggYSBzcGVjaWZpYyBzZXQgb2YgY29uZmlndXJhdGlvbgogcXVlc3Rpb25zLiAgUnVuOgogLlJTCiAuUFAKLXNubXBjb25mIC1nIGJhc2ljX3NldHVwCitzbm1wY29uZiBcLWcgYmFzaWNfc2V0dXAKIC5SRQogLlBQCiBmb3IgYW4gZXhhbXBsZS4KIC5TSCAiT1BUSU9OUyIKIC5UUCA4Ci0uQiAtZgorLkIgXC1mCiBGb3JjZSBvdmVyd3JpdGluZyBleGlzdGluZyBmaWxlcyBpbiB0aGUgY3VycmVudCBkaXJlY3Rvcnkgd2l0aG91dAogcHJvbXB0aW5nIHRoZSB1c2VyIGlmIHRoaXMgaXMgYSBkZXNpcmVkIHRoaW5nIHRvIGRvLgogLlRQIAotLkIgLWkKKy5CIFwtaQogV2hlbiBmaW5pc2hlZCwgaW5zdGFsbCB0aGUgZmlsZXMgaW50byB0aGUgbG9jYXRpb24gd2hlcmUgdGhlIGdsb2JhbAogc3lzdGVtIGNvbW1hbmRzIGV4cGVjdCB0byBmaW5kIHRoZW0uCiAuVFAKLS5CIC1wCisuQiBcLXAKIFdoZW4gZmluaXNoZWQsIGluc3RhbGwgdGhlIGZpbGVzIGludG8gdGhlIHVzZXJzIGhvbWUgZGlyZWN0b3J5J3MgLnNubXAKIHN1YmRpcmVjdG9yeSAod2hlcmUgdGhlIGFwcGxpY2F0aW9ucyB3aWxsIGFsc28gc2VhcmNoIGZvcgogY29uZmlndXJhdGlvbiBmaWxlcykuCiAuVFAKLS5CSSAtSSAiIERJUkVDVE9SWSIKKy5CSSBcLUkgIiBESVJFQ1RPUlkiCiBXaGVuIGZpbmlzaGVkLCBpbnN0YWxsIHRoZSBmaWxlcyBpbnRvIHRoZSBkaXJlY3RvcnkgCiAuSVIgRElSRUNUT1JZIC4KIC5UUAotLkIgLWEKKy5CIFwtYQogRG9uJ3QgYXNrIGFueSBxdWVzdGlvbnMuICBTaW1wbHkgcmVhZCBpbiB0aGUgdmFyaW91cyBrbm93bgogY29uZmlndXJhdGlvbiBmaWxlcyBhbmQgd3JpdGUgdGhlbSBiYWNrIG91dCBhZ2Fpbi4gIFRoaXMgaGFzIHRoZQogZWZmZWN0IG9mICJhdXRvLWNvbW1lbnRpbmciIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIGZvciB5b3UuICBTZWUKQEAgLTYzLDE3ICs2MywxNyBAQAogLkIgTkVBVCBUUklDS1MKIHNlY3Rpb24gYmVsb3cuCiAuVFAKLS5CSSAtciBhbGx8bm9uZQorLkJJIFwtciBhbGx8bm9uZQogUmVhZCBpbiBlaXRoZXIgYWxsIG9yIG5vbmUgb2YgdGhlIGZvdW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMuICBOb3JtYWxseQogLkIgc25tcGNvbmYKIHByb21wdHMgeW91IGZvciB3aGljaCBmaWxlcyB5b3Ugd2lzaCB0byByZWFkIGluLiAgUmVhZGluZyBpbgogdGhlc2UgY29uZmlndXJhdGlvbiBmaWxlcyB3aWxsIG1lcmdlIHRoZXNlIGZpbGVzIHdpdGggdGhlIHJlc3VsdHMgb2YKIHRoZSBxdWVzdGlvbnMgdGhhdCBpdCBhc2tzIG9mIHlvdS4KIC5UUAotLkJJIC1SICIgRklMRSwuLi4iCisuQkkgXC1SICIgRklMRSwuLi4iCiBSZWFkIGluIGEgc3BlY2lmaWMgbGlzdCBvZiBjb25maWd1cmF0aW9uIGZpbGVzLgogLlRQCi0uQkkgLWcgIiBHUk9VUE5BTUUiCisuQkkgXC1nICIgR1JPVVBOQU1FIgogR3JvdXBzIG9mIGNvbmZpZ3VyYXRpb24gZW50cmllcyBjYW4gYmUgY3JlYXRlZCB0aGF0IGNhbiBiZSB1c2VkIHRvCiB3YWxrIGEgdXNlciB0aHJvdWdoIGEgc2VyaWVzIG9mIHF1ZXN0aW9ucyB0byBjcmVhdGUgYW4gaW5pdGlhbAogY29uZmlndXJhdGlvbiBmaWxlLiAgVGhlcmUgYXJlIG5vIG1lbnVzIHRvIG5hdmlnYXRlLCBqdXN0IGEgbGlzdCBvZgpAQCAtODEsNDQgKzgxLDQ0IEBACiAuUlMKIC5SUwogLlBQCi1zbm1wY29uZiAtZyBiYXNpY19zZXR1cAorc25tcGNvbmYgXC1nIGJhc2ljX3NldHVwCiAuUkUKIC5QUAogZm9yIGEgZ29vZCBleGFtcGxlLgogLlJFCiAuVFAKLS5CIC1HCisuQiBcLUcKIExpc3QgYWxsIHRoZSBrbm93biBncm91cHMuCiAuVFAKLS5CSSAtYyAiIENPTkZJR0RJUiIKKy5CSSBcLWMgIiBDT05GSUdESVIiCiAuQiBzbm1wY29uZgogdXNlcyBhIGRpcmVjdG9yeSBvZiBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIHRvIGxlYXJuIGFib3V0CiB0aGUgZmlsZXMgYW5kIHF1ZXN0aW9ucyB0aGF0IGl0IHNob3VsZCBiZSBhc2tpbmcuICBUaGlzIG9wdGlvbiB0ZWxscwogLkIgc25tcGNvbmYKIHRvIHVzZSBhIGRpZmZlcmVudCBsb2NhdGlvbiBmb3IgY29uZmlndXJpbmcgaXRzZWxmLgogLlRQCi0uQiAtcQorLkIgXC1xCiBSdW4gc2xpZ2h0bHkgbW9yZSBxdWlldGx5LiAgU2luY2UgdGhpcyBpcyBhbiBpbnRlcmFjdGl2ZSBwcm9ncmFtLCBJCiBkb24ndCByZWNvbW1lbmQgdGhpcyBvcHRpb24gc2luY2UgaXQgb25seSByZW1vdmVzIGluZm9ybWF0aW9uIGZyb20gdGhlCiBvdXRwdXQgdGhhdCBpcyBkZXNpZ25lZCB0byBoZWxwIHlvdS4KIC5UUAotLkIgLWQKKy5CIFwtZAogVHVybiBvbiAKIC5CIGxvdHMKIG9mIGRlYnVnZ2luZyBvdXRwdXQuCiAuVFAKLS5CIC1ECisuQiBcLUQKIEFkZCAKIC5CIGV2ZW4gbW9yZQogZGVidWdnaW5nIG91dHB1dCBpbiB0aGUgZm9ybSBvZiBQZXJsIHZhcmlhYmxlIGR1bXBzLgogLklQCiAuU0ggIk5FQVQgVFJJQ0tTIgotLklQICJzbm1wY29uZiAtZyBiYXNpY19zZXR1cCIKKy5JUCAic25tcGNvbmYgXC1nIGJhc2ljX3NldHVwIgogSGF2ZSBJIG1lbnRpb25lZCB0aGlzIGNvbW1hbmQgZW5vdWdoIHlldD8gIEl0J3MgZGVzaWduZWQgdG8gd2Fsawogc29tZW9uZSB0aHJvdWdoIGFuIGluaXRpYWwgc2V0dXAgZm9yIHRoZQogLkkgc25tcGQoOCkKIGRhZW1vbi4gIFJlYWxseSwgeW91IHNob3VsZCB0cnkgaXQuCi0uSVAgInNubXBjb25mIC1SIC91c3IvbG9jYWwvc25tcC9zbm1wZC5jb25mIC1hIC1mIHNubXBkLmNvbmYiCisuSVAgInNubXBjb25mIFwtUiAvdXNyL2xvY2FsL3NubXAvc25tcGQuY29uZiBcLWEgXC1mIHNubXBkLmNvbmYiCiBBdXRvbWF0aWNhbGx5IHJlYWRzIGluIGFuIHNubXBkLmNvbmYgZmlsZSAoZm9yIGV4YW1wbGUpIGFuZCBhZGRzCiBjb21tZW50cyB0byB0aGVtIGRlc2NyaWJpbmcgd2hhdCBlYWNoIHRva2VuIGRvZXMuICBUcnkgaXQuICBJdCdzIGNvb2wuCiAuU0ggIk5PVEVTIgpkaWZmIC0tZ2l0IGEvbWFuL3NubXBkLjguZGVmIGIvbWFuL3NubXBkLjguZGVmCmluZGV4IDJjOTJmYTIuLmYxNzMzOTYgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wZC44LmRlZgorKysgYi9tYW4vc25tcGQuOC5kZWYKQEAgLTEyLDEzICsxMiwxMyBAQAogcmVxdWVzdGVkIG9wZXJhdGlvbihzKSBhbmQgcmV0dXJucyB0aGUgaW5mb3JtYXRpb24gdG8gdGhlIHNlbmRlci4KIC5TSCBPUFRJT05TCiAuVFAgOAotLkIgLWEKKy5CIFwtYQogTG9nIHRoZSBzb3VyY2UgYWRkcmVzc2VzIG9mIGluY29taW5nIHJlcXVlc3RzLgogLlRQCi0uQiAtQQorLkIgXC1BCiBBcHBlbmQgdG8gdGhlIGxvZyBmaWxlIHJhdGhlciB0aGFuIHRydW5jYXRpbmcgaXQuCiAuVFAKLS5CICItYyIgXGZJRklMRQorLkIgIlwtYyIgXGZJRklMRQogUmVhZCAKIC5JIEZJTEUKIGFzIGEgY29uZmlndXJhdGlvbiBmaWxlCkBAIC0yNywyMSArMjcsMjEgQEAKIGlzIHNwZWNpZmllZCBpbiB0aGUgZmlsZSBhcyBkZXNjcmliZWQgaW4gdGhlIHNubXBfY29uZmlnIG1hbiBwYWdlIHVuZGVyCiBTV0lUQ0hJTkcgQ09ORklHVVJBVElPTiBUWVBFUyBJTiBNSUQtRklMRS4KIC5UUAotLkIgLUMKKy5CIFwtQwogRG8gbm90IHJlYWQgYW55IGNvbmZpZ3VyYXRpb24gZmlsZXMgZXhjZXB0IHRoZSBvbmVzIG9wdGlvbmFsbHkgc3BlY2lmaWVkIGJ5IHRoZSAKLS5CIC1jIAorLkIgXC1jIAogb3B0aW9uLgogTm90ZSB0aGF0IHRoaXMgYmVoYXZpb3VyIGFsc28gY292ZXJzIHRoZSBwZXJzaXN0ZW50IGNvbmZpZ3VyYXRpb24gZmlsZXMuCiBUaGlzIG1heSByZXN1bHQgaW4gZHluYW1pY2FsbHktYXNzaWduZWQgdmFsdWVzIGJlaW5nIHJlc2V0IGZvbGxvd2luZyBhbgogYWdlbnQgcmVzdGFydCwgdW5sZXNzIHRoZSByZWxldmFudCBwZXJzaXN0ZW50IGNvbmZpZyBmaWxlcyBhcmUKIGV4cGxpY2l0bHkgbG9hZGVkIHVzaW5nIHRoZQotLkIgLWMgCisuQiBcLWMgCiBvcHRpb24uCiAuVFAKLS5CIC1kCisuQiBcLWQKIER1bXAgKGluIGhleGFkZWNpbWFsKSB0aGUgc2VudCBhbmQgcmVjZWl2ZWQgU05NUCBwYWNrZXRzLgogLlRQCi0uQiAtRFxmSVtUT0tFTlssLi4uXV0KKy5CIFwtRFxmSVtUT0tFTlssLi4uXV0KIFR1cm4gb24gZGVidWdnaW5nIG91dHB1dCBmb3IgdGhlIGdpdmVuCiAuSVIgIlRPS0VOIiAiKHMpLiIKIFdpdGhvdXQgYW55IHRva2VucyBzcGVjaWZpZWQsIGl0IGRlZmF1bHRzIHRvIHByaW50aW5nIGFsbCB0aGUgdG9rZW5zCkBAIC00OSw5OSArNDksOTkgQEAKIFlvdSBtaWdodCB3YW50IHRvIHRyeQogLklSIEFMTAogZm9yIGV4dHJlbWVseSB2ZXJib3NlIG91dHB1dC4gIE5vdGU6IFlvdSBjYW4gbm90IHB1dCBhIHNwYWNlIGJldHdlZW4KLXRoZSAtRCBmbGFnIGFuZCB0aGUgbGlzdGVkIFRPS0VOcy4KK3RoZSBcLUQgZmxhZyBhbmQgdGhlIGxpc3RlZCBUT0tFTnMuCiAuVFAKLS5CIC1mCisuQiBcLWYKIERvIG5vdCBmb3JrKCkgZnJvbSB0aGUgY2FsbGluZyBzaGVsbC4KIC5UUAotLkIgLWcgXGZJR0lECisuQiBcLWcgXGZJR0lECiBDaGFuZ2UgdG8gdGhlIG51bWVyaWNhbCBncm91cCBJRAogLkkgR0lECiBhZnRlciBvcGVuaW5nIGxpc3RlbmluZyBzb2NrZXRzLgogLlRQCi0uQiAtaCwgLS1oZWxwCisuQiBcLWgsIFwtXC1oZWxwCiBEaXNwbGF5IGEgYnJpZWYgdXNhZ2UgbWVzc2FnZSBhbmQgdGhlbiBleGl0LgogLlRQCi0uQiAtSAorLkIgXC1ICiBEaXNwbGF5IGEgbGlzdCBvZiBjb25maWd1cmF0aW9uIGZpbGUgZGlyZWN0aXZlcyB1bmRlcnN0b29kIGJ5IHRoZQogYWdlbnQgYW5kIHRoZW4gZXhpdC4KIC5UUAotLkIgLUkgXGZJWy1dSU5JVExJU1QKKy5CIFwtSSBcZklbXC1dSU5JVExJU1QKIFNwZWNpZmllcyB3aGljaCBtb2R1bGVzIHNob3VsZCAob3Igc2hvdWxkIG5vdCkgYmUgaW5pdGlhbGl6ZWQKIHdoZW4gdGhlIGFnZW50IHN0YXJ0cyB1cC4gIElmIHRoZSBjb21tYS1zZXBhcmF0ZWQKIC5JIElOSVRMSVNUCiBpcyBwcmVjZWRlZAotd2l0aCBhICctJywgaXQgaXMgdGhlIGxpc3Qgb2YgbW9kdWxlcyB0aGF0IHNob3VsZCBcZklub3RcZlIgYmUgc3RhcnRlZC4KK3dpdGggYSAnXC0nLCBpdCBpcyB0aGUgbGlzdCBvZiBtb2R1bGVzIHRoYXQgc2hvdWxkIFxmSW5vdFxmUiBiZSBzdGFydGVkLgogT3RoZXJ3aXNlIHRoaXMgaXMgdGhlIGxpc3Qgb2YgdGhlIFxmSW9ubHlcZlIgbW9kdWxlcyB0aGF0IHNob3VsZCBiZSBzdGFydGVkLgogCiBUbyBnZXQgYSBsaXN0IG9mIGNvbXBpbGVkIG1vZHVsZXMsIHJ1biB0aGUgYWdlbnQgd2l0aCB0aGUgYXJndW1lbnRzCi0uSSAiLURtaWJfaW5pdCAtSCIKKy5JICJcLURtaWJfaW5pdCBcLUgiCiAoYXNzdW1pbmcgZGVidWdnaW5nIHN1cHBvcnQgaGFzIGJlZW4gY29tcGlsZWQgaW4pLgogLlRQCi0uQiAtTFtlZm9zXQorLkIgXC1MW2Vmb3NdCiBTcGVjaWZ5IHdoZXJlIGxvZ2dpbmcgb3V0cHV0IHNob3VsZCBiZSBkaXJlY3RlZCAoc3RhbmRhcmQgZXJyb3Igb3Igb3V0cHV0LAogdG8gYSBmaWxlIG9yIHZpYSBzeXNsb2cpLiAgU2VlIExPR0dJTkcgT1BUSU9OUyBpbiBzbm1wY21kKDUpIGZvciBkZXRhaWxzLgogLlRQCi0uQlIgLW0gIiBcZklNSUJMSVNUIgorLkJSIFwtbSAiIFxmSU1JQkxJU1QiCiBTcGVjaWZpZXMgYSBjb2xvbiBzZXBhcmF0ZWQgbGlzdCBvZiBNSUIgbW9kdWxlcyB0byBsb2FkIGZvciB0aGlzCiBhcHBsaWNhdGlvbi4gIFRoaXMgb3ZlcnJpZGVzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBNSUJTLgogU2VlIFxmSXNubXBjbWQoMSlcZlIgZm9yIGRldGFpbHMuCiAuVFAKLS5CUiAtTSAiIFxmSURJUkxJU1QiCisuQlIgXC1NICIgXGZJRElSTElTVCIKIFNwZWNpZmllcyBhIGNvbG9uIHNlcGFyYXRlZCBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIHNlYXJjaCBmb3IgTUlCcy4KIFRoaXMgb3ZlcnJpZGVzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBNSUJESVJTLgogU2VlIFxmSXNubXBjbWQoMSlcZlIgZm9yIGRldGFpbHMuCiAuVFAKLS5CIC1uIFxmSU5BTUUKKy5CIFwtbiBcZklOQU1FCiBTZXQgYW4gYWx0ZXJuYXRpdmUgYXBwbGljYXRpb24gbmFtZSAod2hpY2ggd2lsbCBhZmZlY3QgdGhlCiBjb25maWd1cmF0aW9uIGZpbGVzIGxvYWRlZCkuCiBCeSBkZWZhdWx0IHRoaXMgd2lsbCBiZSBcZklzbm1wZFxmUiwgcmVnYXJkbGVzcyBvZiB0aGUgbmFtZQogb2YgdGhlIGFjdHVhbCBiaW5hcnkuCiAuVFAKLS5CIC1wIFxmSUZJTEUKKy5CIFwtcCBcZklGSUxFCiBTYXZlIHRoZSBwcm9jZXNzIElEIG9mIHRoZSBkYWVtb24gaW4KIC5JUiBGSUxFICIuIgogLlRQIAotLkIgLXEKKy5CIFwtcQogUHJpbnQgc2ltcGxlciBvdXRwdXQgZm9yIGVhc2llciBhdXRvbWF0ZWQgcGFyc2luZy4KIC5UUAotLkIgLXIKKy5CIFwtcgogRG8gbm90IHJlcXVpcmUgcm9vdCBhY2Nlc3MgdG8gcnVuIHRoZSBkYWVtb24uICBTcGVjaWZpY2FsbHksIGRvIG5vdCBleGl0CiBpZiBmaWxlcyBvbmx5IGFjY2Vzc2libGUgdG8gcm9vdCAoc3VjaCBhcyAvZGV2L2ttZW0gZXRjLikgY2Fubm90IGJlCiBvcGVuZWQuCiAuVFAKLS5CIC11IFxmSVVJRAorLkIgXC11IFxmSVVJRAogQ2hhbmdlIHRvIHRoZSB1c2VyIElECiAuSSBVSUQKICh3aGljaCBjYW4gYmUgZ2l2ZW4gaW4gbnVtZXJpY2FsIG9yIHRleHR1YWwgZm9ybSkgYWZ0ZXIgb3BlbmluZwogbGlzdGVuaW5nIHNvY2tldHMuCiAuVFAKLS5CIC1VCisuQiBcLVUKIEluc3RydWN0cyB0aGUgYWdlbnQgdG8gbm90IHJlbW92ZSBpdHMgcGlkIGZpbGUgKHNlZSB0aGUKLS5CIC1wCisuQiBcLXAKIG9wdGlvbikgb24gc2h1dGRvd24uIE92ZXJyaWRlcyB0aGUgbGVhdmVfcGlkZmlsZSB0b2tlbiBpbiB0aGUKIC5JIHNubXBkLmNvbmYKIGZpbGUsIHNlZQogLkkgc25tcGQuY29uZig1KS4KIC5UUAotLkIgLXYsIC0tdmVyc2lvbgorLkIgXC12LCBcLVwtdmVyc2lvbgogUHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGFnZW50IGFuZCB0aGVuIGV4aXQuCiAuVFAKLS5CIC1WCisuQiBcLVYKIFN5bWJvbGljYWxseSBkdW1wIFNOTVAgdHJhbnNhY3Rpb25zLgogLlRQCi0uQiAteCBcZklBRERSRVNTCisuQiBcLXggXGZJQUREUkVTUwogTGlzdGVucyBmb3IgQWdlbnRYIGNvbm5lY3Rpb25zIG9uIHRoZSBzcGVjaWZpZWQgYWRkcmVzcwogcmF0aGVyIHRoYW4gdGhlIGRlZmF1bHQgQUdFTlRYX1NPQ0tFVC4KIFRoZSBhZGRyZXNzIGNhbiBlaXRoZXIgYmUgYSBVbml4IGRvbWFpbiBzb2NrZXQgcGF0aCwKIG9yIHRoZSBhZGRyZXNzIG9mIGEgbmV0d29yayBpbnRlcmZhY2UuICBUaGUgZm9ybWF0IGlzIHRoZSBzYW1lIGFzIHRoZQogZm9ybWF0IG9mIGxpc3RlbmluZyBhZGRyZXNzZXMgZGVzY3JpYmVkIGJlbG93LgogLlRQCi0uQiAtWAorLkIgXC1YCiBSdW4gYXMgYW4gQWdlbnRYIHN1YmFnZW50IHJhdGhlciB0aGFuIGFzIGFuIFNOTVAgbWFzdGVyIGFnZW50LgogLlRQCi0uQkkgLS0gIm5hbWUiPSJ2YWx1ZSIKLUFsbG93cyB0byBzcGVjaWZ5IGFueSB0b2tlbiAoIm5hbWUiKSBzdXBwb3J0ZWQgaW4gdGhlCisuQkkgXC1cLSAibmFtZSI9InZhbHVlIgorQWxsb3dzIG9uZSB0byBzcGVjaWZ5IGFueSB0b2tlbiAoIm5hbWUiKSBzdXBwb3J0ZWQgaW4gdGhlCiAuSSBzbm1wZC5jb25mCiBmaWxlIGFuZCBzZXRzIGl0cyB2YWx1ZSB0byAidmFsdWUiLiBPdmVycmlkZXMgdGhlIGNvcnJlc3BvbmRpbmcgdG9rZW4gaW4gdGhlCiAuSSBzbm1wZC5jb25mCkBAIC0yMTgsMTAgKzIxOCwxMCBAQAogLklSICJpcHg6LzQwMDAwIgogbGlzdGVuIG9uIElQWCBwb3J0IDQwMDAwIG9uIGFsbCBJUFggaW50ZXJmYWNlcy4KIC5UUCAyNAotLklSICJ1bml4Oi90bXAvbG9jYWwtYWdlbnQiCi1saXN0ZW4gb24gdGhlIFVuaXggZG9tYWluIHNvY2tldCBcZkkvdG1wL2xvY2FsLWFnZW50XGZSLgorLklSICJ1bml4Oi90bXAvbG9jYWxcLWFnZW50IgorbGlzdGVuIG9uIHRoZSBVbml4IGRvbWFpbiBzb2NrZXQgXGZJL3RtcC9sb2NhbFwtYWdlbnRcZlIuCiAuVFAgMjQKLS5JUiAiL3RtcC9sb2NhbC1hZ2VudCIKKy5JUiAiL3RtcC9sb2NhbFwtYWdlbnQiCiBpcyBpZGVudGljYWwgdG8gdGhlIHByZXZpb3VzIHNwZWNpZmljYXRpb24sIHNpbmNlIHRoZSBVbml4IGRvbWFpbiBpcwogYXNzdW1lZCBpZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSA8dHJhbnNwb3J0LWFkZHJlc3M+IGlzICcvJy4KIC5UUCAyNApAQCAtMjU2LDcgKzI1Niw3IEBACiBuYW1lZCBwaXBlIHRoYXQgY2FuIGJlIGNvbm5lY3RlZCB0byB2aWEgYSBzc2ggc3Vic3lzdGVtIGNvbmZpZ3VyZWQgaW4KIHRoZSBtYWluIHNzaCBzZXJ2ZXIuICBUaGUgcGlwZSBsb2NhdGlvbiAoY29uZmlndXJhYmxlIHdpdGggdGhlCiBzc2h0b3NubXBzb2NrZXQgdG9rZW4gaW4gc25tcC5jb25mKSBpcwotLkkgL3Zhci9uZXQtc25tcC9zc2h0b3NubXAuCisuSSAvdmFyL25ldFwtc25tcC9zc2h0b3NubXAuCiBQYWNrZXRzIHNob3VsZCBiZSBzdWJtaXR0ZWQgdG8gaXQgdmlhIHRoZSBzc2h0b3NubXAgYXBwbGljYXRpb24sIHdoaWNoCiBhbHNvIHNlbmRzIHRoZSB1c2VyIElEIGFzIHdlbGwgd2hlbiBzdGFydGluZyB0aGUgY29ubmVjdGlvbi4gIFRoZSBUU00KIHNlY3VyaXR5IG1vZGVsIHNob3VsZCBiZSB1c2VkIHdoZW4gcGFja2V0cyBzaG91bGQgcHJvY2VzcyBpdC4KQEAgLTI3NiwxMSArMjc2LDExIEBACiBUaGUKIC5JIHNzaHRvc25tcAogY29tbWFuZCB3aWxsIG5lZWQgcmVhZC93cml0ZSBhY2Nlc3MgdG8gdGhlIAotLkkgL3Zhci9uZXQtc25tcC9zc2h0b3NubXAKKy5JIC92YXIvbmV0XC1zbm1wL3NzaHRvc25tcAogcGlwZS4gIEFsdGhvdWdoIGl0IHNob3VsZCBiZSBmYWlybHkgc2FmZSB0byBncmFudCBhY2Nlc3MgdG8gdGhlCiBhdmVyYWdlIHVzZXIgc2luY2UgaXQgc3RpbGwgcmVxdWlyZXMgbW9kaWZpY2F0aW9ucyB0byB0aGUgQUNNIHNldHRpbmdzCiBiZWZvcmUgdGhlIHVzZXIgY2FuIHBlcmZvcm0gb3BlcmF0aW9ucywgcGFyYW5vaWQgYWRtaW5pc3RyYXRvcnMgbWF5Ci13YW50IHRvIG1ha2UgdGhlIC92YXIvbmV0LXNubXAgZGlyZWN0b3J5IGFjY2Vzc2libGUgb25seSBieSB1c2VycyBpbiBhCit3YW50IHRvIG1ha2UgdGhlIC92YXIvbmV0XC1zbm1wIGRpcmVjdG9yeSBhY2Nlc3NpYmxlIG9ubHkgYnkgdXNlcnMgaW4gYQogcGFydGljdWxhciBncm91cC4gIFVzZSB0aGUKIC5JIHNzaHRvc25tcHNvY2tldHBlcm1zCiBzbm1wLmNvbmYgY29uZmlndXJlIG9wdGlvbiB0byBzZXQgdGhlIHBlcm1pc3Npb25zLCBvd25lciBhbmQgZ3JvdXAgb2YKQEAgLTI5MCw3ICsyOTAsNyBAQAogc3R5bGUgb2Ygc2ltcGxlIHNubXBkLmNvbmYgc2V0dGluZ3M6CiAuVFAgOAogLklQCi1yb3VzZXIgLXMgdHNtIGZvbyBhdXRocHJpdgorcm91c2VyIFwtcyB0c20gZm9vIGF1dGhwcml2CiAuSVAKIE5vdGUgdGhhdCAiYXV0aHByaXYiIGlzIGFjY2VwdGFibGUgYXNzdW1pbmcgYXMgU1NIIHByb3RlY3RzIGV2ZXJ5dGhpbmcKIHRoYXQgd2F5IChhc3N1bWluZyB5b3UgaGF2ZSBhIG5vbi1pbnNhbmUgc2V0dXApLgpkaWZmIC0tZ2l0IGEvbWFuL3NubXBkLmNvbmYuNS5kZWYgYi9tYW4vc25tcGQuY29uZi41LmRlZgppbmRleCA0OWQ4MWI2Li4yYThhM2QzIDEwMDY0NAotLS0gYS9tYW4vc25tcGQuY29uZi41LmRlZgorKysgYi9tYW4vc25tcGQuY29uZi41LmRlZgpAQCAtMTgsNyArMTgsNyBAQAogbWFudWFsIHBhZ2UgZm9yIG1vcmUgaW5mb3JtYXRpb24sIG9yIHRyeSBydW5uaW5nIHRoZQogY29tbWFuZDoKIC5SUwotLklQICJzbm1wY29uZiAtZyBiYXNpY19zZXR1cCIKKy5JUCAic25tcGNvbmYgXC1nIGJhc2ljX3NldHVwIgogLlJFCiAuUFAKIFRoZXJlIGFyZSBhIGxhcmdlIG51bWJlciBvZiBkaXJlY3RpdmVzIHRoYXQgY2FuIGJlIHNwZWNpZmllZCwKQEAgLTQwLDcgKzQwLDcgQEAKIEEgZnVsbCBsaXN0IG9mIHJlY29nbmlzZWQgZGlyZWN0aXZlcyBjYW4gYmUgb2J0YWluZWQgYnkgcnVubmluZwogdGhlIGNvbW1hbmQ6CiAuUlMKLS5JUCAic25tcGQgLUgiCisuSVAgInNubXBkIFwtSCIKIC5SRQogLlNIIEFHRU5UIEJFSEFWSU9VUgogQWx0aG91Z2ggbW9zdCBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZXMgYXJlIGNvbmNlcm5lZCB3aXRoIHRoZSBNSUIKQEAgLTY5LDExICs2OSwxMSBAQAogc3RhcnRpbmcgd2l0aCAnIycgKCNVSUQpLgogLklQICJsZWF2ZV9waWRmaWxlIHllcyIKIGluc3RydWN0cyB0aGUgYWdlbnQgdG8gbm90IHJlbW92ZSBpdHMgcGlkIGZpbGUgb24gc2h1dGRvd24uIEVxdWl2YWxlbnQgdG8KLXNwZWNpZnlpbmcgIi1VIiBvbiB0aGUgY29tbWFuZCBsaW5lLgorc3BlY2lmeWluZyAiXC1VIiBvbiB0aGUgY29tbWFuZCBsaW5lLgogLklQICJtYXhHZXRidWxrUmVwZWF0cyBOVU0iCiBTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiByZXNwb25zZXMgYWxsb3dlZCBmb3IgYSBzaW5nbGUgdmFyaWFibGUgaW4KLWEgZ2V0YnVsayByZXF1ZXN0LiAgU2V0IHRvIDAgdG8gZW5hYmxlIHRoZSBkZWZhdWx0IGFuZCBzZXQgaXQgdG8gLTEgdG8KLWVuYWJsZSB1bmxpbWl0ZWQuICBCZWNhdXNlIG1lbW9yeSBpcyBhbGxvY2F0ZWQgYWhlYWQgb2YgdGltZSwgc2l0dGluZworYSBnZXRidWxrIHJlcXVlc3QuICBTZXQgdG8gMCB0byBlbmFibGUgdGhlIGRlZmF1bHQgYW5kIHNldCBpdCB0byBcLTEgdG8KK2VuYWJsZSB1bmxpbWl0ZWQuICBCZWNhdXNlIG1lbW9yeSBpcyBhbGxvY2F0ZWQgYWhlYWQgb2YgdGltZSwgc2V0dGluZwogdGhpcyB0byB1bmxpbWl0ZWQgaXMgbm90IGNvbnNpZGVyZWQgc2FmZSBpZiB5b3VyIHVzZXIgcG9wdWxhdGlvbiBjYW4KIG5vdCBiZSB0cnVzdGVkLiAgQSByZXBlYXQgbnVtYmVyIGdyZWF0ZXIgdGhhbiB0aGlzIHdpbGwgYmUgdHJ1bmNhdGVkCiB0byB0aGlzIHZhbHVlLgpAQCAtODIsOCArODIsOCBAQAogLklQICJtYXhHZXRidWxrUmVzcG9uc2VzIE5VTSIKIFNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHJlc3BvbnNlcyBhbGxvd2VkIGZvciBhIGdldGJ1bGsgcmVxdWVzdC4KIFRoaXMgaXMgc2V0IGJ5IGRlZmF1bHQgdG8gMTAwLiAgU2V0IHRvIDAgdG8gZW5hYmxlIHRoZSBkZWZhdWx0IGFuZCBzZXQKLWl0IHRvIC0xIHRvIGVuYWJsZSB1bmxpbWl0ZWQuICBCZWNhdXNlIG1lbW9yeSBpcyBhbGxvY2F0ZWQgYWhlYWQgb2YKLXRpbWUsIHNpdHRpbmcgdGhpcyB0byB1bmxpbWl0ZWQgaXMgbm90IGNvbnNpZGVyZWQgc2FmZSBpZiB5b3VyIHVzZXIKK2l0IHRvIFwtMSB0byBlbmFibGUgdW5saW1pdGVkLiAgQmVjYXVzZSBtZW1vcnkgaXMgYWxsb2NhdGVkIGFoZWFkIG9mCit0aW1lLCBzZXR0aW5nIHRoaXMgdG8gdW5saW1pdGVkIGlzIG5vdCBjb25zaWRlcmVkIHNhZmUgaWYgeW91ciB1c2VyCiBwb3B1bGF0aW9uIGNhbiBub3QgYmUgdHJ1c3RlZC4KIC5JUAogSW4gZ2VuZXJhbCwgdGhlIHRvdGFsIG51bWJlciBvZiByZXNwb25zZXMgd2lsbCBub3QgYmUgYWxsb3dlZCB0bwpAQCAtMTA1LDkgKzEwNSw5IEBACiBleHRlbnNpdmVseSB0ZXN0ZWQuICBJdCBhbHNvIGNvbnRhaW5zIGNvZGUgZm9yIHN1cHBvcnQgZm9yIGFuCiBleHBlcmltZW50YWwgS2VyYmVyb3MgYmFzZWQgU05NUHYzIHRoYXQgbmV2ZXIgZ290IHN0YW5kYXJkaXplZC4KIC5QUAotSG9wZWZ1bCBtb3JlIFNOTVAgc29mdHdhcmUgYW5kIGRldmljZXMgd2lsbCBldmVudHVhbGx5IHN1cHBvcnQgU05NUAorSG9wZWZ1bGx5IG1vcmUgU05NUCBzb2Z0d2FyZSBhbmQgZGV2aWNlcyB3aWxsIGV2ZW50dWFsbHkgc3VwcG9ydCBTTk1QCiBvdmVyIChEKVRMUyBvciBTU0gsIGJ1dCBpdCBpcyBsaWtlbHkgdGhhdCBkZXZpY2VzIHdpdGggb3JpZ2luYWwKLXN1cHBvcnQgZm9yIFNOTVAgd2lsbCBvbmx5IGNvbnRhaW4gc3VwcG9ydCBmb3IgU05NUCBvdmVyIFVTTS4gIElmIHlvdXIKK3N1cHBvcnQgZm9yIFNOTVAgd2lsbCBvbmx5IGNvbnRhaW4gc3VwcG9ydCBmb3IgVVNNIHVzZXJzLiAgSWYgeW91cgogbmV0d29yayBtYW5hZ2VyIHN1cHBvcnRzIFNOTVAgb3ZlciAoRClUTFMgb3IgU05NUCBvdmVyIFNTSCB3ZSBzdWdnZXN0CiB5b3UgdXNlIG9uZSBvZiB0aGVzZSBtZWNoYW5pc21zIGluc3RlYWQgb2YgdXNpbmcgVVNNLCBidXQgYXMgYWx3YXlzCiB3aXRoIE5ldC1TTk1QIHdlIGdpdmUgeW91IHRoZSBvcHRpb25zIHRvIHBpY2sgZnJvbSBzbyB5b3UgY2FuIG1ha2UgdGhlCkBAIC0xNTgsMjAgKzE1OCwxNCBAQAogYSAnW3NubXBdJyB0YWcuICBJZiB5b3UgcGxhY2UgdGhlc2UgdG9rZW5zIGluIHlvdXIgc25tcGQuY29uZiBmaWxlLAogdGhpcyB0YWtlIGlzIHJlcXVpcmVkLiAgU2VlIHRoZSBzbm1wX2NvbmZpZyg1KSBtYW51YWwgcGFnZSBmb3IgdGhlCiBtZWFuaW5nIG9mIHRoaXMgY29udGV4dCBzd2l0Y2guCi0uSVAgIltzbm1wXSBzZXJ2ZXJDZXJ0IDxzcGVjaWZpZXI+IgorLklQICJbc25tcF0gbG9jYWxDZXJ0IDxzcGVjaWZpZXI+IgogVGhpcyB0b2tlbiBkZWZpbmVzIHRoZSBkZWZhdWx0IFguNTA5IHB1YmxpYyBrZXkgdG8gdXNlIGFzIHRoZSBzZXJ2ZXIncwogaWRlbnRpdHkuICBJdCBzaG91bGQgZWl0aGVyIGJlIGEgZmluZ2VycHJpbnQgb3IgYSBmaWxlbmFtZS4gIFRvIGNyZWF0ZQotYSBwdWJsaWMga2V5IGZvciB1c2UsIHBsZWFzZSBydW4gdGhlICJuZXQtc25tcC1jZXJ0IiB1dGlsaXR5IHdoaWNoCithIHB1YmxpYyBrZXkgZm9yIHVzZSwgcGxlYXNlIHJ1biB0aGUgIm5ldFwtc25tcFwtY2VydCIgdXRpbGl0eSB3aGljaAogd2lsbCBoZWxwIHlvdSBjcmVhdGUgdGhlIHJlcXVpcmVkIGNlcnRpZmljYXRlLgogLklQCiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcyBpcyB0aGUgY2VydGlmaWNhdGUgaW4gdGhlICJzbm1wZCIgbmFtZWQKIGNlcnRpZmljYXRlIGZpbGUuCi0uSVAgIltzbm1wXSBjbGllbnRDZXJ0IDxzcGVjaWZpZXI+IgotSWYgb3V0Z29pbmcgVExTIGNvbm5lY3Rpb25zIGFyZSB0byBiZSBvcGVuZWQsIGZvciBleGFtcGxlIGJlY2F1c2UKLW5vdGlmaWNhdGlvbnMgYXJlIHRvIGJlIHNlbnQgb3ZlciBUTFMsIHRoZW4gdGhpcyB3aWxsIHNlbGVjdCB0aGUKLWNsaWVudC1zaWRlIHB1YmxpYyBrZXkgdG8gdXNlIGZvciB0aG9zZSBvdXRnb2luZyBjb25uZWN0aW9ucy4gIEl0IGNhbgotZWl0aGVyIGJlIHNwZWNpZmllZCBhcyBhIGZpbmdlcnByaW50IG9yIGEgZmlsZW5hbWUuICBTZWUgdGhlCi0ibmV0LXNubXAtY2VydCIgdXRpbGl0eSBmb3IgY3JlYXRpbmcgY2VydGlmaWNhdGVzLgogLklQICJbc25tcF0gdGxzQWxnb3JpdGhtcyA8YWxnb3JpdGhtcz4iCiBUaGlzIHN0cmluZyB3aWxsIHNlbGVjdCB0aGUgYWxnb3JpdGhtcyB0byB1c2Ugd2hlbiBuZWdvdGlhdGluZwogc2VjdXJpdHkgZHVyaW5nIChEKVRMUyBzZXNzaW9uIGVzdGFibGlzaG1lbnQuICBTZWUgdGhlIG9wZW5zc2wgbWFudWFsCkBAIC0xODIsMTIgKzE3NiwxMiBAQAogREVGQVVMVAogQUxMCiBISUdICi1ISUdIOiFBRVMxMjgtU0hBCitISUdIOiFBRVMxMjhcLVNIQQogLmZpCiAuUkUKIC5JUAogVGhlIGRlZmF1bHQgdmFsdWUgaXMgd2hhdGV2ZXIgb3BlbnNzbCBpdHNlbGYgd2FzIGNvbmZpZ3VyZWQgd2l0aC4KLS5JUCAiW3NubXBdIHgwNTlDUkxGaWxlIgorLklQICJbc25tcF0geDUwOUNSTEZpbGUiCiBJZiB5b3UgYXJlIHVzaW5nIGEgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IChDQSkgdGhhdCBwdWJsaXNoZXMgYQogQ2VydGlmaWNhdGUgUmV2b2NhdGlvbiBMaXN0IChDUkwpIHRoZW4gdGhpcyB0b2tlbiBjYW4gYmUgdXNlZCB0bwogc3BlY2lmeSB0aGUgbG9jYXRpb24gaW4gdGhlIGZpbGVzeXN0ZW0gb2YgYSBjb3B5IG9mIHRoZSBDUkwgZmlsZS4KQEAgLTE5NywyMiArMTkxLDIyIEBACiBiZSBub3RpY2VkIHVwb24gYSByZXN0YXJ0IG9mIHRoZSBzbm1wZCBhZ2VudC4KIAogLklQICJjZXJ0U2VjTmFtZSBQUklPUklUWSBGSU5HRVJQUklOVCBPUFRJT05TIgotT1BUSU9OUyBjYW4gYmUgb25lIG9mIDwtLXNuIFNFQ05BTUUgfCAtLXJmYzgyMiB8IC0tZG5zIHwgLS1pcCB8IC0tY24gfCAtLWFueT4uCitPUFRJT05TIGNhbiBiZSBvbmUgb2YgPFwtXC1zbiBTRUNOQU1FIHwgXC1cLXJmYzgyMiB8IFwtXC1kbnMgfCBcLVwtaXAgfCBcLVwtY24gfCBcLVwtYW55Pi4KIC5JUAogVGhlIGNlcnRTZWNOYW1lIHRva2VuIHdpbGwgc3BlY2lmeSBob3cgdG8gbWFwIGEgY2VydGlmaWNhdGUgZmllbGQgZnJvbQotdGhlIGNsaWVudCdzIFguNTA5IGNlcnRpZmljYXRlIHRvIGEgU05NUHYzIHVzZXJuYW1lLiAgVXNlIHRoZSAtLXNuCit0aGUgY2xpZW50J3MgWC41MDkgY2VydGlmaWNhdGUgdG8gYSBTTk1QdjMgdXNlcm5hbWUuICBVc2UgdGhlIFwtXC1zbgogU0VDTkFNRSBmbGFnIHRvIGRpcmVjdGx5IHNwZWNpZnkgYSBzZWN1cml0eU5hbWUgZm9yIGEgZ2l2ZW4KIGNlcnRpZmljYXRlLiAgVGhlIG90aGVyIGZsYWdzIGV4dHJhY3QgYSBwYXJ0aWN1bGFyIGNvbXBvbmVudCBvZiB0aGUKIGNlcnRpZmljYXRlIGZvciB1c2UgYXMgYSBzbm1wdjMgc2VjdXJpdHlOYW1lLiAgVGhlc2UgZmllbGRzIGFyZSBvbmUKLW9mOiBBIFN1YmplY3RBbHROYW1lIGNvbnRhaW5pbmcgYW4gcmZjODIyIHZhbHVlIChlZyBoYXJkYWtlckBuZXQtc25tcC5vcmcpLAotQSBTdWJqZWN0QWx0TmFtZSBjb250YWluaW5nIGEgZG5zIG5hbWUgdmFsdWUgKGVnIGZvby5uZXQtc25tcC5vcmcpLAorb2Y6IEEgU3ViamVjdEFsdE5hbWUgY29udGFpbmluZyBhbiByZmM4MjIgdmFsdWUgKGVnIGhhcmRha2VyQG5ldFwtc25tcC5vcmcpLAorQSBTdWJqZWN0QWx0TmFtZSBjb250YWluaW5nIGEgZG5zIG5hbWUgdmFsdWUgKGVnIGZvby5uZXRcLXNubXAub3JnKSwKIGFuIElQIGFkZHJlc3MgKGVnIDE5Mi4wLjIuMSkgb3IgYSBjb21tb24gbmFtZSAiV2VzIEhhcmRha2VyIi4gIFRoZQotLS1hbnkgZmxhZyBzcGVjaWZpZXMgdGhhdCBhbnkgb2YgdGhlIHN1YmplY0FsdE5hbWUgZmllbGRzIG1heSBiZQorXC1cLWFueSBmbGFnIHNwZWNpZmllcyB0aGF0IGFueSBvZiB0aGUgc3ViamVjQWx0TmFtZSBmaWVsZHMgbWF5IGJlCiB1c2VkLiAgTWFrZSBzdXJlIG9uY2UgYSBzZWN1cml0eU5hbWUgaGFzIGJlZW4gc2VsZWN0ZWQgdGhhdCBpdCBpcwogZ2l2ZW4gYXV0aG9yaXphdGlvbiB2aWEgdGhlIFZBQ00gY29udHJvbHMgZGlzY3Vzc2VkIGxhdGVyIGluIHRoaXMKIG1hbnVhbCBwYWdlLgogLklQCi1TZWUgdGhlIGh0dHA6Ly93d3cubmV0LXNubXAub3JnL3dpa2kvaW5kZXgucGhwL1VzaW5nX0RUTFMgd2ViIHBhZ2UgZm9yCitTZWUgdGhlIGh0dHA6Ly93d3cubmV0XC1zbm1wLm9yZy93aWtpL2luZGV4LnBocC9Vc2luZ19EVExTIHdlYiBwYWdlIGZvcgogbW9yZSBkZXRhaWxlZCBpbnN0cnVjdGlvbnMgZm9yIHNldHRpbmcgdXAgKEQpVExTLgogLklQICJ0cnVzdENlcnQgPHNwZWNpZmllcj4iCiBGb3IgWDUwOSB0byBwcm9wZXJseSB2ZXJpZnkgYSBjZXJ0aWZpY2F0ZSwgaXQgc2hvdWxkIGJlIHZlcmlmaWFibGUgdXAKQEAgLTIyNyw3ICsyMjEsNyBAQAogY29ubmVjdGlvbnMgZnJvbSAoRClUTFMgdGhhdCB5b3UgdXNlIHRoZSAidHNtIiBzZWN1cml0eSBtb2RlbC4gIEUuRy46CiAuZmkKIAotcnd1c2VyIC1zIHRzbSBoYXJkYWtlckBuZXQtc25tcC5vcmcKK3J3dXNlciBcLXMgdHNtIGhhcmRha2VyQG5ldFwtc25tcC5vcmcKIC5maQogLlNTIFNOTVB2MyBvdmVyIFNTSCBTdXBwb3J0CiBUbyB1c2UgU1NILCB5b3UnbGwgbmVlZCB0byBjb25maWd1cmUgc3NoZCB0byBpbnZva2UgdGhlIHNzaHRvc25tcApAQCAtMjY1LDEwICsyNTksMTAgQEAKIC5TUyBTTk1QdjMgVVNNIFVzZXJzCiBUbyB1c2UgdGhlIFVTTSBiYXNlZCBTTk1QdjMtc3BlY2lmaWMgdXNlcnMsIHlvdSdsbCBuZWVkIHRvIGNyZWF0ZQogdGhlbS4gIEl0IGlzIHJlY29tbWVuZGVkIHlvdQotLkIgInVzZSB0aGUgbmV0LXNubXAtY29uZmlnIGNvbW1hbmQiCisuQiAidXNlIHRoZSBuZXRcLXNubXBcLWNvbmZpZyBjb21tYW5kIgogdG8gZG8gdGhpcywgYnV0IHlvdSBjYW4gYWxzbyBkbyBpdCBieSBkaXJlY3RseSBzcGVjaWZ5aW5nIGNyZWF0ZVVzZXIKIGRpcmVjdGl2ZXMgeW91cnNlbGYgaW5zdGVhZDoKLS5JUCAiY3JlYXRlVXNlciBbLWUgRU5HSU5FSURdIHVzZXJuYW1lIChNRDV8U0hBKSBhdXRocGFzc3BocmFzZSBbREVTfEFFU10gW3ByaXZwYXNzcGhyYXNlXSIKKy5JUCAiY3JlYXRlVXNlciBbXC1lIEVOR0lORUlEXSB1c2VybmFtZSAoTUQ1fFNIQSkgYXV0aHBhc3NwaHJhc2UgW0RFU3xBRVNdIFtwcml2cGFzc3BocmFzZV0iCiAuSVAKIE1ENSBhbmQgU0hBIGFyZSB0aGUgYXV0aGVudGljYXRpb24gdHlwZXMgdG8gdXNlLiAgREVTIGFuZCBBRVMgYXJlIHRoZQogcHJpdmFjeSBwcm90b2NvbHMgdG8gdXNlLiAgSWYgdGhlIHByaXZhY3kKQEAgLTI4OCw3ICsyODIsNyBAQAogY29tbWFuZC4KIC5JUAogSW5zdGVhZCBvZiBmaWd1cmluZyBvdXQgaG93IHRvIHVzZSB0aGlzIGRpcmVjdGl2ZSBhbmQgd2hlcmUgdG8gcHV0IGl0Ci0oc2VlIGJlbG93KSwganVzdCBydW4gIm5ldC1zbm1wLWNvbmZpZyAtLWNyZWF0ZS1zbm1wdjMtdXNlciIgaW5zdGVhZCwKKyhzZWUgYmVsb3cpLCBqdXN0IHJ1biAibmV0XC1zbm1wXC1jb25maWcgXC1cLWNyZWF0ZVwtc25tcHYzXC11c2VyIiBpbnN0ZWFkLAogd2hpY2ggd2lsbCBhZGQgb25lIG9mIHRoZXNlIGxpbmVzIHRvIHRoZSByaWdodCBwbGFjZS4KIC5JUAogVGhpcyBkaXJlY3RpdmUgc2hvdWxkIGJlIHBsYWNlZCBpbnRvIHRoZQpAQCAtMzAxLDEyICsyOTUsMTIgQEAKIGl0IGNhbiBiZS4KIC5JUAogSWYgeW91IG5lZWQgdG8gbG9jYWxpemUgdGhlIHVzZXIgdG8gYSBwYXJ0aWN1bGFyIEVuZ2luZUlEICh0aGlzIGlzCi11c2VmdWwgbW9zdGx5IGluIHRoZSBzaW1pbGFyIHNubXB0cmFwZC5jb25mIGZpbGUpLCB5b3UgY2FuIHVzZSB0aGUgLWUKK3VzZWZ1bCBtb3N0bHkgaW4gdGhlIHNpbWlsYXIgc25tcHRyYXBkLmNvbmYgZmlsZSksIHlvdSBjYW4gdXNlIHRoZSBcLWUKIGFyZ3VtZW50IHRvIHNwZWNpZnkgYW4gRW5naW5lSUQgYXMgYSBoZXggdmFsdWUgKEVHLCAiMHgwMTAyMDMwNCIpLgogLklQCiBJZiB5b3Ugd2FudCB0byBnZW5lcmF0ZSBlaXRoZXIgeW91ciBtYXN0ZXIgb3IgbG9jYWxpemVkIGtleXMgZGlyZWN0bHksCi1yZXBsYWNlIHRoZSBnaXZlbiBwYXNzd29yZCB3aXRoIGEgaGV4c3RyaW5nIChwcmVjZWVkZWQgYnkgYSAiMHgiKSBhbmQKLXByZWNlZGUgdGhlIGhleCBzdHJpbmcgYnkgYSAtbSBvciAtbCB0b2tlbiAocmVzcGVjdGl2ZWx5KS4gIEVHczoKK3JlcGxhY2UgdGhlIGdpdmVuIHBhc3N3b3JkIHdpdGggYSBoZXhzdHJpbmcgKHByZWNlZGVkIGJ5IGEgIjB4IikgYW5kCitwcmVjZWRlIHRoZSBoZXggc3RyaW5nIGJ5IGEgXC1tIG9yIFwtbCB0b2tlbiAocmVzcGVjdGl2ZWx5KS4gIEVHczoKIC5JUAogLlJTCiAubmYKQEAgLTMxNCw4ICszMDgsOCBAQAogY291bnRpbmcgcHVycG9zZXMuICBQbGVhc2UgZ2VuZXJhdGUgcmFuZG9tIGtleXMgaW5zdGVhZCBvZiB1c2luZwogdGhlc2UgZXhhbXBsZXNdCiAKLWNyZWF0ZVVzZXIgbXl1c2VyIFNIQSAtbCAweDAwMDEwMjAzMDQwNTA2MDcwODA5MDAwMTAyMDMwNDA1MDYwNzA4MDkgQUVTIC1sIDB4MDAwMTAyMDMwNDA1MDYwNzA4MDkwMDAxMDIwMzA0MDUKLWNyZWF0ZVVzZXIgbXl1c2VyIFNIQSAtbSAweDAwMDEwMjAzMDQwNTA2MDcwODA5MDAwMTAyMDMwNDA1MDYwNzA4MDkgQUVTIC1tIDB4MDAwMTAyMDMwNDA1MDYwNzA4MDkwMDAxMDIwMzA0MDUwNjA3MDgwOQorY3JlYXRlVXNlciBteXVzZXIgU0hBIFwtbCAweDAwMDEwMjAzMDQwNTA2MDcwODA5MDAwMTAyMDMwNDA1MDYwNzA4MDkgQUVTIFwtbCAweDAwMDEwMjAzMDQwNTA2MDcwODA5MDAwMTAyMDMwNDA1CitjcmVhdGVVc2VyIG15dXNlciBTSEEgXC1tIDB4MDAwMTAyMDMwNDA1MDYwNzA4MDkwMDAxMDIwMzA0MDUwNjA3MDgwOSBBRVMgXC1tIDB4MDAwMTAyMDMwNDA1MDYwNzA4MDkwMDAxMDIwMzA0MDUwNjA3MDgwOQogLmZpCiAuUkUKIC5JUApAQCAtMzMzLDggKzMyNyw4IEBACiBNb3N0IHNpbXBsZSBhY2Nlc3MgY29udHJvbCByZXF1aXJlbWVudHMgY2FuIGJlIHNwZWNpZmllZCB1c2luZyB0aGUKIGRpcmVjdGl2ZXMgXGZJcm91c2VyXGZSL1xmSXJ3dXNlclxmUiAoZm9yIFNOTVB2Mykgb3IKIFxmSXJvY29tbXVuaXR5XGZSL1xmSXJ3Y29tbXVuaXR5XGZSIChmb3IgU05NUHYxIG9yIFNOTVB2MmMpLgotLklQICJyb3VzZXIgWy1zIFNFQ01PREVMXSBVU0VSIFtub2F1dGh8YXV0aHxwcml2IFtPSUQgfCAtViBWSUVXIFtDT05URVhUXV1dIgotLklQICJyd3VzZXIgWy1zIFNFQ01PREVMXSAgVVNFUiBbbm9hdXRofGF1dGh8cHJpdiBbT0lEIHwgLVYgVklFVyBbQ09OVEVYVF1dXSIKKy5JUCAicm91c2VyIFtcLXMgU0VDTU9ERUxdIFVTRVIgW25vYXV0aHxhdXRofHByaXYgW09JRCB8IFwtViBWSUVXIFtDT05URVhUXV1dIgorLklQICJyd3VzZXIgW1wtcyBTRUNNT0RFTF0gIFVTRVIgW25vYXV0aHxhdXRofHByaXYgW09JRCB8IFwtViBWSUVXIFtDT05URVhUXV1dIgogc3BlY2lmeSBhbiBTTk1QdjMgdXNlciB0aGF0IHdpbGwgYmUgYWxsb3dlZCByZWFkLW9ubHkgKEdFVCBhbmQgR0VUTkVYVCkKIG9yIHJlYWQtd3JpdGUgKEdFVCwgR0VUTkVYVCBhbmQgU0VUKSBhY2Nlc3MgcmVzcGVjdGl2ZWx5LgogQnkgZGVmYXVsdCwgdGhpcyB3aWxsIHByb3ZpZGUgYWNjZXNzIHRvIHRoZSBmdWxsIE9JRCB0cmVlIGZvciBhdXRoZW50aWNhdGVkCkBAIC0zNTMsOCArMzQ3LDggQEAKIGFjY2VzcyBjb250cm9sIHNldHRpbmdzKS4gIFRoZSBkZWZhdWx0IHNlY3VyaXR5IG1vZGVsIGlzICJ1c20iIGFuZCB0aGUKIG90aGVyIGNvbW1vbiBzZWN1cml0eSBtb2RlbHMgYXJlIGxpa2VseSAidHNtIiB3aGVuIHVzaW5nIChEKVRMUyBvciBTU0gKIHN1cHBvcnQgYW5kICJrc20iIGlmIHRoZSBLZXJiZXJvcyBzdXBwb3J0IGhhcyBiZWVuIGNvbXBpbGVkIGluLgotLklQICJyb2NvbW11bml0eSBDT01NVU5JVFkgW1NPVVJDRSBbT0lEIHwgLVYgVklFVyBbQ09OVEVYVF1dXSIKLS5JUCAicndjb21tdW5pdHkgQ09NTVVOSVRZIFtTT1VSQ0UgW09JRCB8IC1WIFZJRVcgW0NPTlRFWFRdXV0iCisuSVAgInJvY29tbXVuaXR5IENPTU1VTklUWSBbU09VUkNFIFtPSUQgfCBcLVYgVklFVyBbQ09OVEVYVF1dXSIKKy5JUCAicndjb21tdW5pdHkgQ09NTVVOSVRZIFtTT1VSQ0UgW09JRCB8IFwtViBWSUVXIFtDT05URVhUXV1dIgogc3BlY2lmeSBhbiBTTk1QdjEgb3IgU05NUHYyYyBjb21tdW5pdHkgdGhhdCB3aWxsIGJlIGFsbG93ZWQgcmVhZC1vbmx5CiAoR0VUIGFuZCBHRVRORVhUKSBvciByZWFkLXdyaXRlIChHRVQsIEdFVE5FWFQgYW5kIFNFVCkgYWNjZXNzIHJlc3BlY3RpdmVseS4KIEJ5IGRlZmF1bHQsIHRoaXMgd2lsbCBwcm92aWRlIGFjY2VzcyB0byB0aGUgZnVsbCBPSUQgdHJlZSBmb3Igc3VjaCByZXF1ZXN0cywKQEAgLTM2NCw4ICszNTgsOCBAQAogdGhhdCBjb21tdW5pdHkgdG8gdGhlIHN1YnRyZWUgcm9vdGVkIGF0IHRoZSBnaXZlbiBPSUQsIG9yIG5hbWVkIHZpZXcuCiBDb250ZXh0cyBhcmUgdHlwaWNhbGx5IGxlc3MgcmVsZXZhbnQgdG8gY29tbXVuaXR5LWJhc2VkIFNOTVAgdmVyc2lvbnMsCiBidXQgdGhlIHNhbWUgYmVoYXZpb3VyIGFwcGxpZXMgaGVyZS4KLS5JUCAicm9jb21tdW5pdHk2IENPTU1VTklUWSBbU09VUkNFIFtPSUQgfCAtViBWSUVXIFtDT05URVhUXV1dIgotLklQICJyd2NvbW11bml0eTYgQ09NTVVOSVRZIFtTT1VSQ0UgW09JRCB8IC1WIFZJRVcgW0NPTlRFWFRdXV0iCisuSVAgInJvY29tbXVuaXR5NiBDT01NVU5JVFkgW1NPVVJDRSBbT0lEIHwgXC1WIFZJRVcgW0NPTlRFWFRdXV0iCisuSVAgInJ3Y29tbXVuaXR5NiBDT01NVU5JVFkgW1NPVVJDRSBbT0lEIHwgXC1WIFZJRVcgW0NPTlRFWFRdXV0iCiBhcmUgZGlyZWN0aXZlcyByZWxhdGluZyB0byByZXF1ZXN0cyByZWNlaXZlZCB1c2luZyBJUHY2CiAoaWYgdGhlIGFnZW50IHN1cHBvcnRzIHN1Y2ggdHJhbnNwb3J0IGRvbWFpbnMpLgogVGhlIGludGVycHJldGF0aW9uIG9mIHRoZSBTT1VSQ0UsIE9JRCwgVklFVyBhbmQgQ09OVEVYVCB0b2tlbnMgYXJlIGV4YWN0bHkKQEAgLTM4NywxMCArMzgxLDEwIEBACiBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZXMuCiAuU1MgVkFDTSBDb25maWd1cmF0aW9uCiBUaGUgZnVsbCBmbGV4aWJpbGl0eSBvZiB0aGUgVkFDTSBpcyBhdmFpbGFibGUgdXNpbmcgZm91ciBjb25maWd1cmF0aW9uCi1kaXJlY3RpdmVzIC0gXGZJY29tMnNlY1xmUiwgXGZJZ3JvdXBcZlIsIFxmSXZpZXdcZlIgYW5kIFxmSWFjY2Vzc1xmUi4KK2RpcmVjdGl2ZXMgXC0gXGZJY29tMnNlY1xmUiwgXGZJZ3JvdXBcZlIsIFxmSXZpZXdcZlIgYW5kIFxmSWFjY2Vzc1xmUi4KIFRoZXNlIHByb3ZpZGUgZGlyZWN0IGNvbmZpZ3VyYXRpb24gb2YgdGhlIHVuZGVybHlpbmcgVkFDTSB0YWJsZXMuCi0uSVAgImNvbTJzZWMgIFstQ24gQ09OVEVYVF0gU0VDTkFNRSBTT1VSQ0UgQ09NTVVOSVRZIgotLklQICJjb20yc2VjNiBbLUNuIENPTlRFWFRdIFNFQ05BTUUgU09VUkNFIENPTU1VTklUWSIKKy5JUCAiY29tMnNlYyAgW1wtQ24gQ09OVEVYVF0gU0VDTkFNRSBTT1VSQ0UgQ09NTVVOSVRZIgorLklQICJjb20yc2VjNiBbXC1DbiBDT05URVhUXSBTRUNOQU1FIFNPVVJDRSBDT01NVU5JVFkiCiBtYXAgYW4gU05NUHYxIG9yIFNOTVB2MmMgY29tbXVuaXR5IHN0cmluZyB0byBhIHNlY3VyaXR5IG5hbWUgLSBlaXRoZXIgZnJvbQogYSBwYXJ0aWN1bGFyIHJhbmdlIG9mIHNvdXJjZSBhZGRyZXNzZXMsIG9yIGdsb2JhbGx5IChcZkkiZGVmYXVsdCJcZlIpLgogQSByZXN0cmljdGVkIHNvdXJjZSBjYW4gZWl0aGVyIGJlIGEgc3BlY2lmaWMgaG9zdG5hbWUgKG9yIGFkZHJlc3MpLCBvcgpAQCAtNDAyLDEwICszOTYsMTAgQEAKIGNvbWJpbmF0aW9uIHRoYXQgbWF0Y2hlcyB0aGUgaW5jb21pbmcgcmVxdWVzdCB3aWxsIGJlIHNlbGVjdGVkLgogVmFyaW91cyBzb3VyY2UvY29tbXVuaXR5IGNvbWJpbmF0aW9ucyBjYW4gYWxzbyBtYXAgdG8gdGhlIHNhbWUgc2VjdXJpdHkgbmFtZS4KIC5JUAotSWYgYSBDT05URVhUIGlzIHNwZWNpZmllZCAodXNpbmcgXGZJLUNuXGZSKSwgdGhlIGNvbW11bml0eSBzdHJpbmcgd2lsbCBiZQorSWYgYSBDT05URVhUIGlzIHNwZWNpZmllZCAodXNpbmcgXGZJXC1DblxmUiksIHRoZSBjb21tdW5pdHkgc3RyaW5nIHdpbGwgYmUKIG1hcHBlZCB0byBhIHNlY3VyaXR5IG5hbWUgaW4gdGhlIG5hbWVkIFNOTVB2MyBjb250ZXh0LiBPdGhlcndpc2UgdGhlCiBkZWZhdWx0IGNvbnRleHQgKCIiKSB3aWxsIGJlIHVzZWQuCi0uSVAgImNvbTJzZWN1bml4IFstQ24gQ09OVEVYVF0gU0VDTkFNRSBTT0NLUEFUSCBDT01NVU5JVFkiCisuSVAgImNvbTJzZWN1bml4IFtcLUNuIENPTlRFWFRdIFNFQ05BTUUgU09DS1BBVEggQ09NTVVOSVRZIgogaXMgdGhlIFVuaXggZG9tYWluIHNvY2tldHMgdmVyc2lvbiBvZiBcZkljb20yc2VjXGZSLgogLklQICJncm91cCBHUk9VUCB7djF8djJjfHVzbXx0c218a3NtfSBTRUNOQU1FIgogbWFwcyBhIHNlY3VyaXR5IG5hbWUgKGluIHRoZSBzcGVjaWZpZWQgc2VjdXJpdHkgbW9kZWwpIGludG8KQEAgLTQ3MSw3ICs0NjUsNyBAQAogY29uY2VybmVkLCB0aGUgdHdvIG1haW4gdmlldyB0eXBlcyBhcmUgXGZJcmVhZFxmUiBhbmQgXGZJd3JpdGVcZlIsCiBjb3JyZXNwb25kaW5nIHRvIHRoZSBSRUFEIGFuZCBXUklURSB2aWV3cyBvZiB0aGUgbWFpbiBcZklhY2Nlc3NcZlIgZGlyZWN0aXZlLgogU2VlIHRoZSAnc25tcHRyYXBkLmNvbmYoNSknIG1hbiBwYWdlIGZvciBkaXNjdXNzaW9uIG9mIG90aGVyIHZpZXcgdHlwZXMuCi0uSVAgImF1dGhjb21tdW5pdHkgVFlQRVMgIENPTU1VTklUWSAgIFtTT1VSQ0UgW09JRCB8IC1WIFZJRVcgW0NPTlRFWFRdXV0iCisuSVAgImF1dGhjb21tdW5pdHkgVFlQRVMgIENPTU1VTklUWSAgIFtTT1VSQ0UgW09JRCB8IFwtViBWSUVXIFtDT05URVhUXV1dIgogaXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlIFxmSXJvY29tbXVuaXR5XGZSL1xmSXJ3Y29tbXVuaXR5XGZSIGRpcmVjdGl2ZXMuCiBUWVBFUyB3aWxsIHVzdWFsbHkgYmUgXGZJcmVhZFxmUiBvciBcZklyZWFkLHdyaXRlXGZSIHJlc3BlY3RpdmVseS4KIFRoZSB2aWV3IHNwZWNpZmljYXRpb24gY2FuIGVpdGhlciBiZSBhbiBPSUQgc3VidHJlZSAoYXMgYmVmb3JlKSwKQEAgLTQ4MCwyMCArNDc0LDIwIEBACiB0aGVuIGFjY2VzcyB3aWxsIGJlIGFsbG93ZWQgdG8gdGhlIGZ1bGwgT0lEIHRyZWUuCiBJZiBDT05URVhUIGlzIHNwZWNpZmllZCwgYWNjZXNzIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoaXMgU05NUHYzIGNvbnRleHQuCiBPdGhlcndpc2UgdGhlIGRlZmF1bHQgY29udGV4dCAoIiIpIGlzIHVzZWQuCi0uSVAgImF1dGh1c2VyICAgVFlQRVMgWy1zIE1PREVMXSBVU0VSICBbTEVWRUwgW09JRCB8IC1WIFZJRVcgW0NPTlRFWFRdXV0iCisuSVAgImF1dGh1c2VyICAgVFlQRVMgW1wtcyBNT0RFTF0gVVNFUiAgW0xFVkVMIFtPSUQgfCBcLVYgVklFVyBbQ09OVEVYVF1dXSIKIGlzIGFuIGFsdGVybmF0aXZlIHRvIHRoZSBcZklyb3VzZXJcZlIvXGZJcnd1c2VyXGZSIGRpcmVjdGl2ZXMuCiBUaGUgZmllbGRzIFRZUEVTLCBPSUQsIFZJRVcgYW5kIENPTlRFWFQgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvcgogXGZJYXV0aGNvbW11bml0eVxmUi4KLS5JUCAiYXV0aGdyb3VwICBUWVBFUyBbLXMgTU9ERUxdIEdST1VQIFtMRVZFTCBbT0lEIHwgLVYgVklFVyBbQ09OVEVYVF1dXSIKKy5JUCAiYXV0aGdyb3VwICBUWVBFUyBbXC1zIE1PREVMXSBHUk9VUCBbTEVWRUwgW09JRCB8IFwtViBWSUVXIFtDT05URVhUXV1dIgogaXMgYSBjb21wYW5pb24gdG8gdGhlIFxmSWF1dGh1c2VyXGZSIGRpcmVjdGl2ZSwgc3BlY2lmeWluZyBhY2Nlc3MKIGZvciBhIHBhcnRpY3VsYXIgZ3JvdXAgKGRlZmluZWQgdXNpbmcgdGhlIFxmSWdyb3VwXGZSIGRpcmVjdGl2ZSBhcyB1c3VhbCkuCiBCb3RoIFxmSWF1dGh1c2VyXGZSIGFuZCBcZklhdXRoZ3JvdXBcZlIgZGVmYXVsdCB0byBhdXRoZW50aWNhdGVkIHJlcXVlc3RzIC0KIExFVkVMIGNhbiBhbHNvIGJlIHNwZWNpZmllZCBhcyBcZklub2F1dGhcZlIgb3IgXGZJcHJpdlxmUiB0byBhbGxvdwogdW5hdXRoZW50aWNhdGVkIHJlcXVlc3RzLCBvciByZXF1aXJlIGVuY3J5cHRpb24gcmVzcGVjdGl2ZWx5LgogQm90aCBcZklhdXRodXNlclxmUiBhbmQgXGZJYXV0aGdyb3VwXGZSIGRpcmVjdGl2ZXMgYWxzbyBkZWZhdWx0IHRvIGNvbmZpZ3VyaW5nCi1hY2Nlc3MgZm9yIFNOTVB2My9VU00gcmVxdWVzdHMgLSB1c2UgdGhlICctcycgZmxhZyB0byBzcGVjaWZ5IGFuIGFsdGVybmF0aXZlCithY2Nlc3MgZm9yIFNOTVB2My9VU00gcmVxdWVzdHMgLSB1c2UgdGhlICdcLXMnIGZsYWcgdG8gc3BlY2lmeSBhbiBhbHRlcm5hdGl2ZQogc2VjdXJpdHkgbW9kZWwgKHVzaW5nIHRoZSBzYW1lIHZhbHVlcyBhcyBmb3IgXGZJYWNjZXNzXGZSIGFib3ZlKS4KLS5JUCAiYXV0aGFjY2VzcyBUWVBFUyBbLXMgTU9ERUxdIEdST1VQIFZJRVcgW0xFVkVMIFtDT05URVhUXV0iCisuSVAgImF1dGhhY2Nlc3MgVFlQRVMgW1wtcyBNT0RFTF0gR1JPVVAgVklFVyBbTEVWRUwgW0NPTlRFWFRdXSIKIGFsc28gY29uZmlndXJlcyB0aGUgYWNjZXNzIGZvciBhIHBhcnRpY3VsYXIgZ3JvdXAsCiBzcGVjaWZ5aW5nIHRoZSBuYW1lIGFuZCB0eXBlIG9mIHZpZXcgdG8gYXBwbHkuIFRoZSBNT0RFTCBhbmQgTEVWRUwgZmllbGRzCiBhcmUgaW50ZXJwcmV0ZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvciBcZklhdXRoZ3JvdXBcZlIuCkBAIC01MTksNyArNTEzLDcgQEAKIC5JUCAic3lzTmFtZSBTVFJJTkciCiBzZXQgdGhlIHN5c3RlbSBsb2NhdGlvbiwgc3lzdGVtIGNvbnRhY3Qgb3Igc3lzdGVtIG5hbWUKIChcZkNzeXNMb2NhdGlvbi4wXGZSLCBcZkNzeXNDb250YWN0LjBcZlIgYW5kIFxmQ3N5c05hbWUuMFxmUikgZm9yIHRoZSBhZ2VudCByZXNwZWN0aXZlbHkuCi1PcmRpbmFyaWx5IHRoZXNlIG9iamVjdHMgYXJlIHdyaXRlYWJsZSB2aWEgc3VpdGFibHkgYXV0aG9yaXplZCBTTk1QIFNFVAorT3JkaW5hcmlseSB0aGVzZSBvYmplY3RzIGFyZSB3cml0YWJsZSB2aWEgc3VpdGFibHkgYXV0aG9yaXplZCBTTk1QIFNFVAogcmVxdWVzdHMuICBIb3dldmVyLCBzcGVjaWZ5aW5nIG9uZSBvZiB0aGVzZSBkaXJlY3RpdmVzIG1ha2VzIHRoZQogY29ycmVzcG9uZGluZyBvYmplY3QgcmVhZC1vbmx5LCBhbmQgYXR0ZW1wdHMgdG8gU0VUIGl0IHdpbGwgcmVzdWx0IGluCiBhIFxmSW5vdFdyaXRhYmxlXGZSIGVycm9yIHJlc3BvbnNlLgpAQCAtNTM3LDcgKzUzMSw3IEBACiAuSVAgImludGVyZmFjZSBOQU1FIFRZUEUgU1BFRUQiCiBjYW4gYmUgdXNlZCB0byBwcm92aWRlIGFwcHJvcHJpYXRlIHR5cGUgYW5kIHNwZWVkIHNldHRpbmdzIGZvcgogaW50ZXJmYWNlcyB3aGVyZSB0aGUgYWdlbnQgZmFpbHMgdG8gZGV0ZXJtaW5lIHRoaXMgaW5mb3JtYXRpb24gY29ycmVjdGx5LgotVFlQRSBpcyBhIHR5cGUgdmFsdWUgYXMgZ2l2ZW4gaW4gdGhlIElBTkFpZlR5cGUtTUlCLAorVFlQRSBpcyBhIHR5cGUgdmFsdWUgYXMgZ2l2ZW4gaW4gdGhlIElBTkFpZlR5cGVcLU1JQiwKIGFuZCBjYW4gYmUgc3BlY2lmaWVkIG51bWVyaWNhbGx5IG9yIGJ5IG5hbWUgKGFzc3VtaW5nIHRoaXMgTUlCIGlzIGxvYWRlZCkuCiAuSVAgImludGVyZmFjZV9mYWRlb3V0IFRJTUVPVVQiCiBzcGVjaWZpZXMsIGZvciBob3cgbG9uZyB0aGUgYWdlbnQga2VlcHMgZW50cmllcyBpbiBcZkNpZlRhYmxlXGZSIGFmdGVyCkBAIC01OTAsMTMgKzU4NCwzMiBAQAogYXMgJ0ZpeGVkIERpc2tzJywgYW5kIHRoaXMgaXMgc3RpbGwgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLgogU2V0dGluZyB0aGlzIGRpcmVjdGl2ZSB0byAnMScgcmVwb3J0cyBzdWNoIGZpbGUgc3lzdGVtcyBhcwogXCdOZXR3b3JrIERpc2tzJywgYXMgcmVxdWlyZWQgYnkgdGhlIEhvc3QgUmVzb3VyY2VzIE1JQi4KKy5JUCAicmVhbFN0b3JhZ2VVbml0cyIKK2NvbnRyb2xscyBob3cgdGhlIGFnZW50IHJlcG9ydHMgaHJTdG9yYWdlQWxsb2NhdGlvblVuaXRzLCBoclN0b3JhZ2VTaXplIGFuZAoraHJTdG9yYWdlVXNlZCBpbiBoclN0b3JhZ2VUYWJsZS4KK0ZvciBiaWcgc3RvcmFnZSBkcml2ZXMgd2l0aCBzbWFsbCBhbGxvY2F0aW9uIHVuaXRzIHRoZSBhZ2VudCByZS1jYWxjdWxhdGVzCit0aGVzZSB2YWx1ZXMgc28gdGhleSBhbGwgZml0IEludGVnZXIzMiBhbmQKK2hyU3RvcmFnZUFsbG9jYXRpb25Vbml0cyB4IGhyU3RvcmFnZVNpemUKK2dpdmVzIHJlYWwgc2l6ZSBvZiB0aGUgc3RvcmFnZS4KKy5SUworLklQICJFeGFtcGxlOiIKK0xpbnV4IHhmcyAxNlRCIGZpbGVzeXN0ZW0gd2l0aCA0MDk2IGJ5dGVzIGxhcmdlIGJsb2NrcyB3aWxsIGJlCityZXBvcnRlZCBhcyAgaHJTdG9yYWdlQWxsb2NhdGlvblVuaXRzID0gODE5MiBhbmQgaHJTdG9yYWdlU2l6ZSA9IDIxNDc0ODM2NDcsCitzbyA4MTkyIHggMjE0NzQ4MzY0NyBnaXZlcyByZWFsIHNpemUgb2YgdGhlIGZpbGVzeXN0ZW0gKD0xNiBUQikuCisuUkUKKy5JUAorU2V0dGluZyB0aGlzIGRpcmVjdGl2ZSB0byAnMScgdHVybnMgb2ZmCit0aGlzIGNhbGN1bGF0aW9uIGFuZCB0aGUgYWdlbnQgcmVwb3J0cyByZWFsIGhyU3RvcmFnZUFsbG9jYXRpb25Vbml0cywgYnV0IGl0CittaWdodCByZXBvcnQgd3JvbmcgaHJTdG9yYWdlU2l6ZSBmb3IgYmlnIGRyaXZlcyBiZWNhdXNlIHRoZSB2YWx1ZSB3b24ndCBmaXQgaW50bworSW50ZWdlcjMyLiBJbiB0aGlzIGNhc2UsIGhyU3RvcmFnZUFsbG9jYXRpb25Vbml0cyB4IGhyU3RvcmFnZVNpemUgd29uJ3QgZ2l2ZQorcmVhbCBzaXplIG9mIHRoZSBzdG9yYWdlLgogLlNTIFByb2Nlc3MgTW9uaXRvcmluZyAKIFRoZSBcZkNoclNXUnVuXGZSIGdyb3VwIG9mIHRoZSBIb3N0IFJlc291cmNlcyBNSUIgcHJvdmlkZXMKIGluZm9ybWF0aW9uIGFib3V0IGluZGl2aWR1YWwgcHJvY2Vzc2VzIHJ1bm5pbmcgb24gdGhlIGxvY2FsIHN5c3RlbS4KLVRoZSBcZkNwclRhYmxlXGZSIG9mIHRoZSBVQ0QtU05NUC1NSUIgY29tcGxlbWVudHMgdGhpcyBieSByZXBvcnRpbmcKK1RoZSBcZkNwclRhYmxlXGZSIG9mIHRoZSBVQ0RcLVNOTVBcLU1JQiBjb21wbGVtZW50cyB0aGlzIGJ5IHJlcG9ydGluZwogb24gc2VsZWN0ZWQgc2VydmljZXMgKHdoaWNoIG1heSBpbnZvbHZlIG11bHRpcGxlIHByb2Nlc3NlcykuCiBUaGlzIHJlcXVpcmVzIHRoYXQgdGhlIGFnZW50IHdhcyBidWlsdCB3aXRoIHN1cHBvcnQgZm9yIHRoZQotXGZJdWNkLXNubXAvcHJvY1xmUiBtb2R1bGUgKHdoaWNoIGlzIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlCitcZkl1Y2RcLXNubXAvcHJvY1xmUiBtb2R1bGUgKHdoaWNoIGlzIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlCiBkZWZhdWx0IGJ1aWxkIGNvbmZpZ3VyYXRpb24pLgogLklQICJwcm9jIE5BTUUgW01BWCBbTUlOXV0iCiBtb25pdG9ycyB0aGUgbnVtYmVyIG9mIHByb2Nlc3NlcyBjYWxsZWQgTkFNRSAoYXMgcmVwb3J0ZWQgYnkgUFNDTUQpCkBAIC02MzUsNyArNjQ4LDcgQEAKIFxmQ3ByVGFibGVcZlIgd2lsbCBmYWlsIChcZklub1N1Y2hPYmplY3RcZkkpLgogLlNTIERpc2sgVXNhZ2UgTW9uaXRvcmluZwogVGhpcyByZXF1aXJlcyB0aGF0IHRoZSBhZ2VudCB3YXMgYnVpbHQgd2l0aCBzdXBwb3J0IGZvciB0aGUKLVxmSXVjZC1zbm1wL2Rpc2tcZlIgbW9kdWxlICh3aGljaCBpcyBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZQorXGZJdWNkXC1zbm1wL2Rpc2tcZlIgbW9kdWxlICh3aGljaCBpcyBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZQogZGVmYXVsdCBidWlsZCBjb25maWd1cmF0aW9uKS4KIC5JUCAiZGlzayBQQVRIIFsgTUlOU1BBQ0UgfCBNSU5QRVJDRU5UJSBdIgogbW9uaXRvcnMgdGhlIGRpc2sgbW91bnRlZCBhdCBQQVRIIGZvciBhdmFpbGFibGUgZGlzayBzcGFjZS4KQEAgLTY4MSw3ICs2OTQsNyBAQAogdGhlbiB3YWxraW5nIHRoZSBcZkNkc2tUYWJsZVxmUiB3aWxsIGZhaWwgKFxmSW5vU3VjaE9iamVjdFxmSSkuCiAuU1MgRGlzayBJL08gTW9uaXRvcmluZwogVGhpcyByZXF1aXJlcyB0aGF0IHRoZSBhZ2VudCB3YXMgYnVpbHQgd2l0aCBzdXBwb3J0IGZvciB0aGUKLVxmSXVjZC1zbm1wL2Rpc2tpb1xmUiBtb2R1bGUgKHdoaWNoIGlzIG5vdCBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZQorXGZJdWNkXC1zbm1wL2Rpc2tpb1xmUiBtb2R1bGUgKHdoaWNoIGlzIG5vdCBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZQogZGVmYXVsdCBidWlsZCBjb25maWd1cmF0aW9uKS4KIC5QUAogQnkgZGVmYXVsdCwgYWxsIGJsb2NrIGRldmljZXMga25vd24gdG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0gYXJlCkBAIC03MDMsNyArNzE2LDcgQEAKICJyYW0wIgogLlNTIFN5c3RlbSBMb2FkIE1vbml0b3JpbmcKIFRoaXMgcmVxdWlyZXMgdGhhdCB0aGUgYWdlbnQgd2FzIGJ1aWx0IHdpdGggc3VwcG9ydCBmb3IgZWl0aGVyIHRoZQotXGZJdWNkLXNubXAvbG9hZGF2ZVxmUiBtb2R1bGUgb3IgdGhlIFxmSXVjZC1zbm1wL21lbW9yeVxmUiBtb2R1bGUKK1xmSXVjZFwtc25tcC9sb2FkYXZlXGZSIG1vZHVsZSBvciB0aGUgXGZJdWNkXC1zbm1wL21lbW9yeVxmUiBtb2R1bGUKIHJlc3BlY3RpdmVseSAoYm90aCBvZiB3aGljaCBhcmUgaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUKIGRlZmF1bHQgYnVpbGQgY29uZmlndXJhdGlvbikuCiAuSVAgImxvYWQgTUFYMSBbTUFYNSBbTUFYMTVdXSIKQEAgLTczMCw3ICs3NDMsNyBAQAogLlBQCiBVbmxpa2UgdGhlIFxmSXByb2NcZlIgYW5kIFxmSWRpc2tcZlIgZGlyZWN0aXZlcywgd2Fsa2luZyB0aGUKIHdhbGtpbmcgdGhlIFxmQ2xhVGFibGVcZlIgd2lsbCBzdWNjZWVkIChhc3N1bWluZyB0aGUKLVxmSXVjZC1zbm1wL2xvYWRhdmVcZlIgbW9kdWxlIHdhcyBjb25maWd1cmVkIGludG8gdGhlIGFnZW50KSwKK1xmSXVjZFwtc25tcC9sb2FkYXZlXGZSIG1vZHVsZSB3YXMgY29uZmlndXJlZCBpbnRvIHRoZSBhZ2VudCksCiBldmVuIGlmIHRoZSBcZklsb2FkXGZSIGRpcmVjdGl2ZSBpcyBub3QgcHJlc2VudC4KIC5JUCAic3dhcCBNSU4gIgogbW9uaXRvcnMgdGhlIGFtb3VudCBvZiBzd2FwIHNwYWNlIGF2YWlsYWJsZSBvbiB0aGUgbG9jYWwgc3lzdGVtLgpAQCAtNzQ1LDcgKzc1OCw3IEBACiBJZiB0aGlzIGRpcmVjdGl2ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCB0aHJlc2hvbGQgaXMgMTYgTUIuCiAuU1MgTG9nIEZpbGUgTW9uaXRvcmluZwogVGhpcyByZXF1aXJlcyB0aGF0IHRoZSBhZ2VudCB3YXMgYnVpbHQgd2l0aCBzdXBwb3J0IGZvciBlaXRoZXIgdGhlCi1cZkl1Y2Qtc25tcC9maWxlXGZSIG9yIFxmSXVjZC1zbm1wL2xvZ21hdGNoXGZSIG1vZHVsZXMgcmVzcGVjdGl2ZWx5CitcZkl1Y2RcLXNubXAvZmlsZVxmUiBvciBcZkl1Y2RcLXNubXAvbG9nbWF0Y2hcZlIgbW9kdWxlcyByZXNwZWN0aXZlbHkKIChib3RoIG9mIHdoaWNoIGFyZSBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZQogZGVmYXVsdCBidWlsZCBjb25maWd1cmF0aW9uKS4KIC5JUCAiZmlsZSBGSUxFIFtNQVhTSVpFXSIKQEAgLTc3Miw3ICs3ODUsNyBAQAogLlJTCiAuSVAgTkFNRQogbmFtZSBvZiB0aGUgbG9nbWF0Y2ggaW5zdGFuY2UgKHdpbGwgYXBwZWFyIGFzIGxvZ01hdGNoTmFtZSB1bmRlcgotbG9nTWF0Y2gvbG9nTWF0Y2hUYWJsZS9sb2dNYXRjaEVudHJ5L2xvZ01hdGNoTmFtZSBpbiB0aGUgdWNkLXNubXAgTUlCIHRyZWUpCitsb2dNYXRjaC9sb2dNYXRjaFRhYmxlL2xvZ01hdGNoRW50cnkvbG9nTWF0Y2hOYW1lIGluIHRoZSB1Y2RcLXNubXAgTUlCIHRyZWUpCiAuSVAgRklMRQogYWJzb2x1dGUgcGF0aCB0byB0aGUgbG9nZmlsZSB0byBiZSBtb25pdG9yZWQuIE5vdGUgdGhhdCB0aGlzIHBhdGgKIGNhbiBjb250YWluIGRhdGUvdGltZSBkaXJlY3RpdmVzIChsaWtlIGluIHRoZSBVTklYICdkYXRlJyBjb21tYW5kKS4gU2VlIHRoZQpAQCAtNzkwLDEyICs4MDMsMTIgQEAKIEV4YW1wbGU6CiAuUlMKIC5JUAotbG9nbWF0Y2ggYXBhY2hlLUdFVHMgL3Vzci9sb2NhbC9hcGFjaGUvbG9ncy9hY2Nlc3MubG9nLSVZLSVtLSVkIDYwIEdFVC4qSFRUUC4qCitsb2dtYXRjaCBhcGFjaGVcLUdFVHMgL3Vzci9sb2NhbC9hcGFjaGUvbG9ncy9hY2Nlc3MubG9nXC0lWVwtJW1cLSVkIDYwIEdFVC4qSFRUUC4qCiAuSVAKLVRoaXMgbG9nbWF0Y2ggaW5zdGFuY2UgaXMgbmFtZWQgJ2FwYWNoZS1HRVRzJywgdXNlcyAnR0VULipIVFRQLionIGFzIGl0cworVGhpcyBsb2dtYXRjaCBpbnN0YW5jZSBpcyBuYW1lZCAnYXBhY2hlXC1HRVRzJywgdXNlcyAnR0VULipIVFRQLionIGFzIGl0cwogcmVndWxhciBleHByZXNzaW9uIGFuZCBpdCB3aWxsIG1vbml0b3IgdGhlIGZpbGUgbmFtZWQKLShhc3N1bWluZyB0b2RheSBpcyBNYXkgNnRoIDIwMDkpOiAnL3Vzci9sb2NhbC9hcGFjaGUvbG9ncy9hY2Nlc3MubG9nLTIwMDktMDUtMDYnLAotdG9tb3Jyb3cgaXQgd2lsbCBsb29rIGZvciAnYWNjZXNzLmxvZy0yMDA5LTA1LTA3Jy4gVGhlIGxvZ2ZpbGUgaXMgcmVhZCBldmVyeSA2MAorKGFzc3VtaW5nIHRvZGF5IGlzIE1heSA2dGggMjAwOSk6ICcvdXNyL2xvY2FsL2FwYWNoZS9sb2dzL2FjY2Vzcy5sb2dcLTIwMDlcLTA1XC0wNicsCit0b21vcnJvdyBpdCB3aWxsIGxvb2sgZm9yICdhY2Nlc3MubG9nXC0yMDA5XC0wNVwtMDcnLiBUaGUgbG9nZmlsZSBpcyByZWFkIGV2ZXJ5IDYwCiBzZWNvbmRzLgogLlJFCiAuSVAKQEAgLTg1MCwxMiArODYzLDEyIEBACiAuSSAiU05NUENNRF9BUkdTIgogc2hvdWxkIGJlIHRoZSBjb21tYW5kLWxpbmUgb3B0aW9ucyByZXF1aXJlZCBmb3IgYW4gZXF1aXZhbGVudAogXGZJc25tcHRyYXBcZlIgKG9yIFxmSXNubXBpbmZvcm1cZlIpIGNvbW1hbmQgdG8gc2VuZCB0aGUgZGVzaXJlZCBub3RpZmljYXRpb24uCi1UaGUgb3B0aW9uIFxmSS1DaVxmUiBjYW4gYmUgdXNlZCAod2l0aCBcZkktdjJjXGZSIG9yIFxmSS12M1xmUikgdG8gZ2VuZXJhdGUKK1RoZSBvcHRpb24gXGZJXC1DaVxmUiBjYW4gYmUgdXNlZCAod2l0aCBcZklcLXYyY1xmUiBvciBcZklcLXYzXGZSKSB0byBnZW5lcmF0ZQogYW4gSU5GT1JNIG5vdGlmaWNhdGlvbiByYXRoZXIgdGhhbiBhbiB1bmFja25vd2xlZGdlZCBUUkFQLgogLklQCiBUaGlzIGlzIHRoZSBhcHByb3ByaWF0ZSBkaXJlY3RpdmUgZm9yIGRlZmluaW5nIFNOTVB2MyB0cmFwIHJlY2VpdmVycy4KIFNlZQotaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvdHV0b3JpYWwvdHV0b3JpYWwtNS9jb21tYW5kcy9zbm1wdHJhcC12My5odG1sCitodHRwOi8vd3d3Lm5ldFwtc25tcC5vcmcvdHV0b3JpYWwvdHV0b3JpYWxcLTUvY29tbWFuZHMvc25tcHRyYXBcLXYzLmh0bWwKIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IFNOTVB2MyBub3RpZmljYXRpb24gYmVoYXZpb3VyLgogLklQICJhdXRodHJhcGVuYWJsZSB7MXwyfSIKIGRldGVybWluZXMgd2hldGhlciB0byBnZW5lcmF0ZSBhdXRoZW50aWNhdGlvbiBmYWlsdXJlIHRyYXBzCkBAIC05NTcsNDcgKzk3MCw0OSBAQAogVGhlcmUgYXJlIHZhcmlvdXMgb3B0aW9ucyB0byBjb250cm9sIHRoZSBiZWhhdmlvdXIgb2YgdGhlIG1vbml0b3JlZAogZXhwcmVzc2lvbi4gIFRoZXNlIGluY2x1ZGU6CiAuUlMKLS5JUCAiLUQiCisuSVAgIlwtRCIKIGluZGljYXRlcyB0aGF0IHRoZSBleHByZXNzaW9uIHNob3VsZCBiZSBldmFsdWF0ZWQgdXNpbmcgZGVsdGEgZGlmZmVyZW5jZXMKIGJldHdlZW4gc2FtcGxlIHZhbHVlcyAocmF0aGVyIHRoYW4gdGhlIHZhbHVlcyB0aGVtc2VsdmVzKS4KLS5JUCAiLWQgT0lEIgotLklQICItZGkgT0lEIgorLklQICJcLWQgT0lEIgorLklQICJcLWRpIE9JRCIKIHNwZWNpZmllcyBhIGRpc2NvbnRpbnVpdHkgbWFya2VyIGZvciB2YWxpZGF0aW5nIGRlbHRhIGRpZmZlcmVuY2VzLgotQSBcZkktZGlcZlIgb2JqZWN0IGluc3RhbmNlIHdpbGwgYmUgdXNlZCBleGFjdGx5IGFzIGdpdmVuLgotQSBcZkktZFxmUiBvYmplY3Qgd2lsbCBoYXZlIHRoZSBpbnN0YW5jZSBzdWJpZGVudGlmaWVycyBmcm9tIHRoZQorQSBcZklcLWRpXGZSIG9iamVjdCBpbnN0YW5jZSB3aWxsIGJlIHVzZWQgZXhhY3RseSBhcyBnaXZlbi4KK0EgXGZJXC1kXGZSIG9iamVjdCB3aWxsIGhhdmUgdGhlIGluc3RhbmNlIHN1YmlkZW50aWZpZXJzIGZyb20gdGhlCiBjb3JyZXNwb25kaW5nICh3aWxkY2FyZGVkKSBleHByZXNzaW9uIG9iamVjdCBhcHBlbmRlZC4KLUlmIHRoZSBcZkktSVxmUiBmbGFnIGlzIHNwZWNpZmllZCwgdGhlbiB0aGVyZSBpcyBubyBkaWZmZXJlbmNlCitJZiB0aGUgXGZJXC1JXGZSIGZsYWcgaXMgc3BlY2lmaWVkLCB0aGVuIHRoZXJlIGlzIG5vIGRpZmZlcmVuY2UKIGJldHdlZW4gdGhlc2UgdHdvIG9wdGlvbnMuCiAuSVAKLVRoaXMgb3B0aW9uIGFsc28gaW1wbGllcyBcZkktRFxmUi4KLS5JUCAiLWUgRVZFTlQiCitUaGlzIG9wdGlvbiBhbHNvIGltcGxpZXMgXGZJXC1EXGZSLgorLklQICJcLWUgRVZFTlQiCiBzcGVjaWZpZXMgdGhlIGV2ZW50IHRvIGJlIGludm9rZWQgd2hlbiB0aGlzIG1vbml0b3IgZW50cnkgaXMgdHJpZ2dlcmVkLgogSWYgdGhpcyBvcHRpb24gaXMgbm90IGdpdmVuLCB0aGUgbW9uaXRvciBlbnRyeSB3aWxsIGdlbmVyYXRlIG9uZQotb2YgdGhlIHN0YW5kYXJkIG5vdGlmaWNhdGlvbnMgZGVmaW5lZCBpbiB0aGUgRElTTUFOLUVWRU5ULU1JQi4KLS5JUCAiLUkiCitvZiB0aGUgc3RhbmRhcmQgbm90aWZpY2F0aW9ucyBkZWZpbmVkIGluIHRoZSBESVNNQU5cLUVWRU5UXC1NSUIuCisuSVAgIlwtSSIKIGluZGljYXRlcyB0aGF0IHRoZSBtb25pdG9yZWQgZXhwcmVzc2lvbiBzaG91bGQgYmUgYXBwbGllZCB0byB0aGUKIHNwZWNpZmllZCBPSUQgYXMgYSBzaW5nbGUgaW5zdGFuY2UuICBCeSBkZWZhdWx0LCB0aGUgT0lEIHdpbGwKIGJlIHRyZWF0ZWQgYXMgYSB3aWxkY2FyZGVkIG9iamVjdCwgYW5kIHRoZSBtb25pdG9yIGV4cGFuZGVkCiB0byBjb3ZlciBhbGwgbWF0Y2hpbmcgaW5zdGFuY2VzLgotLklQICItaSBPSUQiCi0uSVAgIi1vIE9JRCIKKy5JUCAiXC1pIE9JRCIKKy5JUCAiXC1vIE9JRCIKIGRlZmluZSBhZGRpdGlvbmFsIHZhcmJpbmRzIHRvIGJlIGFkZGVkIHRvIHRoZSBub3RpZmljYXRpb24gcGF5bG9hZAogd2hlbiB0aGlzIG1vbml0b3IgdHJpZ2dlciBmaXJlcy4KIEZvciBhIHdpbGRjYXJkZWQgZXhwcmVzc2lvbiwgdGhlIHN1ZmZpeCBvZiB0aGUgbWF0Y2hlZCBpbnN0YW5jZQotd2lsbCBiZSBhZGRlZCB0byBhbnkgT0lEcyBzcGVjaWZpZWQgdXNpbmcgXGZJLW9cZlIsIHdoaWxlIE9JRHMKLXNwZWNpZmllZCB1c2luZyBcZkktaVxmUiB3aWxsIGJlIHRyZWF0ZWQgYXMgZXhhY3QgaW5zdGFuY2VzLgotSWYgdGhlIFxmSS1JXGZSIGZsYWcgaXMgc3BlY2lmaWVkLCB0aGVuIHRoZXJlIGlzIG5vIGRpZmZlcmVuY2UKK3dpbGwgYmUgYWRkZWQgdG8gYW55IE9JRHMgc3BlY2lmaWVkIHVzaW5nIFxmSVwtb1xmUiwgd2hpbGUgT0lEcworc3BlY2lmaWVkIHVzaW5nIFxmSVwtaVxmUiB3aWxsIGJlIHRyZWF0ZWQgYXMgZXhhY3QgaW5zdGFuY2VzLgorSWYgdGhlIFxmSVwtSVxmUiBmbGFnIGlzIHNwZWNpZmllZCwgdGhlbiB0aGVyZSBpcyBubyBkaWZmZXJlbmNlCiBiZXR3ZWVuIHRoZXNlIHR3byBvcHRpb25zLgogLklQCiBTZWUgXGZJc3RyaWN0RGlzbWFuXGZSIGZvciBkZXRhaWxzIG9mIHRoZSBvcmRlcmluZyBvZiBub3RpZmljYXRpb24gcGF5bG9hZHMuCi0uSVAgIi1yIEZSRVFVRU5DWSIKLW1vbml0b3JzIHRoZSBnaXZlbiBleHByZXNzaW9uIGV2ZXJ5IEZSRVFVRU5DWSBzZWNvbmRzLgotQnkgZGVmYXVsdCwgdGhlIGV4cHJlc3Npb24gd2lsbCBiZSBldmFsdWF0ZWQgZXZlcnkgNjAwcyAoMTAgbWludXRlcykuIAotLklQICItUyIKKy5JUCAiXC1yIEZSRVFVRU5DWSIKK21vbml0b3JzIHRoZSBnaXZlbiBleHByZXNzaW9uIGV2ZXJ5IEZSRVFVRU5DWSwgd2hlcmUgRlJFUVVFTkNZIGlzIGluCitzZWNvbmRzIG9yIG9wdGlvbmFsbHkgc3VmZml4ZWQgYnkgb25lIG9mIHMgKGZvciBzZWNvbmRzKSwgbSAoZm9yCittaW51dGVzKSwgaCAoZm9yIGhvdXJzKSwgZCAoZm9yIGRheXMpLCBvciB3IChmb3Igd2Vla3MpLiAgQnkgZGVmYXVsdCwKK3RoZSBleHByZXNzaW9uIHdpbGwgYmUgZXZhbHVhdGVkIGV2ZXJ5IDYwMHMgKDEwIG1pbnV0ZXMpLgorLklQICJcLVMiCiBpbmRpY2F0ZXMgdGhhdCB0aGUgbW9uaXRvciBleHByZXNzaW9uIHNob3VsZCBcZklub3RcZlIgYmUgZXZhbHVhdGVkCiB3aGVuIHRoZSBhZ2VudCBmaXJzdCBzdGFydHMgdXAuICBUaGUgZmlyc3QgZXZhbHVhdGlvbiB3aWxsIGJlIGRvbmUKIG9uY2UgdGhlIGZpcnN0IHJlcGVhdCBpbnRlcnZhbCBoYXMgZXhwaXJlZC4KLS5JUCAiLXMiCisuSVAgIlwtcyIKIGluZGljYXRlcyB0aGF0IHRoZSBtb25pdG9yIGV4cHJlc3Npb24gXGZJc2hvdWxkXGZSIGJlIGV2YWx1YXRlZCB3aGVuIHRoZQogYWdlbnQgZmlyc3Qgc3RhcnRzIHVwLiAgVGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvdXIuCiAuUlMKQEAgLTEwMDUsMjAgKzEwMjAsMjAgQEAKIE5vdGlmaWNhdGlvbnMgdHJpZ2dlcmVkIGJ5IHRoaXMgaW5pdGlhbCBldmFsdWF0aW9uIHdpbGwgYmUgc2VudAogXGZJYmVmb3JlXGZSIHRoZSBcZkNjb2xkU3RhcnRcZlIgdHJhcC4KIC5SRQotLklQICItdSBTRUNOQU1FIgorLklQICJcLXUgU0VDTkFNRSIKIHNwZWNpZmllcyBhIHNlY3VyaXR5IG5hbWUgdG8gdXNlIGZvciBzY2FubmluZyB0aGUgbG9jYWwgaG9zdCwKIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgXGZJaXF1ZXJ5U2VjTmFtZVxmUi4KIE9uY2UgYWdhaW4sIHRoaXMgdXNlciBtdXN0IGJlIGV4cGxpY2l0bHkgY3JlYXRlZCBhbmQgZ2l2ZW4KIHN1aXRhYmxlIGFjY2VzcyByaWdodHMuCiAuUkUKLS5JUCAibm90aWZpY2F0aW9uRXZlbnQgRU5BTUUgTk9USUZJQ0FUSU9OIFstbV0gWy1pIE9JRCB8IC1vIE9JRCBdKiIKKy5JUCAibm90aWZpY2F0aW9uRXZlbnQgRU5BTUUgTk9USUZJQ0FUSU9OIFtcLW1dIFtcLWkgT0lEIHwgXC1vIE9JRCBdKiIKIGRlZmluZXMgYSBub3RpZmljYXRpb24gZXZlbnQgbmFtZWQgRU5BTUUuCiBUaGlzIGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSBhIGdpdmVuIFxmSW1vbml0b3JcZlIgZW50cnkgYnkgc3BlY2lmeWluZwotdGhlIG9wdGlvbiBcZkktZSBFTkFNRVxmUiAoc2VlIGFib3ZlKS4KLU5PVElGSUNBVElPTiBzaG91bGQgYmUgdGhlIE9JRCBvZiB0aGUgTk9USUZJQ0FUSU9OLVRZUEUgZGVmaW5pdGlvbgordGhlIG9wdGlvbiBcZklcLWUgRU5BTUVcZlIgKHNlZSBhYm92ZSkuCitOT1RJRklDQVRJT04gc2hvdWxkIGJlIHRoZSBPSUQgb2YgdGhlIE5PVElGSUNBVElPTlwtVFlQRSBkZWZpbml0aW9uCiBmb3IgdGhlIG5vdGlmaWNhdGlvbiB0byBiZSBnZW5lcmF0ZWQuCiAuSVAKLUlmIHRoZSBcZkktbVxmUiBvcHRpb24gaXMgZ2l2ZW4sIHRoZSBub3RpZmljYXRpb24gcGF5bG9hZCB3aWxsCitJZiB0aGUgXGZJXC1tXGZSIG9wdGlvbiBpcyBnaXZlbiwgdGhlIG5vdGlmaWNhdGlvbiBwYXlsb2FkIHdpbGwKIGluY2x1ZGUgdGhlIHN0YW5kYXJkIHZhcmJpbmRzIGFzIHNwZWNpZmllZCBpbiB0aGUgT0JKRUNUUyBjbGF1c2UKIG9mIHRoZSBub3RpZmljYXRpb24gTUlCIGRlZmluaXRpb24uCiBUaGlzIG9wdGlvbiBtdXN0IGNvbWUgXGZCYWZ0ZXJcZlIgdGhlIE5PVElGSUNBVElPTiBPSUQKQEAgLTEwMjcsMjUgKzEwNDIsMjUgQEAKIGJlIGxpc3RlZCBleHBsaWNpdGx5IChlaXRoZXIgaGVyZSBvciBpbiB0aGUgY29ycmVzcG9uZGluZwogXGZJbW9uaXRvclxmUiBkaXJlY3RpdmUpLgogLklQCi1UaGUgXGZJLWkgT0lEXGZSIGFuZCBcZkktbyBPSURcZlIgb3B0aW9ucyBzcGVjaWZ5IGFkZGl0aW9uYWwKK1RoZSBcZklcLWkgT0lEXGZSIGFuZCBcZklcLW8gT0lEXGZSIG9wdGlvbnMgc3BlY2lmeSBhZGRpdGlvbmFsCiB2YXJiaW5kcyB0byBiZSBhcHBlbmRlZCB0byB0aGUgbm90aWZpY2F0aW9uIHBheWxvYWQsIGFmdGVyIHRoZQogc3RhbmRhcmQgbGlzdC4KIElmIHRoZSBtb25pdG9yIGVudHJ5IHRoYXQgdHJpZ2dlcmVkIHRoaXMgZXZlbnQgaW52b2x2ZWQgYQogd2lsZGNhcmRlZCBleHByZXNzaW9uLCB0aGUgc3VmZml4IG9mIHRoZSBtYXRjaGVkIGluc3RhbmNlCi13aWxsIGJlIGFkZGVkIHRvIGFueSBPSURzIHNwZWNpZmllZCB1c2luZyBcZkktb1xmUiwgd2hpbGUgT0lEcwotc3BlY2lmaWVkIHVzaW5nIFxmSS1pXGZSIHdpbGwgYmUgdHJlYXRlZCBhcyBleGFjdCBpbnN0YW5jZXMuCi1JZiB0aGUgXGZJLUlcZlIgZmxhZyB3YXMgc3BlY2lmaWVkIHRvIHRoZSBcZkltb25pdG9yXGZSIGRpcmVjdGl2ZSwKK3dpbGwgYmUgYWRkZWQgdG8gYW55IE9JRHMgc3BlY2lmaWVkIHVzaW5nIFxmSVwtb1xmUiwgd2hpbGUgT0lEcworc3BlY2lmaWVkIHVzaW5nIFxmSVwtaVxmUiB3aWxsIGJlIHRyZWF0ZWQgYXMgZXhhY3QgaW5zdGFuY2VzLgorSWYgdGhlIFxmSVwtSVxmUiBmbGFnIHdhcyBzcGVjaWZpZWQgdG8gdGhlIFxmSW1vbml0b3JcZlIgZGlyZWN0aXZlLAogdGhlbiB0aGVyZSBpcyBubyBkaWZmZXJlbmNlIGJldHdlZW4gdGhlc2UgdHdvIG9wdGlvbnMuCi0uSVAgInNldEV2ZW50IEVOQU1FIFstSV0gT0lEID0gVkFMVUUgIgorLklQICJzZXRFdmVudCBFTkFNRSBbXC1JXSBPSUQgPSBWQUxVRSAiCiBkZWZpbmVzIGEgc2V0IGV2ZW50IG5hbWVkIEVOQU1FLCBhc3NpZ25pbmcgdGhlIChpbnRlZ2VyKSBWQUxVRQogdG8gdGhlIHNwZWNpZmllZCBPSUQuCiBUaGlzIGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSBhIGdpdmVuIFxmSW1vbml0b3JcZlIgZW50cnkgYnkgc3BlY2lmeWluZwotdGhlIG9wdGlvbiBcZkktZSBFTkFNRVxmUiAoc2VlIGFib3ZlKS4KK3RoZSBvcHRpb24gXGZJXC1lIEVOQU1FXGZSIChzZWUgYWJvdmUpLgogLklQCiBJZiB0aGUgbW9uaXRvciBlbnRyeSB0aGF0IHRyaWdnZXJlZCB0aGlzIGV2ZW50IGludm9sdmVkIGEKIHdpbGRjYXJkZWQgZXhwcmVzc2lvbiwgdGhlIHN1ZmZpeCBvZiB0aGUgbWF0Y2hlZCBpbnN0YW5jZQogd2lsbCBub3JtYWxseSBiZSBhZGRlZCB0byB0aGUgT0lELgotSWYgdGhlIFxmSS1JXGZSIGZsYWcgd2FzIHNwZWNpZmllZCB0byBlaXRoZXIgb2YgdGhlCitJZiB0aGUgXGZJXC1JXGZSIGZsYWcgd2FzIHNwZWNpZmllZCB0byBlaXRoZXIgb2YgdGhlCiBcZkltb25pdG9yXGZSIG9yIFxmSXNldEV2ZW50XGZSIGRpcmVjdGl2ZXMsIHRoZQogc3BlY2lmaWVkIE9JRCB3aWxsIGJlIHJlZ2FyZGVkIGFzIGFuIGV4YWN0IHNpbmdsZSBpbnN0YW5jZS4KIC5JUCAic3RyaWN0RGlzbWFuIHllcyIKQEAgLTEwNjYsOCArMTA4MSw4IEBACiAuUlMKIC5JUCAiTm90ZToiCiBTdHJpY3QgRGlzTWFuIG9yZGVyaW5nIG1heSByZXN1bHQgaW4gZ2VuZXJhdGluZyBpbnZhbGlkIG5vdGlmaWNhdGlvbnMKLXBheWxvYWQgbGlzdHMgaWYgdGhlIFxmSW5vdGlmaWNhdGlvbkV2ZW50IC1uXGZSIGZsYWcgaXMgdXNlZCB0b2dldGhlcgotd2l0aCBcZkltb25pdG9yIC1vXGZSIChvciBcZkktaVxmUikgdmFyYmluZCBvcHRpb25zLgorcGF5bG9hZCBsaXN0cyBpZiB0aGUgXGZJbm90aWZpY2F0aW9uRXZlbnQgXC1uXGZSIGZsYWcgaXMgdXNlZCB0b2dldGhlcgord2l0aCBcZkltb25pdG9yIFwtb1xmUiAob3IgXGZJXC1pXGZSKSB2YXJiaW5kIG9wdGlvbnMuCiAuUkUKIC5JUAogSWYgbm8gXGZJbW9uaXRvclxmUiBlbnRyaWVzIHNwZWNpZnkgcGF5bG9hZCB2YXJiaW5kcywKQEAgLTEwODQsMjUgKzEwOTksMjUgQEAKIG5vdGlmaWNhdGlvbkV2ZW50ICBsaW5rVXBUcmFwICAgIGxpbmtVcCAgIGlmSW5kZXggaWZBZG1pblN0YXR1cyBpZk9wZXJTdGF0dXMKIG5vdGlmaWNhdGlvbkV2ZW50ICBsaW5rRG93blRyYXAgIGxpbmtEb3duIGlmSW5kZXggaWZBZG1pblN0YXR1cyBpZk9wZXJTdGF0dXMKIAotbW9uaXRvciAgLXIgNjAgLWUgbGlua1VwVHJhcCAgICJHZW5lcmF0ZSBsaW5rVXAiIGlmT3BlclN0YXR1cyAhPSAyCi1tb25pdG9yICAtciA2MCAtZSBsaW5rRG93blRyYXAgIkdlbmVyYXRlIGxpbmtEb3duIiBpZk9wZXJTdGF0dXMgPT0gMgorbW9uaXRvciAgXC1yIDYwIFwtZSBsaW5rVXBUcmFwICAgIkdlbmVyYXRlIGxpbmtVcCIgaWZPcGVyU3RhdHVzICE9IDIKK21vbml0b3IgIFwtciA2MCBcLWUgbGlua0Rvd25UcmFwICJHZW5lcmF0ZSBsaW5rRG93biIgaWZPcGVyU3RhdHVzID09IDIKIC5maQogLlJFCiAuSVAgImRlZmF1bHRNb25pdG9ycyB5ZXMiCiB3aWxsIGNvbmZpZ3VyZSB0aGUgRXZlbnQgTUlCIHRhYmxlcyB0byBtb25pdG9yIHRoZSB2YXJpb3VzCi1cZkNVQ0QtU05NUC1NSUJcZlIgdGFibGVzIGZvciBwcm9ibGVtcyAoYXMgaW5kaWNhdGVkIGJ5CitcZkNVQ0RcLVNOTVBcLU1JQlxmUiB0YWJsZXMgZm9yIHByb2JsZW1zIChhcyBpbmRpY2F0ZWQgYnkKIHRoZSBhcHByb3ByaWF0ZSBcZkN4eEVyckZsYWdcZlIgY29sdW1uIG9iamVjdHMpLgogLklQCiBUaGlzIGlzIGV4YWN0bHkgZXF1aXZhbGVudCB0byB0aGUgY29uZmlndXJhdGlvbjoKIC5SUwogLklQCiAubmYKLW1vbml0b3IJLW8gcHJOYW1lcyAtbyBwckVyck1lc3NhZ2UgInByb2Nlc3MgdGFibGUiIHByRXJyb3JGbGFnICE9IDAKLW1vbml0b3IJLW8gbWVtRXJyb3JOYW1lIC1vIG1lbVN3YXBFcnJvck1zZyAibWVtb3J5IiBtZW1Td2FwRXJyb3IgIT0gMAotbW9uaXRvcgktbyBleHROYW1lcyAtbyBleHRPdXRwdXQgImV4dFRhYmxlIiBleHRSZXN1bHQgIT0gMAotbW9uaXRvcgktbyBkc2tQYXRoIC1vIGRza0Vycm9yTXNnICJkc2tUYWJsZSIgZHNrRXJyb3JGbGFnICE9IDAKLW1vbml0b3IJLW8gbGFOYW1lcyAtbyBsYUVyck1lc3NhZ2UgICJsYVRhYmxlIiBsYUVycm9yRmxhZyAhPSAwCi1tb25pdG9yCS1vIGZpbGVOYW1lIC1vIGZpbGVFcnJvck1zZyAgImZpbGVUYWJsZSIgZmlsZUVycm9yRmxhZyAhPSAwCittb25pdG9yCVwtbyBwck5hbWVzIFwtbyBwckVyck1lc3NhZ2UgInByb2Nlc3MgdGFibGUiIHByRXJyb3JGbGFnICE9IDAKK21vbml0b3IJXC1vIG1lbUVycm9yTmFtZSBcLW8gbWVtU3dhcEVycm9yTXNnICJtZW1vcnkiIG1lbVN3YXBFcnJvciAhPSAwCittb25pdG9yCVwtbyBleHROYW1lcyBcLW8gZXh0T3V0cHV0ICJleHRUYWJsZSIgZXh0UmVzdWx0ICE9IDAKK21vbml0b3IJXC1vIGRza1BhdGggXC1vIGRza0Vycm9yTXNnICJkc2tUYWJsZSIgZHNrRXJyb3JGbGFnICE9IDAKK21vbml0b3IJXC1vIGxhTmFtZXMgXC1vIGxhRXJyTWVzc2FnZSAgImxhVGFibGUiIGxhRXJyb3JGbGFnICE9IDAKK21vbml0b3IJXC1vIGZpbGVOYW1lIFwtbyBmaWxlRXJyb3JNc2cgICJmaWxlVGFibGUiIGZpbGVFcnJvckZsYWcgIT0gMAogLmZpCiAuUkUKIC5QUApAQCAtMTExOSw3ICsxMTM0LDkgQEAKIFRoZXJlIGFyZSB0aHJlZSB3YXlzIG9mIHNwZWNpZnlpbmcgdGhlIHNjaGVkdWxlZCBhY3Rpb246CiAuSVAgInJlcGVhdCBGUkVRVUVOQ1kgT0lEID0gVkFMVUUiCiBjb25maWd1cmVzIGEgU0VUIGFzc2lnbm1lbnQgb2YgdGhlIChpbnRlZ2VyKSBWQUxVRSB0byB0aGUgTUlCIGluc3RhbmNlCi1PSUQsIHRvIGJlIHJ1biBldmVyeSBGUkVRVUVOQ1kgc2Vjb25kcy4KK09JRCwgdG8gYmUgcnVuIGV2ZXJ5IEZSRVFVRU5DWSBzZWNvbmRzLCB3aGVyZSBGUkVRVUVOQ1kgaXMgaW4KK3NlY29uZHMgb3Igb3B0aW9uYWxseSBzdWZmaXhlZCBieSBvbmUgb2YgcyAoZm9yIHNlY29uZHMpLCBtIChmb3IKK21pbnV0ZXMpLCBoIChmb3IgaG91cnMpLCBkIChmb3IgZGF5cyksIG9yIHcgKGZvciB3ZWVrcykuCiAuSVAgImNyb24gTUlOVVRFIEhPVVIgREFZIE1PTlRIIFdFRUtEQVkgIE9JRCA9IFZBTFVFIgogY29uZmlndXJlcyBhIFNFVCBhc3NpZ25tZW50IG9mIHRoZSAoaW50ZWdlcikgVkFMVUUgdG8gdGhlIE1JQiBpbnN0YW5jZQogT0lELCB0byBiZSBydW4gYXQgdGhlIHRpbWVzIHNwZWNpZmllZCBieSB0aGUgZmllbGRzIE1JTlVURSB0byBXRUVLREFZLgpAQCAtMTEzNyw2ICsxMTU0LDcwIEBACiBjb25maWd1cmVzIGEgb25lLXNob3QgU0VUIGFzc2lnbm1lbnQsIHRvIGJlIHJ1biBhdCB0aGUgZmlyc3QgbWF0Y2hpbmcKIHRpbWUgYXMgc3BlY2lmaWVkIGJ5IHRoZSBmaWVsZHMgTUlOVVRFIHRvIFdFRUtEQVkuICBUaGUgaW50ZXJwcmV0YXRpb24KIG9mIHRoZXNlIGZpZWxkcyBpcyBleGFjdGx5IHRoZSBzYW1lIGFzIGZvciB0aGUgXGZJY3JvblxmUiBkaXJlY3RpdmUuCisuU1MgIkRhdGEgRGVsaXZlcnkgdmlhIE5vdGZpaWNhdGlvbnMiCitOb3RlOiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgb25seSBhdmFpbGFibGUgaWYgdGhlCitcZklkZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeVxmUiBtaWIgbW9kdWxlIHdhcyBjb21wbGllZCBpbiB0byB0aGUgYWdlbnQKKy5QUAorSW4gc29tZSBzaXR1YXRpb25zIGl0IG1heSBiZSBhZHZhbnRhZ2VvdXMgdG8gZGVsaXZlciBTTk1QIGRhdGEgb3ZlcgorU05NUCBOb3RpZmljYXRpb25zIChUUkFQcyBhbmQgSU5GT1JNcykgcmF0aGVyIHRoYW4gdGhlIHR5cGljYWwgcHJvY2Vzcworb2YgaGF2aW5nIHRoZSBtYW5hZ2VyIGlzc3VlIHJlcXVlc3RzIGZvciB0aGUgZGF0YSAodmlhIEdFVHMgYW5kCitHRVRORVhUcykuICBSZWFzb25zIGZvciBkb2luZyB0aGlzIGFyZSBudW1lcm91cywgYnV0IGZyZXF1ZW50bHkgY29ybmVyCitjYXNlcy4gIFRoZSBtb3N0IGNvbW1vbiByZWFzb24gZm9yIHdhbnRpbmcgdGhpcyBiZWhhdmlvdXIgbWlnaHQgYmUgdG8KK21vbml0b3IgZGV2aWNlcyB0aGF0IHJlc2lkZSBiZWhpbmQgTkFUcyBvciBGaXJld2FsbHMgdGhhdCBwcmV2ZW50CitpbmNvbWluZyBTTk1QIHRyYWZmaWMuCisuUFAKK0l0IHNob3VsZCBiZSBub3RlZCB0aGF0IGFsdGhvdWdoIG1vc3QgbWFuYWdlbWVudCBzb2Z0d2FyZSBpcyBjYXBhYmxlCitvZiBsb2dnaW5nIG5vdGlmaWNhdGlvbnMsIHZlcnkgbGl0dGxlIChpZiBhbnkpIG1hbmFnZW1lbnQgc29mdHdhcmUKK3dpbGwgdXBkYXRlZCB0aGVpciAia25vd2xlZGdlIGRhdGFiYXNlIiBiYXNlZCBvbiB0aGUgY29udGVudHMgb2YgU05NUAorbm90aWZpY2F0aW9ucy4gIElFLCBpdCB3b24ndCAoZm9yIGV4YW1wbGUpIHVwZGF0ZSB0aGUgaW50ZXJmYWNlCit0cmFmZmljIGNvdW50ZXIgaGlzdG9yeSB0aGF0IGlzIHVzZWQgdG8gcHJvZHVjZSBncmFwaHMuICBNb3N0IGxhcmdlcgorbmV0d29yayBtYW5hZ2VtZW50IHBhY2thZ2VzIGhhdmUgYSBzZXBhcmF0ZSBkYXRhYmFzZSBmb3Igc3RvcmluZyBkYXRhCityZWNlaXZlZCB2aWEgU05NUCByZXF1ZXN0cyAoR0VUcyBhbmQgR0VUTkVYVHMpIHZzIHRob3NlIHJlY2VpdmVkIGZyb20KK25vdGlmaWNhdGlvbnMuICBSZXNlYXJjaGluZyB0aGUgY2FwYWJpbGl0aWVzIG9mIHlvdXIgbWFuYWdlbWVudAorc3RhdGlvbiBzb2Z0d2FyZSBpcyByZXF1aXJlZCBiZWZvcmUgYXNzdW1pbmcgdGhpcyBmdW5jdGlvbmFsaXR5IHdpbGwKK3NvbHZlIHlvdXIgZGF0YSBkZWxpdmVyeSByZXF1aXJlbWVudHMuCisuUFAKK05vdGlmaWNhdGlvbnMgZ2VuZXJhdGVkIHZpYSB0aGlzIG1lY2hhbmlzbSB3aWxsIGJlIHNlbnQgdG8gdGhlCitzdGFuZGFyZCBzZXQgb2YgY29uZmlndXJlZCBub3RpZmljYXRpb24gdGFyZ2V0cy4gIFNlZSB0aGUKKyJOb3RpZmljYXRpb24gSGFuZGxpbmciIHNlY3Rpb24gb2YgdGhpcyBkb2N1bWVudCBmb3IgZnVydGhlcgoraW5mb3JtYXRpb24uCisuSVAgImRlbGl2ZXJCeU5vdGlmeSBbXC1wXSBbXC1tXSBbXC1zIE1BWFNJWkVdIEZSRVFVRU5DWSBPSUQiCitUaGlzIGRpcmVjdGl2ZSB0ZWxscyB0aGUgU05NUCBhZ2VudCB0byBzZWxmLXdhbGsgdGhlIFxmSU9JRFxmUiwKK2NvbGxlY3QgYWxsIHRoZSBkYXRhIGFuZCBzZW5kIGl0IG91dCBldmVyeSBcZklGUkVRVUVOQ1lcZlIgc2Vjb25kcywKK3doZXJlIEZSRVFVRU5DWSBpcyBpbiBzZWNvbmRzIG9yIG9wdGlvbmFsbHkgc3VmZml4ZWQgYnkgb25lIG9mIHMgKGZvcgorc2Vjb25kcyksIG0gKGZvciBtaW51dGVzKSwgaCAoZm9yIGhvdXJzKSwgZCAoZm9yIGRheXMpLCBvciB3IChmb3IKK3dlZWtzKS4gIEJ5IGRlZmF1bHQgc2NhbGFycyBhcmUgaW5jbHVkZWQgaW4gdGhlIG5vdGlmaWNhdGlvbiB0aGF0CitzcGVjaWZ5IHRoZSBob3cgb2Z0ZW4gdGhlIG5vdGlmaWNhdGlvbiB3aWxsIGJlIHNlbnQgKHVubGVzcyB0aGUKK1xmSVwtcFxmUiBvcHRpb24gaXMgc3BlY2lmaWVkKSBhbmQgd2hpY2ggbWVzc2FnZSBudW1iZXIgb2YgaG93IG1hbnkKK21lc3NhZ2VzIGEgcGFydGljdWxhciBub3RpZmljYXRpb24gaXMgKHVubGVzcyBcZklcLW1cZlIgaXMgc3BlY2lmaWVkKS4KK1RvIGJyZWFrIHRoZSBub3RpZmljYXRpb25zIGludG8gbWFuYWdlYWJsZSBwYWNrZXQgc2l6ZXMsIHVzZSB0aGUKK1xmSVwtc1xmUiBmbGFnIHRvIHNwZWNpZnkgdGhlIGFwcHJveGltYXRlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRoYXQKK2Egbm90aWZpY2F0aW9uIG1lc3NhZ2Ugc2hvdWxkIGJlIGxpbWl0ZWQgdG8uICBJZiBtb3JlIHRoYW4KK1xmSU1BWFNJWkVcZlIgb2YgYnl0ZXMgaXMgbmVlZGVkIHRoZW4gbXVsdGlwbGUgbm90aWZpY2F0aW9ucyB3aWxsIGJlCitzZW50IHRvIGRlbGl2ZXIgdGhlIGRhdGEuICBOb3RlIHRoYXQgdGhlIGNhbGN1bGF0aW9ucyBmb3IgZW5zdXJpbmcgdGhlCittYXhpbXVtIHNpemUgaXMgbWV0IGFyZSBhcHByb3hpbWF0aW9ucyBhbmQgdGh1cyBpdCBjYW4gYmUgYWJzb2x1dGVseQorZ3VhcmFudGVlZCB0aGV5J2xsIGJlIHVuZGVyIHRoYXQgc2l6ZSwgc28gbGVhdmUgYSBwYWRkaW5nIGJ1ZmZlciBpZiBpdAoraXMgY3JpdGljYWwgdGhhdCB5b3UgYXZvaWQgZnJhZ21lbnRhdGlvbi4gIEEgdmFsdWUgb2YgXC0xIGluZGljYXRlcworZm9yY2UgZXZlcnl0aGluZyBpbnRvIGEgc2luZ2xlIG1lc3NhZ2Ugbm8gbWF0dGVyIGhvdyBiaWcgaXQgaXMuCisuSVAKK0V4YW1wbGUgdXNhZ2U6IHRoZSBmb2xsb3dpbmcgd2lsbCBkZWxpdmVyIHRoZSBjb250ZW50cyBvZiB0aGUgaWZUYWJsZQorb25jZSBhbiBob3VyIGFuZCB0aGUgY29udGVudHMgb2YgdGhlIHN5c3RlbSBncm91cCBvbmNlIGV2ZXJ5IDIgaG91cnM6CisuUlMKKy5uZgorCitkZWxpdmVyQnlOb3RpZnkgMzYwMCBpZlRhYmxlCitkZWxpdmVyQnlOb3RpZnkgNzIwMCBzeXN0ZW0KKy5maQorLlJFCisuSVAgImRlbGl2ZXJCeU5vdGlmeU1heFBhY2tldFNpemUgU0laRUlOQllURVMiCitTZXRzIHRoZSBkZWZhdWx0IG5vdGlmaWNhdGlvbiBzaXplIGxpbWl0IChzZWUgdGhlIFxmSVwtc1xmUiBmbGFnIGFib3ZlKS4KKy5JUCAiZGVsaXZlckJ5Tm90aWZ5T2lkIE9JRCIKKy5JUCAiZGVsaXZlckJ5Tm90aWZ5RnJlcXVlbmN5T2lkIE9JRCIKKy5JUCAiZGVsaXZlckJ5Tm90aWZ5TWVzc2FnZU51bWJlck9pZCBPSUQiCisuSVAgImRlbGl2ZXJCeU5vdGlmeU1heE1lc3NhZ2VOdW1iZXJPaWQgT0lEIgorVGhlc2Ugc2V0IHRoZSBkYXRhIE9JRCB0aGF0IHRoZSBub3RpZmljYXRpb24gd2lsbCBiZSBzZW50IHVuZGVyLCB0aGUKK3NjYWxhciBPSUQsIHRoZSBtZXNzYWdlIG51bWJlciBPSUQsIGFuZCB0aGUgbWF4aW11bSBtZXNzYWdlIG51bWJlcgorT0lELiAgVGhlc2UgZGVmYXVsdCB0byBvYmplY3RzIGluIHRoZSBORVRcLVNOTVBcLVBFUklPRElDXC1OT1RJRllcLU1JQi4KIC5TSCAiRVhURU5ESU5HIEFHRU5UIEZVTkNUSU9OQUxJVFkiCiBPbmUgb2YgdGhlIGZpcnN0IGRpc3Rpbmd1aXNoaW5nIGZlYXR1cmVzIG9mIHRoZSBvcmlnaW5hbCBVQ0Qgc3VpdGUgd2FzCiB0aGUgYWJpbGl0eSB0byBleHRlbmQgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGFnZW50IC0gbm90IGp1c3QgYnkKQEAgLTExNTUsNyArMTIzNiw3IEBACiBTTk1QIG9wZXJhdGlvbnMsIG9yIGNvbmZvcm0gdG8gYW55IHBhcnRpY3VsYXIgYmVoYXZpb3VyIC0gdGhlIE1JQgogc3RydWN0dXJlcyBhcmUgZGVzaWduZWQgdG8gYWNjb21tb2RhdGUgYW55IGZvcm0gb2YgY29tbWFuZCBvdXRwdXQuCiBVc2Ugb2YgdGhpcyBtZWNoYW5pc20gcmVxdWlyZXMgdGhhdCB0aGUgYWdlbnQgd2FzIGJ1aWx0IHdpdGggc3VwcG9ydCBmb3IgdGhlCi1cZkl1Y2Qtc25tcC9leHRlbnNpYmxlXGZSIGFuZC9vciBcZklhZ2VudC9leHRlbmRcZlIgbW9kdWxlcyAod2hpY2gKK1xmSXVjZFwtc25tcC9leHRlbnNpYmxlXGZSIGFuZC9vciBcZklhZ2VudC9leHRlbmRcZlIgbW9kdWxlcyAod2hpY2gKIGFyZSBib3RoIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlIGRlZmF1bHQgYnVpbGQgY29uZmlndXJhdGlvbikuCiAuSVAgImV4ZWMgW01JQk9JRF0gTkFNRSBQUk9HIEFSR1MiCiAuSVAgInNoIFtNSUJPSURdIE5BTUUgUFJPRyBBUkdTIgpAQCAtMTIyOSw3ICsxMzEwLDcgQEAKIFxmSWV4dGVuZFxmUiBlbnRyeSwgYW5kIGNhbiBhcHBlYXIgb24gaXRzIG93bi4KIC5QUAogQm90aCBcZklleHRlbmRcZlIgYW5kIFxmSWV4dGVuZGZpeFxmUiBkaXJlY3RpdmVzIGNhbiBiZSBjb25maWd1cmVkCi1keW5hbWljYWxseSwgdXNpbmcgU05NUCBTRVQgcmVxdWVzdHMgdG8gdGhlIE5FVC1TTk1QLUVYVEVORC1NSUIuCitkeW5hbWljYWxseSwgdXNpbmcgU05NUCBTRVQgcmVxdWVzdHMgdG8gdGhlIE5FVFwtU05NUFwtRVhURU5EXC1NSUIuCiAuU1MgIk1JQi1TcGVjaWZpYyBFeHRlbnNpb24gQ29tbWFuZHMiCiBUaGUgZmlyc3QgZ3JvdXAgb2YgZXh0ZW5zaW9uIGRpcmVjdGl2ZXMgaW52b2tlIGFyYml0cmFyeSBjb21tYW5kcywKIGFuZCByZWx5IG9uIHRoZSBNSUIgc3RydWN0dXJlIChhbmQgbWFuYWdlbWVudCBhcHBsaWNhdGlvbnMpIGhhdmluZwpAQCAtMTI0MCwxNyArMTMyMSwxNyBAQAogVGhlIHJlbWFpbmluZyBleHRlbnNpb24gbWVjaGFuaXNtcyBhcmUgYWxsIGNvbmNlcm5lZCB3aXRoIHN1Y2gKIE1JQi1zcGVjaWZpYyBzaXR1YXRpb25zIC0gc3RhcnRpbmcgd2l0aCAicGFzcy10aHJvdWdoIiBzY3JpcHRzLgogVXNlIG9mIHRoaXMgbWVjaGFuaXNtIHJlcXVpcmVzIHRoYXQgdGhlIGFnZW50IHdhcyBidWlsdCB3aXRoIHN1cHBvcnQgZm9yIHRoZQotXGZJdWNkLXNubXAvcGFzc1xmUiBhbmQgXGZJdWNkLXNubXAvcGFzc19wZXJzaXN0XGZSIG1vZHVsZXMgKHdoaWNoCitcZkl1Y2RcLXNubXAvcGFzc1xmUiBhbmQgXGZJdWNkXC1zbm1wL3Bhc3NfcGVyc2lzdFxmUiBtb2R1bGVzICh3aGljaAogYXJlIGJvdGggaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUgZGVmYXVsdCBidWlsZCBjb25maWd1cmF0aW9uKS4KLS5JUCAicGFzcyBbLXAgcHJpb3JpdHldIE1JQk9JRCBQUk9HIgorLklQICJwYXNzIFtcLXAgcHJpb3JpdHldIE1JQk9JRCBQUk9HIgogd2lsbCBwYXNzIGNvbnRyb2wgb2YgdGhlIHN1YnRyZWUgcm9vdGVkIGF0IE1JQk9JRCB0byB0aGUgc3BlY2lmaWVkCiBQUk9HIGNvbW1hbmQuICBHRVQgYW5kIEdFVE5FWFQgcmVxdWVzdHMgZm9yIE9JRHMgd2l0aGluIHRoaXMgdHJlZSB3aWxsCiB0cmlnZ2VyIHRoaXMgY29tbWFuZCwgY2FsbGVkIGFzOgogLlJTCiAuSVAKLVBST0cgLWcgT0lECitQUk9HIFwtZyBPSUQKIC5JUAotUFJPRyAtbiBPSUQKK1BST0cgXC1uIE9JRAogLlJFCiAuSVAKIHJlc3BlY3RpdmVseSwgd2hlcmUgT0lEIGlzIHRoZSByZXF1ZXN0ZWQgT0lELgpAQCAtMTI3OCw3ICsxMzU5LDcgQEAKIEEgU0VUIHJlcXVlc3Qgd2lsbCByZXN1bHQgaW4gdGhlIGNvbW1hbmQgYmVpbmcgY2FsbGVkIGFzOgogLlJTCiAuSVAKLVBST0cgLXMgT0lEIFRZUEUgVkFMVUUKK1BST0cgXC1zIE9JRCBUWVBFIFZBTFVFCiAuUkUKIC5JUAogd2hlcmUgVFlQRSBpcyBvbmUgb2YgdGhlIHRva2VucyBsaXN0ZWQgYWJvdmUsIGluZGljYXRpbmcgdGhlIHR5cGUgb2YgdGhlCkBAIC0xMzEyLDkgKzEzOTMsOSBAQAogYSBzZXBhcmF0ZSBpbnZvY2F0aW9uIG9mIHRoZSBjb21tYW5kLgogLklQCiBUaGUgZGVmYXVsdCByZWdpc3RyYXRpb24gcHJpb3JpdHkgaXMgMTI3LiAgVGhpcyBjYW4gYmUKLWNoYW5nZWQgYnkgc3VwcGx5aW5nIHRoZSBvcHRpb25hbCAtcCBmbGFnLCB3aXRoIGxvd2VyIHByaW9yaXR5CitjaGFuZ2VkIGJ5IHN1cHBseWluZyB0aGUgb3B0aW9uYWwgXC1wIGZsYWcsIHdpdGggbG93ZXIgcHJpb3JpdHkKIHJlZ2lzdHJhdGlvbnMgYmVpbmcgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIGhpZ2hlciBwcmlvcml0eSB2YWx1ZXMuCi0uSVAgInBhc3NfcGVyc2lzdCBbLXAgcHJpb3JpdHldIE1JQk9JRCBQUk9HIgorLklQICJwYXNzX3BlcnNpc3QgW1wtcCBwcmlvcml0eV0gTUlCT0lEIFBST0ciCiB3aWxsIGFsc28gcGFzcyBjb250cm9sIG9mIHRoZSBzdWJ0cmVlIHJvb3RlZCBhdCBNSUJPSUQgdG8gdGhlIHNwZWNpZmllZAogUFJPRyBjb21tYW5kLiAgSG93ZXZlciB0aGlzIGNvbW1hbmQgd2lsbCBjb250aW51ZSB0byBydW4gYWZ0ZXIgdGhlIGluaXRpYWwKIHJlcXVlc3QgaGFzIGJlZW4gYW5zd2VyZWQsIHNvIHN1YnNlcXVlbnQgcmVxdWVzdHMgY2FuIGJlIHByb2Nlc3NlZCB3aXRob3V0CkBAIC0xMzM3LDE4ICsxNDE4LDE4IEBACiBJZiB0aGUgYXNzaWdubWVudCBpcyBzdWNjZXNzZnVsLCB0aGUgY29tbWFuZCBzaG91bGQgcHJpbnQKICJET05FXFxuIiB0byBzdGRvdXQuCiBFcnJvcnMgc2hvdWxkIGJlIGluZGljYXRlZCBieSB3cml0aW5nIG9uZSBvZiB0aGUgc3RyaW5ncwotLkIgbm90LXdyaXRhYmxlLCAKLS5CIHdyb25nLXR5cGUsCi0uQiB3cm9uZy1sZW5ndGgsCi0uQiB3cm9uZy12YWx1ZQorLkIgbm90XC13cml0YWJsZSwgCisuQiB3cm9uZ1wtdHlwZSwKKy5CIHdyb25nXC1sZW5ndGgsCisuQiB3cm9uZ1wtdmFsdWUKIG9yCi0uQiBpbmNvbnNpc3RlbnQtdmFsdWUKKy5CIGluY29uc2lzdGVudFwtdmFsdWUKIHRvIHN0ZG91dCwKIGFuZCB0aGUgYWdlbnQgd2lsbCBnZW5lcmF0ZSB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgcmVzcG9uc2UuCiBJbiBlaXRoZXIgY2FzZSwgdGhlIGNvbW1hbmQgc2hvdWxkIGNvbnRpbnVlIHJ1bm5pbmcuCiAuSVAKIFRoZSByZWdpc3RyYXRpb24gcHJpb3JpdHkgY2FuIGJlIGNoYW5nZWQgdXNpbmcgdGhlIG9wdGlvbmFsCi0tcCBmbGFnLCBqdXN0IGFzIGZvciB0aGUgXGZJcGFzc1xmUiBkaXJlY3RpdmUuCitcLXAgZmxhZywganVzdCBhcyBmb3IgdGhlIFxmSXBhc3NcZlIgZGlyZWN0aXZlLgogLlBQCiBcZklwYXNzXGZSIGFuZCBcZklwYXNzX3BlcnNpc3RcZlIgZXh0ZW5zaW9ucyBjYW4gb25seSBiZSBjb25maWd1cmVkIHZpYSB0aGUKIHNubXBkLmNvbmYgZmlsZS4gIFRoZXkgY2Fubm90IGJlIHNldCB1cCB2aWEgU05NUCBTRVQgcmVxdWVzdHMuCkBAIC0xMzY2LDcgKzE0NDcsNyBAQAogLlBQCiBVc2Ugb2YgdGhpcyBtZWNoYW5pc20gcmVxdWlyZXMgdGhhdCB0aGUgYWdlbnQgd2FzIGJ1aWx0IHdpdGggc3VwcG9ydCBmb3IgdGhlIGVtYmVkZGVkCiBwZXJsIG1lY2hhbmlzbSwgd2hpY2ggaXMgbm90IHBhcnQgb2YgdGhlIGRlZmF1bHQgYnVpbGQgZW52aXJvbm1lbnQuIEl0Ci1tdXN0IGJlIGV4cGxpY2l0bHkgaW5jbHVkZWQgYnkgc3BlY2lmeWluZyB0aGUgJy0tZW5hYmxlLWVtYmVkZGVkLXBlcmwnCittdXN0IGJlIGV4cGxpY2l0bHkgaW5jbHVkZWQgYnkgc3BlY2lmeWluZyB0aGUgJ1wtXC1lbmFibGVcLWVtYmVkZGVkXC1wZXJsJwogb3B0aW9uIHRvIHRoZSBjb25maWd1cmUgc2NyaXB0IHdoZW4gdGhlIHBhY2thZ2UgaXMgZmlyc3QgYnVpbHQuCiAuUFAKIElmIGVuYWJsZWQsIHRoZSBmb2xsb3dpbmcgZGlyZWN0aXZlcyB3aWxsIGJlIHJlY29nbmlzZWQ6CkBAIC0xMzkxLDcgKzE0NzIsNyBAQAogLm5mCiBcZkNwZXJsIHVzZSBEYXRhOjpEdW1wZXI7CiBwZXJsIHN1YiBteXJvdXRpbmUgIHsgcHJpbnQgImdvdCBjYWxsZWQ6ICIsRHVtcGVyKEBfKSwiXFxuIjsgfQotcGVybCAkYWdlbnQtPnJlZ2lzdGVyKCdteWxpbmsnLCAnLjEuMy42LjEuODc2NScsIFxcJm15cm91dGluZSk7XGZSCitwZXJsICRhZ2VudFwtPnJlZ2lzdGVyKCdteWxpbmsnLCAnLjEuMy42LjEuODc2NScsIFxcJm15cm91dGluZSk7XGZSCiAuZmkKIC5SRQogLlJFCkBAIC0xNDEzLDcgKzE0OTQsNyBAQAogd2hlbiB0aGUgc3VpdGUgd2FzIGZpcnN0IGJ1aWx0LiAgU3VjaCBpbXBsZW1lbnRhdGlvbiBtb2R1bGVzIGNhbiBhbHNvIGJlCiBjb21waWxlZCBpbmRlcGVuZGVudGx5IGFuZCBsb2FkZWQgaW50byB0aGUgcnVubmluZyBhZ2VudCBvbmNlIGl0IGhhcwogc3RhcnRlZC4gIFVzZSBvZiB0aGlzIG1lY2hhbmlzbSByZXF1aXJlcyB0aGF0IHRoZSBhZ2VudCB3YXMgYnVpbHQgd2l0aCBzdXBwb3J0IGZvciB0aGUKLVxmSXVjZC1zbm1wL2RsbW9kXGZSIG1vZHVsZSAod2hpY2ggaXMgaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUgZGVmYXVsdAorXGZJdWNkXC1zbm1wL2RsbW9kXGZSIG1vZHVsZSAod2hpY2ggaXMgaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUgZGVmYXVsdAogYnVpbGQgY29uZmlndXJhdGlvbikuCiAuSVAgImRsbW9kIE5BTUUgUEFUSCIKIHdpbGwgbG9hZCB0aGUgc2hhcmVkIG9iamVjdCBtb2R1bGUgZnJvbSB0aGUgZmlsZSBQQVRIIChhbiBhYnNvbHV0ZQpAQCAtMTQyNiw3ICsxNTA3LDcgQEAKIC5SRQogLlBQCiBUaGlzIGZ1bmN0aW9uYWxpdHkgY2FuIGFsc28gYmUgY29uZmlndXJlZCB1c2luZyBTTk1QIFNFVCByZXF1ZXN0cwotdG8gdGhlIFVDRC1ETE1PRC1NSUIuCit0byB0aGUgVUNEXC1ETE1PRFwtTUlCLgogLlNTICJQcm94eSBTdXBwb3J0IgogQW5vdGhlciBtZWNoYW5pc20gZm9yIGV4dGVuZGluZyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgYWdlbnQKIGlzIHRvIHBhc3Mgc2VsZWN0ZWQgcmVxdWVzdHMgKG9yIHNlbGVjdGVkIHZhcmJpbmRzKSB0byBhbm90aGVyCkBAIC0xNDM1LDkgKzE1MTYsOSBAQAogVGhpcyBjYW4gYmUgdmlld2VkIGVpdGhlciBhcyB0aGUgbWFpbiBhZ2VudCBkZWxlZ2F0aW5nIHJlcXVlc3RzIHRvCiB0aGUgcmVtb3RlIG9uZSwgb3IgYWN0aW5nIGFzIGEgcHJveHkgZm9yIGl0LgogVXNlIG9mIHRoaXMgbWVjaGFuaXNtIHJlcXVpcmVzIHRoYXQgdGhlIGFnZW50IHdhcyBidWlsdCB3aXRoIHN1cHBvcnQgZm9yIHRoZQotXGZJdWNkLXNubXAvcHJveHlcZlIgbW9kdWxlICh3aGljaCBpcyBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZQorXGZJdWNkXC1zbm1wL3Byb3h5XGZSIG1vZHVsZSAod2hpY2ggaXMgaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUKIGRlZmF1bHQgYnVpbGQgY29uZmlndXJhdGlvbikuCi0uSVAgInByb3h5IFstQ24gQ09OVEVYVE5BTUVdIFtTTk1QQ01EX0FSR1NdIEhPU1QgT0lEIFtSRU1PVEVPSURdIgorLklQICJwcm94eSBbXC1DbiBDT05URVhUTkFNRV0gW1NOTVBDTURfQVJHU10gSE9TVCBPSUQgW1JFTU9URU9JRF0iCiB3aWxsIHBhc3MgYW55IGluY29taW5nIHJlcXVlc3RzIHVuZGVyIE9JRCB0byB0aGUgYWdlbnQgbGlzdGVuaW5nCiBvbiB0aGUgcG9ydCBzcGVjaWZpZWQgYnkgdGhlIHRyYW5zcG9ydCBhZGRyZXNzIEhPU1QuCiBTZWUgdGhlIHNlY3Rpb24gCkBAIC0xNDc2LDcgKzE1NTcsNyBAQAogd2l0aCBTTVVYLWJhc2VkIHN1YmFnZW50cyAoc3VjaCBhcyBcZklnYXRlZFxmUiwgXGZJemVicmFcZlIgb3IgXGZJcXVhZ2dhXGZSKS4KIFVzZSBvZiB0aGlzIG1lY2hhbmlzbSByZXF1aXJlcyB0aGF0IHRoZSBhZ2VudCB3YXMgYnVpbHQgd2l0aCBzdXBwb3J0IGZvciB0aGUKIFxmSXNtdXhcZlIgbW9kdWxlLCB3aGljaCBpcyBub3QgcGFydCBvZiB0aGUgZGVmYXVsdCBidWlsZCBlbnZpcm9ubWVudCwgYW5kCi1tdXN0IGJlIGV4cGxpY2l0bHkgaW5jbHVkZWQgYnkgc3BlY2lmeWluZyB0aGUgJy0td2l0aC1taWItbW9kdWxlcz1zbXV4JworbXVzdCBiZSBleHBsaWNpdGx5IGluY2x1ZGVkIGJ5IHNwZWNpZnlpbmcgdGhlICdcLVwtd2l0aFwtbWliXC1tb2R1bGVzPXNtdXgnCiBvcHRpb24gdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgd2hlbiB0aGUgcGFja2FnZSBpcyBmaXJzdCBidWlsdC4KIC5SUwogLklQICJOb3RlOiIKQEAgLTE1MDMsNyArMTU4NCw3IEBACiAuSVAgInNtdXhzb2NrZXQgPElQdjQtYWRkcmVzcz4iCiBkZWZpbmVzIHRoZSBJUHY0IGFkZHJlc3MgZm9yIFNNVVggcGVlcnMgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgTmV0LVNOTVAgYWdlbnQuCiBUaGUgZGVmYXVsdCBpcyB0byBsaXN0ZW4gb24gYWxsIElQdjQgaW50ZXJmYWNlcyAoIjAuMC4wLjAiKSwgdW5sZXNzIHRoZSAKLXBhY2thZ2UgaGFzIGJlZW4gY29uZmlndXJlZCB3aXRoICItLWVuYWJsZS1sb2NhbC1zbXV4IiBhdCBidWlsZCB0aW1lLCB3aGljaCAKK3BhY2thZ2UgaGFzIGJlZW4gY29uZmlndXJlZCB3aXRoICJcLVwtZW5hYmxlXC1sb2NhbFwtc211eCIgYXQgYnVpbGQgdGltZSwgd2hpY2ggCiBjYXVzZXMgaXQgdG8gb25seSBsaXN0ZW4gb24gMTI3LjAuMC4xIGJ5IGRlZmF1bHQuIFNNVVggdXNlcyB0aGUgd2VsbC1rbm93bgogVENQIHBvcnQgMTk5LgogLlBQCkBAIC0xNTIyLDcgKzE2MDMsNyBAQAogLklQICJtYXN0ZXIgYWdlbnR4Igogd2lsbCBlbmFibGUgdGhlIEFnZW50WCBmdW5jdGlvbmFsaXR5IGFuZCBjYXVzZSB0aGUgYWdlbnQgdG8KIHN0YXJ0IGxpc3RlbmluZyBmb3IgaW5jb21pbmcgQWdlbnRYIHJlZ2lzdHJhdGlvbnMuCi1UaGlzIGNhbiBhbHNvIGJlIGFjdGl2YXRlZCBieSBzcGVjaWZ5aW5nIHRoZSAnLXgnIGNvbW1hbmQtbGluZQorVGhpcyBjYW4gYWxzbyBiZSBhY3RpdmF0ZWQgYnkgc3BlY2lmeWluZyB0aGUgJ1wteCcgY29tbWFuZC1saW5lCiBvcHRpb24gKHRvIHNwZWNpZnkgYW4gYWx0ZXJuYXRpdmUgbGlzdGVuaW5nIHNvY2tldCkuCiAuSVAgImFnZW50WFBlcm1zIFNPQ0tQRVJNUyBbRElSUEVSTVMgW1VTRVJ8VUlEIFtHUk9VUHxHSURdXV0iCiBEZWZpbmVzIHRoZSBwZXJtaXNzaW9ucyBhbmQgb3duZXJzaGlwIG9mIHRoZSBBZ2VudFggVW5peCBEb21haW4gc29ja2V0LApAQCAtMTU1MywxMSArMTYzNCwxMyBAQAogLlJTCiAuSVAgIk5vdGU6IgogU3BlY2lmeWluZyBhbiBBZ2VudFggc29ja2V0IGRvZXMgXGZCbm90XGZSIGF1dG9tYXRpY2FsbHkgZW5hYmxlCi1BZ2VudFggZnVuY3Rpb25hbGl0eSAodW5saWtlIHRoZSAnLXgnIGNvbW1hbmQtbGluZSBvcHRpb24pLgorQWdlbnRYIGZ1bmN0aW9uYWxpdHkgKHVubGlrZSB0aGUgJ1wteCcgY29tbWFuZC1saW5lIG9wdGlvbikuCiAuUkUKIC5JUCAiYWdlbnRYVGltZW91dCBOVU0iCiBkZWZpbmVzIHRoZSB0aW1lb3V0IHBlcmlvZCAoTlVNIHNlY29uZHMpIGZvciBhbiBBZ2VudFggcmVxdWVzdC4KLURlZmF1bHQgaXMgMSBzZWNvbmQuCitEZWZhdWx0IGlzIDEgc2Vjb25kLiAgTlVNIGFsc28gYmUgc3BlY2lmaWVkIHdpdGggYSBzdWZmaXggb2Ygb25lIG9mIHMKKyhmb3Igc2Vjb25kcyksIG0gKGZvciBtaW51dGVzKSwgaCAoZm9yIGhvdXJzKSwgZCAoZm9yIGRheXMpLCBvciB3IChmb3IKK3dlZWtzKS4KIC5JUCAiYWdlbnRYUmV0cmllcyBOVU0iCiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgcmV0cmllcyBmb3IgYW4gQWdlbnRYIHJlcXVlc3QuCiBEZWZhdWx0IGlzIDUgcmV0cmllcy4KQEAgLTE1NjUsOSArMTY0OCw5IEBACiBuZXQtc25tcCBzaGlwcyB3aXRoIGJvdGggQyBhbmQgUGVybCBBUElzIHRvIGRldmVsb3AgeW91ciBvd24gQWdlbnRYCiBzdWJhZ2VudC4KIC5TSCAiT1RIRVIgQ09ORklHVVJBVElPTiIKLS5JUCAib3ZlcnJpZGUgWy1yd10gT0lEIFRZUEUgVkFMVUUiCisuSVAgIm92ZXJyaWRlIFtcLXJ3XSBPSUQgVFlQRSBWQUxVRSIKIFRoaXMgZGlyZWN0aXZlIGFsbG93cyB5b3UgdG8gb3ZlcnJpZGUgYSBwYXJ0aWN1bGFyIE9JRCB3aXRoIGEKLWRpZmZlcmVudCB2YWx1ZSAoYW5kIHBvc3NpYmx5IGEgZGlmZmVyZW50IHR5cGUgb2YgdmFsdWUpLiAgVGhlIC1ydworZGlmZmVyZW50IHZhbHVlIChhbmQgcG9zc2libHkgYSBkaWZmZXJlbnQgdHlwZSBvZiB2YWx1ZSkuICBUaGUgXC1ydwogZmxhZyB3aWxsIGFsbG93IHNubXAgU0VUcyB0byBtb2RpZnkgaXQncyB2YWx1ZSBhcyB3ZWxsLiAobm90ZSB0aGF0IGlmCiB5b3UncmUgb3ZlcnJpZGluZyBvcmlnaW5hbCBmdW5jdGlvbmFsaXR5LCB0aGF0IGZ1bmN0aW9uYWxpdHkgd2lsbCBiZQogZW50aXJlbHkgbG9zdC4gIFRodXMgU0VUUyB3aWxsIGRvIG5vdGhpbmcgbW9yZSB0aGFuIG1vZGlmeSB0aGUKQEAgLTE1OTksOCArMTY4Miw4IEBACiBJZiB5b3UncmUgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgYXNwZWN0cyBvZiB0aGUgdmFyaW91cyBtaWIgbW9kdWxlcwogKHBvc3NpYmx5IHNvbWUgdGhhdCB5b3UndmUgYWRkZWQgeW91cnNlbGYpLCB0aGUgZm9sbG93aW5nIG1heSBoZWxwIHlvdQogc3BpdCBvdXQgc29tZSB1c2VmdWwgZGVidWdnaW5nIGluZm9ybWF0aW9uLiAgRmlyc3Qgb2ZmLCBwbGVhc2UgcmVhZAotdGhlIHNubXBkIG1hbnVhbCBwYWdlIG9uIHRoZSAtRCBmbGFnLiAgVGhlbiB0aGUgZm9sbG93aW5nCi1jb25maWd1cmF0aW9uIHNubXBkLmNvbmYgdG9rZW4sIGNvbWJpbmVkIHdpdGggdGhlIC1EIGZsYWcsIGNhbiBwcm9kdWNlCit0aGUgc25tcGQgbWFudWFsIHBhZ2Ugb24gdGhlIFwtRCBmbGFnLiAgVGhlbiB0aGUgZm9sbG93aW5nCitjb25maWd1cmF0aW9uIHNubXBkLmNvbmYgdG9rZW4sIGNvbWJpbmVkIHdpdGggdGhlIFwtRCBmbGFnLCBjYW4gcHJvZHVjZQogdXNlZnVsIG91dHB1dDoKIC5JUCAiaW5qZWN0SGFuZGxlciBIQU5ETEVSIG1vZHVsZW5hbWUgW2JlZm9yZVRoaXNdIgogVGhpcyB3aWxsIGluc2VydCBuZXcgaGFuZGxlcnMgaW50byB0aGUgc2VjdGlvbiBvZiB0aGUgbWliIHRyZWUKQEAgLTE2MjksNyArMTcxMiw3IEBACiAKIC5JUCBkZWJ1ZwogUHJpbnRzIG91dCBsb3RzIG9mIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiB3aGVuCi10aGUgLURoZWxwZXI6ZGVidWcgZmxhZyBpcyBwYXNzZWQgdG8gdGhlIHNubXBkCit0aGUgXC1EaGVscGVyOmRlYnVnIGZsYWcgaXMgcGFzc2VkIHRvIHRoZSBzbm1wZAogYXBwbGljYXRpb24uCiAKIC5JUCByZWFkX29ubHkKQEAgLTE2NjQsOCArMTc0Nyw4IEBACiAuSVAgbwogVGhlIE5ldC1TTk1QIGFnZW50IGNhbiBiZSBpbnN0cnVjdGVkIHRvIHJlLXJlYWQgdGhlIHZhcmlvdXMgY29uZmlndXJhdGlvbiBmaWxlcywKIGVpdGhlciB2aWEgYW4gXGZCc25tcHNldFxmUiBhc3NpZ25tZW50IG9mIGludGVnZXIoMSkgdG8KLVxmQ1VDRC1TTk1QLU1JQjo6dmVyc2lvblVwZGF0ZUNvbmZpZy4wXGZSICguMS4zLjYuMS40LjEuMjAyMS4xMDAuMTEuMCksCi1vciBieSBzZW5kaW5nIGEgXGZCa2lsbCAtSFVQXGZSIHNpZ25hbCB0byB0aGUgYWdlbnQgcHJvY2Vzcy4KK1xmQ1VDRFwtU05NUFwtTUlCOjp2ZXJzaW9uVXBkYXRlQ29uZmlnLjBcZlIgKC4xLjMuNi4xLjQuMS4yMDIxLjEwMC4xMS4wKSwKK29yIGJ5IHNlbmRpbmcgYSBcZkJraWxsIFwtSFVQXGZSIHNpZ25hbCB0byB0aGUgYWdlbnQgcHJvY2Vzcy4KIC5JUCBvCiBBbGwgZGlyZWN0aXZlcyBsaXN0ZWQgd2l0aCBhIHZhbHVlIG9mICJ5ZXMiIGFjdHVhbGx5IGFjY2VwdCBhIHJhbmdlCiBvZiBib29sZWFuIHZhbHVlcy4gIFRoZXNlIHdpbGwgYWNjZXB0IGFueSBvZiBcZkkxXGZSLCBcZkl5ZXNcZlIgb3IKZGlmZiAtLWdpdCBhL21hbi9zbm1wZC5leGFtcGxlcy41LmRlZiBiL21hbi9zbm1wZC5leGFtcGxlcy41LmRlZgppbmRleCA5N2Y5ZDljLi4zNjAyODY5IDEwMDY0NAotLS0gYS9tYW4vc25tcGQuZXhhbXBsZXMuNS5kZWYKKysrIGIvbWFuL3NubXBkLmV4YW1wbGVzLjUuZGVmCkBAIC0xMDQsNyArMTA0LDcgQEAKIFBFUlNJU1RFTlRfRElSRUNUT1JZL3NubXBkLmNvbmYgZmlsZSwgcmF0aGVyIHRoYW4gdGhlIHVzdWFsIGxvY2F0aW9uLgogLlJFCiAuXCIKLS5cIiAgPz8/IElsbHVzdHJhdGUgIi1lIiwgIi1sIiBhbmQgIi1tIiBmb3JtcyA/PworLlwiICA/Pz8gSWxsdXN0cmF0ZSAiXC1lIiwgIlwtbCIgYW5kICJcLW0iIGZvcm1zID8/CiAuXCIKIC5TUyBUcmFkaXRpb25hbCBBY2Nlc3MgQ29udHJvbAogVGhlIFNOTVB2MyB1c2VycyBkZWZpbmVkIGFib3ZlIGNhbiBiZSBncmFudGVkIGFjY2VzcyB0byB0aGUgZnVsbApAQCAtMjE5LDcgKzIxOSw3IEBACiB2aWV3ICAgc3lzMlZpZXcgaW5jbHVkZWQgICAgc3lzdGVtCiB2aWV3ICAgc3lzMlZpZXcgaW5jbHVkZWQgICAgLjEuMy42LjEuMi4xLjI1LjEKIAotYXV0aGNvbW11bml0eSByZWFkICAgICAgIHB1YmxpYyAgZGVmYXVsdCAgICAgIC12IHN5czJWaWV3CithdXRoY29tbXVuaXR5IHJlYWQgICAgICAgcHVibGljICBkZWZhdWx0ICAgICAgXC12IHN5czJWaWV3CiBhdXRoY29tbXVuaXR5IHJlYWQsd3JpdGUgcHJpdmF0ZSAxMC4xMC4xMC4wLzgKIC5maQogLlJFCkBAIC0yMzgsMTIgKzIzOCwxMiBAQAogY2FuIGJlIGV4cGxpY2l0bHkgY29uZmlndXJlZCB1c2luZzoKIC5SUwogLm5mCi1cZkkjIE92ZXJyaWRlICd1bmFtZSAtYScgYW5kIGhhcmRjb2RlZCBzeXN0ZW0gT0lEIC0gaW5oZXJlbnRseSByZWFkLW9ubHkgdmFsdWVzXGZSCitcZkkjIE92ZXJyaWRlICd1bmFtZSBcLWEnIGFuZCBoYXJkY29kZWQgc3lzdGVtIE9JRCAtIGluaGVyZW50bHkgcmVhZC1vbmx5IHZhbHVlc1xmUgogc3lzRGVzY3IgICAgIFVuaXZlcnNhbCBUdXJpbmcgTWFjaGluZSBtayBJCiBzeXNPYmplY3RJRCAgLjEuMy42LjEuNC4xLjgwNzIuMy4yLjEwNjYKIAogXGZJIyBPdmVycmlkZSBkZWZhdWx0IHZhbHVlcyBmcm9tICdjb25maWd1cmUnIC0gbWFrZXMgdGhlc2Ugb2JqZWN0cyByZWFkLW9ubHlcZlIKLXN5c0NvbnRhY3QgICBBbGFuLlR1cmluZ0BwcmUtY3MubWFuLmFjLnVrCitzeXNDb250YWN0ICAgQWxhbi5UdXJpbmdAcHJlXC1jcy5tYW4uYWMudWsKIHN5c05hbWUgICAgICB0b3J0b2lzZS50dXJpbmcuY29tCiBzeXNMb2NhdGlvbiAgQW4gaWRlYSBpbiB0aGUgbWluZCBvZiBBVAogCkBAIC0yNjIsNyArMjYyLDcgQEAKIC5SUwogLm5mCiBpZ25vcmVkaXNrIC9kZXYvcmRzay9jMHRbITZdZDAKLWlnbm9yZWRpc2sgL2Rldi9yZHNrL2MwdFswLTU3LTlhLWZdZDAKK2lnbm9yZWRpc2sgL2Rldi9yZHNrL2MwdFswXC01N1wtOWFcLWZdZDAKIC5maQogLlJFCiBlaXRoZXIgb2Ygd2hpY2ggcHJldmVudHMgYWxsIGRldmljZXMgXGZJL2Rldi9yZHNrL2MwdFxmUlhcZklkMFxmUgpAQCAtMzg4LDcgKzM4OCw3IEBACiAuUFAKIEEgbW9yZSBkZXRhaWxlZCBtb25pdG9yIGV4YW1wbGUgaXMgZ2l2ZW4gYnk6CiAuUlMKLW1vbml0b3IgLXUgbWUgLW8gaHJTV1J1bk5hbWUgImhpZ2ggcHJvY2VzcyBtZW1vcnkiIGhyU1dSdW5QZXJmTWVtID4gMTAwMDAKK21vbml0b3IgXC11IG1lIFwtbyBoclNXUnVuTmFtZSAiaGlnaCBwcm9jZXNzIG1lbW9yeSIgaHJTV1J1blBlcmZNZW0gPiAxMDAwMAogLlJFCiAuUFAKIFRoaXMgZGVmaW5lcyBhbiBleHBsaWNpdCBib29sZWFuIG1vbml0b3IgZW50cnksIGxvb2tpbmcgZm9yIGFueSBwcm9jZXNzCkBAIC00MDIsNyArNDAyLDcgQEAKIE9iamVjdHMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBmbHVjdHVhdGUgYXJvdW5kIHRoZSBzcGVjaWZpZWQgbGV2ZWwKIGFyZSBiZXR0ZXIgbW9uaXRvcmVkIHVzaW5nIGEgdGhyZXNob2xkIG1vbml0b3IgZW50cnk6IAogLlJTCi1tb25pdG9yIC1EIC1yIDEwICJuZXR3b3JrIHRyYWZmaWMiIGlmSW5PY3RldHMgMTAwMDAwMCA1MDAwMDAwCittb25pdG9yIFwtRCBcLXIgMTAgIm5ldHdvcmsgdHJhZmZpYyIgaWZJbk9jdGV0cyAxMDAwMDAwIDUwMDAwMDAKIC5SRQogLlBQCiBUaGlzIHdpbGwgc2VuZCBhIFxmQ210ZVRyaWdnZXJSaXNpbmdcZlIgdHJhcCB3aGVuZXZlciB0aGUgaW5jb21pbmcKQEAgLTQxMCwxMSArNDEwLDExIEBACiBhbmQgYSBjb3JyZXNwb25kaW5nIFxmQ210ZVRyaWdnZXJGYWxsaW5nXGZSIHRyYXAgd2hlbiBpdCBmYWxscyBiZWxvdwogMTAwIGtCL3MgYWdhaW4uCiAuUFAKLU5vdGUgdGhhdCB0aGlzIG1vbml0b3JzIHRoZSBkZWx0YXMgYmV0d2VlbiBzdWNjZXNzaXZlIHNhbXBsZXMgKFxmSS1EXGZSKQorTm90ZSB0aGF0IHRoaXMgbW9uaXRvcnMgdGhlIGRlbHRhcyBiZXR3ZWVuIHN1Y2Nlc3NpdmUgc2FtcGxlcyAoXGZJXC1EXGZSKQogcmF0aGVyIHRoYW4gdGhlIGFjdHVhbCBzYW1wbGUgdmFsdWVzIHRoZW1zZWx2ZXMuICBUaGUgc2FtZSBlZmZlY3QKIGNvdWxkIGJlIG9idGFpbmVkIHVzaW5nOgogLlJTCi1tb25pdG9yIC1yIDEwICJuZXR3b3JrIHRyYWZmaWMiIGlmSW5PY3RldHMgLSAtIDEwMDAwMDAgNTAwMDAwMAorbW9uaXRvciBcLXIgMTAgIm5ldHdvcmsgdHJhZmZpYyIgaWZJbk9jdGV0cyBcLSBcLSAxMDAwMDAwIDUwMDAwMDAKIC5SRQogLlBQCiBUaGUgXGZJbGlua1VwRG93bk5vdGlmaWNhdGlvbnNcZlIgZGlyZWN0aXZlIGFib3ZlIGlzIGJyb2FkbHkKQEAgLTQyNCw4ICs0MjQsOCBAQAogbm90aWZpY2F0aW9uRXZlbnQgIGxpbmtVcFRyYXAgICAgbGlua1VwICAgaWZJbmRleCBpZkFkbWluU3RhdHVzIGlmT3BlclN0YXR1cwogbm90aWZpY2F0aW9uRXZlbnQgIGxpbmtEb3duVHJhcCAgbGlua0Rvd24gaWZJbmRleCBpZkFkbWluU3RhdHVzIGlmT3BlclN0YXR1cwogCi1tb25pdG9yICAtciA2MCAtZSBsaW5rVXBUcmFwICAgIkdlbmVyYXRlIGxpbmtVcCIgICBpZk9wZXJTdGF0dXMgIT0gMgotbW9uaXRvciAgLXIgNjAgLWUgbGlua0Rvd25UcmFwICJHZW5lcmF0ZSBsaW5rRG93biIgaWZPcGVyU3RhdHVzID09IDIKK21vbml0b3IgIFwtciA2MCBcLWUgbGlua1VwVHJhcCAgICJHZW5lcmF0ZSBsaW5rVXAiICAgaWZPcGVyU3RhdHVzICE9IDIKK21vbml0b3IgIFwtciA2MCBcLWUgbGlua0Rvd25UcmFwICJHZW5lcmF0ZSBsaW5rRG93biIgaWZPcGVyU3RhdHVzID09IDIKIC5maQogLlJFCiAuUFAKQEAgLTQzNywxMiArNDM3LDEyIEBACiBvZiAoYm9vbGVhbikgbW9uaXRvciBlbnRyaWVzOgogLlJTCiAubmYKLW1vbml0b3IJLW8gcHJOYW1lcyAgICAgIC1vIHByRXJyTWVzc2FnZSAgInByb2NUYWJsZSIgcHJFcnJvckZsYWcgICAhPSAwCi1tb25pdG9yCS1vIG1lbUVycm9yTmFtZSAtbyBtZW1Td2FwRXJyb3JNc2cgIm1lbW9yeSIgIG1lbVN3YXBFcnJvciAgIT0gMAotbW9uaXRvcgktbyBleHROYW1lcyAgICAgLW8gZXh0T3V0cHV0ICAgICAiZXh0VGFibGUiICBleHRSZXN1bHQgICAgICE9IDAKLW1vbml0b3IJLW8gZHNrUGF0aCAgICAgIC1vIGRza0Vycm9yTXNnICAgImRza1RhYmxlIiAgZHNrRXJyb3JGbGFnICAhPSAwCi1tb25pdG9yCS1vIGxhTmFtZXMgICAgICAtbyBsYUVyck1lc3NhZ2UgICJsYVRhYmxlIiAgIGxhRXJyb3JGbGFnICAgIT0gMAotbW9uaXRvcgktbyBmaWxlTmFtZSAgICAgLW8gZmlsZUVycm9yTXNnICAiZmlsZVRhYmxlIiBmaWxlRXJyb3JGbGFnICE9IDAKK21vbml0b3IJXC1vIHByTmFtZXMgICAgICBcLW8gcHJFcnJNZXNzYWdlICAicHJvY1RhYmxlIiBwckVycm9yRmxhZyAgICE9IDAKK21vbml0b3IJXC1vIG1lbUVycm9yTmFtZSBcLW8gbWVtU3dhcEVycm9yTXNnICJtZW1vcnkiICBtZW1Td2FwRXJyb3IgICE9IDAKK21vbml0b3IJXC1vIGV4dE5hbWVzICAgICBcLW8gZXh0T3V0cHV0ICAgICAiZXh0VGFibGUiICBleHRSZXN1bHQgICAgICE9IDAKK21vbml0b3IJXC1vIGRza1BhdGggICAgICBcLW8gZHNrRXJyb3JNc2cgICAiZHNrVGFibGUiICBkc2tFcnJvckZsYWcgICE9IDAKK21vbml0b3IJXC1vIGxhTmFtZXMgICAgICBcLW8gbGFFcnJNZXNzYWdlICAibGFUYWJsZSIgICBsYUVycm9yRmxhZyAgICE9IDAKK21vbml0b3IJXC1vIGZpbGVOYW1lICAgICBcLW8gZmlsZUVycm9yTXNnICAiZmlsZVRhYmxlIiBmaWxlRXJyb3JGbGFnICE9IDAKIC5maQogLlJFCiBhbmQgd2lsbCBzZW5kIGEgdHJhcCB3aGVuZXZlciBhbnkgb2YgdGhlc2UgZW50cmllcyBpbmRpY2F0ZSBhIHByb2JsZW0uCkBAIC00NTIsNyArNDUyLDcgQEAKIC5SUwogLm5mCiBzZXRFdmVudCAgIHByRml4SXQgIHByRXJyRml4ID0gMQotbW9uaXRvciAtZSBwckZpeEl0ICJwcm9jVGFibGUiIHByRXJyb3JGbGFnICAgIT0gMAorbW9uaXRvciBcLWUgcHJGaXhJdCAicHJvY1RhYmxlIiBwckVycm9yRmxhZyAgICE9IDAKIC5maQogLlJFCiAoYW5kIHNpbWlsYXJseSBmb3IgYW55IG9mIHRoZSBvdGhlciBcZklkZWZhdWx0TW9uaXRvclxmUiBlbnRyaWVzKS4KQEAgLTQ5NCwxMiArNDk0LDEyIEBACiAuU1MgIk1JQi1TcGVjaWZpYyBFeHRlbnNpb24gQ29tbWFuZHMiCiAuSSBPbmUtU2hvdAogLlJTCi0icGFzcyBbLXAgcHJpb3JpdHldIE1JQk9JRCBQUk9HIgorInBhc3MgW1wtcCBwcmlvcml0eV0gTUlCT0lEIFBST0ciCiAuUkUKIC5JUAogLkkgUGVyc2lzdGVudAogLlJTCi0icGFzc19wZXJzaXN0IFstcCBwcmlvcml0eV0gTUlCT0lEIFBST0ciCisicGFzc19wZXJzaXN0IFtcLXAgcHJpb3JpdHldIE1JQk9JRCBQUk9HIgogLlJFCiAuU1MgIkVtYmVkZGVkIFBlcmwgU3VwcG9ydCIKIElmIGVtYmVkZGVkIHBlcmwgc3VwcG9ydCBpcyBlbmFibGVkIGluIHRoZSBhZ2VudCwgdGhlIGRlZmF1bHQKQEAgLTUxNyw3ICs1MTcsNyBAQAogLm5mCiBwZXJsIHVzZSBEYXRhOjpEdW1wZXI7CiBwZXJsIHN1YiBteXJvdXRpbmUgIHsgcHJpbnQgImdvdCBjYWxsZWQ6ICIsRHVtcGVyKEBfKSwiXFxuIjsgfQotcGVybCAkYWdlbnQtPnJlZ2lzdGVyKCdteWxpbmsnLCAnLjEuMy42LjEuODc2NScsIFxcJm15cm91dGluZSk7CitwZXJsICRhZ2VudFwtPnJlZ2lzdGVyKCdteWxpbmsnLCAnLjEuMy42LjEuODc2NScsIFxcJm15cm91dGluZSk7CiAuZmkKIC5SRQogLlBQCkBAIC01NDgsMTEgKzU0OCwxMSBAQAogU05NUCBhZ2VudHMgKHJ1bm5pbmcgb24gcmVtb3RlIHN5c3RlbXMpIG1pZ2h0IGJlOgogLlJTCiAubmYKLWNvbTJzZWMgLUNuIHJlbTFjb250ZXh0ICByZW0xdXNlciBkZWZhdWx0ICByZW1vdGVob3N0MQotY29tMnNlYyAtQ24gcmVtMmNvbnRleHQgIHJlbTJ1c2VyIGRlZmF1bHQgIHJlbW90ZWhvc3QyCitjb20yc2VjIFwtQ24gcmVtMWNvbnRleHQgIHJlbTF1c2VyIGRlZmF1bHQgIHJlbW90ZWhvc3QxCitjb20yc2VjIFwtQ24gcmVtMmNvbnRleHQgIHJlbTJ1c2VyIGRlZmF1bHQgIHJlbW90ZWhvc3QyCiAKLXByb3h5IC1DbiByZW0xY29udGV4dCAgLXYgMSAtYyBwdWJsaWMgIHJlbW90ZWhvc3QxICAuMS4zCi1wcm94eSAtQ24gcmVtMmNvbnRleHQgIC12IDEgLWMgcHVibGljICByZW1vdGVob3N0MiAgLjEuMworcHJveHkgXC1DbiByZW0xY29udGV4dCAgXC12IDEgLWMgcHVibGljICByZW1vdGVob3N0MSAgLjEuMworcHJveHkgXC1DbiByZW0yY29udGV4dCAgXC12IDEgLWMgcHVibGljICByZW1vdGVob3N0MiAgLjEuMwogLmZpCiAuUkUKIChwbHVzIHN1aXRhYmxlIGFjY2VzcyBjb250cm9sIGVudHJpZXMpLgpAQCAtNTcyLDcgKzU3Miw3IEBACiBvciBsaXN0ZW5pbmcgb24gYSBkaWZmZXJlbnQgcG9ydCBvbiB0aGUgc2FtZSBzeXN0ZW0pLAogd2hpbGUgaGFuZGxpbmcgdGhlIHJlc3QgaW50ZXJuYWxseToKIC5SUwotcHJveHkgLXYgMSAtYyBwdWJsaWMgIGxvY2FsaG9zdDo2MTYxICAuMS4zLjYuMS40LjEuOTkKK3Byb3h5IFwtdiAxIFwtYyBwdWJsaWMgIGxvY2FsaG9zdDo2MTYxICAuMS4zLjYuMS40LjEuOTkKIC5SRQogVGhpcyBtZWNoYW5pc20gY2FuIGJlIHVzZWQgdG8gbGluayB0b2dldGhlciB0d28gc2VwYXJhdGUgU05NUCBhZ2VudHMuCiAuUFAKQEAgLTU4Miw3ICs1ODIsNyBAQAogLm5mCiBcZkkjIHVzZXMgU05NUHYzIHRvIGFjY2VzcyB0aGUgTUlCIHRyZWUgLjEuMy42LjEuMi4xLjEgb24gJ3JlbW90ZWhvc3QnCiAjIGFuZCBtYXBzIHRoaXMgdG8gdGhlIGxvY2FsIHRyZWUgLjEuMy42LjEuMy4xMFxmUgotcHJveHkgLXYgMyAtbCBub0F1dGhOb1ByaXYgLXUgdXNlciByZW1vdGVob3N0IC4xLjMuNi4xLjMuMTAgLjEuMy42LjEuMi4xLjEKK3Byb3h5IFwtdiAzIFwtbCBub0F1dGhOb1ByaXYgXC11IHVzZXIgcmVtb3RlaG9zdCAuMS4zLjYuMS4zLjEwIC4xLjMuNi4xLjIuMS4xCiAuZmkKIC5SRQogLlNTIFNNVVggU3ViLUFnZW50cwpkaWZmIC0tZ2l0IGEvbWFuL3NubXBkZWx0YS4xLmRlZiBiL21hbi9zbm1wZGVsdGEuMS5kZWYKaW5kZXggMzMwMTUxYy4uZTk1YTY5YiAxMDA2NDQKLS0tIGEvbWFuL3NubXBkZWx0YS4xLmRlZgorKysgYi9tYW4vc25tcGRlbHRhLjEuZGVmCkBAIC0xMiw3ICsxMiw3IEBACiBzbm1wZGVsdGEgXC0gTW9uaXRvciBkZWx0YSBkaWZmZXJlbmNlcyBpbiBTTk1QIENvdW50ZXIgdmFsdWVzCiAuU0ggU1lOT1BTSVMKIC5CIHNubXBkZWx0YQotWyBDT01NT04gT1BUSU9OUyBdIFstQ2ZdIFsgLUN0IF0gWyAtQ3MgXSBbIC1DUyBdIFsgLUNtIF0gWyAtQ0YgY29uZmlnZmlsZSBdIFsgLUNsIF0gWyAtQ3AgcGVyaW9kIF0gWyAtQ1AgUGVha3MgXSBbIC1DayBdIFsgLUNUIF0gQUdFTlQgT0lEIFsgT0lEIC4uLiBdCitbIENPTU1PTiBPUFRJT05TIF0gW1wtQ2ZdIFsgXC1DdCBdIFsgXC1DcyBdIFsgXC1DUyBdIFsgXC1DbSBdIFsgXC1DRiBjb25maWdmaWxlIF0gWyBcLUNsIF0gWyBcLUNwIHBlcmlvZCBdIFsgXC1DUCBQZWFrcyBdIFsgXC1DayBdIFsgXC1DVCBdIEFHRU5UIE9JRCBbIE9JRCAuLi4gXQogLlNIICJERVNDUklQVElPTiIKIC5CIHNubXBkZWx0YQogd2lsbCBtb25pdG9yIHRoZSBzcGVjaWZpZWQgaW50ZWdlciB2YWx1ZWQgT0lEcywgYW5kIHJlcG9ydCBjaGFuZ2VzCkBAIC0zOCw1MSArMzgsNTEgQEAKIGZvciBhIGxpc3Qgb2YgcG9zc2libGUgdmFsdWVzIGZvciBDT01NT04gT1BUSU9OUwogYXMgd2VsbCBhcyB0aGVpciBkZXNjcmlwdGlvbnMuCiAuVFAKLS5CIC1DZgorLkIgXC1DZgogRG9uJ3QgZml4IGVycm9ycyBhbmQgcmV0cnkgdGhlIHJlcXVlc3QuCiBXaXRob3V0IHRoaXMgb3B0aW9uLCBpZiBtdWx0aXBsZSBvaWRzIGhhdmUgYmVlbiBzcGVjaWZpZWQgZm9yCiBhIHNpbmdsZSByZXF1ZXN0IGFuZCBpZiB0aGUgcmVxdWVzdCBmb3Igb25lIG9yIG1vcmUgb2YgdGhlCiBvaWRzIGZhaWxzLCBzbm1wZGVsdGEgd2lsbCByZXRyeSB0aGUgcmVxdWVzdCBzbyB0aGF0IGRhdGEgZm9yCiBvaWRzIGFwYXJ0IGZyb20gdGhlIG9uZXMgdGhhdCBmYWlsZWQgd2lsbCBzdGlsbCBiZSByZXR1cm5lZC4gCi1TcGVjaWZ5aW5nIC1DZiB0ZWxscworU3BlY2lmeWluZyBcLUNmIHRlbGxzCiAuSSAgc25tcGRlbHRhCiBub3QgdG8gcmV0cnkgYSByZXF1ZXN0LCBldmVuCiBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgb2lkcyBzcGVjaWZpZWQuCiAuVFAKLS5CIC1DdAorLkIgXC1DdAogRmxhZyB3aWxsIGRldGVybWluZSB0aW1lIGludGVydmFsIGZyb20gdGhlIG1vbml0b3JlZCBlbnRpdHkuCiAuVFAKLS5CIC1DcworLkIgXC1DcwogRmxhZyB3aWxsIGRpc3BsYXkgYSB0aW1lc3RhbXAuCiAuVFAKLS5CIC1DUworLkIgXC1DUwogR2VuZXJhdGVzIGEgInN1bSBjb3VudCIgaW4gYWRkaXRpb24gdG8gdGhlIGluZGl2aWR1YWwgaW5zdGFuY2UKIGNvdW50cy4gIFRoZSAic3VtIGNvdW50IiBpcyB0aGUgdG90YWwgb2YgYWxsIHRoZSBpbmRpdmlkdWFsCiBkZWx0YXMgZm9yIGVhY2ggdGltZSBwZXJpb2QuCiAuVFAKLS5CIC1DbQorLkIgXC1DbQogUHJpbnRzIHRoZSBtYXggdmFsdWUgZXZlciBhdHRhaW5lZC4KIC5UUAotLkIgLUNGIGNvbmZpZ2ZpbGUKKy5CIFwtQ0YgY29uZmlnZmlsZQogVGVsbHMKIC5CIHNubXBkZWx0YQogdG8gcmVhZCBpdCdzIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgc3BlY2lmaWVkIGZpbGUuCiBUaGlzIG9wdGlvbnMgYWxsb3dzIHRoZSBpbnB1dCB0byBiZSBzZXQgdXAgaW4gYWR2YW5jZSByYXRoZXIKIHRoYW4gaGF2aW5nIHRvIGJlIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLgogLlRQCi0uQiAtQ2wKKy5CIFwtQ2wKIFRlbGxzCiAuQiBzbm1wZGVsdGEKIHRvIHdyaXRlIGl0J3MgY29uZmlndXJhdGlvbiB0byBmaWxlcyB3aG9zZSBuYW1lcyBjb3JyZXNwb25kIHRvIHRoZSBNSUIKLWluc3RhbmNlcyBtb25pdG9yZWQuICBGb3IgZXhhbXBsZSwgc25tcGRlbHRhIC1DbCBsb2NhbGhvc3QgaWZJbk9jdGV0cy4xCi13aWxsIGNyZWF0ZSBhIGZpbGUgImxvY2FsaG9zdC1pZkluT2N0ZXRzLjEiLgoraW5zdGFuY2VzIG1vbml0b3JlZC4gIEZvciBleGFtcGxlLCBzbm1wZGVsdGEgXC1DbCBsb2NhbGhvc3QgaWZJbk9jdGV0cy4xCit3aWxsIGNyZWF0ZSBhIGZpbGUgImxvY2FsaG9zdFwtaWZJbk9jdGV0cy4xIi4KIC5UUAotLkIgLUNwCisuQiBcLUNwCiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBzZWNvbmRzIGJldHdlZW4gcG9sbGluZyBwZXJpb2RzLgogUG9sbGluZyBjb25zdGl0dXRlcyBzZW5kaW5nIGEgcmVxdWVzdCB0byB0aGUgYWdlbnQuIFRoZQogZGVmYXVsdCBwb2xsaW5nIHBlcmlvZCBpcyBvbmUgc2Vjb25kLgogLlRQCi0uQiAtQ1AgcGVha3MKKy5CIFwtQ1AgcGVha3MKIFNwZWNpZmllcyB0aGUgcmVwb3J0aW5nIHBlcmlvZCBpbiBudW1iZXIgb2YgcG9sbGluZyBwZXJpb2RzLgogSWYgdGhpcyBvcHRpb24gaXMgc3BlY2lmaWVkLCBzbm1wZGVsdGEgcG9sbHMgdGhlIGFnZW50CiAuSSBwZWFrcwpAQCAtOTEsMjQgKzkxLDI0IEBACiB0aGUgcmVwb3J0aW5nIHBlcmlvZC4gSW4gYWRkaXRpb24sIHRoZSBoaWdoZXN0IHBvbGxlZAogdmFsdWUgd2l0aGluIHRoZSByZXBvcnRpbmcgcGVyaW9kIGlzIHNob3duLgogLlRQCi0uQiAtQ2sKLVdoZW4gdGhlIHBvbGxpbmcgcGVyaW9kICgtQ3ApIGlzIGFuIGluY3JlbWVudCBvZiA2MCBzZWNvbmRzCi1hbmQgdGhlIHRpbWVzdGFtcCBpcyBkaXNwbGF5ZWQgaW4gdGhlIG91dHB1dCAoLUNzKSwgdGhlbgorLkIgXC1DaworV2hlbiB0aGUgcG9sbGluZyBwZXJpb2QgKFwtQ3ApIGlzIGFuIGluY3JlbWVudCBvZiA2MCBzZWNvbmRzCithbmQgdGhlIHRpbWVzdGFtcCBpcyBkaXNwbGF5ZWQgaW4gdGhlIG91dHB1dCAoXC1DcyksIHRoZW4KIHRoZSBkZWZhdWx0IGRpc3BsYXkgc2hvd3MgdGhlIHRpbWVzdGFtcCBpbiB0aGUgZm9ybWF0CiBoaDptbSBtbS9kZC4gVGhpcyBvcHRpb24gY2F1c2VzIHRoZSB0aW1lc3RhbXAgZm9ybWF0CiB0byBiZSBoaDptbTpzcyBtbS9kZC4KIC5UUAotLkIgLUNUCisuQiBcLUNUCiBNYWtlcyAKIC5CIHNubXBkZWx0YQogcHJpbnQgaXRzIG91dHB1dCBpbiB0YWJ1bGFyIGZvcm0uCiAuVFAKLS5CIC1DdiB2YXJzL3BrdAorLkIgXC1DdiB2YXJzL3BrdAogU3BlY2lmaWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBvaWRzIGFsbG93ZWQgdG8gYmUgcGFja2FnZWQKIGluIGEgc2luZ2xlIFBEVS4gTXVsdGlwbGUgUERVcyBjYW4gYmUgY3JlYXRlZCBpbiBhIHNpbmdsZQogcmVxdWVzdC4gVGhlIGRlZmF1bHQgdmFsdWUgb2YgdmFyaWFibGVzIHBlciBwYWNrZXQgaXMgNjAuCiBUaGlzIG9wdGlvbiBpcyB1c2VmdWwgaWYgYSByZXF1ZXN0IHJlc3BvbnNlIHJlc3VsdHMgaW4gYW4KLWVycm9yIGJlY2F1ZXMgdGhlIHBhY2tldCBpcyB0b28gYmlnLgorZXJyb3IgYmVjYXVzZSB0aGUgcGFja2V0IGlzIHRvbyBiaWcuCiAuUFAKIE5vdGUgdGhhdAogLkIgc25tcGRlbHRhCkBAIC0xMTgsNyArMTE4LDcgQEAKIG1hbnVhbCBwYWdlLgogLlNIIEVYQU1QTEVTCiAubmYKLSQgc25tcGRlbHRhIC1jIHB1YmxpYyAtdiAxIC1DcyBsb2NhbGhvc3QgSUYtTUlCOjppZkluVWNhc3RQa3RzLjMgSUYtTUlCOjppZk91dFVjYXN0UGt0cy4zCiskIHNubXBkZWx0YSBcLWMgcHVibGljIFwtdiAxIFwtQ3MgbG9jYWxob3N0IElGXC1NSUI6OmlmSW5VY2FzdFBrdHMuMyBJRlwtTUlCOjppZk91dFVjYXN0UGt0cy4zCiBbMjA6MTU6NDMgNi8xNF0gaWZJblVjYXN0UGt0cy4zIC8xIHNlYzogMTU4CiBbMjA6MTU6NDMgNi8xNF0gaWZPdXRVY2FzdFBrdHMuMyAvMSBzZWM6IDE1OAogWzIwOjE1OjQ0IDYvMTRdIGlmSW5VY2FzdFBrdHMuMyAvMSBzZWM6IDE4NApAQCAtMTM0LDcgKzEzNCw3IEBACiBbMjA6MTU6NDkgNi8xNF0gaWZJblVjYXN0UGt0cy4zIC8xIHNlYzogMTU4CiBbMjA6MTU6NDkgNi8xNF0gaWZPdXRVY2FzdFBrdHMuMyAvMSBzZWM6IDE1OAogXkMKLSQgc25tcGRlbHRhIC1jIHB1YmxpYyAtdiAxIC1DcyAtQ1QgbG9jYWxob3N0IElGLU1JQjppZkluVWNhc3RQa3RzLjMgSUYtTUlCOmlmT3V0Y2FzdFBrdHMuMworJCBzbm1wZGVsdGEgXC1jIHB1YmxpYyBcLXYgMSBcLUNzIFwtQ1QgbG9jYWxob3N0IElGXC1NSUI6aWZJblVjYXN0UGt0cy4zIElGXC1NSUI6aWZPdXRjYXN0UGt0cy4zCiBsb2NhbGhvc3QJaWZJblVjYXN0UGt0cy4zCWlmT3V0VWNhc3RQa3RzLjMKIFsyMDoxNTo1OSA2LzE0XQkxODQuMDAJMTg0LjAwCiBbMjA6MTY6MDAgNi8xNF0JMTU4LjAwCTE1OC4wMApAQCAtMTUzLDcgKzE1Myw3IEBACiBzY3JlZW4uCiAuUFAKIC5uZgotJCBzbm1wZGVsdGEgLWMgcHVibGljIC12IDEgLUN0IC1DcyAtQ1MgLUNtIC1DbCAtQ3AgNjAgLUNQIDYwCiskIHNubXBkZWx0YSBcLWMgcHVibGljIFwtdiAxIFwtQ3QgXC1DcyBcLUNTIFwtQ20gXC1DbCBcLUNwIDYwIFwtQ1AgNjAKICAgaW50ZXJsaW5rLnN3Lm5ldC5jbXUuZWR1IC4xLjMuNi4xLjIuMS4yLjIuMS4xNi4zIC4xLjMuNi4xLjIuMS4yLjIuMS4xNi40CiAuZmkKIC5TSCAiU0VFIEFMU08iCmRpZmYgLS1naXQgYS9tYW4vc25tcGRmLjEuZGVmIGIvbWFuL3NubXBkZi4xLmRlZgppbmRleCA3NjUzMzQ3Li40MDY4NDVhIDEwMDY0NAotLS0gYS9tYW4vc25tcGRmLjEuZGVmCisrKyBiL21hbi9zbm1wZGYuMS5kZWYKQEAgLTcsMTkgKzcsMTkgQEAKIC5cIiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCiAuXCIgZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KIC5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0uVEggU05NUERGIDEgIjI1IEp1bCAyMDAzIiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgorLlRIIFNOTVBERiAxICIyOCBKYW4gMjAxMyIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKIC5TSCBOQU1FCiBzbm1wZGYgLSBkaXNwbGF5IGRpc2sgc3BhY2UgdXNhZ2Ugb24gYSBuZXR3b3JrIGVudGl0eSB2aWEgU05NUAogLlNIIFNZTk9QU0lTCiAuQiBzbm1wZGYKLVtDT01NT04gT1BUSU9OU10gWy1DdV0gQUdFTlQKK1tDT01NT04gT1BUSU9OU10gW1wtQ3VdIFtcLUNoXSBBR0VOVAogLlNIIERFU0NSSVBUSU9OCiAuQiBzbm1wZGYKLWlzIHNpbXBseSBhIG5ldHdvcmtlZCB2ZXJpc29uIG9mIHRoZSB0eXBpY2FsIGRmIGNvbW1hbmQuICBJdAoraXMgc2ltcGx5IGEgbmV0d29ya2VkIHZlcnNpb24gb2YgdGhlIHR5cGljYWwgZGYgY29tbWFuZC4gIEl0CiBjaGVja3MgdGhlIGRpc2sgc3BhY2Ugb24gdGhlIHJlbW90ZSBtYWNoaW5lIGJ5IGV4YW1pbmluZyB0aGUKLUhPU1QtUkVTT1VSQ0VTLU1JQidzIGhyU3RvcmFnZVRhYmxlIG9yIHRoZSBVQ0QtU05NUC1NSUIncyBkc2tUYWJsZS4KK0hPU1RcLVJFU09VUkNFU1wtTUlCJ3MgaHJTdG9yYWdlVGFibGUgb3IgdGhlIFVDRFwtU05NUFwtTUlCJ3MgZHNrVGFibGUuCiBCeSBkZWZhdWx0LCB0aGUgaHJTdG9yYWdlVGFibGUgaXMgcHJlZmVycmVkIGFzIGl0IHR5cGljYWxseSBjb250YWlucwotbW9yZSBpbmZvcm1hdGlvbi4gIEhvd2V2ZXIsIHRoZSAtQ3UgYXJndW1lbnQgY2FuIGJlIHBhc3NlZCB0byBzbm1wZGYKK21vcmUgaW5mb3JtYXRpb24uICBIb3dldmVyLCB0aGUgXC1DdSBhcmd1bWVudCBjYW4gYmUgcGFzc2VkIHRvIHNubXBkZgogdG8gZm9yY2UgdGhlIHVzYWdlIG9mIHRoZSBkc2tUYWJsZS4KIC5QUAogQUdFTlQgaWRlbnRpZmllcyBhIHRhcmdldCBTTk1QIGFnZW50LCB3aGljaCBpcyBpbnN0cnVtZW50ZWQKQEAgLTQ0LDE2ICs0NCwyMiBAQAogZm9yIGEgbGlzdCBvZiBwb3NzaWJsZSB2YWx1ZXMgZm9yIENPTU1PTiBPUFRJT05TCiBhcyB3ZWxsIGFzIHRoZWlyIGRlc2NyaXB0aW9ucy4KIC5UUAotLkIgLUN1CisuQiBcLUN1CiBGb3JjZXMgdGhlIGNvbW1hbmQgdG8gdXNlIGRza1RhYmxlIGluIG1pYgotVUNELVNOTVAtTUlCIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgdG8gZGV0ZXJtaW5lCitVQ0RcLVNOTVBcLU1JQiBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IHRvIGRldGVybWluZQogdGhlIHN0b3JhZ2UgaW5mb3JtYXRpb24uIEdlbmVyYWxseSwgdGhlIGRlZmF1bHQKLXVzZSBvZiBoclN0b3JhZ2VUYWJsZSBpbiBtaWIgSE9TVC1SRVNPVVJDRVMtTUlCCit1c2Ugb2YgaHJTdG9yYWdlVGFibGUgaW4gbWliIEhPU1RcLVJFU09VUkNFU1wtTUlCCiBpcyBwcmVmZXJyZWQgYmVjYXVzZSBpdCB0eXBpY2FsbHkgY29udGFpbnMKIG1vcmUgaW5mb3JtYXRpb24uCisuVFAKKy5CIFwtQ2gKK1ByaW50IHNpemVzIGluIGh1bWFuIHJlYWRhYmxlIGZvcm1hdCAoaS5lLiBNaUIsIEdpQiwgVGlCKQorLlRQCisuQiBcLUNICitQcmludCBzaXplcyBpbiBodW1hbiByZWFkYWJsZSBTSSBmb3JtYXQgKGkuZS4gTUIsIEdCLCBUQikKIC5TSCAiRVhBTVBMRVMiCiAuUFAKLSUgc25tcGRmIC12IDJjIC1jIHB1YmxpYyBsb2NhbGhvc3QKKyUgc25tcGRmIFwtdiAyYyBcLWMgcHVibGljIGxvY2FsaG9zdAogLlBQCiAubmYKIERlc2NyaXB0aW9uICAgICAgIHNpemUgKGtCKSAgICAgICAgIFVzZWQgICAgQXZhaWxhYmxlIFVzZWQlCmRpZmYgLS1naXQgYS9tYW4vc25tcGdldC4xLmRlZiBiL21hbi9zbm1wZ2V0LjEuZGVmCmluZGV4IDZiYzFiNWEuLjBlY2FjMTkgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wZ2V0LjEuZGVmCisrKyBiL21hbi9zbm1wZ2V0LjEuZGVmCkBAIC0xLDcgKzEsNyBAQAogLlwiIC0qLSBucm9mZiAtKi0KLS5cIiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuIAotLlwiIFNlZSB0aGUgTmV0LVNOTVAgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyCi0uXCIgY29weXJpZ2h0cyB0aGF0IG1heSBhcHBseToKKy5cIiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuICBTZWUKKy5cIiB0aGUgTmV0LVNOTVAgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKy5cIiB0aGF0IG1heSBhcHBseToKIC5cIiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIiAJQ29weXJpZ2h0IDE5ODgsIDE5ODkgYnkgQ2FybmVnaWUgTWVsbG9uIFVuaXZlcnNpdHkKIC5cIiAKQEAgLTI4LDcgKzI4LDcgQEAKIHNubXBnZXQgLSBjb21tdW5pY2F0ZXMgd2l0aCBhIG5ldHdvcmsgZW50aXR5IHVzaW5nIFNOTVAgR0VUIHJlcXVlc3RzCiAuU0ggU1lOT1BTSVMKIC5CIHNubXBnZXQKLVtDT01NT04gT1BUSU9OU10gWy1DZl0gQUdFTlQgT0lEIFtPSURdLi4uCitbQ09NTU9OIE9QVElPTlNdIFtcLUNmXSBBR0VOVCBPSUQgW09JRF0uLi4KIC5TSCBERVNDUklQVElPTgogLkIgc25tcGdldAogaXMgYW4gU05NUCBhcHBsaWNhdGlvbiB0aGF0IHVzZXMgdGhlIFNOTVAgR0VUIHJlcXVlc3QgdG8gcXVlcnkgZm9yCkBAIC0zOCw5ICszOCw5IEBACiAuSVIgdmFyaWFibGVzKDUpIC4KIC5TSCAiT1BUSU9OUyIKIC5UUCA4Ci0uQiAtQ2YKKy5CIFwtQ2YKIElmCi0uQiAtQ2YKKy5CIFwtQ2YKIGlzCiAuSSBub3QKIHNwZWNpZmllZCwgc29tZSBhcHBsaWNhdGlvbnMKQEAgLTYyLDcgKzYyLDcgQEAKIC5TSCAiRVhBTVBMRVMiCiBUaGUgY29tbWFuZDoKIC5QUAotICAgIHNubXBnZXQgLWMgcHVibGljIHpldXMgc3lzdGVtLnN5c0Rlc2NyLjAKKyAgICBzbm1wZ2V0IFwtYyBwdWJsaWMgemV1cyBzeXN0ZW0uc3lzRGVzY3IuMAogLlBQCiB3aWxsIHJldHJpZXZlIHRoZSB2YXJpYWJsZSBzeXN0ZW0uc3lzRGVzY3IuMCBmcm9tIHRoZSBob3N0IAogLkIgemV1cyAKQEAgLTc4LDEzICs3OCwxMyBAQAogdmFyaWFibGVzIGluIHRoZSByZXF1ZXN0LCB0aGUgcmVxdWVzdCB3aWxsIGJlIHJlc2VudCB3aXRob3V0IHRoZSBiYWQKIHZhcmlhYmxlLgogLlBQCi1IZXJlIGlzIGFub3RoZXIgZXhhbXBsZS4gVGhlIC1jIGFuZCAtdiBvcHRpb25zIGFyZSBkZWZpbmVkIGluIHRoZSAKK0hlcmUgaXMgYW5vdGhlciBleGFtcGxlLiBUaGUgXC1jIGFuZCBcLXYgb3B0aW9ucyBhcmUgZGVmaW5lZCBpbiB0aGUgCiAuSSBzbm1wY21kKDEpCiBtYW51YWwgcGFnZS4gKE5vdGUgdGhhdCBzeXN0ZW0uc3lzVXBUaW1lIGlzIGFuIGluY29tcGxldGUKIE9JRCwgYXMgaXQgbmVlZHMgdGhlIC4wIGluZGV4IGFwcGVuZGVkIHRvIGl0KToKIC5QUAogLm5mCi0gICAgc25tcGdldCAtdjEgLUNmIC1jIHB1YmxpYyBsb2NhbGhvc3Qgc3lzdGVtLnN5c1VwVGltZSBzeXN0ZW0uc3lzQ29udGFjdC4wCisgICAgc25tcGdldCBcLXYxIFwtQ2YgXC1jIHB1YmxpYyBsb2NhbGhvc3Qgc3lzdGVtLnN5c1VwVGltZSBzeXN0ZW0uc3lzQ29udGFjdC4wCiAuZmkKIC5QUAogVGhpcyBleGFtcGxlIHdpbGwgcmV0dXJuIHRoZSBmb2xsb3dpbmc6CkBAIC05Nyw3ICs5Nyw3IEBACiAuUFAKIFNpbWlsYXJseSwgdGhlIGNvbW1hbmQ6CiAubmYKLSAgICBzbm1wZ2V0IC12MSAtYyBwdWJsaWMgbG9jYWxob3N0IHN5c3RlbS5zeXNVcFRpbWUgc3lzdGVtLnN5c0NvbnRhY3QuMAorICAgIHNubXBnZXQgXC12MSBcLWMgcHVibGljIGxvY2FsaG9zdCBzeXN0ZW0uc3lzVXBUaW1lIHN5c3RlbS5zeXNDb250YWN0LjAKIC5maQogLlBQCiBXaWxsIHJldHVybjoKQEAgLTExMiw3ICsxMTIsNyBAQAogLlBQCiBXaXRoIHRoZQogLkIKLS1DZgorXC1DZgogZmxhZyBzcGVjaWZpZWQgdGhlIGFwcGxpY2F0aW9uIHdpbGwgbm90IHRyeSB0byBmaXggdGhlIFBEVSBmb3IgeW91LgogLlNIICJTRUUgQUxTTyIKIHNubXBjbWQoMSksIHNubXB3YWxrKDEpLCB2YXJpYWJsZXMoNSkuCmRpZmYgLS1naXQgYS9tYW4vc25tcGdldG5leHQuMS5kZWYgYi9tYW4vc25tcGdldG5leHQuMS5kZWYKaW5kZXggNzdjNzgzNS4uZTZjNmU2MCAxMDA2NDQKLS0tIGEvbWFuL3NubXBnZXRuZXh0LjEuZGVmCisrKyBiL21hbi9zbm1wZ2V0bmV4dC4xLmRlZgpAQCAtMSw3ICsxLDcgQEAKIC5cIiAtKi0gbnJvZmYgLSotCi0uXCIgUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0LiAKLS5cIiBTZWUgdGhlIE5ldC1TTk1QIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlcgotLlwiIGNvcHlyaWdodHMgdGhhdCBtYXkgYXBwbHk6CisuXCIgUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0LiAgU2VlCisuXCIgdGhlIE5ldC1TTk1QIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisuXCIgdGhhdCBtYXkgYXBwbHk6CiAuXCIgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIgCUNvcHlyaWdodCAxOTg4LCAxOTg5IGJ5IENhcm5lZ2llIE1lbGxvbiBVbml2ZXJzaXR5CiAuXCIgCkBAIC0yOCw5ICsyOCw5IEBACiBzbm1wZ2V0bmV4dCAtIGNvbW11bmljYXRlcyB3aXRoIGEgbmV0d29yayBlbnRpdHkgdXNpbmcgU05NUCBHRVRORVhUIHJlcXVlc3RzCiAuU0ggU1lOT1BTSVMKIC5CIHNubXBnZXRuZXh0Ci1bQ09NTU9OIE9QVElPTlNdIFstQ2ZdIEFHRU5UIE9JRCBbT0lEXS4uLgorW0NPTU1PTiBPUFRJT05TXSBbXC1DZl0gQUdFTlQgT0lEIFtPSURdLi4uCiAuU0ggREVTQ1JJUFRJT04KLS5CIHNubXBnZXQKKy5CIHNubXBnZXRuZXh0CiBpcyBhbiBTTk1QIGFwcGxpY2F0aW9uIHRoYXQgdXNlcyB0aGUgU05NUCBHRVRORVhUIHJlcXVlc3QgdG8gcXVlcnkgZm9yCiBpbmZvcm1hdGlvbiBvbiBhIG5ldHdvcmsgZW50aXR5LiAgT25lIG9yIG1vcmUgb2JqZWN0IGlkZW50aWZpZXJzCiAoT0lEcykgbWF5IGJlIGdpdmVuIGFzIGFyZ3VtZW50cyBvbiB0aGUgY29tbWFuZCBsaW5lLiAgRWFjaCB2YXJpYWJsZQpAQCAtNDEsNyArNDEsNyBAQAogLlBQCiBGb3IgZXhhbXBsZToKIC5QUAotc25tcGdldG5leHQgLWMgcHVibGljIHpldXMgaW50ZXJmYWNlcy5pZlRhYmxlLmlmRW50cnkuaWZUeXBlLjEKK3NubXBnZXRuZXh0IFwtYyBwdWJsaWMgemV1cyBpbnRlcmZhY2VzLmlmVGFibGUuaWZFbnRyeS5pZlR5cGUuMQogLlBQCiB3aWxsIHJldHJpZXZlIHRoZSB2YXJpYWJsZSBpbnRlcmZhY2VzLmlmVGFibGUuaWZFbnRyeS5pZlR5cGUuMjoKIC5QUApAQCAtNTIsOSArNTIsOSBAQAogcmVxdWVzdCB3YXMgbWFsZm9ybWVkLgogLlNIICJPUFRJT05TIgogLlRQIDgKLS5CIC1DZgorLkIgXC1DZgogSWYKLS5CIC1DZgorLkIgXC1DZgogaXMKIC5JIG5vdAogc3BlY2lmaWVkLCBzb21lIGFwcGxpY2F0aW9ucwpkaWZmIC0tZ2l0IGEvbWFuL3NubXBuZXRzdGF0LjEuZGVmIGIvbWFuL3NubXBuZXRzdGF0LjEuZGVmCmluZGV4IDkyY2ZlZTQuLjQ1MGFiN2YgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wbmV0c3RhdC4xLmRlZgorKysgYi9tYW4vc25tcG5ldHN0YXQuMS5kZWYKQEAgLTEyLDcgKzEyLDcgQEAKIC5cIiBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gCiAuXCIgc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUgbmFtZSBvZiBDTVUgbm90IGJlCiAuXCIgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlCi0uXCIgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiAgCisuXCIgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLgogLlwiIAogLlwiIENNVSBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSwgSU5DTFVESU5HCiAuXCIgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MsIElOIE5PIEVWRU5UIFNIQUxMCkBAIC01OCwyMSArNTgsMjEgQEAKIC5cIiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCiAuXCIgZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KIC5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0uVEggU05NUE5FVFNUQVQgMSAiMjAgSmFuIDIwMTAiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCisuVEggU05NUE5FVFNUQVQgMSAiMDQgTm92IDIwMTMiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCiAuU0ggTkFNRQogc25tcG5ldHN0YXQgXC0gZGlzcGxheSBuZXR3b3JraW5nIHN0YXR1cyBhbmQgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmcm9tIGEgbmV0d29yayBlbnRpdHkgdmlhIFNOTVAKIC5TSCBTWU5PUFNJUwogLkIgc25tcG5ldHN0YXQKLVtDT01NT04gT1BUSU9OU10gWy1DYV0gWy1Dbl0gQUdFTlQKK1tDT01NT04gT1BUSU9OU10gW1wtQ2FdIFtcLUNuXSBbXC1Ddl0gW1wtQ2YgYWRkcmVzc19mYW1pbHldIEFHRU5UCiAuYnIKIC5CIHNubXBuZXRzdGF0Ci1bQ09NTU9OIE9QVElPTlNdIFstQ2ldIFstQ29dIFstQ3JdIFstQ25dIFstQ3NdIEFHRU5UCitbQ09NTU9OIE9QVElPTlNdIFtcLUNyXSBbXC1Dbl0gW1wtQ3ZdIFtcLUNmIGFkZHJlc3NfZmFtaWx5XSBBR0VOVAogLmJyCiAuQiBzbm1wbmV0c3RhdAotW0NPTU1PTiBPUFRJT05TXSBbLUNpXSBbLUNuXSBbLUNJIGludGVyZmFjZV0gQUdFTlQgW2ludGVydmFsXQorW0NPTU1PTiBPUFRJT05TXSBbXC1DaV0gW1wtQyBvIHwgYiB8IGRdIFtcLUNuXSBbXC1Ddl0gW1wtQ0kgaW50ZXJmYWNlXSBbXC1DdyBpbnRlcnZhbF0gQUdFTlQKIC5icgogLkIgc25tcG5ldHN0YXQKLVtDT01NT04gT1BUSU9OU10gWy1DYV0gWy1Dbl0gWy1Dc10gWy1DcCBwcm90b2NvbF0gQUdFTlQKK1tDT01NT04gT1BUSU9OU10gW1wtQ3Nbc11dIFtcLUNwIHByb3RvY29sXSBBR0VOVAogLlNIIERFU0NSSVBUSU9OCiBUaGUKIC5CIHNubXBuZXRzdGF0IApAQCAtMTE1LDE4ICsxMTUsMzIgQEAKIGZvciBhIGxpc3Qgb2YgcG9zc2libGUgdmFsdWVzIGZvciBjb21tb24gb3B0aW9ucwogYXMgd2VsbCBhcyB0aGVpciBkZXNjcmlwdGlvbnMuCiAuUFAKKy5CIFwtQ0wKK3VzZSB0aGUgbGVnYWN5IFNOTVAgTUlCIGVsZW1lbnRzLCBub3QgdGhlIG1vZGVybiBJUCB2ZXJzaW9uIGFnbm9zdGljCit0YWJsZXMuIFxmSXNubXBuZXRzdGF0XGZSICB3aWxsIGF1dG9tYXRpY2FsbHkgZmFsbCBiYWNrIHRvIHRoZSBsZWdhY3kKK3RhYmxlcyBpZiB0aGUgbW9kZXJuIG9uZXMgYXJlIG5vdCBhdmFpbGFibGUuCisuUFAKIC5CIFwtQ2EKIFdpdGggdGhlIGRlZmF1bHQgZGlzcGxheSwKIHNob3cgdGhlIHN0YXRlIG9mIGFsbCBzb2NrZXRzOyBub3JtYWxseSBzb2NrZXRzIHVzZWQgYnkKIHNlcnZlciBwcm9jZXNzZXMgYXJlIG5vdCBzaG93bi4KIC5QUAorLkJJIFwtQ2YgIiBhZGRyZXNzX2ZhbWlseSIKK09ubHkgc2hvdyBlbnRyaWVzIGZvciB0aGUgc2VsZWN0ZWQgYWRkcmVzcyBmYW1pbHkgKGluZXQsIGluZXQ2KQorLlBQCiAuQiBcLUNpCiBTaG93IHRoZSBzdGF0ZSBvZiBhbGwgb2YgdGhlIG5ldHdvcmsgaW50ZXJmYWNlcy4KLVRoZSAgaW50ZXJmYWNlICBkaXNwbGF5ICBwcm92aWRlcyAgYSAgdGFibGUgIG9mIGN1bXVsYXRpdmUKK1RoZSBpbnRlcmZhY2UgZGlzcGxheSBwcm92aWRlcyBhIHRhYmxlIG9mIGN1bXVsYXRpdmUKIHN0YXRpc3RpY3MgcmVnYXJkaW5nIHBhY2tldHMgdHJhbnNmZXJyZWQsIGVycm9ycywgYW5kIGNvbGxpc2lvbnMuCi1UaGUgIG5ldHdvcmsgYWRkcmVzc2VzIG9mIHRoZSBpbnRlcmZhY2UgYW5kIHRoZSBtYXhpbXVtIHRyYW5zbWlzc2lvbiAKK1RoZSBuZXR3b3JrIGFkZHJlc3NlcyBvZiB0aGUgaW50ZXJmYWNlIGFuZCB0aGUgbWF4aW11bSB0cmFuc21pc3Npb24gCiB1bml0IChgYG10dScnKSBhcmUgYWxzbyBkaXNwbGF5ZWQuCiAuUFAKKy5CIFwtQ2QKK0FkZCBkcm9wcGVkIHBhY2tldHMgdG8gdGhlIGludGVyZmFjZSBkaXNwbGF5LgorLlBQCisuQiBcLUNiCitTaG93IGFuIGV4dGVuZGVkIGludGVyZmFjZSBzdGF0dXMsIGdpdmluZyBvY3RldHMgaW4gYWRkaXRpb24gdG8gcGFja2V0cy4KKy5QUAogLkIgXC1DbwogU2hvdyBhbiBhYmJyZXZpYXRlZCBpbnRlcmZhY2Ugc3RhdHVzLCBnaXZpbmcgb2N0ZXRzIGluIHBsYWNlIG9mIHBhY2tldHMuCiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGVucXVpcmluZyB2aXJ0dWFsIGludGVyZmFjZXMgKHN1Y2ggYXMgRnJhbWUtUmVsYXkgY2lyY3VpdHMpCkBAIC0xNDUsNiArMTU5LDEwIEBACiBzeW1ib2xpY2FsbHkpLgogVGhpcyBvcHRpb24gbWF5IGJlIHVzZWQgd2l0aCBhbnkgb2YgdGhlIGRpc3BsYXkgZm9ybWF0cy4KIC5QUAorLkIgXC1DdgorQWxsb3cgbG9uZyBob3N0IG9yIHNlcnZpY2UgbmFtZXMgdG8gYnJlYWsgdGhlIGNvbHVtbmFyIG91dHB1dC4KK1RoaXMgb3B0aW9uIG1heSBiZSB1c2VkIHdpdGggYW55IG9mIHRoZSBkaXNwbGF5IGZvcm1hdHMuCisuUFAKIC5CSSBcLUNwICIgcHJvdG9jb2wiCiBTaG93IHN0YXRpc3RpY3MgYWJvdXQgCiAuSVIgcHJvdG9jb2wsCkBAIC0xNTgsMjQgKzE3NiwyMCBAQAogaXMgdW5rbm93biBvciBpZiB0aGVyZSBpcyBubyBzdGF0aXN0aWNzIHJvdXRpbmUgZm9yIGl0LgogLlBQCiAuQiBcLUNzCi1TaG93IHBlci1wcm90b2NvbCBzdGF0aXN0aWNzLiAgV2hlbiB1c2VkIHdpdGggdGhlCi0uQiBcLUNyCi1vcHRpb24sIHNob3cgcm91dGluZyBzdGF0aXN0aWNzIGluc3RlYWQuCitTaG93IHBlci1wcm90b2NvbCBzdGF0aXN0aWNzLgorSWYgdGhpcyBpcyBkdXBsaWNhdGVkICgtQ3NzKSBzdGF0aXN0aWNzIGVudHJpZXMgd2hpY2ggYXJlIHplcm8gd2lsbAorYmUgc3VwcHJlc3NlZC4KIC5QUAogLkIgXC1DcgogU2hvdyB0aGUgcm91dGluZyB0YWJsZXMuCi1XaGVuCi0uQiBcLUNzCi1pcyBhbHNvIHByZXNlbnQsIHNob3cgcGVyLXByb3RvY29sIHJvdXRpbmcgc3RhdGlzdGljcyBpbnN0ZWFkIG9mIAotdGhlIHJvdXRpbmcgdGFibGVzLgogLlBQCiAuQkkgXC1DUiAiIHJlcGVhdGVycyIKIEZvciBHRVRCVUxLIHJlcXVlc3RzLAogLkkgcmVwZWF0ZXJzCiBzcGVjaWZpZXMgdGhlIG1heC1yZXBlYXRlcnMgdmFsdWUgdG8gdXNlLgogLlBQCi1XaGVuICBzbm1wbmV0c3RhdCBpcyBpbnZva2VkIHdpdGggYW4gaW50ZXJ2YWwgYXJndW1lbnQsIGl0Ci1kaXNwbGF5cyBhIHJ1bm5pbmcgY291bnQgb2Ygc3RhdGlzdGljcyByZWxhdGVkIHRvICBuZXR3b3JrCitXaGVuIHNubXBuZXRzdGF0IGlzIGludm9rZWQgd2l0aCBhbiBpbnRlcnZhbCBhcmd1bWVudCwgaXQKK2Rpc3BsYXlzIGEgcnVubmluZyBjb3VudCBvZiBzdGF0aXN0aWNzIHJlbGF0ZWQgdG8gbmV0d29yawogaW50ZXJmYWNlcy4KIC5JIGludGVydmFsCiBpcyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgYmV0d2VlbgpAQCAtMTg0LDQzICsxOTgsNDMgQEAKIC5JIFRoZSBBY3RpdmUgU29ja2V0cyBEaXNwbGF5IChkZWZhdWx0KQogLlBQCiBUaGUgZGVmYXVsdCBkaXNwbGF5LCBmb3IgYWN0aXZlIHNvY2tldHMsIHNob3dzIHRoZSBsb2NhbAotYW5kIHJlbW90ZSBhZGRyZXNzZXMsIHByb3RvY29sLCBhbmQgdGhlIGludGVybmFsIHN0YXRlICBvZgotdGhlICAgcHJvdG9jb2wuICAgIEFkZHJlc3MgICBmb3JtYXRzICAgYXJlICAgb2YgIHRoZSAgZm9ybQotYGBob3N0LnBvcnQnJyBvciBgYG5ldHdvcmsucG9ydCcnIGlmICBhICBzb2NrZXQncyAgYWRkcmVzcwotc3BlY2lmaWVzICBhICBuZXR3b3JrICBidXQgbm8gc3BlY2lmaWMgaG9zdCBhZGRyZXNzLiAgV2hlbgorYW5kIHJlbW90ZSBhZGRyZXNzZXMsIHByb3RvY29sLCBhbmQgdGhlIGludGVybmFsIHN0YXRlIG9mCit0aGUgcHJvdG9jb2wuICBBZGRyZXNzIGZvcm1hdHMgYXJlIG9mIHRoZSBmb3JtCitgYGhvc3QucG9ydCcnIG9yIGBgbmV0d29yay5wb3J0JycgaWYgYSBzb2NrZXQncyBhZGRyZXNzCitzcGVjaWZpZXMgYSBuZXR3b3JrIGJ1dCBubyBzcGVjaWZpYyBob3N0IGFkZHJlc3MuICBXaGVuCiBrbm93biwgdGhlIGhvc3QgYW5kIG5ldHdvcmsgYWRkcmVzc2VzIGFyZSBkaXNwbGF5ZWQgc3ltYm9saWNhbGx5Ci1hY2NvcmRpbmcgICB0byAgdGhlICBkYXRhICBiYXNlcyAKLS5JIC9ldGMvaG9zdHMgIGFuZAorYWNjb3JkaW5nIHRvIHRoZSBkYXRhYmFzZXMgCisuSSAvZXRjL2hvc3RzIGFuZAogLklSIC9ldGMvbmV0d29ya3MsCi1yZXNwZWN0aXZlbHkuICBJZiBhIHN5bWJvbGljICBuYW1lICBmb3IgIGFuCi1hZGRyZXNzICBpcyB1bmtub3duLCBvciBpZiB0aGUKK3Jlc3BlY3RpdmVseS4gIElmIGEgc3ltYm9saWMgbmFtZSBmb3IgYW4KK2FkZHJlc3MgaXMgdW5rbm93biwgb3IgaWYgdGhlCiAuQiBcLUNuCiBvcHRpb24gaXMgc3BlY2lmaWVkLCB0aGUKLWFkZHJlc3MgaXMgcHJpbnRlZCBudW1lcmljYWxseSwgYWNjb3JkaW5nIHRvICB0aGUgIGFkZHJlc3MKK2FkZHJlc3MgaXMgcHJpbnRlZCBudW1lcmljYWxseSwgYWNjb3JkaW5nIHRvIHRoZSBhZGRyZXNzCiBmYW1pbHkuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIEludGVybmV0IGBgZG90Ci1mb3JtYXQsJycgcmVmZXIgIHRvCitmb3JtYXQsJycgcmVmZXIgdG8KIC5JUiBpbmV0KDNOKS4KLVVuc3BlY2lmaWVkLCAgb3IgIGBgd2lsZGNhcmQnJywgYWRkcmVzc2VzIGFuZCBwb3J0cyBhcHBlYXIgYXMgYGAqJycuCitVbnNwZWNpZmllZCwgb3IgYGB3aWxkY2FyZCcnLCBhZGRyZXNzZXMgYW5kIHBvcnRzIGFwcGVhciBhcyBgYConJy4KIC5QUAogLkkgVGhlIEludGVyZmFjZSBEaXNwbGF5CiAuUFAKLVRoZSAgaW50ZXJmYWNlICBkaXNwbGF5ICBwcm92aWRlcyAgYSAgdGFibGUgIG9mIGN1bXVsYXRpdmUKK1RoZSBpbnRlcmZhY2UgZGlzcGxheSBwcm92aWRlcyBhIHRhYmxlIG9mIGN1bXVsYXRpdmUKIHN0YXRpc3RpY3MgcmVnYXJkaW5nIHBhY2tldHMgdHJhbnNmZXJyZWQsIGVycm9ycywgYW5kIGNvbC0KLWxpc2lvbnMuICAgVGhlICBuZXR3b3JrIGFkZHJlc3NlcyBvZiB0aGUgaW50ZXJmYWNlIGFuZCB0aGUKK2xpc2lvbnMuICBUaGUgbmV0d29yayBhZGRyZXNzZXMgb2YgdGhlIGludGVyZmFjZSBhbmQgdGhlCiBtYXhpbXVtIHRyYW5zbWlzc2lvbiB1bml0IChgYG10dScnKSBhcmUgYWxzbyBkaXNwbGF5ZWQuCiAuUFAKIC5JIFRoZSBSb3V0aW5nIFRhYmxlIERpc3BsYXkKIC5QUAotVGhlIHJvdXRpbmcgdGFibGUgZGlzcGxheSBpbmRpY2F0ZXMgdGhlICBhdmFpbGFibGUgIHJvdXRlcwotYW5kICB0aGVpciAgc3RhdHVzLiAgIEVhY2ggcm91dGUgY29uc2lzdHMgb2YgYSBkZXN0aW5hdGlvbgotaG9zdCBvciBuZXR3b3JrIGFuZCBhIGdhdGV3YXkgdG8gdXNlIGluICBmb3J3YXJkaW5nICBwYWNrLQotZXRzLiAgIFRoZSBmbGFncyBmaWVsZCBzaG93cyB0aGUgc3RhdGUgb2YgdGhlIHJvdXRlIChgYFUnJwotaWYgYGB1cCcnKSwgd2hldGhlciB0aGUgcm91dGUgaXMgIHRvICBhICBnYXRld2F5ICAoYGBHJycpLAotd2hldGhlciAgdGhlICByb3V0ZSAgd2FzIGNyZWF0ZWQgZHluYW1pY2FsbHkgYnkgYSByZWRpcmVjdAotKGBgRCcnKSwgYW5kIHdoZXRoZXIgdGhlIHJvdXRlICBoYXMgIGJlZW4gIG1vZGlmaWVkICBieSAgYQotcmVkaXJlY3QgIChgYE0nJykuICAgRGlyZWN0ICByb3V0ZXMgIGFyZSAgY3JlYXRlZCBmb3IgZWFjaAotaW50ZXJmYWNlIGF0dGFjaGVkIHRvIHRoZSBsb2NhbCBob3N0OyAgdGhlICBnYXRld2F5ICBmaWVsZAotZm9yICBzdWNoIGVudHJpZXMgc2hvd3MgdGhlIGFkZHJlc3Mgb2YgdGhlIG91dGdvaW5nIGludGVyLQorVGhlIHJvdXRpbmcgdGFibGUgZGlzcGxheSBpbmRpY2F0ZXMgdGhlIGF2YWlsYWJsZSByb3V0ZXMKK2FuZCB0aGVpciBzdGF0dXMuICBFYWNoIHJvdXRlIGNvbnNpc3RzIG9mIGEgZGVzdGluYXRpb24KK2hvc3Qgb3IgbmV0d29yayBhbmQgYSBnYXRld2F5IHRvIHVzZSBpbiBmb3J3YXJkaW5nIHBhY2stCitldHMuICBUaGUgZmxhZ3MgZmllbGQgc2hvd3MgdGhlIHN0YXRlIG9mIHRoZSByb3V0ZSAoYGBVJycKK2lmIGBgdXAnJyksIHdoZXRoZXIgdGhlIHJvdXRlIGlzIHRvIGEgZ2F0ZXdheSAoYGBHJycpLAord2hldGhlciB0aGUgcm91dGUgd2FzIGNyZWF0ZWQgZHluYW1pY2FsbHkgYnkgYSByZWRpcmVjdAorKGBgRCcnKSwgYW5kIHdoZXRoZXIgdGhlIHJvdXRlIGhhcyBiZWVuIG1vZGlmaWVkIGJ5IGEKK3JlZGlyZWN0IChgYE0nJykuICBEaXJlY3Qgcm91dGVzIGFyZSBjcmVhdGVkIGZvciBlYWNoCitpbnRlcmZhY2UgYXR0YWNoZWQgdG8gdGhlIGxvY2FsIGhvc3Q7IHRoZSBnYXRld2F5IGZpZWxkCitmb3Igc3VjaCBlbnRyaWVzIHNob3dzIHRoZSBhZGRyZXNzIG9mIHRoZSBvdXRnb2luZyBpbnRlci0KIGZhY2UuICBUaGUgaW50ZXJmYWNlIGVudHJ5IGluZGljYXRlcyB0aGUgbmV0d29yayBpbnRlcmZhY2UKIHV0aWxpemVkIGZvciB0aGUgcm91dGUuCiAuUFAKQEAgLTIzMSwxMCArMjQ1LDEwIEBACiBpcyBpbnZva2VkIHdpdGggYW4KIC5JIGludGVydmFsCiBhcmd1bWVudCwgaXQKLWRpc3BsYXlzIGEgcnVubmluZyBjb3VudCBvZiBzdGF0aXN0aWNzIHJlbGF0ZWQgdG8gIG5ldHdvcmsKLWludGVyZmFjZXMuICAgVGhpcyAgZGlzcGxheSAgY29uc2lzdHMgIG9mIGEgY29sdW1uIGZvciB0aGUKK2Rpc3BsYXlzIGEgcnVubmluZyBjb3VudCBvZiBzdGF0aXN0aWNzIHJlbGF0ZWQgdG8gbmV0d29yaworaW50ZXJmYWNlcy4gIFRoaXMgZGlzcGxheSBjb25zaXN0cyBvZiBhIGNvbHVtbiBmb3IgdGhlCiBwcmltYXJ5IGludGVyZmFjZSBhbmQgYSBjb2x1bW4gc3VtbWFyaXppbmcgaW5mb3JtYXRpb24gZm9yCi1hbGwgIGludGVyZmFjZXMuICAgVGhlICBwcmltYXJ5ICBpbnRlcmZhY2UgbWF5IGJlIHJlcGxhY2VkCithbGwgaW50ZXJmYWNlcy4gIFRoZSBwcmltYXJ5IGludGVyZmFjZSBtYXkgYmUgcmVwbGFjZWQKIHdpdGggYW5vdGhlciBpbnRlcmZhY2Ugd2l0aCB0aGUKIC5CIFwtQ0kKIG9wdGlvbi4gIFRoZSBmaXJzdCBsaW5lCkBAIC0yNTQsNyArMjY4LDcgQEAKIC5TSCBFWEFNUExFUwogRXhhbXBsZSBvZiB1c2luZyBzbm1wbmV0c3RhdCB0byBkaXNwbGF5IGFjdGl2ZSBzb2NrZXRzIChkZWZhdWx0KToKIC5QUAotJSBzbm1wbmV0c3RhdCAtdiAyYyAtYyBwdWJsaWMgLUNhIHRlc3Rob3N0CislIHNubXBuZXRzdGF0IFwtdiAyYyBcLWMgcHVibGljIFwtQ2EgdGVzdGhvc3QKIC5QUAogLm5mCiBBY3RpdmUgSW50ZXJuZXQgKHRjcCkgQ29ubmVjdGlvbnMgKGluY2x1ZGluZyBzZXJ2ZXJzKQpAQCAtMjc4LDcgKzI5Miw3IEBACiBcJi4uLgogLmZpCiAuUFAKLSUgc25tcG5ldHN0YXQgLXYgMmMgLWMgcHVibGljIC1DaSB0ZXN0aG9zdAorJSBzbm1wbmV0c3RhdCBcLXYgMmMgXC1jIHB1YmxpYyBcLUNpIHRlc3Rob3N0CiAuUFAKIC5uZgogTmFtZSAgICAgTXR1IE5ldHdvcmsgICAgQWRkcmVzcyAgICAgICAgICBJcGt0cyAgIEllcnJzICAgIE9wa3RzIE9lcnJzIFF1ZXVlCkBAIC0yODksNyArMzAzLDcgQEAKIEV4YW1wbGUgb2YgdXNpbmcgc25tcG5ldHN0YXQgdG8gc2hvdyBzdGF0aXN0aWNzIGFib3V0IGEgc3BlY2lmaWMgcHJvdG9jb2w6CiAuUFAKIC5uZgotJSBzbm1wbmV0c3RhdCAtdiAyYyAtYyBwdWJsaWMgLUNwIHRjcCB0ZXN0aG9zdAorJSBzbm1wbmV0c3RhdCBcLXYgMmMgXC1jIHB1YmxpYyBcLUNwIHRjcCB0ZXN0aG9zdAogCiBBY3RpdmUgSW50ZXJuZXQgKHRjcCkgQ29ubmVjdGlvbnMKIFByb3RvIExvY2FsIEFkZHJlc3MgICAgICAgICAgICAgICAgRm9yZWlnbiBBZGRyZXNzICAgICAgICAgICAgICAgICAoc3RhdGUpCmRpZmYgLS1naXQgYS9tYW4vc25tcHNldC4xLmRlZiBiL21hbi9zbm1wc2V0LjEuZGVmCmluZGV4IDVjN2RmNDYuLmIwYzRlMDcgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wc2V0LjEuZGVmCisrKyBiL21hbi9zbm1wc2V0LjEuZGVmCkBAIC0xLDcgKzEsNyBAQAogLlwiIC0qLSBucm9mZiAtKi0KLS5cIiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuCi0uXCIgU2VlIHRoZSBOZXQtU05NUCBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIKLS5cIiBjb3B5cmlnaHRzIHRoYXQgbWF5IGFwcGx5OgorLlwiIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodC4gIFNlZQorLlwiIHRoZSBOZXQtU05NUCBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworLlwiIHRoYXQgbWF5IGFwcGx5OgogLlwiIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiIAlDb3B5cmlnaHQgMTk4OCwgMTk4OSBieSBDYXJuZWdpZSBNZWxsb24gVW5pdmVyc2l0eQogLlwiIApAQCAtODYsMTMgKzg2LDEzIEBACiAuUFAKIEZvciBleGFtcGxlOgogLlBQCi1zbm1wc2V0IC1jIHByaXZhdGUgLXYgMSB0ZXN0LWh1YiBzeXN0ZW0uc3lzQ29udGFjdC4wIHMgZHB6QG5vYy5ydXRnZXJzLmVkdSBpcC5pcGZvcndhcmRpbmcuMCA9IDIKK3NubXBzZXQgXC1jIHByaXZhdGUgXC12IDEgdGVzdFwtaHViIHN5c3RlbS5zeXNDb250YWN0LjAgcyBkcHpAbm9jLnJ1dGdlcnMuZWR1IGlwLmlwZm9yd2FyZGluZy4wID0gMgogLlBQCiB3aWxsIHNldCB0aGUgdmFyaWFibGVzIHN5c0NvbnRhY3QuMCBhbmQgaXBGb3J3YXJkaW5nLjA6CiAuUFAKIHN5c3RlbS5zeXNDb250YWN0LjAgPSBTVFJJTkc6ICJkcHpAbm9jLnJ1dGdlcnMuZWR1IgogLmJyCi1pcC5pcEZvcndhcmRpbmcuMCA9IElOVEVHRVI6IG5vdC1mb3J3YXJkaW5nKDIpCitpcC5pcEZvcndhcmRpbmcuMCA9IElOVEVHRVI6IG5vdFwtZm9yd2FyZGluZygyKQogLlBQCiBJZiB0aGUgbmV0d29yayBlbnRpdHkgaGFzIGFuIGVycm9yIHByb2Nlc3NpbmcgdGhlIHJlcXVlc3QgcGFja2V0LCBhbgogZXJyb3IgcGFja2V0IHdpbGwgYmUgcmV0dXJuZWQgYW5kIGEgbWVzc2FnZSB3aWxsIGJlIHNob3duLCBoZWxwaW5nIHRvCmRpZmYgLS1naXQgYS9tYW4vc25tcHN0YXR1cy4xLmRlZiBiL21hbi9zbm1wc3RhdHVzLjEuZGVmCmluZGV4IGJiYTQ4YjMuLjExMjYxNDYgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wc3RhdHVzLjEuZGVmCisrKyBiL21hbi9zbm1wc3RhdHVzLjEuZGVmCkBAIC0zMiw3ICszMiw3IEBACiBzbm1wc3RhdHVzIC0gcmV0cmlldmVzIGEgZml4ZWQgc2V0IG9mIG1hbmFnZW1lbnQgaW5mb3JtYXRpb24gZnJvbSBhIG5ldHdvcmsgZW50aXR5CiAuU0ggU1lOT1BTSVMKIC5CIHNubXBzdGF0dXMKLVtDT01NT04gT1BUSU9OU10gWy1DZl0gQUdFTlQKK1tDT01NT04gT1BUSU9OU10gW1wtQ2ZdIEFHRU5UCiAuU0ggREVTQ1JJUFRJT04KIC5CIHNubXBzdGF0dXMKIGlzIGFuIFNOTVAgYXBwbGljYXRpb24gdGhhdCByZXRyaWV2ZXMgc2V2ZXJhbCBpbXBvcnRhbnQgc3RhdGlzdGljcwpAQCAtNjgsNyArNjgsNyBAQAogLlBQCiBGb3IgZXhhbXBsZToKIC5QUAotc25tcHN0YXR1cyAtYyBwdWJsaWMgLXYgMSBuZXRkZXYta2JveC5jYy5jbXUuZWR1Citzbm1wc3RhdHVzIFwtYyBwdWJsaWMgXC12IDEgbmV0ZGV2XC1rYm94LmNjLmNtdS5lZHUKIC5QUAogd2lsbCBwcm9kdWNlIG91dHB1dCBzaW1pbGFyIHRvIHRoZSBmb2xsb3dpbmc6CiAuUFAKQEAgLTkwLDcgKzkwLDcgQEAKIC5CIHNubXBzdGF0dXMKIHdpbGwgYXR0ZW1wdCB0byByZWZvcm0gaXRzIHJlcXVlc3QgdG8gZWxpbWluYXRlIHRoZSBtYWxmb3JtZWQKIHZhcmlhYmxlICh1bmxlc3MgdGhlCi0uQiAtQ2YKKy5CIFwtQ2YKIG9wdGlvbiBpcyBnaXZlbiwgc2VlIGJlbG93KSwgYnV0IHRoaXMgdmFyaWFibGUgd2lsbCB0aGVuIGJlIG1pc3NpbmcKIGZyb20gdGhlIGRpc3BsYXllZCBkYXRhLgogLlBQCkBAIC0xMDIsMTAgKzEwMiwxMCBAQAogZm9yIGEgbGlzdCBvZiBwb3NzaWJsZSB2YWx1ZXMgZm9yIENPTU1PTiBPUFRJT05TCiBhcyB3ZWxsIGFzIHRoZWlyIGRlc2NyaXB0aW9ucy4KIC5UUAotLkIgLUNmCisuQiBcLUNmCiBCeSBkZWZhdWx0LCBzbm1wc3RhdHVzIHdpbGwgdHJ5IHRvIGZpeCBlcnJvcnMgcmV0dXJuZWQKIGJ5IHRoZSBhZ2VudCBhbmQgcmV0cnkgYSByZXF1ZXN0LiBJbiB0aGlzIHNpdHVhdGlvbiwKLXRoZSBjb21tYW5kIHdpbGwgZGlzcGxheSB0aGUgZGF0YSB0aGF0IGl0IGNhbi4gSWYgdGhlIC1DZiBvcHRpb24KK3RoZSBjb21tYW5kIHdpbGwgZGlzcGxheSB0aGUgZGF0YSB0aGF0IGl0IGNhbi4gSWYgdGhlIFwtQ2Ygb3B0aW9uCiBpcyBzcGVjaWZpZWQsIHRoZW4gc25tcHN0YXR1cyB3aWxsIG5vdCB0cnkgdG8gZml4CiBlcnJvcnMsIGFuZCB0aGUgZXJyb3Igd2lsbCBjYXVzZSB0aGUgY29tbWFuZCB0byB0ZXJtaW5hdGUuCiAuU0ggIlNFRSBBTFNPIgpkaWZmIC0tZ2l0IGEvbWFuL3NubXB0YWJsZS4xLmRlZiBiL21hbi9zbm1wdGFibGUuMS5kZWYKaW5kZXggNTc1YjAzNC4uNGU2NWNiNCAxMDA2NDQKLS0tIGEvbWFuL3NubXB0YWJsZS4xLmRlZgorKysgYi9tYW4vc25tcHRhYmxlLjEuZGVmCkBAIC0yMCwyOCArMjAsMjEgQEAKIC5cIiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCiAuXCIgZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KIC5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0uVEggU05NUFRBQkxFIDEgIjA2IFNlcCAyMDAzIiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgorLlRIIFNOTVBUQUJMRSAxICIyNSBKdWwgMjAwMyIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKIC5TSCBOQU1FCiBzbm1wdGFibGUgLSByZXRyaWV2ZSBhbiBTTk1QIHRhYmxlIGFuZCBkaXNwbGF5IGl0IGluIHRhYnVsYXIgZm9ybQogLlNIIFNZTk9QU0lTCiAuQiBzbm1wdGFibGUKLVtDT01NT04gT1BUSU9OU10gWy1DYl0gWy1DQl0gWy1DaF0gWy1DSF0gWy1DaV0gWy1DZiBTVFJJTkddIFstQ3cgV0lEVEhdCi1BR0VOVCBUQUJMRS1PSUQKK1tDT01NT04gT1BUSU9OU10gW1wtQ2JdIFtcLUNCXSBbXC1DaF0gW1wtQ0hdIFtcLUNpXSBbXC1DZiBTVFJJTkddIFtcLUN3IFdJRFRIXQorQUdFTlQgVEFCTEVcLU9JRAogLlNIIERFU0NSSVBUSU9OCiAuQiBzbm1wdGFibGUKIGlzIGFuIFNOTVAgYXBwbGljYXRpb24gdGhhdCByZXBlYXRlZGx5IHVzZXMgdGhlIFNOTVAgR0VUTkVYVCBvcgogR0VUQlVMSyByZXF1ZXN0cyB0byBxdWVyeSBmb3IgaW5mb3JtYXRpb24gb24gYSBuZXR3b3JrIGVudGl0eS4gIFRoZQotcGFyYW1ldGVyCi0uSSBUQUJMRS1PSUQKLW11c3Qgc3BlY2lmeSBhbiBTTk1QIHRhYmxlLgotLlBQCi1zbm1wdGFibGUgaXMgYW4gU05NUCBhcHBsaWNhdGlvbiB0aGF0IHJlcGVhdGVkbHkgdXNlcyB0aGUKLVNOTVAgR0VUTkVYVCBvciBHRVRCVUxLIHJlcXVlc3RzIHRvIHF1ZXJ5IGZvciAgaW5mb3JtYXRpb24KLW9uIGEgbmV0d29yayBlbnRpdHkuICBUaGUgcGFyYW1ldGVyIFRBQkxFLU9JRCBtdXN0IHNwZWNpZnkKLWFuIFNOTVAgdGFibGUuCitwYXJhbWV0ZXIgVEFCTEVcLU9JRCBtdXN0IHNwZWNpZnkgYW4gU05NUCB0YWJsZS4KIAogQUdFTlQgaWRlbnRpZmllcyBhIHRhcmdldCBTTk1QIGFnZW50LCB3aGljaCBpcyBpbnN0cnVtZW50ZWQKLXRvIG1vbml0b3IgdGhlIGdpZXZuIG9iamVjdHMuICBBdCBpdHMgc2ltcGxlc3QsIHRoZSBBR0VOVAordG8gbW9uaXRvciB0aGUgZ2l2ZW4gb2JqZWN0cy4gIEF0IGl0cyBzaW1wbGVzdCwgdGhlIEFHRU5UCiBzcGVjaWZpY2F0aW9uIHdpbGwgY29uc2lzdCBvZiBhIGhvc3RuYW1lIG9yIGFuIElQdjQKIGFkZHJlc3MuICBJbiB0aGlzIHNpdHVhdGlvbiwgdGhlIGNvbW1hbmQgd2lsbCBhdHRlbXB0CiBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGFnZW50LCB1c2luZyBVRFAvSVB2NCB0byBwb3J0IDE2MQpAQCAtNTcsMTkgKzUwLDE5IEBACiBmb3IgYSBsaXN0IG9mIHBvc3NpYmxlIHZhbHVlcyBmb3IgQ09NTU9OIE9QVElPTlMKIGFzIHdlbGwgYXMgdGhlaXIgZGVzY3JpcHRpb25zLgogLlRQCi0uQiAtQ2IKKy5CIFwtQ2IKIERpc3BsYXkgb25seSBhIGJyaWVmIGhlYWRpbmcuIEFueSBjb21tb24gcHJlZml4IG9mIHRoZSB0YWJsZSBmaWVsZAogbmFtZXMgd2lsbCBiZSBkZWxldGVkLgogLlRQIAotLkIgLUNCCisuQiBcLUNCCiBEbyBub3QgdXNlIEdFVEJVTEsgcmVxdWVzdHMgdG8gcmV0cmlldmUgZGF0YSwgb25seSBHRVRORVhULgogLlRQIAotLkJJIC1DYyAiIENIQVJTIgorLkJJIFwtQ2MgIiBDSEFSUyIKIFByaW50IHRhYmxlIGluIGNvbHVtbnMgb2YKIC5JIENIQVJTCiBjaGFyYWN0ZXJzIHdpZHRoLgogLlRQCi0uQkkgLUNmICIgU1RSSU5HIgorLkJJIFwtQ2YgIiBTVFJJTkciCiBUaGUgc3RyaW5nCiAuSSBTVFJJTkcKIGlzIHVzZWQgdG8gc2VwYXJhdGUgdGFibGUgY29sdW1ucy4gIFdpdGggdGhpcyBvcHRpb24sIGVhY2ggdGFibGUgZW50cnkKQEAgLTc3LDI4ICs3MCwyOCBAQAogc2VwYXJhdGUgdGhlIGNvbHVtbnMgKHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBpbXBvcnQgaXQgaW50byBhCiBkYXRhYmFzZSkuICBPdGhlcndpc2UgaXQgaXMgcHJpbnRlZCBpbiBuaWNlbHkgYWxpZ25lZCBjb2x1bW5zLgogLlRQCi0uQiAtQ2gKKy5CIFwtQ2gKIERpc3BsYXkKIC5JIG9ubHkKIHRoZSBjb2x1bW4gaGVhZGluZ3MuCiAuVFAKLS5CIC1DSAorLkIgXC1DSAogRG8gbm90IGRpc3BsYXkgdGhlIGNvbHVtbiBoZWFkaW5ncy4KIC5UUAotLkIgLUNpCisuQiBcLUNpCiBUaGlzIG9wdGlvbiBwcmVwZW5kcyB0aGUgaW5kZXggb2YgdGhlIGVudHJ5IHRvIGFsbCBwcmludGVkIGxpbmVzLgogLlRQCi0uQiAtQ2wKKy5CIFwtQ2wKIExlZnQganVzdGlmeSB0aGUgZGF0YSBpbiBlYWNoIGNvbHVtbi4KIC5UUCAKLS5CSSAtQ3IgIiBSRVBFQVRFUlMiCisuQkkgXC1DciAiIFJFUEVBVEVSUyIKIEZvciBHRVRCVUxLIHJlcXVlc3RzLCAKIC5JIFJFUEVBVEVSUwogc3BlY2lmaWVzIHRoZSBtYXgtcmVwZWF0ZXJzIHZhbHVlIHRvIHVzZS4gIEZvciBHRVRORVhUIHJlcXVlc3RzLAogLkkgUkVQRUFURVJTCiBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHRvIHJldHJpZXZlIGF0IGEgdGltZS4KIC5UUCAKLS5CSSAtQ3cgIiBXSURUSCIKKy5CSSBcLUN3ICIgV0lEVEgiCiBTcGVjaWZpZXMgdGhlIHdpZHRoIG9mIHRoZSBsaW5lcyB3aGVuIHRoZSB0YWJsZSBpcyBwcmludGVkLgogSWYgdGhlIGxpbmVzIHdpbGwgYmUgbG9uZ2VyLCB0aGUgdGFibGUgd2lsbCBiZSBwcmludGVkIGluIHNlY3Rpb25zIG9mCiBhdCBtb3N0IApAQCAtMTE1LDE0ICsxMDgsMTQgQEAKIC5JIHNubXBjbWQoMSkKIG1hbnVhbCBwYWdlLiAgVGhpcyBPSUQgXGZCbXVzdFxmUCBiZSB0aGF0IG9mIGEgTUlCIHRhYmxlIG9iamVjdC4KIC5TSCBFWEFNUExFUwotJCBzbm1wdGFibGUgLXYgMmMgLWMgcHVibGljIGxvY2FsaG9zdCBhdC5hdFRhYmxlCiskIHNubXB0YWJsZSBcLXYgMmMgXC1jIHB1YmxpYyBsb2NhbGhvc3QgYXQuYXRUYWJsZQogCi1TTk1QIHRhYmxlOiBhdC5hdFRhYmxlIFJGQzEyMTMtTUlCOjphdFRhYmxlCitTTk1QIHRhYmxlOiBhdC5hdFRhYmxlIFJGQzEyMTNcLU1JQjo6YXRUYWJsZQogCiBhdElmSW5kZXggICBhdFBoeXNBZGRyZXNzICAgYXROZXRBZGRyZXNzCiAgICAgICAgIDEgIDg6MDoyMDoyMDowOmFiIDEzMC4yMjUuMjQzLjMzCiAuUFAKLSQgc25tcHRhYmxlIC12IDJjIC1jIHB1YmxpYyAtQ2YgKyBsb2NhbGhvc3QgYXQuYXRUYWJsZQorJCBzbm1wdGFibGUgXC12IDJjIFwtYyBwdWJsaWMgXC1DZiArIGxvY2FsaG9zdCBhdC5hdFRhYmxlCiAKIFNOTVAgdGFibGU6IGF0LmF0VGFibGUKIApAQCAtMTMwLDcgKzEyMyw3IEBACiAxKzg6MDoyMDoyMDowOmFiKzEzMC4yMjUuMjQzLjMzCiAuUFAKIC5uZgotJCBzbm1wdGFibGUgbG9jYWxob3N0IC1DbCAtQ0IgLUNpIC1PWCAtQ2IgLUNjIDE2IC1DdyA2NCBpZlRhYmxlCiskIHNubXB0YWJsZSBsb2NhbGhvc3QgXC1DbCBcLUNCIFwtQ2kgXC1PWCBcLUNiIFwtQ2MgMTYgXC1DdyA2NCBpZlRhYmxlCiAKIFNOTVAgdGFibGU6IGlmVGFibGUKIApAQCAtMTU5LDcgKzE1Miw3IEBACiAuUFAKIC5TSCAiQlVHUyIKIFRoZSB0ZXN0IGZvcgotLkkgVEFCTEUtT0lECisuSSBUQUJMRVwtT0lECiBhY3R1YWxseSBzcGVjaWZ5aW5nIGEgdGFibGUgaXMgcmF0aGVyIGhldXJpc3RpYy4gIE5vdGUgYWxzbyB0aGF0IHRoZQogdGVzdCByZXF1aXJlcyB0aGUgZGVmaW5pbmcgTUlCIGZpbGUgdG8gYmUgbG9hZGVkLgogLlBQCmRpZmYgLS1naXQgYS9tYW4vc25tcHRlc3QuMS5kZWYgYi9tYW4vc25tcHRlc3QuMS5kZWYKaW5kZXggYzFlZGI0OC4uZGZkYWVkOCAxMDA2NDQKLS0tIGEvbWFuL3NubXB0ZXN0LjEuZGVmCisrKyBiL21hbi9zbm1wdGVzdC4xLmRlZgpAQCAtMjcsNyArMjcsNyBAQAogLlwiIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKIC5cIiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgogLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS5USCBTTk1QVEVTVCAxICIwNiBTZXAgMjAwMyIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKKy5USCBTTk1QVEVTVCAxICIyNSBKdWwgMjAwMyIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKIC5TSCBOQU1FCiBzbm1wdGVzdCAtIGNvbW11bmljYXRlcyB3aXRoIGEgbmV0d29yayBlbnRpdHkgdXNpbmcgU05NUCByZXF1ZXN0cwogLlNIIFNZTk9QU0lTCkBAIC02Miw3ICs2Miw3IEBACiAuSVIgdmFyaWFibGVzKDUpIC4KIEZvciBleGFtcGxlOgogLlBQCi1zbm1wdGVzdCAtYyBwdWJsaWMgLXYgMSB6ZXVzCitzbm1wdGVzdCBcLWMgcHVibGljIFwtdiAxIHpldXMKIC5icgogLkJSIFZhcmlhYmxlOiAiIHN5c3RlbS5zeXNEZXNjci4wIgogLmJyCkBAIC0xMTQsNyArMTE0LDcgQEAKIC5QUAogR0VUTkVYVCBSZXF1ZXN0OgogLlBQCi1UaGUgIkdFVE5FWFQgcmVxdWVzdCIgbW9kZSAoJE4pIGlzIHNpbWxhciB0byB0aGUgIkdldCByZXF1ZXN0IgorVGhlICJHRVRORVhUIHJlcXVlc3QiIG1vZGUgKCROKSBpcyBzaW1pbGFyIHRvIHRoZSAiR2V0IHJlcXVlc3QiCiBtb2RlLCBkZXNjcmliZWQgYWJvdmUuCiAuUFAKIFNFVCBSZXF1ZXN0OgpAQCAtMTc1LDcgKzE3NSw3IEBACiAuUFAKIFRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBvZiBzZW5kaW5nIGEgR0VUIHJlcXVlc3QgZm9yIHR3byBPSURzOgogLlBQCi0lIHNubXB0ZXN0IC12IDJjIC1jIHB1YmxpYyB0ZXN0aG9zdDo5OTk5CislIHNubXB0ZXN0IFwtdiAyYyBcLWMgcHVibGljIHRlc3Rob3N0Ojk5OTkKIC5QUAogLm5mCiBWYXJpYWJsZTogc3lzdGVtLnN5c0Rlc2NyLjAKQEAgLTE4MywxOCArMTgzLDE4IEBACiBWYXJpYWJsZToKIFJlY2VpdmVkIEdldCBSZXNwb25zZSBmcm9tIDEyOC4yLjU2LjIyMAogcmVxdWVzdGlkIDB4N0Q5RkNENjMgZXJyc3RhdCAweDAgZXJyaW5kZXggMHgwCi1TTk1QdjItTUlCOjpzeXNEZXNjci4wID0gU1RSSU5HOiBTdW5PUyB0ZXN0aG9zdCA1LjkgR2VuZXJpY18xMTIyMzMtMDIgc3VuNHUKLVNOTVB2Mi1NSUI6OnN5c0NvbnRhY3QuMCA9IFNUUklORzogeDExMTEKK1NOTVB2MlwtTUlCOjpzeXNEZXNjci4wID0gU1RSSU5HOiBTdW5PUyB0ZXN0aG9zdCA1LjkgR2VuZXJpY18xMTIyMzNcLTAyIHN1bjR1CitTTk1QdjJcLU1JQjo6c3lzQ29udGFjdC4wID0gU1RSSU5HOiB4MTExMQogLmZpCiAuUFAKIFRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBvZiBzZW5kaW5nIGEgR0VUTkVYVCByZXF1ZXN0OgogLlBQCiAubmYKLVZhcmlhYmxlOiBTTk1QdjItTUlCOjpzeXNPUlVwVGltZQorVmFyaWFibGU6IFNOTVB2MlwtTUlCOjpzeXNPUlVwVGltZQogVmFyaWFibGU6CiBSZWNlaXZlZCBHZXQgUmVzcG9uc2UgZnJvbSAxMjguMi41Ni4yMjAKIHJlcXVlc3RpZCAweDdEOUZDRDY0IGVycnN0YXQgMHgwIGVycmluZGV4IDB4MAotU05NUHYyLU1JQjo6c3lzT1JVcFRpbWUuMSA9IFRpbWV0aWNrczogKDYpIDA6MDA6MDAuMDYKK1NOTVB2MlwtTUlCOjpzeXNPUlVwVGltZS4xID0gVGltZXRpY2tzOiAoNikgMDowMDowMC4wNgogVmFyaWFibGU6CiAuZmkKIC5QUApAQCAtMjA5LDcgKzIwOSw3IEBACiBWYXJpYWJsZToKIFJlY2VpdmVkIEdldCBSZXNwb25zZSBmcm9tIDEyOC4yLjU2LjIyMAogcmVxdWVzdGlkIDB4N0Q5RkNENjUgZXJyc3RhdCAweDAgZXJyaW5kZXggMHgwCi1TTk1QdjItTUlCOjpzeXNMb2NhdGlvbi4wID0gU1RSSU5HOiBidWlsZGluZyBBCitTTk1QdjJcLU1JQjo6c3lzTG9jYXRpb24uMCA9IFNUUklORzogYnVpbGRpbmcgQQogVmFyaWFibGU6CiAuZmkKIC5QUApAQCAtMjI4LDE3ICsyMjgsMTcgQEAKIFdoYXQgcmVwZWF0IGNvdW50PyAyCiBSZWNlaXZlZCBHZXQgUmVzcG9uc2UgZnJvbSAxMjguMi41Ni4yMjAKIHJlcXVlc3RpZCAweDJFQTc5NDJBIGVycnN0YXQgMHgwIGVycmluZGV4IDB4MAotU05NUHYyLU1JQjo6c3lzTmFtZS4wID0gU1RSSU5HOiB0ZXN0aG9zdAotU05NUHYyLU1JQjo6c3lzT1JMYXN0Q2hhbmdlLjAgPSBUaW1ldGlja3M6ICg1OCkgMDowMDowMC41OAotU05NUHYyLU1JQjo6c3lzTG9jYXRpb24uMCA9IFNUUklORzogYmxkZyBBCi1TTk1QdjItTUlCOjpzeXNPUklELjEgPSBPSUQ6IElGLU1JQjo6aWZNSUIKK1NOTVB2MlwtTUlCOjpzeXNOYW1lLjAgPSBTVFJJTkc6IHRlc3Rob3N0CitTTk1QdjJcLU1JQjo6c3lzT1JMYXN0Q2hhbmdlLjAgPSBUaW1ldGlja3M6ICg1OCkgMDowMDowMC41OAorU05NUHYyXC1NSUI6OnN5c0xvY2F0aW9uLjAgPSBTVFJJTkc6IGJsZGcgQQorU05NUHYyXC1NSUI6OnN5c09SSUQuMSA9IE9JRDogSUZcLU1JQjo6aWZNSUIKIFZhcmlhYmxlOgogLmZpCiAuUFAKIFRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBvZiBzZW5kaW5nIGFuIEluZm9ybSByZXF1ZXN0OgogLlBQCiAubmYKLXNubXB0ZXN0IC12IDJjIC1jIHB1YmxpYyBzbm1wdHJhcGRfaG9zdAorc25tcHRlc3QgXC12IDJjIFwtYyBwdWJsaWMgc25tcHRyYXBkX2hvc3QKIFZhcmlhYmxlOiAkSQogUmVxdWVzdCB0eXBlIGlzIEluZm9ybSBSZXF1ZXN0CiAoQXJlIHlvdSBzZW5kaW5nIHRvIHRoZSByaWdodCBwb3J0PykKQEAgLTI1MiwxMyArMjUyLDEzIEBACiAuUFAKIFRoZSBzbm1wdHJhcGRfaG9zdCB3aWxsIHNob3c6CiAuUFAKLXNubXB0cmFwZF9ob3N0IFs8aXAgYWRkcmVzcz5dOiBUcmFwIFNOTVB2Mi1NSUI6OnN5c0NvbnRhY3QuMCA9IFNUUklORzoKK3NubXB0cmFwZF9ob3N0IFs8aXAgYWRkcmVzcz5dOiBUcmFwIFNOTVB2MlwtTUlCOjpzeXNDb250YWN0LjAgPSBTVFJJTkc6CiB4MTIzNDUKIC5QUAogVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIHNlbmRpbmcgYW4gU05NUHYyIFRyYXAgcmVxdWVzdDoKIC5QUAogLm5mCi1zbm1wdGVzdCAtdiAyYyAtYyBwdWJsaWMgc25tcHRyYXBkX2hvc3QKK3NubXB0ZXN0IFwtdiAyYyBcLWMgcHVibGljIHNubXB0cmFwZF9ob3N0CiBWYXJpYWJsZTogJFQKIFJlcXVlc3QgdHlwZSBpcyBTTk1QdjIgVHJhcCBSZXF1ZXN0CiAoQXJlIHlvdSBzZW5kaW5nIHRvIHRoZSByaWdodCBwb3J0PykKQEAgLTI3MSw3ICsyNzEsNyBAQAogVGhlIHNubXB0cmFwZF9ob3N0IHdpbGwgc2hvdzoKIC5QUAogLm5mCi1zbm1wdHJhcGRfaG9zdCBbPGlwIGFkZHJlc3M+XTogVHJhcCBTTk1QdjItTUlCOjpzeXMuMCA9IFNUUklORzoKK3NubXB0cmFwZF9ob3N0IFs8aXAgYWRkcmVzcz5dOiBUcmFwIFNOTVB2MlwtTUlCOjpzeXMuMCA9IFNUUklORzoKIGJ1aWxkaW5nIGEKIC5maQogLlNIICJTRUUgQUxTTyIKZGlmZiAtLWdpdCBhL21hbi9zbm1wdHJhbnNsYXRlLjEuZGVmIGIvbWFuL3NubXB0cmFuc2xhdGUuMS5kZWYKaW5kZXggMGYzMWE1NS4uNzIxYWY5OSAxMDA2NDQKLS0tIGEvbWFuL3NubXB0cmFuc2xhdGUuMS5kZWYKKysrIGIvbWFuL3NubXB0cmFuc2xhdGUuMS5kZWYKQEAgLTI3LDcgKzI3LDcgQEAKIC5cIiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCiAuXCIgZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KIC5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0uVEggU05NUFRSQU5TTEFURSAxICIyMCBKdWwgMjAxMCIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKKy5USCBTTk1QVFJBTlNMQVRFIDEgIjEzIE5vdiAyMDEzIiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgogLlNIIE5BTUUKIHNubXB0cmFuc2xhdGUgLSB0cmFuc2xhdGUgTUlCIE9JRCBuYW1lcyBiZXR3ZWVuIG51bWVyaWMgYW5kIHRleHR1YWwgZm9ybXMKIC5TSCBTWU5PUFNJUwpAQCAtNDIsMTcgKzQyLDE3IEBACiBPSUQgaXMgZWl0aGVyIGEgbnVtZXJpYyBvciB0ZXh0dWFsIG9iamVjdCBpZGVudGlmaWVyLgogLlNIIE9QVElPTlMKIC5UUCA4Ci0uQiAtRFxmSVtUT0tFTlssLi4uXV0KKy5CIFwtRFxmSVtUT0tFTlssLi4uXV0KIFR1cm4gb24gZGVidWdnaW5nIG91dHB1dCBmb3IgdGhlIGdpdmVuCiAuSVIgIlRPS0VOIiAiKHMpLiIKIFRyeQogLklSIEFMTAogZm9yIGV4dHJlbWVseSB2ZXJib3NlIG91dHB1dC4KIC5UUAotLkIgLWgKKy5CIFwtaAogRGlzcGxheSBhIGJyaWVmIHVzYWdlIG1lc3NhZ2UgYW5kIHRoZW4gZXhpdC4KIC5UUAotLkJJIC1tICIgTUlCTElTVCIKKy5CSSBcLW0gIiBNSUJMSVNUIgogU3BlY2lmaWVzIGEgY29sb24gc2VwYXJhdGVkIGxpc3Qgb2YgTUlCIG1vZHVsZXMgdG8gbG9hZCBmb3IgdGhpcwogYXBwbGljYXRpb24uICBUaGlzIG92ZXJyaWRlcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgTUlCUy4KIC5JUApAQCAtNjIsMTcgKzYyLDIwIEBACiBmaWxlcy4gIEV2ZXJ5IGZpbGUgd2hvc2UgbmFtZSBkb2VzIG5vdCBiZWdpbiB3aXRoICIuIiB3aWxsIGJlIHBhcnNlZCBhcwogaWYgaXQgd2VyZSBhIE1JQiBmaWxlLgogLlRQCi0uQkkgLU0gIiBESVJMSVNUIgorLkJJIFwtTSAiIERJUkxJU1QiCiBTcGVjaWZpZXMgYSBjb2xvbiBzZXBhcmF0ZWQgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBzZWFyY2ggZm9yIE1JQnMuCiBUaGlzIG92ZXJyaWRlcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgTUlCRElSUy4KIC5UUAotLkJJIC1UICIgVFJBTlNPUFRTIgorLkJJIFwtVCAiIFRSQU5TT1BUUyIKIFByb3ZpZGVzIGNvbnRyb2wgb3ZlciB0aGUgdHJhbnNsYXRpb24gb2YgdGhlIE9JRCB2YWx1ZXMuICBUaGUKIGZvbGxvd2luZwogLkkgVFJBTlNPUFRTCiBhcmUgYXZhaWxhYmxlOgogLlJTCiAuVFAgNgorLkIgXC1UQgorUHJpbnQgYWxsIG1hdGNoaW5nIG9iamVjdHMgZm9yIGEgcmVnZXggc2VhcmNoLgorLlRQCiAuQiBcLVRkCiBQcmludCBmdWxsIGRldGFpbHMgb2YgdGhlIHNwZWNpZmllZCBPSUQuCiAuVFAKQEAgLTk4LDI0ICsxMDEsMjQgQEAKIER1bXAgYSBudW1lcmljIGFuZCBsYWJlbGVkIGZvcm0gb2YgYWxsIG9iamVjdHMgKGNvbXBhdGlibGUgd2l0aCBNSUIyU0NIRU1BIGZvcm1hdCkuCiAuUkUKIC5UUAotLkIgLVYKKy5CIFwtVgogRGlzcGxheSB2ZXJzaW9uIGluZm9ybWF0aW9uIGZvciB0aGUgYXBwbGljYXRpb24gYW5kIHRoZW4gZXhpdC4KIC5UUAotLkJJIC13ICIgV0lEVEgiCisuQkkgXC13ICIgV0lEVEgiCiBTcGVjaWZpZXMgdGhlIHdpZHRoIG9mCi0uQiAtVHAKKy5CIFwtVHAKIGFuZAotLkIgLVRkCisuQiBcLVRkCiBvdXRwdXQuIFRoZSBkZWZhdWx0IGlzIHZlcnkgbGFyZ2UuCiAuUFAKIEluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZSBvcHRpb25zLCAKIC5CIHNubXB0cmFuc2xhdGUKIHRha2VzIHRoZSBPSUQgaW5wdXQgCi0uUkIgKCAtSSApLAorLlJCICggXC1JICksCiBNSUIgcGFyc2luZwotLlJCICggLU0gKQorLlJCICggXC1NICkKIGFuZCBPSUQgb3V0cHV0Ci0uUkIgKCAtTyApCisuUkIgKCBcLU8gKQogb3B0aW9ucyBkZXNjcmliZWQgaW4gdGhlIAogLkJSICJJTlBVVCBPUFRJT05TIiAiLCAiICJNSUIgUEFSU0lORyBPUFRJT05TIiAiIGFuZCAiICJPVVRQVVQgT1BUSU9OUyIKIHNlY3Rpb25zIG9mIHRoZQpAQCAtMTIzLDQwICsxMjYsNDAgQEAKIG1hbnVhbCBwYWdlLgogLlNIIEVYQU1QTEVTCiAuSVAgXChidSA0Ci1zbm1wdHJhbnNsYXRlIC1PbiAtSVIgc3lzRGVzY3IKK3NubXB0cmFuc2xhdGUgXC1PbiBcLUlSIHN5c0Rlc2NyCiAuYnIKIHdpbGwgdHJhbnNsYXRlICJzeXNEZXNjciIgdG8gYSBtb3JlIHF1YWxpZmllZCBmb3JtOgogLklQCiBzeXN0ZW0uc3lzRGVzY3IKIC5JUCBcKGJ1IDQKLXNubXB0cmFuc2xhdGUgLU9uZiAtSVIgc3lzRGVzY3IKK3NubXB0cmFuc2xhdGUgXC1PbmYgXC1JUiBzeXNEZXNjcgogLmJyCiB3aWxsIHRyYW5zbGF0ZSAic3lzRGVjciIgdG86CiAuSVAKLS5SSSAuaXNvLm9yZy5kb2QuaW50ZXJuZXQubWdtdC5taWItMi5zeXN0ZW0uc3lzRGVzY3IKKy5SSSAuaXNvLm9yZy5kb2QuaW50ZXJuZXQubWdtdC5taWJcLTIuc3lzdGVtLnN5c0Rlc2NyCiAuSVAgXChidSA0IAotc25tcHRyYW5zbGF0ZSAtVGQgLU9TIHN5c3RlbS5zeXNEZXNjcgorc25tcHRyYW5zbGF0ZSBcLVRkIFwtT1Mgc3lzdGVtLnN5c0Rlc2NyCiAuYnIKIHdpbGwgdHJhbnNsYXRlICJzeXNEZWNyIiBpbnRvOgogLklQCiAubmYKLVNOTVB2Mi1NSUI6OnN5c0Rlc2NyCi1zeXNEZXNjciBPQkpFQ1QtVFlQRQotICAtLSBGUk9NIFNOTVB2Mi1NSUIKLSAgLS0gVEVYVFVBTCBDT05WRU5USU9OIERpc3BsYXlTdHJpbmcKK1NOTVB2MlwtTUlCOjpzeXNEZXNjcgorc3lzRGVzY3IgT0JKRUNUXC1UWVBFCisgIFwtXC0gRlJPTSBTTk1QdjJcLU1JQgorICBcLVwtIFRFWFRVQUwgQ09OVkVOVElPTiBEaXNwbGF5U3RyaW5nCiAgIFNZTlRBWCBPQ1RFVCBTVFJJTkcgKDAuLjI1NSkKLSAgRElTUExBWS1ISU5UICIyNTVhIgotICBNQVgtQUNDRVNTIHJlYWQtb25seQorICBESVNQTEFZXC1ISU5UICIyNTVhIgorICBNQVhcLUFDQ0VTUyByZWFkXC1vbmx5CiAgIFNUQVRVUyBjdXJyZW50CiAgIERFU0NSSVBUSU9OICJBIHRleHR1YWwgZGVzY3JpcHRpb24gb2YgdGhlIGVudGl0eS4gVGhpcwogICAgICAgICAgICAgICAgdmFsdWUgc2hvdWxkIGluY2x1ZGUgdGhlIGZ1bGwgbmFtZSBhbmQKICAgICAgICAgICAgICAgIHZlcnNpb24gaWRlbnRpZmljYXRpb24gb2YgdGhlIHN5c3RlbSdzCi0gICAgICAgICAgICAgICBoYXJkd2FyZSB0eXBlLCBzb2Z0d2FyZSBvcGVyYXRpbmctc3lzdGVtLAorICAgICAgICAgICAgICAgaGFyZHdhcmUgdHlwZSwgc29mdHdhcmUgb3BlcmF0aW5nXC1zeXN0ZW0sCiAgICAgICAgICAgICAgICBhbmQgbmV0d29ya2luZyBzb2Z0d2FyZS4iCi06Oj0geyBpc28oMSkgb3JnKDMpIGRvZCg2KSBpbnRlcm5ldCgxKSBtZ210KDIpIG1pYi0yKDEpIHN5c3RlbSgxKSAxIH0KKzo6PSB7IGlzbygxKSBvcmcoMykgZG9kKDYpIGludGVybmV0KDEpIG1nbXQoMikgbWliXC0yKDEpIHN5c3RlbSgxKSAxIH0KIC5maQogLklQIFwoYnUgNCAKLXNubXB0cmFuc2xhdGUgLVRwIC1PUyBzeXN0ZW0KK3NubXB0cmFuc2xhdGUgXC1UcCBcLU9TIHN5c3RlbQogLmJyCiB3aWxsIHByaW50IHRoZSBmb2xsb3dpbmcgdHJlZToKIC5JUApAQCAtMTk2LDcgKzE5OSw3IEBACiAuZmkKIC5QUAogLklQIFwoYnUgNAotc25tcHRyYW5zbGF0ZSAtVGEgfCBoZWFkCitzbm1wdHJhbnNsYXRlIFwtVGEgfCBoZWFkCiAuYnIKIHdpbGwgcHJvZHVjZSB0aGUgZm9sbG93aW5nIGR1bXA6CiAuSVAKQEAgLTIxNCw3ICsyMTcsNyBAQAogLmZpCiAuUFAKIC5JUCBcKGJ1IDQKLXNubXB0cmFuc2xhdGUgLVRsIHwgaGVhZAorc25tcHRyYW5zbGF0ZSBcLVRsIHwgaGVhZAogLmJyCiB3aWxsIHByb2R1Y2UgdGhlIGZvbGxvd2luZyBkdW1wOgogLklQCkBAIC0yMjQsMTUgKzIyNywxNSBAQAogLlJJIC5pc28oMSkub3JnKDMpLmRvZCg2KS5pbnRlcm5ldCgxKQogLlJJIC5pc28oMSkub3JnKDMpLmRvZCg2KS5pbnRlcm5ldCgxKS5kaXJlY3RvcnkoMSkKIC5SSSAuaXNvKDEpLm9yZygzKS5kb2QoNikuaW50ZXJuZXQoMSkubWdtdCgyKQotLlJJIC5pc28oMSkub3JnKDMpLmRvZCg2KS5pbnRlcm5ldCgxKS5tZ210KDIpLm1pYi0yKDEpCi0uUkkgLmlzbygxKS5vcmcoMykuZG9kKDYpLmludGVybmV0KDEpLm1nbXQoMikubWliLTIoMSkuc3lzdGVtKDEpCi0uUkkgLmlzbygxKS5vcmcoMykuZG9kKDYpLmludGVybmV0KDEpLm1nbXQoMikubWliLTIoMSkuc3lzdGVtKDEpLnN5c0Rlc2NyKDEpCi0uUkkgLmlzbygxKS5vcmcoMykuZG9kKDYpLmludGVybmV0KDEpLm1nbXQoMikubWliLTIoMSkuc3lzdGVtKDEpLnN5c09iamVjdElEKDIpCi0uUkkgLmlzbygxKS5vcmcoMykuZG9kKDYpLmludGVybmV0KDEpLm1nbXQoMikubWliLTIoMSkuc3lzdGVtKDEpLnN5c1VwVGltZSgzKQorLlJJIC5pc28oMSkub3JnKDMpLmRvZCg2KS5pbnRlcm5ldCgxKS5tZ210KDIpLm1pYlwtMigxKQorLlJJIC5pc28oMSkub3JnKDMpLmRvZCg2KS5pbnRlcm5ldCgxKS5tZ210KDIpLm1pYlwtMigxKS5zeXN0ZW0oMSkKKy5SSSAuaXNvKDEpLm9yZygzKS5kb2QoNikuaW50ZXJuZXQoMSkubWdtdCgyKS5taWJcLTIoMSkuc3lzdGVtKDEpLnN5c0Rlc2NyKDEpCisuUkkgLmlzbygxKS5vcmcoMykuZG9kKDYpLmludGVybmV0KDEpLm1nbXQoMikubWliXC0yKDEpLnN5c3RlbSgxKS5zeXNPYmplY3RJRCgyKQorLlJJIC5pc28oMSkub3JnKDMpLmRvZCg2KS5pbnRlcm5ldCgxKS5tZ210KDIpLm1pYlwtMigxKS5zeXN0ZW0oMSkuc3lzVXBUaW1lKDMpCiAuZmkKIC5QUAogLklQIFwoYnUgNAotc25tcHRyYW5zbGF0ZSAtVG8gfCBoZWFkCitzbm1wdHJhbnNsYXRlIFwtVG8gfCBoZWFkCiAuYnIKIHdpbGwgcHJvZHVjZSB0aGUgZm9sbG93aW5nIGR1bXAKIC5JUApAQCAtMjUwLDcgKzI1Myw3IEBACiAuZmkKIC5QUAogLklQIFwoYnUgNAotc25tcHRyYW5zbGF0ZSAtVHMgfCBoZWFkCitzbm1wdHJhbnNsYXRlIFwtVHMgfCBoZWFkCiAuYnIKIHdpbGwgcHJvZHVjZSB0aGUgZm9sbG93aW5nIGR1bXAKIC5JUApAQCAtMjYwLDE1ICsyNjMsMTUgQEAKIC5SSSAuaXNvLm9yZy5kb2QuaW50ZXJuZXQKIC5SSSAuaXNvLm9yZy5kb2QuaW50ZXJuZXQuZGlyZWN0b3J5CiAuUkkgLmlzby5vcmcuZG9kLmludGVybmV0Lm1nbXQKLS5SSSAuaXNvLm9yZy5kb2QuaW50ZXJuZXQubWdtdC5taWItMgotLlJJIC5pc28ub3JnLmRvZC5pbnRlcm5ldC5tZ210Lm1pYi0yLnN5c3RlbQotLlJJIC5pc28ub3JnLmRvZC5pbnRlcm5ldC5tZ210Lm1pYi0yLnN5c3RlbS5zeXNEZXNjcgotLlJJIC5pc28ub3JnLmRvZC5pbnRlcm5ldC5tZ210Lm1pYi0yLnN5c3RlbS5zeXNPYmplY3RJRAotLlJJIC5pc28ub3JnLmRvZC5pbnRlcm5ldC5tZ210Lm1pYi0yLnN5c3RlbS5zeXNVcFRpbWUKKy5SSSAuaXNvLm9yZy5kb2QuaW50ZXJuZXQubWdtdC5taWJcLTIKKy5SSSAuaXNvLm9yZy5kb2QuaW50ZXJuZXQubWdtdC5taWJcLTIuc3lzdGVtCisuUkkgLmlzby5vcmcuZG9kLmludGVybmV0Lm1nbXQubWliXC0yLnN5c3RlbS5zeXNEZXNjcgorLlJJIC5pc28ub3JnLmRvZC5pbnRlcm5ldC5tZ210Lm1pYlwtMi5zeXN0ZW0uc3lzT2JqZWN0SUQKKy5SSSAuaXNvLm9yZy5kb2QuaW50ZXJuZXQubWdtdC5taWJcLTIuc3lzdGVtLnN5c1VwVGltZQogLmZpCiAuUFAKIC5JUCBcKGJ1IDQKLXNubXB0cmFuc2xhdGUgLVR0IHwgaGVhZAorc25tcHRyYW5zbGF0ZSBcLVR0IHwgaGVhZAogLmJyCiB3aWxsIHByb2R1Y2UgdGhlIGZvbGxvd2luZyBkdW1wCiAuSVAKQEAgLTI3OCw3ICsyODEsNyBAQAogICAgICAgaW50ZXJuZXQoMSkgdHlwZT0wCiAgICAgICAgIGRpcmVjdG9yeSgxKSB0eXBlPTAKICAgICAgICAgbWdtdCgyKSB0eXBlPTAKLSAgICAgICAgICBtaWItMigxKSB0eXBlPTAKKyAgICAgICAgICBtaWJcLTIoMSkgdHlwZT0wCiAgICAgICAgICAgICBzeXN0ZW0oMSkgdHlwZT0wCiAgICAgICAgICAgICAgIHN5c0Rlc2NyKDEpIHR5cGU9MiB0Yz00IGhpbnQ9MjU1YQogICAgICAgICAgICAgICBzeXNPYmplY3RJRCgyKSB0eXBlPTEKZGlmZiAtLWdpdCBhL21hbi9zbm1wdHJhcC4xLmRlZiBiL21hbi9zbm1wdHJhcC4xLmRlZgppbmRleCAwOWFlYzc5Li41NWMxOWQxIDEwMDY0NAotLS0gYS9tYW4vc25tcHRyYXAuMS5kZWYKKysrIGIvbWFuL3NubXB0cmFwLjEuZGVmCkBAIC0xLDcgKzEsNyBAQAogLlwiIC0qLSBucm9mZiAtKi0KLS5cIiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuIAotLlwiIFNlZSB0aGUgTmV0LVNOTVAgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyCi0uXCIgY29weXJpZ2h0cyB0aGF0IG1heSBhcHBseToKKy5cIiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuICBTZWUKKy5cIiB0aGUgTmV0LVNOTVAgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKy5cIiB0aGF0IG1heSBhcHBseToKIC5cIiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIiAJQ29weXJpZ2h0IDE5ODgsIDE5ODkgYnkgQ2FybmVnaWUgTWVsbG9uIFVuaXZlcnNpdHkKIC5cIiAKQEAgLTI3LDEzICsyNywxMyBAQAogLlNIIE5BTUUKIHNubXB0cmFwLCBzbm1waW5mb3JtIC0gc2VuZHMgYW4gU05NUCBub3RpZmljYXRpb24gdG8gYSBtYW5hZ2VyCiAuU0ggU1lOT1BTSVMKLS5CIHNubXB0cmFwIC12IDEKKy5CIHNubXB0cmFwIFwtdiAxCiBbQ09NTU9OIE9QVElPTlNdIEFHRU5UIGVudGVycHJpc2Utb2lkIGFnZW50IGdlbmVyaWMtdHJhcCBzcGVjaWZpYy10cmFwIHVwdGltZSBbT0lEIFRZUEUgVkFMVUVdLi4uCiAuUFAKLS5CIHNubXB0cmFwIC12IFsyY3wzXQotW0NPTU1PTiBPUFRJT05TXSBbLUNpXSBBR0VOVCB1cHRpbWUgdHJhcC1vaWQgW09JRCBUWVBFIFZBTFVFXS4uLgorLkIgc25tcHRyYXAgXC12IFsyY3wzXQorW0NPTU1PTiBPUFRJT05TXSBbXC1DaV0gQUdFTlQgdXB0aW1lIHRyYXAtb2lkIFtPSUQgVFlQRSBWQUxVRV0uLi4KIC5QUAotLkIgc25tcGluZm9ybSAtdiBbMmN8M10KKy5CIHNubXBpbmZvcm0gXC12IFsyY3wzXQogW0NPTU1PTiBPUFRJT05TXSBBR0VOVCB1cHRpbWUgdHJhcC1vaWQgW09JRCBUWVBFIFZBTFVFXS4uLgogLlNIIERFU0NSSVBUSU9OCiAuQiBzbm1wdHJhcApAQCAtNDcsNyArNDcsNyBAQAogV2hlbiBpbnZva2VkIGFzCiAuQiBzbm1waW5mb3JtLAogb3Igd2hlbgotLkIgLUNpCisuQiBcLUNpCiBpcyBhZGRlZCB0byB0aGUgY29tbWFuZCBsaW5lIGZsYWdzIG9mIHNubXB0cmFwLCBpdCBzZW5kcyBhbgogSU5GT1JNLVBEVSwgZXhwZWN0aW5nIGEgcmVzcG9uc2UgZnJvbSB0aGUgdHJhcCByZWNlaXZlciwKIHJldHJhbnNtaXR0aW5nIGlmIHJlcXVpcmVkLiAgT3RoZXJ3aXNlIGl0IHNlbmRzIGFuIFRSQVAtUERVIG9yCkBAIC0xMTEsNyArMTExLDcgQEAKIC5QUAogRm9yIGV4YW1wbGU6CiAuUFAKLXNubXB0cmFwIC12IDEgLWMgcHVibGljIG1hbmFnZXIgZW50ZXJwcmlzZXMuc3BpZGVyIHRlc3QtaHViIDMgMCAnJyBpbnRlcmZhY2VzLmlmdGFibGUuaWZlbnRyeS5pZmluZGV4LjEgaSAxCitzbm1wdHJhcCBcLXYgMSBcLWMgcHVibGljIG1hbmFnZXIgZW50ZXJwcmlzZXMuc3BpZGVyIHRlc3RcLWh1YiAzIDAgJycgaW50ZXJmYWNlcy5pZnRhYmxlLmlmZW50cnkuaWZpbmRleC4xIGkgMQogLlBQCiB3aWxsIHNlbmQgYSBnZW5lcmljIGxpbmtVcCB0cmFwIHRvIG1hbmFnZXIsIGZvciBpbnRlcmZhY2UgMS4KIC5TSCBPUFRJT05TCkBAIC0xMjAsNyArMTIwLDcgQEAKIC5JIHNubXBjbWQoMSkgCiBtYW51YWwgcGFnZSBpbgogYWRkaXRpb24gdG8gdGhlIAotLkIgLUNpCisuQiBcLUNpCiBvcHRpb24gZGVzY3JpYmVkIGFib3ZlLgogTm90ZSB0aGF0CiAuQiBzbm1wdHJhcApkaWZmIC0tZ2l0IGEvbWFuL3NubXB0cmFwZC44LmRlZiBiL21hbi9zbm1wdHJhcGQuOC5kZWYKaW5kZXggYjYyNDdiZi4uNDViZDAzNCAxMDA2NDQKLS0tIGEvbWFuL3NubXB0cmFwZC44LmRlZgorKysgYi9tYW4vc25tcHRyYXBkLjguZGVmCkBAIC0xLDcgKzEsNyBAQAogLlwiIC0qLSBucm9mZiAtKi0KLS5cIiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuCi0uXCIgU2VlIHRoZSBOZXQtU05NUCBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIKLS5cIiBjb3B5cmlnaHRzIHRoYXQgbWF5IGFwcGx5OgorLlwiIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodC4gIFNlZQorLlwiIHRoZSBOZXQtU05NUCBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworLlwiIHRoYXQgbWF5IGFwcGx5OgogLlwiIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiIAlDb3B5cmlnaHQgMTk4OSBieSBDYXJuZWdpZSBNZWxsb24gVW5pdmVyc2l0eQogLlwiIApAQCAtMjMsNyArMjMsNyBAQAogLlwiIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMKIC5cIiBTT0ZUV0FSRS4KIC5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0uVEggU05NUFRSQVBEIDggIjMwIE1hciAyMDExIiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgorLlRIIFNOTVBUUkFQRCA4ICIyNyBBcHIgMjAxNCIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKIC5TSCBOQU1FCiBzbm1wdHJhcGQgLSBSZWNlaXZlIGFuZCBsb2cgU05NUCB0cmFwIG1lc3NhZ2VzLgogLlNIIFNZTk9QU0lTCkBAIC0zOSw4OCArMzksODggQEAKIG11c3QgdHlwaWNhbGx5IGJlIHJ1biBhcyByb290LgogLlNIIE9QVElPTlMKIC5UUCA4Ci0uQiAtYQorLkIgXC1hCiBJZ25vcmUgYXV0aGVudGljYXRpb25GYWlsdXJlIHRyYXBzLgogLlRQCi0uQiAtQQorLkIgXC1BCiBBcHBlbmQgdG8gdGhlIGxvZyBmaWxlIHJhdGhlciB0aGFuIHRydW5jYXRpbmcgaXQuCiAKLU5vdGUgdGhhdCB0aGlzIG5lZWRzIHRvIGNvbWUgXGZJYmVmb3JlXGZQIGFueSAtTGYgb3B0aW9ucworTm90ZSB0aGF0IHRoaXMgbmVlZHMgdG8gY29tZSBcZkliZWZvcmVcZlAgYW55IFwtTGYgb3B0aW9ucwogdGhhdCBpdCBzaG91bGQgYXBwbHkgdG8uCiAuVFAKLS5CSSAiLWMiICIgRklMRSIKKy5CSSAiXC1jIiAiIEZJTEUiCiBSZWFkIAogLkkgRklMRQogYXMgYSBjb25maWd1cmF0aW9uIGZpbGUKIChvciBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNvbmZpZ3VyYXRpb24gZmlsZXMpLgogLlRQCi0uQiAtQworLkIgXC1DCiBEbyBub3QgcmVhZCBhbnkgY29uZmlndXJhdGlvbiBmaWxlcyBleGNlcHQgdGhlIG9uZSBvcHRpb25hbGx5IHNwZWNpZmllZCBieSB0aGUgCi0uQiAtYyAKKy5CIFwtYyAKIG9wdGlvbi4KIC5UUAotLkIgLWQKKy5CIFwtZAogRHVtcCAoaW4gaGV4YWRlY2ltYWwpIHRoZSBzZW50IGFuZCByZWNlaXZlZCBTTk1QIHBhY2tldHMuCiAuVFAKLS5CSSAtRFtUT0tFTlssLi4uXV0KKy5CSSBcLURbVE9LRU5bLC4uLl1dCiBUdXJuIG9uIGRlYnVnZ2luZyBvdXRwdXQgZm9yIHRoZSBnaXZlbgogLklSICJUT0tFTiIgIihzKS4iCiBUcnkKIC5JUiBBTEwKIGZvciBleHRyZW1lbHkgdmVyYm9zZSBvdXRwdXQuCiAuVFAKLS5CIC1mCisuQiBcLWYKIERvIG5vdCBmb3JrKCkgZnJvbSB0aGUgY2FsbGluZyBzaGVsbC4KIC5UUAotLkJJIC1GICIgRk9STUFUIgorLkJJIFwtRiAiIEZPUk1BVCIKIFdoZW4gbG9nZ2luZyB0byBzdGFuZGFyZCBvdXRwdXQsIHVzZSB0aGUgZm9ybWF0IGluIHRoZSBzdHJpbmcKIC5JUiBGT1JNQVQgLgogU2VlIHRoZSBzZWN0aW9uCiAuQiBGT1JNQVQgU1BFQ0lGSUNBVElPTlMKIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCiAuVFAKLS5CIC1oLCAtLWhlbHAKKy5CIFwtaCwgXC1cLWhlbHAKIERpc3BsYXkgYSBicmllZiB1c2FnZSBtZXNzYWdlIGFuZCB0aGVuIGV4aXQuCiAuVFAKLS5CIC1ICisuQiBcLUgKIERpc3BsYXkgYSBsaXN0IG9mIGNvbmZpZ3VyYXRpb24gZmlsZSBkaXJlY3RpdmVzIHVuZGVyc3Rvb2QgYnkgdGhlCiB0cmFwIGRhZW1vbiBhbmQgdGhlbiBleGl0LgogLlRQCi0uQiAtSSBcZklbLV1JTklUTElTVAorLkIgXC1JIFxmSVtcLV1JTklUTElTVAogU3BlY2lmaWVzIHdoaWNoIG1vZHVsZXMgc2hvdWxkIChvciBzaG91bGQgbm90KSBiZSBpbml0aWFsaXplZAogd2hlbiBzbm1wdHJhcGQgc3RhcnRzIHVwLiAgSWYgdGhlIGNvbW1hLXNlcGFyYXRlZAogLkkgSU5JVExJU1QKIGlzIHByZWNlZGVkCi13aXRoIGEgJy0nLCBpdCBpcyB0aGUgbGlzdCBvZiBtb2R1bGVzIHRoYXQgc2hvdWxkIFxmSW5vdFxmUiBiZSBzdGFydGVkLgord2l0aCBhICdcLScsIGl0IGlzIHRoZSBsaXN0IG9mIG1vZHVsZXMgdGhhdCBzaG91bGQgXGZJbm90XGZSIGJlIHN0YXJ0ZWQuCiBPdGhlcndpc2UgdGhpcyBpcyB0aGUgbGlzdCBvZiB0aGUgXGZJb25seVxmUiBtb2R1bGVzIHRoYXQgc2hvdWxkIGJlIHN0YXJ0ZWQuCiAKIFRvIGdldCBhIGxpc3Qgb2YgY29tcGlsZWQgbW9kdWxlcywgcnVuIHNubXB0cmFwZCB3aXRoIHRoZSBhcmd1bWVudHMKLS5JICItRG1pYl9pbml0IC1IIgorLkkgIlwtRG1pYl9pbml0IFwtSCIKIChhc3N1bWluZyBkZWJ1Z2dpbmcgc3VwcG9ydCBoYXMgYmVlbiBjb21waWxlZCBpbikuCiAuVFAKLS5CIC1MW2Vmb3NdCisuQiBcLUxbZWZvc10KIFNwZWNpZnkgd2hlcmUgbG9nZ2luZyBvdXRwdXQgc2hvdWxkIGJlIGRpcmVjdGVkIChzdGFuZGFyZCBlcnJvciBvciBvdXRwdXQsCiB0byBhIGZpbGUgb3IgdmlhIHN5c2xvZykuICBTZWUgTE9HR0lORyBPUFRJT05TIGluIFxmSXNubXBjbWQoMSlcZlIgZm9yIGRldGFpbHMuCiAuVFAKLS5CUiAtbSAiIFxmSU1JQkxJU1QiCisuQlIgXC1tICIgXGZJTUlCTElTVCIKIFNwZWNpZmllcyBhIGNvbG9uIHNlcGFyYXRlZCBsaXN0IG9mIE1JQiBtb2R1bGVzIHRvIGxvYWQgZm9yIHRoaXMKIGFwcGxpY2F0aW9uLiAgVGhpcyBvdmVycmlkZXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIE1JQlMuCiBTZWUgXGZJc25tcGNtZCgxKVxmUiBmb3IgZGV0YWlscy4KIC5UUAotLkJSIC1NICIgXGZJRElSTElTVCIKKy5CUiBcLU0gIiBcZklESVJMSVNUIgogU3BlY2lmaWVzIGEgY29sb24gc2VwYXJhdGVkIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZvciBNSUJzLgogVGhpcyBvdmVycmlkZXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIE1JQkRJUlMuCiBTZWUgXGZJc25tcGNtZCgxKVxmUiBmb3IgZGV0YWlscy4KIC5UUAotLkJSIC1uCisuQlIgXC1uCiBEbyBub3QgYXR0ZW1wdCB0byB0cmFuc2xhdGUgc291cmNlIGFkZHJlc3NlcyBvZiBpbmNvbWluZyBwYWNrZXRzIGludG8KIGhvc3RuYW1lcy4KIC5UUAotLkJJIC1wICIgRklMRSIKKy5CSSBcLXAgIiBGSUxFIgogU2F2ZSB0aGUgcHJvY2VzcyBJRCBvZiB0aGUgdHJhcCBkYWVtb24gaW4KIC5JUiBGSUxFICIuIgogLlRQCi0uQkkgLU8gIiBbYWJlRWZucVFzU3RUdVV2eFhdIgorLkJJIFwtTyAiIFthYmVFZm5xUXNTdFR1VXZ4WF0iCiBTcGVjaWZpZXMgaG93IE1JQiBvYmplY3RzIGFuZCBvdGhlciBvdXRwdXQgc2hvdWxkIGJlIGRpc3BsYXllZC4KIFNlZSB0aGUgc2VjdGlvbgogLkIgT1VUUFVUIE9QVElPTlMKQEAgLTEyOCwyMiArMTI4LDI1IEBACiAuSSBzbm1wY21kKDEpCiBtYW51YWwgcGFnZSBmb3IgZGV0YWlscy4KIC5UUAotLkJJIC10CisuQkkgXC10CiBEbyBub3QgbG9nIHRyYXBzIHRvIHN5c2xvZy4gIFRoaXMgZGlzYWJsZXMgbG9nZ2luZyB0byBzeXNsb2cuICBUaGlzIGlzCiB1c2VmdWwgaWYgeW91IHdhbnQgdGhlIHNubXB0cmFwZCBhcHBsaWNhdGlvbiB0bwogLkIgb25seQogcnVuIHRyYXBoYW5kbGUgaG9va3MgYW5kIG5vdCB0byBsb2cgYW55IHRyYXBzIHRvIGFueSBsb2NhdGlvbi4KIC5UUAotLkIgLXYsIC0tdmVyc2lvbgorLkIgXC12LCBcLVwtdmVyc2lvbgogUHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHRyYXAgZGFlbW9uIGFuZCB0aGVuIGV4aXQuCiAuVFAKLS5CIC14IFxmSUFERFJFU1MKKy5CIFwteCBcZklBRERSRVNTCiBDb25uZWN0IHRvIHRoZSBBZ2VudFggbWFzdGVyIGFnZW50IG9uIHRoZSBzcGVjaWZpZWQgYWRkcmVzcywKIHJhdGhlciB0aGFuIHRoZSBkZWZhdWx0IEFHRU5UWF9TT0NLRVQuCiBTZWUgXGZJc25tcGQoOClcZlIgZm9yIGRldGFpbHMgb2YgdGhlIGZvcm1hdCBvZiBzdWNoIGFkZHJlc3Nlcy4KIC5UUAotLkJJIC0tICJuYW1lIj0idmFsdWUiCi1BbGxvd3MgdG8gc3BlY2lmeSBhbnkgdG9rZW4gKCJuYW1lIikgc3VwcG9ydGVkIGluIHRoZQorLkIgXC1YCitEbyBub3QgY29ubmVjdCB0byBhIEFnZW50WCBtYXN0ZXIgYWdlbnQKKy5UUAorLkJJIFwtXC0gIm5hbWUiPSJ2YWx1ZSIKK0FsbG93cyBvbmUgdG8gc3BlY2lmeSBhbnkgdG9rZW4gKCJuYW1lIikgc3VwcG9ydGVkIGluIHRoZQogLkkgc25tcHRyYXBkLmNvbmYKIGZpbGUgYW5kIHNldHMgaXRzIHZhbHVlIHRvICJ2YWx1ZSIuIE92ZXJyaWRlcyB0aGUgY29ycmVzcG9uZGluZyB0b2tlbiBpbiB0aGUKIC5JIHNubXB0cmFwZC5jb25mCkBAIC0xNjIsMjEgKzE2NSwyNiBAQAogYSBsaXRlcmFsICUKIC5UUAogLkIgJWEKLXRoZSBjb250ZW50cyBvZiB0aGUgYWdlbnQtYWRkciBmaWVsZCBvZiB0aGUgUERVICh2MSBUUkFQcyBvbmx5KQordGhlIGNvbnRlbnRzIG9mIHRoZSBhZ2VudFwtYWRkciBmaWVsZCBvZiB0aGUgUERVICh2MSBUUkFQcyBvbmx5KQogLlRQCiAuQiAlQQotdGhlIGhvc3RuYW1lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNvbnRlbnRzIG9mIHRoZSBhZ2VudC1hZGRyIGZpZWxkIG9mCi10aGUgUERVLCBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSB0aGUgY29udGVudHMgb2YgdGhlIGFnZW50LWFkZHIgZmllbGQKK3RoZSBob3N0bmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb250ZW50cyBvZiB0aGUgYWdlbnRcLWFkZHIgZmllbGQgb2YKK3RoZSBQRFUsIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIHRoZSBjb250ZW50cyBvZiB0aGUgYWdlbnRcLWFkZHIgZmllbGQKIG9mIHRoZSBQRFUgKHYxIFRSQVBzIG9ubHkpLgogLlRQCiAuQiAlYgotUERVIHNvdXJjZSBhZGRyZXNzIChOb3RlOiB0aGlzIGlzIG5vdCBuZWNlc3NhcmlseSBhbiBJUHY0Ci1hZGRyZXNzKQorUERVIHRyYW5zcG9ydCBhZGRyZXNzIChOb3RlOiB0aGlzIGlzIG5vdCBuZWNlc3NhcmlseSBhbiBJUHY0CithZGRyZXNzKS4KKy5icgorU29tZXRoaW5nIGxpa2UgIltVRFA6IFsxNzIuMTYuMTAuMTJdOjIzNDU2LT5bMTAuMTUwLjAuOF1dIgogLlRQCiAuQiAlQgogUERVIHNvdXJjZSBob3N0bmFtZSBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBQRFUgc291cmNlIGFkZHJlc3MgKHNlZQogbm90ZSBhYm92ZSkgCiAuVFAKKy5CICVFCitTTk1QdjMgY29udGV4dCBlbmdpbmUgaWQKKy5UUAogLkIgJWgKIGN1cnJlbnQgaG91ciBvbiB0aGUgbG9jYWwgc3lzdGVtCiAuVFAKQEAgLTIxMCwxMyArMjE4LDE5IEBACiAuQiAlTgogZW50ZXJwcmlzZSBzdHJpbmcKIC5UUAotLkIgJXEKLXRyYXAgc3ViLXR5cGUgKG51bWVyaWMsIGluIGRlY2ltYWwpCi0uVFAKIC5CICVQCiBzZWN1cml0eSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBQRFUgKGNvbW11bml0eSBuYW1lIGZvciB2MS92MmMsCiB1c2VyIGFuZCBjb250ZXh0IGZvciB2MykKIC5UUAorLkIgJXEKK3RyYXAgc3ViLXR5cGUgKG51bWVyaWMsIGluIGRlY2ltYWwpCisuVFAKKy5CICVzCitTTk1QIHZlcnNpb24gbnVtYmVyICgwOiB2MSwgMTogdjJjLCAyOiB2MykKKy5UUAorLkIgJVMKK1NOTVB2MyBzZWN1cml0eSBtb2RlbCB2ZXJzaW9uIG51bWJlcgorLlRQCiAuQiAldAogZGVjaW1hbCBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSB0aGUgb3BlcmF0aW5nIHN5c3RlbSBlcG9jaCAoYXMKIHJldHVybmVkIGJ5CkBAIC0yMjUsNiArMjM5LDkgQEAKIC5CICVUCiB0aGUgdmFsdWUgb2YgdGhlIFxmQ3N5c1VwVGltZS4wXGZSIHZhcmJpbmQgaW4gc2Vjb25kcwogLlRQCisuQiAldQorU05NUHYzIHNlY3VyaXR5IG5hbWUsIG9yIHYxL3YyYyBjb21tdW5pdHkgbmFtZQorLlRQCiAuQiAldgogbGlzdCBvZiB2YXJpYWJsZS1iaW5kaW5ncyBmcm9tIHRoZSBub3RpZmljYXRpb24gcGF5bG9hZC4KIFRoZXNlIHdpbGwgYmUgc2VwYXJhdGVkIGJ5IGEgdGFiLCAKQEAgLTI1NCw3ICsyNzEsNyBAQAogYW5kIGEgZmxhZyB2YWx1ZS4gVGhlIGZvbGxvd2luZyBmbGFncyBhcmUgc3VwcG9ydGVkOgogLlJTIDQgCiAuVFAgNAotLkIgLQorLkIgXC0KIGxlZnQganVzdGlmeQogLlRQCiAuQiAwCkBAIC0yNzksNyArMjk2LDcgQEAKIC5QUAogLlJTCiAubmYKLXNubXB0cmFwZCAtUCAtRiAiJTAyLjJoOiUwMi4yaiBUUkFQJXcuJXEgZnJvbSAlQVxlbiIKK3NubXB0cmFwZCBcLVAgXC1GICIlMDIuMmg6JTAyLjJqIFRSQVAldy4lcSBmcm9tICVBXGVuIgogLmZpCiAuUkUKIC5QUApAQCAtMjg3LDcgKzMwNCw3IEBACiAuUFAKIC5SUwogLm5mCi1zbm1wdHJhcGQgLVAgLUYgIiUjMDIuMmg6JSMwMi4yaiBUUkFQJXcuJXEgZnJvbSAlQVxlbiIKK3NubXB0cmFwZCBcLVAgXC1GICIlIzAyLjJoOiUjMDIuMmogVFJBUCV3LiVxIGZyb20gJUFcZW4iCiAuZmkKIC5SRQogLlNIIExJU1RFTklORyBBRERSRVNTRVMKQEAgLTMwMSwyMCArMzE4LDIwIEBACiAuSSBzbm1wZCg4KQogbWFudWFsIHBhZ2UgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZvcm1hdCBvZiBsaXN0ZW5pbmcKIGFkZHJlc3Nlcy4KLS5TSCBOT1RJRklDQVRJT04tTE9HLU1JQiBTVVBQT1JUCisuU0ggTk9USUZJQ0FUSU9OXC1MT0dcLU1JQiBTVVBQT1JUCiBBcyBvZiBuZXQtc25tcCA1LjAsIHRoZSBzbm1wdHJhcGQgYXBwbGljYXRpb24gc3VwcG9ydHMgdGhlCi1OT1RJRklDQVRJT04tTE9HLU1JQi4gIEl0IGRvZXMgdGhpcyBieSBvcGVuaW5nIGFuIEFnZW50WCBzdWJhZ2VudAorTk9USUZJQ0FUSU9OXC1MT0dcLU1JQi4gIEl0IGRvZXMgdGhpcyBieSBvcGVuaW5nIGFuIEFnZW50WCBzdWJhZ2VudAogY29ubmVjdGlvbiB0byB0aGUgbWFzdGVyIHNubXBkIGFnZW50IGFuZCByZWdpc3RlcmluZyB0aGUgbm90aWZpY2F0aW9uCiBsb2cgdGFibGVzLiAgQXMgbG9uZyBhcyB0aGUgc25tcGQgYXBwbGljYXRpb24gaXMgc3RhcnRlZCBmaXJzdCwgaXQKIHdpbGwgYXR0YWNoIGl0c2VsZiB0byBpdCBhbmQgdGh1cyB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gdmlldyB0aGUgbGFzdAogcmVjb3JkZWQgbm90aWZpY2F0aW9ucyB2aWEgdGhlIG5sbUxvZ1RhYmxlIGFuZCBubG1Mb2dWYXJpYWJsZVRhYmxlLgogU2VlIHRoZSBzbm1wdHJhcGQuY29uZiBmaWxlIGFuZCB0aGUgImRvTm90UmV0YWluTm90aWZpY2F0aW9uTG9ncyIgdG9rZW4KIGZvciB0dXJuaW5nCi1vZmYgdGhpcyBzdXBwb3J0LiAgU2VlIHRoZSBOT1RJRklDQVRJT04tTE9HLU1JQiBmb3IgbW9yZSBkZXRhaWxzIGFib3V0CitvZmYgdGhpcyBzdXBwb3J0LiAgU2VlIHRoZSBOT1RJRklDQVRJT05cLUxPR1wtTUlCIGZvciBtb3JlIGRldGFpbHMgYWJvdXQKIHRoZSBNSUIgaXRzZWxmLgogLlNIIEVYVEVOU0lCSUxJVFkgQU5EIENPTkZJR1VSQVRJT04KIFNlZSB0aGUKIC5JIHNubXB0cmFwZC5jb25mKDUpCiBtYW51YWwgcGFnZS4KIC5TSCAiU0VFIEFMU08iCi1zbm1wY21kKDEpLCBzbm1wZCg4KSwgcHJpbnRmKDMpLCBzbm1wdHJhcGQuY29uZig1KSwgc3lzbG9nKDgpLCB2YXJpYWJsZXMoNSkKK3NubXBjbWQoMSksIHNubXBkKDgpLCBwcmludGYoMyksIHNubXB0cmFwZC5jb25mKDUpLCBzeXNsb2coOCksIHRyYXB0b2VtYWlsKDEpLCB2YXJpYWJsZXMoNSkKZGlmZiAtLWdpdCBhL21hbi9zbm1wdHJhcGQuY29uZi41LmRlZiBiL21hbi9zbm1wdHJhcGQuY29uZi41LmRlZgppbmRleCBlMjM5NGNiLi4xYmJiZmJiIDEwMDY0NAotLS0gYS9tYW4vc25tcHRyYXBkLmNvbmYuNS5kZWYKKysrIGIvbWFuL3NubXB0cmFwZC5jb25mLjUuZGVmCkBAIC0xLDQgKzEsNCBAQAotLlRIIFNOTVBUUkFQRC5DT05GIDUgIjE5IEZlYiAyMDA5IiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgorLlRIIFNOTVBUUkFQRC5DT05GIDUgIjEzIE1hciAyMDE0IiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgogLlNIIE5BTUUKIHNubXB0cmFwZC5jb25mIC0gY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgTmV0LVNOTVAgbm90aWZpY2F0aW9uIHJlY2VpdmVyCiAuU0ggREVTQ1JJUFRJT04KQEAgLTcsNyArNyw3IEBACiAoYW5kIElORk9STSByZXF1ZXN0cykgc2hvdWxkIGJlIHByb2Nlc3NlZC4KIFRoaXMgZmlsZSAoXGZCc25tcHRyYXBkLmNvbmZcZlIpIGNhbiBiZSBsb2NhdGVkIGluCiBvbmUgb2Ygc2V2ZXJhbCBsb2NhdGlvbnMsIGFzIGRlc2NyaWJlZCBpbiB0aGUKLS5JIHNubXBfY29uZmlnKDUpCisuSVIgc25tcF9jb25maWcgKDUpCiBtYW51YWwgcGFnZS4KIC5TSCBJTVBPUlRBTlQKIFByZXZpb3VzbHksCkBAIC0zMiwyMiArMzIsMjIgQEAKIFNlZSB0aGUgc2VjdGlvbiAKIC5CIExJU1RFTklORyBBRERSRVNTRVMKIGluIHRoZQotLkkgc25tcGQoOCkKKy5JUiBzbm1wZCAoOCkKIG1hbnVhbCBwYWdlIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmb3JtYXQgb2YgbGlzdGVuaW5nCiBhZGRyZXNzZXMuCiAuSVAKIFRoZSBkZWZhdWx0IGJlaGF2aW91ciBpcyB0bwogbGlzdGVuIG9uIFVEUCBwb3J0IDE2MiBvbiBhbGwgSVB2NCBpbnRlcmZhY2VzLgogLklQICJkb05vdFJldGFpbk5vdGlmaWNhdGlvbkxvZ3MgeWVzIgotZGlzYWJsZXMgc3VwcG9ydCBmb3IgdGhlIE5PVElGSUNBVElPTi1MT0ctTUlCLgorZGlzYWJsZXMgc3VwcG9ydCBmb3IgdGhlIE5PVElGSUNBVElPTlwtTE9HXC1NSUIuCiBOb3JtYWxseSB0aGUgc25tcHRyYXBkIHByb2dyYW0ga2VlcHMgYSByZWNvcmQgb2YgdGhlIHRyYXBzCiByZWNlaXZlZCwgd2hpY2ggY2FuIGJlIHJldHJpZXZlZCBieSBxdWVyeWluZwogdGhlIFxmQ25sbUxvZ1RhYmxlXGZSIGFuZCBcZkNubG1Mb2d2YXJpYWJsZVRhYmxlXGZSIHRhYmxlcy4gIAogVGhpcyBkaXJlY3RpdmUgY2FuIGJlIHVzZWQgdG8gc3VwcHJlc3MgdGhpcyBiZWhhdmlvdXIuCiAuSVAKIFNlZSB0aGUgCi0uSSBzbm1wdHJhcGQoOCkgCi1tYW51YWwgcGFnZSBhbmQgdGhlIE5PVElGSUNBVElPTi1MT0ctTUlCIGZvciBkZXRhaWxzLgorLklSIHNubXB0cmFwZCAoOCkgCittYW51YWwgcGFnZSBhbmQgdGhlIE5PVElGSUNBVElPTlwtTE9HXC1NSUIgZm9yIGRldGFpbHMuCiAuSVAgImRvTm90TG9nVHJhcHMgeWVzIgogZGlzYWJsZXMgdGhlIGxvZ2dpbmcgb2Ygbm90aWZpY2F0aW9ucyBhbHRvZ2V0aGVyLgogVGhpcyBpcyB1c2VmdWwgaWYgdGhlIFxmQnNubXB0cmFwZFxmUiBhcHBsaWNhdGlvbiBzaG91bGQKQEAgLTgxLDE0ICs4MSwxNiBAQAogZm9yIGEgcGFydGljdWxhciBjYXRlZ29yeSBvZiBub3RpZmljYXRpb24uIEJ1dCBpdCBpcyBwZXJmZWN0bHkKIHBvc3NpYmxlIChldmVuIGRlc2lyYWJsZSkgdG8gbGltaXQgY2VydGFpbiBub3RpZmljYXRpb24gc291cmNlcyB0bwogc2VsZWN0ZWQgcHJvY2Vzc2luZyBvbmx5LgotLklQICJhdXRoQ29tbXVuaXR5ICAgVFlQRVMgQ09NTVVOSVRZICBbU09VUkNFIFtPSUQgfCAtdiBWSUVXIF1dIgorLklQICJhdXRoQ29tbXVuaXR5ICAgVFlQRVMgQ09NTVVOSVRZICBbU09VUkNFIFtPSUQgfCBcLXYgVklFVyBdXSIKIGF1dGhvcmlzZXMgdHJhcHMgKGFuZCBTTk1QdjJjIElORk9STSByZXF1ZXN0cykgd2l0aCB0aGUgc3BlY2lmaWVkCiBjb21tdW5pdHkgdG8gdHJpZ2dlciB0aGUgdHlwZXMgb2YgcHJvY2Vzc2luZyBsaXN0ZWQuCiBCeSBkZWZhdWx0LCB0aGlzIHdpbGwgYWxsb3cgYW55IG5vdGlmaWNhdGlvbiB1c2luZyB0aGlzIGNvbW11bml0eQogdG8gYmUgcHJvY2Vzc2VkLiAgVGhlIFNPVVJDRSBmaWVsZCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoYXQgdGhlCiBjb25maWd1cmF0aW9uIHNob3VsZCBvbmx5IGFwcGx5IHRvIG5vdGlmaWNhdGlvbnMgcmVjZWl2ZWQgZnJvbQotcGFydGljdWxhciBzb3VyY2VzIC0gc2VlIFxmSXNubXBkLmNvbmYoNSlcZlIgZm9yIG1vcmUgZGV0YWlscy4KLS5JUCAiYXV0aFVzZXIgICBUWVBFUyBbLXMgTU9ERUxdIFVTRVIgIFtMRVZFTCBbT0lEIHwgLXYgVklFVyBdXSIKK3BhcnRpY3VsYXIgc291cmNlcyAtIHNlZQorLklSIHNubXBkLmNvbmYgKDUpCitmb3IgbW9yZSBkZXRhaWxzLgorLklQICJhdXRoVXNlciAgIFRZUEVTIFtcLXMgTU9ERUxdIFVTRVIgIFtMRVZFTCBbT0lEIHwgXC12IFZJRVcgXV0iCiBhdXRob3Jpc2VzIFNOTVB2MyBub3RpZmljYXRpb25zIHdpdGggdGhlIHNwZWNpZmllZAogdXNlciB0byB0cmlnZ2VyIHRoZSB0eXBlcyBvZiBwcm9jZXNzaW5nIGxpc3RlZC4KIEJ5IGRlZmF1bHQsIHRoaXMgd2lsbCBhY2NlcHQgYXV0aGVudGljYXRlZCByZXF1ZXN0cy4KQEAgLTk2LDcgKzk4LDcgQEAKIGJlIHVzZWQgdG8gYWxsb3cgdW5hdXRoZW50aWNhdGVkIG5vdGlmaWNhdGlvbnMgKFxmSW5vYXV0aFxmUiksCiBvciB0byByZXF1aXJlIGVuY3J5cHRpb24gKFxmSXByaXZcZlIpLCBqdXN0IGFzIGZvciB0aGUgU05NUCBhZ2VudC4KIC5JUAotV2l0aCBib3RoIG9mIHRoZXNlIGRpcmVjdGl2ZXMsIHRoZSBPSUQgKG9yIFxmSS12IFZJRVdcZlIpIGZpZWxkCitXaXRoIGJvdGggb2YgdGhlc2UgZGlyZWN0aXZlcywgdGhlIE9JRCAob3IgXGZJXC12IFZJRVdcZlIpIGZpZWxkCiBjYW4gYmUgdXNlZCB0byByZXRyaWN0IHRoaXMgY29uZmlndXJhdGlvbiB0byB0aGUgcHJvY2Vzc2luZyBvZgogcGFydGljdWxhciBub3RpZmljYXRpb25zLgogLlJTCkBAIC0xMDYsMTYgKzEwOCwxOCBAQAogaW5jb21pbmcgbm90aWZpY2F0aW9uLiAgSXQgaXMgbm90IGFwcGxpZWQgdG8gdGhlIHBheWxvYWQgdmFyYmluZHMKIGhlbGQgd2l0aGluIHRoYXQgbm90aWZpY2F0aW9uLgogLlJFCi0uSVAgImF1dGhHcm91cCAgVFlQRVMgWy1zIE1PREVMXSBHUk9VUCAgW0xFVkVMIFtPSUQgfCAtdiBWSUVXIF1dIgotLklQICJhdXRoQWNjZXNzIFRZUEVTIFstcyBNT0RFTF0gR1JPVVAgVklFVyAgW0xFVkVMIFtDT05URVhUXV0iCisuSVAgImF1dGhHcm91cCAgVFlQRVMgW1wtcyBNT0RFTF0gR1JPVVAgIFtMRVZFTCBbT0lEIHwgXC12IFZJRVcgXV0iCisuSVAgImF1dGhBY2Nlc3MgVFlQRVMgW1wtcyBNT0RFTF0gR1JPVVAgVklFVyAgW0xFVkVMIFtDT05URVhUXV0iCiAuSVAgInNldEFjY2VzcyBHUk9VUCBDT05URVhUIE1PREVMIExFVkVMIFBSRUZJWCBWSUVXIFRZUEVTIgogYXV0aG9yaXNlIG5vdGlmaWNhdGlvbnMgaW4gdGhlIHNwZWNpZmllZCBHUk9VUAogKGNvbmZpZ3VyZWQgdXNpbmcgdGhlIFxmSWdyb3VwXGZSIGRpcmVjdGl2ZSkKIHRvIHRyaWdnZXIgdGhlIHR5cGVzIG9mIHByb2Nlc3NpbmcgbGlzdGVkLgotU2VlIFxmSXNubXBkLmNvbmYoNSlcZlIgZm9yIG1vcmUgZGV0YWlscy4KK1NlZQorLklSIHNubXBkLmNvbmYgKDUpCitmb3IgbW9yZSBkZXRhaWxzLgogLklQICJjcmVhdGVVc2VyIFstZSAgRU5HSU5FSURdIHVzZXJuYW1lIChNRDV8U0hBKSBhdXRocGFzc3BocmFzZSBbREVTfEFFU10iCiBTZWUgdGhlIAotLkkgc25tcGQuY29uZig1KQorLklSIHNubXBkLmNvbmYgKDUpCiBtYW51YWwgcGFnZSBmb3IgYSBkZXNjcmlwdGlvbiBvZiBob3cgdG8gY3JlYXRlIFNOTVB2MyB1c2Vycy4gIFRoaXMKIGlzIHJvdWdobHkgdGhlIHNhbWUsIGJ1dCB0aGUgZmlsZSBuYW1lIGNoYW5nZXMgdG8gc25tcHRyYXBkLmNvbmYgZnJvbQogc25tcGQuY29uZi4KQEAgLTEzMSw5ICsxMzUsMzggQEAKIHNwZWNpZnkgdGhlIGZvcm1hdCB1c2VkIHRvIGRpc3BsYXkgU05NUHYxIFRSQVBzIGFuZCBTTk1QdjIKIG5vdGlmaWNhdGlvbnMgcmVzcGVjdGl2ZWx5LiAgTm90ZSB0aGF0IFNOTVB2MmMgYW5kIFNOTVB2MwogYm90aCB1c2UgdGhlIHNhbWUgU05NUHYyIFBEVSBmb3JtYXQuCisuSVAgImZvcm1hdCBERVNUSU5BVElPTiBGT1JNQVQiCitzcGVjaWZ5IHRoZSBmb3JtYXQgdXNlZCBmb3IgZGlmZmVyZW50IGRlc3RpbmF0aW9ucy4KK0RFU1RJTkFUSU9OIGlzIG9uZSBvZjoKKy5JUiBwcmludCAiLCAiIHByaW50MSAiLCAiIHByaW50MiAiLCAiIAorLklSIHN5c2xvZyAiLCAiIHN5c2xvZzEgIiwgIiBzeXNsb2cyICIsICIgCisuSVIgZXhlY3V0ZSAiLCAiIGV4ZWN1dGUxICIsICIgZXhlY3V0ZTIgLgorLkkgcHJpbnQxCitpcyB1c2VkIGZvciBwcmludGluZyBTTk1QdjEgdHJhcHMsCisuSSBwcmludDIKK2lzIGZvciBTTk1QdjIuCisuSSBwcmludAoraXMgdXNlZCBmb3IgYm90aCB2ZXJzaW9ucy4KKy5JIHN5c2xvZworaXMgc2ltaWxhcmx5IHVzZWQgd2hlbiBzZW5kaW5nIHRyYXBzIHRvIHN5c2xvZywgYW5kCisuSSBleGVjdXRlCit1c2VkIHdoZW4gc2VuZGluZyB0cmFwcyB0byBhIHByb2dyYW0gc3VjaCBhcworLklSIHRyYXB0b2VtYWlsICgxKS4KKy5JUAorVGhlIGRlZmF1bHQgZm9ybWF0cyBhcmUKKy5icgorLkkgZm9ybWF0IHByaW50MSAlLjR5LSUuMm0tJS4ybCAlLjJoOiUuMmo6JS4yayAlQiBbJWJdICh2aWEgJUEgWyVhXSk6ICVOXGVuXGV0JVcgVHJhcCAoJXEpIFVwdGltZTogJSNUXGVuJXZcZW4KKy5icgorLkkgZm9ybWF0IHByaW50MiAlLjR5LSUuMm0tJS4ybCAlLjJoOiUuMmo6JS4yayAlQiBbJWJdOlxlbiV2XGVuCisuYnIKKy5JIGZvcm1hdCBzeXNsb2cxICVhOiAlVyBUcmFwICglcSkgVXB0aW1lOiAlI1QlI3ZcZW4KKy5icgorLkkgZm9ybWF0IHN5c2xvZzIgJUIgWyViXTogVHJhcCAlI3ZcZW4KKy5icgorLkkgZm9ybWF0IGV4ZWN1dGUgJUJcZW4lYlxlbiVWXGVuJXZcZW4KIC5JUAogU2VlCi0uSVIgc25tcHRyYXBkKDgpCisuSVIgc25tcHRyYXBkICg4KQogZm9yIHRoZSBsYXlvdXQgY2hhcmFjdGVycyBhdmFpbGFibGUuCiAuSVAgImlnbm9yZUF1dGhGYWlsdXJlIHllcyIKIGluc3RydWN0cyB0aGUgcmVjZWl2ZXIgdG8gaWdub3JlIFxmSWF1dGhlbnRpY2F0aW9uRmFpbHVyZVxmUiB0cmFwcy4KQEAgLTE0OSwxMiArMTgyLDE0IEBACiBzcGVjaWZpZXMgd2hlcmUgbm90aWZpY2F0aW9ucyBzaG91bGQgYmUgbG9nZ2VkIC0gdG8gc3RhbmRhcmQKIG91dHB1dCwgc3RhbmRhcmQgZXJyb3IsIGEgc3BlY2lmaWVkIGZpbGUgb3IgdmlhIFxmSXN5c2xvZ1xmUi4KIFNlZSB0aGUgc2VjdGlvbiBMT0dHSU5HIE9QVElPTlMgaW4gdGhlCi1cZklzbm1wY21kKDEpXGZSIG1hbnVhbCBwYWdlIGZvciBkZXRhaWxzLgorLklSIHNubXBjbWQgKDEpCittYW51YWwgcGFnZSBmb3IgZGV0YWlscy4KIC5JUCAib3V0cHV0T3B0aW9uIHN0cmluZyIKIHNwZWNpZmllcyB2YXJpb3VzIGNoYXJhY3RlcmlzdGljcyBvZiBob3cgT0lEcyBhbmQgb3RoZXIgdmFsdWVzCiBzaG91bGQgYmUgZGlzcGxheWVkLgogU2VlIHRoZSBzZWN0aW9uIE9VVFBVVCBPUFRJT05TIGluIHRoZQotXGZJc25tcGNtZCgxKVxmUiBtYW51YWwgcGFnZSBmb3IgZGV0YWlscy4KKy5JUiBzbm1wY21kICgxKQorbWFudWFsIHBhZ2UgZm9yIGRldGFpbHMuCiAuU0ggTXlTUUwgTG9nZ2luZwogVGhlcmUgYXJlIHR3byBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyB0aGF0IHdvcmsgdG9nZXRoZXIgdG8gY29udHJvbAogd2hlbiBxdWV1ZWQgdHJhcHMgYXJlIGxvZ2dlZCB0byB0aGUgTXlTUUwgZGF0YWJhc2UuIEEgbm9uLXplcm8KQEAgLTIwMSwxNCArMjM2LDE3IEBACiBOb3RlIHRoYXQgdGhpcyB3aWxsIGFsd2F5cyB1c2UgdGhlIFNOTVB2Mi1zdHlsZSBub3RpZmljYXRpb24gZm9ybWF0LCB3aXRoCiBTTk1QdjEgdHJhcHMgYmVpbmcgY29udmVydGVkIGFzIHBlciBSRkMgMjU3NiwgYmVmb3JlIGJlaW5nIHBhc3NlZCB0byB0aGUKIHByb2dyYW0uCi1UaGUgaW5wdXQgZm9ybWF0IGlzIGFzIGZvbGxvd3MsIG9uZSBlbnRyeSBwZXIgbGluZToKK1RoZSBpbnB1dCBmb3JtYXQgaXMsIGlmIHlvdSB1c2UgdGhlIGRlZmF1bHQgc2V0IGJ5Cit0aGUgImZvcm1hdCBleGVjdXRlICVCXGVuJWJcZW4lVlxlbiV2XGVuIiwgb25lIGVudHJ5IHBlciBsaW5lOgogLlJTCiAuSVAgSE9TVE5BTUUKIFRoZSBuYW1lIG9mIHRoZSBob3N0IHRoYXQgc2VudCB0aGUgbm90aWZpY2F0aW9uLCBhcyBkZXRlcm1pbmVkIGJ5Ci0uSVIgZ2V0aG9zdGJ5YWRkcigzKSAuCisuSVIgZ2V0aG9zdGJ5YWRkciAoMykuCiAuYnIKLS5JUCBJUEFERFJFU1MKLVRoZSBJUCBhZGRyZXNzIG9mIHRoZSBob3N0IHRoYXQgc2VudCB0aGUgbm90aWZpY2F0aW9uLgorLklQIEFERFJFU1MKK1RoZSB0cmFuc3BvcnQgYWRkcmVzcywgbGlrZQorLmJyCisiW1VEUDogWzE3Mi4xNi4xMC4xMl06MjM0NTYtPlsxMC4xNTAuMC44XV0iCiAuXCIKIC5cIiBYWFggLSBXaGF0IGFib3V0IG5vbi1JUHY0IHRyYW5zcG9ydHM/CiAuXCIKQEAgLTIxOSwxMCArMjU3LDEwIEBACiBUaGUgZm9ybWF0IG9mIGJvdGggb2YgdGhlc2UgYXJlIGNvbnRyb2xsZWQgYnkgdGhlIFxmSW91dHB1dE9wdGlvblxmUgogZGlyZWN0aXZlIChvciBzaW1pbGFyIGNvbmZpZ3VyYXRpb24pLgogLklQCi1UaGUgZmlyc3QgT0lEIHNob3VsZCBhbHdheXMgYmUgXGZDU05NUHYyLU1JQjo6c3lzVXBUaW1lLjBcZlIsCi1hbmQgdGhlIHNlY29uZCBzaG91bGQgYmUgXGZDU05NUHYyLU1JQjo6c25tcFRyYXBPSUQuMFxmUi4KK1RoZSBmaXJzdCBPSUQgc2hvdWxkIGFsd2F5cyBiZSBcZkNTTk1QdjJcLU1JQjo6c3lzVXBUaW1lLjBcZlIsCithbmQgdGhlIHNlY29uZCBzaG91bGQgYmUgXGZDU05NUHYyXC1NSUI6OnNubXBUcmFwT0lELjBcZlIuCiBUaGUgcmVtYWluaW5nIGxpbmVzIHdpbGwgY29udGFpbiB0aGUgcGF5bG9hZCB2YXJiaW5kIGxpc3QuCi1Gb3IgU05NUHYxIHRyYXBzLCB0aGUgZmluYWwgT0lEIHdpbGwgYmUgXGZDU05NUHYyLU1JQjo6c25tcFRyYXBFbnRlcnByaXNlLjBcZlIuCitGb3IgU05NUHYxIHRyYXBzLCB0aGUgZmluYWwgT0lEIHdpbGwgYmUgXGZDU05NUHYyXC1NSUI6OnNubXBUcmFwRW50ZXJwcmlzZS4wXGZSLgogLmJyCiAuSVAgRXhhbXBsZToKIEEgXGZCdHJhcHRvZW1haWxcZlIgc2NyaXB0IGhhcyBiZWVuIGluY2x1ZGVkIGluIHRoZSBOZXQtU05NUCBwYWNrYWdlIHRoYXQKQEAgLTIzMCw3ICsyNjgsNyBAQAogLmJyCiAuUlMKIC5QCi10cmFwaGFuZGxlIGRlZmF1bHQgL3Vzci9iaW4vcGVybCBCSU5ESVIvdHJhcHRvZW1haWwgLXMgbXlzbXRwLnNvbWV3aGVyZS5jb20gLWYgYWRtaW5Ac29tZXdoZXJlLmNvbSBtZUBzb21ld2hlcmUuY29tCit0cmFwaGFuZGxlIGRlZmF1bHQgL3Vzci9iaW4vcGVybCBCSU5ESVIvdHJhcHRvZW1haWwgXC1zIG15c210cC5zb21ld2hlcmUuY29tIFwtZiBhZG1pbkBzb21ld2hlcmUuY29tIG1lQHNvbWV3aGVyZS5jb20KIC5SRQogLlJFCiAuSVAgImZvcndhcmQgT0lEfGRlZmF1bHQgREVTVElOQVRJT04iCkBAIC0yNDIsNyArMjgwLDcgQEAKIFNlZSB0aGUgc2VjdGlvbiAKIC5CIExJU1RFTklORyBBRERSRVNTRVMKIGluIHRoZQotLkkgc25tcGQoOCkKKy5JUiBzbm1wZCAoOCkKIG1hbnVhbCBwYWdlIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmb3JtYXQgb2YgbGlzdGVuaW5nCiBhZGRyZXNzZXMuCiAuUkUKQEAgLTI2Miw1ICszMDAsNSBAQAogLlNIIEZJTEVTCiBTWVNDT05GRElSL3NubXAvc25tcHRyYXBkLmNvbmYKIC5TSCAiU0VFIEFMU08iCi1zbm1wX2NvbmZpZyg1KSwgc25tcHRyYXBkKDgpLCBzeXNsb2coOCksIHZhcmlhYmxlcyg1KSwgc25tcGQuY29uZig1KSwgbmV0c25tcF9jb25maWdfYXBpKDMpLgorc25tcF9jb25maWcoNSksIHNubXB0cmFwZCg4KSwgc3lzbG9nKDgpLCB0cmFwdG9lbWFpbCgxKSwgdmFyaWFibGVzKDUpLCBuZXRzbm1wX2NvbmZpZ19hcGkoMykuCiAKZGlmZiAtLWdpdCBhL21hbi9zbm1wdXNtLjEuZGVmIGIvbWFuL3NubXB1c20uMS5kZWYKaW5kZXggMjE3NzU5Mi4uOTA2MTIxMyAxMDA2NDQKLS0tIGEvbWFuL3NubXB1c20uMS5kZWYKKysrIGIvbWFuL3NubXB1c20uMS5kZWYKQEAgLTMsNyArMyw3IEBACiBzbm1wdXNtIC0gY3JlYXRlcyBhbmQgbWFpbnRhaW5zIFNOTVB2MyB1c2VycyBvbiBhIG5ldHdvcmsgZW50aXR5CiAuU0ggU1lOT1BTSVMKIC5CIHNubXB1c20KLVtDT01NT04gT1BUSU9OU10gWy1Dd10gQUdFTlQKK1tDT01NT04gT1BUSU9OU10gW1wtQ3ddIEFHRU5UCiAuQiBjcmVhdGUKIFVTRVIgW0NMT05FRlJPTS1VU0VSXQogLmJyCkBAIC0xOCwxNyArMTgsMTcgQEAKIFVTRVIgQ0xPTkVGUk9NLVVTRVIKIC5icgogLkIgc25tcHVzbQotW0NPTU1PTiBPUFRJT05TXSBbLUNhXSBbLUN4XSBBR0VOVAorW0NPTU1PTiBPUFRJT05TXSBbXC1DYV0gW1wtQ3hdIEFHRU5UCiAuQiBwYXNzd2QKIE9MRC1QQVNTUEhSQVNFIE5FVy1QQVNTUEhSQVNFIFtVU0VSXQogLmJyCiAuQiBzbm1wdXNtCi1bQ09NTU9OIE9QVElPTlNdIDwtQ2EgfCAtQ3g+IC1DayBBR0VOVAorW0NPTU1PTiBPUFRJT05TXSA8XC1DYSB8IFwtQ3g+IFwtQ2sgQUdFTlQKIC5CIHBhc3N3ZAogT0xELUtFWS1PUi1QQVNTUEhSQVNFIE5FVy1LRVktT1ItUEFTU1BIUkFTRSBbVVNFUl0KIC5icgogLkIgc25tcHVzbQotW0NPTU1PTiBPUFRJT05TXSBbLUNhXSBbLUN4XSBBR0VOVAorW0NPTU1PTiBPUFRJT05TXSBbXC1DYV0gW1wtQ3hdIEFHRU5UCiAuQiBjaGFuZ2VrZXkKIFtVU0VSXQogCkBAIC00NiwxMiArNDYsMTIgQEAKIC5CIHNubXB1c20KIGNvbW1hbmRzOgogLlRQCi0uQkkgLUNFICIgRU5HSU5FLUlEIgorLkJJIFwtQ0UgIiBFTkdJTkUtSUQiCiBTZXQgdXNtVXNlckVuZ2luZUlEIHRvIGJlIHVzZWQgYXMgcGFydCBvZiB0aGUgaW5kZXggb2YgdGhlIHVzbVVzZXJUYWJsZS4KLURlZmF1bHQgaXMgdG8gdXNlIHRoZSBjb250ZXh0RW5naW5lSUQgKHNldCB2aWEgLUUgb3IgcHJvYmVkKSBhcyB0aGUgCitEZWZhdWx0IGlzIHRvIHVzZSB0aGUgY29udGV4dEVuZ2luZUlEIChzZXQgdmlhIFwtRSBvciBwcm9iZWQpIGFzIHRoZSAKIHVzbVVzZXJFbmdpbmVJRC4KIC5UUAotLkJJIC1DcCAiIFNUUklORyIKKy5CSSBcLUNwICIgU1RSSU5HIgogU2V0IHRoZSB1c21Vc2VyUHVibGljIHZhbHVlIG9mIHRoZSAobmV3KSB1c2VyIHRvIHRoZSBzcGVjaWZpZWQgU1RSSU5HLgogLlBQCiBPcHRpb25zIGZvciB0aGUKQEAgLTYwLDE1ICs2MCwxNSBAQAogLkIgY2hhbmdla2V5CiBjb21tYW5kczoKIC5UUAotLkJJIC1DYQorLkJJIFwtQ2EKIENoYW5nZSB0aGUgYXV0aGVudGljYXRpb24ga2V5LgogLlRQCi0uQkkgLUN4CisuQkkgXC1DeAogQ2hhbmdlIHRoZSBwcml2YWN5IGtleS4KIC5UUAotLkJJIC1DawotQWxsb3dzIHRvIHVzZSBsb2NhbGl6ZWQga2V5IChtdXN0IHN0YXJ0IHdpdGggMHgpIGluc3RlYWQgb2YgcGFzc3BocmFzZS4KLVdoZW4gdGhpcyBvcHRpb24gaXMgdXNlZCwgZWl0aGVyIHRoZSAtQ2Egb3IgLUN4IG9wdGlvbiAoYnV0IG5vdCBib3RoKSBtdXN0IGFsc28KKy5CSSBcLUNrCitBbGxvd3Mgb25lIHRvIHVzZSBsb2NhbGl6ZWQga2V5IChtdXN0IHN0YXJ0IHdpdGggMHgpIGluc3RlYWQgb2YgcGFzc3BocmFzZS4KK1doZW4gdGhpcyBvcHRpb24gaXMgdXNlZCwgZWl0aGVyIHRoZSBcLUNhIG9yIFwtQ3ggb3B0aW9uIChidXQgbm90IGJvdGgpIG11c3QgYWxzbwogYmUgdXNlZC4KIAogLlNIIENSRUFUSU5HIFVTRVJTCkBAIC03NiwxNCArNzYsMTQgQEAKIEFuIHVuYXV0aGVudGljYXRlZCBTTk1QdjMgdXNlciBjYW4gYmUgY3JlYXRlZCB1c2luZyB0aGUgY29tbWFuZAogLklQCiAuQiBzbm1wdXNtCi1bT1BUSU9OU10gQUdFTlQgY3JlYXRlIFVTRVIKK1tDT01NT04gT1BUSU9OU10gQUdFTlQgY3JlYXRlIFVTRVIKIC5QUAogVGhpcyBjb25zdHJ1Y3RzIGFuIChpbmFjdGl2ZSkgZW50cnkgaW4gdGhlIHVzbVVzZXJUYWJsZSwKIHdpdGggbm8gYXV0aGVudGljYXRpb24gb3IgcHJpdmFjeSBzZXR0aW5ncy4KIEluIHByaW5jaXBsZSwgdGhpcyB1c2VyIHNob3VsZCBiZSB1c2VhYmxlIGZvciAnbm9BdXRoTm9Qcml2JyByZXF1ZXN0cywKIGJ1dCBpbiBwcmFjdGlzZSB0aGUgTmV0LVNOTVAgYWdlbnQgd2lsbCBub3QgYWxsb3cgc3VjaCBhbiBlbnRyeQogdG8gYmUgbWFkZSBhY3RpdmUuICBUaGUgdXNlciBjYW4gYmUgY3JlYXRlZCB2aWEgdGhlIGNyZWF0ZUFuZFdhaXQKLW9wZXJhdGlvbiBpbnN0ZWFkIGJ5IHVzaW5nIHRoZSAtQ2EgZmxhZy4gIFRoaXMgd2lsbCBwcmV2ZW50IHRoZSB1c2VyCitvcGVyYXRpb24gaW5zdGVhZCBieSB1c2luZyB0aGUgXC1DYSBmbGFnLiAgVGhpcyB3aWxsIHByZXZlbnQgdGhlIHVzZXIKIGZyb20gYmVpbmcgbWFya2VkIGFzIGFjdGl2ZSBpbiBhbnkgYWdlbnQgdW50aWwgZXhwbGljaXRseSBhY3RpdmF0ZWQKIGxhdGVyIHZpYSB0aGUgYWN0aXZhdGUgY29tbWFuZC4KIApAQCAtOTIsNyArOTIsNyBAQAogdXNlciwgdXNpbmcgdGhlIGNvbW1hbmQKIC5JUAogLkIgc25tcHVzbQotW09QVElPTlNdIEFHRU5UIGNsb25lRnJvbSBVU0VSIENMT05FRlJPTS1VU0VSCitbQ09NTU9OIE9QVElPTlNdIEFHRU5UIGNsb25lRnJvbSBVU0VSIENMT05FRlJPTS1VU0VSCiAuUFAKIFRoZSBVU0VSIGVudHJ5IHRoZW4gaW5oZXJpdHMgdGhlIHNhbWUgYXV0aGVudGljYXRpb24gYW5kIHByaXZhY3kKIHNldHRpbmdzIChpbmNsdWRpbmcgcGFzcyBwaHJhc2VzKSBhcyB0aGUgQ0xPTkVGUk9NIHVzZXIuCkBAIC0xMDEsNyArMTAxLDcgQEAKIFRoZXNlIHR3byBzdGVwcyBjYW4gYmUgY29tYmluZWQgaW50byBvbmUsIGJ5IHVzaW5nIHRoZSBjb21tYW5kCiAuSVAKIC5CIHNubXB1c20KLVtPUFRJT05TXSBBR0VOVCBjcmVhdGUgVVNFUiBDTE9ORUZST00tVVNFUgorW0NPTU1PTiBPUFRJT05TXSBBR0VOVCBjcmVhdGUgVVNFUiBDTE9ORUZST00tVVNFUgogCiAuUFAKIFRoZSB0d28gZm9ybXMgb2YgdGhlCkBAIC0xMzcsNyArMTM3LDcgQEAKIEEgdXNlciBjYW4gYmUgZGVsZXRlZCBmcm9tIHRoZSB1c21Vc2VyVGFibGUgdXNpbmcgdGhlIGNvbW1hbmQKIC5JUAogLkIgc25tcHVzbQotW09QVElPTlNdIEFHRU5UIGRlbGV0ZSBVU0VSCitbQ09NTU9OIE9QVElPTlNdIEFHRU5UIGRlbGV0ZSBVU0VSCiAKIC5TSCBDSEFOR0lORyBQQVNTIFBIUkFTRVMKIFVzZXIgcHJvZmlsZXMgY29udGFpbiBwcml2YXRlIGtleXMgdGhhdCBhcmUgbmV2ZXIKQEAgLTE0OCw3ICsxNDgsNyBAQAogVGhpcyB1c2VzIHRoZSBjb21tYW5kCiAuSVAKIC5CIHNubXB1c20KLVtPUFRJT05TXSBbLUNhXSBbLUN4XSBBR0VOVCBwYXNzd2QgT0xELVBBU1NQSFJBU0UgTkVXLVBBU1NQSFJBU0UgW1VTRVJdCitbQ09NTU9OIE9QVElPTlNdIFtcLUNhXSBbXC1DeF0gQUdFTlQgcGFzc3dkIE9MRC1QQVNTUEhSQVNFIE5FVy1QQVNTUEhSQVNFIFtVU0VSXQogCiAuUFAKIEFmdGVyIGNsb25pbmcgYSBuZXcgdXNlciBlbnRyeSBmcm9tIHRoZSBhcHByb3ByaWF0ZSB0ZW1wbGF0ZSwKQEAgLTE1NiwyMSArMTU2LDIxIEBACiAKIC5QUAogSWYgVVNFUiBpcyBub3Qgc3BlY2lmaWVkLCB0aGlzIGNvbW1hbmQgd2lsbCBjaGFuZ2UgdGhlIHBhc3NwaHJhc2UKLW9mIHRoZSAoU05NUHYzKSB1c2VyIGlzc3VpbmcgdGhlIGNvbW1hbmQuICBJZiB0aGUgLUNhIG9yIC1DeCBvcHRpb25zCitvZiB0aGUgKFNOTVB2MykgdXNlciBpc3N1aW5nIHRoZSBjb21tYW5kLiAgSWYgdGhlIFwtQ2Egb3IgXC1DeCBvcHRpb25zCiBhcmUgc3BlY2lmaWVkLCB0aGVuIG9ubHkgdGhlIGF1dGhlbnRpY2F0aW9uIG9yIHByaXZhY3kga2V5cyBhcmUgY2hhbmdlZC4gIElmCiB0aGVzZSBvcHRpb25zIGFyZSBub3Qgc3BlY2lmaWVkLCB0aGVuIGJvdGggdGhlIGF1dGhlbnRpY2F0aW9uIGFuZCBwcml2YWN5IGtleXMKIGFyZSBjaGFuZ2VkLgogCiAuSVAKIC5CIHNubXB1c20KLVtPUFRJT05TXSBbLUNhXSBbLUN4XSBBR0VOVCBjaGFuZ2VrZXkgW1VTRVJdCitbQ09NTU9OIE9QVElPTlNdIFtcLUNhXSBbXC1DeF0gQUdFTlQgY2hhbmdla2V5IFtVU0VSXQogCiAuUFAKIFRoaXMgY29tbWFuZCBjaGFuZ2VzIHRoZSBrZXkgaW4gYSBwZXJmZWN0LWZvcndhcmQtc2VjcmVjeSBjb21wbGlhbnQKIHdheSB0aHJvdWdoIGEgZGlmZmllLWhlbG1hbiBleGNoYW5nZS4gIFRoZSByZW1vdGUgYWdlbnQgbXVzdCBzdXBwb3J0Ci10aGUgU05NUC1VU00tREgtT0JKRUNUUy1NSUIgZm9yIHRoaXMgY29tbWFuZCB0byB3b3JrLiAgVGhlIHJlc3VsdGluZwordGhlIFNOTVBcLVVTTVwtREhcLU9CSkVDVFNcLU1JQiBmb3IgdGhpcyBjb21tYW5kIHRvIHdvcmsuICBUaGUgcmVzdWx0aW5nCiBrZXlzIGFyZSBwcmludGVkIHRvIHRoZSBjb25zb2xlIGFuZCBtYXkgYmUgdGhlbiBzZXQgaW4gZnV0dXJlIGNvbW1hbmQKLWludm9jYXRpb25zIHVzaW5nIHRoZSAtLWRlZkF1dGhMb2NhbGl6ZWRLZXkgYW5kIC0tZGVmUHJpdkxvY2FsaXplZEtleQoraW52b2NhdGlvbnMgdXNpbmcgdGhlIFwtXC1kZWZBdXRoTG9jYWxpemVkS2V5IGFuZCBcLVwtZGVmUHJpdkxvY2FsaXplZEtleQogb3B0aW9ucyBvciBpbiB5b3VyIHNubXAuY29uZiBmaWxlIHVzaW5nIHRoZSBkZWZBdXRoTG9jYWxpemVkS2V5IGFuZAogZGVmUHJpdkxvY2FsaXplZEtleSBrZXl3b3Jkcy4KIApAQCAtMTg3LDEwICsxODcsMTAgQEAKIAogLklQCiAuQiBzbm1wdXNtCi1bT1BUSU9OU10gPC1DYSB8IC1DeD4gLUNrIEFHRU5UIHBhc3N3ZCBPTEQtS0VZLU9SLVBBU1NQSFJBU0UgTkVXLUtFWS1PUi1QQVNTUEhSQVNFIFtVU0VSXQorW0NPTU1PTiBPUFRJT05TXSA8XC1DYSB8IFwtQ3g+IFwtQ2sgQUdFTlQgcGFzc3dkIE9MRC1LRVktT1ItUEFTU1BIUkFTRSBORVctS0VZLU9SLVBBU1NQSFJBU0UgW1VTRVJdCiAKIC5QUAotRWl0aGVyIHRoZSAtQ2Egb3IgdGhlIC1DeCBvcHRpb24gbXVzdCBiZSBzcGVjaWZpZWQuICBUaGUgT0xELUtFWS1PUi1QQVNTUEhSQVNFCitFaXRoZXIgdGhlIFwtQ2Egb3IgdGhlIFwtQ3ggb3B0aW9uIG11c3QgYmUgc3BlY2lmaWVkLiAgVGhlIE9MRC1LRVktT1ItUEFTU1BIUkFTRQogYW5kL29yIE5FVy1LRVktT1ItUEFTU1BIUkFTRSBhcmd1bWVudHMgY2FuIGVpdGhlciBiZSBhIHBhc3NwaHJhc2Ugb3IgYQogbG9jYWxpemVkIGtleSBzdGFydGluZyB3aXRoICIweCIsIGUuZy4gYXMgcHJpbnRlZCBvdXQgYnkgdGhlCiAuQiBjaGFuZ2VrZXkKQEAgLTIyOSw3ICsyMjksNyBAQAogaW4gbGVuZ3RoLgogLlNTIENyZWF0ZSBhIG5ldyB1c2VyCiAuUFAKLXNubXB1c20gLXYzIC11IGluaXRpYWwgLW4gIiIgLWwgYXV0aE5vUHJpdiAtYSBNRDUgLUEgc2V0dXBfcGFzc3BocmFzZQorc25tcHVzbSBcLXYzIFwtdSBpbml0aWFsIFwtbiAiIiBcLWwgYXV0aE5vUHJpdiBcLWEgTUQ1IFwtQSBzZXR1cF9wYXNzcGhyYXNlCiBsb2NhbGhvc3QgY3JlYXRlIHdlcyBpbml0aWFsCiAuSVAKIENyZWF0ZXMgYSBuZXcgdXNlciwgaGVyZSBuYW1lZCAid2VzIiB1c2luZyB0aGUgdXNlciAiaW5pdGlhbCIgdG8gZG8KQEAgLTIzNyw3ICsyMzcsNyBAQAogdGhhdCB1c2VyJ3MgcGFzc3BocmFzZSAoInNldHVwX3Bhc3NwaHJhc2UiKS4KIC5TUyBDaGFuZ2UgdGhlIHVzZXIncyBwYXNzcGhyYXNlCiAuUFAKLXNubXB1c20gLXYgMyAtdSB3ZXMgLW4gIiIgLWwgYXV0aE5vUHJpdiAtYSBNRDUgLUEgc2V0dXBfcGFzc3BocmFzZQorc25tcHVzbSBcLXYgMyBcLXUgd2VzIFwtbiAiIiBcLWwgYXV0aE5vUHJpdiBcLWEgTUQ1IFwtQSBzZXR1cF9wYXNzcGhyYXNlCiBsb2NhbGhvc3QgcGFzc3dkIHNldHVwX3Bhc3NwaHJhc2UgbmV3X3Bhc3NwaHJhc2UKIC5JUAogQWZ0ZXIgY3JlYXRpbmcgdGhlIHVzZXIgIndlcyIgd2l0aCB0aGUgc2FtZSBwYXNzcGhyYXNlIGFzIHRoZQpAQCAtMjQ2LDcgKzI0Niw3IEBACiB0aGUgaW5pdGlhbCB1c2VyLCB0byAibmV3X3Bhc3NwaHJhc2UiLgogLlNTIFRlc3QgdGhlIG5ldyB1c2VyCiAuUFAKLXNubXBnZXQgLXYgMyAtdSB3ZXMgLW4gIiIgLWwgYXV0aE5vUHJpdiAtYSBNRDUgLUEgbmV3X3Bhc3NwaHJhc2UKK3NubXBnZXQgXC12IDMgXC11IHdlcyBcLW4gIiIgXC1sIGF1dGhOb1ByaXYgXC1hIE1ENSBcLUEgbmV3X3Bhc3NwaHJhc2UKIGxvY2FsaG9zdCBzeXNVcFRpbWUuMAogLklQCiBJZiB0aGUgYWJvdmUgY29tbWFuZHMgd2VyZSBzdWNjZXNzZnVsLCB0aGlzIGNvbW1hbmQgc2hvdWxkIGhhdmUKZGlmZiAtLWdpdCBhL21hbi9zbm1wdmFjbS4xLmRlZiBiL21hbi9zbm1wdmFjbS4xLmRlZgppbmRleCA2YWUxZjAzLi43MGIwODllIDEwMDY0NAotLS0gYS9tYW4vc25tcHZhY20uMS5kZWYKKysrIGIvbWFuL3NubXB2YWNtLjEuZGVmCkBAIC0xNSw3ICsxNSw3IEBACiAuQiBzbm1wdmFjbQogW0NPTU1PTiBPUFRJT05TXSBBR0VOVAogLkIgY3JlYXRlVmlldwotWy1DZV0gTkFNRSBTVUJUUkVFIE1BU0sKK1tcLUNlXSBOQU1FIFNVQlRSRUUgTUFTSwogLmJyCiAuQiBzbm1wdmFjbQogW0NPTU1PTiBPUFRJT05TXSBBR0VOVApAQCAtMTAyLDcgKzEwMiw3IEBACiAuQiBjcmVhdGVTZWMyR3JvdXAKIGNvbW1hbmQgKG9yIGVxdWl2YWxlbnQpLgogCi0uU1MgY3JlYXRlVmlldyBcZlJbLUNlXSBOQU1FIFNVQlRSRUUgTUFTS1xmUAorLlNTIGNyZWF0ZVZpZXcgXGZSW1wtQ2VdIE5BTUUgU1VCVFJFRSBNQVNLXGZQCiAuUFAKIENyZWF0ZSBhbiBlbnRyeSBpbiB0aGUgU05NUHYzIE1JQiB2aWV3IHRhYmxlLgogQSBNSUIgdmlldyBjb25zaXN0cyBvZiBhIGZhbWlseSBvZiB2aWV3IHN1YnRyZWVzIHdoaWNoIG1heSBiZSBpbmRpdmlkdWFsbHkKQEAgLTExMCw3ICsxMTAsNyBAQAogZGVmaW5lZCBieSBhIGNvbWJpbmF0aW9uIG9mIGFuIE9JRCBzdWJ0cmVlIHRvZ2V0aGVyIHdpdGggYSBiaXQgc3RyaW5nIG1hc2suCiBUaGUgdmlldyB0YWJsZSBpcyBpbmRleGVkIGJ5IHRoZSB2aWV3IG5hbWUgYW5kIHN1YnRyZWUgT0lEIHZhbHVlcy4KIC5QUAotWy1DZV0KK1tcLUNlXQogLklQCiBBbiBvcHRpb25hbCBmbGFnIHRvIGluZGljYXRlIHRoYXQgdGhpcyB2aWV3IHN1YnRyZWUgc2hvdWxkIGJlIGV4Y2x1ZGVkCiBmcm9tIHRoZSBuYW1lZCB2aWV3LgpAQCAtMzI3LDcgKzMyNyw3IEBACiAuUFAKIFRoaXMgY3JlYXRlcyBhIG5ldyBzZWN1cml0eSBncm91cCBuYW1lZCAiUk9Hcm91cCIgY29udGFpbmluZyB0aGUgKHByZS1leGlzdGluZykKIHVzZXIgIndlcyIsIGEgbmV3IHZpZXcgInN5c1ZpZXciIGNvbnRhaW5pbmcganVzdCB0aGUgT0lEIHRyZWUgYmFzZWQgb24KLS5JIC5pc28oMSkub3JnKDMpLmRvZCg2KS5pbmV0KDEpLm1nbXQoMikubWliLTIoMSkuc3lzdGVtKDEpCisuSSAuaXNvKDEpLm9yZygzKS5kb2QoNikuaW5ldCgxKS5tZ210KDIpLm1pYlwtMigxKS5zeXN0ZW0oMSkKICwgYW5kIHRoZW4gYWxsb3dzIHRob3NlIHVzZXJzIGluIHRoZSBncm91cCAiUk9Hcm91cCIgKGkuZS4gIndlcyIpCiByZWFkLWFjY2VzcywgYnV0IG5vdCB3cml0ZS1hY2Nlc3MgdG8gdGhlIHZpZXcgInN5c1ZpZXciIChpLmUuIHRoZSBzeXN0ZW0gZ3JvdXApLgogCmRpZmYgLS1naXQgYS9tYW4vc25tcHdhbGsuMS5kZWYgYi9tYW4vc25tcHdhbGsuMS5kZWYKaW5kZXggNmUxNTIwMS4uZDlmM2Q1YyAxMDA2NDQKLS0tIGEvbWFuL3NubXB3YWxrLjEuZGVmCisrKyBiL21hbi9zbm1wd2Fsay4xLmRlZgpAQCAtMSw3ICsxLDcgQEAKIC5cIiAtKi0gbnJvZmYgLSotCi0uXCIgUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0LiAKLS5cIiBTZWUgdGhlIE5ldC1TTk1QIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlcgotLlwiIGNvcHlyaWdodHMgdGhhdCBtYXkgYXBwbHk6CisuXCIgUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0LiAgU2VlCisuXCIgdGhlIE5ldC1TTk1QIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisuXCIgdGhhdCBtYXkgYXBwbHk6CiAuXCIgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIgCUNvcHlyaWdodCAxOTg4LCAxOTg5IGJ5IENhcm5lZ2llIE1lbGxvbiBVbml2ZXJzaXR5CiAuXCIgCkBAIC00Myw3ICs0Myw3IEBACiAuUFAKIElmIG5vIE9JRCBhcmd1bWVudCBpcyBwcmVzZW50LAogLkIgc25tcHdhbGsKLXdpbGwgc2VhcmNoIHRoZSBzdWJ0cmVlIHJvb3RlZCBhdCBTTk1QdjItU01JOjptaWItMgord2lsbCBzZWFyY2ggdGhlIHN1YnRyZWUgcm9vdGVkIGF0IFNOTVB2MlwtU01JOjptaWJcLTIKIChpbmNsdWRpbmcgYW55IE1JQiBvYmplY3QgdmFsdWVzIGZyb20gb3RoZXIgTUlCIG1vZHVsZXMsCiB0aGF0IGFyZSBkZWZpbmVkIGFzIGx5aW5nIHdpdGhpbiB0aGlzIHN1YnRyZWUpLgogSWYgdGhlIG5ldHdvcmsgZW50aXR5IGhhcyBhbiBlcnJvciBwcm9jZXNzaW5nIHRoZSByZXF1ZXN0IHBhY2tldCwgYW4KQEAgLTU0LDcgKzU0LDcgQEAKIE1JQiwgdGhlIG1lc3NhZ2UgIkVuZCBvZiBNSUIiIHdpbGwgYmUgZGlzcGxheWVkLgogLlNIIE9QVElPTlMKIC5UUCA4Ci0uQiAtQ2MKKy5CIFwtQ2MKIERvIG5vdCBjaGVjayB3aGV0aGVyIHRoZSByZXR1cm5lZCBPSURzIGFyZSBpbmNyZWFzaW5nLiAgU29tZSBhZ2VudHMKIChMYXNlckpldHMgYXJlIGFuIGV4YW1wbGUpIHJldHVybiBPSURzIG91dCBvZiBvcmRlciwgYnV0IGNhbgogY29tcGxldGUgdGhlIHdhbGsgYW55d2F5LiAgT3RoZXIgYWdlbnRzIHJldHVybiBPSURzIHRoYXQgYXJlIG91dCBvZgpAQCAtNjQsMTUgKzY0LDE1IEBACiAuQiBzbm1wd2FsawogdHJpZXMgdG8gZGV0ZWN0IHRoaXMgYmVoYXZpb3IgYW5kIHdhcm5zIHlvdSB3aGVuIGl0IGhpdHMgYW4gYWdlbnQKIGFjdGluZyBpbGxlZ2FsbHkuICBVc2UKLS5CIC1DYworLkIgXC1DYwogdG8gdHVybiBvZmYgdGhpcyBjaGVjay4KIC5UUAotLkIgLUNFIHtPSUR9CisuQiBcLUNFIHtPSUR9CiBFbmQgdGhlIHdhbGsgYXQgdGhlIHNwZWNpZmllZCBPSUQsIHJhdGhlciB0aGFuIGEgc2ltcGxlIHN1YnRyZWUuCiBUaGlzIGNhbiBiZSB1c2VkIHRvIHdhbGsgYSBwYXJ0aWFsIHN1YnRyZWUsIHNlbGVjdGVkIGNvbHVtbnMgb2YKIGEgdGFibGUsIG9yIGV2ZW4gdHdvIG9yIG1vcmUgdGFibGVzIHdpdGhpbiBhIHNpbmdsZSBjb21tYW5kLgogLlRQCi0uQiAtQ2kKKy5CIFwtQ2kKIEluY2x1ZGUgdGhlIGdpdmVuIE9JRCBpbiB0aGUgc2VhcmNoIHJhbmdlLiAgTm9ybWFsbHkKIC5CIHNubXB3YWxrCiB1c2VzIEdFVE5FWFQgcmVxdWVzdHMgc3RhcnRpbmcgd2l0aCB0aGUgT0lEIHlvdSBzcGVjaWZpZWQgYW5kIHJldHVybnMKQEAgLTgxLDcgKzgxLDcgQEAKIHJlc3VsdHMgaWYgaXQgaXMgYSB2YWxpZCBPSUQgaW4gdGhlIHRyZWUgaXRzZWxmLiAgVGhpcyBvcHRpb24gbGV0cyB5b3UKIGRvIHRoaXMgZXhwbGljaXRseS4KIC5UUAotLkIgLUNJCisuQiBcLUNJCiBJbiBmYWN0LCB0aGUgZ2l2ZW4gT0lEIHdpbGwgYmUgcmV0cmlldmVkIGF1dG9tYXRpY2FsbHkgaWYgdGhlIG1haW4KIHN1YnRyZWUgd2FsayByZXR1cm5zIG5vIHVzZWFibGUgdmFsdWVzLiAgVGhpcyBhbGxvd3MgYSB3YWxrIG9mIGEKIHNpbmdsZSBpbnN0YW5jZSB0byBiZWhhdmUgYXMgZ2VuZXJhbGx5IGV4cGVjdGVkLCBhbmQgcmV0dXJuIHRoZQpAQCAtODksMTAgKzg5LDEwIEBACiBUaGlzIG9wdGlvbiB0dXJucyBvZmYgdGhpcyBmaW5hbCBHRVQgcmVxdWVzdCwgc28gYSB3YWxrIG9mIGEKIHNpbmdsZSBpbnN0YW5jZSB3aWxsIHJldHVybiBub3RoaW5nLgogLlRQCi0uQiAtQ3AKKy5CIFwtQ3AKIFVwb24gY29tcGxldGlvbiBvZiB0aGUgd2FsaywgcHJpbnQgdGhlIG51bWJlciBvZiB2YXJpYWJsZXMgZm91bmQuCiAuVFAKLS5CIC1DdAorLkIgXC1DdAogVXBvbiBjb21wbGV0aW9uIG9mIHRoZSB3YWxrLCBwcmludCB0aGUgdG90YWwgd2FsbC1jbG9jayB0aW1lIGl0IHRvb2sKIHRvIGNvbGxlY3QgdGhlIGRhdGEgKGluIHNlY29uZHMpLiAgTm90ZSB0aGF0IHRoZSB0aW1lciBpcyBzdGFydGVkIGp1c3QKIGJlZm9yZSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkYXRhIHJlcXVlc3Qgc2VyaWVzIGFuZCBzdG9wcGVkIGp1c3QgYWZ0ZXIKQEAgLTEwOCwxMiArMTA4LDEyIEBACiAuU0ggRVhBTVBMRVMKIC5icgogTm90ZSB0aGF0Ci0uQiBzbm1wYnVsa2dldAorLkIgc25tcHdhbGsKIFJFUVVJUkVTICBhbiBhcmd1bWVudCBzcGVjaWZ5aW5nIHRoZSBhZ2VudCB0byBxdWVyeQogYW5kIGF0IG1vc3Qgb25lIE9JRCBhcmd1bWVudCwgYXMgZGVzY3JpYmVkIHRoZXJlLgogVGhlIGNvbW1hbmQ6CiAuUFAKLXNubXB3YWxrIC1PcyAtYyBwdWJsaWMgLXYgMSB6ZXVzIHN5c3RlbQorc25tcHdhbGsgXC1PcyBcLWMgcHVibGljIFwtdiAxIHpldXMgc3lzdGVtCiAuUFAKIHdpbGwgcmV0cmlldmUgYWxsIG9mIHRoZSB2YXJpYWJsZXMgdW5kZXIgc3lzdGVtOgogLlBQCkBAIC0xMzUsNyArMTM1LDcgQEAKIAogVGhlIGNvbW1hbmQ6CiAuUFAKLXNubXB3YWxrIC1PcyAtYyBwdWJsaWMgLXYgMSAtQ0Ugc3lzT1JUYWJsZSB6ZXVzIHN5c3RlbQorc25tcHdhbGsgXC1PcyBcLWMgcHVibGljIFwtdiAxIFwtQ0Ugc3lzT1JUYWJsZSB6ZXVzIHN5c3RlbQogLlBQCiB3aWxsIHJldHJpZXZlIHRoZSBzY2FsYXIgdmFsdWVzLCBidXQgb21pdCB0aGUgc3lzT1JUYWJsZS4KIC5TSCAiU0VFIEFMU08iCmRpZmYgLS1naXQgYS9tYW4vdGttaWIuMS5kZWYgYi9tYW4vdGttaWIuMS5kZWYKaW5kZXggZmE0NWRjZS4uZjAyNTNiOSAxMDA2NDQKLS0tIGEvbWFuL3RrbWliLjEuZGVmCisrKyBiL21hbi90a21pYi4xLmRlZgpAQCAtMSw0ICsxLDQgQEAKLS5USCB0a21pYiAxICIxNiBOb3YgMjAwNiIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKKy5USCB0a21pYiAiMSIgIjE2IE5vdiAyMDA2IiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgogLlNIIE5BTUUKIHRrbWliIC0gYW4gaW50ZXJhY3RpdmUgZ3JhcGhpY2FsIE1JQiBicm93c2VyIGZvciBTTk1QCiAuU0ggU1lOT1BTSVMKZGlmZiAtLWdpdCBhL21pYnMvTkVULVNOTVAtUEVSSU9ESUMtTk9USUZZLU1JQi50eHQgYi9taWJzL05FVC1TTk1QLVBFUklPRElDLU5PVElGWS1NSUIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzZWFjYWQKLS0tIC9kZXYvbnVsbAorKysgYi9taWJzL05FVC1TTk1QLVBFUklPRElDLU5PVElGWS1NSUIudHh0CkBAIC0wLDAgKzEsODMgQEAKK05FVC1TTk1QLVBFUklPRElDLU5PVElGWS1NSUIgREVGSU5JVElPTlMgOjo9IEJFR0lOCisKKy0tCistLSBPYmplY3RzIGZvciBwZXJpb2RpYyBub3RpZmljYXRpb25zIGNvbnRhaW5pbmcgZGF0YSBwYXlsb2FkcworLS0KKworSU1QT1JUUworICAgIG5ldFNubXBNb2R1bGVJRHMsIG5ldFNubXBPYmplY3RzLCBuZXRTbm1wTm90aWZpY2F0aW9ucyBGUk9NIE5FVC1TTk1QLU1JQgorCisgICAgT0JKRUNULVRZUEUsIE5PVElGSUNBVElPTi1UWVBFLCBNT0RVTEUtSURFTlRJVFksIEludGVnZXIzMiwgVW5zaWduZWQzMgorICAgICAgICBGUk9NIFNOTVB2Mi1TTUkKKworICAgIERpc3BsYXlTdHJpbmcgRlJPTSBTTk1QdjItVEM7CisKKworbmV0U25tcFBlcmlvZGljTm90aWZ5TWliIE1PRFVMRS1JREVOVElUWQorICAgIExBU1QtVVBEQVRFRCAiMjAxMTA0MjAwMDAwWiIKKyAgICBPUkdBTklaQVRJT04gInd3dy5uZXQtc25tcC5vcmciCisgICAgQ09OVEFDVC1JTkZPICAgIAorCSAicG9zdGFsOiAgIFdlcyBIYXJkYWtlcgorICAgICAgICAgICAgICAgICAgICBQLk8uIEJveCAzODIKKyAgICAgICAgICAgICAgICAgICAgRGF2aXMgQ0EgIDk1NjE3CisKKyAgICAgICAgICBlbWFpbDogICAgbmV0LXNubXAtY29kZXJzQGxpc3RzLnNvdXJjZWZvcmdlLm5ldCIKKyAgICBERVNDUklQVElPTgorCSJPYmplY3RzIGZvciBwZXJpb2RpYyBub3RpZmljYXRpb25zIGNvbnRhaW5pbmcgZGF0YSBwYXlsb2FkcyIKKyAgICBSRVZJU0lPTiAgICAgIjIwMTEwNDIwMDAwMFoiCisgICAgREVTQ1JJUFRJT04KKwkiRmlyc3QgcmV2aXNpb24uIgorICAgIDo6PSB7IG5ldFNubXBNb2R1bGVJRHMgNSB9CisKK25zUE5TY2FsYXJzICAgICAgICAgICAgICAgICBPQkpFQ1QgSURFTlRJRklFUiA6Oj0ge25ldFNubXBQZXJpb2RpY05vdGlmeU1pYiAxfQorbnNQTlRhYmxlcyAgICAgICAgICAgICAgICAgIE9CSkVDVCBJREVOVElGSUVSIDo6PSB7bmV0U25tcFBlcmlvZGljTm90aWZ5TWliIDJ9Cituc1BOb3RpZnlPYmplY3RzICAgICAgICAgICAgT0JKRUNUIElERU5USUZJRVIgOjo9IHtuZXRTbm1wUGVyaW9kaWNOb3RpZnlNaWIgM30KK25zUE5vdGlmaWNhdGlvblByZWZpeCAgICAgICBPQkpFQ1QgSURFTlRJRklFUiA6Oj0ge25ldFNubXBQZXJpb2RpY05vdGlmeU1pYiA0fQorbnNQTm90aWZpY2F0aW9ucyAgICAgICAgICAgIE9CSkVDVCBJREVOVElGSUVSIDo6PSB7bnNQTm90aWZpY2F0aW9uUHJlZml4IDB9Cituc1BOb3RpZmljYXRpb25PYmplY3RzICAgICAgT0JKRUNUIElERU5USUZJRVIgOjo9IHtuc1BOb3RpZmljYXRpb25QcmVmaXggMX0KKworLS0KKy0tIE5vdGlmaWNhdGlvbiBEZWZpbml0aW9ucworLS0KKworbnNOb3RpZnlQZXJpb2RpY05vdGlmaWNhdGlvbiAgICAgICAgTk9USUZJQ0FUSU9OLVRZUEUKKyAgICBTVEFUVVMJY3VycmVudAorICAgIERFU0NSSVBUSU9OCisJIkRhdGEgZGVsaXZlcnkgbm90aWZpY2F0aW9uIGZyb20gYSBjb25maWd1cmVkIGxpc3Qgb2YgcGVyaW9kaWMKKwlkYXRhIHNldHMgdG8gZGVsaXZlci4gIFNlZSB0aGUgc25tcGQuY29uZiBtYW51YWwgcGFnZSBmb3IKKwlkZXRhaWxzIGFib3V0IGNvbmZpZ3VyaW5nIE5ldC1TTk1QIGFnZW50cyBmb3Igc2VuZGluZyB0aGVzZQorCW5vdGlmaWNhdGlvbnMgb3V0IG9uIGEgcmVndWxhciBiYXNpcy4iCisgICAgOjo9IHsgbnNQTm90aWZpY2F0aW9ucyAxIH0KKworLS0KKy0tIE9iamVjdHMgdGhhdCBjYW4gYmUgcHV0IGludG8gdGhlIG5vdGlmaWNhdGlvbnMKKy0tCisKK25zUE5QZXJpb2RpY1RpbWUgT0JKRUNULVRZUEUKKyAgICAgU1lOVEFYICAgICAgVW5zaWduZWQzMgorICAgICBNQVgtQUNDRVNTICBhY2Nlc3NpYmxlLWZvci1ub3RpZnkKKyAgICAgU1RBVFVTICAgICAgY3VycmVudAorICAgICBERVNDUklQVElPTgorICAgICAgICAgIlRoZSBudW1iZXIgb2Ygc2Vjb25kcyBiZXR3ZWVuIG5vdGlmaWNhdGlvbnMgY29udGFpbmluZyB0aGlzIGRhdGEgc2V0LiIKKyAgICAgOjo9IHsgbnNQTm90aWZ5T2JqZWN0cyAxIH0KKworbnNQTm90aWZ5TWVzc2FnZU51bWJlciBPQkpFQ1QtVFlQRQorICAgIFNZTlRBWCAgICAgIFVuc2lnbmVkMzIKKyAgICBNQVgtQUNDRVNTICBhY2Nlc3NpYmxlLWZvci1ub3RpZnkKKyAgICBTVEFUVVMgICAgICBjdXJyZW50CisgICAgREVTQ1JJUFRJT04KKyAgICAgICAgIkluZGljYXRlcyB0aGlzIGlzIHRoZSBOdGggbm90aWZpY2F0aW9uIGluIGEgbG9uZ2VyIHNlcXVlbmNlCisgICAgICAgIG9mIG5vdGlmaWNhdGlvbnMiCisgICAgOjo9IHsgbnNQTm90aWZ5T2JqZWN0cyAyIH0KKworbnNQTm90aWZ5TWF4TWVzc2FnZU51bWJlciBPQkpFQ1QtVFlQRQorICAgIFNZTlRBWCAgICAgIFVuc2lnbmVkMzIKKyAgICBNQVgtQUNDRVNTICBhY2Nlc3NpYmxlLWZvci1ub3RpZnkKKyAgICBTVEFUVVMgICAgICBjdXJyZW50CisgICAgREVTQ1JJUFRJT04KKyAgICAgICAgIlRoZSBtYXhpbXVtIG51bWJlciBvZiBtZXNzYWdlcyB0aGlzIG5vdGlmaWNhdGlvbiBzZXF1ZW5jZQorICAgICAgICB3aWxsIGNvbnRhaW4uIgorICAgIDo6PSB7IG5zUE5vdGlmeU9iamVjdHMgMyB9CisKKworRU5ECmRpZmYgLS1naXQgYS9taWJzL1VDRC1TTk1QLU1JQi50eHQgYi9taWJzL1VDRC1TTk1QLU1JQi50eHQKaW5kZXggNjlmOWFjNS4uM2JmNDkxMyAxMDA2NDQKLS0tIGEvbWlicy9VQ0QtU05NUC1NSUIudHh0CisrKyBiL21pYnMvVUNELVNOTVAtTUlCLnR4dApAQCAtNTUsNiArNTUsMTAgQEAKICAgICBERVNDUklQVElPTgogCSJUaGlzIGZpbGUgZGVmaW5lcyB0aGUgcHJpdmF0ZSBVQ0QgU05NUCBNSUIgZXh0ZW5zaW9ucy4iCiAKKyAgICBSRVZJU0lPTgkgIjIwMTEwNTE0MDAwMFoiCisgICAgREVTQ1JJUFRJT04KKwkiTmV3IG9iamVjdHMgZm9yIG1vbml0b3JpbmcgQ1BVIFN0ZWFsLCBHdWVzdCBhbmQgTmljZSB2YWx1ZXMiCisKICAgICBSRVZJU0lPTgkgIjIwMDkwMTE5MDAwMFoiCiAgICAgREVTQ1JJUFRJT04KIAkiTmV3IDY0LWJpdCBvYmplY3RzIGZvciBtb25pdG9yaW5nIGxhcmdlIGRpc2sgdXNhZ2UiCkBAIC0xNDMyLDYgKzE0MzYsNTggQEAKICAgICAgICAgIk51bWJlciBvZiBibG9ja3Mgc3dhcHBlZCBvdXQiCiAgICAgOjo9IHsgc3lzdGVtU3RhdHMgNjMgfQogCitzc0NwdVJhd1N0ZWFsIE9CSkVDVC1UWVBFCisgICAgU1lOVEFYICAgICAgQ291bnRlcjMyCisgICAgTUFYLUFDQ0VTUyAgcmVhZC1vbmx5CisgICAgU1RBVFVTICAgICAgY3VycmVudAorICAgIERFU0NSSVBUSU9OCisgICAgICAgICJUaGUgbnVtYmVyIG9mICd0aWNrcycgKHR5cGljYWxseSAxLzEwMHMpIHNwZW50CisgICAgICAgICBieSB0aGUgaHlwZXJ2aXNvciBjb2RlIHRvIHJ1biBvdGhlciBWTXMgZXZlbgorICAgICAgICAgdGhvdWdoIHRoZSBDUFUgaW4gdGhlIGN1cnJlbnQgVk0gaGFkIHNvbWV0aGluZyBydW5uYWJsZS4KKworICAgICAgICAgVGhpcyBvYmplY3Qgd2lsbCBub3QgYmUgaW1wbGVtZW50ZWQgb24gaG9zdHMgd2hlcmUKKyAgICAgICAgIHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0gZG9lcyBub3QgbWVhc3VyZQorICAgICAgICAgdGhpcyBwYXJ0aWN1bGFyIENQVSBtZXRyaWMuCisKKyAgICAgICAgIE9uIGEgbXVsdGktcHJvY2Vzc29yIHN5c3RlbSwgdGhlICdzc0NwdVJhdyonCisgICAgICAgICBjb3VudGVycyBhcmUgY3VtdWxhdGl2ZSBvdmVyIGFsbCBDUFVzLCBzbyB0aGVpcgorICAgICAgICAgc3VtIHdpbGwgdHlwaWNhbGx5IGJlIE4qMTAwIChmb3IgTiBwcm9jZXNzb3JzKS4iCisgICAgOjo9IHsgc3lzdGVtU3RhdHMgNjQgfQorCitzc0NwdVJhd0d1ZXN0IE9CSkVDVC1UWVBFCisgICAgU1lOVEFYICAgICAgQ291bnRlcjMyCisgICAgTUFYLUFDQ0VTUyAgcmVhZC1vbmx5CisgICAgU1RBVFVTICAgICAgY3VycmVudAorICAgIERFU0NSSVBUSU9OCisgICAgICAgICJUaGUgbnVtYmVyIG9mICd0aWNrcycgKHR5cGljYWxseSAxLzEwMHMpIHNwZW50CisgICAgICAgICBieSB0aGUgQ1BVIHRvIHJ1biBhIHZpcnR1YWwgQ1BVIChndWVzdCkuCisKKyAgICAgICAgIFRoaXMgb2JqZWN0IHdpbGwgbm90IGJlIGltcGxlbWVudGVkIG9uIGhvc3RzIHdoZXJlCisgICAgICAgICB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtIGRvZXMgbm90IG1lYXN1cmUKKyAgICAgICAgIHRoaXMgcGFydGljdWxhciBDUFUgbWV0cmljLgorCisgICAgICAgICBPbiBhIG11bHRpLXByb2Nlc3NvciBzeXN0ZW0sIHRoZSAnc3NDcHVSYXcqJworICAgICAgICAgY291bnRlcnMgYXJlIGN1bXVsYXRpdmUgb3ZlciBhbGwgQ1BVcywgc28gdGhlaXIKKyAgICAgICAgIHN1bSB3aWxsIHR5cGljYWxseSBiZSBOKjEwMCAoZm9yIE4gcHJvY2Vzc29ycykuIgorICAgIDo6PSB7IHN5c3RlbVN0YXRzIDY1IH0KKworc3NDcHVSYXdHdWVzdE5pY2UgT0JKRUNULVRZUEUKKyAgICBTWU5UQVggICAgICBDb3VudGVyMzIKKyAgICBNQVgtQUNDRVNTICByZWFkLW9ubHkKKyAgICBTVEFUVVMgICAgICBjdXJyZW50CisgICAgREVTQ1JJUFRJT04KKyAgICAgICAgIlRoZSBudW1iZXIgb2YgJ3RpY2tzJyAodHlwaWNhbGx5IDEvMTAwcykgc3BlbnQKKyAgICAgICAgIGJ5IHRoZSBDUFUgdG8gcnVuIGEgbmljZWQgdmlydHVhbCBDUFUgKGd1ZXN0KS4KKworICAgICAgICAgVGhpcyBvYmplY3Qgd2lsbCBub3QgYmUgaW1wbGVtZW50ZWQgb24gaG9zdHMgd2hlcmUKKyAgICAgICAgIHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0gZG9lcyBub3QgbWVhc3VyZQorICAgICAgICAgdGhpcyBwYXJ0aWN1bGFyIENQVSBtZXRyaWMuCisKKyAgICAgICAgIE9uIGEgbXVsdGktcHJvY2Vzc29yIHN5c3RlbSwgdGhlICdzc0NwdVJhdyonCisgICAgICAgICBjb3VudGVycyBhcmUgY3VtdWxhdGl2ZSBvdmVyIGFsbCBDUFVzLCBzbyB0aGVpcgorICAgICAgICAgc3VtIHdpbGwgdHlwaWNhbGx5IGJlIE4qMTAwIChmb3IgTiBwcm9jZXNzb3JzKS4iCisgICAgOjo9IHsgc3lzdGVtU3RhdHMgNjYgfQorCiAtLSBwb3NzaWJseSB1c2VkIGluIHRoZSBmdXR1cmU6CiAtLQogLS0gc3NFcnJvckZsYWcgT0JKRUNULVRZUEUKZGlmZiAtLWdpdCBhL3BlcmwvQVNOL0FTTi5wbSBiL3BlcmwvQVNOL0FTTi5wbQppbmRleCA2ZjA2MDNmLi4wMDhlOTdiIDEwMDY0NAotLS0gYS9wZXJsL0FTTi9BU04ucG0KKysrIGIvcGVybC9BU04vQVNOLnBtCkBAIC02Niw3ICs2Niw3IEBACiAJQVNOX1VOU0lHTkVECiAJQVNOX1VOU0lHTkVENjQKICk7Ci0kVkVSU0lPTiA9ICc1LjA2MDInOworJFZFUlNJT04gPSAnNS4wNzAzJzsKIAogc3ViIEFVVE9MT0FEIHsKICAgICAjIFRoaXMgQVVUT0xPQUQgaXMgdXNlZCB0byAnYXV0b2xvYWQnIGNvbnN0YW50cyBmcm9tIHRoZSBjb25zdGFudCgpCmRpZmYgLS1naXQgYS9wZXJsL0FTTi9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCBiL3BlcmwvQVNOL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9wZXJsL0FTTi9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaApkaWZmIC0tZ2l0IGEvcGVybC9BbnlEYXRhX1NOTVAvU3RvcmFnZS5wbSBiL3BlcmwvQW55RGF0YV9TTk1QL1N0b3JhZ2UucG0KaW5kZXggNDRiODVhZS4uNjdjNzkxZiAxMDA2NDQKLS0tIGEvcGVybC9BbnlEYXRhX1NOTVAvU3RvcmFnZS5wbQorKysgYi9wZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtCkBAIC02LDcgKzYsNyBAQAogIyMgICBzY2FsYXIgc2V0cz8KICMjICAgbXVsdGktaG9zdHMKIAotJEFueURhdGE6OlN0b3JhZ2U6OlZFUlNJT04gPSAnNS4wNjAyJzsKKyRBbnlEYXRhOjpTdG9yYWdlOjpWRVJTSU9OID0gJzUuMDcwMyc7CiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzOwogCmRpZmYgLS1naXQgYS9wZXJsL01ha2VmaWxlLlBMIGIvcGVybC9NYWtlZmlsZS5QTAppbmRleCA5MmY1YWQyLi4zMWZkYzQwIDEwMDY0NAotLS0gYS9wZXJsL01ha2VmaWxlLlBMCisrKyBiL3BlcmwvTWFrZWZpbGUuUEwKQEAgLTExLDcgKzExLDcgQEAKICAgICAkbnNjb25maWc9Im5ldC1zbm1wLWNvbmZpZyI7ICMgaW4gcGF0aCBieSBkZWZhdWx0CiAgICAgbXkgJVBhcmFtcyA9ICgKIAkJICAnTkFNRScgPT4gJ0J1bmRsZTo6TmV0U05NUCcsCi0JCSAgJ0RJUicgPT4gW3F3KGRlZmF1bHRfc3RvcmUgQVNOIE9JRCBhZ2VudCBTTk1QIFRyYXBSZWNlaXZlcildCisJCSAgJ0RJUicgPT4gW3F3KGRlZmF1bHRfc3RvcmUgQVNOIE9JRCBhZ2VudCBTTk1QIFRyYXBSZWNlaXZlcildLAogCQkgICk7CiAKICAgICAjIGJvZ3VzLCBidXQgdGhlc2Ugb3B0aW9ucyBuZWVkIHRvIGJlIHBhc3NlZCB0byB0aGUgbG93ZXIgbGV2ZWxzCmRpZmYgLS1naXQgYS9wZXJsL09JRC9PSUQucG0gYi9wZXJsL09JRC9PSUQucG0KaW5kZXggZGMzYTQyNy4uYjc1YmYxZCAxMDA2NDQKLS0tIGEvcGVybC9PSUQvT0lELnBtCisrKyBiL3BlcmwvT0lEL09JRC5wbQpAQCAtOTIsNyArOTIsNyBAQAogCXNubXBfb2lkX2NvbXBhcmUKICAgICAgICAgY29tcGFyZQogKTsKLSRWRVJTSU9OID0gJzUuMDYwMic7CiskVkVSU0lPTiA9ICc1LjA3MDMnOwogCiBzdWIgbmV3IHsKICAgICBteSAkdHlwZSA9IHNoaWZ0OwpkaWZmIC0tZ2l0IGEvcGVybC9PSUQvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmggYi9wZXJsL09JRC9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjRjY2RiCi0tLSAvZGV2L251bGwKKysrIGIvcGVybC9PSUQvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgKQEAgLTAsMCArMSw2IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoc25wcmludF9vYmppZCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHNucHJpbnRfdmFsdWUpCisKZGlmZiAtLWdpdCBhL3BlcmwvU05NUC9TTk1QLnBtIGIvcGVybC9TTk1QL1NOTVAucG0KaW5kZXggY2E2MjMzOS4uYTA1Y2QzOCAxMDA2NDQKLS0tIGEvcGVybC9TTk1QL1NOTVAucG0KKysrIGIvcGVybC9TTk1QL1NOTVAucG0KQEAgLTcsNyArNyw3IEBACiAjICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgUGVybCBpdHNlbGYuCiAKIHBhY2thZ2UgU05NUDsKLSRWRVJTSU9OID0gJzUuMDYwMic7ICAgIyBjdXJyZW50IHJlbGVhc2UgdmVyc2lvbiBudW1iZXIKKyRWRVJTSU9OID0gJzUuMDcwMyc7ICAgIyBjdXJyZW50IHJlbGVhc2UgdmVyc2lvbiBudW1iZXIKIAogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5nczsKZGlmZiAtLWdpdCBhL3BlcmwvU05NUC9TTk1QLnhzIGIvcGVybC9TTk1QL1NOTVAueHMKaW5kZXggY2UwZmI1Yy4uMmE3MzRlOCAxMDA2NDQKLS0tIGEvcGVybC9TTk1QL1NOTVAueHMKKysrIGIvcGVybC9TTk1QL1NOTVAueHMKQEAgLTI0NCw3ICsyNDQsOCBAQAogCiAgICAgICAgIFNPQ0tfU1RBUlRVUDsKIAotICAgICAgICBzbm1wX3NldF9xdWlja19wcmludCgxKTsKKyAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1FVSUNLX1BSSU5ULCAxKTsKICAgICAgICAgaW5pdF9zbm1wKGFwcG5hbWUpOwogICAgIAogICAgICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgTkVUU05NUF9EU19MSUJfRE9OVF9CUkVBS0RPV05fT0lEUywgMSk7CkBAIC0zMDczLDYgKzMwNzQsNyBAQAogICAgICAgICAgICBpbnQgdXNlX2VudW1zOwogICAgICAgICAgICBzdHJ1Y3QgZW51bV9saXN0ICplcDsKICAgICAgICAgICAgaW50IGJlc3RfZ3Vlc3M7CSAgIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIAogICAgICAgICAgICBOZXcgKDAsIG9pZF9hcnIsIE1BWF9PSURfTEVOLCBvaWQpOwogCkBAIC0zMTk0LDYgKzMxOTYsOSBAQAogICAgICAgICAgICAgICAvKiBCVUchISEgbmVlZCB0byByZXR1cm4gYW4gZXJyb3IgdmFsdWUgKi8KICAgICAgICAgICAgICAgWFBVU0hzKCZzdl91bmRlZik7IC8qIG5vIG1lbSBvciBiYWQgYXJncyAqLwogICAgICAgICAgICB9CisjZWxzZSAgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgICAgICAgIHdhcm4oImVycm9yOiBOZXQtU05NUCB3YXMgY29tcGlsZWQgdXNpbmcgLS1lbmFibGUtcmVhZC1vbmx5LCBzZXQoKSBjYW4gbm90IGJlIHVzZWQuIik7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiBkb25lOgogICAgICAgICAgICBTYWZlZnJlZShvaWRfYXJyKTsKICAgICAgICAgfQpAQCAtNDQ0Niw3ICs0NDUxLDcgQEAKIAkgICAKICAgICAgICAgICAgTmV3ICgwLCBvaWRfYXJyLCBNQVhfT0lEX0xFTiwgb2lkKTsKIAotICAgICAgICAgICBpZiAob2lkX2FyciAmJiBTdlJPSyhzZXNzX3JlZikgJiYgU3ZST0sodmFybGlzdF9yZWYpKSB7CisgICAgICAgICAgIGlmIChvaWRfYXJyICYmIFN2Uk9LKHNlc3NfcmVmKSkgewogCiAgICAgICAgICAgICAgIHNlc3NfcHRyX3N2ID0gaHZfZmV0Y2goKEhWKilTdlJWKHNlc3NfcmVmKSwgIlNlc3NQdHIiLCA3LCAxKTsKIAkgICAgICBzcyA9IChTbm1wU2Vzc2lvbiAqKVN2SVYoKFNWKilTdlJWKCpzZXNzX3B0cl9zdikpOwpAQCAtNDQ2MCw4ICs0NDY1LDEzIEBACiAJICAgICAgCiAgICAgICAgICAgICAgIHBkdSA9IHNubXBfcGR1X2NyZWF0ZShTTk1QX01TR19UUkFQMik7CiAKLSAgICAgICAgICAgICAgdmFybGlzdCA9IChBViopIFN2UlYodmFybGlzdF9yZWYpOwotICAgICAgICAgICAgICB2YXJsaXN0X2xlbiA9IGF2X2xlbih2YXJsaXN0KTsKKyAgICAgICAgICAgICAgaWYgKFN2Uk9LKHZhcmxpc3RfcmVmKSkgeworICAgICAgICAgICAgICAgICAgdmFybGlzdCA9IChBViopIFN2UlYodmFybGlzdF9yZWYpOworICAgICAgICAgICAgICAgICAgdmFybGlzdF9sZW4gPSBhdl9sZW4odmFybGlzdCk7CisgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICB2YXJsaXN0ID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgIHZhcmxpc3RfbGVuID0gLTE7CisgICAgICAgICAgICAgIH0KIAkgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogICAgICAgICAgICAgICByZXMgPSBfX2FkZF92YXJfdmFsX3N0cihwZHUsIHN5c1VwVGltZSwgU1lTX1VQVElNRV9PSURfTEVOLAogCQkJCXVwdGltZSwgc3RybGVuKHVwdGltZSksIFRZUEVfVElNRVRJQ0tTKTsKQEAgLTQ3NDksNyArNDc1OSw4IEBACiAJaW50CQlmbGFnCiAJQ09ERToKIAl7Ci0JICAgc25tcF9zZXRfZHVtcF9wYWNrZXQoZmxhZyk7CisgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0RVTVBfUEFDS0VULCBmbGFnKTsKIAl9CiAKIApAQCAtNDg5Nyw3ICs0OTA4LDggQEAKIAlpbnQJdmFsCiAJQ09ERToKIAl7Ci0JICAgc25tcF9zZXRfc2F2ZV9kZXNjcmlwdGlvbnModmFsKTsKKyAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfU0FWRV9NSUJfREVTQ1JTLCB2YWwpOwogCX0KIAogdm9pZApkaWZmIC0tZ2l0IGEvcGVybC9TTk1QL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oIGIvcGVybC9TTk1QL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkYzY0MmMKLS0tIC9kZXYvbnVsbAorKysgYi9wZXJsL1NOTVAvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgKQEAgLTAsMCArMSw4IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoc25wcmludF9vYmppZCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHNucHJpbnRfdmFsdWUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShmaW5kX21vZHVsZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGdldF90Y19kZXNjcmlwdGlvbikKKwpkaWZmIC0tZ2l0IGEvcGVybC9TTk1QL3QvYXN5bmMudCBiL3BlcmwvU05NUC90L2FzeW5jLnQKaW5kZXggYjFjODZjNi4uZjNmYjM4ZCAxMDA2NDQKLS0tIGEvcGVybC9TTk1QL3QvYXN5bmMudAorKysgYi9wZXJsL1NOTVAvdC9hc3luYy50CkBAIC0xNyw3ICsxNyw3IEBACiB1c2UgdmFycyBxdygkYWdlbnRfcG9ydCAkY29tbSAkYWdlbnRfaG9zdCk7CiAKIGlmICgkXk8gPX4gL3dpbjMyL2kpIHsKLSAgd2FybiAiV2luMzIgZGV0ZWN0ZWQgLSBza2lwcGluZyBhc3luYyBjYWxsc1xuIjsKKyAgd2FybiAiV2luMzIvV2luNjQgZGV0ZWN0ZWQgLSBza2lwcGluZyBhc3luYyBjYWxsc1xuIjsKICAgZXhpdDsKIH0KIApkaWZmIC0tZ2l0IGEvcGVybC9TTk1QL3QvYnVsa3dhbGsudCBiL3BlcmwvU05NUC90L2J1bGt3YWxrLnQKaW5kZXggNjBmMTBiNS4uMmQxM2U3YiAxMDA2NDQKLS0tIGEvcGVybC9TTk1QL3QvYnVsa3dhbGsudAorKysgYi9wZXJsL1NOTVAvdC9idWxrd2Fsay50CkBAIC0zMjYsNyArMzI2LDcgQEAKIAkJCSAgICBbJ2lmU3BlZWQnXSwgWydpZkRlc2NyJ10pOwkgIyBSZXBlYXRlZCB2YXJpYWJsZXMuCiAKIGlmICgkXk8gPX4gL3dpbjMyL2kpIHsKLSAgd2FybiAiV2luMzIgZGV0ZWN0ZWQgLSBza2lwcGluZyBhc3luYyBjYWxsc1xuIjsKKyAgd2FybiAiV2luMzIvV2luNjQgZGV0ZWN0ZWQgLSBza2lwcGluZyBhc3luYyBjYWxsc1xuIjsKIH0KIGVsc2UgewogICBAbGlzdCA9ICRzMS0+YnVsa3dhbGsoMiwgMTYsICR2YXJzLCBbIFwmYXN5bmNfY2IxLCAkdmFycyBdICk7CmRpZmYgLS1naXQgYS9wZXJsL1NOTVAvdC9ub3RpZnkudCBiL3BlcmwvU05NUC90L25vdGlmeS50CmluZGV4IDQzNDIzN2YuLjcyNjAwZmEgMTAwNjQ0Ci0tLSBhL3BlcmwvU05NUC90L25vdGlmeS50CisrKyBiL3BlcmwvU05NUC90L25vdGlmeS50CkBAIC0xMCw3ICsxMCw3IEBACiAgICAgJEVOVnsnTUlCRElSUyd9ID0gJysnIC4gYWJzX3BhdGgoIi4uLy4uL21pYnMiKTsKIH0KIHVzZSBUZXN0OwotQkVHSU4geyAkbiA9IDEwOyBwbGFuIHRlc3RzID0+ICRuIH0KK0JFR0lOIHsgJG4gPSAxMTsgcGxhbiB0ZXN0cyA9PiAkbiB9CiB1c2UgU05NUDsKIHVzZSB2YXJzIHF3KCRhZ2VudF9wb3J0ICRjb21tICRjb21tMiAkdHJhcF9wb3J0ICRhZ2VudF9ob3N0ICRzZWNfbmFtZSAkcHJpdl9wYXNzICRhdXRoX3Bhc3MgJGJhZF9uYW1lKTsKIHJlcXVpcmUgJ3Qvc3RhcnRhZ2VudC5wbCc7CkBAIC0yMSwyMCArMjEsMjAgQEAKIG15ICRnZW5lcmljID0gJ3NwZWNpZmljJzsKIAogIyAgICAgICAgICAgICAgICAgICAgICAgICBWMSB0cmFwIHRlc3RpbmcKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIDEgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIDEgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgRmlyZSB1cCBhIHRyYXAgc2Vzc2lvbi4KIG15ICRzMSA9CiAgICAgbmV3IFNOTVA6OlNlc3Npb24gKERlc3RIb3N0PT4kYWdlbnRfaG9zdCxWZXJzaW9uPT4xLENvbW11bml0eT0+JGNvbW0sUmVtb3RlUG9ydD0+JHRyYXBfcG9ydCk7CiBvayhkZWZpbmVkKCRzMSkpOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgMiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIDIgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgdGVzdCB2MSB0cmFwCiBpZiAoZGVmaW5lZCgkczEpKSB7CiAgICRyZXMgPSAkczEtPnRyYXAoZW50ZXJwcmlzZSA9PiAkZW50ZXJwcmlzZSwgYWdlbnQ9PiRhZ2VudF9ob3N0LCBnZW5lcmljPT4kZ2VuZXJpYyxbW3N5c0NvbnRhY3QsIDAsICdyb290QGxvY2FsaG9zdCddLCBbc3lzTG9jYXRpb24sIDAsICdoZXJlJ11dICk7CiB9CiBvaygkcmVzID1+IC9eMCBidXQgdHJ1ZS8pOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgMyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICAzICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIHRlc3Qgd2l0aCB3cm9uZyB2YXJiaW5kCiB1bmRlZiAkcmVzOwogaWYgKGRlZmluZWQoJHMxKSkgewpAQCAtNDUsMTIgKzQ1LDEyIEBACiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogIyAgICAgICAgICAgICAgICAgICAgICBWMiB0ZXN0aW5nCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyA0ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgNCAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBGaXJlIHVwIGEgdjIgdHJhcCBzZXNzaW9uLgogbXkgJHMyID0KICAgICBuZXcgU05NUDo6U2Vzc2lvbiAoVmVyc2lvbj0+MiwgRGVzdEhvc3Q9PiRhZ2VudF9ob3N0LENvbW11bml0eT0+JGNvbW0yLFJlbW90ZVBvcnQ9PiR0cmFwX3BvcnQpOwogb2soZGVmaW5lZCgkczIpKTsKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIDUgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICA1ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIHRlc3QgdjIgdHJhcAogdW5kZWYgJHJlczsKIGlmIChkZWZpbmVkKCRzMikpIHsKQEAgLTU4LDcgKzU4LDcgQEAKICAgI3ByaW50KCJyZXMgaXMgJHJlc1xuIik7CiB9CiBvaygkcmVzID1+IC9eMCBidXQgdHJ1ZS8pOwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIDYgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIDYgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgbm8gdHJhcG9pZCBhbmQgdXB0aW1lIGdpdmVuLiBTaG91bGQgdGFrZSBkZWZhdWx0cy4uLgogbXkgJHJldDsKIGlmIChkZWZpbmVkKCRzMikpIHsKQEAgLTY2LDI3ICs2NiwzNSBAQAogICAjcHJpbnQoInJlcyBpcyAkcmV0XG4iKTsKIH0KIG9rKGRlZmluZWQoJHJldCkpOworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICA3ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIG5vIHZhcmJpbmQgbGlzdCBnaXZlbi4KK3VuZGVmICRyZXM7CitpZiAoZGVmaW5lZCgkczIpKSB7CisgICRyZXMgPSAkczItPnRyYXAodHJhcG9pZD0+J2NvbGRTdGFydCcpOworICAjcHJpbnQoInJlcyBpcyAkcmVzXG4iKTsKK30KK29rKGRlZmluZWQoJHJlcykgJiYgJHJlcyA9fiAvXjAgYnV0IHRydWUvKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKICMgICAgICAgICAgICAgICAgICAgICB2MyB0ZXN0aW5nCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIDcgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgOCAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBGaXJlIHVwIGEgdjMgdHJhcCBzZXNzaW9uLgogbXkgJHMzID0gbmV3IFNOTVA6OlNlc3Npb24oVmVyc2lvbj0+MywgRGVzdEhvc3Q9PiAkYWdlbnRfaG9zdCwgUmVtb3RlUG9ydD0+JHRyYXBfcG9ydCwgU2VjTmFtZSA9PiAkc2VjX25hbWUpOwogb2soZGVmaW5lZCgkczMpKTsKIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICA4ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgOSAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogaWYgKGRlZmluZWQoJHMzKSkgewogICAkcmVzID0gJHMzLT5pbmZvcm0odXB0aW1lPT4xMTEsIHRyYXBvaWQ9Pidjb2xkU3RhcnQnLCBbW3N5c0NvbnRhY3QsIDAsICdyb290QGxvY2FsaG9zdCddLCBbc3lzTG9jYXRpb24sIDAsICdoZXJlJ11dICk7CiB9CiBvaygkcmVzID1+IC9eMCBidXQgdHJ1ZS8pOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyA5ICMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIDEwICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIEZpcmUgdXAgYSB2MyB0cmFwIHNlc3Npb24uCiAkczMgPSBuZXcgU05NUDo6U2Vzc2lvbihWZXJzaW9uPT4zLCBEZXN0SG9zdD0+ICRhZ2VudF9ob3N0LCBSZW1vdGVQb3J0PT4kdHJhcF9wb3J0LCBTZWNOYW1lID0+ICRzZWNfbmFtZSwgU2VjTGV2ZWwgPT4gYXV0aFByaXYsIEF1dGhQYXNzID0+ICRhdXRoX3Bhc3MsIFByaXZQYXNzID0+ICRwcml2X3Bhc3MpOwogb2soZGVmaW5lZCgkczMpKTsKIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICAxMCAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgMTEgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIHVuZGVmICRyZXM7CiBpZiAoZGVmaW5lZCgkczMpKSB7CiAgICAgJHJlcyA9ICRzMy0+aW5mb3JtKHVwdGltZT0+MTExLCB0cmFwb2lkPT4nY29sZFN0YXJ0JywgW1tzeXNDb250YWN0LCAwLCAncm9vdEBsb2NhbGhvc3QnXSwgW3N5c0xvY2F0aW9uLCAwLCAnaGVyZSddXSApOwpkaWZmIC0tZ2l0IGEvcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtIGIvcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtCmluZGV4IGJkOTBlM2MuLjg1YTA0MWEgMTAwNjQ0Ci0tLSBhL3BlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci5wbQorKysgYi9wZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0KQEAgLTQ3LDcgKzQ3LDcgQEAKIAlORVRTTk1QVFJBUERfUFJFX0hBTkRMRVIKICk7CiAKLSRWRVJTSU9OID0gJzUuMDYwMic7CiskVkVSU0lPTiA9ICc1LjA3MDMnOwogCiAjIHN1YiBuZXcgewogIyAgICAgbXkgJHR5cGUgPSBzaGlmdDsKZGlmZiAtLWdpdCBhL3BlcmwvVHJhcFJlY2VpdmVyL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oIGIvcGVybC9UcmFwUmVjZWl2ZXIvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQzMzFlMwotLS0gL2Rldi9udWxsCisrKyBiL3BlcmwvVHJhcFJlY2VpdmVyL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oCkBAIC0wLDAgKzEsNiBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKG5ldHNubXBfYWRkX2RlZmF1bHRfdHJhcGhhbmRsZXIpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShtZW1vcnlfZnJlZSkKKwpkaWZmIC0tZ2l0IGEvcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0gYi9wZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbQppbmRleCAwNjU0MWNkLi4wM2Y1NGQ5IDEwMDY0NAotLS0gYS9wZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbQorKysgYi9wZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbQpAQCAtMjYsNyArMjYsNyBAQAogQElTQSAgICAgICA9IHF3KEV4cG9ydGVyIGdldExlYWYpOwogQEVYUE9SVCAgICA9IHF3KHJlZ2lzdGVyQWdlbnQgZ2V0T2lkRWxlbWVudCBzZXRPaWRFbGVtZW50KTsKIEBFWFBPUlRfT0sgPSBxdygpOwotJFZFUlNJT04gPSAnNS4wNjAyJzsKKyRWRVJTSU9OID0gJzUuMDcwMyc7CiAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7CmRpZmYgLS1naXQgYS9wZXJsL2FnZW50L2FnZW50LnBtIGIvcGVybC9hZ2VudC9hZ2VudC5wbQppbmRleCAxZTJkYWQ1Li40NjUwMGZmIDEwMDY0NAotLS0gYS9wZXJsL2FnZW50L2FnZW50LnBtCisrKyBiL3BlcmwvYWdlbnQvYWdlbnQucG0KQEAgLTg3LDcgKzg3LDcgQEAKIAlTTk1QX0VSUl9BVVRIT1JJWkFUSU9ORVJST1IKIAlTTk1QX0VSUl9OT1RXUklUQUJMRQogKTsKLSRWRVJTSU9OID0gJzUuMDYwMic7CiskVkVSU0lPTiA9ICc1LjA3MDMnOwogCiBzdWIgQVVUT0xPQUQgewogICAgICMgVGhpcyBBVVRPTE9BRCBpcyB1c2VkIHRvICdhdXRvbG9hZCcgY29uc3RhbnRzIGZyb20gdGhlIGNvbnN0YW50KCkKQEAgLTE5OSw2ICsxOTksMTIgQEAKICAgICBfX2FnZW50X2NoZWNrX2FuZF9wcm9jZXNzKCRibG9ja2luZyB8fCAwKTsKIH0KIAorc3ViIHVwdGltZSB7CisgICAgbXkgJHNlbGYgPSBzaGlmdDsKKyAgICAkc2VsZi0+bWF5YmVfaW5pdF9saWIoKTsKKyAgICByZXR1cm4gX3VwdGltZSgpOworfQorCiBib290c3RyYXAgTmV0U05NUDo6YWdlbnQgJFZFUlNJT047CiAKICMgUHJlbG9hZGVkIG1ldGhvZHMgZ28gaGVyZS4KZGlmZiAtLWdpdCBhL3BlcmwvYWdlbnQvYWdlbnQueHMgYi9wZXJsL2FnZW50L2FnZW50LnhzCmluZGV4IDk5ZThlY2IuLmM3YjVkOWEgMTAwNjQ0Ci0tLSBhL3BlcmwvYWdlbnQvYWdlbnQueHMKKysrIGIvcGVybC9hZ2VudC9hZ2VudC54cwpAQCAtNjAsMTIgKzYwLDE0IEBACiBzdGF0aWMgaW50IGNvbnN0YW50X01PREVfU0VUX1IoZG91YmxlICp2YWx1ZSwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgaW50IGxlbikKIHsKICAgICBzd2l0Y2ggKGxlbiA+PSAxNiA/IG5hbWVbMTZdIDogLTEpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSAnMSc6CiAJVEVTVF9DT05TVEFOVCh2YWx1ZSwgbmFtZSwgTU9ERV9TRVRfUkVTRVJWRTEpOwogICAgICAgICBicmVhazsKICAgICBjYXNlICcyJzoKIAlURVNUX0NPTlNUQU5UKHZhbHVlLCBuYW1lLCBNT0RFX1NFVF9SRVNFUlZFMik7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KICAgICByZXR1cm4gRUlOVkFMOwogfQpAQCAtMTIxLDYgKzEyMyw3IEBACiAgICAgICAgIHJldHVybiBFSU5WQUw7CiAKICAgICBzd2l0Y2ggKGxlbiA+PSA5ID8gbmFtZVs5XSA6IC0xKSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgJ0EnOgogICAgICAgICBURVNUX0NPTlNUQU5UKHZhbHVlLCBuYW1lLCBNT0RFX1NFVF9BQ1RJT04pOwogICAgICAgICBicmVhazsKQEAgLTEzMywxMSArMTM2LDEyIEBACiAgICAgY2FzZSAnRic6CiAgICAgICAgIFRFU1RfQ09OU1RBTlQodmFsdWUsIG5hbWUsIE1PREVfU0VUX0ZSRUUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlICdSJzoKLSAgICAgICAgcmV0dXJuIGNvbnN0YW50X01PREVfU0VUX1IodmFsdWUsIG5hbWUsIGxlbik7CiAgICAgY2FzZSAnVSc6CiAgICAgICAgIFRFU1RfQ09OU1RBTlQodmFsdWUsIG5hbWUsIE1PREVfU0VUX1VORE8pOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICBjYXNlICdSJzoKKyAgICAgICAgcmV0dXJuIGNvbnN0YW50X01PREVfU0VUX1IodmFsdWUsIG5hbWUsIGxlbik7CiAgICAgfQogICAgIHJldHVybiBFSU5WQUw7CiB9CkBAIC0yMzQsNiArMjM4LDEzIEBACiAgICAgT1VUUFVUOgogCVJFVFZBTAogCitpbnQKK191cHRpbWUoKQorICAgIENPREU6CisgICAgICAgIFJFVFZBTCA9IG5ldHNubXBfZ2V0X2FnZW50X3VwdGltZSgpOworICAgIE9VVFBVVDoKKwlSRVRWQUwKKwogdm9pZAogaW5pdF9taWIoKQogICAgIENPREU6CmRpZmYgLS1naXQgYS9wZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSBiL3BlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCmluZGV4IDM5YjhhMTQuLmE4ODEyZWIgMTAwNjQ0Ci0tLSBhL3BlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCisrKyBiL3BlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCkBAIC05Niw3ICs5Niw3IEBACiAJCQkJICAgTkVUU05NUF9EU19BR0VOVF9NQVhfR0VUQlVMS1JFUEVBVFMKIAkJCQkgICBORVRTTk1QX0RTX0FHRU5UX01BWF9HRVRCVUxLUkVTUE9OU0VTCiApOwotJFZFUlNJT04gPSAnNS4wNjAyJzsKKyRWRVJTSU9OID0gJzUuMDcwMyc7CiAKIHN1YiBBVVRPTE9BRCB7CiAgICAgIyBUaGlzIEFVVE9MT0FEIGlzIHVzZWQgdG8gJ2F1dG9sb2FkJyBjb25zdGFudHMgZnJvbSB0aGUgY29uc3RhbnQoKQpkaWZmIC0tZ2l0IGEvcGVybC9hZ2VudC9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCBiL3BlcmwvYWdlbnQvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGYyNjMwZQotLS0gL2Rldi9udWxsCisrKyBiL3BlcmwvYWdlbnQvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgKQEAgLTAsMCArMSw2IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYWdlbnRfY2hlY2tfYW5kX3Byb2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzbm1wX2VuYWJsZV9zdGRlcnJsb2cpCisKZGlmZiAtLWdpdCBhL3BlcmwvYWdlbnQvdGVzdC5wbCBiL3BlcmwvYWdlbnQvdGVzdC5wbAppbmRleCBhN2FjOGY5Li44OGNiYTU2IDEwMDY0NAotLS0gYS9wZXJsL2FnZW50L3Rlc3QucGwKKysrIGIvcGVybC9hZ2VudC90ZXN0LnBsCkBAIC05LDcgKzksNyBAQAogQkVHSU4geyAkfCA9IDE7IAogICAgICAgICAkRU5WeydTTk1QQ09ORlBBVEgnfSA9ICdub3BhdGgnOwogICAgICAgICAkRU5WeydNSUJTJ30gPSAnJzsKLSAgICAgICAgcHJpbnQgIjEuLjVcbiI7CisgICAgICAgIHByaW50ICIxLi42XG4iOwogICAgICAgfQogRU5EIHtwcmludCAibm90IG9rIDFcbiIgdW5sZXNzICRsb2FkZWQ7fQogdXNlIE5ldFNOTVA6OmFnZW50ICgnOmFsbCcpOwpAQCAtNzYsNiArNzYsMTIgQEAKIHByaW50IGl0KCRyZWdpdGVtLCA0KTsKICNwcmludCBTVERFUlIgJHJlZ2l0ZW0sIjoiLHJlZigkcmVnaXRlbSksIlxuIjsKIHByaW50IGl0KHJlZigkcmVnaXRlbSkgZXEgIk5ldFNOTVA6OmFnZW50OjpuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uIiwgNSk7CisKK215ICR1cHRpbWUxID0gJGFnZW50LT51cHRpbWUoKTsKK215ICR1cHRpbWUyID0gJGFnZW50LT51cHRpbWUoNjY2KTsKK215ICR1cHRpbWUzID0gJGFnZW50LT51cHRpbWUoNTU1LCA0NDQpOworcHJpbnQgaXQoJHVwdGltZTEgPD0gJHVwdGltZTIgJiYgJHVwdGltZTIgPD0gJHVwdGltZTMsIDYpOworCiBleGl0OwogCiB3aGlsZSgxKSB7CmRpZmYgLS1naXQgYS9wZXJsL2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSBiL3BlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCmluZGV4IGNjYWU2MDYuLmI4OTg1MDEgMTAwNjQ0Ci0tLSBhL3BlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCisrKyBiL3BlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCkBAIC0yMDAsNyArMjAwLDcgQEAKIAkJCQkgICBORVRTTk1QX0RTX0xJQl9LU01fU0VSVklDRV9OQU1FCiAJCQkJICAgTkVUU05NUF9EU19MSUJfU0JTTV9MT0NBTF9QV0QKICk7Ci0kVkVSU0lPTiA9ICc1LjA2MDInOworJFZFUlNJT04gPSAnNS4wNzAzJzsKIAogc3ViIEFVVE9MT0FEIHsKICAgICAjIFRoaXMgQVVUT0xPQUQgaXMgdXNlZCB0byAnYXV0b2xvYWQnIGNvbnN0YW50cyBmcm9tIHRoZSBjb25zdGFudCgpCmRpZmYgLS1naXQgYS9wZXJsL2RlZmF1bHRfc3RvcmUvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmggYi9wZXJsL2RlZmF1bHRfc3RvcmUvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL3BlcmwvZGVmYXVsdF9zdG9yZS9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaApkaWZmIC0tZ2l0IGEvcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYyBiL3B5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmMKaW5kZXggOWY3MjZmNS4uOGI4ODA1ZCAxMDA2NDQKLS0tIGEvcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYworKysgYi9weXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jCkBAIC0xMzYwLDEyICsxMzYwLDEyIEBACiAKICAgaWYgKG91cl9pZGVudGl0eSAmJiBvdXJfaWRlbnRpdHlbMF0gIT0gJ1wwJykKICAgICAgIENPTlRBSU5FUl9JTlNFUlQoc2Vzc2lvbi50cmFuc3BvcnRfY29uZmlndXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfY3JlYXRlX2NvbmZpZygib3VyX2lkZW50aXR5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfY3JlYXRlX2NvbmZpZygibG9jYWxDZXJ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXJfaWRlbnRpdHkpKTsKIAogICBpZiAodGhlaXJfaWRlbnRpdHkgJiYgdGhlaXJfaWRlbnRpdHlbMF0gIT0gJ1wwJykKICAgICAgIENPTlRBSU5FUl9JTlNFUlQoc2Vzc2lvbi50cmFuc3BvcnRfY29uZmlndXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfY3JlYXRlX2NvbmZpZygidGhlaXJfaWRlbnRpdHkiLAorICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RyYW5zcG9ydF9jcmVhdGVfY29uZmlnKCJwZWVyQ2VydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlaXJfaWRlbnRpdHkpKTsKIAogICBpZiAodGhlaXJfaG9zdG5hbWUgJiYgdGhlaXJfaG9zdG5hbWVbMF0gIT0gJ1wwJykKZGlmZiAtLWdpdCBhL3B5dGhvbi9uZXRzbm1wL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oIGIvcHl0aG9uL25ldHNubXAvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg5NDE2YQotLS0gL2Rldi9udWxsCisrKyBiL3B5dGhvbi9uZXRzbm1wL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oCkBAIC0wLDAgKzEsNiBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHNucHJpbnRfdmFsdWUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShlbmFibGVfc3RkZXJybG9nKQorCmRpZmYgLS1naXQgYS9zbm1wbGliL01ha2VmaWxlLmRlcGVuZCBiL3NubXBsaWIvTWFrZWZpbGUuZGVwZW5kCmluZGV4IDIwZmM2NTMuLjA3ZDhhZjggMTAwNjQ0Ci0tLSBhL3NubXBsaWIvTWFrZWZpbGUuZGVwZW5kCisrKyBiL3NubXBsaWIvTWFrZWZpbGUuZGVwZW5kCkBAIC01LDggKzUsNyBAQAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCkBAIC0yMCwxMSArMTksOCBAQAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTMzLDYgKzI5LDcgQEAKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNTksNiArNTYsNyBAQAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCkBAIC03NywxMSArNzUsOCBAQAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTExNSw2ICsxMTAsNyBAQAogLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAogLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAogLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTM5LDExICsxMzUsOCBAQAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTE1Myw2ICsxNDYsNyBAQAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE4OCw2ICsxODIsNyBAQAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTIwOCwxMSArMjAzLDggQEAKIC4vY2xvc2VkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9jbG9zZWRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9jbG9zZWRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9jbG9zZWRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vY2xvc2VkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vY2xvc2VkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vY2xvc2VkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0yMjIsMTEgKzIxNCwxMSBAQAogLi9jbG9zZWRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vY2xvc2VkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vY2xvc2VkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9jbG9zZWRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vY211X2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKQEAgLTI0NywxMSArMjM5LDggQEAKIC4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0yNjEsNiArMjUwLDcgQEAKIC4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0yOTUsOCArMjg1LDEwIEBACiAuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaApAQCAtMzE1LDExICszMDcsOCBAQAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTM2Myw5ICszNTIsMTEgQEAKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX251bGwuaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTM4NSwxMSArMzc2LDggQEAKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC00MzMsOCArNDIxLDEwIEBACiAuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC00NTQsMTEgKzQ0NCw4IEBACiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtNTAyLDggKzQ4OSwxMCBAQAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTUyMywxMSArNTEyLDggQEAKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC01NzEsOSArNTU3LDExIEBACiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9udWxsLmgKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaApAQCAtNTkyLDExICs1ODAsOCBAQAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTY0MCw4ICs2MjUsMTAgQEAKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtNjYwLDExICs2NDcsOCBAQAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTcwMCw2ICs2ODQsNyBAQAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCkBAIC03MTgsMTEgKzcwMyw4IEBACiAuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtNzY2LDYgKzc0OCw3IEBACiAuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZpbGVfdXRpbHMuaAogLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kaXJfdXRpbHMuaApAQCAtNzg5LDExICs3NzIsOCBAQAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTgwMyw2ICs3ODMsNyBAQAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTgzNywxMCArODE4LDEyIEBACiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTg2MCwxMSArODQzLDggQEAKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC05MDgsNiArODg4LDcgQEAKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmlsZV91dGlscy5oCiAuL2dldG9wdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaApAQCAtOTMxLDExICs5MTIsOCBAQAogLi9nZXR0aW1lb2ZkYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9nZXR0aW1lb2ZkYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9nZXR0aW1lb2ZkYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2dldHRpbWVvZmRheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9nZXR0aW1lb2ZkYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9nZXR0aW1lb2ZkYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9nZXR0aW1lb2ZkYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2dldHRpbWVvZmRheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9nZXR0aW1lb2ZkYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9nZXR0aW1lb2ZkYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2dldHRpbWVvZmRheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2dldHRpbWVvZmRheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTk0NSw2ICs5MjMsNyBAQAogLi9nZXR0aW1lb2ZkYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2dldHRpbWVvZmRheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vZ2V0dGltZW9mZGF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZ2V0dGltZW9mZGF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZ2V0dGltZW9mZGF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vZ2V0dGltZW9mZGF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2dldHRpbWVvZmRheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtOTY4LDExICs5NDcsOCBAQAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTk4Miw2ICs5NTgsNyBAQAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaCBpbmV0X250b3AuaApAQCAtMTAwNCwxMSArOTgxLDggQEAKIC4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xMDE4LDYgKzk5Miw3IEBACiAuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oIGluZXRfcHRvbi5oCkBAIC0xMDM5LDExICsxMDE0LDggQEAKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xMDUyLDEyICsxMDI0LDE0IEBACiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAogLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCkBAIC0xMDc2LDExICsxMDUwLDggQEAKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xMTMyLDExICsxMTAzLDggQEAKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xMTQ2LDYgKzExMTQsNyBAQAogLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTE4MCw5ICsxMTQ5LDExIEBACiAuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtMTIwMSwxMSArMTE3Miw4IEBACiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTI1OCwxMSArMTIyNiw4IEBACiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTI3MSw2ICsxMjM2LDcgQEAKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMzAzLDkgKzEyNjksMTEgQEAKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWQ1LmgKIC4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKQEAgLTEzMjMsMTEgKzEyOTEsOCBAQAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTEzNjMsNiArMTMyOCw3IEBACiAuL210X3N1cHBvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vbXRfc3VwcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCkBAIC0xMzgxLDExICsxMzQ3LDggQEAKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xNDI5LDYgKzEzOTIsNyBAQAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9vcGVuZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL29wZW5kaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTQ0OSwxMSArMTQxMyw4IEBACiAuL29wZW5kaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9vcGVuZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vb3BlbmRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vb3BlbmRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9vcGVuZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vb3BlbmRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL29wZW5kaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL29wZW5kaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vb3BlbmRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL29wZW5kaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL29wZW5kaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9vcGVuZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTQ2MiwxMSArMTQyMywxMyBAQAogLi9vcGVuZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vb3BlbmRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vb3BlbmRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL29wZW5kaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9vcGVuZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vb3BlbmRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9vcGVuZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL29wZW5kaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKQEAgLTE0ODQsMTEgKzE0NDcsOCBAQAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTE1MjQsNiArMTQ4NCw3IEBACiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9wa2NzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtMTU0MiwxMSArMTUwMyw4IEBACiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTYwMCwxMSArMTU1OCw4IEBACiAuL3JlYWRkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9yZWFkZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vcmVhZGRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vcmVhZGRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9yZWFkZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vcmVhZGRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3JlYWRkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3JlYWRkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vcmVhZGRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3JlYWRkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3JlYWRkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9yZWFkZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTYxMywxMSArMTU2OCwxMyBAQAogLi9yZWFkZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vcmVhZGRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vcmVhZGRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3JlYWRkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9yZWFkZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vcmVhZGRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9yZWFkZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3JlYWRkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKQEAgLTE2MzUsMTEgKzE1OTIsOCBAQAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTE2OTEsMTEgKzE2NDUsOCBAQAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTE3MDUsNiArMTY1Niw3IEBACiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTczMSw2ICsxNjgzLDcgQEAKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCkBAIC0xNzQ5LDExICsxNzAyLDggQEAKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xODE0LDExICsxNzY0LDggQEAKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xODI4LDYgKzE3NzUsNyBAQAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTg2NywxMSArMTgxNSw4IEBACiAuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTg4MCwxMCArMTgyNSwxMiBAQAogLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtMTkwMiwxMSArMTg0OSw4IEBACiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTk0MywxMSArMTg4Nyw4IEBACiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTk1Nyw2ICsxODk4LDcgQEAKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xOTgzLDYgKzE5MjUsNyBAQAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtMjAwMSwxMSArMTk0NCw4IEBACiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjA0MiwxMSArMTk4Miw4IEBACiAuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjA1NSw2ICsxOTkyLDcgQEAKIC4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjA4OSw2ICsyMDI3LDcgQEAKIC4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBrc20uaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtMjEwNywxMSArMjA0Niw4IEBACiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjE2NiwxMSArMjEwMiw4IEBACiAuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjE4MCw2ICsyMTEzLDcgQEAKIC4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTIyMTQsNiArMjE0OCw3IEBACiAuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaApAQCAtMjIzNSwxMSArMjE3MCw4IEBACiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjI0OSw2ICsyMTgxLDcgQEAKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTIyODMsNiArMjIxNiw3IEBACiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTIzMDMsMTEgKzIyMzcsOCBAQAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTIzMTcsNiArMjI0OCw3IEBACiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTIzNDQsNyArMjI3Niw5IEBACiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCBzbm1wc21faW5pdC5oCisuL3NubXBfc2VjbW9kLmxvOiBzbm1wc21fc2h1dGRvd24uaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKQEAgLTIzNjUsMTEgKzIyOTksOCBAQAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTIzNzksNiArMjMxMCw3IEBACiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0yNDEzLDggKzIzNDUsMTAgQEAKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtMjQzMywxMSArMjM2Nyw4IEBACiAuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjQ1MCw2ICsyMzgxLDcgQEAKIC4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtMjQ2OCwxMSArMjQwMCw4IEBACiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjUwMiw2ICsyNDMxLDkgQEAKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKQEAgLTI1MDksOCArMjQ0MSwxMCBAQAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogdHJhbnNwb3J0cy9zbm1wX3RyYW5zcG9ydF9pbml0cy5oCiAuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCkBAIC0yNTI3LDExICsyNDYxLDggQEAKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0yNTczLDkgKzI1MDQsMTAgQEAKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCi0uL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKQEAgLTI1OTQsMTEgKzI1MjYsOCBAQAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTI2NTYsMTEgKzI1ODUsOCBAQAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTI2NjksNiArMjU5NSw3IEBACiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjcyNCwxMSArMjY1MSw4IEBACiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjczNyw2ICsyNjYxLDcgQEAKIC4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjc2MCwxMSArMjY4NSw4IEBACiAuL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zdHJsY3B5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc3RybGNweS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc3RybGNweS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zdHJsY3B5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc3RybGNweS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc3RybGNweS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zdHJsY3B5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjc3Myw2ICsyNjk1LDcgQEAKIC4vc3RybGNweS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zdHJsY3B5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc3RybGNweS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc3RybGNweS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjc5NiwxMSArMjcxOSw4IEBACiAuL3N0cnRva19yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc3RydG9rX3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc3RydG9rX3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc3RydG9rX3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3N0cnRva19yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3N0cnRva19yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3N0cnRva19yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjgxMCw2ICsyNzMwLDcgQEAKIC4vc3RydG9rX3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3N0cnRva19yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3N0cnRva19yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc3RydG9rX3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjgzNCwxMSArMjc1NSw4IEBACiAuL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjg0OCwxMSArMjc2NiwxMyBAQAogLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKQEAgLTI4NzAsMTEgKzI3OTAsOCBAQAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTI5MDcsNzcgKzI4MjQsOSBAQAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKLS4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaCBpbmV0X250b3AuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMjk5NywxMSArMjg0Niw4IEBACiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMzA0NSwxMCArMjg5MSwxMiBAQAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9maWxlX3V0aWxzLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RleHRfdXRpbHMuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKQEAgLTMwNjYsMTEgKzI5MTQsOCBAQAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTMwOTksNiArMjk0NCw3IEBACiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtMzExNywxMSArMjk2Myw4IEBACiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMzE1OCwxMSArMzAwMSw4IEBACiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMzE3MSw2ICszMDExLDcgQEAKIC4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMzIyMywxMSArMzA2NCw4IEBACiAuL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMzIzNyw2ICszMDc1LDcgQEAKIC4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zMjQ2LDYgKzMwODUsNyBAQAogLi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKIC4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCiAuL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKIC4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi90cmFuc3BvcnRzL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCkBAIC0zMjY1LDExICszMTA1LDggQEAKIC4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90cmFuc3BvcnRzL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0zMjc5LDYgKzMxMTYsNyBAQAogLi90cmFuc3BvcnRzL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zMzE1LDYgKzMxNTMsNyBAQAogLi90cmFuc3BvcnRzL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdHJhbnNwb3J0cy9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdHJhbnNwb3J0cy9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMzMzNSwxMSArMzE3NCw4IEBACiAuL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi90cmFuc3BvcnRzL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0zMzQ5LDYgKzMxODUsNyBAQAogLi90cmFuc3BvcnRzL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdHJhbnNwb3J0cy9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdHJhbnNwb3J0cy9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zMzk0LDExICszMjMxLDggQEAKIC4vdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0zNDA4LDQ5ICszMjQyLDEzIEBACiAuL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiBpbmV0X250b3AuaCBpbmV0X3B0b24uaAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKQEAgLTM0NzEsMTEgKzMyNjksOCBAQAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTM0ODQsNiArMzI3OSw3IEBACiAuL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zNDkzLDYgKzMyODksNyBAQAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vdHJhbnNwb3J0cy9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAogLi90cmFuc3BvcnRzL3NubXBTb2NrZXRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi90cmFuc3BvcnRzL3NubXBTb2NrZXRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKQEAgLTM1MTIsMTEgKzMzMDksOCBAQAogLi90cmFuc3BvcnRzL3NubXBTb2NrZXRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdHJhbnNwb3J0cy9zbm1wU29ja2V0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wU29ja2V0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBTb2NrZXRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBTb2NrZXRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBTb2NrZXRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBTb2NrZXRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wU29ja2V0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTM1MjYsNiArMzMyMCw3IEBACiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90cmFuc3BvcnRzL3NubXBTb2NrZXRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdHJhbnNwb3J0cy9zbm1wU29ja2V0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdHJhbnNwb3J0cy9zbm1wU29ja2V0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMzUzNSw2ICszMzMwLDcgQEAKIC4vdHJhbnNwb3J0cy9zbm1wU29ja2V0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wU1NIRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vdHJhbnNwb3J0cy9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKQEAgLTM1NTQsMTEgKzMzNTAsOCBAQAogLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTM2MDAsMTEgKzMzOTMsOCBAQAogLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTM2MTQsNiArMzQwNCw3IEBACiAuL3RyYW5zcG9ydHMvc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdHJhbnNwb3J0cy9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdHJhbnNwb3J0cy9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zNjM3LDExICszNDI4LDggQEAKIC4vdHJhbnNwb3J0cy9zbm1wVENQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBUQ1BCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBUQ1BCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFRDUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBUQ1BCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wVENQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVENQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90cmFuc3BvcnRzL3NubXBUQ1BCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVENQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVENQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0zNjUxLDYgKzM0MzksNyBAQAogLi90cmFuc3BvcnRzL3NubXBUQ1BCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90cmFuc3BvcnRzL3NubXBUQ1BCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi90cmFuc3BvcnRzL3NubXBUQ1BCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdHJhbnNwb3J0cy9zbm1wVENQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi90cmFuc3BvcnRzL3NubXBUQ1BCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTM2NzQsMTEgKzM0NjMsOCBAQAogLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTM2ODgsMTMgKzM0NzQsMTYgQEAKIC4vdHJhbnNwb3J0cy9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vdHJhbnNwb3J0cy9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFNvY2tldEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQQmFzZURvbWFpbi5oCisuL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKIC4vdHJhbnNwb3J0cy9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRMU0Jhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCkBAIC0zNzE1LDExICszNTA0LDggQEAKIC4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0zNzM0LDEzICszNTIwLDE5IEBACiAuL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAogLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAogLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2VydF91dGlsLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfb3BlbnNzbC5oCi0uL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCiAuL3RyYW5zcG9ydHMvc25tcFRMU1RDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVExTVENQRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaApAQCAtMzc2MSw5ICszNTUzLDYgQEAKIC4vdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaApAQCAtMzgxMSwxMSArMzYwMCw4IEBACiAuL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMzgyNSwxMCArMzYxMSwxNCBAQAogLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBTb2NrZXRCYXNlRG9tYWluLmgKKy4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAogLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKQEAgLTM4NTIsMTEgKzM2NDIsOCBAQAogLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTM4NjYsOSArMzY1MywxMyBAQAogLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKKy4vdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zODk4LDExICszNjg5LDggQEAKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0zOTEyLDkgKzM3MDAsMTIgQEAKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCisuL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zOTM5LDExICszNzMwLDggQEAKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKQEAgLTM5NTIsMTAgKzM3NDAsMTMgQEAKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCkBAIC0zOTc0LDExICszNzY1LDggQEAKIC4vdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0zOTk5LDMgKzM3ODcsNCBAQAogLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCiAuL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wU29ja2V0QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaApkaWZmIC0tZ2l0IGEvc25tcGxpYi9NYWtlZmlsZS5pbiBiL3NubXBsaWIvTWFrZWZpbGUuaW4KaW5kZXggYzFhMDg2ZC4uNTA2YjhkNCAxMDA2NDQKLS0tIGEvc25tcGxpYi9NYWtlZmlsZS5pbgorKysgYi9zbm1wbGliL01ha2VmaWxlLmluCkBAIC0xMyw2ICsxMyw3IEBACiAjCiAKIHRvcF9idWlsZGRpcj0uLgorbXlzdWJkaXI9c25tcGxpYgogCiAjIHVzZSBHTlUgdnBhdGgsIGlmIGF2YWlsYWJsZSwgdG8gb25seSBzZXQgYSBwYXRoIGZvciBzb3VyY2UgYW5kIGhlYWRlcnMKICMgVlBBVEggd2lsbCBwaWNrIHVwIG9iamVjdHMgdG9vLCB3aGljaCBpcyBiYWQgaWYgeW91IGFyZSBzaGFyaW5nIGEKQEAgLTg0LDcgKzg1LDYgQEAKIAl0b29scy5oIFwKIAl0cmFuc2Zvcm1fb2lkcy5oIFwKIAl0eXBlcy5oIFwKLSAgICAgICAgY211X2NvbXBhdC5oIFwKICAgICAgICAgZ2V0b3B0LmggXAogICAgICAgICBsY2RfdGltZS5oIFwKICAgICAgICAgbXRfc3VwcG9ydC5oIFwKQEAgLTEzOCw2MSArMTM4LDkxIEBACiAKICMKICMgVGhpbmdzIHRvIGJ1aWxkCisjICAgLSBmb3IgdGhlIGZlYXR1cmUgY2hlY2tpbmcgLyByZW1vdmFsIC8gbWluaW1pYWxpc3Qgc3VwcG9ydCB0aGVzZQorIyAgICAgbXVzdCBiZSBsaXN0ZWQgc3VjaCB0aGF0IGNvZGUgcmVxdWlyaW5nIGEgZmVhdHVyZSBtdXN0IGJlIGxpc3RlZAorIyAgICAgKmJlZm9yZSogdGhlIGNvZGUgaW1wbGVtZW50aW5nIHRoZSBmZWF0dXJlLgogIwogQ1NSQ1M9CXNubXBfY2xpZW50LmMgbWliLmMgcGFyc2UuYyBzbm1wX2FwaS5jIHNubXAuYyAJCVwKLQlsYXJnZV9mZF9zZXQuYyBjZXJ0X3V0aWwuYwkJCQlcCiAJc25tcF9hdXRoLmMgYXNuMS5jIG1kNS5jIHNubXBfcGFyc2VfYXJncy5jCQlcCiAJc3lzdGVtLmMgdmFjbS5jIGludDY0LmMgcmVhZF9jb25maWcuYyBwa2NzLmMJCVwKIAlzbm1wX2RlYnVnLmMgdG9vbHMuYyAgc25tcF9sb2dnaW5nLmMgdGV4dF91dGlscy5jCVwKLQlzbm1wdjMuYyBsY2RfdGltZS5jIGtleXRvb2xzLmMgZmlsZV91dGlscy5jIGRpcl91dGlscy5jIFwKKwlsYXJnZV9mZF9zZXQuYyBjZXJ0X3V0aWwuYyBzbm1wX29wZW5zc2wuYyAJCVwKKwlzbm1wdjMuYyBsY2RfdGltZS5jIGtleXRvb2xzLmMgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIAlzY2FwaS5jIGNhbGxiYWNrLmMgZGVmYXVsdF9zdG9yZS5jIHNubXBfYWxhcm0uYwkJXAogCWRhdGFfbGlzdC5jIG9pZF9zdGFzaC5jIGZkX2V2ZW50X21hbmFnZXIuYyAJCVwKKwljaGVja192YXJiaW5kLmMgCQkJCQlcCiAJbXRfc3VwcG9ydC5jIHNubXBfZW51bS5jIHNubXAtdGMuYyBzbm1wX3NlcnZpY2UuYwlcCiAJc25wcmludGYuYwkJCQkJCVwKIAlzbm1wX3RyYW5zcG9ydC5jIEB0cmFuc3BvcnRfc3JjX2xpc3RACQkJXAogCXNubXBfc2VjbW9kLmMgQHNlY3VyaXR5X3NyY19saXN0QCBzbm1wX3ZlcnNpb24uYyAgICAgICAgXAotCWNoZWNrX3ZhcmJpbmQuYyBjb250YWluZXIuYyBjb250YWluZXJfYmluYXJ5X2FycmF5LmMJXAogCWNvbnRhaW5lcl9udWxsLmMgY29udGFpbmVyX2xpc3Rfc3NsbC5jIGNvbnRhaW5lcl9pdGVyYXRvci5jIFwKLQljbXVfY29tcGF0LmMgdWNkX2NvbXBhdC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLQlzbm1wX29wZW5zc2wuYyBAb3RoZXJfc3JjX2xpc3RAIEBjcnlwdG9fZmlsZXNfY0AKKwl1Y2RfY29tcGF0LmMJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCUBvdGhlcl9zcmNfbGlzdEAgQGNyeXB0b19maWxlc19jQCAgICAgICAgCQlcCisJZGlyX3V0aWxzLmMgZmlsZV91dGlscy5jIAkgICAgICAgICAgICAgICAgICAgICAgICBcCisJY29udGFpbmVyLmMgY29udGFpbmVyX2JpbmFyeV9hcnJheS5jCQogCiBPQkpTPQlzbm1wX2NsaWVudC5vIG1pYi5vIHBhcnNlLm8gc25tcF9hcGkubyBzbm1wLm8gCQlcCi0JbGFyZ2VfZmRfc2V0Lm8gY2VydF91dGlsLm8JCQkJXAogCXNubXBfYXV0aC5vIGFzbjEubyBtZDUubyBzbm1wX3BhcnNlX2FyZ3MubwkJXAogCXN5c3RlbS5vIHZhY20ubyBpbnQ2NC5vIHJlYWRfY29uZmlnLm8gcGtjcy5vIAkJXAogCXNubXBfZGVidWcubyB0b29scy5vICBzbm1wX2xvZ2dpbmcubyB0ZXh0X3V0aWxzLm8JXAotCXNubXB2My5vIGxjZF90aW1lLm8ga2V5dG9vbHMubyBmaWxlX3V0aWxzLm8gZGlyX3V0aWxzLm8gXAorCWxhcmdlX2ZkX3NldC5vIGNlcnRfdXRpbC5vIHNubXBfb3BlbnNzbC5vIAkJXAorCXNubXB2My5vIGxjZF90aW1lLm8ga2V5dG9vbHMubyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogCXNjYXBpLm8gY2FsbGJhY2subyBkZWZhdWx0X3N0b3JlLm8gc25tcF9hbGFybS5vCQlcCiAJZGF0YV9saXN0Lm8gb2lkX3N0YXNoLm8gZmRfZXZlbnRfbWFuYWdlci5vCQlcCisJY2hlY2tfdmFyYmluZC5vIAkJCQkJXAogCW10X3N1cHBvcnQubyBzbm1wX2VudW0ubyBzbm1wLXRjLm8gc25tcF9zZXJ2aWNlLm8JXAogCXNucHJpbnRmLm8JCQkJCQlcCiAJc25tcF90cmFuc3BvcnQubyBAdHJhbnNwb3J0X29ial9saXN0QCAgICAgICAgICAgICAgICAgICBcCiAJc25tcF9zZWNtb2QubyBAc2VjdXJpdHlfb2JqX2xpc3RAIHNubXBfdmVyc2lvbi5vICAgICAgICBcCi0JY2hlY2tfdmFyYmluZC5vIGNvbnRhaW5lci5vIGNvbnRhaW5lcl9iaW5hcnlfYXJyYXkubwlcCiAJY29udGFpbmVyX251bGwubyBjb250YWluZXJfbGlzdF9zc2xsLm8gY29udGFpbmVyX2l0ZXJhdG9yLm8gXAotCWNtdV9jb21wYXQubyB1Y2RfY29tcGF0Lm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzbm1wX29wZW5zc2wubyBAY3J5cHRvX2ZpbGVzX29AIEBvdGhlcl9vYmpzX2xpc3RAIEBMSUJPQkpTQAorCXVjZF9jb21wYXQubyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCVwKKyAgICAgICAgQGNyeXB0b19maWxlc19vQCBAb3RoZXJfb2Jqc19saXN0QCBATElCT0JKU0AgCQlcCisJZGlyX3V0aWxzLm8gZmlsZV91dGlscy5vIAkgICAgICAgICAgICAgICAgICAgICAgICBcCisJY29udGFpbmVyLm8gY29udGFpbmVyX2JpbmFyeV9hcnJheS5vCQogCiBMT0JKUz0Jc25tcF9jbGllbnQubG8gbWliLmxvIHBhcnNlLmxvIHNubXBfYXBpLmxvIHNubXAubG8gCVwKLQlsYXJnZV9mZF9zZXQubG8gY2VydF91dGlsLmxvCQkJCVwKIAlzbm1wX2F1dGgubG8gYXNuMS5sbyBtZDUubG8gc25tcF9wYXJzZV9hcmdzLmxvCQlcCiAJc3lzdGVtLmxvIHZhY20ubG8gaW50NjQubG8gcmVhZF9jb25maWcubG8gcGtjcy5sbwlcCiAJc25tcF9kZWJ1Zy5sbyB0b29scy5sbyAgc25tcF9sb2dnaW5nLmxvCSB0ZXh0X3V0aWxzLmxvCVwKLQlzbm1wdjMubG8gbGNkX3RpbWUubG8ga2V5dG9vbHMubG8gZmlsZV91dGlscy5sbyBkaXJfdXRpbHMubG8gXAotCXNjYXBpLmxvIGNhbGxiYWNrLmxvIGRlZmF1bHRfc3RvcmUubG8gc25tcF9hbGFybS5sbwkJXAorCWxhcmdlX2ZkX3NldC5sbyBjZXJ0X3V0aWwubG8gc25tcF9vcGVuc3NsLmxvIAkJXAorCXNubXB2My5sbyBsY2RfdGltZS5sbyBrZXl0b29scy5sbyAgICAgICAgICAgICAgICAgICAgICAgXAorCXNjYXBpLmxvIGNhbGxiYWNrLmxvIGRlZmF1bHRfc3RvcmUubG8gc25tcF9hbGFybS5sbwlcCiAJZGF0YV9saXN0LmxvIG9pZF9zdGFzaC5sbyBmZF9ldmVudF9tYW5hZ2VyLmxvCQlcCisJY2hlY2tfdmFyYmluZC5sbyAJCQkJCVwKIAltdF9zdXBwb3J0LmxvIHNubXBfZW51bS5sbyBzbm1wLXRjLmxvIHNubXBfc2VydmljZS5sbwlcCiAJc25wcmludGYubG8JCQkJCQlcCiAJc25tcF90cmFuc3BvcnQubG8gQHRyYW5zcG9ydF9sb2JqX2xpc3RAICAgICAgICAgICAgICAgICBcCiAJc25tcF9zZWNtb2QubG8gQHNlY3VyaXR5X2xvYmpfbGlzdEAgc25tcF92ZXJzaW9uLmxvICAgICBcCi0JY2hlY2tfdmFyYmluZC5sbyBjb250YWluZXIubG8gY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbwlcCi0JY29udGFpbmVyX251bGwubG8gY29udGFpbmVyX2xpc3Rfc3NsbC5sbyBjb250YWluZXJfaXRlcmF0b3IubG8gXAotCWNtdV9jb21wYXQubG8gdWNkX2NvbXBhdC5sbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzbm1wX29wZW5zc2wubG8gQGNyeXB0b19maWxlc19sb0AgQG90aGVyX2xvYmpzX2xpc3RAIEBMVExJQk9CSlNACisJY29udGFpbmVyLmxvIGNvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG8JCQlcCisJdWNkX2NvbXBhdC5sbwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEBjcnlwdG9fZmlsZXNfbG9AIEBvdGhlcl9sb2Jqc19saXN0QCBATFRMSUJPQkpTQCAgICAgICAgXAorCWRpcl91dGlscy5sbyBmaWxlX3V0aWxzLmxvIAkgICAgICAgICAgICAgICAgICAgICAgICBcCisJY29udGFpbmVyX251bGwubG8gY29udGFpbmVyX2xpc3Rfc3NsbC5sbyBjb250YWluZXJfaXRlcmF0b3IubG8gCisKK0ZUT0JKUz0Jc25tcF9jbGllbnQuZnQgbWliLmZ0IHBhcnNlLmZ0IHNubXBfYXBpLmZ0IHNubXAuZnQgCVwKKwlzbm1wX2F1dGguZnQgYXNuMS5mdCBtZDUuZnQgc25tcF9wYXJzZV9hcmdzLmZ0CQlcCisJc3lzdGVtLmZ0IHZhY20uZnQgaW50NjQuZnQgcmVhZF9jb25maWcuZnQgcGtjcy5mdAlcCisJc25tcF9kZWJ1Zy5mdCB0b29scy5mdCAgc25tcF9sb2dnaW5nLmZ0CSB0ZXh0X3V0aWxzLmZ0CVwKKwlzbm1wdjMuZnQgbGNkX3RpbWUuZnQga2V5dG9vbHMuZnQgICAgICAgICAgICAgICAgICAgICAgIFwKKwlzY2FwaS5mdCBjYWxsYmFjay5mdCBkZWZhdWx0X3N0b3JlLmZ0IHNubXBfYWxhcm0uZnQJXAorCWRhdGFfbGlzdC5mdCBvaWRfc3Rhc2guZnQgZmRfZXZlbnRfbWFuYWdlci5mdAkJXAorCWNoZWNrX3ZhcmJpbmQuZnQgCQkJCQlcCisJbXRfc3VwcG9ydC5mdCBzbm1wX2VudW0uZnQgc25tcC10Yy5mdCBzbm1wX3NlcnZpY2UuZnQJXAorCXNucHJpbnRmLmZ0CQkJCQkJXAorCXNubXBfdHJhbnNwb3J0LmZ0IEB0cmFuc3BvcnRfZnRvYmpfbGlzdEAgICAgICAgICAgICAgICAgXAorCXNubXBfc2VjbW9kLmZ0IEBzZWN1cml0eV9mdG9ial9saXN0QCBzbm1wX3ZlcnNpb24uZnQgICAgXAorCWNvbnRhaW5lci5mdCBjb250YWluZXJfYmluYXJ5X2FycmF5LmZ0CVwKKwl1Y2RfY29tcGF0LmZ0CQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAlcCisgICAgICAgIEBvdGhlcl9mdG9ianNfbGlzdEAgICAgICAgICAgICAgICAgICAgICAJCVwKKwlsYXJnZV9mZF9zZXQuZnQgY2VydF91dGlsLmZ0IHNubXBfb3BlbnNzbC5mdCAJCVwKKwlkaXJfdXRpbHMuZnQgZmlsZV91dGlscy5mdCAJICAgICAgICAgICAgICAgICAgICAgICAgXAorCWNvbnRhaW5lcl9udWxsLmZ0IGNvbnRhaW5lcl9saXN0X3NzbGwuZnQgY29udGFpbmVyX2l0ZXJhdG9yLmZ0CiAKICMganVzdCBpbiBjYXNlIHNvbWVvbmUgd2FudHMgdG8gcmVtb3ZlIGxpYnRvb2wsIGNoYW5nZSB0aGlzIHRvIE9CSlMuCiBUT0JKUz0kKExPQkpTKQogCitGRUFUVVJFRklMRSAgICAgPSAkKHRvcF9idWlsZGRpcikvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZlYXR1cmVzLmgKKwogIyAKIENQUEZMQUdTID0gJChUT1BfSU5DTFVERVMpIC1JLiAJJChTTk1QTElCX0lOQ0xVREVTKSBAQ1BQRkxBR1NACiAKQEAgLTIxMyw3ICsyNDMsMyBAQAogcGFyc2U6ICBtaWIubyBwYXJzZS5jCiAJJChDQykgJChDRkxBR1MpIC1EVEVTVCBwYXJzZS5jIC1vICRAIFwKIAkJYCQodG9wX3NyY2RpcikvbmV0LXNubXAtY29uZmlnIC0tbGlic2AKLQotdGVzdF9iaW5hcnlfYXJyYXk6IHRlc3RfYmluYXJ5X2FycmF5LmMKLQkkKENDKSAkKENGTEFHUykgdGVzdF9iaW5hcnlfYXJyYXkuYyAtbyAkQCBcCi0JCWAkKHRvcF9zcmNkaXIpL25ldC1zbm1wLWNvbmZpZyAtLWxpYnNgCmRpZmYgLS1naXQgYS9zbm1wbGliL2NhbGxiYWNrLmMgYi9zbm1wbGliL2NhbGxiYWNrLmMKaW5kZXggZmVhMGYyNS4uZGZlNTM3YSAxMDA2NDQKLS0tIGEvc25tcGxpYi9jYWxsYmFjay5jCisrKyBiL3NubXBsaWIvY2FsbGJhY2suYwpAQCAtMTcsNiArMTcsNyBAQAogICogIEB7CiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaWYgSEFWRV9TVERMSUJfSApAQCAtNTIsNiArNTMsMTEgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2FsbGJhY2tzX2FsbCwgbGlibmV0c25tcCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNhbGxiYWNrX2NvdW50LCBjYWxsYmFja3NfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNhbGxiYWNrX2xpc3QsIGNhbGxiYWNrc19hbGwpCisKIC8qCiAgKiB0aGUgaW5saW5lIGNhbGxiYWNrIG1ldGhvZHMgdXNlIG1ham9yL21pbm9yIHRvIGluZGV4IGludG8gYXJyYXlzLgogICogYWxsIHVzZXJzIGluIHRoaXMgZnVuY3Rpb24gZG8gcmFuZ2UgY2hlY2tpbmcgYmVmb3JlIGNhbGxpbmcgdGhlc2UKQEAgLTIxNCw3ICsyMjAsOSBAQAogICogQHBhcmFtIG5ld19jYWxsYmFjayBpcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyByZWdpc3RlcmVkLgogICoKICAqIEBwYXJhbSBhcmcgd2hlbiBub3QgTlVMTCBpcyBhIHZvaWQgcG9pbnRlciB1c2VkIHdoZW5ldmVyIG5ld19jYWxsYmFjayAKLSAqCWZ1bmN0aW9uIGlzIGV4ZXJjaXNlZC4KKyAqCWZ1bmN0aW9uIGlzIGV4ZXJjaXNlZC4gT3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIHRvIHRoZSB0d29kaW1lbnNpb25hbAorICogICAgICB0aGVjYWxsYmFja3NbXVtdIGFycmF5LiBUaGUgZnVuY3Rpb24gY2xlYXJfY2FsbGJhY2soKSB3aWxsIGRlYWxsb2NhdGUKKyAqICAgICAgdGhlIG1lbW9yeSBwb2ludGVkIGF0IGJ5IGNhbGxpbmcgZnJlZSgpLgogICoKICAqIEByZXR1cm4gCiAgKglSZXR1cm5zIFNOTVBFUlJfR0VORVJSIGlmIG1ham9yIGlzID49IE1BWF9DQUxMQkFDS19JRFMgb3IgbWlub3IgaXMgPj0KQEAgLTIzNCw2ICsyNDIsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9DQUxMQkFDS19ERUZBVUxUX1BSSU9SSVRZKTsKIH0KIAorLyoqCisgKiBSZWdpc3RlciBhIGNhbGxiYWNrIGZ1bmN0aW9uLgorICoKKyAqIEBwYXJhbSBtYWpvciAgICAgICAgTWFqb3IgY2FsbGJhY2sgZXZlbnQgdHlwZS4KKyAqIEBwYXJhbSBtaW5vciAgICAgICAgTWlub3IgY2FsbGJhY2sgZXZlbnQgdHlwZS4KKyAqIEBwYXJhbSBuZXdfY2FsbGJhY2sgQ2FsbGJhY2sgZnVuY3Rpb24gYmVpbmcgcmVnaXN0ZXJlZC4KKyAqIEBwYXJhbSBhcmcgICAgICAgICAgQXJndW1lbnQgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byB0aGUgY2FsbGJhY2sgZnVuY3Rpb24uCisgKiBAcGFyYW0gcHJpb3JpdHkgICAgIEhhbmRsZXIgaW52b2NhdGlvbiBwcmlvcml0eS4gV2hlbiBtdWx0aXBsZSBoYW5kbGVycyBoYXZlCisgKiAgIGJlZW4gcmVnaXN0ZXJlZCBmb3IgdGhlIHNhbWUgKG1ham9yLCBtaW5vcikgY2FsbGJhY2sgZXZlbnQgdHlwZSwgaGFuZGxlcnMKKyAqICAgd2l0aCB0aGUgbnVtZXJpY2FsbHkgbG93ZXN0IHByaW9yaXR5IHdpbGwgYmUgaW52b2tlZCBmaXJzdC4gSGFuZGxlcnMgd2l0aAorICogICBpZGVudGljYWwgcHJpb3JpdHkgYXJlIGludm9rZWQgaW4gdGhlIG9yZGVyIHRoZXkgaGF2ZSBiZWVuIHJlZ2lzdGVyZWQuCisgKgorICogQHNlZSBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrCisgKi8KIGludAogbmV0c25tcF9yZWdpc3Rlcl9jYWxsYmFjayhpbnQgbWFqb3IsIGludCBtaW5vciwgU05NUENhbGxiYWNrICogbmV3X2NhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcsIGludCBwcmlvcml0eSkKQEAgLTM1MSw2ICszNzMsNyBAQAogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DQUxMQkFDS19DT1VOVAogaW50CiBzbm1wX2NvdW50X2NhbGxiYWNrcyhpbnQgbWFqb3IsIGludCBtaW5vcikKIHsKQEAgLTM3MCw2ICszOTMsNyBAQAogCiAgICAgcmV0dXJuIGNvdW50OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0FMTEJBQ0tfQ09VTlQgKi8KIAogaW50CiBzbm1wX2NhbGxiYWNrX2F2YWlsYWJsZShpbnQgbWFqb3IsIGludCBtaW5vcikKQEAgLTU0OCw2ICs1NzIsNyBAQAogICAgIH0KIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NBTExCQUNLX0xJU1QKIHN0cnVjdCBzbm1wX2dlbl9jYWxsYmFjayAqCiBzbm1wX2NhbGxiYWNrX2xpc3QoaW50IG1ham9yLCBpbnQgbWlub3IpCiB7CkBAIC01NTYsNCArNTgxLDUgQEAKIAogICAgIHJldHVybiAodGhlY2FsbGJhY2tzW21ham9yXVttaW5vcl0pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0FMTEJBQ0tfTElTVCAqLwogLyoqICBAfSAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9jZXJ0X3V0aWwuYyBiL3NubXBsaWIvY2VydF91dGlsLmMKaW5kZXggNmIyY2IzMC4uMjQ2YTZjOSAxMDA2NDQKLS0tIGEvc25tcGxpYi9jZXJ0X3V0aWwuYworKysgYi9zbm1wbGliL2NlcnRfdXRpbC5jCkBAIC0xLDEzICsxLDQwIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2lmIGRlZmluZWQoTkVUU05NUF9VU0VfT1BFTlNTTCkgJiYgZGVmaW5lZChIQVZFX0xJQlNTTCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjZXJ0X3V0aWxfYWxsLCBsaWJuZXRzbm1wKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNlcnRfdXRpbCwgY2VydF91dGlsX2FsbCkKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9DRVJUX1VUSUwKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNvbnRhaW5lcl9kaXJlY3RvcnkpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjb250YWluZXJfZmlmbykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNvbnRhaW5lcl9kdXApCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjb250YWluZXJfZnJlZV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzdWJjb250YWluZXJfZmluZCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNlcnRfbWFwX3JlbW92ZSwgbmV0c25tcF91bnVzZWQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2VydF9tYXBfZmluZCwgbmV0c25tcF91bnVzZWQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGxzdG1wYXJhbXNfZXh0ZXJuYWwsIGNlcnRfdXRpbF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGxzdG1wYXJhbXNfY29udGFpbmVyLCB0bHN0bXBhcmFtc19leHRlcm5hbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0bHN0bXBhcmFtc19yZW1vdmUsIHRsc3RtcGFyYW1zX2V4dGVybmFsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRsc3RtcGFyYW1zX2ZpbmQsIHRsc3RtcGFyYW1zX2V4dGVybmFsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRsc3RtQWRkcl9yZW1vdmUsIG5ldHNubXBfdW51c2VkKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRsc3RtYWRkcl9leHRlcm5hbCwgY2VydF91dGlsX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0bHN0bWFkZHJfY29udGFpbmVyLCB0bHN0bWFkZHJfZXh0ZXJuYWwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGxzdG1BZGRyX2dldF9zZXJ2ZXJJZCwgdGxzdG1hZGRyX2V4dGVybmFsKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2VydF9maW5nZXJwcmludHMsIGNlcnRfdXRpbF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGxzX2ZpbmdlcnByaW50X2J1aWxkLCBjZXJ0X3V0aWxfYWxsKQorCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfQ0VSVF9VVElMICovCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DRVJUX1VUSUwKKworI2luY2x1ZGUgPGN0eXBlLmg+CiAKICNpZiBIQVZFX1NURExJQl9ICiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPGN0eXBlLmg+Ci0KICNpZiBIQVZFX1NUUklOR19ICiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjZWxzZQpAQCAtMjI4LDYgKzI1NSwxMSBAQAogbmV0c25tcF9jZXJ0c19zaHV0ZG93bih2b2lkKQogewogICAgIERFQlVHTVNHVCgoImNlcnQ6dXRpbDpzaHV0ZG93biIsInNodXRkb3duXG4iKSk7CisgICAgaWYgKF9tYXBzKSB7CisgICAgICAgIENPTlRBSU5FUl9GUkVFX0FMTChfbWFwcywgTlVMTCk7CisgICAgICAgIENPTlRBSU5FUl9GUkVFKF9tYXBzKTsKKyAgICAgICAgX21hcHMgPSBOVUxMOworICAgIH0KICAgICBpZiAoTlVMTCAhPSBfY2VydHMpIHsKICAgICAgICAgQ09OVEFJTkVSX0ZSRUVfQUxMKF9jZXJ0cywgTlVMTCk7CiAgICAgICAgIENPTlRBSU5FUl9GUkVFKF9jZXJ0cyk7CkBAIC0xMTM3LDcgKzExNjksNyBAQAogc3RhdGljIHZvaWQKIF9maW5kX3BhcnRuZXIobmV0c25tcF9jZXJ0ICpjZXJ0LCBuZXRzbm1wX2tleSAqa2V5KQogewotICAgIG5ldHNubXBfdm9pZF9hcnJheSAqbWF0Y2hpbmc7CisgICAgbmV0c25tcF92b2lkX2FycmF5ICptYXRjaGluZyA9IE5VTEw7CiAgICAgY2hhciAgICAgICAgICAgICAgICBmaWxlbmFtZVtOQU1FX01BWF0sICpwb3M7CiAKICAgICBpZiAoKGNlcnQgJiYga2V5KSB8fCAoIWNlcnQgJiYgISBrZXkpKSB7CkBAIC0xNjExLDYgKzE2NDMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VfZmluZF9sYWJlbF9pbl9zbGlzdCgiY2VydF9oYXNoX2FsZyIsIGMtPmhhc2hfdHlwZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLT5oYXNoX3R5cGUsIGMtPmZpbmdlcnByaW50KSk7CiAgICAgICAgIH0KKyAgICAgICAgLyogbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2VydF91dGlsc19kdW1wX25hbWVzKSAqLwogICAgICAgICAvKiBuZXRzbm1wX29wZW5zc2xfY2VydF9kdW1wX25hbWVzKGMtPm9jZXJ0KTsgKi8KICAgICAgICAgbmV0c25tcF9vcGVuc3NsX2NlcnRfZHVtcF9leHRlbnNpb25zKGMtPm9jZXJ0KTsKICAgICB9CkBAIC0xNzAxLDcgKzE3MzQsNiBAQAogbmV0c25tcF9jZXJ0X2ZpbmQoaW50IHdoYXQsIGludCB3aGVyZSwgdm9pZCAqaGludCkKIHsKICAgICBuZXRzbm1wX2NlcnQgKnJlc3VsdCA9IE5VTEw7Ci0gICAgaW50ICAgICAgICAgICB0bXA7CiAgICAgY2hhciAgICAgICAgICpmcCwgKmhpbnRfc3RyOwogCiAgICAgREVCVUdNU0dUKCgiY2VydDpmaW5kOnBhcmFtcyIsICJsb29raW5nIGZvciAlcyglZCkgaW4gJXMoMHgleCksIGhpbnQgJWx1XG4iLApAQCAtMTcxMSwxMyArMTc0MywyMCBAQAogICAgICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAod2hhdCkgewogICAgICAgICAgICAgY2FzZSBOU19DRVJUX0lERU5USVRZOiAvKiB3YW50IG15IElEICovCi0gICAgICAgICAgICAgICAgdG1wID0gKHB0cmRpZmZfdCloaW50OwotICAgICAgICAgICAgICAgIERFQlVHTVNHVCgoImNlcnQ6ZmluZDpwYXJhbXMiLCAiIGhpbnQgPSAlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA/ICJzZXJ2ZXIiIDogImNsaWVudCIpKTsKICAgICAgICAgICAgICAgICBmcCA9CiAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPyBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9QVUIgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfWDUwOV9DTElFTlRfUFVCICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9UTFNfTE9DQUxfQ0VSVCk7CisgICAgICAgICAgICAgICAgLyoqIHRlbXAgYmFja3dhcmRzIGNvbXBhYmlsaXR5OyByZW1vdmUgaW4gNS43ICovCisgICAgICAgICAgICAgICAgaWYgKCFmcCkgeworICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgIHRtcDsKKyAgICAgICAgICAgICAgICAgICAgdG1wID0gKHB0cmRpZmZfdCloaW50OworICAgICAgICAgICAgICAgICAgICBERUJVR01TR1QoKCJjZXJ0OmZpbmQ6cGFyYW1zIiwgIiBoaW50ID0gJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID8gInNlcnZlciIgOiAiY2xpZW50IikpOworICAgICAgICAgICAgICAgICAgICBmcCA9CisgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELCB0bXAgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1g1MDlfU0VSVkVSX1BVQiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfWDUwOV9DTElFTlRfUFVCICk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICghZnApIHsKICAgICAgICAgICAgICAgICAgICAgLyogQXMgYSBzcGVjaWFsIGNhc2UsIHVzZSB0aGUgYXBwbGljYXRpb24gdHlwZSB0bwogICAgICAgICAgICAgICAgICAgICAgICBkZXRlcm1pbmUgYSBmaWxlIG5hbWUgdG8gcHVsbCB0aGUgZGVmYXVsdCBpZGVudGl0eQpAQCAtMTcyNyw3ICsxNzY2LDExIEBACiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIE5TX0NFUlRfUkVNT1RFX1BFRVI6CiAgICAgICAgICAgICAgICAgZnAgPSBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1g1MDlfU0VSVkVSX1BVQik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfVExTX1BFRVJfQ0VSVCk7CisgICAgICAgICAgICAgICAgLyoqIHRlbXAgYmFja3dhcmRzIGNvbXBhYmlsaXR5OyByZW1vdmUgaW4gNS43ICovCisgICAgICAgICAgICAgICAgaWYgKCFmcCkKKyAgICAgICAgICAgICAgICAgICAgZnAgPSBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9QVUIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBERUJVR01TR1QoKCJjZXJ0OmZpbmQ6ZXJyIiwgInVuaGFuZGxlZCB0eXBlICVkIGZvciAlcyglZClcbiIsCkBAIC0xODMxLDEyICsxODc0LDcgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1pbnQKLW5ldHNubXBfY2VydF92YWxpZGF0ZShpbnQgd2hvLCBpbnQgaG93LCBYNTA5ICpjZXJ0KQotewotICAgIHJldHVybiAtMTsKLX0KLQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NFUlRfRklOR0VSUFJJTlRTCiBpbnQKIG5ldHNubXBfY2VydF9jaGVja192Yl9maW5nZXJwcmludChjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcikKIHsKQEAgLTE5MTEsNyArMTk0OSw5IEBACiAKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0VSVF9GSU5HRVJQUklOVFMgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RMU19GSU5HRVJQUklOVF9CVUlMRAogLyoqCiAgKiBjb21iaW5lIGEgaGFzaCB0eXBlIGFuZCBoZXggZmluZ2VycHJpbnQgaW50byBhIFNubXBUTFNGaW5nZXJwcmludAogICoKQEAgLTE5NTcsNiArMTk5Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RMU19GSU5HRVJQUklOVF9CVUlMRCAqLwogCiAvKioKICAqIFRydXN0cyBhIGdpdmVuIGNlcnRpZmljYXRlIGZvciB1c2UgaW4gVExTIHRyYW5zbGF0aW9ucy4KQEAgLTIyNDUsOCArMjI4NiwxMyBAQAogICAgIG1hdGNoaW5nID0gQ09OVEFJTkVSX0dFVF9TVUJTRVQoY29udGFpbmVyLCAmc2VhcmNoKTsKICAgICBERUJVR01TR1QoKCI5OmNlcnQ6c3Vic2V0OmZvdW5kIiwgIiUiIE5FVFNOTVBfUFJJeiAiZCBtYXRjaGVzXG4iLCBtYXRjaGluZyA/CiAgICAgICAgICAgICAgICBtYXRjaGluZy0+c2l6ZSA6IDApKTsKLSAgICBpZiAobWF0Y2hpbmcgJiYgbWF0Y2hpbmctPnNpemUgPiAxKQorICAgIGlmIChtYXRjaGluZyAmJiBtYXRjaGluZy0+c2l6ZSA+IDEpIHsKICAgICAgICAgX3JlZHVjZV9zdWJzZXQobWF0Y2hpbmcsIGZpbGVuYW1lKTsKKyAgICAgICAgaWYgKDAgPT0gbWF0Y2hpbmctPnNpemUpIHsKKyAgICAgICAgICAgIGZyZWUobWF0Y2hpbmctPmFycmF5KTsKKyAgICAgICAgICAgIFNOTVBfRlJFRShtYXRjaGluZyk7CisgICAgICAgIH0KKyAgICB9CiAgICAgcmV0dXJuIG1hdGNoaW5nOwogfQogCkBAIC0yMjYxLDggKzIzMDcsMTMgQEAKICAgICBuZXRzbm1wX2Fzc2VydChmbl9jb250YWluZXIpOwogCiAgICAgbWF0Y2hpbmcgPSBfY2VydF9maW5kX3N1YnNldF9jb21tb24oZmlsZW5hbWUsIGZuX2NvbnRhaW5lcik7Ci0gICAgaWYgKG1hdGNoaW5nICYmIChtYXRjaGluZy0+c2l6ZSA+IDEpICYmIGRpcmVjdG9yeSkKKyAgICBpZiAobWF0Y2hpbmcgJiYgKG1hdGNoaW5nLT5zaXplID4gMSkgJiYgZGlyZWN0b3J5KSB7CiAgICAgICAgIF9yZWR1Y2Vfc3Vic2V0X2RpcihtYXRjaGluZywgZGlyZWN0b3J5KTsKKyAgICAgICAgaWYgKDAgPT0gbWF0Y2hpbmctPnNpemUpIHsKKyAgICAgICAgICAgIGZyZWUobWF0Y2hpbmctPmFycmF5KTsKKyAgICAgICAgICAgIFNOTVBfRlJFRShtYXRjaGluZyk7CisgICAgICAgIH0KKyAgICB9CiAgICAgcmV0dXJuIG1hdGNoaW5nOwogfQogCkBAIC0yNDI4LDYgKzI0NzksNyBAQAogICAgIHJldHVybiByYzsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NFUlRfTUFQX1JFTU9WRQogaW50CiBuZXRzbm1wX2NlcnRfbWFwX3JlbW92ZShuZXRzbm1wX2NlcnRfbWFwICptYXApCiB7CkBAIC0yNDQ0LDcgKzI0OTYsOSBAQAogCiAgICAgcmV0dXJuIHJjOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0VSVF9NQVBfUkVNT1ZFICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DRVJUX01BUF9GSU5ECiBuZXRzbm1wX2NlcnRfbWFwICoKIG5ldHNubXBfY2VydF9tYXBfZmluZChuZXRzbm1wX2NlcnRfbWFwICptYXApCiB7CkBAIC0yNDUzLDYgKzI1MDcsNyBAQAogCiAgICAgcmV0dXJuIENPTlRBSU5FUl9GSU5EKF9tYXBzLCBtYXApOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0VSVF9NQVBfRklORCAqLwogCiBzdGF0aWMgdm9pZAogX21hcF9mcmVlKG5ldHNubXBfY2VydF9tYXAgKm1hcCwgdm9pZCAqY29udGV4dCkKQEAgLTI1MDIsMTAgKzI1NTcsOSBAQAogbmV0c25tcF9jb250YWluZXIgKgogbmV0c25tcF9jZXJ0X21hcF9jb250YWluZXJfY3JlYXRlKGludCB3aXRoX2ZwKQogewotICAgIG5ldHNubXBfY29udGFpbmVyICpjaGFpbl9tYXAgPQotICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJjZXJ0X21hcDpzdGFjazpiaW5hcnlfYXJyYXkiKTsKLSAgICBuZXRzbm1wX2NvbnRhaW5lciAqZnA7CisgICAgbmV0c25tcF9jb250YWluZXIgKmNoYWluX21hcCwgKmZwOwogCisgICAgY2hhaW5fbWFwID0gbmV0c25tcF9jb250YWluZXJfZmluZCgiY2VydF9tYXA6c3RhY2s6YmluYXJ5X2FycmF5Iik7CiAgICAgaWYgKE5VTEwgPT0gY2hhaW5fbWFwKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZCBub3QgYWxsb2NhdGUgY29udGFpbmVyIGZvciBjZXJ0X21hcFxuIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjg5OCwxMSArMjk1MiwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNfaGVscCk7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UTFNUTVBBUkFNU19DT05UQUlORVIKIG5ldHNubXBfY29udGFpbmVyICoKIG5ldHNubXBfdGxzdG1QYXJhbXNfY29udGFpbmVyKHZvaWQpCiB7CiAgICAgcmV0dXJuIF90bHN0bVBhcmFtczsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RMU1RNUEFSQU1TX0NPTlRBSU5FUiAqLwogCiBzbm1wVGxzdG1QYXJhbXMgKgogbmV0c25tcF90bHN0bVBhcmFtc19jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgaW50IGhhc2hUeXBlLCBjb25zdCBjaGFyICpmcCwKQEAgLTMwMDYsNiArMzA2Miw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UTFNUTVBBUkFNU19SRU1PVkUKIGludAogbmV0c25tcF90bHN0bVBhcmFtc19yZW1vdmUoc25tcFRsc3RtUGFyYW1zICpzdHApCiB7CkBAIC0zMDIyLDcgKzMwNzksOSBAQAogCiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UTFNUTVBBUkFNU19SRU1PVkUgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RMU1RNUEFSQU1TX0ZJTkQKIHNubXBUbHN0bVBhcmFtcyAqCiBuZXRzbm1wX3Rsc3RtUGFyYW1zX2ZpbmQoc25tcFRsc3RtUGFyYW1zICpzdHApCiB7CkBAIC0zMDM0LDYgKzMwOTMsNyBAQAogICAgIGZvdW5kID0gQ09OVEFJTkVSX0ZJTkQoX3Rsc3RtUGFyYW1zLCBzdHApOwogICAgIHJldHVybiBmb3VuZDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RMU1RNUEFSQU1TX0ZJTkQgKi8KIAogc3RhdGljIHZvaWQKIF9wYXJzZV9wYXJhbXMoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmxpbmUpCkBAIC0zMTAwLDExICszMTYwLDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcl9oZWxwKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RMU1RNQUREUl9DT05UQUlORVIKIG5ldHNubXBfY29udGFpbmVyICoKIG5ldHNubXBfdGxzdG1BZGRyX2NvbnRhaW5lcih2b2lkKQogewogICAgIHJldHVybiBfdGxzdG1BZGRyOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVExTVE1BRERSX0NPTlRBSU5FUiAqLwogCiAvKgogICogY3JlYXRlIGEgbmV3IHJvdyBpbiB0aGUgdGFibGUgCkBAIC0zMjEwLDYgKzMyNzIsNyBAQAogICAgIHJldHVybiAwOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVExTVE1BRERSX1JFTU9WRQogaW50CiBuZXRzbm1wX3Rsc3RtQWRkcl9yZW1vdmUoc25tcFRsc3RtQWRkciAqZW50cnkpCiB7CkBAIC0zMjIzLDYgKzMyODYsNyBAQAogCiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UTFNUTUFERFJfUkVNT1ZFICovCiAKIHN0YXRpYyB2b2lkCiBfcGFyc2VfYWRkcihjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSkKQEAgLTMyNzQsNiArMzMzOCw3IEBACiAgICAgcmV0dXJuIHJlc3VsdC0+ZmluZ2VycHJpbnQ7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UTFNUTUFERFJfR0VUX1NFUlZFUklECiBjaGFyICoKIG5ldHNubXBfdGxzdG1BZGRyX2dldF9zZXJ2ZXJJZChjb25zdCBjaGFyICpuYW1lKQogewpAQCAtMzI5MCwxMCArMzM1NSwxMyBAQAogCiAgICAgcmV0dXJuIHJlc3VsdC0+aWRlbnRpdHk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UTFNUTUFERFJfR0VUX1NFUlZFUklEICovCiAvKgogICogRU5EIHNubXBUbHN0bUFkZHJUYWJsZSBkYXRhCiAgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKICNlbHNlCi1pbnQgY2VydF91bnVzZWQ7CS8qIFN1cHByZXNzICJlbXB0eSB0cmFuc2xhdGlvbiB1bml0IiB3YXJuaW5nICovCituZXRzbm1wX2ZlYXR1cmVfdW51c2VkKGNlcnRfdXRpbCk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DRVJUX1VUSUwgKi8KK25ldHNubXBfZmVhdHVyZV91bnVzZWQoY2VydF91dGlsKTsKICNlbmRpZiAvKiBkZWZpbmVkKE5FVFNOTVBfVVNFX09QRU5TU0wpICYmIGRlZmluZWQoSEFWRV9MSUJTU0wpICovCmRpZmYgLS1naXQgYS9zbm1wbGliL2NoZWNrX3ZhcmJpbmQuYyBiL3NubXBsaWIvY2hlY2tfdmFyYmluZC5jCmluZGV4IDQ0Mjc5NWMuLjEyYjdhNTIgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvY2hlY2tfdmFyYmluZC5jCisrKyBiL3NubXBsaWIvY2hlY2tfdmFyYmluZC5jCkBAIC0xLDkgKzEsMjcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2hlY2tfdmFyYmluZF9hbGwsIGxpYm5ldHNubXApCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjaGVja192Yl9yYW5nZSwgY2hlY2tfdmFyYmluZF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2hlY2tfdmJfc2l6ZV9yYW5nZSwgY2hlY2tfdmFyYmluZF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2hlY2tfdmJfdWludCwgY2hlY2tfdmFyYmluZF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2hlY2tfdmJfc3RvcmFnZXR5cGUsIGNoZWNrX3ZhcmJpbmRfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNoZWNrX3ZiX29pZCwgY2hlY2tfdmFyYmluZF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUsIGNoZWNrX3ZhcmJpbmRfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplLCBjaGVja192YXJiaW5kX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjaGVja192Yl9yb3dzdGF0dXNfd2l0aF9zdG9yYWdldHlwZSwgY2hlY2tfdmFyYmluZF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2hlY2tfdmJfdHJ1dGh2YWx1ZSwgY2hlY2tfdmFyYmluZF9hbGwpCisKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9DSEVDS19WQl9ST1dTVEFUVVNfV0lUSF9TVE9SQUdFVFlQRQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfcm93c3RhdHVzX3dpdGhfc3RvcmFnZXR5cGVfdHJhbnNpdGlvbikKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRVNfQ0hFQ0tfVkJfUk9XU1RBVFVTX1dJVEhfU1RPUkFHRVRZUEUgKi8KKworCiBORVRTTk1QX0lOTElORSBpbnQKIG5ldHNubXBfY2hlY2tfdmJfdHlwZShjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhciwgaW50IHR5cGUgKQogewpAQCAtNDksNiArNjcsNyBAQAogICAgIHJldHVybiByYzsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1ZCX1JBTkdFCiBORVRTTk1QX0lOTElORSBpbnQKIG5ldHNubXBfY2hlY2tfdmJfcmFuZ2UoY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXIsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsb3csIHNpemVfdCBoaWdoICkKQEAgLTY0LDcgKzgzLDkgQEAKIAogICAgIHJldHVybiByYzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1ZCX1JBTkdFICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DSEVDS19WQl9TSVpFX1JBTkdFCiBORVRTTk1QX0lOTElORSBpbnQKIG5ldHNubXBfY2hlY2tfdmJfc2l6ZV9yYW5nZShjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbG93LCBzaXplX3QgaGlnaCApCkBAIC04MCw2ICsxMDEsNyBAQAogCiAgICAgcmV0dXJuIHJjOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfVkJfU0laRV9SQU5HRSAqLwogCiBORVRTTk1QX0lOTElORSBpbnQKIG5ldHNubXBfY2hlY2tfdmJfdHlwZV9hbmRfc2l6ZShjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhciwKQEAgLTk4LDYgKzEyMCw3IEBACiAgICAgcmV0dXJuIHJjOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfVkJfVFlQRV9BTkRfTUFYX1NJWkUKIE5FVFNOTVBfSU5MSU5FIGludAogbmV0c25tcF9jaGVja192Yl90eXBlX2FuZF9tYXhfc2l6ZShjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdHlwZSwgc2l6ZV90IHNpemUpCkBAIC0xMTQsNyArMTM3LDkgQEAKIAogICAgIHJldHVybiByYzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1ZCX1RZUEVfQU5EX01BWF9TSVpFICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DSEVDS19WQl9PSUQKIE5FVFNOTVBfSU5MSU5FIGludAogbmV0c25tcF9jaGVja192Yl9vaWQoY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXIpCiB7CkBAIC0xMzAsNiArMTU1LDcgQEAKIAogICAgIHJldHVybiByYzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1ZCX09JRCAqLwogCiBORVRTTk1QX0lOTElORSBpbnQKIG5ldHNubXBfY2hlY2tfdmJfaW50KGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyKQpAQCAtMTQwLDYgKzE2Niw3IEBACiAgICAgcmV0dXJuIG5ldHNubXBfY2hlY2tfdmJfdHlwZV9hbmRfc2l6ZSh2YXIsIEFTTl9JTlRFR0VSLCBzaXplb2YobG9uZykpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfVkJfVUlOVAogTkVUU05NUF9JTkxJTkUgaW50CiBuZXRzbm1wX2NoZWNrX3ZiX3VpbnQoY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXIpCiB7CkBAIC0xNDgsNiArMTc1LDcgQEAKICAgICAKICAgICByZXR1cm4gbmV0c25tcF9jaGVja192Yl90eXBlX2FuZF9zaXplKHZhciwgQVNOX1VOU0lHTkVELCBzaXplb2YobG9uZykpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfVkJfVUlOVCAqLwogCiBORVRTTk1QX0lOTElORSBpbnQKIG5ldHNubXBfY2hlY2tfdmJfaW50X3JhbmdlKGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyLCBpbnQgbG93LCBpbnQgaGlnaCkKQEAgLTE2Nyw2ICsxOTUsNyBAQAogICAgIHJldHVybiByYzsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1ZCX1RSVVRIVkFMVUUKIGludAogbmV0c25tcF9jaGVja192Yl90cnV0aHZhbHVlKGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyKQogewpAQCAtMTgwLDYgKzIwOSw3IEBACiAgICAgCiAgICAgcmV0dXJuIG5ldHNubXBfY2hlY2tfdmJfaW50X3JhbmdlKHZhciwgMSwgMik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DSEVDS19WQl9UUlVUSFZBTFVFICovCiAKIE5FVFNOTVBfSU5MSU5FIGludAogbmV0c25tcF9jaGVja192Yl9yb3dzdGF0dXNfdmFsdWUoY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXIpCkBAIC0yMTMsNiArMjQzLDcgQEAKICAgICByZXR1cm4gY2hlY2tfcm93c3RhdHVzX3RyYW5zaXRpb24ob2xkX3ZhbHVlLCAqdmFyLT52YWwuaW50ZWdlcik7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DSEVDS19WQl9ST1dTVEFUVVNfV0lUSF9TVE9SQUdFVFlQRQogaW50CiBuZXRzbm1wX2NoZWNrX3ZiX3Jvd3N0YXR1c193aXRoX3N0b3JhZ2V0eXBlKGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb2xkX3ZhbHVlLCBpbnQgb2xkX3N0b3JhZ2UpCkBAIC0yMjksNyArMjYwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmFyLT52YWwuaW50ZWdlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfc3RvcmFnZSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DSEVDS19WQl9ST1dTVEFUVVNfV0lUSF9TVE9SQUdFVFlQRSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfVkJfU1RPUkFHRVRZUEUKIGludAogbmV0c25tcF9jaGVja192Yl9zdG9yYWdldHlwZShjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhciwgaW50IG9sZF92YWx1ZSkKIHsKQEAgLTI0NywzICsyODAsNCBAQAogICAgICAgICAKICAgICByZXR1cm4gY2hlY2tfc3RvcmFnZV90cmFuc2l0aW9uKG9sZF92YWx1ZSwgKnZhci0+dmFsLmludGVnZXIpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfVkJfU1RPUkFHRVRZUEUgKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvY211X2NvbXBhdC5jIGIvc25tcGxpYi9jbXVfY29tcGF0LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4ZGNmM2EuLjAwMDAwMDAKLS0tIGEvc25tcGxpYi9jbXVfY29tcGF0LmMKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0jaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+Ci0KLSNpZmRlZiBDTVVfQ09NUEFUSUJMRQotCi0jaW5jbHVkZSA8bmV0LXNubXAvbWliX2FwaS5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL3BkdV9hcGkuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9zZXNzaW9uX2FwaS5oPgotCi1pbnQKLW1pYl9UeHRUb09pZChjaGFyICpCdWYsIG9pZCAqKiBPaWRQLCBzaXplX3QgKiBMZW5QKQotewotICAgIHJldHVybiByZWFkX29iamlkKEJ1ZiwgKk9pZFAsIExlblApOwotfQotCi1pbnQKLW1pYl9PaWRUb1R4dChvaWQgKiBPLCBzaXplX3QgT2lkTGVuLCBjaGFyICpCdWYsIHNpemVfdCBCdWZMZW4pCi17Ci0gICAgX3NwcmludF9vYmppZChCdWYsIE8sIE9pZExlbik7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLQotLyoKLSAqIGNtdV9zbm1wX3BhcnNlIC0gZW11bGF0ZSBDTVUgbGlicmFyeSdzIHNubXBfcGFyc2UuCi0gKgotICogUGFyc2UgcGFja2V0LCBzdG9yaW5nIHJlc3VsdHMgaW50byBQRFUuCi0gKiBSZXR1cm5zIGNvbW11bml0eSBzdHJpbmcgaWYgc3VjY2VzcywgTlVMTCBpZiBmYWlsLgotICogV0FSTklORzogbWF5IHJldHVybiBhIHplcm8gbGVuZ3RoIGNvbW11bml0eSBzdHJpbmcuCi0gKgotICogTm90ZToKLSAqIFNvbWUgQ01VLWF3YXJlIGFwcHMgY2FsbCBpbml0X21pYigpLCBidXQgZG8gbm90Ci0gKiBpbml0aWFsaXplIGEgc2Vzc2lvbi4KLSAqIENoZWNrIFJlcWlkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoaXMgbW9kdWxlIGlzIGluaXRpYWxpemVkLgotICovCi0KLXVfY2hhciAgICAgICAgICoKLWNtdV9zbm1wX3BhcnNlKG5ldHNubXBfc2Vzc2lvbiAqIHNlc3Npb24sCi0gICAgICAgICAgICAgICBuZXRzbm1wX3BkdSAqcGR1LCB1X2NoYXIgKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQotewotICAgIHVfY2hhciAgICAgICAgICpidWZwID0gTlVMTDsKLQotICAgIHNubXBfc2Vzc19pbml0KHNlc3Npb24pOyAgICAvKiBnaW1tZSBhIGJyZWFrISAqLwotCi0gICAgc3dpdGNoIChwZHUtPnZlcnNpb24pIHsKLSAgICBjYXNlIFNOTVBfVkVSU0lPTl8xOgotICAgIGNhc2UgU05NUF9WRVJTSU9OXzJjOgotICAgIGNhc2UgU05NUF9ERUZBVUxUX1ZFUlNJT046Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSNpZm5kZWYgTk9fSU5URVJOQUxfVkFSTElTVAotICAgIGlmIChzbm1wX3BhcnNlKDAsIHNlc3Npb24sIHBkdSwgZGF0YSwgbGVuZ3RoKSAhPSBTTk1QX0VSUl9OT0VSUk9SKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSNlbHNlCi0gICAgLyoKLSAgICAgKiB3aGlsZSB0aGVyZSBhcmUgdHdvIHZlcnNpb25zIG9mIHZhcmlhYmxlX2xpc3Q6Ci0gICAgICogdXNlIGFuIGludGVybmFsIHZhcmlhYmxlIGxpc3QgZm9yIHNubXBfcGFyc2U7Ci0gICAgICogY2xvbmUgdGhlIHJlc3VsdC4KLSAgICAgKi8KLSAgICBpZiAoMSkgewotICAgICAgICBuZXRzbm1wX3BkdSAgICAqc25tcF9jbG9uZV9wZHUobmV0c25tcF9wZHUgKik7Ci0gICAgICAgIG5ldHNubXBfcGR1ICAgICpzbm1wXzJjbG9uZV9wZHUobmV0c25tcF9wZHUgKmZyb21fcGR1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcGR1ICp0b19wZHUpOwotCi0gICAgICAgIG5ldHNubXBfcGR1ICAgICppcGR1OwotICAgICAgICBpcGR1ID0gc25tcF9jbG9uZV9wZHUocGR1KTsKLSAgICAgICAgaWYgKHNubXBfcGFyc2UoMCwgc2Vzc2lvbiwgaXBkdSwgZGF0YSwgbGVuZ3RoKSAhPSBTTk1QX0VSUl9OT0VSUk9SKSB7Ci0gICAgICAgICAgICBzbm1wX2ZyZWVfaW50ZXJuYWxfcGR1KGlwZHUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgcGR1ID0gc25tcF8yY2xvbmVfcGR1KGlwZHUsIHBkdSk7Ci0gICAgICAgIHNubXBfZnJlZV9pbnRlcm5hbF9wZHUoaXBkdSk7Ci0gICAgfQotI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOT19JTlRFUk5BTF9WQVJfTElTVCAqLwotCi0gICAgLyoKLSAgICAgKiBBZGQgYSBudWxsIHRvIG1lZXQgdGhlIGNhbGxlcidzIGV4cGVjdGF0aW9ucy4gCi0gICAgICovCi0KLSAgICBidWZwID0gKHVfY2hhciAqKSBtYWxsb2MoMSArIHBkdS0+Y29tbXVuaXR5X2xlbik7Ci0gICAgaWYgKGJ1ZnAgJiYgcGR1LT5jb21tdW5pdHlfbGVuKSB7Ci0gICAgICAgIG1lbWNweShidWZwLCBwZHUtPmNvbW11bml0eSwgcGR1LT5jb21tdW5pdHlfbGVuKTsKLSAgICAgICAgYnVmcFtwZHUtPmNvbW11bml0eV9sZW5dID0gJ1wwJzsKLSAgICB9Ci0gICAgcmV0dXJuIChidWZwKTsKLX0KLQotCi0jZWxzZQotaW50IGNtdV91bnVzZWQ7CS8qIFN1cHByZXNzICJlbXB0eSB0cmFuc2xhdGlvbiB1bml0IiB3YXJuaW5nICovCi0jZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENNVV9DT01QQVRJQkxFICovCmRpZmYgLS1naXQgYS9zbm1wbGliL2NvbnRhaW5lci5jIGIvc25tcGxpYi9jb250YWluZXIuYwppbmRleCAxN2RkNDBmLi5iMmFjOTdlIDEwMDY0NAotLS0gYS9zbm1wbGliL2NvbnRhaW5lci5jCisrKyBiL3NubXBsaWIvY29udGFpbmVyLmMKQEAgLTksMTIgKzksMzEgQEAKICAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9udWxsLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjb250YWluZXJfYWxsLCBsaWJuZXRzbm1wKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX2ZhY3RvcmllcywgY29udGFpbmVyX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjb250YWluZXJfdHlwZXMsIGNvbnRhaW5lcl9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX2NvbXBhcmUsIGNvbnRhaW5lcl9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX2R1cCwgY29udGFpbmVyX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjb250YWluZXJfZnJlZV9hbGwsIGNvbnRhaW5lcl9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc3ViY29udGFpbmVyX2ZpbmQsIGNvbnRhaW5lcl9hbGwpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjb250YWluZXJfbmNvbXBhcmVfY3N0cmluZywgY29udGFpbmVyX2NvbXBhcmUpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX2NvbXBhcmVfbWVtLCBjb250YWluZXJfY29tcGFyZSkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjb250YWluZXJfY29tcGFyZV9sb25nLCBjb250YWluZXJfY29tcGFyZSkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjb250YWluZXJfY29tcGFyZV91bG9uZywgY29udGFpbmVyX2NvbXBhcmUpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX2NvbXBhcmVfaW50MzIsIGNvbnRhaW5lcl9jb21wYXJlKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNvbnRhaW5lcl9jb21wYXJlX3VpbnQzMiwgY29udGFpbmVyX2NvbXBhcmUpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjb250YWluZXJfZmluZF9mYWN0b3J5LCBjb250YWluZXJfZmFjdG9yaWVzKQorCiAvKiogQGRlZmdyb3VwIGNvbnRhaW5lciBjb250YWluZXIKICAqLwogCkBAIC02OCwxOCArODcsMjUgQEAKICAgICAgKiByZWdpc3RlciBjb250YWluZXJzCiAgICAgICovCiAgICAgbmV0c25tcF9jb250YWluZXJfYmluYXJ5X2FycmF5X2luaXQoKTsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfTElOS0VEX0xJU1QKICAgICBuZXRzbm1wX2NvbnRhaW5lcl9zc2xsX2luaXQoKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9MSU5LRURfTElTVCAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9OVUxMCiAgICAgbmV0c25tcF9jb250YWluZXJfbnVsbF9pbml0KCk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfTlVMTCAqLwogCiAgICAgLyoKICAgICAgKiBkZWZhdWx0IGFsaWFzZXMgZm9yIHNvbWUgY29udGFpbmVycwogICAgICAqLwogICAgIG5ldHNubXBfY29udGFpbmVyX3JlZ2lzdGVyKCJ0YWJsZV9jb250YWluZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX2dldF9mYWN0b3J5KCJiaW5hcnlfYXJyYXkiKSk7CisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfTElOS0VEX0xJU1QKICAgICBuZXRzbm1wX2NvbnRhaW5lcl9yZWdpc3RlcigibGlua2VkX2xpc3QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX2dldF9mYWN0b3J5KCJzb3J0ZWRfc2luZ2x5X2xpbmtlZF9saXN0IikpOwogICAgIG5ldHNubXBfY29udGFpbmVyX3JlZ2lzdGVyKCJzc2xsX2NvbnRhaW5lciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfZ2V0X2ZhY3RvcnkoInNvcnRlZF9zaW5nbHlfbGlua2VkX2xpc3QiKSk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfTElOS0VEX0xJU1QgKi8KIAogICAgIG5ldHNubXBfY29udGFpbmVyX3JlZ2lzdGVyX3dpdGhfY29tcGFyZQogICAgICAgICAoImNzdHJpbmciLCBuZXRzbm1wX2NvbnRhaW5lcl9nZXRfZmFjdG9yeSgiYmluYXJ5X2FycmF5IiksCkBAIC0xNjYsNiArMTkyLDcgQEAKICAgICByZXR1cm4gZm91bmQgPyBmb3VuZC0+ZmFjdG9yeSA6IE5VTEw7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfRklORF9GQUNUT1JZCiBuZXRzbm1wX2ZhY3RvcnkgKgogbmV0c25tcF9jb250YWluZXJfZmluZF9mYWN0b3J5KGNvbnN0IGNoYXIgKnR5cGVfbGlzdCkKIHsKQEAgLTE4OCw2ICsyMTUsNyBAQAogICAgIGZyZWUobGlzdCk7CiAgICAgcmV0dXJuIGY7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfRklORF9GQUNUT1JZICovCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KQEAgLTI4Niw4ICszMTQsNiBAQAogICAgIG5ld19pbmRleC0+cHJldiA9IGN1cnI7CiB9CiAKLSNpZm5kZWYgTkVUU05NUF9VU0VfSU5MSU5FIC8qIGRlZmF1bHQgaXMgdG8gaW5saW5lICovCi0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIEVYQUNUTFkgbWF0Y2ggdGhlIGlubGluZSB2ZXJzaW9uIGluCiAgKiBjb250YWluZXIuaC4gSWYgeW91IGNoYW5nZSBvbmUsIGNoYW5nZSB0aGVtIGJvdGguCkBAIC0zNTIsNiArMzc4LDcgQEAKICAqIFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgRVhBQ1RMWSBtYXRjaCB0aGUgZnVuY3Rpb24gdmVyc2lvbiBpbgogICogY29udGFpbmVyLmMuIElmIHlvdSBjaGFuZ2Ugb25lLCBjaGFuZ2UgdGhlbSBib3RoLgogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0RVUAogbmV0c25tcF9jb250YWluZXIgKkNPTlRBSU5FUl9EVVAobmV0c25tcF9jb250YWluZXIgKngsIHZvaWQgKmN0eCwgdV9pbnQgZmxhZ3MpCiB7CiAgICAgaWYgKE5VTEwgPT0geC0+ZHVwbGljYXRlKSB7CkBAIC0zNjEsNiArMzg4LDcgQEAKICAgICB9CiAgICAgcmV0dXJuIHgtPmR1cGxpY2F0ZSh4LCBjdHgsIGZsYWdzKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9EVVAgKi8KIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgRVhBQ1RMWSBtYXRjaCB0aGUgaW5saW5lIHZlcnNpb24gaW4KQEAgLTQxMyw2ICs0NDEsNyBAQAogICAgIHgtPmNsZWFyKHgsIGYsIGMpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0ZSRUVfQUxMCiAvKgogICogY2xlYXIgYWxsIGNvbnRhaW5lcnMuIFdoZW4gY2xlYXJpbmcgdGhlICpmaXJzdCogY29udGFpbmVyLCBhbmQKICAqICpvbmx5KiB0aGUgZmlyc3QgY29udGFpbmVyLCBjYWxsIHRoZSBmcmVlX2l0ZW0gZnVuY3Rpb24gZm9yIGVhY2ggaXRlbS4KQEAgLTQyMiw3ICs0NTEsOSBAQAogewogICAgIENPTlRBSU5FUl9DTEVBUih4LCB4LT5mcmVlX2l0ZW0sIGMpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0ZSRUVfQUxMICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVUJDT05UQUlORVJfRklORAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgRVhBQ1RMWSBtYXRjaCB0aGUgZnVuY3Rpb24gdmVyc2lvbiBpbgogICogY29udGFpbmVyLmMuIElmIHlvdSBjaGFuZ2Ugb25lLCBjaGFuZ2UgdGhlbSBib3RoLgpAQCAtNDQ2LDcgKzQ3Nyw3IEBACiAgICAgfQogICAgIHJldHVybiB4OwogfQotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVUJDT05UQUlORVJfRklORCAqLwogCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01NTAsNiArNTgxLDcgQEAKICAgICAgICAgICAgICAgICAgICgoY29uc3QgY29udGFpbmVyX3R5cGUqKXJocyktPm5hbWUpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX05DT01QQVJFX0NTVFJJTkcKIGludAogbmV0c25tcF9uY29tcGFyZV9jc3RyaW5nKGNvbnN0IHZvaWQgKiBsaHMsIGNvbnN0IHZvaWQgKiByaHMpCiB7CkBAIC01NTcsNiArNTg5LDcgQEAKICAgICAgICAgICAgICAgICAgICAoKGNvbnN0IGNvbnRhaW5lcl90eXBlKilyaHMpLT5uYW1lLAogICAgICAgICAgICAgICAgICAgIHN0cmxlbigoKGNvbnN0IGNvbnRhaW5lcl90eXBlKilyaHMpLT5uYW1lKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfTkNPTVBBUkVfQ1NUUklORyAqLwogCiBpbnQKIG5ldHNubXBfY29tcGFyZV9kaXJlY3RfY3N0cmluZyhjb25zdCB2b2lkICogbGhzLCBjb25zdCB2b2lkICogcmhzKQpAQCAtNTcxLDYgKzYwNCw3IEBACiAgKiBjb21wYXJlIHVwIHRvIHRoZSBsZW5ndGggb2YgdGhlIHNtYWxsZXIsIGFuZCB0aGVuIHVzZSBsZW5ndGggdG8KICAqIGJyZWFrIGFueSB0aWVzLgogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0NPTVBBUkVfTUVNCiBpbnQKIG5ldHNubXBfY29tcGFyZV9tZW0oY29uc3QgY2hhciAqIGxocywgc2l6ZV90IGxoc19sZW4sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiByaHMsIHNpemVfdCByaHNfbGVuKQpAQCAtNTg3LDE2ICs2MjEsMTYgQEAKIAogICAgIHJldHVybiByYzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9DT01QQVJFX01FTSAqLwogCi10eXBlZGVmIHN0cnVjdCBkdW1teV9sb25nX3MgewotICAgIGxvbmcgICAgICAgICAgICAgICAgICAgICAgaW5kZXg7Ci19IGR1bW15X2xvbmc7Ci0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfQ09NUEFSRV9MT05HCiBpbnQKIG5ldHNubXBfY29tcGFyZV9sb25nKGNvbnN0IHZvaWQgKiBsaHMsIGNvbnN0IHZvaWQgKiByaHMpCiB7Ci0gICAgY29uc3QgZHVtbXlfbG9uZyAqbGhkID0gKGNvbnN0IGR1bW15X2xvbmcqKWxoczsKLSAgICBjb25zdCBkdW1teV9sb25nICpyaGQgPSAoY29uc3QgZHVtbXlfbG9uZyopcmhzOworICAgIHR5cGVkZWYgc3RydWN0IHsgbG9uZyBpbmRleDsgfSBkdW1teTsKKworICAgIGNvbnN0IGR1bW15ICpsaGQgPSAoY29uc3QgZHVtbXkqKWxoczsKKyAgICBjb25zdCBkdW1teSAqcmhkID0gKGNvbnN0IGR1bW15KilyaHM7CiAKICAgICBpZiAobGhkLT5pbmRleCA8IHJoZC0+aW5kZXgpCiAgICAgICAgIHJldHVybiAtMTsKQEAgLTYwNSwxNiArNjM5LDE2IEBACiAKICAgICByZXR1cm4gMDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9DT01QQVJFX0xPTkcgKi8KIAotdHlwZWRlZiBzdHJ1Y3QgZHVtbXlfdWxvbmdfcyB7Ci0gICAgdV9sb25nICAgICAgICAgICAgICAgICAgICAgIGluZGV4OwotfSBkdW1teV91bG9uZzsKLQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9DT01QQVJFX1VMT05HCiBpbnQKIG5ldHNubXBfY29tcGFyZV91bG9uZyhjb25zdCB2b2lkICogbGhzLCBjb25zdCB2b2lkICogcmhzKQogewotICAgIGNvbnN0IGR1bW15X3Vsb25nICpsaGQgPSAoY29uc3QgZHVtbXlfdWxvbmcqKWxoczsKLSAgICBjb25zdCBkdW1teV91bG9uZyAqcmhkID0gKGNvbnN0IGR1bW15X3Vsb25nKilyaHM7CisgICAgdHlwZWRlZiBzdHJ1Y3QgeyB1X2xvbmcgaW5kZXg7IH0gZHVtbXk7CisKKyAgICBjb25zdCBkdW1teSAqbGhkID0gKGNvbnN0IGR1bW15KilsaHM7CisgICAgY29uc3QgZHVtbXkgKnJoZCA9IChjb25zdCBkdW1teSopcmhzOwogCiAgICAgaWYgKGxoZC0+aW5kZXggPCByaGQtPmluZGV4KQogICAgICAgICByZXR1cm4gLTE7CkBAIC02MjMsMTYgKzY1NywxNiBAQAogCiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfQ09NUEFSRV9VTE9ORyAqLwogCi10eXBlZGVmIHN0cnVjdCBkdW1teV9pbnQzMl9zIHsKLSAgICBpbnQzMl90ICAgICAgICAgICAgICAgICAgICBpbmRleDsKLX0gZHVtbXlfaW50MzI7Ci0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfQ09NUEFSRV9JTlQzMgogaW50CiBuZXRzbm1wX2NvbXBhcmVfaW50MzIoY29uc3Qgdm9pZCAqIGxocywgY29uc3Qgdm9pZCAqIHJocykKIHsKLSAgICBjb25zdCBkdW1teV9pbnQzMiAqbGhkID0gKGNvbnN0IGR1bW15X2ludDMyKilsaHM7Ci0gICAgY29uc3QgZHVtbXlfaW50MzIgKnJoZCA9IChjb25zdCBkdW1teV9pbnQzMiopcmhzOworICAgIHR5cGVkZWYgc3RydWN0IHsgaW50MzJfdCBpbmRleDsgfSBkdW1teTsKKworICAgIGNvbnN0IGR1bW15ICpsaGQgPSAoY29uc3QgZHVtbXkqKWxoczsKKyAgICBjb25zdCBkdW1teSAqcmhkID0gKGNvbnN0IGR1bW15KilyaHM7CiAKICAgICBpZiAobGhkLT5pbmRleCA8IHJoZC0+aW5kZXgpCiAgICAgICAgIHJldHVybiAtMTsKQEAgLTY0MSwxNiArNjc1LDE2IEBACiAKICAgICByZXR1cm4gMDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9DT01QQVJFX0lOVDMyICovCiAKLXR5cGVkZWYgc3RydWN0IGR1bW15X3VpbnQzMl9zIHsKLSAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICBpbmRleDsKLX0gZHVtbXlfdWludDMyOwotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0NPTVBBUkVfVUlOVDMyCiBpbnQKIG5ldHNubXBfY29tcGFyZV91aW50MzIoY29uc3Qgdm9pZCAqIGxocywgY29uc3Qgdm9pZCAqIHJocykKIHsKLSAgICBjb25zdCBkdW1teV91aW50MzIgKmxoZCA9IChjb25zdCBkdW1teV91aW50MzIqKWxoczsKLSAgICBjb25zdCBkdW1teV91aW50MzIgKnJoZCA9IChjb25zdCBkdW1teV91aW50MzIqKXJoczsKKyAgICB0eXBlZGVmIHN0cnVjdCB7IHVpbnQzMl90IGluZGV4OyB9IGR1bW15OworCisgICAgY29uc3QgZHVtbXkgKmxoZCA9IChjb25zdCBkdW1teSopbGhzOworICAgIGNvbnN0IGR1bW15ICpyaGQgPSAoY29uc3QgZHVtbXkqKXJoczsKIAogICAgIGlmIChsaGQtPmluZGV4IDwgcmhkLT5pbmRleCkKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNjU5LDYgKzY5Myw3IEBACiAKICAgICByZXR1cm4gMDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9DT01QQVJFX1VJTlQzMiAqLwogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogbmV0c25tcF9jb250YWluZXJfc2ltcGxlX2ZyZWUKZGlmZiAtLWdpdCBhL3NubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jIGIvc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmMKaW5kZXggYTMwOTI0OC4uMjQ5YTNhOSAxMDA2NDQKLS0tIGEvc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmMKKysrIGIvc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmMKQEAgLTM3LDcgKzM3LDYgQEAKICAgICBzaXplX3QgICAgICAgICAgICAgICAgICAgICBtYXhfc2l6ZTsgICAvKiBTaXplIG9mIHRoZSBjdXJyZW50IGRhdGEgdGFibGUgKi8KICAgICBzaXplX3QgICAgICAgICAgICAgICAgICAgICBjb3VudDsgICAgICAvKiBJbmRleCBvZiB0aGUgbmV4dCBmcmVlIGVudHJ5ICovCiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgZGlydHk7Ci0gICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zaXplOyAgLyogU2l6ZSBvZiBhbiBpbmRpdmlkdWFsIGVudHJ5ICovCiAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICoqZGF0YTsgICAgICAgLyogVGhlIHRhYmxlIGl0c2VsZiAqLwogfSBiaW5hcnlfYXJyYXlfdGFibGU7CiAKQEAgLTIyMSw3ICsyMjAsNiBAQAogICAgIHQtPm1heF9zaXplID0gMDsKICAgICB0LT5jb3VudCA9IDA7CiAgICAgdC0+ZGlydHkgPSAwOwotICAgIHQtPmRhdGFfc2l6ZSA9IHNpemVvZih2b2lkKik7CiAgICAgdC0+ZGF0YSA9IE5VTEw7CiAKICAgICByZXR1cm4gdDsKQEAgLTIzMSw5ICsyMjksNyBAQAogbmV0c25tcF9iaW5hcnlfYXJyYXlfcmVsZWFzZShuZXRzbm1wX2NvbnRhaW5lciAqYykKIHsKICAgICBiaW5hcnlfYXJyYXlfdGFibGUgKnQgPSAoYmluYXJ5X2FycmF5X3RhYmxlKiljLT5jb250YWluZXJfZGF0YTsKLSAgICBpZiAodC0+ZGF0YSAhPSBOVUxMKSB7Ci0JU05NUF9GUkVFKHQtPmRhdGEpOwotICAgIH0KKyAgICBTTk1QX0ZSRUUodC0+ZGF0YSk7CiAgICAgU05NUF9GUkVFKHQpOwogICAgIFNOTVBfRlJFRShjKTsKIH0KQEAgLTMyMiw3ICszMTgsNyBAQAogICAgICAgICAgKiBvdGhlcndpc2UsIHNoaWZ0IGFycmF5IGRvd24KICAgICAgICAgICovCiAgICAgICAgIG1lbW1vdmUoJnQtPmRhdGFbaW5kZXhdLCAmdC0+ZGF0YVtpbmRleCsxXSwKLSAgICAgICAgICAgICAgICB0LT5kYXRhX3NpemUgKiAodC0+Y291bnQgLSBpbmRleCkpOworICAgICAgICAgICAgICAgIHNpemVvZih2b2lkKikgKiAodC0+Y291bnQgLSBpbmRleCkpOwogCiAgICAgICAgICsrYy0+c3luYzsKICAgICB9CkBAIC0zOTcsMTYgKzM5MywxMyBAQAogbmV0c25tcF9iaW5hcnlfYXJyYXlfaW5zZXJ0KG5ldHNubXBfY29udGFpbmVyICpjLCBjb25zdCB2b2lkICplbnRyeSkKIHsKICAgICBiaW5hcnlfYXJyYXlfdGFibGUgKnQgPSAoYmluYXJ5X2FycmF5X3RhYmxlKiljLT5jb250YWluZXJfZGF0YTsKLSAgICBpbnQgICAgICAgICAgICAgbmV3X21heCwgbmV3X3NpemUsIHdhc19kaXJ0eSA9IDA7Ci0gICAgY2hhciAgICAgICAgICAgKm5ld19kYXRhOyAgIC8qIFVzZWQgZm9yICogYSkgZXh0ZW5kaW5nIHRoZSBkYXRhIHRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICogYikgdGhlIG5leHQgZW50cnkgdG8gdXNlICovCisgICAgaW50ICAgICAgICAgICAgIHdhc19kaXJ0eSA9IDA7CiAgICAgLyoKICAgICAgKiBjaGVjayBmb3IgZHVwbGljYXRlcwogICAgICAqLwogICAgIGlmICghIChjLT5mbGFncyAmIENPTlRBSU5FUl9LRVlfQUxMT1dfRFVQTElDQVRFUykpIHsKICAgICAgICAgd2FzX2RpcnR5ID0gdC0+ZGlydHk7Ci0gICAgICAgIG5ld19kYXRhID0gbmV0c25tcF9iaW5hcnlfYXJyYXlfZ2V0KGMsIGVudHJ5LCAxKTsKLSAgICAgICAgaWYgKE5VTEwgIT0gbmV3X2RhdGEpIHsKKyAgICAgICAgaWYgKE5VTEwgIT0gbmV0c25tcF9iaW5hcnlfYXJyYXlfZ2V0KGMsIGVudHJ5LCAxKSkgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoImNvbnRhaW5lciIsIm5vdCBpbnNlcnRpbmcgZHVwbGljYXRlIGtleVxuIikpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CkBAIC00MTcsMjIgKzQxMCwyMCBAQAogICAgICAqLwogICAgIGlmICh0LT5tYXhfc2l6ZSA8PSB0LT5jb3VudCkgewogICAgICAgICAvKgotICAgICAgICAgKiBUYWJsZSBpcyBmdWxsLCBzbyBleHRlbmQgaXQgdG8gZG91YmxlIHRoZSBzaXplCisgICAgICAgICAqIFRhYmxlIGlzIGZ1bGwsIHNvIGV4dGVuZCBpdCB0byBkb3VibGUgdGhlIHNpemUsIG9yIHVzZSAxMCBlbGVtZW50cworICAgICAgICAgKiBpZiBpdCBpcyBlbXB0eS4KICAgICAgICAgICovCi0gICAgICAgIG5ld19tYXggPSAyICogdC0+bWF4X3NpemU7Ci0gICAgICAgIGlmIChuZXdfbWF4ID09IDApCi0gICAgICAgICAgICBuZXdfbWF4ID0gMTA7ICAgICAgIC8qIFN0YXJ0IHdpdGggMTAgZW50cmllcyAqLworICAgICAgICBzaXplX3QgY29uc3QgbmV3X21heCA9IHQtPm1heF9zaXplID4gMCA/IDIgKiB0LT5tYXhfc2l6ZSA6IDEwOworICAgICAgICB2b2lkICoqIGNvbnN0IG5ld19kYXRhID0KKyAgICAgICAgICAgICh2b2lkKiopIHJlYWxsb2ModC0+ZGF0YSwgbmV3X21heCAqIHNpemVvZih2b2lkKikpOwogCi0gICAgICAgIG5ld19zaXplID0gbmV3X21heCAqIHQtPmRhdGFfc2l6ZTsKLSAgICAgICAgbmV3X2RhdGEgPSAoY2hhciAqKSByZWFsbG9jKHQtPmRhdGEsIG5ld19zaXplKTsKICAgICAgICAgaWYgKG5ld19kYXRhID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaW50IG9sZF9zaXplID0gdC0+bWF4X3NpemUgKiB0LT5kYXRhX3NpemU7Ci0gICAgICAgICAgICBpbnQgY291bnQgPSBuZXdfc2l6ZSAtIG9sZF9zaXplOwotICAgICAgICAgICAgbWVtc2V0KCZuZXdfZGF0YVtvbGRfc2l6ZV0sIDB4MCwgY291bnQpOwotICAgICAgICB9Ci0gICAgICAgIHQtPmRhdGEgPSAodm9pZCoqKW5ld19kYXRhOworCisgICAgICAgIG1lbXNldChuZXdfZGF0YSArIHQtPm1heF9zaXplLCAweDAsCisgICAgICAgICAgICAgICAobmV3X21heCAtIHQtPm1heF9zaXplKSAqIHNpemVvZih2b2lkKikpOworCisgICAgICAgIHQtPmRhdGEgPSBuZXdfZGF0YTsKICAgICAgICAgdC0+bWF4X3NpemUgPSBuZXdfbWF4OwogICAgIH0KIApAQCAtNTMyLDkgKzUyMyw5IEBACiAgICAgfQogCiAgICAgKmxlbiA9IGVuZCAtIHN0YXJ0ICsgMTsKLSAgICBzdWJzZXQgPSAodm9pZCAqKiltYWxsb2MoKCpsZW4pICogdC0+ZGF0YV9zaXplKTsKKyAgICBzdWJzZXQgPSAodm9pZCAqKiltYWxsb2MoKCpsZW4pICogc2l6ZW9mKHZvaWQqKSk7CiAgICAgaWYgKHN1YnNldCkKLSAgICAgICAgbWVtY3B5KHN1YnNldCwgJnQtPmRhdGFbc3RhcnRdLCB0LT5kYXRhX3NpemUgKiAoKmxlbikpOworICAgICAgICBtZW1jcHkoc3Vic2V0LCAmdC0+ZGF0YVtzdGFydF0sIHNpemVvZih2b2lkKikgKiAoKmxlbikpOwogCiAgICAgcmV0dXJuIHN1YnNldDsKIH0KQEAgLTY1NywyMCArNjQ4LDE5IEBACiAgICAgZHVwdC0+bWF4X3NpemUgPSB0LT5tYXhfc2l6ZTsKICAgICBkdXB0LT5jb3VudCA9IHQtPmNvdW50OwogICAgIGR1cHQtPmRpcnR5ID0gdC0+ZGlydHk7Ci0gICAgZHVwdC0+ZGF0YV9zaXplID0gdC0+ZGF0YV9zaXplOwogCiAgICAgLyoKICAgICAgKiBzaGFsbG93IGNvcHkKICAgICAgKi8KLSAgICBkdXB0LT5kYXRhID0gKHZvaWQqKikgY2FsbG9jKGR1cHQtPm1heF9zaXplLCBkdXB0LT5kYXRhX3NpemUpOworICAgIGR1cHQtPmRhdGEgPSAodm9pZCoqKSBtYWxsb2MoZHVwdC0+bWF4X3NpemUgKiBzaXplb2Yodm9pZCopKTsKICAgICBpZiAoTlVMTCA9PSBkdXB0LT5kYXRhKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJubyBtZW1vcnkgZm9yIGJpbmFyeSBhcnJheSBkdXBsaWNhdGVcbiIpOwogICAgICAgICBuZXRzbm1wX2JpbmFyeV9hcnJheV9yZWxlYXNlKGR1cCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIG1lbWNweShkdXB0LT5kYXRhLCB0LT5kYXRhLCBkdXB0LT5tYXhfc2l6ZSAqIGR1cHQtPmRhdGFfc2l6ZSk7Ci0gICAgCisgICAgbWVtY3B5KGR1cHQtPmRhdGEsIHQtPmRhdGEsIGR1cHQtPm1heF9zaXplICogc2l6ZW9mKHZvaWQqKSk7CisKICAgICByZXR1cm4gZHVwOwogfQogCmRpZmYgLS1naXQgYS9zbm1wbGliL2NvbnRhaW5lcl9pdGVyYXRvci5jIGIvc25tcGxpYi9jb250YWluZXJfaXRlcmF0b3IuYwppbmRleCBlMjZkOTllLi40MWIxNGZmIDEwMDY0NAotLS0gYS9zbm1wbGliL2NvbnRhaW5lcl9pdGVyYXRvci5jCisrKyBiL3NubXBsaWIvY29udGFpbmVyX2l0ZXJhdG9yLmMKQEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2lmIEhBVkVfU1RETElCX0gKQEAgLTI4LDYgKzI5LDkgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjb250YWluZXJfaXRlcmF0b3IsIGNvbnRhaW5lcl90eXBlcykKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9JVEVSQVRPUgogLyoqCiAgKiAgSG9sZHMgaXRlcmF0b3IgaW5mb3JtYXRpb24gY29udGFpbmluZyBmdW5jdGlvbnMgd2hpY2ggc2hvdWxkIGJlIGNhbGxlZAogICogIGJ5IHRoZSBpdGVyYXRvcl9oYW5kbGVyIHRvIGxvb3Agb3ZlciB5b3VyIGRhdGEgc2V0IGFuZCBzb3J0IGl0IGluIGEKQEAgLTUwNCwzICs1MDgsNiBAQAogICAgIGlpLT5yZW1vdmVfZGF0YSA9IHJlbW92ZV9kYXRhOwogICAgIGlpLT5nZXRfc2l6ZSA9IGdldF9zaXplOwogfQorI2Vsc2UgIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0lURVJBVE9SICovCituZXRzbm1wX2ZlYXR1cmVfdW51c2VkKGNvbnRhaW5lcl9pdGVyYXRvcik7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfSVRFUkFUT1IgKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvY29udGFpbmVyX2xpc3Rfc3NsbC5jIGIvc25tcGxpYi9jb250YWluZXJfbGlzdF9zc2xsLmMKaW5kZXggNjVlMzk2OC4uN2ZmMDFjNCAxMDA2NDQKLS0tIGEvc25tcGxpYi9jb250YWluZXJfbGlzdF9zc2xsLmMKKysrIGIvc25tcGxpYi9jb250YWluZXJfbGlzdF9zc2xsLmMKQEAgLTQsNiArNCw3IEBACiAgKgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaWYgSEFWRV9TVERMSUJfSApAQCAtMjgsNiArMjksMTkgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX2xpbmtlZF9saXN0LCBjb250YWluZXJfdHlwZXMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX2ZpZm8sIGNvbnRhaW5lcl90eXBlcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjb250YWluZXJfbGlmbywgY29udGFpbmVyX3R5cGVzKQorCisvKiB0aGlzIGlzIGEgZmFuY3kgd2F5IG9mIGNsZWFuaW5nIHVwIGlmZGVmcyAqLworI2lmZGVmIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX0NPTlRBSU5FUl9GSUZPCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjb250YWluZXJfbGlua2VkX2xpc3QpCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfQ09OVEFJTkVSX0ZJRk8gKi8KKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9DT05UQUlORVJfTElGTworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY29udGFpbmVyX2xpbmtlZF9saXN0KQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX0NPTlRBSU5FUl9MSUZPICovCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfTElOS0VEX0xJU1QKIHR5cGVkZWYgc3RydWN0IHNsX25vZGUgewogICAgdm9pZCAgICAgICAgICAgKmRhdGE7CiAgICBzdHJ1Y3Qgc2xfbm9kZSAqbmV4dDsKQEAgLTU1MSwzICs1NjUsNiBAQAogCiAgICAgcmV0dXJuIChuZXRzbm1wX2l0ZXJhdG9yICopaXQ7CiB9CisjZWxzZSAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9MSU5LRURfTElTVCAqLworbmV0c25tcF9mZWF0dXJlX3VudXNlZChjb250YWluZXJfbGlua2VkX2xpc3QpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0xJTktFRF9MSVNUICovCmRpZmYgLS1naXQgYS9zbm1wbGliL2NvbnRhaW5lcl9udWxsLmMgYi9zbm1wbGliL2NvbnRhaW5lcl9udWxsLmMKaW5kZXggMDRjY2EyMS4uMWY0ODcwZSAxMDA2NDQKLS0tIGEvc25tcGxpYi9jb250YWluZXJfbnVsbC5jCisrKyBiL3NubXBsaWIvY29udGFpbmVyX251bGwuYwpAQCAtNyw2ICs3LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2lmIEhBVkVfSU9fSAogI2luY2x1ZGUgPGlvLmg+CkBAIC0zMyw2ICszNCw4IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS90b29scy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNvbnRhaW5lcl9udWxsLCBjb250YWluZXJfdHlwZXMpCisKIC8qKiBAZGVmZ3JvdXAgbnVsbF9jb250YWluZXIgbnVsbF9jb250YWluZXIKICAqICBIZWxwcyB5b3UgaW1wbGVtZW50IHNwZWNpYWxpemVkIGNvbnRhaW5lcnMuCiAgKiAgQGluZ3JvdXAgY29udGFpbmVyCkBAIC01MCw2ICs1Myw3IEBACiAgKiAgQHsKICAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX05VTEwKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogY29udGFpbmVyCkBAIC0xODAsNSArMTg0LDggQEAKICAgICBuZXRzbm1wX2NvbnRhaW5lcl9yZWdpc3RlcigibnVsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfZ2V0X251bGxfZmFjdG9yeSgpKTsKIH0KKyNlbHNlICAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9OVUxMICovCituZXRzbm1wX2ZlYXR1cmVfdW51c2VkKGNvbnRhaW5lcl9udWxsKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9OVUxMICovCiAvKiogIEB9ICovCiAKZGlmZiAtLWdpdCBhL3NubXBsaWIvZGF0YV9saXN0LmMgYi9zbm1wbGliL2RhdGFfbGlzdC5jCmluZGV4IGMzNzlmYTYuLjUwNWQ0ZmMgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvZGF0YV9saXN0LmMKKysrIGIvc25tcGxpYi9kYXRhX2xpc3QuYwpAQCAtNCw4ICs0LDE0IEBACiAgKiAkSWQkCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihkYXRhX2xpc3RfYWxsLCBsaWJuZXRzbm1wKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoZGF0YV9saXN0X2FkZF9kYXRhLCBkYXRhX2xpc3RfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGRhdGFfbGlzdF9nZXRfbGlzdF9ub2RlLCBkYXRhX2xpc3RfYWxsKQorCiAvKiogQGRlZmdyb3VwIGRhdGFfbGlzdCBnZW5lcmljIGxpbmtlZC1saXN0IGRhdGEgaGFuZGxpbmcgd2l0aCBhIHN0cmluZyBhcyBhIGtleS4KICAqIEBpbmdyb3VwIGxpYnJhcnkKICAqIEB7CkBAIC02Miw4ICs2OCw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIG5vZGUtPm5hbWUgPSBzdHJkdXAobmFtZSk7CiAgICAgaWYgKCFub2RlLT5uYW1lKSB7Ci0gICAgICBmcmVlKG5vZGUpOwotICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGZyZWUobm9kZSk7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBub2RlLT5kYXRhID0gZGF0YTsKICAgICBub2RlLT5mcmVlX2Z1bmMgPSBiZWVyOwpAQCAtMTMxLDYgKzEzNyw3IEBACiAgKiBAcGFyYW0gYmVlciBBIGZ1bmN0aW9uIHRoYXQgY2FuIGZyZWUgdGhlIGRhdGEgcG9pbnRlciAoaW4gdGhlIGZ1dHVyZSkKICAqIEByZXR1cm4gYSBuZXdseSBjcmVhdGVkIGRhdGFfbGlzdCBub2RlIHdoaWNoIHdhcyBpbnNlcnRlZCBpbiB0aGUgbGlzdAogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfREFUQV9MSVNUX0FERF9EQVRBCiBORVRTTk1QX0lOTElORSBuZXRzbm1wX2RhdGFfbGlzdCAqCiBuZXRzbm1wX2RhdGFfbGlzdF9hZGRfZGF0YShuZXRzbm1wX2RhdGFfbGlzdCAqKmhlYWQsIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLCBOZXRzbm1wX0ZyZWVfTGlzdF9EYXRhICogYmVlcikKQEAgLTE1MCw2ICsxNTcsNyBAQAogCiAgICAgcmV0dXJuIG5vZGU7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9EQVRBX0xJU1RfQUREX0RBVEEgKi8KIAogLyoqIHJldHVybnMgYSBkYXRhX2xpc3Qgbm9kZSdzIGRhdGEgZm9yIGEgZ2l2ZW4gbmFtZSB3aXRoaW4gYSBkYXRhX2xpc3QKICAqIEBwYXJhbSBoZWFkIHRoZSBoZWFkIG5vZGUgb2YgYSBkYXRhX2xpc3QKQEAgLTE3NCw2ICsxODIsNyBAQAogICogQHBhcmFtIG5hbWUgdGhlIG5hbWUgdG8gZmluZAogICogQHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGRhdGFfbGlzdCBub2RlCiAgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9EQVRBX0xJU1RfR0VUX0xJU1RfTk9ERQogTkVUU05NUF9JTkxJTkUgbmV0c25tcF9kYXRhX2xpc3QgICAgKgogbmV0c25tcF9nZXRfbGlzdF9ub2RlKG5ldHNubXBfZGF0YV9saXN0ICpoZWFkLCBjb25zdCBjaGFyICpuYW1lKQogewpAQCAtMTg2LDYgKzE5NSw3IEBACiAgICAgICAgIHJldHVybiBoZWFkOwogICAgIHJldHVybiBOVUxMOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfREFUQV9MSVNUX0dFVF9MSVNUX05PREUgKi8KIAogLyoqIFJlbW92ZXMgYSBuYW1lZCBub2RlIGZyb20gYSBkYXRhX2xpc3QgKGFuZCBmcmVlcyBpdCkKICAqIEBwYXJhbSByZWFsaGVhZCBhIHBvaW50ZXIgdG8gdGhlIGhlYWQgbm9kZSBvZiBhIGRhdGFfbGlzdApkaWZmIC0tZ2l0IGEvc25tcGxpYi9kZWZhdWx0X3N0b3JlLmMgYi9zbm1wbGliL2RlZmF1bHRfc3RvcmUuYwppbmRleCA4M2Y0ZTM0Li44ZGJjOWJjIDEwMDY0NAotLS0gYS9zbm1wbGliL2RlZmF1bHRfc3RvcmUuYworKysgYi9zbm1wbGliL2RlZmF1bHRfc3RvcmUuYwpAQCAtMTI2LDYgKzEyNiw3IEBACiAgKiAgQHsKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaWYgSEFWRV9TVERMSUJfSAogI2luY2x1ZGUgPHN0ZGxpYi5oPgpAQCAtMTU3LDYgKzE1OCwxNCBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoZGVmYXVsdF9zdG9yZV9hbGwsIGxpYm5ldHNubXApCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihkZWZhdWx0X3N0b3JlX3ZvaWQsIGRlZmF1bHRfc3RvcmVfYWxsKQorCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfREVGQVVMVF9TVE9SRV9WT0lECisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ERUZBVUxUX1NUT1JFX1ZPSUQgKi8KKworCiBzdGF0aWMgY29uc3QgY2hhciAqIHN0b3JlcyBbTkVUU05NUF9EU19NQVhfSURTXSA9IHsgIkxJQiIsICJBUFAiLCAiVE9LIiB9OwogCiB0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX2RzX3JlYWRfY29uZmlnX3MgewpAQCAtMTczLDcgKzE4Miw5IEBACiBzdGF0aWMgaW50ICAgbmV0c25tcF9kc19pbnRlZ2Vyc1tORVRTTk1QX0RTX01BWF9JRFNdW05FVFNOTVBfRFNfTUFYX1NVQklEU107CiBzdGF0aWMgY2hhciAgbmV0c25tcF9kc19ib29sZWFuc1tORVRTTk1QX0RTX01BWF9JRFNdW05FVFNOTVBfRFNfTUFYX1NVQklEUy84XTsKIHN0YXRpYyBjaGFyICpuZXRzbm1wX2RzX3N0cmluZ3NbTkVUU05NUF9EU19NQVhfSURTXVtORVRTTk1QX0RTX01BWF9TVUJJRFNdOworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RFRkFVTFRfU1RPUkVfVk9JRAogc3RhdGljIHZvaWQgKm5ldHNubXBfZHNfdm9pZHNbTkVUU05NUF9EU19NQVhfSURTXVtORVRTTk1QX0RTX01BWF9TVUJJRFNdOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfREVGQVVMVF9TVE9SRV9WT0lEICovCiAKIC8qCiAgKiBQcm90b3R5cGUgZGVmaW5pdGlvbnMgCkBAIC0zMTMsNiArMzI0LDcgQEAKICAgICByZXR1cm4gbmV0c25tcF9kc19zdHJpbmdzW3N0b3JlaWRdW3doaWNoXTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RFRkFVTFRfU1RPUkVfVk9JRAogaW50CiBuZXRzbm1wX2RzX3NldF92b2lkKGludCBzdG9yZWlkLCBpbnQgd2hpY2gsIHZvaWQgKnZhbHVlKQogewpAQCAtMzM5LDYgKzM1MSw3IEBACiAKICAgICByZXR1cm4gbmV0c25tcF9kc192b2lkc1tzdG9yZWlkXVt3aGljaF07CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ERUZBVUxUX1NUT1JFX1ZPSUQgKi8KIAogaW50CiBuZXRzbm1wX2RzX3BhcnNlX2Jvb2xlYW4oY2hhciAqbGluZSkKZGlmZiAtLWdpdCBhL3NubXBsaWIvZGlyX3V0aWxzLmMgYi9zbm1wbGliL2Rpcl91dGlscy5jCmluZGV4IGE5NzUwNWQuLmQzNWU3MDAgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvZGlyX3V0aWxzLmMKKysrIGIvc25tcGxpYi9kaXJfdXRpbHMuYwpAQCAtOSw2ICs5LDcgQEAKICAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtNDcsNiArNDgsMTMgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2ZpbGVfdXRpbHMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2Rpcl91dGlscy5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX2RpcmVjdG9yeSwgY29udGFpbmVyX3R5cGVzKQorI2lmZGVmIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX0NPTlRBSU5FUl9ESVJFQ1RPUlkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGZpbGVfdXRpbHMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjb250YWluZXJfZnJlZV9hbGwpCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfQ09OVEFJTkVSX0RJUkVDVE9SWSAqLworCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0RJUkVDVE9SWQogc3RhdGljIGludAogX2luc2VydF9uc2ZpbGUoIG5ldHNubXBfY29udGFpbmVyICpjLCBjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3RhdHMsCiAgICAgICAgICAgICAgICAgdV9pbnQgZmxhZ3MpOwpAQCAtMjI5LDEwICsyMzcsMTMgQEAKICAgICAgICAgfQogICAgIAogICAgICAgICAvKiogdXNlIHN0YXRzIGZyb20gZWFybGllciBpZiB3ZSBoYXZlIHRoZW0gKi8KLSAgICAgICAgaWYgKHN0YXRzKQorICAgICAgICBpZiAoc3RhdHMpIHsKICAgICAgICAgICAgIG1lbWNweShuc19maWxlLT5zdGF0cywgc3RhdHMsIHNpemVvZigqc3RhdHMpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RhdChuc19maWxlLT5uYW1lLCBuc19maWxlLT5zdGF0cyk7CisgICAgICAgIH0gZWxzZSBpZiAoc3RhdChuc19maWxlLT5uYW1lLCBuc19maWxlLT5zdGF0cykgPCAwKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAic3RhdCgpIGZhaWxlZCBmb3IgbnNfZmlsZVxuIik7CisgICAgICAgICAgICBuZXRzbm1wX2ZpbGVfcmVsZWFzZShuc19maWxlKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJjID0gQ09OVEFJTkVSX0lOU0VSVChjLCBuc19maWxlKTsKQEAgLTI0MywzICsyNTQsNiBAQAogCiAgICAgcmV0dXJuIDA7CiB9CisjZWxzZSAgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfRElSRUNUT1JZICovCituZXRzbm1wX2ZlYXR1cmVfdW51c2VkKGNvbnRhaW5lcl9kaXJlY3RvcnkpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0RJUkVDVE9SWSAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9mZF9ldmVudF9tYW5hZ2VyLmMgYi9zbm1wbGliL2ZkX2V2ZW50X21hbmFnZXIuYwppbmRleCAyMDQ1NGY3Li5mOWNmMDhlIDEwMDY0NAotLS0gYS9zbm1wbGliL2ZkX2V2ZW50X21hbmFnZXIuYworKysgYi9zbm1wbGliL2ZkX2V2ZW50X21hbmFnZXIuYwpAQCAtNCwxMiArNCwxNSBAQAogI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KICNlbmRpZgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoZmRfZXZlbnRfbWFuYWdlciwgbGlibmV0c25tcCkKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZEX0VWRU5UX01BTkFHRVIKIGludCAgICAgZXh0ZXJuYWxfcmVhZGZkW05VTV9FWFRFUk5BTF9GRFNdLCAgIGV4dGVybmFsX3JlYWRmZGxlbiAgID0gMDsKIGludCAgICAgZXh0ZXJuYWxfd3JpdGVmZFtOVU1fRVhURVJOQUxfRkRTXSwgIGV4dGVybmFsX3dyaXRlZmRsZW4gID0gMDsKIGludCAgICAgZXh0ZXJuYWxfZXhjZXB0ZmRbTlVNX0VYVEVSTkFMX0ZEU10sIGV4dGVybmFsX2V4Y2VwdGZkbGVuID0gMDsKQEAgLTI4OSwzICsyOTIsNiBAQAogICAgICAgfQogICB9CiB9CisjZWxzZSAgLyogICFORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZEX0VWRU5UX01BTkFHRVIgKi8KK25ldHNubXBfZmVhdHVyZV91bnVzZWQoZmRfZXZlbnRfbWFuYWdlcik7CisjZW5kaWYgLyogICFORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZEX0VWRU5UX01BTkFHRVIgKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvZmlsZV91dGlscy5jIGIvc25tcGxpYi9maWxlX3V0aWxzLmMKaW5kZXggODg5ZDU1Mi4uNTI2MTQzMSAxMDA2NDQKLS0tIGEvc25tcGxpYi9maWxlX3V0aWxzLmMKKysrIGIvc25tcGxpYi9maWxlX3V0aWxzLmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTM3LDcgKzM4LDExIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2ZpbGVfdXRpbHMuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGZpbGVfdXRpbHNfYWxsLCBsaWJuZXRzbm1wKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGZpbGVfdXRpbHMsIGZpbGVfdXRpbHNfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGZpbGVfY2xvc2UsIGZpbGVfdXRpbHNfYWxsKQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRklMRV9VVElMUwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCiAgKiBQcm90b3R5cGVzCkBAIC0yMDYsNiArMjExLDcgQEAKICAqIEByZXR2YWwgIDAgOiBzdWNjZXNzCiAgKiBAcmV0dmFsIC0xIDogZXJyb3IKICAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZJTEVfQ0xPU0UKIGludAogbmV0c25tcF9maWxlX2Nsb3NlKG5ldHNubXBfZmlsZSAqIGZpbGVpKQogewpAQCAtMjM2LDYgKzI0Miw3IEBACiAKICAgICByZXR1cm4gcmM7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GSUxFX0NMT1NFICovCiAKIHZvaWQKIG5ldHNubXBfZmlsZV9jb250YWluZXJfZnJlZShuZXRzbm1wX2ZpbGUgKmZpbGUsIHZvaWQgKmNvbnRleHQpCkBAIC0yNTEsMyArMjU4LDYgQEAKIAogICAgIHJldHVybiBzdHJjbXAobGhzLT5uYW1lLCByaHMtPm5hbWUpOwogfQorI2Vsc2UgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GSUxFX1VUSUxTICovCituZXRzbm1wX2ZlYXR1cmVfdW51c2VkKGZpbGVfdXRpbHMpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRklMRV9VVElMUyAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9nZXR0aW1lb2ZkYXkuYyBiL3NubXBsaWIvZ2V0dGltZW9mZGF5LmMKaW5kZXggM2M3NWQzYS4uZGY1YzBhMCAxMDA2NDQKLS0tIGEvc25tcGxpYi9nZXR0aW1lb2ZkYXkuYworKysgYi9zbm1wbGliL2dldHRpbWVvZmRheS5jCkBAIC0yOCw2ICsyOCw2IEBACiAKICAgICBfZnRpbWUoJnRpbWVidWZmZXIpOwogICAgIHR2LT50dl91c2VjID0gdGltZWJ1ZmZlci5taWxsaXRtICogMTAwMDsKLSAgICB0di0+dHZfc2VjID0gdGltZWJ1ZmZlci50aW1lOworICAgIHR2LT50dl9zZWMgPSAobG9uZyl0aW1lYnVmZmVyLnRpbWU7CiAgICAgcmV0dXJuICgwKTsKIH0KZGlmZiAtLWdpdCBhL3NubXBsaWIvaW50NjQuYyBiL3NubXBsaWIvaW50NjQuYwppbmRleCAyZDg2OTU5Li41MWYxZjMyIDEwMDY0NAotLS0gYS9zbm1wbGliL2ludDY0LmMKKysrIGIvc25tcGxpYi9pbnQ2NC5jCkBAIC0yMyw2ICsyMyw4IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKIC8qKgogICogRGl2aWRlIGFuIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIGJ5IDEwLgogICoKQEAgLTE5Nyw2ICsxOTksOCBAQAogICAgIHU2NEluY3IocHU2NG91dCwgJnRtcCk7CiB9CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1NjRjb3B5LCBuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VNjRDT1BZCiAvKioKICAqIENvcHkgYSA2NC1iaXQgbnVtYmVyLgogICoKQEAgLTIwOCw2ICsyMTIsNyBAQAogewogICAgICpwdTY0b25lID0gKnB1NjR0d287CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VNjRDT1BZICovCiAKIC8qKgogICogU2V0IGFuIHVuc2lnbmVkIDY0LWJpdCBudW1iZXIgdG8gemVyby4KZGlmZiAtLWdpdCBhL3NubXBsaWIva2V5dG9vbHMuYyBiL3NubXBsaWIva2V5dG9vbHMuYwppbmRleCBjMWRiY2Q2Li4wY2NiM2E2IDEwMDY0NAotLS0gYS9zbm1wbGliL2tleXRvb2xzLmMKKysrIGIvc25tcGxpYi9rZXl0b29scy5jCkBAIC0xNCw2ICsxNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgpAQCAtNjIsNiArNjMsMTEgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVzbV9zdXBwb3J0LCBsaWJuZXRzbm1wKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVzbV9rZXl0b29scywgdXNtX3N1cHBvcnQpCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VU01fS0VZVE9PTFMKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiotby0qKioqKioKICAqIGdlbmVyYXRlX0t1CiAgKgpAQCAtNjUzLDggKzY1OSw3IEBACiAgICAgICAgICAgICBtZW1zZXQobmV3a2V5LCAwLCBwcm9wZXJsZW5ndGgpOwogICAgIH0KICAgICBtZW1zZXQodG1wX2J1ZiwgMCwgU05NUF9NQVhCVUYpOwotICAgIGlmICh0bXBidWYgIT0gTlVMTCkKLSAgICAgICAgU05NUF9GUkVFKHRtcGJ1Zik7CisgICAgU05NUF9GUkVFKHRtcGJ1Zik7CiAKICAgICByZXR1cm4gcnZhbDsKIApAQCAtNjYzLDMgKzY2OCw0IEBACiAjZWxzZQogX0tFWVRPT0xTX05PVF9BVkFJTEFCTEUKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW50ZXJuYWwgb3Igb3BlbnNzbCAqLworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVVNNX0tFWVRPT0xTICovCmRpZmYgLS1naXQgYS9zbm1wbGliL2xhcmdlX2ZkX3NldC5jIGIvc25tcGxpYi9sYXJnZV9mZF9zZXQuYwppbmRleCAzYjhiNGE0Li4zMmY1N2IzIDEwMDY0NAotLS0gYS9zbm1wbGliL2xhcmdlX2ZkX3NldC5jCisrKyBiL3NubXBsaWIvbGFyZ2VfZmRfc2V0LmMKQEAgLTEyMSwxMCArMTIxLDEwIEBACiB9CiAKIGludAotbmV0X3NubXBfbGFyZ2VfZmRfc2V0X3NlbGVjdChpbnQgbnVtZmRzLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqcmVhZGZkcywKLSAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqd3JpdGVmZHMsCi0gICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKmV4Y2VwdGZkcywKLSAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCkKK25ldHNubXBfbGFyZ2VfZmRfc2V0X3NlbGVjdChpbnQgbnVtZmRzLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqcmVhZGZkcywKKyAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICp3cml0ZWZkcywKKyAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpleGNlcHRmZHMsCisgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCkKIHsKICNpZiBkZWZpbmVkKGN5Z3dpbikgfHwgIWRlZmluZWQoSEFWRV9XSU5TT0NLX0gpCiAgICAgLyogQml0LXNldCByZXByZXNlbnRhdGlvbjogbWFrZSBzdXJlIGFsbCBmZHMgaGF2ZSBhdCBsZWFzdCBzaXplICdudW1mZHMnLiAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9sY2RfdGltZS5jIGIvc25tcGxpYi9sY2RfdGltZS5jCmluZGV4IDIyMjI5MDQuLjJiZmE1NDkgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvbGNkX3RpbWUuYworKysgYi9zbm1wbGliL2xjZF90aW1lLmMKQEAgLTYsNiArNiw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtNTIsNiArNTMsMTEgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVzbV9zdXBwb3J0LCBsaWJuZXRzbm1wKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVzbV9sY2RfdGltZSwgdXNtX3N1cHBvcnQpCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VU01fTENEX1RJTUUKKwogLyoKICAqIEdsb2JhbCBzdGF0aWMgaGFzaGxpc3QgdG8gY29udGFpbiBFbmdpbmV0aW1lIGVudHJpZXMuCiAgKgpAQCAtOTQsNyArMTAwLDcgQEAKICAgICAgICAgICAgICAgIHVfaW50ICogZW5naW5lX3RpbWUsIHVfaW50IGF1dGhlbnRpY2F0ZWQpCiB7CiAgICAgaW50ICAgICAgICAgICAgIHJ2YWwgPSBTTk1QRVJSX1NVQ0NFU1M7Ci0gICAgdGltZV90ICAgICAgICAgIHRpbWVkaWZmID0gMDsKKyAgICBpbnQgICAgICAgICAgICAgdGltZWRpZmYgPSAwOwogICAgIEVuZ2luZXRpbWUgICAgICBlID0gTlVMTDsKIAogCkBAIC0xMjYsNyArMTMyLDcgQEAKICAgICAgICAgKmVuZ2luZV90aW1lID0gZS0+ZW5naW5lVGltZTsKICAgICAgICAgKmVuZ2luZWJvb3QgPSBlLT5lbmdpbmVCb290OwogCi0gICAgICAgdGltZWRpZmYgPSBzbm1wdjNfbG9jYWxfc25tcEVuZ2luZVRpbWUoKSAtIGUtPmxhc3RSZWNlaXZlZEVuZ2luZVRpbWU7CisgICAgICAgdGltZWRpZmYgPSAoaW50KSAoc25tcHYzX2xvY2FsX3NubXBFbmdpbmVUaW1lKCkgLSBlLT5sYXN0UmVjZWl2ZWRFbmdpbmVUaW1lKTsKIAogI2lmZGVmIExDRF9USU1FX1NZTkNfT1BUCiAgICAgfQpAQCAtMTkwLDcgKzE5Niw3IEBACiAgICAgICAgICAgICAgICAgICB1X2ludCAqIGxhc3RfZW5naW5lX3RpbWUsIHVfaW50IGF1dGhlbnRpY2F0ZWQpCiB7CiAgICAgaW50ICAgICAgICAgICAgIHJ2YWwgPSBTTk1QRVJSX1NVQ0NFU1M7Ci0gICAgdGltZV90ICAgICAgICAgIHRpbWVkaWZmID0gMDsKKyAgICBpbnQgICAgICAgICAgICAgdGltZWRpZmYgPSAwOwogICAgIEVuZ2luZXRpbWUgICAgICBlID0gTlVMTDsKIAogCkBAIC0yMjIsNyArMjI4LDcgQEAKICAgICAgICAgKmxhc3RfZW5naW5lX3RpbWUgPSAqZW5naW5lX3RpbWUgPSBlLT5lbmdpbmVUaW1lOwogICAgICAgICAqZW5naW5lYm9vdCA9IGUtPmVuZ2luZUJvb3Q7CiAKLSAgICAgICB0aW1lZGlmZiA9IHNubXB2M19sb2NhbF9zbm1wRW5naW5lVGltZSgpIC0gZS0+bGFzdFJlY2VpdmVkRW5naW5lVGltZTsKKyAgICAgICB0aW1lZGlmZiA9IChpbnQpIChzbm1wdjNfbG9jYWxfc25tcEVuZ2luZVRpbWUoKSAtIGUtPmxhc3RSZWNlaXZlZEVuZ2luZVRpbWUpOwogCiAjaWZkZWYgTENEX1RJTUVfU1lOQ19PUFQKICAgICB9CkBAIC02MDUsMyArNjExLDQgQEAKIAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlbmQgZHVtcF9ldGltZWxpc3QoKSAqLwogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBORVRTTk1QX0VOQUJMRV9URVNUSU5HX0NPREUgKi8KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VTTV9MQ0RfVElNRSAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9taWIuYyBiL3NubXBsaWIvbWliLmMKaW5kZXggOTYyNWQ5Ni4uYmUwZTYyNyAxMDA2NDQKLS0tIGEvc25tcGxpYi9taWIuYworKysgYi9zbm1wbGliL21pYi5jCkBAIC0zOCw2ICszOCw3IEBACiAgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KQEAgLTEwNCw2ICsxMDUsMTkgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2ludDY0Lmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobWliX2FwaSwgbGlibmV0c25tcCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihtaWJfc3RyaW5nc19hbGwsIG1pYl9hcGkpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihtaWJfc25wcmludCwgbWliX3N0cmluZ3NfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG1pYl9zbnByaW50X2Rlc2NyaXB0aW9uLCBtaWJfc3RyaW5nc19hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobWliX3NucHJpbnRfdmFyaWFibGUsIG1pYl9zdHJpbmdzX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihtaWJfc3RyaW5nX2NvbnZlcnNpb25zLCBtaWJfc3RyaW5nc19hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocHJpbnRfbWliLCBtaWJfc3RyaW5nc19hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc25wcmludF9vYmppZCwgbWliX3N0cmluZ3NfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNucHJpbnRfdmFsdWUsIG1pYl9zdHJpbmdzX2FsbCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG1pYl90b19hc25fdHlwZSwgbWliX2FwaSkKKwogLyoqIEBkZWZncm91cCBtaWJfdXRpbGl0aWVzIG1pYiBwYXJzaW5nIGFuZCBkYXRhdHlwZSBtYW5pcHVsYXRpb24gcm91dGluZXMuCiAgKiAgQGluZ3JvdXAgbGlicmFyeQogICoKQEAgLTI4OTgsNyArMjkxMiw2IEBACiAgICAgICAgIGlmICh0cmVlX3RvcC0+bGFiZWwpCiAgICAgICAgICAgICBTTk1QX0ZSRUUodHJlZV90b3AtPmxhYmVsKTsKICAgICAgICAgU05NUF9GUkVFKHRyZWVfdG9wKTsKLSAgICAgICAgdHJlZV90b3AgPSBOVUxMOwogICAgIH0KICAgICB0cmVlX2hlYWQgPSBOVUxMOwogICAgIE1pYiA9IE5VTEw7CkBAIC0yOTI0LDExICsyOTM3LDEzIEBACiAgKgogICogQHBhcmFtIGZwICAgVGhlIGZpbGUgZGVzY3JpcHRvciB0byBwcmludCB0by4KICAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1BSSU5UX01JQgogdm9pZAogcHJpbnRfbWliKEZJTEUgKiBmcCkKIHsKICAgICBwcmludF9zdWJ0cmVlKGZwLCB0cmVlX2hlYWQsIDApOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUFJJTlRfTUlCICovCiAKIHZvaWQKIHByaW50X2FzY2lpX2R1bXAoRklMRSAqIGZwKQpAQCAtMzMwOSw2ICszMzI0LDcgQEAKICAgICByZXR1cm4gIWJ1Zl9vdmVyZmxvdzsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NQUklOVF9PQkpJRAogaW50CiBzbnByaW50X29iamlkKGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zl9sZW4sCiAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4pCkBAIC0zMzIyLDYgKzMzMzgsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1BSSU5UX09CSklEICovCiAKIC8qKgogICogUHJpbnRzIGFuIG9pZCB0byBzdGRvdXQuCkBAIC0zNDU5LDYgKzM0NzYsNyBAQAogICAgIH0KIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOUFJJTlRfVkFSQUJMRQogaW50CiBzbnByaW50X3ZhcmlhYmxlKGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zl9sZW4sCiAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sCkBAIC0zNDczLDYgKzM0OTEsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05QUklOVF9WQVJBQkxFICovCiAKIC8qKgogICogUHJpbnRzIGEgdmFyaWFibGUgdG8gc3Rkb3V0LgpAQCAtMzU2Nyw2ICszNTg2LDggQEAKICAgICB9CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTlBSSU5UX1ZBTFVFCisvKiB1c2VkIGluIHRoZSBwZXJsIG1vZHVsZSAqLwogaW50CiBzbnByaW50X3ZhbHVlKGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zl9sZW4sCiAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sCkBAIC0zNTgxLDYgKzM2MDIsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05QUklOVF9WQUxVRSAqLwogCiB2b2lkCiBwcmludF92YWx1ZShjb25zdCBvaWQgKiBvYmppZCwKQEAgLTQ2ODQsNiArNDcwNiw3IEBACiAgICAgU05NUF9GUkVFKGJ1Zik7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NSUJfU05QUklOVF9ERVNDUklQVElPTgogaW50CiBzbnByaW50X2Rlc2NyaXB0aW9uKGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zl9sZW4sCiAgICAgICAgICAgICAgICAgICAgIG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sIGludCB3aWR0aCkKQEAgLTQ2OTcsNiArNDcyMCw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NSUJfU05QUklOVF9ERVNDUklQVElPTiAqLwogCiBpbnQKIHNwcmludF9yZWFsbG9jX2Rlc2NyaXB0aW9uKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sCkBAIC02MDEyLDcgKzYwMzYsNiBAQAogCiAvKioKICAqIENvbnZlcnRzIHRpbWV0aWNrcyB0byBob3VycywgbWludXRlcywgc2Vjb25kcyBzdHJpbmcuCi0gKiBDTVUgY29tcGF0aWJsZSBkb2VzIG5vdCBzaG93IGNlbnRpc2Vjb25kcy4KICAqCiAgKiBAcGFyYW0gdGltZXRpY2tzICAgIFRoZSB0aW1ldGlja3MgdG8gY29udmVydC4KICAqIEBwYXJhbSBidWYgICAgICAgICAgQnVmZmVyIHRvIHdyaXRlIHRvLCBoYXMgdG8gYmUgYXQgCkBAIC02MDMyLDEzICs2MDU1LDYgQEAKIHVwdGltZV9zdHJpbmdfbih1X2xvbmcgdGltZXRpY2tzLCBjaGFyICpidWYsIHNpemVfdCBidWZsZW4pCiB7CiAgICAgdXB0aW1lU3RyaW5nKHRpbWV0aWNrcywgYnVmLCBidWZsZW4pOwotI2lmZGVmIENNVV9DT01QQVRJQkxFCi0gICAgewotICAgIGNoYXIgKmNwID0gc3RycmNocihidWYsICcuJyk7Ci0gICAgaWYgKGNwKQotICAgICAgICAqY3AgPSAnXDAnOwotICAgIH0KLSNlbmRpZgogICAgIHJldHVybiBidWY7CiB9CiAKQEAgLTYzOTEsNiArNjQwNyw3IEBACiAKICNlbmRpZiAvKiB0ZXN0X2Rpc3BsYXlfaGludCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTUlCX1RPX0FTTl9UWVBFCiB1X2NoYXIKIG1pYl90b19hc25fdHlwZShpbnQgbWliX3R5cGUpCiB7CkBAIC02NDQwLDYgKzY0NTcsNyBAQAogICAgIH0KICAgICByZXR1cm4gLTE7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NSUJfVE9fQVNOX1RZUEUgKi8KIAogLyoqCiAgKiBDb252ZXJ0cyBhIHN0cmluZyB0byBpdHMgT0lEIGZvcm0uCkBAIC02NDUxLDYgKzY0NjksNyBAQAogICoKICAqIEByZXR1cm4gMCBvbiBTdWNlc3MsIDEgb24gZmFpbHVyZS4KICAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX01JQl9TVFJJTkdfQ09OVkVSU0lPTlMKIGludAogbmV0c25tcF9zdHIyb2lkKGNvbnN0IGNoYXIgKlMsIG9pZCAqIE8sIGludCBMKQogewpAQCAtNjUzMCw3ICs2NTQ5LDEwIEBACiAKICAgICByZXR1cm4gMDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX01JQl9TVFJJTkdfQ09OVkVSU0lPTlMgKi8KIAorCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTUlCX1NOUFJJTlQKIGludAogc25wcmludF9ieV90eXBlKGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zl9sZW4sCiAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyLApAQCAtNjgwOCw1ICs2ODMwLDYgQEAKICAgICAgICAgcmV0dXJuIC0xOwogfQogI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NSUJfU05QUklOVCAqLwogLyoqIEB9ICovCiAKZGlmZiAtLWdpdCBhL3NubXBsaWIvb2lkX3N0YXNoLmMgYi9zbm1wbGliL29pZF9zdGFzaC5jCmluZGV4IDg2MGFiYWIuLjhhNzk4OTcgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvb2lkX3N0YXNoLmMKKysrIGIvc25tcGxpYi9vaWRfc3Rhc2guYwpAQCAtNSw4ICs1LDE1IEBACiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihvaWRfc3Rhc2hfYWxsLCBsaWJuZXRzbm1wKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG9pZF9zdGFzaCwgb2lkX3N0YXNoX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihvaWRfc3Rhc2hfbm9fZnJlZSwgb2lkX3N0YXNoX2FsbCkKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09JRF9TVEFTSAorCiAvKiogQGRlZmdyb3VwIG9pZF9zdGFzaCBTdG9yZSBhbmQgcmV0cmlldmUgZGF0YSByZWZlcmVuY2VkIGJ5IGFuIE9JRC4KICAgICBUaGlzIGlzIGVzc2VudGlhbGx5IGEgd2F5IG9mIHN0b3JpbmcgZGF0YSBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbgogICAgIE9JRC4gIEl0IHN0b3JlcyBhIGJ1bmNoIG9mIGRhdGEgcG9pbnRlcnMgd2l0aGluIGEgbWVtb3J5IHRyZWUgdGhhdApAQCAtNjgsNiArNzUsOCBAQAogICAgIHJldHVybiBuZXRzbm1wX29pZF9zdGFzaF9jcmVhdGVfc2l6ZWRfbm9kZShPSURfU1RBU0hfQ0hJTERSRU5fU0laRSk7CiB9CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihvaWRfc3Rhc2hfYWRkX2RhdGEsIG9pZF9zdGFzaF9hbGwpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfT0lEX1NUQVNIX0FERF9EQVRBCiAvKiogYWRkcyBkYXRhIHRvIHRoZSBzdGFzaCBhdCBhIGdpdmVuIG9pZC4KIAogICogQHBhcmFtIHJvb3QgdGhlIHRvcCBvZiB0aGUgc3Rhc2ggdHJlZQpAQCAtMTQ0LDYgKzE1Myw3IEBACiAgICAgdG1wcC0+dGhlZGF0YSA9IG15ZGF0YTsKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfT0lEX1NUQVNIX0FERF9EQVRBICovCiAKIC8qKiByZXR1cm5zIGEgbm9kZSBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBPSUQuCiAgKiBAcGFyYW0gcm9vdCB0aGUgdG9wIG9mIHRoZSBzdGFzaCB0cmVlCkBAIC0xODcsNiArMTk3LDggQEAKICAqIEBwYXJhbSBsb29rdXAgdGhlIG9pZCB0byBsb29rIHVwIGEgbm9kZSBmb3IuCiAgKiBAcGFyYW0gbG9va3VwX2xlbiB0aGUgbGVuZ3RoIG9mIHRoZSBsb29rdXAgb2lkCiAgKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihvaWRfc3Rhc2hfaXRlcmF0ZSwgb2lkX3N0YXNoX2FsbCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9PSURfU1RBU0hfSVRFUkFURQogbmV0c25tcF9vaWRfc3Rhc2hfbm9kZSAqCiBuZXRzbm1wX29pZF9zdGFzaF9nZXRuZXh0X25vZGUobmV0c25tcF9vaWRfc3Rhc2hfbm9kZSAqcm9vdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiBsb29rdXAsIHNpemVfdCBsb29rdXBfbGVuKQpAQCAtMjY4LDcgKzI4MCwxMCBAQAogICAgIC8qIGZlbGwgb2ZmIHRoZSB0b3AgKi8KICAgICByZXR1cm4gTlVMTDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09JRF9TVEFTSF9JVEVSQVRFICovCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihvaWRfc3Rhc2hfZ2V0X2RhdGEsIG9pZF9zdGFzaF9hbGwpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfT0lEX1NUQVNIX0dFVF9EQVRBCiAvKiogcmV0dXJucyBhIGRhdGEgcG9pbnRlciBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBPSUQuCiAKICAgICBUaGlzIGlzIGVxdWl2ZWxlbnQgdG8gbmV0c25tcF9vaWRfc3Rhc2hfZ2V0X25vZGUsIGJ1dCByZXR1cm5zIG9ubHkKQEAgLTI4OCw3ICszMDMsMTAgQEAKICAgICAgICAgcmV0dXJuIHJldC0+dGhlZGF0YTsKICAgICByZXR1cm4gTlVMTDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09JRF9TVEFTSF9HRVRfREFUQSAqLwogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yob2lkX3N0YXNoX3N0b3JlX2FsbCwgb2lkX3N0YXNoX2FsbCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9PSURfU1RBU0hfU1RPUkVfQUxMCiAvKiogYSB3cmFwcGVyIGFyb3VuZCBuZXRzbm1wX29pZF9zdGFzaF9zdG9yZSBmb3IgdXNlIHdpdGggYSBzbm1wX2FsYXJtLgogICogd2hlbiBjYWxsaW5nIHNubXBfYWxhcm0sIHlvdSBjYW4gbGlzdCB0aGlzIGFzIGEgY2FsbGJhY2suICBUaGUKICAqIGNsaWVudGFyZyBzaG91bGQgYmUgYSBwb2ludGVyIHRvIGEgbmV0c25tcF9vaWRfc3Rhc2hfc2F2ZV9pbmZvCkBAIC0zMTQsNiArMzMyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWRiYXNlLDApOwogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfT0lEX1NUQVNIX1NUT1JFX0FMTCAqLwogCiAvKiogc3RvcmVzIGRhdGEgaW4gYSBzdGFyc2ggdHJlZSB0byBwZXJpc3RlbnQgc3RvcmFnZS4KIApAQCAtNDI3LDEwICs0NDYsMTYgQEAKICAgICAqcm9vdCA9IE5VTEw7CiB9CiAKKyNlbHNlIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfT0lEX1NUQVNIICovCituZXRzbm1wX2ZlYXR1cmVfdW51c2VkKG9pZF9zdGFzaCk7CisjZW5kaWYvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09JRF9TVEFTSCAqLworCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfT0lEX1NUQVNIX05PX0ZSRUUKIHZvaWQKIG5ldHNubXBfb2lkX3N0YXNoX25vX2ZyZWUodm9pZCAqYm9ndXMpCiB7CiAgICAgLyogbm9vcCAqLwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfT0lEX1NUQVNIX05PX0ZSRUUgKi8KIAogLyoqIEB9ICovCmRpZmYgLS1naXQgYS9zbm1wbGliL3BhcnNlLmMgYi9zbm1wbGliL3BhcnNlLmMKaW5kZXggODE3Yzg5Ny4uNGQ0NGQ4OCAxMDA2NDQKLS0tIGEvc25tcGxpYi9wYXJzZS5jCisrKyBiL3NubXBsaWIvcGFyc2UuYwpAQCAtMzMsNiArMzMsNyBAQAogICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX01JQl9MT0FESU5HCiAKQEAgLTEwNiw2ICsxMDcsMTAgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3BhcnNlLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9taWIuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS90b29scy5oPgorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoZmluZF9tb2R1bGUsIG1pYl9hcGkpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoZ2V0X3RjX2Rlc2NyaXB0aW9uLCBtaWJfYXBpKQogCiAvKgogICogQSBsaW5rZWQgbGlzdCBvZiBub2Rlcy4KQEAgLTUyOSw3ICs1MzQsMTEgQEAKICAqICNkZWZpbmUgTU9EVUxFX0xPQURfRkFJTEVEICAgMyAgICAgICAKICAqLwogI2RlZmluZSBNT0RVTEVfTE9BRF9GQUlMRUQJTU9EVUxFX05PVF9GT1VORAorI2RlZmluZSBNT0RVTEVfU1lOVEFYX0VSUk9SICAgICA0CiAKK2ludCBnTWliRXJyb3IgPSAwLGdMb29wID0gMDsKK2NoYXIgKmdwTWliRXJyb3JTdHJpbmcgPSBOVUxMOworY2hhciBnTWliTmFtZXNbU1RSSU5HTUFYXTsKIAogI2RlZmluZSBIQVNIU0laRSAgICAgICAgMzIKICNkZWZpbmUgQlVDS0VUKHgpICAgICAgICh4ICYgKEhBU0hTSVpFLTEpKQpAQCAtNzc0LDExICs3ODMsMTQgQEAKIAogc3RhdGljIGludCAgICAgIGVycm9uZW91c01pYnMgPSAwOwogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocGFyc2VfZ2V0X2Vycm9yX2NvdW50LCBuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9QQVJTRV9HRVRfRVJST1JfQ09VTlQKIGludAogZ2V0X21pYl9wYXJzZV9lcnJvcl9jb3VudCh2b2lkKQogewogICAgIHJldHVybiBlcnJvbmVvdXNNaWJzOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUEFSU0VfR0VUX0VSUk9SX0NPVU5UICovCiAKIAogc3RhdGljIHZvaWQKQEAgLTkwNiw5ICs5MTgsOSBAQAogCiAgICAgdW5saW5rX3RidWNrZXQoVHJlZSk7CiAgICAgZnJlZV9wYXJ0aWFsX3RyZWUoVHJlZSwgRkFMU0UpOwotICAgIGlmIChUcmVlLT5udW1iZXJfbW9kdWxlcyA+IDEpCi0gICAgICAgIGZyZWUoKGNoYXIgKikgVHJlZS0+bW9kdWxlX2xpc3QpOwotICAgIGZyZWUoKGNoYXIgKikgVHJlZSk7CisgICAgaWYgKFRyZWUtPm1vZHVsZV9saXN0ICE9ICZUcmVlLT5tb2RpZCkKKyAgICAgICAgZnJlZShUcmVlLT5tb2R1bGVfbGlzdCk7CisgICAgZnJlZShUcmVlKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTE1NTksMTUgKzE1NzEsMTQgQEAKICAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgICAqIFVwZGF0ZSBsaXN0IG9mIG1vZHVsZXMgCiAgICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgaW50X3AgPQotICAgICAgICAgICAgICAgICAgICAoaW50ICopIG1hbGxvYygodHAtPm51bWJlcl9tb2R1bGVzICsgMSkgKiBzaXplb2YoaW50KSk7CisgICAgICAgICAgICAgICAgaW50X3AgPSBtYWxsb2MoKHRwLT5udW1iZXJfbW9kdWxlcyArIDEpICogc2l6ZW9mKGludCkpOwogICAgICAgICAgICAgICAgIGlmIChpbnRfcCA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgbWVtY3B5KGludF9wLCB0cC0+bW9kdWxlX2xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgIHRwLT5udW1iZXJfbW9kdWxlcyAqIHNpemVvZihpbnQpKTsKICAgICAgICAgICAgICAgICBpbnRfcFt0cC0+bnVtYmVyX21vZHVsZXNdID0gbnAtPm1vZGlkOwotICAgICAgICAgICAgICAgIGlmICh0cC0+bnVtYmVyX21vZHVsZXMgPiAxKQotICAgICAgICAgICAgICAgICAgICBmcmVlKChjaGFyICopIHRwLT5tb2R1bGVfbGlzdCk7CisgICAgICAgICAgICAgICAgaWYgKHRwLT5tb2R1bGVfbGlzdCAhPSAmdHAtPm1vZGlkKQorICAgICAgICAgICAgICAgICAgICBmcmVlKHRwLT5tb2R1bGVfbGlzdCk7CiAgICAgICAgICAgICAgICAgKyt0cC0+bnVtYmVyX21vZHVsZXM7CiAgICAgICAgICAgICAgICAgdHAtPm1vZHVsZV9saXN0ID0gaW50X3A7CiAKQEAgLTIxNDAsNiArMjE1MSw4IEBACiAgICAgcmV0dXJuICh0Y2xpc3RbdGNfaW5kZXhdLmRlc2NyaXB0b3IpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfR0VUX1RDX0RFU0NSSVBUSU9OCisvKiB1c2VkIGluIHRoZSBwZXJsIG1vZHVsZSAqLwogY29uc3QgY2hhciAgICAgKgogZ2V0X3RjX2Rlc2NyaXB0aW9uKGludCB0Y19pbmRleCkKIHsKQEAgLTIxNDcsNiArMjE2MCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiAodGNsaXN0W3RjX2luZGV4XS5kZXNjcmlwdGlvbik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9HRVRfVENfREVTQ1JJUFRJT04gKi8KIAogCiAvKgpAQCAtMjk3NSw2ICsyOTg5LDE1IEBACiAgICAgICAgIGZyZWVfbm9kZShucCk7CiAgICAgICAgIHJldHVybiAoTlVMTCk7CiAgICAgfQorCisgICAgLyogQ2F0Y2ggdGhlIHN5bnRheCBlcnJvciAqLworICAgIGlmIChucC0+cGFyZW50ID09IE5VTEwpIHsKKyAgICAgICAgZnJlZV9ub2RlKG5wLT5uZXh0KTsKKyAgICAgICAgZnJlZV9ub2RlKG5wKTsKKyAgICAgICAgZ01pYkVycm9yID0gTU9EVUxFX1NZTlRBWF9FUlJPUjsKKyAgICAgICAgcmV0dXJuIChOVUxMKTsKKyAgICB9CisKICAgICBucC0+bmV4dC0+cGFyZW50ID0gbnAtPnBhcmVudDsKICAgICBucC0+cGFyZW50ID0gKGNoYXIgKikgbWFsbG9jKHN0cmxlbihucC0+cGFyZW50KSArIDIpOwogICAgIGlmIChucC0+cGFyZW50ID09IE5VTEwpIHsKQEAgLTM3NTQsNiArMzc3Nyw4IEBACiAgKiAgICAgIG9yIHRob3NlIHJlbGF0aW5nIHRvIGEgc3BlY2lmaWVkIGlkZW50aWZpZXIgKHJlYWRfaW1wb3J0X3JlcGxhY2VtZW50cykKICAqICAgICAgcGx1cyBhbiBpbnRlcmZhY2UgdG8gYWRkIG5ldyByZXBsYWNlbWVudCByZXF1aXJlbWVudHMKICAqLworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHBhcnNlX2FkZF9tb2R1bGVfcmVwbGFjZW1lbnQsIG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1BBUlNFX0FERF9NT0RVTEVfUkVQTEFDRU1FTlQKIHZvaWQKIGFkZF9tb2R1bGVfcmVwbGFjZW1lbnQoY29uc3QgY2hhciAqb2xkX21vZHVsZSwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmV3X21vZHVsZV9uYW1lLApAQCAtMzc3NSw2ICszODAwLDcgQEAKICAgICBtY3AtPm5leHQgPSBtb2R1bGVfbWFwX2hlYWQ7CiAgICAgbW9kdWxlX21hcF9oZWFkID0gbWNwOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUEFSU0VfQUREX01PRFVMRV9SRVBMQUNFTUVOVCAqLwogCiBzdGF0aWMgaW50CiByZWFkX21vZHVsZV9yZXBsYWNlbWVudHMoY29uc3QgY2hhciAqbmFtZSkKQEAgLTM4NTAsNiArMzg3Niw3IEBACiB7CiAgICAgc3RydWN0IG1vZHVsZSAgKm1wOwogICAgIEZJTEUgICAgICAgICAgICpmcDsKKyAgICBzdHJ1Y3Qgbm9kZSAgICAqbnA7CiAKICAgICBuZXRzbm1wX2luaXRfbWliX2ludGVybmFscygpOwogCkBAIC0zODY1LDkgKzM4OTIsMTcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gTU9EVUxFX0FMUkVBRFlfTE9BREVEOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKChmcCA9IGZvcGVuKG1wLT5maWxlLCAiciIpKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgaW50IHJ2YWw7CisgICAgICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT1RESVIgfHwgZXJybm8gPT0gRU5PRU5UKQorICAgICAgICAgICAgICAgICAgICBydmFsID0gTU9EVUxFX05PVF9GT1VORDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJ2YWwgPSBNT0RVTEVfTE9BRF9GQUlMRUQ7CiAgICAgICAgICAgICAgICAgc25tcF9sb2dfcGVycm9yKG1wLT5maWxlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTU9EVUxFX0xPQURfRkFJTEVEOworICAgICAgICAgICAgICAgIHJldHVybiBydmFsOwogICAgICAgICAgICAgfQorI2lmZGVmIEhBVkVfRkxPQ0tGSUxFCisgICAgICAgICAgICBmbG9ja2ZpbGUoZnApOworI2VuZGlmCiAgICAgICAgICAgICBtcC0+bm9faW1wb3J0cyA9IDA7IC8qIE5vdGUgdGhhdCB3ZSd2ZSByZWFkIHRoZSBmaWxlICovCiAgICAgICAgICAgICBGaWxlID0gbXAtPmZpbGU7CiAgICAgICAgICAgICBtaWJMaW5lID0gMTsKQEAgLTM4NzUsMTEgKzM5MTAsMTYgQEAKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBQYXJzZSB0aGUgZmlsZQogICAgICAgICAgICAgICovCi0gICAgICAgICAgICBwYXJzZShmcCwgTlVMTCk7CisgICAgICAgICAgICBucCA9IHBhcnNlKGZwLCBOVUxMKTsKKyNpZmRlZiBIQVZFX0ZVTkxPQ0tGSUxFCisgICAgICAgICAgICBmdW5sb2NrZmlsZShmcCk7CisjZW5kaWYKICAgICAgICAgICAgIGZjbG9zZShmcCk7CiAgICAgICAgICAgICBGaWxlID0gb2xkRmlsZTsKICAgICAgICAgICAgIG1pYkxpbmUgPSBvbGRMaW5lOwogICAgICAgICAgICAgY3VycmVudF9tb2R1bGUgPSBvbGRNb2R1bGU7CisgICAgICAgICAgICBpZiAoKG5wID09IE5VTEwpICYmIChnTWliRXJyb3IgPT0gTU9EVUxFX1NZTlRBWF9FUlJPUikgKQorICAgICAgICAgICAgICAgIHJldHVybiBNT0RVTEVfU1lOVEFYX0VSUk9SOwogICAgICAgICAgICAgcmV0dXJuIE1PRFVMRV9MT0FERURfT0s7CiAgICAgICAgIH0KIApAQCAtMzk2OCw5ICs0MDA4LDIwIEBACiBzdHJ1Y3QgdHJlZSAgICAqCiBuZXRzbm1wX3JlYWRfbW9kdWxlKGNvbnN0IGNoYXIgKm5hbWUpCiB7Ci0gICAgaWYgKHJlYWRfbW9kdWxlX2ludGVybmFsKG5hbWUpID09IE1PRFVMRV9OT1RfRk9VTkQpCisgICAgaW50IHN0YXR1cyA9IDA7CisgICAgc3RhdHVzID0gcmVhZF9tb2R1bGVfaW50ZXJuYWwobmFtZSk7CisKKyAgICBpZiAoc3RhdHVzID09IE1PRFVMRV9OT1RfRk9VTkQpIHsKICAgICAgICAgaWYgKCFyZWFkX21vZHVsZV9yZXBsYWNlbWVudHMobmFtZSkpCi0JICAgIHByaW50X21vZHVsZV9ub3RfZm91bmQobmFtZSk7CisgICAgICAgICAgICBwcmludF9tb2R1bGVfbm90X2ZvdW5kKG5hbWUpOworICAgIH0gZWxzZSBpZiAoc3RhdHVzID09IE1PRFVMRV9TWU5UQVhfRVJST1IpIHsKKyAgICAgICAgZ01pYkVycm9yID0gMDsKKyAgICAgICAgZ0xvb3AgPSAxOworCisgICAgICAgIHN0cm5jYXQoZ01pYk5hbWVzLCAiICIsIHNpemVvZihnTWliTmFtZXMpIC0gc3RybGVuKGdNaWJOYW1lcykgLSAxKTsKKyAgICAgICAgc3RybmNhdChnTWliTmFtZXMsIG5hbWUsIHNpemVvZihnTWliTmFtZXMpIC0gc3RybGVuKGdNaWJOYW1lcykgLSAxKTsKKyAgICB9CisKICAgICByZXR1cm4gdHJlZV9oZWFkOwogfQogCkBAIC00MjkwLDYgKzQzNDEsNyBAQAogICAgICAgICBjYXNlIEVORDoKICAgICAgICAgICAgIGlmIChzdGF0ZSAhPSBJTl9NSUIpIHsKICAgICAgICAgICAgICAgICBwcmludF9lcnJvcigiRXJyb3IsIEVORCBiZWZvcmUgc3RhcnQgb2YgTUlCIiwgTlVMTCwgdHlwZSk7CisgICAgICAgICAgICAgICAgZ01pYkVycm9yID0gTU9EVUxFX1NZTlRBWF9FUlJPUjsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgc3RydWN0IG1vZHVsZSAgKm1wOwpAQCAtNDM1Myw2ICs0NDA1LDcgQEAKICAgICAgICAgICAgICAgICBubnAgPSBwYXJzZV9tYWNybyhmcCwgbmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKG5ucCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIHByaW50X2Vycm9yKCJCYWQgcGFyc2Ugb2YgTUFDUk8iLCBOVUxMLCB0eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgZ01pYkVycm9yID0gTU9EVUxFX1NZTlRBWF9FUlJPUjsKICAgICAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgICAgICogcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgICAgICAqLwpAQCAtNDM3Niw2ICs0NDI5LDcgQEAKICAgICAgICAgICAgICAgICB0eXBlID0gZ2V0X3Rva2VuKGZwLCB0b2tlbiwgTUFYVE9LRU4pOwogICAgICAgICAgICAgaWYgKHR5cGUgPT0gRU5ET0ZGSUxFKSB7CiAgICAgICAgICAgICAgICAgcHJpbnRfZXJyb3IoIkV4cGVjdGVkIFwifVwiIiwgdG9rZW4sIHR5cGUpOworICAgICAgICAgICAgICAgIGdNaWJFcnJvciA9IE1PRFVMRV9TWU5UQVhfRVJST1I7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB0eXBlID0gZ2V0X3Rva2VuKGZwLCB0b2tlbiwgTUFYVE9LRU4pOwpAQCAtNDM4NSw2ICs0NDM5LDcgQEAKICAgICAgICAgY2FzZSBERUZJTklUSU9OUzoKICAgICAgICAgICAgIGlmIChzdGF0ZSAhPSBCRVRXRUVOX01JQlMpIHsKICAgICAgICAgICAgICAgICBwcmludF9lcnJvcigiRXJyb3IsIG5lc3RlZCBNSUJTIiwgTlVMTCwgdHlwZSk7CisgICAgICAgICAgICAgICAgZ01pYkVycm9yID0gTU9EVUxFX1NZTlRBWF9FUlJPUjsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN0YXRlID0gSU5fTUlCOwpAQCAtNDQwOSw2ICs0NDY0LDcgQEAKICAgICAgICAgICAgIG5ucCA9IHBhcnNlX29iamVjdHR5cGUoZnAsIG5hbWUpOwogICAgICAgICAgICAgaWYgKG5ucCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgcHJpbnRfZXJyb3IoIkJhZCBwYXJzZSBvZiBPQkpFQ1QtVFlQRSIsIE5VTEwsIHR5cGUpOworICAgICAgICAgICAgICAgIGdNaWJFcnJvciA9IE1PRFVMRV9TWU5UQVhfRVJST1I7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ0MTYsNiArNDQ3Miw3IEBACiAgICAgICAgICAgICBubnAgPSBwYXJzZV9vYmplY3Rncm91cChmcCwgbmFtZSwgT0JKRUNUUywgJm9iamVjdHMpOwogICAgICAgICAgICAgaWYgKG5ucCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgcHJpbnRfZXJyb3IoIkJhZCBwYXJzZSBvZiBPQkpFQ1QtR1JPVVAiLCBOVUxMLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBnTWliRXJyb3IgPSBNT0RVTEVfU1lOVEFYX0VSUk9SOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC00NDIzLDYgKzQ0ODAsNyBAQAogICAgICAgICAgICAgbm5wID0gcGFyc2Vfb2JqZWN0Z3JvdXAoZnAsIG5hbWUsIE5PVElGSUNBVElPTlMsICZub3RpZnMpOwogICAgICAgICAgICAgaWYgKG5ucCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgcHJpbnRfZXJyb3IoIkJhZCBwYXJzZSBvZiBOT1RJRklDQVRJT04tR1JPVVAiLCBOVUxMLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBnTWliRXJyb3IgPSBNT0RVTEVfU1lOVEFYX0VSUk9SOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC00NDMwLDYgKzQ0ODgsNyBAQAogICAgICAgICAgICAgbm5wID0gcGFyc2VfdHJhcERlZmluaXRpb24oZnAsIG5hbWUpOwogICAgICAgICAgICAgaWYgKG5ucCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgcHJpbnRfZXJyb3IoIkJhZCBwYXJzZSBvZiBUUkFQLVRZUEUiLCBOVUxMLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBnTWliRXJyb3IgPSBNT0RVTEVfU1lOVEFYX0VSUk9SOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC00NDM3LDYgKzQ0OTYsNyBAQAogICAgICAgICAgICAgbm5wID0gcGFyc2Vfbm90aWZpY2F0aW9uRGVmaW5pdGlvbihmcCwgbmFtZSk7CiAgICAgICAgICAgICBpZiAobm5wID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBwcmludF9lcnJvcigiQmFkIHBhcnNlIG9mIE5PVElGSUNBVElPTi1UWVBFIiwgTlVMTCwgdHlwZSk7CisgICAgICAgICAgICAgICAgZ01pYkVycm9yID0gTU9EVUxFX1NZTlRBWF9FUlJPUjsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQ0NCw2ICs0NTA0LDcgQEAKICAgICAgICAgICAgIG5ucCA9IHBhcnNlX2NvbXBsaWFuY2UoZnAsIG5hbWUpOwogICAgICAgICAgICAgaWYgKG5ucCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgcHJpbnRfZXJyb3IoIkJhZCBwYXJzZSBvZiBNT0RVTEUtQ09NUExJQU5DRSIsIE5VTEwsIHR5cGUpOworICAgICAgICAgICAgICAgIGdNaWJFcnJvciA9IE1PRFVMRV9TWU5UQVhfRVJST1I7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ0NTEsNiArNDUxMiw3IEBACiAgICAgICAgICAgICBubnAgPSBwYXJzZV9jYXBhYmlsaXRpZXMoZnAsIG5hbWUpOwogICAgICAgICAgICAgaWYgKG5ucCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgcHJpbnRfZXJyb3IoIkJhZCBwYXJzZSBvZiBBR0VOVC1DQVBBQklMSVRJRVMiLCBOVUxMLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBnTWliRXJyb3IgPSBNT0RVTEVfU1lOVEFYX0VSUk9SOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC00NDU4LDYgKzQ1MjAsNyBAQAogICAgICAgICAgICAgbm5wID0gcGFyc2VfbWFjcm8oZnAsIG5hbWUpOwogICAgICAgICAgICAgaWYgKG5ucCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgcHJpbnRfZXJyb3IoIkJhZCBwYXJzZSBvZiBNQUNSTyIsIE5VTEwsIHR5cGUpOworICAgICAgICAgICAgICAgIGdNaWJFcnJvciA9IE1PRFVMRV9TWU5UQVhfRVJST1I7CiAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgKiByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICAgKi8KQEAgLTQ0NjksNiArNDUzMiw3IEBACiAgICAgICAgICAgICBubnAgPSBwYXJzZV9tb2R1bGVJZGVudGl0eShmcCwgbmFtZSk7CiAgICAgICAgICAgICBpZiAobm5wID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBwcmludF9lcnJvcigiQmFkIHBhcnNlIG9mIE1PRFVMRS1JREVOVElUWSIsIE5VTEwsIHR5cGUpOworICAgICAgICAgICAgICAgIGdNaWJFcnJvciA9IE1PRFVMRV9TWU5UQVhfRVJST1I7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ0NzYsNiArNDU0MCw3IEBACiAgICAgICAgICAgICBubnAgPSBwYXJzZV9vYmplY3Rncm91cChmcCwgbmFtZSwgT0JKRUNUUywgJm9iamVjdHMpOwogICAgICAgICAgICAgaWYgKG5ucCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgcHJpbnRfZXJyb3IoIkJhZCBwYXJzZSBvZiBPQkpFQ1QtSURFTlRJVFkiLCBOVUxMLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBnTWliRXJyb3IgPSBNT0RVTEVfU1lOVEFYX0VSUk9SOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC00NDgzLDE2ICs0NTQ4LDE5IEBACiAgICAgICAgICAgICB0eXBlID0gZ2V0X3Rva2VuKGZwLCB0b2tlbiwgTUFYVE9LRU4pOwogICAgICAgICAgICAgaWYgKHR5cGUgIT0gSURFTlRJRklFUikgewogICAgICAgICAgICAgICAgIHByaW50X2Vycm9yKCJFeHBlY3RlZCBJREVOVElGSUVSIiwgdG9rZW4sIHR5cGUpOworICAgICAgICAgICAgICAgIGdNaWJFcnJvciA9IE1PRFVMRV9TWU5UQVhfRVJST1I7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB0eXBlID0gZ2V0X3Rva2VuKGZwLCB0b2tlbiwgTUFYVE9LRU4pOwogICAgICAgICAgICAgaWYgKHR5cGUgIT0gRVFVQUxTKSB7CiAgICAgICAgICAgICAgICAgcHJpbnRfZXJyb3IoIkV4cGVjdGVkIFwiOjo9XCIiLCB0b2tlbiwgdHlwZSk7CisgICAgICAgICAgICAgICAgZ01pYkVycm9yID0gTU9EVUxFX1NZTlRBWF9FUlJPUjsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG5ucCA9IHBhcnNlX29iamVjdGlkKGZwLCBuYW1lKTsKICAgICAgICAgICAgIGlmIChubnAgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHByaW50X2Vycm9yKCJCYWQgcGFyc2Ugb2YgT0JKRUNUIElERU5USUZJRVIiLCBOVUxMLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBnTWliRXJyb3IgPSBNT0RVTEVfU1lOVEFYX0VSUk9SOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC00NTA0LDYgKzQ1NzIsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBwcmludF9lcnJvcigiQmFkIG9wZXJhdG9yIiwgdG9rZW4sIHR5cGUpOworICAgICAgICAgICAgZ01pYkVycm9yID0gTU9EVUxFX1NZTlRBWF9FUlJPUjsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmIChubnApIHsKQEAgLTQ1MzcsNiArNDYwNiwyMSBAQAogICAgIHJldHVybiAwOwogfQogCisvKioKKyAqIFJlYWQgYSBzaW5nbGUgY2hhcmFjdGVyIGZyb20gYSBmaWxlLiBBc3N1bWVzIHRoYXQgdGhlIGNhbGxlciBoYXMgaW52b2tlZAorICogZmxvY2tmaWxlKCkuIFVzZXMgZmdldGNfdW5sb2NrZWQoKSBpbnN0ZWFkIG9mIGdldGMoKSBzaW5jZSB0aGUgZm9ybWVyIGlzCisgKiBpbXBsZW1lbnRlZCBhcyBhbiBpbmxpbmUgZnVuY3Rpb24gaW4gZ2xpYmMuIFNlZSBhbHNvIGJ1ZyAzNDQ3MTk2CisgKiAoaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9mdW5jPWRldGFpbCZhaWQ9MzQ0NzE5NiZncm91cF9pZD0xMjY5NCZhdGlkPTExMjY5NCkuCisgKi8KK3N0YXRpYyBpbnQgbmV0c25tcF9nZXRjKEZJTEUgKnN0cmVhbSkKK3sKKyNpZmRlZiBIQVZFX0ZHRVRDX1VOTE9DS0VECisgICAgcmV0dXJuIGZnZXRjX3VubG9ja2VkKHN0cmVhbSk7CisjZWxzZQorICAgIHJldHVybiBnZXRjKHN0cmVhbSk7CisjZW5kaWYKK30KKwogLyoKICAqIFBhcnNlcyBhIHRva2VuIGZyb20gdGhlIGZpbGUuICBUaGUgdHlwZSBvZiB0aGUgdG9rZW4gcGFyc2VkIGlzIHJldHVybmVkLAogICogYW5kIHRoZSB0ZXh0IGlzIHBsYWNlZCBpbiB0aGUgc3RyaW5nIHBvaW50ZWQgdG8gYnkgdG9rZW4uCkBAIC00NTU2LDcgKzQ2NDAsNyBAQAogICAgICAqIHNraXAgYWxsIHdoaXRlIHNwYWNlIAogICAgICAqLwogICAgIGRvIHsKLSAgICAgICAgY2ggPSBnZXRjKGZwKTsKKyAgICAgICAgY2ggPSBuZXRzbm1wX2dldGMoZnApOwogICAgICAgICBpZiAoY2ggPT0gJ1xuJykKICAgICAgICAgICAgIG1pYkxpbmUrKzsKICAgICB9CkBAIC00NTcwLDcgKzQ2NTQsNyBAQAogICAgICAgICByZXR1cm4gcGFyc2VRdW90ZVN0cmluZyhmcCwgdG9rZW4sIG1heHRsZW4pOwogICAgIGNhc2UgJ1wnJzogICAgICAgICAgICAgICAgIC8qIGJpbmFyeSBvciBoZXggY29uc3RhbnQgKi8KICAgICAgICAgc2VlblN5bWJvbHMgPSBiZGlnaXRzOwotICAgICAgICB3aGlsZSAoKGNoID0gZ2V0YyhmcCkpICE9IEVPRiAmJiBjaCAhPSAnXCcnKSB7CisgICAgICAgIHdoaWxlICgoY2ggPSBuZXRzbm1wX2dldGMoZnApKSAhPSBFT0YgJiYgY2ggIT0gJ1wnJykgewogICAgICAgICAgICAgc3dpdGNoIChzZWVuU3ltYm9scykgewogICAgICAgICAgICAgY2FzZSBiZGlnaXRzOgogICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnMCcgfHwgY2ggPT0gJzEnKQpAQCAtNDU4OSw3ICs0NjczLDcgQEAKICAgICAgICAgaWYgKGNoID09ICdcJycpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgICB2YWwgPSAwOwogICAgICAgICAgICAgY2hhciAgICAgICAgICAgKnJ1biA9IHRva2VuICsgMTsKLSAgICAgICAgICAgIGNoID0gZ2V0YyhmcCk7CisgICAgICAgICAgICBjaCA9IG5ldHNubXBfZ2V0YyhmcCk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNoKSB7CiAgICAgICAgICAgICBjYXNlIEVPRjoKICAgICAgICAgICAgICAgICByZXR1cm4gRU5ET0ZGSUxFOwpAQCAtNDY0OCwyNSArNDczMiwyNSBAQAogICAgIGNhc2UgJ3wnOgogICAgICAgICByZXR1cm4gQkFSOwogICAgIGNhc2UgJy4nOgotICAgICAgICBjaF9uZXh0ID0gZ2V0YyhmcCk7CisgICAgICAgIGNoX25leHQgPSBuZXRzbm1wX2dldGMoZnApOwogICAgICAgICBpZiAoY2hfbmV4dCA9PSAnLicpCiAgICAgICAgICAgICByZXR1cm4gUkFOR0U7CiAgICAgICAgIHVuZ2V0YyhjaF9uZXh0LCBmcCk7CiAgICAgICAgIHJldHVybiBMQUJFTDsKICAgICBjYXNlICc6JzoKLSAgICAgICAgY2hfbmV4dCA9IGdldGMoZnApOworICAgICAgICBjaF9uZXh0ID0gbmV0c25tcF9nZXRjKGZwKTsKICAgICAgICAgaWYgKGNoX25leHQgIT0gJzonKSB7CiAgICAgICAgICAgICB1bmdldGMoY2hfbmV4dCwgZnApOwogICAgICAgICAgICAgcmV0dXJuIExBQkVMOwogICAgICAgICB9Ci0gICAgICAgIGNoX25leHQgPSBnZXRjKGZwKTsKKyAgICAgICAgY2hfbmV4dCA9IG5ldHNubXBfZ2V0YyhmcCk7CiAgICAgICAgIGlmIChjaF9uZXh0ICE9ICc9JykgewogICAgICAgICAgICAgdW5nZXRjKGNoX25leHQsIGZwKTsKICAgICAgICAgICAgIHJldHVybiBMQUJFTDsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gRVFVQUxTOwogICAgIGNhc2UgJy0nOgotICAgICAgICBjaF9uZXh0ID0gZ2V0YyhmcCk7CisgICAgICAgIGNoX25leHQgPSBuZXRzbm1wX2dldGMoZnApOwogICAgICAgICBpZiAoY2hfbmV4dCA9PSAnLScpIHsKICAgICAgICAgICAgIGlmIChuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCiAJCQkJICAgICAgIE5FVFNOTVBfRFNfTElCX01JQl9DT01NRU5UX1RFUk0pKSB7CkBAIC00Njc0LDcgKzQ3NTgsNyBAQAogICAgICAgICAgICAgICAgICAqIFRyZWF0IHRoZSByZXN0IG9mIHRoaXMgbGluZSBhcyBhIGNvbW1lbnQuIAogICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgIHdoaWxlICgoY2hfbmV4dCAhPSBFT0YpICYmIChjaF9uZXh0ICE9ICdcbicpKQotICAgICAgICAgICAgICAgICAgICBjaF9uZXh0ID0gZ2V0YyhmcCk7CisgICAgICAgICAgICAgICAgICAgIGNoX25leHQgPSBuZXRzbm1wX2dldGMoZnApOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgICAqIFRyZWF0IHRoZSByZXN0IG9mIHRoZSBsaW5lIG9yIHVudGlsIGFub3RoZXIgJy0tJyBhcyBhIGNvbW1lbnQgCkBAIC00NjgzLDExICs0NzY3LDExIEBACiAgICAgICAgICAgICAgICAgICogKHRoaXMgaXMgdGhlICJ0ZWNobmljYWxseSIgY29ycmVjdCB3YXkgdG8gcGFyc2UgY29tbWVudHMpIAogICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgIGNoID0gJyAnOwotICAgICAgICAgICAgICAgIGNoX25leHQgPSBnZXRjKGZwKTsKKyAgICAgICAgICAgICAgICBjaF9uZXh0ID0gbmV0c25tcF9nZXRjKGZwKTsKICAgICAgICAgICAgICAgICB3aGlsZSAoY2hfbmV4dCAhPSBFT0YgJiYgY2hfbmV4dCAhPSAnXG4nICYmCiAgICAgICAgICAgICAgICAgICAgICAgIChjaCAhPSAnLScgfHwgY2hfbmV4dCAhPSAnLScpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNoID0gY2hfbmV4dDsKLSAgICAgICAgICAgICAgICAgICAgY2hfbmV4dCA9IGdldGMoZnApOworICAgICAgICAgICAgICAgICAgICBjaF9uZXh0ID0gbmV0c25tcF9nZXRjKGZwKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoY2hfbmV4dCA9PSBFT0YpCkBAIC00NzA4LDcgKzQ3OTIsNyBAQAogICAgICAgICAgICAgcmV0dXJuIExBQkVMOwogICAgICAgICBoYXNoICs9IHRvbG93ZXIoY2gpOwogICAgICAgbW9yZToKLSAgICAgICAgd2hpbGUgKGlzX2xhYmVsY2hhcihjaF9uZXh0ID0gZ2V0YyhmcCkpKSB7CisgICAgICAgIHdoaWxlIChpc19sYWJlbGNoYXIoY2hfbmV4dCA9IG5ldHNubXBfZ2V0YyhmcCkpKSB7CiAgICAgICAgICAgICBoYXNoICs9IHRvbG93ZXIoY2hfbmV4dCk7CiAgICAgICAgICAgICBpZiAoY3AgLSB0b2tlbiA8IG1heHRsZW4gLSAxKQogICAgICAgICAgICAgICAgICpjcCsrID0gY2hfbmV4dDsKQEAgLTQ3MjcsNyArNDgxMSw3IEBACiAgICAgICAgIGlmICh0cCkgewogICAgICAgICAgICAgaWYgKHRwLT50b2tlbiAhPSBDT05USU5VRSkKICAgICAgICAgICAgICAgICByZXR1cm4gKHRwLT50b2tlbik7Ci0gICAgICAgICAgICB3aGlsZSAoaXNzcGFjZSgoY2hfbmV4dCA9IGdldGMoZnApKSkpCisgICAgICAgICAgICB3aGlsZSAoaXNzcGFjZSgoY2hfbmV4dCA9IG5ldHNubXBfZ2V0YyhmcCkpKSkKICAgICAgICAgICAgICAgICBpZiAoY2hfbmV4dCA9PSAnXG4nKQogICAgICAgICAgICAgICAgICAgICBtaWJMaW5lKys7CiAgICAgICAgICAgICBpZiAoY2hfbmV4dCA9PSBFT0YpCkBAIC00NzQ4LDExICs0ODMyLDE0IEBACiAgICAgfQogfQogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocGFyc2VfZ2V0X3Rva2VuLCBuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9QQVJTRV9HRVRfVE9LRU4KIGludAogc25tcF9nZXRfdG9rZW4oRklMRSAqIGZwLCBjaGFyICp0b2tlbiwgaW50IG1heHRsZW4pCiB7CiAgICAgcmV0dXJuIGdldF90b2tlbihmcCwgdG9rZW4sIG1heHRsZW4pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUEFSU0VfR0VUX1RPS0VOICovCiAKIGludAogYWRkX21pYmZpbGUoY29uc3QgY2hhciogdG1wc3RyLCBjb25zdCBjaGFyKiBkX25hbWUsIEZJTEUgKmlwICkKQEAgLTQ5MzUsNiArNTAyMiwyMyBAQAogICAgICAgICAgICAgbmV0c25tcF9yZWFkX21vZHVsZShtcC0+bmFtZSk7CiAgICAgYWRvcHRfb3JwaGFucygpOwogCisgICAgLyogSWYgZW50ZXJlZCB0aGUgc3ludGF4IGVycm9yIGxvb3AgaW4gInJlYWRfbW9kdWxlKCkiICovCisgICAgaWYgKGdMb29wID09IDEpIHsKKyAgICAgICAgZ0xvb3AgPSAwOworICAgICAgICBpZiAoZ3BNaWJFcnJvclN0cmluZyAhPSBOVUxMKSB7CisgICAgICAgICAgICBTTk1QX0ZSRUUoZ3BNaWJFcnJvclN0cmluZyk7CisgICAgICAgIH0KKyAgICAgICAgZ3BNaWJFcnJvclN0cmluZyA9IChjaGFyICopIGNhbGxvYygxLCBNQVhRVU9URVNUUik7CisgICAgICAgIGlmIChncE1pYkVycm9yU3RyaW5nID09IE5VTEwpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19DUklULCAiZmFpbGVkIHRvIGFsbG9jYXRlZCBtZW1vcnkgZm9yIGdwTWliRXJyb3JTdHJpbmdcbiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc25wcmludGYoZ3BNaWJFcnJvclN0cmluZywgc2l6ZW9mKGdwTWliRXJyb3JTdHJpbmcpLTEsICJFcnJvciBpbiBwYXJzaW5nIE1JQiBtb2R1bGUocyk6ICVzICEgVW5hYmxlIHRvIGxvYWQgY29ycmVzcG9uZGluZyBNSUIocykiLCBnTWliTmFtZXMpOworICAgICAgICB9CisgICAgfQorCisgICAgLyogQ2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZnJlZSB0aGlzIG1lbW9yeSAqLworICAgIHRyZWVfaGVhZC0+cGFyc2VFcnJvclN0cmluZyA9IGdwTWliRXJyb3JTdHJpbmc7CisJCiAgICAgcmV0dXJuIHRyZWVfaGVhZDsKIH0KIApAQCAtNDk3MCw3ICs1MDc0LDcgQEAKICAgICBpbnQgICAgICAgICAgICAgdG9vX2xvbmcgPSAwOwogICAgIGNoYXIgICAgICAgICAgICp0b2tlbl9zdGFydCA9IHRva2VuOwogCi0gICAgZm9yIChjaCA9IGdldGMoZnApOyBjaCAhPSBFT0Y7IGNoID0gZ2V0YyhmcCkpIHsKKyAgICBmb3IgKGNoID0gbmV0c25tcF9nZXRjKGZwKTsgY2ggIT0gRU9GOyBjaCA9IG5ldHNubXBfZ2V0YyhmcCkpIHsKICAgICAgICAgaWYgKGNoID09ICdccicpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGNoID09ICdcbicpIHsKQEAgLTUyMzAsOCArNTMzNCw4IEBACiAgICAgcmV0dXJuIChmaW5kX3RyZWVfbm9kZShuYW1lLCAtMSkpOwogfQogCi0vKiBGaW5kIG5vZGUgaW4gc3BlY2lmaWMgTUlCIG1vZHVsZQotICAgVXNlZCBieSBQZXJsIG1vZHVsZXMJCSovCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocGFyc2VfZmluZF9ub2RlMiwgbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUEFSU0VfRklORF9OT0RFMgogc3RydWN0IHRyZWUgICAgKgogZmluZF9ub2RlMihjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICptb2R1bGUpCiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApAQCAtNTI0NSw3ICs1MzQ5LDEwIEBACiAgIH0KICAgcmV0dXJuIChmaW5kX3RyZWVfbm9kZShuYW1lLCBtb2RpZCkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUEFSU0VfRklORF9OT0RFMiAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRklORF9NT0RVTEUKKy8qIFVzZWQgaW4gdGhlIHBlcmwgbW9kdWxlICovCiBzdHJ1Y3QgbW9kdWxlICAqCiBmaW5kX21vZHVsZShpbnQgbWlkKQogewpAQCAtNTI1Nyw2ICs1MzY0LDcgQEAKICAgICB9CiAgICAgcmV0dXJuIG1wOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRklORF9NT0RVTEUgKi8KIAogCiBzdGF0aWMgY2hhciAgICAgbGVhdmVfaW5kZW50WzI1Nl07CmRpZmYgLS1naXQgYS9zbm1wbGliL3JlYWRfY29uZmlnLmMgYi9zbm1wbGliL3JlYWRfY29uZmlnLmMKaW5kZXggOGU3MjRjMC4uMzE2NzY3NCAxMDA2NDQKLS0tIGEvc25tcGxpYi9yZWFkX2NvbmZpZy5jCisrKyBiL3NubXBsaWIvcmVhZF9jb25maWcuYwpAQCAtNjUsNiArNjUsNyBAQAogICogIEB7CiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxjdHlwZS5oPgpAQCAtMTQ1LDYgKzE0NiwxMiBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWFkX2NvbmZpZ19hbGwsIGxpYm5ldHNubXApCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1bnJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlciwgcmVhZF9jb25maWdfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlYWRfY29uZmlnX3JlZ2lzdGVyX2FwcF9wcmVuZXRzbm1wX21pYl9oYW5kbGVyLCBuZXRzbm1wX3VudXNlZCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWFkX2NvbmZpZ19yZWdpc3Rlcl9jb25zdF9jb25maWdfaGFuZGxlciwgbmV0c25tcF91bnVzZWQpCisKIHN0YXRpYyBpbnQgICAgICBjb25maWdfZXJyb3JzOwogCiBzdHJ1Y3QgY29uZmlnX2ZpbGVzICpjb25maWdfZmlsZXMgPSBOVUxMOwpAQCAtMjUyLDYgKzI1OSw3IEBACiAJCQkJCSAgICBoZWxwLCBQUkVNSUJfQ09ORklHKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFQURfQ09ORklHX1JFR0lTVEVSX0FQUF9QUkVORVRTTk1QX01JQl9IQU5ETEVSCiBzdHJ1Y3QgY29uZmlnX2xpbmUgKgogcmVnaXN0ZXJfYXBwX3ByZW5ldHNubXBfbWliX2hhbmRsZXIoY29uc3QgY2hhciAqdG9rZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqcGFyc2VyKSAoY29uc3QgY2hhciAqLCBjaGFyICopLApAQCAtMjYxLDYgKzI2OSw3IEBACiAgICAgcmV0dXJuIChyZWdpc3Rlcl9wcmVuZXRzbm1wX21pYl9oYW5kbGVyCiAgICAgICAgICAgICAoTlVMTCwgdG9rZW4sIHBhcnNlciwgcmVsZWFzZXIsIGhlbHApKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFQURfQ09ORklHX1JFR0lTVEVSX0FQUF9QUkVORVRTTk1QX01JQl9IQU5ETEVSICovCiAKIC8qKgogICogcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIgcmVnaXN0ZXJzIGhhbmRsZXJzIGZvciBjZXJ0YWluIHRva2VucyBzcGVjaWZpZWQgaW4KQEAgLTMwNSw2ICszMTQsNyBAQAogCQkJCQkgICAgaGVscCwgTk9STUFMX0NPTkZJRyk7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUFEX0NPTkZJR19SRUdJU1RFUl9DT05TVF9DT05GSUdfSEFORExFUgogc3RydWN0IGNvbmZpZ19saW5lICoKIHJlZ2lzdGVyX2NvbnN0X2NvbmZpZ19oYW5kbGVyKGNvbnN0IGNoYXIgKnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b2tlbiwKQEAgLTMxNiw2ICszMjYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIsIHJlbGVhc2VyLAogCQkJCQkgICAgaGVscCwgTk9STUFMX0NPTkZJRyk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUFEX0NPTkZJR19SRUdJU1RFUl9DT05TVF9DT05GSUdfSEFORExFUiAqLwogCiBzdHJ1Y3QgY29uZmlnX2xpbmUgKgogcmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyKGNvbnN0IGNoYXIgKnRva2VuLApAQCAtNDE5LDExICs0MzAsMTMgQEAKICAgICB9CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VTlJFR0lTVEVSX0FQUF9DT05GSUdfSEFORExFUgogdm9pZAogdW5yZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIoY29uc3QgY2hhciAqdG9rZW4pCiB7CiAgICAgdW5yZWdpc3Rlcl9jb25maWdfaGFuZGxlcihOVUxMLCB0b2tlbik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VTlJFR0lTVEVSX0FQUF9DT05GSUdfSEFORExFUiAqLwogCiB2b2lkCiB1bnJlZ2lzdGVyX2FsbF9jb25maWdfaGFuZGxlcnModm9pZCkKQEAgLTQ2Myw4ICs0NzYsOCBAQAogfQogI2VuZGlmCiAKLWludCAgICAgICAgICAgICBsaW5lY291bnQsICAgIHByZXZfbGluZWNvdW50OwotY29uc3QgY2hhciAgICAgKmN1cmZpbGVuYW1lLCAqcHJldl9maWxlbmFtZTsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgIGxpbmVjb3VudDsKK3N0YXRpYyBjb25zdCBjaGFyICAgKmN1cmZpbGVuYW1lOwogCiBzdHJ1Y3QgY29uZmlnX2xpbmUgKgogcmVhZF9jb25maWdfZ2V0X2hhbmRsZXJzKGNvbnN0IGNoYXIgKnR5cGUpCkBAIC03NDIsMTcgKzc1NSwxNyBAQAogewogICAgIHN0YXRpYyBpbnQgICAgICBkZXB0aCA9IDA7CiAgICAgc3RhdGljIGludCAgICAgIGZpbGVzID0gMDsKKworICAgIGNvbnN0IGNoYXIgKiBjb25zdCBwcmV2X2ZpbGVuYW1lID0gY3VyZmlsZW5hbWU7CisgICAgY29uc3QgdW5zaWduZWQgaW50IHByZXZfbGluZWNvdW50ID0gbGluZWNvdW50OworCiAgICAgRklMRSAgICAgICAgICAgKmlmaWxlOwotICAgIGNoYXIgICAgICAgICAgICBsaW5lW1NUUklOR01BWF0sIHRva2VuW1NUUklOR01BWF07Ci0gICAgY2hhciAgICAgICAgICAgKmNwdHI7Ci0gICAgaW50ICAgICAgICAgICAgIGksIHJldDsKLSAgICBzdHJ1Y3QgY29uZmlnX2xpbmUgKmxwdHI7CisgICAgY2hhciAgICAgICAgICAgKmxpbmUgPSBOVUxMOyAgLyogY3VycmVudCBsaW5lIGJ1ZmZlciAqLworICAgIHNpemVfdCAgICAgICAgICBsaW5lc2l6ZSA9IDA7IC8qIGFsbG9jYXRlZCBzaXplIG9mIGxpbmUgKi8KIAotICAgIC8vIHJlc2V0IGZpbGUgY291bnRlciB3aGVuIHJlY3Vyc2lvbiBkZXB0aCBpcyAwCi0gICAgaWYgKGRlcHRoID09IDApIGZpbGVzID0gMDsKLQotICAgIGxpbmVjb3VudCA9IDA7Ci0gICAgY3VyZmlsZW5hbWUgPSBmaWxlbmFtZTsKKyAgICAvKiByZXNldCBmaWxlIGNvdW50ZXIgd2hlbiByZWN1cnNpb24gZGVwdGggaXMgMCAqLworICAgIGlmIChkZXB0aCA9PSAwKQorICAgICAgICBmaWxlcyA9IDA7CiAKICAgICBpZiAoKGlmaWxlID0gZm9wZW4oZmlsZW5hbWUsICJyIikpID09IE5VTEwpIHsKICNpZmRlZiBFTk9FTlQKQEAgLTc2NywxMyArNzgwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSkpOwogICAgICAgICB9IGVsc2UKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRUFDQ0VTICovCi0jaWYgZGVmaW5lZChFTk9FTlQpIHx8IGRlZmluZWQoRUFDQ0VTKQogICAgICAgICB7CiAgICAgICAgICAgICBzbm1wX2xvZ19wZXJyb3IoZmlsZW5hbWUpOwogICAgICAgICB9Ci0jZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRlZmluZWQoRU5PRU5UKSB8fCBkZWZpbmVkKEVBQ0NFUykgKi8KLSAgICAgICAgICAgIHNubXBfbG9nX3BlcnJvcihmaWxlbmFtZSk7Ci0jZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVOT0VOVCAqLwogICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CiAgICAgfQogCkBAIC03OTEsMjUgKzgwMCw1OCBAQAogCWZjbG9zZShpZmlsZSk7CiAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKICAgICB9CisKKyAgICBsaW5lY291bnQgPSAwOworICAgIGN1cmZpbGVuYW1lID0gZmlsZW5hbWU7CisKICAgICArK2ZpbGVzOwogICAgICsrZGVwdGg7CiAKICAgICBERUJVR01TR1RMKCgicmVhZF9jb25maWc6ZmlsZSIsICJSZWFkaW5nIGNvbmZpZ3VyYXRpb24gJXMgKCVkKVxuIiwKICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgd2hlbikpOwotICAgIAotICAgIHdoaWxlIChmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGlmaWxlKSAhPSBOVUxMKSB7Ci0gICAgICAgIGxwdHIgPSBsaW5lX2hhbmRsZXI7Ci0gICAgICAgIGxpbmVjb3VudCsrOwotICAgICAgICBjcHRyID0gbGluZTsKLSAgICAgICAgaSA9IHN0cmxlbihsaW5lKSAtIDE7Ci0gICAgICAgIGlmIChsaW5lW2ldID09ICdcbicpCi0gICAgICAgICAgICBsaW5lW2ldID0gMDsKKworICAgIHdoaWxlIChpZmlsZSkgeworICAgICAgICBzaXplX3QgICAgICAgICAgICAgIGxpbmVsZW4gPSAwOyAvKiBzdHJsZW4gb2YgdGhlIGN1cnJlbnQgbGluZSAqLworICAgICAgICBjaGFyICAgICAgICAgICAgICAgKmNwdHI7CisgICAgICAgIHN0cnVjdCBjb25maWdfbGluZSAqbHB0ciA9IGxpbmVfaGFuZGxlcjsKKworICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICBpZiAobGluZXNpemUgPD0gbGluZWxlbiArIDEpIHsKKyAgICAgICAgICAgICAgICBjaGFyICp0bXAgPSByZWFsbG9jKGxpbmUsIGxpbmVzaXplICsgMjU2KTsKKyAgICAgICAgICAgICAgICBpZiAodG1wKSB7CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSB0bXA7CisgICAgICAgICAgICAgICAgICAgIGxpbmVzaXplICs9IDI1NjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcigiRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeVxuIik7CisgICAgICAgICAgICAgICAgICAgIGZyZWUobGluZSk7CisgICAgICAgICAgICAgICAgICAgIGZjbG9zZShpZmlsZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZmdldHMobGluZSArIGxpbmVsZW4sIGxpbmVzaXplIC0gbGluZWxlbiwgaWZpbGUpID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBsaW5lW2xpbmVsZW5dID0gJ1wwJzsKKyAgICAgICAgICAgICAgICBmY2xvc2UgKGlmaWxlKTsKKyAgICAgICAgICAgICAgICBpZmlsZSA9IE5VTEw7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxpbmVsZW4gKz0gc3RybGVuKGxpbmUgKyBsaW5lbGVuKTsKKworICAgICAgICAgICAgaWYgKGxpbmVbbGluZWxlbiAtIDFdID09ICdcbicpIHsKKyAgICAgICAgICAgICAgbGluZVtsaW5lbGVuIC0gMV0gPSAnXDAnOworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgICsrbGluZWNvdW50OwogICAgICAgICBERUJVR01TR1RMKCgiOTpyZWFkX2NvbmZpZzpsaW5lIiwgIiVzOiVkIGV4YW1pbmluZzogJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lY291bnQsIGxpbmUpKTsKICAgICAgICAgLyoKICAgICAgICAgICogY2hlY2sgYmxhbmsgbGluZSBvciAjIGNvbW1lbnQgCiAgICAgICAgICAqLwotICAgICAgICBpZiAoKGNwdHIgPSBza2lwX3doaXRlKGNwdHIpKSkgeworICAgICAgICBpZiAoKGNwdHIgPSBza2lwX3doaXRlKGxpbmUpKSkgeworICAgICAgICAgICAgY2hhciB0b2tlbltTVFJJTkdNQVhdOworCiAgICAgICAgICAgICBjcHRyID0gY29weV9ud29yZChjcHRyLCB0b2tlbiwgc2l6ZW9mKHRva2VuKSk7CiAgICAgICAgICAgICBpZiAodG9rZW5bMF0gPT0gJ1snKSB7CiAgICAgICAgICAgICAgICAgaWYgKHRva2VuW3N0cmxlbih0b2tlbikgLSAxXSAhPSAnXScpIHsKQEAgLTg2NCw4ICs5MDYsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJDYW4ndCBvcGVuIGluY2x1ZGUgZGlyICclcycuIiwgY3B0cik7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBwcmV2X2ZpbGVuYW1lICA9IGN1cmZpbGVuYW1lOwotICAgICAgICAgICAgICAgICAgICBwcmV2X2xpbmVjb3VudCA9IGxpbmVjb3VudDsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChlbnRyeSA9IHJlYWRkaXIoIGQgKSkgIT0gTlVMTCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZW50cnktPmRfbmFtZVswXSAhPSAnLicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBOQU1MRU4oZW50cnkpOwpAQCAtODc3LDggKzkxNyw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgY2xvc2VkaXIoZCk7Ci0gICAgICAgICAgICAgICAgICAgIGN1cmZpbGVuYW1lID0gcHJldl9maWxlbmFtZTsKLSAgICAgICAgICAgICAgICAgICAgbGluZWNvdW50ICAgPSBwcmV2X2xpbmVjb3VudDsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggc3RyY2FzZWNtcCggdG9rZW4sICJpbmNsdWRlZmlsZSIgKT09MCkgewogICAgICAgICAgICAgICAgICAgICBjaGFyICBmbmFtZVtTTk1QX01BWFBBVEhdLCAqY3A7CkBAIC04OTksMTcgKzkzNywxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICooKytjcCkgPSAnXDAnOwogICAgICAgICAgICAgICAgICAgICAgICAgc3RybGNhdChmbmFtZSwgY3B0ciwgU05NUF9NQVhQQVRIKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBwcmV2X2ZpbGVuYW1lICA9IGN1cmZpbGVuYW1lOwotICAgICAgICAgICAgICAgICAgICBwcmV2X2xpbmVjb3VudCA9IGxpbmVjb3VudDsKLSAgICAgICAgICAgICAgICAgICAgcmV0ID0gcmVhZF9jb25maWcoZm5hbWUsIGxpbmVfaGFuZGxlciwgd2hlbik7Ci0gICAgICAgICAgICAgICAgICAgIGN1cmZpbGVuYW1lID0gcHJldl9maWxlbmFtZTsKLSAgICAgICAgICAgICAgICAgICAgbGluZWNvdW50ICAgPSBwcmV2X2xpbmVjb3VudDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKChyZXQgIT0gU05NUEVSUl9TVUNDRVNTKSAmJiAod2hlbiAhPSBQUkVNSUJfQ09ORklHKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJJbmNsdWRlZCBmaWxlICclcycgbm90IGZvdW5kLiIsIGZuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlYWRfY29uZmlnKGZuYW1lLCBsaW5lX2hhbmRsZXIsIHdoZW4pICE9CisgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRVJSX1NVQ0NFU1MgJiYgd2hlbiAhPSBQUkVNSUJfQ09ORklHKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIkluY2x1ZGVkIGZpbGUgJyVzJyBub3QgZm91bmQuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggc3RyY2FzZWNtcCggdG9rZW4sICJpbmNsdWRlc2VhcmNoIiApPT0wKSB7CiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb25maWdfZmlsZXMgY3RtcDsKLSAgICAgICAgICAgICAgICAgICAgaW50IGxlbjsKKyAgICAgICAgICAgICAgICAgICAgaW50IGxlbiwgcmV0OwogCiAgICAgICAgICAgICAgICAgICAgIGlmIChjcHRyID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aGVuICE9IFBSRU1JQl9DT05GSUcpCkBAIC05MjIsMTEgKzk1Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgIGN0bXAubmV4dCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgICAgIGlmICgobGVuID4gNSkgJiYgKHN0cmNtcCgmY3B0cltsZW4tNV0sIi5jb25mIikgPT0gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGNwdHJbbGVuLTVdID0gMDsgLyogY2hvcCBvZmYgLmNvbmYgKi8KLSAgICAgICAgICAgICAgICAgICAgcHJldl9maWxlbmFtZSAgPSBjdXJmaWxlbmFtZTsKLSAgICAgICAgICAgICAgICAgICAgcHJldl9saW5lY291bnQgPSBsaW5lY291bnQ7CiAgICAgICAgICAgICAgICAgICAgIHJldCA9IHJlYWRfY29uZmlnX2ZpbGVzX29mX3R5cGUod2hlbiwmY3RtcCk7Ci0gICAgICAgICAgICAgICAgICAgIGN1cmZpbGVuYW1lID0gcHJldl9maWxlbmFtZTsKLSAgICAgICAgICAgICAgICAgICAgbGluZWNvdW50ICAgPSBwcmV2X2xpbmVjb3VudDsKICAgICAgICAgICAgICAgICAgICAgaWYgKChsZW4gPiA1KSAmJiAoY3B0cltsZW4tNV0gPT0gMCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGNwdHJbbGVuLTVdID0gJy4nOyAvKiByZXN0b3JlIC5jb25mICovCiAgICAgICAgICAgICAgICAgICAgIGlmICgoIHJldCAhPSBTTk1QRVJSX1NVQ0NFU1MgKSAmJiAod2hlbiAhPSBQUkVNSUJfQ09ORklHKSkKQEAgLTk0Nyw3ICs5NzgsOSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIGZjbG9zZShpZmlsZSk7CisgICAgZnJlZShsaW5lKTsKKyAgICBsaW5lY291bnQgPSBwcmV2X2xpbmVjb3VudDsKKyAgICBjdXJmaWxlbmFtZSA9IHByZXZfZmlsZW5hbWU7CiAgICAgLS1kZXB0aDsKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogCmRpZmYgLS1naXQgYS9zbm1wbGliL3NjYXBpLmMgYi9zbm1wbGliL3NjYXBpLmMKaW5kZXggZTQyZjZjNi4uMTZhYzgyOSAxMDA2NDQKLS0tIGEvc25tcGxpYi9zY2FwaS5jCisrKyBiL3NubXBsaWIvc2NhcGkuYwpAQCAtMTUsNiArMTUsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaWZkZWYgSEFWRV9TVERMSUJfSApAQCAtNTAsNiArNTEsMTEgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9vdXRwdXRfYXBpLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvdXRpbGl0aWVzLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1c21fc3VwcG9ydCwgbGlibmV0c25tcCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1c21fc2NhcGksIHVzbV9zdXBwb3J0KQorCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVVNNX1NDQVBJCisKICNpZmRlZiBORVRTTk1QX1VTRV9JTlRFUk5BTF9NRDUKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L21kNS5oPgogI2VuZGlmCkBAIC02OCw2ICs3NCw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9vcGVuc3NsX2Rlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvb3BlbnNzbF9hZXMuaD4KICNlbmRpZgorCiAjaWZkZWYgTkVUU05NUF9VU0VfT1BFTlNTTAogI2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5oPgogI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CkBAIC0xNDMsNiArMTUwLDggQEAKICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CiB9CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzY2FwaV9nZXRfcHJvcGVyX3ByaXZfbGVuZ3RoLCBuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TQ0FQSV9HRVRfUFJPUEVSX1BSSVZfTEVOR1RICiBpbnQKIHNjX2dldF9wcm9wZXJfcHJpdl9sZW5ndGgoY29uc3Qgb2lkICogcHJpdnR5cGUsIHVfaW50IHByaXZ0eXBlX2xlbikKIHsKQEAgLTE1OSw2ICsxNjgsNyBAQAogI2VuZGlmCiAgICAgcmV0dXJuIHByb3Blcmxlbmd0aDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NDQVBJX0dFVF9QUk9QRVJfUFJJVl9MRU5HVEggKi8KIAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi1vLSoqKioqKgpAQCAtMTgwLDcgKzE5MCw3IEBACiAKICAgICBnZXR0aW1lb2ZkYXkoJnR2LCAoc3RydWN0IHRpbWV6b25lICopIDApOwogCi0gICAgc3JhbmRvbSh0di50dl9zZWMgXiB0di50dl91c2VjKTsKKyAgICBzcmFuZG9tKCh1bnNpZ25lZCkodHYudHZfc2VjIF4gdHYudHZfdXNlYykpOwogI2VsaWYgTkVUU05NUF9VU0VfUEtDUzExCiAgICAgREVCVUdUUkFDRTsKICAgICBydmFsID0gcGtjc19pbml0KCk7CkBAIC0xMzUwLDMgKzEzNjAsNCBAQAogICAgIHJldHVybiByYzsKIH0KICNlbmRpZiAvKiBORVRTTk1QX1VTRV9JTlRFUk5BTF9DUllQVE8gKi8KKyNlbmRpZiAvKiAgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VU01fU0NBUEkgICovCmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXAtdGMuYyBiL3NubXBsaWIvc25tcC10Yy5jCmluZGV4IDM4Mjg1ZTEuLjg5MWMzYTAgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcC10Yy5jCisrKyBiL3NubXBsaWIvc25tcC10Yy5jCkBAIC01LDYgKzUsNyBAQAogCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2lmIEhBVkVfU1RETElCX0gKICNpbmNsdWRlIDxzdGRsaWIuaD4KQEAgLTMyLDYgKzMzLDE0IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmg+ICAgLyogZm9yICJpbnRlcm5hbCIgZGVmaW5pdGlvbnMgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzbm1wX3RjX2FsbCwgbGlibmV0c25tcCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG5ldHNubXBfZGF0ZWFuZHRpbWVfc2V0X2J1Zl9mcm9tX3ZhcnMsIG5ldHNubXBfdW51c2VkKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGRhdGVfbl90aW1lLCBzbm1wX3RjX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjdGltZV90b190aW1ldCwgc25tcF90Y19hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2hlY2tfcm93c3RhdHVzX3dpdGhfc3RvcmFnZXR5cGVfdHJhbnNpdGlvbiwgc25tcF90Y19hbGwpCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ORVRTTk1QX0RBVEVBTkRUSU1FX1NFVF9CVUZfRlJPTV9WQVJTCiAvKgogICBEYXRlQW5kVGltZSA6Oj0gVEVYVFVBTC1DT05WRU5USU9OCiAgICAgRElTUExBWS1ISU5UICIyZC0xZC0xZCwxZDoxZDoxZC4xZCwxYTFkOjFkIgpAQCAtMTEyLDcgKzEyMSw5IEBACiAKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTkVUU05NUF9EQVRFQU5EVElNRV9TRVRfQlVGX0ZST01fVkFSUyAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfREFURV9OX1RJTUUKIHVfY2hhciAgICAgICAgICoKIGRhdGVfbl90aW1lKGNvbnN0IHRpbWVfdCAqIHdoZW4sIHNpemVfdCAqIGxlbmd0aCkKIHsKQEAgLTE5Miw4ICsyMDMsOSBAQAogCiAgICAgcmV0dXJuIHN0cmluZzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RBVEVfTl9USU1FICovCiAKLQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NUSU1FX1RPX1RJTUVUCiB0aW1lX3QKIGN0aW1lX3RvX3RpbWV0KGNvbnN0IGNoYXIgKnN0cikKIHsKQEAgLTI1MSw5ICsyNjMsMTAgQEAKIAogICAgIHJldHVybiAobWt0aW1lKCZ0bSkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ1RJTUVfVE9fVElNRVQgKi8KIAogLyoKLSAqIGJsYXRhbnRseSBsaWZ0ZWQgZnJvbSBvcGVuc21wIAorICogYmxhdGFudGx5IGxpZnRlZCBmcm9tIG9wZW5zbm1wIAogICovCiBjaGFyCiBjaGVja19yb3dzdGF0dXNfdHJhbnNpdGlvbihpbnQgb2xkVmFsdWUsIGludCBuZXdWYWx1ZSkKQEAgLTQwMSw2ICs0MTQsNyBAQAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfUk9XU1RBVFVTX1dJVEhfU1RPUkFHRVRZUEVfVFJBTlNJVElPTgogY2hhcgogY2hlY2tfcm93c3RhdHVzX3dpdGhfc3RvcmFnZXR5cGVfdHJhbnNpdGlvbihpbnQgb2xkVmFsdWUsIGludCBuZXdWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9sZFN0b3JhZ2UpCkBAIC00MTUsNyArNDI5LDEwIEBACiAKICAgICByZXR1cm4gY2hlY2tfcm93c3RhdHVzX3RyYW5zaXRpb24ob2xkVmFsdWUsIG5ld1ZhbHVlKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1JPV1NUQVRVU19XSVRIX1NUT1JBR0VUWVBFX1RSQU5TSVRJT04gKi8KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNoZWNrX3N0b3JhZ2VfdHJhbnNpdGlvbiwgc25tcF90Y19hbGwpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfU1RPUkFHRV9UUkFOU0lUSU9OCiBjaGFyCiBjaGVja19zdG9yYWdlX3RyYW5zaXRpb24oaW50IG9sZFZhbHVlLCBpbnQgbmV3VmFsdWUpCiB7CkBAIC00NTYsMyArNDczLDQgQEAKIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfU1RPUkFHRV9UUkFOU0lUSU9OICovCmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXBfYWxhcm0uYyBiL3NubXBsaWIvc25tcF9hbGFybS5jCmluZGV4IDc0NjI4YmUuLmFmNDgwMGYgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcF9hbGFybS5jCisrKyBiL3NubXBsaWIvc25tcF9hbGFybS5jCkBAIC04MiwyOSArODIsMjQgQEAKIHZvaWQKIHNhX3VwZGF0ZV9lbnRyeShzdHJ1Y3Qgc25tcF9hbGFybSAqYSkKIHsKLSAgICBpZiAoIXRpbWVyaXNzZXQoJmEtPnRfbGFzdCkpIHsKLSAgICAgICAgc3RydWN0IHRpbWV2YWwgIHRfbm93OworICAgIGlmICghdGltZXJpc3NldCgmYS0+dF9sYXN0TSkpIHsKICAgICAgICAgLyoKLSAgICAgICAgICogTmV2ZXIgYmVlbiBjYWxsZWQgeWV0LCBjYWxsIHRpbWUgYHQnIGZyb20gbm93LiAgCisgICAgICAgICAqIEZpcnN0IGNhbGwgb2Ygc2FfdXBkYXRlX2VudHJ5KCkgZm9yIGFsYXJtIGE6IHNldCB0X2xhc3RNIGFuZCB0X25leHRNLgogICAgICAgICAgKi8KLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0X25vdywgTlVMTCk7Ci0KLSAgICAgICAgYS0+dF9sYXN0ID0gdF9ub3c7Ci0KLSAgICAgICAgTkVUU05NUF9USU1FUkFERCgmdF9ub3csICZhLT50LCAmYS0+dF9uZXh0KTsKLSAgICB9IGVsc2UgaWYgKCF0aW1lcmlzc2V0KCZhLT50X25leHQpKSB7CisgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmYS0+dF9sYXN0TSk7CisgICAgICAgIE5FVFNOTVBfVElNRVJBREQoJmEtPnRfbGFzdE0sICZhLT50LCAmYS0+dF9uZXh0TSk7CisgICAgfSBlbHNlIGlmICghdGltZXJpc3NldCgmYS0+dF9uZXh0TSkpIHsKICAgICAgICAgLyoKICAgICAgICAgICogV2UndmUgYmVlbiBjYWxsZWQgYnV0IG5vdCByZXNldCBmb3IgdGhlIG5leHQgY2FsbC4gIAogICAgICAgICAgKi8KICAgICAgICAgaWYgKGEtPmZsYWdzICYgU0FfUkVQRUFUKSB7Ci0gICAgICAgICAgICBpZiAoIXRpbWVyaXNzZXQoJmEtPnQpKSB7CisgICAgICAgICAgICBpZiAodGltZXJpc3NldCgmYS0+dCkpIHsKKyAgICAgICAgICAgICAgICBORVRTTk1QX1RJTUVSQUREKCZhLT50X2xhc3RNLCAmYS0+dCwgJmEtPnRfbmV4dE0pOworICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcF9hbGFybSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVwZGF0ZV9lbnRyeTogaWxsZWdhbCBpbnRlcnZhbCBzcGVjaWZpZWRcbiIpKTsKICAgICAgICAgICAgICAgICBzbm1wX2FsYXJtX3VucmVnaXN0ZXIoYS0+Y2xpZW50cmVnKTsKLSAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIE5FVFNOTVBfVElNRVJBREQoJmEtPnRfbGFzdCwgJmEtPnQsICZhLT50X25leHQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIFNpbmdsZSB0aW1lIGNhbGwsIHJlbW92ZSBpdC4gIApAQCAtMTc3LDIyICsxNzIsMTIgQEAKIHNhX2ZpbmRfbmV4dCh2b2lkKQogewogICAgIHN0cnVjdCBzbm1wX2FsYXJtICphLCAqbG93ZXN0ID0gTlVMTDsKLSAgICBzdHJ1Y3QgdGltZXZhbCAgdF9ub3c7CiAKLSAgICBnZXR0aW1lb2ZkYXkoJnRfbm93LCBOVUxMKTsKKyAgICBmb3IgKGEgPSB0aGVhbGFybXM7IGEgIT0gTlVMTDsgYSA9IGEtPm5leHQpCisgICAgICAgIGlmICghKGEtPmZsYWdzICYgU0FfRklSRUQpCisgICAgICAgICAgICAmJiAobG93ZXN0ID09IE5VTEwgfHwgdGltZXJjbXAoJmEtPnRfbmV4dE0sICZsb3dlc3QtPnRfbmV4dE0sIDwpKSkKKyAgICAgICAgICAgIGxvd2VzdCA9IGE7CiAKLSAgICBmb3IgKGEgPSB0aGVhbGFybXM7IGEgIT0gTlVMTDsgYSA9IGEtPm5leHQpIHsKLSAgICAgICAgaWYgKCEoYS0+ZmxhZ3MgJiBTQV9GSVJFRCkpIHsKLSAgICAgICAgICAgIC8qIGNoZWNrIGZvciB0aW1lIGRlbHRhIHNrZXcgKi8KLSAgICAgICAgICAgIGlmICgoYS0+dF9uZXh0LnR2X3NlYyAtIHRfbm93LnR2X3NlYykgPiBhLT50LnR2X3NlYykgewotICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ0aW1lX3NrZXciLCAiVGltZSBkZWx0YSB0b28gYmlnICglbGQgc2Vjb25kcyksIHNob3VsZCBiZSAlbGQgc2Vjb25kcyAtIGZpeGluZ1xuIiwKLQkJICAgIChsb25nKShhLT50X25leHQudHZfc2VjIC0gdF9ub3cudHZfc2VjKSwgKGxvbmcpYS0+dC50dl9zZWMpKTsKLSAgICAgICAgICAgICAgICBORVRTTk1QX1RJTUVSQUREKCZ0X25vdywgJmEtPnQsICZhLT50X25leHQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGxvd2VzdCA9PSBOVUxMIHx8IHRpbWVyY21wKCZhLT50X25leHQsICZsb3dlc3QtPnRfbmV4dCwgPCkpCi0gICAgICAgICAgICAgICAgbG93ZXN0ID0gYTsKLSAgICAgICB9Ci0gICAgfQogICAgIHJldHVybiBsb3dlc3Q7CiB9CiAKQEAgLTIxMiw4ICsxOTcsNyBAQAogdm9pZAogcnVuX2FsYXJtcyh2b2lkKQogewotICAgIGludCAgICAgICAgICAgICBkb25lID0gMDsKLSAgICBzdHJ1Y3Qgc25tcF9hbGFybSAqYSA9IE5VTEw7CisgICAgc3RydWN0IHNubXBfYWxhcm0gKmE7CiAgICAgdW5zaWduZWQgaW50ICAgIGNsaWVudHJlZzsKICAgICBzdHJ1Y3QgdGltZXZhbCAgdF9ub3c7CiAKQEAgLTIyMiwzMSArMjA2LDI3IEBACiAgICAgICogY2FsbCB1bnRpbCBhbGwgZXZlbnRzIGFyZSBmaW5hbGx5IGluIHRoZSBmdXR1cmUgYWdhaW4uICAKICAgICAgKi8KIAotICAgIHdoaWxlICghZG9uZSkgewotICAgICAgICBpZiAoKGEgPSBzYV9maW5kX25leHQoKSkgPT0gTlVMTCkgeworICAgIHdoaWxlICgoYSA9IHNhX2ZpbmRfbmV4dCgpKSAhPSBOVUxMKSB7CisgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmdF9ub3cpOworCisgICAgICAgIGlmICh0aW1lcmNtcCgmYS0+dF9uZXh0TSwgJnRfbm93LCA+KSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQogCi0gICAgICAgIGdldHRpbWVvZmRheSgmdF9ub3csIE5VTEwpOworICAgICAgICBjbGllbnRyZWcgPSBhLT5jbGllbnRyZWc7CisgICAgICAgIGEtPmZsYWdzIHw9IFNBX0ZJUkVEOworICAgICAgICBERUJVR01TR1RMKCgic25tcF9hbGFybSIsICJydW4gYWxhcm0gJWRcbiIsIGNsaWVudHJlZykpOworICAgICAgICAoKihhLT50aGVjYWxsYmFjaykpIChjbGllbnRyZWcsIGEtPmNsaWVudGFyZyk7CisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FsYXJtIiwgImFsYXJtICVkIGNvbXBsZXRlZFxuIiwgY2xpZW50cmVnKSk7CiAKLSAgICAgICAgaWYgKHRpbWVyY21wKCZhLT50X25leHQsICZ0X25vdywgPCkpIHsKLSAgICAgICAgICAgIGNsaWVudHJlZyA9IGEtPmNsaWVudHJlZzsKLSAgICAgICAgICAgIGEtPmZsYWdzIHw9IFNBX0ZJUkVEOwotICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYWxhcm0iLCAicnVuIGFsYXJtICVkXG4iLCBjbGllbnRyZWcpKTsKLSAgICAgICAgICAgICgqKGEtPnRoZWNhbGxiYWNrKSkgKGNsaWVudHJlZywgYS0+Y2xpZW50YXJnKTsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FsYXJtIiwgImFsYXJtICVkIGNvbXBsZXRlZFxuIiwgY2xpZW50cmVnKSk7Ci0KLSAgICAgICAgICAgIGlmICgoYSA9IHNhX2ZpbmRfc3BlY2lmaWMoY2xpZW50cmVnKSkgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGEtPnRfbGFzdCA9IHRfbm93OwotICAgICAgICAgICAgICAgIHRpbWVyY2xlYXIoJmEtPnRfbmV4dCk7Ci0gICAgICAgICAgICAgICAgYS0+ZmxhZ3MgJj0gflNBX0ZJUkVEOwotICAgICAgICAgICAgICAgIHNhX3VwZGF0ZV9lbnRyeShhKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYWxhcm0iLCAiYWxhcm0gJWQgZGVsZXRlZCBpdHNlbGZcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50cmVnKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGEgPSBzYV9maW5kX3NwZWNpZmljKGNsaWVudHJlZyk7CisgICAgICAgIGlmIChhKSB7CisgICAgICAgICAgICBhLT50X2xhc3RNID0gdF9ub3c7CisgICAgICAgICAgICB0aW1lcmNsZWFyKCZhLT50X25leHRNKTsKKyAgICAgICAgICAgIGEtPmZsYWdzICY9IH5TQV9GSVJFRDsKKyAgICAgICAgICAgIHNhX3VwZGF0ZV9lbnRyeShhKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGRvbmUgPSAxOworICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYWxhcm0iLCAiYWxhcm0gJWQgZGVsZXRlZCBpdHNlbGZcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRyZWcpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTI4MSw5ICsyNjEsOSBAQAogCiAgICAgaWYgKHNhX3B0cikgewogICAgICAgICBuZXRzbm1wX2Fzc2VydChhbGFybV90bSk7Ci0gICAgICAgIG5ldHNubXBfYXNzZXJ0KHRpbWVyaXNzZXQoJnNhX3B0ci0+dF9uZXh0KSk7Ci0gICAgICAgIGlmICh0aW1lcmNtcCgmc2FfcHRyLT50X25leHQsIG5vdywgPikpCi0gICAgICAgICAgICAqYWxhcm1fdG0gPSBzYV9wdHItPnRfbmV4dDsKKyAgICAgICAgbmV0c25tcF9hc3NlcnQodGltZXJpc3NldCgmc2FfcHRyLT50X25leHRNKSk7CisgICAgICAgIGlmICh0aW1lcmNtcCgmc2FfcHRyLT50X25leHRNLCBub3csID4pKQorICAgICAgICAgICAgKmFsYXJtX3RtID0gc2FfcHRyLT50X25leHRNOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICAqYWxhcm1fdG0gPSAqbm93OwogICAgICAgICByZXR1cm4gc2FfcHRyLT5jbGllbnRyZWc7CkBAIC0zMDcsNyArMjg3LDcgQEAKICAgICBzdHJ1Y3QgdGltZXZhbCB0X25vdywgYWxhcm1fdG07CiAgICAgaW50IHJlczsKIAotICAgIGdldHRpbWVvZmRheSgmdF9ub3csIE5VTEwpOworICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmdF9ub3cpOwogICAgIHJlcyA9IG5ldHNubXBfZ2V0X25leHRfYWxhcm1fdGltZSgmYWxhcm1fdG0sICZ0X25vdyk7CiAgICAgaWYgKHJlcykKICAgICAgICAgTkVUU05NUF9USU1FUlNVQigmYWxhcm1fdG0sICZ0X25vdywgZGVsdGEpOwpAQCAtMzM5LDcgKzMxOSw3IEBACiAgICAgICAgIHNpZ25hbChTSUdBTFJNLCBhbGFybV9oYW5kbGVyKTsKICAgICAgICAgc2V0aXRpbWVyKElUSU1FUl9SRUFMLCAmaXQsIE5VTEwpOwogICAgICAgICBERUJVR01TR1RMKCgic25tcF9hbGFybSIsICJzY2hlZHVsZSBhbGFybSAlZCBpbiAlbGQuJTAzbGQgc2Vjb25kc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgbmV4dGFsYXJtLCBkZWx0YS50dl9zZWMsIChkZWx0YS50dl91c2VjIC8gMTAwMCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbmV4dGFsYXJtLCAobG9uZykgZGVsdGEudHZfc2VjLCAobG9uZykoZGVsdGEudHZfdXNlYyAvIDEwMDApKSk7CiAjIGVsc2UgIC8qIEhBVkVfU0VUSVRJTUVSICovCiAjICBpZmRlZiBTSUdBTFJNCiAgICAgICAgIHNpZ25hbChTSUdBTFJNLCBhbGFybV9oYW5kbGVyKTsKQEAgLTQ2Niw3ICs0NDYsNyBAQAogCiAgICAgREVCVUdNU0dUTCgoInNubXBfYWxhcm0iLAogICAgICAgICAgICAgICAgICJyZWdpc3RlcmVkIGFsYXJtICVkLCB0ID0gJWxkLiUwM2xkLCBmbGFncz0weCUwMnhcbiIsCi0gICAgICAgICAgICAgICAgKCpzKS0+Y2xpZW50cmVnLCAoKnMpLT50LnR2X3NlYywgKCgqcyktPnQudHZfdXNlYyAvIDEwMDApLAorICAgICAgICAgICAgICAgICgqcyktPmNsaWVudHJlZywgKGxvbmcpICgqcyktPnQudHZfc2VjLCAobG9uZykoKCpzKS0+dC50dl91c2VjIC8gMTAwMCksCiAgICAgICAgICAgICAgICAgKCpzKS0+ZmxhZ3MpKTsKIAogICAgIGlmIChzdGFydF9hbGFybXMpIHsKQEAgLTQ5NCwxMiArNDc0LDEyIEBACiAgICAgc3RydWN0IHNubXBfYWxhcm0gKmE7CiAgICAgc3RydWN0IHRpbWV2YWwgIHRfbm93OwogICAgIGlmICgoYSA9IHNhX2ZpbmRfc3BlY2lmaWMoY2xpZW50cmVnKSkgIT0gTlVMTCkgewotICAgICAgICBnZXR0aW1lb2ZkYXkoJnRfbm93LCBOVUxMKTsKLSAgICAgICAgYS0+dF9sYXN0LnR2X3NlYyA9IHRfbm93LnR2X3NlYzsKLSAgICAgICAgYS0+dF9sYXN0LnR2X3VzZWMgPSB0X25vdy50dl91c2VjOwotICAgICAgICBhLT50X25leHQudHZfc2VjID0gMDsKLSAgICAgICAgYS0+dF9uZXh0LnR2X3VzZWMgPSAwOwotICAgICAgICBORVRTTk1QX1RJTUVSQUREKCZ0X25vdywgJmEtPnQsICZhLT50X25leHQpOworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnRfbm93KTsKKyAgICAgICAgYS0+dF9sYXN0TS50dl9zZWMgPSB0X25vdy50dl9zZWM7CisgICAgICAgIGEtPnRfbGFzdE0udHZfdXNlYyA9IHRfbm93LnR2X3VzZWM7CisgICAgICAgIGEtPnRfbmV4dE0udHZfc2VjID0gMDsKKyAgICAgICAgYS0+dF9uZXh0TS50dl91c2VjID0gMDsKKyAgICAgICAgTkVUU05NUF9USU1FUkFERCgmdF9ub3csICZhLT50LCAmYS0+dF9uZXh0TSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBERUJVR01TR1RMKCgic25tcF9hbGFybV9yZXNldCIsICJhbGFybSAlZCBub3QgZm91bmRcbiIsCmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXBfYXBpLmMgYi9zbm1wbGliL3NubXBfYXBpLmMKaW5kZXggYWU5ZmYwOC4uMjI4ZWQ4NiAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wX2FwaS5jCisrKyBiL3NubXBsaWIvc25tcF9hcGkuYwpAQCAtMzgsNiArMzgsNyBAQAogICogc25tcF9hcGkuYyAtIEFQSSBmb3IgYWNjZXNzIHRvIHNubXAuCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxjdHlwZS5oPgpAQCAtMTM1LDggKzEzNiwxNCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS92YWNtLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzdGF0aXN0aWNzLCBsaWJuZXRzbm1wKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNubXBfYXBpLCBsaWJuZXRzbm1wKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG9pZF9pc19zdWJ0cmVlLCBzbm1wX2FwaSkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzbm1wdjNfcHJvYmVfY29udGV4dEVuZ2luZUlEX3JmYzUzNDMsIHNubXBfYXBpKQorCiAjaWYgZGVmaW5lZChORVRTTk1QX1VTRV9PUEVOU1NMKSAmJiBkZWZpbmVkKEhBVkVfTElCU1NMKQogZXh0ZXJuIHZvaWQgbmV0c25tcF9jZXJ0c19pbml0KHZvaWQpOworZXh0ZXJuIHZvaWQgbmV0c25tcF9jZXJ0c19zaHV0ZG93bih2b2lkKTsKICNlbmRpZgogCiBzdGF0aWMgdm9pZCAgICAgX2luaXRfc25tcCh2b2lkKTsKQEAgLTE4Nyw3ICsxOTQsNyBAQAogCiAjZGVmaW5lIERFRkFVTFRfQ09NTVVOSVRZICAgInB1YmxpYyIKICNkZWZpbmUgREVGQVVMVF9SRVRSSUVTCSAgICA1Ci0jZGVmaW5lIERFRkFVTFRfVElNRU9VVAkgICAgMTAwMDAwMEwKKyNkZWZpbmUgREVGQVVMVF9USU1FT1VUCSAgICBPTkVfU0VDCiAjZGVmaW5lIERFRkFVTFRfUkVNUE9SVAkgICAgU05NUF9QT1JUCiAjZGVmaW5lIERFRkFVTFRfRU5URVJQUklTRSAgZGVmYXVsdF9lbnRlcnByaXNlCiAjZGVmaW5lIERFRkFVTFRfVElNRQkgICAgMApAQCAtMjIyLDE4ICsyMjksNiBAQAogICAgIHNpemVfdCAgICAgICAgICBwYWNrZXRfbGVuLCBwYWNrZXRfc2l6ZTsKIH07CiAKLS8qCi0gKiBUaGUgbGlzdCBvZiBhY3RpdmUvb3BlbiBzZXNzaW9ucy4KLSAqLwotc3RydWN0IHNlc3Npb25fbGlzdCB7Ci0gICAgc3RydWN0IHNlc3Npb25fbGlzdCAqbmV4dDsKLSAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb247Ci0gICAgbmV0c25tcF90cmFuc3BvcnQgKnRyYW5zcG9ydDsKLSAgICBzdHJ1Y3Qgc25tcF9pbnRlcm5hbF9zZXNzaW9uICppbnRlcm5hbDsKLX07Ci0KLQotCiBzdGF0aWMgY29uc3QgY2hhciAqYXBpX2Vycm9yc1stU05NUEVSUl9NQVggKyAxXSA9IHsKICAgICAiTm8gZXJyb3IiLCAgICAgICAgICAgICAgICAgLyogU05NUEVSUl9TVUNDRVNTICovCiAgICAgIkdlbmVyaWMgZXJyb3IiLCAgICAgICAgICAgIC8qIFNOTVBFUlJfR0VORVJSICovCkBAIC0zNTMsNyArMzQ4LDYgQEAKIAogc3RhdGljIHZvaWQgICAgIHNubXB2M19jYWxjX21zZ19mbGFncyhpbnQsIGludCwgdV9jaGFyICopOwogc3RhdGljIGludCAgICAgIHNubXB2M192ZXJpZnlfbXNnKG5ldHNubXBfcmVxdWVzdF9saXN0ICosIG5ldHNubXBfcGR1ICopOwotc3RhdGljIGludCAgICAgIHNubXB2M19idWlsZF9wcm9iZV9wZHUobmV0c25tcF9wZHUgKiopOwogc3RhdGljIGludCAgICAgIHNubXB2M19idWlsZCh1X2NoYXIgKiogcGt0LCBzaXplX3QgKiBwa3RfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKiBvZmZzZXQsIG5ldHNubXBfc2Vzc2lvbiAqIHNlc3Npb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcGR1ICpwZHUpOwpAQCAtMzkxLDEyICszODUsMTQgQEAKICAgICAgICAgcmV0dXJuICJHRVQiOwogICAgIGNhc2UgU05NUF9NU0dfR0VUTkVYVDoKICAgICAgICAgcmV0dXJuICJHRVRORVhUIjsKLSAgICBjYXNlIFNOTVBfTVNHX1JFU1BPTlNFOgotICAgICAgICByZXR1cm4gIlJFU1BPTlNFIjsKLSAgICBjYXNlIFNOTVBfTVNHX1NFVDoKLSAgICAgICAgcmV0dXJuICJTRVQiOwogICAgIGNhc2UgU05NUF9NU0dfR0VUQlVMSzoKICAgICAgICAgcmV0dXJuICJHRVRCVUxLIjsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCisgICAgY2FzZSBTTk1QX01TR19TRVQ6CisgICAgICAgIHJldHVybiAiU0VUIjsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgY2FzZSBTTk1QX01TR19SRVNQT05TRToKKyAgICAgICAgcmV0dXJuICJSRVNQT05TRSI7CiAgICAgY2FzZSBTTk1QX01TR19JTkZPUk06CiAgICAgICAgIHJldHVybiAiSU5GT1JNIjsKICAgICBjYXNlIFNOTVBfTVNHX1RSQVAyOgpAQCAtNjc1LDcgKzY3MSw3IEBACiAgICAgdG1wUmVxaWQgPSBscmFuZDQ4KCk7CiAgICAgdG1wTXNnaWQgPSBscmFuZDQ4KCk7CiAjZWxzZQotICAgIHNyYW5kb20odHYudHZfc2VjIF4gdHYudHZfdXNlYyk7CisgICAgc3JhbmRvbSgodW5zaWduZWQpKHR2LnR2X3NlYyBeIHR2LnR2X3VzZWMpKTsKICAgICB0bXBSZXFpZCA9IHJhbmRvbSgpOwogICAgIHRtcE1zZ2lkID0gcmFuZG9tKCk7CiAjZW5kaWYKQEAgLTcxMSw2ICs3MDcsOCBAQAogCiAgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCiAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0hFWF9PVVRQVVRfTEVOR1RILCAxNik7CisgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgTkVUU05NUF9EU19MSUJfUkVUUklFUywKKyAgICAgICAgICAgICAgICAgICAgICAgREVGQVVMVF9SRVRSSUVTKTsKIAogI2lmZGVmIE5FVFNOTVBfVVNFX1JFVkVSU0VfQVNORU5DT0RJTkcKICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCkBAIC03ODcsNiArNzg1LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vQ29udGV4dEVuZ2luZUlERGlzY292ZXJ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQlJBUllfSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfTk9fRElTQ09WRVJZKTsKKyAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fSU5URUdFUiwgInNubXAiLCAidGltZW91dCIsCisJCSAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgTkVUU05NUF9EU19MSUJfVElNRU9VVCk7CisgICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX0lOVEVHRVIsICJzbm1wIiwgInJldHJpZXMiLAorCQkgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQlJBUllfSUQsIE5FVFNOTVBfRFNfTElCX1JFVFJJRVMpOwogCiAgICAgbmV0c25tcF9yZWdpc3Rlcl9zZXJ2aWNlX2hhbmRsZXJzKCk7CiB9CkBAIC04NDQsNiArODQ2LDExIEBACiAjaWYgZGVmaW5lZChORVRTTk1QX1VTRV9PUEVOU1NMKSAmJiBkZWZpbmVkKEhBVkVfTElCU1NMKQogICAgIG5ldHNubXBfY2VydHNfaW5pdCgpOwogI2VuZGlmCisjaWZkZWYgRE5TU0VDX0xPQ0FMX1ZBTElEQVRJT04KKyAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fQk9PTEVBTiwgInNubXAiLCAiZG5zc2VjV2Fybk9ubHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9ETlNTRUNfV0FSTl9PTkxZKTsKKyNlbmRpZgogCiAgICAgcmVhZF9wcmVtaWJfY29uZmlncygpOwogI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfTUlCX0xPQURJTkcKQEAgLTkwNSw2ICs5MTIsOSBAQAogI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfTUlCX0xPQURJTkcKICAgICBzaHV0ZG93bl9taWIoKTsKICNlbmRpZiAvKiBORVRTTk1QX0RJU0FCTEVfTUlCX0xPQURJTkcgKi8KKyNpZiBkZWZpbmVkKE5FVFNOTVBfVVNFX09QRU5TU0wpICYmIGRlZmluZWQoSEFWRV9MSUJTU0wpCisgICAgbmV0c25tcF9jZXJ0c19zaHV0ZG93bigpOworI2VuZGlmCiAgICAgdW5yZWdpc3Rlcl9hbGxfY29uZmlnX2hhbmRsZXJzKCk7CiAgICAgbmV0c25tcF9jb250YWluZXJfZnJlZV9saXN0KCk7CiAgICAgY2xlYXJfc2VjX21vZCgpOwpAQCAtOTEyLDEwICs5MjIsOSBAQAogICAgIG5ldHNubXBfY2xlYXJfdGRvbWFpbl9saXN0KCk7CiAgICAgY2xlYXJfY2FsbGJhY2soKTsKICAgICBuZXRzbm1wX2RzX3NodXRkb3duKCk7Ci0gICAgY2xlYXJfdXNlcl9saXN0KCk7CiAgICAgbmV0c25tcF9jbGVhcl9kZWZhdWx0X3RhcmdldCgpOwogICAgIG5ldHNubXBfY2xlYXJfZGVmYXVsdF9kb21haW4oKTsKLSAgICBmcmVlX2V0aW1lbGlzdCgpOworICAgIHNodXRkb3duX3NlY21vZCgpOwogCiAgICAgaW5pdF9zbm1wX2luaXRfZG9uZSAgPSAwOwogICAgIF9pbml0X3NubXBfaW5pdF9kb25lID0gMDsKQEAgLTk0OSw2ICs5NTgsOCBAQAogLyoKICAqIGV4dGVuZGVkIG9wZW4gCiAgKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzbm1wX29wZW5fZXgsIG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBfT1BFTl9FWAogbmV0c25tcF9zZXNzaW9uICoKIHNubXBfb3Blbl9leChuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb24sCiAgICAgICAgICAgICAgaW50ICgqZnByZV9wYXJzZSkJKG5ldHNubXBfc2Vzc2lvbiAqLCBuZXRzbm1wX3RyYW5zcG9ydCAqLApAQCAtOTgzLDYgKzk5NCw3IEBACiAKICAgICByZXR1cm4gKHNscC0+c2Vzc2lvbik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QX09QRU5fRVggKi8KIAogc3RhdGljIHN0cnVjdCBzZXNzaW9uX2xpc3QgKgogX3Nlc3NfY29weShuZXRzbm1wX3Nlc3Npb24gKiBpbl9zZXNzaW9uKQpAQCAtMTE3MiwxMCArMTE4NCwyMiBAQAogICAgICAgICBzZXNzaW9uLT5zZWN1cml0eU5hbWVMZW4gPSBzdHJsZW4oY3ApOwogICAgIH0KIAotICAgIGlmIChzZXNzaW9uLT5yZXRyaWVzID09IFNOTVBfREVGQVVMVF9SRVRSSUVTKQotICAgICAgICBzZXNzaW9uLT5yZXRyaWVzID0gREVGQVVMVF9SRVRSSUVTOwotICAgIGlmIChzZXNzaW9uLT50aW1lb3V0ID09IFNOTVBfREVGQVVMVF9USU1FT1VUKQotICAgICAgICBzZXNzaW9uLT50aW1lb3V0ID0gREVGQVVMVF9USU1FT1VUOworICAgIGlmIChzZXNzaW9uLT5yZXRyaWVzID09IFNOTVBfREVGQVVMVF9SRVRSSUVTKSB7CisgICAgICAgIGludCByZXRyeSA9IG5ldHNubXBfZHNfZ2V0X2ludChORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9SRVRSSUVTKTsKKyAgICAgICAgaWYgKHJldHJ5IDwgMCkKKyAgICAgICAgICAgIHNlc3Npb24tPnJldHJpZXMgPSBERUZBVUxUX1JFVFJJRVM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNlc3Npb24tPnJldHJpZXMgPSByZXRyeTsKKyAgICB9CisgICAgaWYgKHNlc3Npb24tPnRpbWVvdXQgPT0gU05NUF9ERUZBVUxUX1RJTUVPVVQpIHsKKyAgICAgICAgaW50IHRpbWVvdXQgPSBuZXRzbm1wX2RzX2dldF9pbnQoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9USU1FT1VUKTsKKyAgICAgICAgaWYgKHRpbWVvdXQgPD0gMCkKKyAgICAgICAgICAgIHNlc3Npb24tPnRpbWVvdXQgPSBERUZBVUxUX1RJTUVPVVQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNlc3Npb24tPnRpbWVvdXQgPSB0aW1lb3V0ICogT05FX1NFQzsKKyAgICB9CiAgICAgc2Vzc2lvbi0+c2Vzc2lkID0gc25tcF9nZXRfbmV4dF9zZXNzaWQoKTsKIAogICAgIHNubXBfY2FsbF9jYWxsYmFja3MoU05NUF9DQUxMQkFDS19MSUJSQVJZLCBTTk1QX0NBTExCQUNLX1NFU1NJT05fSU5JVCwKQEAgLTEyMjcsNiArMTI1MSw3IEBACiAgICAgcmV0dXJuIHBzbDsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBWM19QUk9CRV9DT05URVhURU5HSU5FSURfUkZDNTM0MwogLyoqCiAgKiBwcm9iZSBmb3IgZW5naW5lSUQgdXNpbmcgUkZDIDUzNDMgcHJvYmluZyBtZWNoYW5pc21zCiAgKgpAQCAtMTMxOCw2ICsxMzQzLDcgQEAKICAgICB9CiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBWM19QUk9CRV9DT05URVhURU5HSU5FSURfUkZDNTM0MyAqLwogCiAKIC8qKgpAQCAtMTMzOSwxNiArMTM2NSwxNyBAQAogc25tcHYzX2VuZ2luZUlEX3Byb2JlKHN0cnVjdCBzZXNzaW9uX2xpc3QgKnNscCwKICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKiBpbl9zZXNzaW9uKQogewotICAgIG5ldHNubXBfcGR1ICAgICpwZHUgPSBOVUxMLCAqcmVzcG9uc2UgPSBOVUxMOwogICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbjsKLSAgICB1bnNpZ25lZCBpbnQgICAgaTsKICAgICBpbnQgICAgICAgICAgICAgc3RhdHVzOworICAgIHN0cnVjdCBzbm1wX3NlY21vZF9kZWYgKnNwdHIgPSBOVUxMOwogCiAgICAgaWYgKHNscCA9PSBOVUxMIHx8IHNscC0+c2Vzc2lvbiA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIHNlc3Npb24gPSBzbHAtPnNlc3Npb247CisgICAgbmV0c25tcF9hc3NlcnRfb3JfcmV0dXJuKHNlc3Npb24gIT0gTlVMTCwgMCk7CisgICAgc3B0ciA9IGZpbmRfc2VjX21vZChzZXNzaW9uLT5zZWN1cml0eU1vZGVsKTsKIAogICAgIC8qCiAgICAgICogSWYgd2UgYXJlIG9wZW5pbmcgYSBWMyBzZXNzaW9uIGFuZCB3ZSBkb24ndCBrbm93IGVuZ2luZUlEIHdlIG11c3QgcHJvYmUKQEAgLTEzNTYsOTAgKzEzODMsMzAgQEAKICAgICAgKiBsaXN0IHNvIHRoYXQgdGhlIHJlc3BvbnNlIGNhbiBoYW5kbGVkIGNvcnJlY3RseS4gCiAgICAgICovCiAKLSAgICBpZiAoKHNlc3Npb24tPmZsYWdzICYgU05NUF9GTEFHU19ET05UX1BST0JFKSA9PSBTTk1QX0ZMQUdTX0RPTlRfUFJPQkUpCi0gICAgICAgIHJldHVybiAxOwotCi0gICAgaWYgKHNlc3Npb24tPnZlcnNpb24gPT0gU05NUF9WRVJTSU9OXzMpIHsKLSAgICAgICAgc3RydWN0IHNubXBfc2VjbW9kX2RlZiAqc3B0ciA9IGZpbmRfc2VjX21vZChzZXNzaW9uLT5zZWN1cml0eU1vZGVsKTsKLQorICAgIGlmIChzZXNzaW9uLT52ZXJzaW9uID09IFNOTVBfVkVSU0lPTl8zICYmCisgICAgICAgICgwID09IChzZXNzaW9uLT5mbGFncyAmIFNOTVBfRkxBR1NfRE9OVF9QUk9CRSkpKSB7CiAgICAgICAgIGlmIChOVUxMICE9IHNwdHIgJiYgTlVMTCAhPSBzcHRyLT5wcm9iZV9lbmdpbmVpZCkgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYXBpIiwgInByb2JpbmcgZm9yIGVuZ2luZUlEIHVzaW5nIHNlY3VyaXR5IG1vZGVsIGNhbGxiYWNrLi4uXG4iKSk7CiAgICAgICAgICAgICAvKiBzZWN1cml0eSBtb2RlbCBzcGVjaWZpYyBtZWNoYW5pc20gb2YgZGV0ZXJtaW5pbmcgZW5naW5lSUQgKi8KLSAgICAgICAgICAgIHN0YXR1cyA9ICgqc3B0ci0+cHJvYmVfZW5naW5laWQpIChzbHAsIHNlc3Npb24pOwotICAgICAgICAgICAgaWYgKHN0YXR1cykKKyAgICAgICAgICAgIHN0YXR1cyA9ICgqc3B0ci0+cHJvYmVfZW5naW5laWQpIChzbHAsIGluX3Nlc3Npb24pOworICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBTTk1QRVJSX1NVQ0NFU1MpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICByZXR1cm4gMTsgLyogc3VjY2VzcyEgKi8KLSAgICAgICAgfSBlbHNlIGlmIChzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuID09IDApIHsKLSAgICAgICAgICAgIGlmIChzbm1wdjNfYnVpbGRfcHJvYmVfcGR1KCZwZHUpICE9IDApIHsKLSAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcF9hcGkiLCAidW5hYmxlIHRvIGNyZWF0ZSBwcm9iZSBQRFVcbiIpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FwaSIsICJwcm9iaW5nIGZvciBlbmdpbmVJRC4uLlxuIikpOwotICAgICAgICAgICAgc2Vzc2lvbi0+ZmxhZ3MgfD0gU05NUF9GTEFHU19ET05UX1BST0JFOyAvKiBwcmV2ZW50IHJlY3Vyc2lvbiAqLwotICAgICAgICAgICAgc3RhdHVzID0gc25tcF9zZXNzX3N5bmNoX3Jlc3BvbnNlKHNscCwgcGR1LCAmcmVzcG9uc2UpOwotCi0gICAgICAgICAgICBpZiAoKHJlc3BvbnNlID09IE5VTEwpICYmIChzdGF0dXMgPT0gU1RBVF9TVUNDRVNTKSkgewotICAgICAgICAgICAgICAgIHN0YXR1cyA9IFNUQVRfRVJST1I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7Ci0gICAgICAgICAgICBjYXNlIFNUQVRfU1VDQ0VTUzoKLSAgICAgICAgICAgICAgICBpbl9zZXNzaW9uLT5zX3NubXBfZXJybm8gPSBTTk1QRVJSX0lOVkFMSURfTVNHOyAvKiBYWD8/ICovCi0gICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfc2Vzc19vcGVuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXJyb3I6IGV4cGVjdGVkIFJlcG9ydCBhcyByZXNwb25zZSB0byBwcm9iZTogJXMgKCVsZClcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9lcnJzdHJpbmcocmVzcG9uc2UtPmVycnN0YXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLT5lcnJzdGF0KSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFNUQVRfRVJST1I6ICAgLyogdGhpcyBpcyB3aGF0IHdlIGV4cGVjdGVkIC0+IFJlcG9ydCA9PSBTVEFUX0VSUk9SICovCi0gICAgICAgICAgICAgICAgaW5fc2Vzc2lvbi0+c19zbm1wX2Vycm5vID0gU05NUEVSUl9VTktOT1dOX0VOR19JRDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgU1RBVF9USU1FT1VUOgotICAgICAgICAgICAgICAgIGluX3Nlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfVElNRU9VVDsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfc2Vzc19vcGVuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5hYmxlIHRvIGNvbm5lY3Qgd2l0aCByZW1vdGUgZW5naW5lOiAlcyAoJWQpXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfYXBpX2VycnN0cmluZyhzZXNzaW9uLT5zX3NubXBfZXJybm8pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNfc25tcF9lcnJubykpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoc2xwLT5zZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuID09IDApIHsKLSAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcF9hcGkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmFibGUgdG8gZGV0ZXJtaW5lIHJlbW90ZSBlbmdpbmUgSURcbiIpKTsKLSAgICAgICAgICAgICAgICAvKiBjbGVhciB0aGUgZmxhZyBzbyB0aGF0IHByb2JlIG9jY3VycyBvbiBuZXh0IGluZm9ybSAqLwotICAgICAgICAgICAgICAgIHNlc3Npb24tPmZsYWdzICY9IH5TTk1QX0ZMQUdTX0RPTlRfUFJPQkU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGluX3Nlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfU1VDQ0VTUzsKLSAgICAgICAgICAgIGlmIChzbm1wX2dldF9kb19kZWJ1Z2dpbmcoKSkgewotICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX3Nlc3Nfb3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgcHJvYmUgZm91bmQgZW5naW5lSUQ6ICAiKSk7Ci0gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNscC0+c2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbjsgaSsrKQotICAgICAgICAgICAgICAgICAgICBERUJVR01TRygoInNubXBfc2Vzc19vcGVuIiwgIiUwMngiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xwLT5zZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlEW2ldKSk7Ci0gICAgICAgICAgICAgICAgREVCVUdNU0coKCJzbm1wX3Nlc3Nfb3BlbiIsICJcbiIpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8qCi0gICAgICAgICAqIGlmIGJvb3QvdGltZSBzdXBwbGllZCBzZXQgaXQgZm9yIHRoaXMgZW5naW5lSUQgCi0gICAgICAgICAqLwotICAgICAgICBpZiAoc2Vzc2lvbi0+ZW5naW5lQm9vdHMgfHwgc2Vzc2lvbi0+ZW5naW5lVGltZSkgewotICAgICAgICAgICAgc2V0X2VuZ2luZXRpbWUoc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5RW5naW5lSURMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5lbmdpbmVCb290cywgc2Vzc2lvbi0+ZW5naW5lVGltZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNyZWF0ZV91c2VyX2Zyb21fc2Vzc2lvbihzbHAtPnNlc3Npb24pICE9IFNOTVBFUlJfU1VDQ0VTUykgewotICAgICAgICAgICAgaW5fc2Vzc2lvbi0+c19zbm1wX2Vycm5vID0gU05NUEVSUl9VTktOT1dOX1VTRVJfTkFNRTsgICAgICAgLyogWFg/PyAqLwotICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYXBpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzbm1wdjNfZW5naW5lX3Byb2JlKCk6IGZhaWxlZCgyKSB0byBjcmVhdGUgYSBuZXcgdXNlciBmcm9tIHNlc3Npb25cbiIpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIFhYWDogZGVmYXVsdCB0byB0aGUgZGVmYXVsdCBSRkM1MzQzIGNvbnRleHRFbmdpbmVJRCBQcm9iZT8gKi8KICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQogCisgICAgLyoKKyAgICAgKiBzZWUgaWYgdGhlcmUgaXMgYSBob29rIHRvIGNhbGwgbm93IHRoYXQgd2UncmUgZG9uZSBwcm9iaW5nIGZvciBhbgorICAgICAqIGVuZ2luZUlECisgICAgICovCisgICAgaWYgKHNwdHIgJiYgc3B0ci0+cG9zdF9wcm9iZV9lbmdpbmVpZCkgeworICAgICAgICBzdGF0dXMgPSAoKnNwdHItPnBvc3RfcHJvYmVfZW5naW5laWQpKHNscCwgaW5fc2Vzc2lvbik7CisgICAgICAgIGlmIChzdGF0dXMgIT0gU05NUEVSUl9TVUNDRVNTKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTE1ODksMTIgKzE1NTYsMTIgQEAKICAgICAgICAgaWYgKGluX3Nlc3Npb24tPmZsYWdzICYgU05NUF9GTEFHU19TVFJFQU1fU09DS0VUKSB7CiAgICAgICAgICAgICB0cmFuc3BvcnQgPQogICAgICAgICAgICAgICAgIG5ldHNubXBfdGRvbWFpbl90cmFuc3BvcnRfZnVsbCgic25tcCIsIGluX3Nlc3Npb24tPnBlZXJuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9zZXNzaW9uLT5sb2NhbF9wb3J0LCAidGNwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fc2Vzc2lvbi0+bG9jYWxfcG9ydCwgInRjcCx0Y3A2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB0cmFuc3BvcnQgPQogICAgICAgICAgICAgICAgIG5ldHNubXBfdGRvbWFpbl90cmFuc3BvcnRfZnVsbCgic25tcCIsIGluX3Nlc3Npb24tPnBlZXJuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9zZXNzaW9uLT5sb2NhbF9wb3J0LCAidWRwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fc2Vzc2lvbi0+bG9jYWxfcG9ydCwgInVkcCx1ZHA2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CiAgICAgICAgIH0KIApAQCAtMTc4MywxOCArMTc1MCwxMSBAQAogICAgIGlmIChzbHAtPnNlc3Npb24tPnZlcnNpb24gPT0gU05NUF9WRVJTSU9OXzMpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfc2Vzc19hZGQiLAogICAgICAgICAgICAgICAgICAgICAiYWRkaW5nIHYzIHNlc3Npb24gLS0gbWF5YmUgZW5naW5lSUQgcHJvYmUgbm93XG4iKSk7Ci0gICAgICAgIGlmICghc25tcHYzX2VuZ2luZUlEX3Byb2JlKHNscCwgaW5fc2Vzc2lvbikpIHsKKyAgICAgICAgaWYgKCFzbm1wdjNfZW5naW5lSURfcHJvYmUoc2xwLCBzbHAtPnNlc3Npb24pKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcF9zZXNzX2FkZCIsICJlbmdpbmUgSUQgcHJvYmUgZmFpbGVkXG4iKSk7CiAgICAgICAgICAgICBzbm1wX3Nlc3NfY2xvc2Uoc2xwKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGlmIChjcmVhdGVfdXNlcl9mcm9tX3Nlc3Npb24oc2xwLT5zZXNzaW9uKSAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgIGluX3Nlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfVU5LTk9XTl9VU0VSX05BTUU7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgic25tcF9hcGkiLAotICAgICAgICAgICAgICAgICAgICAgICAgInNubXBfc2Vzc19hZGQoKTogZmFpbGVkKDIpIHRvIGNyZWF0ZSBhIG5ldyB1c2VyIGZyb20gc2Vzc2lvblxuIikpOwotICAgICAgICAgICAgc25tcF9zZXNzX2Nsb3NlKHNscCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgIH0KIAogICAgIHNscC0+c2Vzc2lvbi0+ZmxhZ3MgJj0gflNOTVBfRkxBR1NfRE9OVF9QUk9CRTsKQEAgLTE4MjgsMjI1ICsxNzg4LDE3IEBACiAgICAgcmV0dXJuIHB2b2lkOwogfQogCi0KLQotLyoKLSAqIGNyZWF0ZV91c2VyX2Zyb21fc2Vzc2lvbihuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb24pOgotICogCi0gKiBjcmVhdGVzIGEgdXNlciBpbiB0aGUgdXNtIHRhYmxlIGZyb20gdGhlIGluZm9ybWF0aW9uIGluIGEgc2Vzc2lvbi4KLSAqIElmIHRoZSB1c2VyIGFscmVhZHkgZXhpc3RzLCBpdCBpcyB1cGRhdGVkIHdpdGggdGhlIGN1cnJlbnQKLSAqIGluZm9ybWF0aW9uIGZyb20gdGhlIHNlc3Npb24KLSAqIAotICogUGFyYW1ldGVyczoKLSAqIHNlc3Npb24gLS0gSU46IHBvaW50ZXIgdG8gdGhlIHNlc3Npb24gdG8gdXNlIHdoZW4gY3JlYXRpbmcgdGhlIHVzZXIuCi0gKiAKLSAqIFJldHVybnM6Ci0gKiBTTk1QRVJSX1NVQ0NFU1MKLSAqIFNOTVBFUlJfR0VORVJSIAotICovCiBpbnQKLWNyZWF0ZV91c2VyX2Zyb21fc2Vzc2lvbihuZXRzbm1wX3Nlc3Npb24gKiBzZXNzaW9uKQotewotICAgIHN0cnVjdCB1c21Vc2VyICp1c2VyOwotICAgIGludCAgICAgICAgICAgICB1c2VyX2p1c3RfY3JlYXRlZCA9IDA7Ci0gICAgY2hhciAqY3A7CitjcmVhdGVfdXNlcl9mcm9tX3Nlc3Npb24obmV0c25tcF9zZXNzaW9uICogc2Vzc2lvbikgeworI2lmZGVmIE5FVFNOTVBfU0VDTU9EX1VTTQorICAgIHJldHVybiB1c21fY3JlYXRlX3VzZXJfZnJvbV9zZXNzaW9uKHNlc3Npb24pOworI2Vsc2UKKyAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY3JlYXRlX3VzZXJfZnJvbV9zZXNzaW9uIGNhbGxlZCB3aGVuIFVTTSB3YXNuJ3QgY29tcGlsZWQgaW4iKTsKKyAgICBuZXRzbm1wX2Fzc2VydCgwID09IDEpOworICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisjZW5kaWYKK30KIAotICAgIC8qCi0gICAgICogLSBkb24ndCBjcmVhdGUtYW5vdGhlci9jb3B5LWludG8gdXNlciBmb3IgdGhpcyBzZXNzaW9uIGJ5IGRlZmF1bHQKLSAgICAgKiAtIGJhaWwgbm93IChubyBlcnJvcikgaWYgd2UgZG9uJ3QgaGF2ZSBhbiBlbmdpbmVJRAotICAgICAqLwotICAgIGlmIChTTk1QX0ZMQUdTX1VTRVJfQ1JFQVRFRCA9PSAoc2Vzc2lvbi0+ZmxhZ3MgJiBTTk1QX0ZMQUdTX1VTRVJfQ1JFQVRFRCkgfHwKLSAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlNb2RlbCAhPSBTTk1QX1NFQ19NT0RFTF9VU00gfHwKLSAgICAgICAgc2Vzc2lvbi0+dmVyc2lvbiAhPSBTTk1QX1ZFUlNJT05fMyB8fAotICAgICAgICBzZXNzaW9uLT5zZWN1cml0eU5hbWVMZW4gPT0gMCB8fAotICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuID09IDApCi0gICAgICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7Ci0KLSAgICBzZXNzaW9uLT5mbGFncyB8PSBTTk1QX0ZMQUdTX1VTRVJfQ1JFQVRFRDsKLQotICAgIC8qCi0gICAgICogbm93IHRoYXQgd2UgaGF2ZSB0aGUgZW5naW5lSUQsIGNyZWF0ZSBhbiBlbnRyeSBpbiB0aGUgVVNNIGxpc3QKLSAgICAgKiBmb3IgdGhpcyB1c2VyIHVzaW5nIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgc2Vzc2lvbiAKLSAgICAgKi8KLSAgICB1c2VyID0gdXNtX2dldF91c2VyX2Zyb21fbGlzdChzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5RW5naW5lSURMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzbV9nZXRfdXNlckxpc3QoKSwgMCk7Ci0gICAgaWYgKHVzZXIgPT0gTlVMTCkgewotICAgICAgICBERUJVR01TR1RMKCgic25tcF9hcGkiLCAiQnVpbGRpbmcgdXNlciAlcy4uLlxuIiwKLSAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlOYW1lKSk7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIHVzZXIgZG9lc24ndCBleGlzdCBzbyB3ZSBjcmVhdGUgYW5kIGFkZCBpdCAKLSAgICAgICAgICovCi0gICAgICAgIHVzZXIgPSAoc3RydWN0IHVzbVVzZXIgKikgY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgdXNtVXNlcikpOwotICAgICAgICBpZiAodXNlciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwotCi0gICAgICAgIC8qCi0gICAgICAgICAqIGNvcHkgaW4gdGhlIHNlY3VyaXR5TmFtZSAKLSAgICAgICAgICovCi0gICAgICAgIGlmIChzZXNzaW9uLT5zZWN1cml0eU5hbWUpIHsKLSAgICAgICAgICAgIHVzZXItPm5hbWUgPSBzdHJkdXAoc2Vzc2lvbi0+c2VjdXJpdHlOYW1lKTsKLSAgICAgICAgICAgIHVzZXItPnNlY05hbWUgPSBzdHJkdXAoc2Vzc2lvbi0+c2VjdXJpdHlOYW1lKTsKLSAgICAgICAgICAgIGlmICh1c2VyLT5uYW1lID09IE5VTEwgfHwgdXNlci0+c2VjTmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcih1c2VyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvKgotICAgICAgICAgKiBjb3B5IGluIHRoZSBlbmdpbmVJRCAKLSAgICAgICAgICovCi0gICAgICAgIHVzZXItPmVuZ2luZUlEID0gbmV0c25tcF9tZW1kdXAoc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuKTsKLSAgICAgICAgaWYgKCF1c2VyLT5lbmdpbmVJRCkgewotICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcih1c2VyKTsKLSAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKLSAgICAgICAgfQotICAgICAgICB1c2VyLT5lbmdpbmVJRExlbiA9IHNlc3Npb24tPnNlY3VyaXR5RW5naW5lSURMZW47Ci0KLSAgICAgICAgdXNlcl9qdXN0X2NyZWF0ZWQgPSAxOwotICAgIH0KLQotICAgIC8qCi0gICAgICogY29weSB0aGUgYXV0aCBwcm90b2NvbCAKLSAgICAgKi8KLSAgICBpZiAodXNlci0+YXV0aFByb3RvY29sID09IE5VTEwgJiYgc2Vzc2lvbi0+c2VjdXJpdHlBdXRoUHJvdG8gIT0gTlVMTCkgewotICAgICAgICBTTk1QX0ZSRUUodXNlci0+YXV0aFByb3RvY29sKTsKLSAgICAgICAgdXNlci0+YXV0aFByb3RvY29sID0KLSAgICAgICAgICAgIHNubXBfZHVwbGljYXRlX29iamlkKHNlc3Npb24tPnNlY3VyaXR5QXV0aFByb3RvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlBdXRoUHJvdG9MZW4pOwotICAgICAgICBpZiAodXNlci0+YXV0aFByb3RvY29sID09IE5VTEwpIHsKLSAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7Ci0gICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7Ci0gICAgICAgIH0KLSAgICAgICAgdXNlci0+YXV0aFByb3RvY29sTGVuID0gc2Vzc2lvbi0+c2VjdXJpdHlBdXRoUHJvdG9MZW47Ci0gICAgfQotCi0gICAgLyoKLSAgICAgKiBjb3B5IHRoZSBwcml2IHByb3RvY29sIAotICAgICAqLwotICAgIGlmICh1c2VyLT5wcml2UHJvdG9jb2wgPT0gTlVMTCAmJiBzZXNzaW9uLT5zZWN1cml0eVByaXZQcm90byAhPSBOVUxMKSB7Ci0gICAgICAgIFNOTVBfRlJFRSh1c2VyLT5wcml2UHJvdG9jb2wpOwotICAgICAgICB1c2VyLT5wcml2UHJvdG9jb2wgPQotICAgICAgICAgICAgc25tcF9kdXBsaWNhdGVfb2JqaWQoc2Vzc2lvbi0+c2VjdXJpdHlQcml2UHJvdG8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eVByaXZQcm90b0xlbik7Ci0gICAgICAgIGlmICh1c2VyLT5wcml2UHJvdG9jb2wgPT0gTlVMTCkgewotICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcih1c2VyKTsKLSAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKLSAgICAgICAgfQotICAgICAgICB1c2VyLT5wcml2UHJvdG9jb2xMZW4gPSBzZXNzaW9uLT5zZWN1cml0eVByaXZQcm90b0xlbjsKLSAgICB9Ci0KLSAgICAvKgotICAgICAqIGNvcHkgaW4gdGhlIGF1dGhlbnRpY2F0aW9uIEtleS4gIElmIG5vdCBsb2NhbGl6ZWQsIGxvY2FsaXplIGl0IAotICAgICAqLwotICAgIGlmICh1c2VyLT5hdXRoS2V5ID09IE5VTEwpIHsKLSAgICAgICAgaWYgKHNlc3Npb24tPnNlY3VyaXR5QXV0aExvY2FsS2V5ICE9IE5VTEwKLSAgICAgICAgICAgICYmIHNlc3Npb24tPnNlY3VyaXR5QXV0aExvY2FsS2V5TGVuICE9IDApIHsKLSAgICAgICAgICAgIC8qIGFscmVhZHkgbG9jYWxpemVkIGtleSBwYXNzZWQgaW4uICB1c2UgaXQgKi8KLSAgICAgICAgICAgIFNOTVBfRlJFRSh1c2VyLT5hdXRoS2V5KTsKLSAgICAgICAgICAgIHVzZXItPmF1dGhLZXkgPSBuZXRzbm1wX21lbWR1cChzZXNzaW9uLT5zZWN1cml0eUF1dGhMb2NhbEtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUF1dGhMb2NhbEtleUxlbik7Ci0gICAgICAgICAgICBpZiAoIXVzZXItPmF1dGhLZXkpIHsKLSAgICAgICAgICAgICAgICB1c21fZnJlZV91c2VyKHVzZXIpOwotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHVzZXItPmF1dGhLZXlMZW4gPSBzZXNzaW9uLT5zZWN1cml0eUF1dGhMb2NhbEtleUxlbjsKLSAgICAgICAgfSBlbHNlIGlmIChzZXNzaW9uLT5zZWN1cml0eUF1dGhLZXkgIT0gTlVMTAotICAgICAgICAgICAgICAgICAgICYmIHNlc3Npb24tPnNlY3VyaXR5QXV0aEtleUxlbiAhPSAwKSB7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUodXNlci0+YXV0aEtleSk7Ci0gICAgICAgICAgICB1c2VyLT5hdXRoS2V5ID0gKHVfY2hhciAqKSBjYWxsb2MoMSwgVVNNX0xFTkdUSF9LVV9IQVNIQkxPQ0spOwotICAgICAgICAgICAgaWYgKHVzZXItPmF1dGhLZXkgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdXNlci0+YXV0aEtleUxlbiA9IFVTTV9MRU5HVEhfS1VfSEFTSEJMT0NLOwotICAgICAgICAgICAgaWYgKGdlbmVyYXRlX2t1bCh1c2VyLT5hdXRoUHJvdG9jb2wsIHVzZXItPmF1dGhQcm90b2NvbExlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlBdXRoS2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUF1dGhLZXlMZW4sIHVzZXItPmF1dGhLZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VyLT5hdXRoS2V5TGVuKSAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgICAgICB1c21fZnJlZV91c2VyKHVzZXIpOwotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmICgoY3AgPSBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfQVVUSExPQ0FMSVpFREtFWSkpKSB7Ci0gICAgICAgICAgICBzaXplX3QgYnVmbGVuID0gVVNNX0FVVEhfS1VfTEVOOwotICAgICAgICAgICAgU05NUF9GUkVFKHVzZXItPmF1dGhLZXkpOwotICAgICAgICAgICAgdXNlci0+YXV0aEtleSA9ICh1X2NoYXIgKiltYWxsb2MoYnVmbGVuKTsgLyogbWF4IGxlbmd0aCBuZWVkZWQgKi8KLSAgICAgICAgICAgIHVzZXItPmF1dGhLZXlMZW4gPSAwOwotICAgICAgICAgICAgLyogaXQgd2lsbCBiZSBhIGhleCBzdHJpbmcgKi8KLSAgICAgICAgICAgIGlmICghc25tcF9oZXhfdG9fYmluYXJ5KCZ1c2VyLT5hdXRoS2V5LCAmYnVmbGVuLCAmdXNlci0+YXV0aEtleUxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGNwKSkgewotICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoKLSAgICAgKiBjb3B5IGluIHRoZSBwcml2YWN5IEtleS4gIElmIG5vdCBsb2NhbGl6ZWQsIGxvY2FsaXplIGl0IAotICAgICAqLwotICAgIGlmICh1c2VyLT5wcml2S2V5ID09IE5VTEwpIHsKLSAgICAgICAgaWYgKHNlc3Npb24tPnNlY3VyaXR5UHJpdkxvY2FsS2V5ICE9IE5VTEwKLSAgICAgICAgICAgICYmIHNlc3Npb24tPnNlY3VyaXR5UHJpdkxvY2FsS2V5TGVuICE9IDApIHsKLSAgICAgICAgICAgIC8qIGFscmVhZHkgbG9jYWxpemVkIGtleSBwYXNzZWQgaW4uICB1c2UgaXQgKi8KLSAgICAgICAgICAgIFNOTVBfRlJFRSh1c2VyLT5wcml2S2V5KTsKLSAgICAgICAgICAgIHVzZXItPnByaXZLZXkgPSBuZXRzbm1wX21lbWR1cChzZXNzaW9uLT5zZWN1cml0eVByaXZMb2NhbEtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eVByaXZMb2NhbEtleUxlbik7Ci0gICAgICAgICAgICBpZiAoIXVzZXItPnByaXZLZXkpIHsKLSAgICAgICAgICAgICAgICB1c21fZnJlZV91c2VyKHVzZXIpOwotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHVzZXItPnByaXZLZXlMZW4gPSBzZXNzaW9uLT5zZWN1cml0eVByaXZMb2NhbEtleUxlbjsKLSAgICAgICAgfSBlbHNlIGlmIChzZXNzaW9uLT5zZWN1cml0eVByaXZLZXkgIT0gTlVMTAotICAgICAgICAgICAgICAgICAgICYmIHNlc3Npb24tPnNlY3VyaXR5UHJpdktleUxlbiAhPSAwKSB7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUodXNlci0+cHJpdktleSk7Ci0gICAgICAgICAgICB1c2VyLT5wcml2S2V5ID0gKHVfY2hhciAqKSBjYWxsb2MoMSwgVVNNX0xFTkdUSF9LVV9IQVNIQkxPQ0spOwotICAgICAgICAgICAgaWYgKHVzZXItPnByaXZLZXkgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdXNlci0+cHJpdktleUxlbiA9IFVTTV9MRU5HVEhfS1VfSEFTSEJMT0NLOwotICAgICAgICAgICAgaWYgKGdlbmVyYXRlX2t1bCh1c2VyLT5hdXRoUHJvdG9jb2wsIHVzZXItPmF1dGhQcm90b2NvbExlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlQcml2S2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eVByaXZLZXlMZW4sIHVzZXItPnByaXZLZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VyLT5wcml2S2V5TGVuKSAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgICAgICB1c21fZnJlZV91c2VyKHVzZXIpOwotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmICgoY3AgPSBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfUFJJVkxPQ0FMSVpFREtFWSkpKSB7Ci0gICAgICAgICAgICBzaXplX3QgYnVmbGVuID0gVVNNX1BSSVZfS1VfTEVOOwotICAgICAgICAgICAgU05NUF9GUkVFKHVzZXItPnByaXZLZXkpOwotICAgICAgICAgICAgdXNlci0+cHJpdktleSA9ICh1X2NoYXIgKiltYWxsb2MoYnVmbGVuKTsgLyogbWF4IGxlbmd0aCBuZWVkZWQgKi8KLSAgICAgICAgICAgIHVzZXItPnByaXZLZXlMZW4gPSAwOwotICAgICAgICAgICAgLyogaXQgd2lsbCBiZSBhIGhleCBzdHJpbmcgKi8KLSAgICAgICAgICAgIGlmICghc25tcF9oZXhfdG9fYmluYXJ5KCZ1c2VyLT5wcml2S2V5LCAmYnVmbGVuLCAmdXNlci0+cHJpdktleUxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGNwKSkgewotICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHVzZXJfanVzdF9jcmVhdGVkKSB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIGFkZCB0aGUgdXNlciBpbnRvIHRoZSBkYXRhYmFzZSAKLSAgICAgICAgICovCi0gICAgICAgIHVzZXItPnVzZXJTdGF0dXMgPSBSU19BQ1RJVkU7Ci0gICAgICAgIHVzZXItPnVzZXJTdG9yYWdlVHlwZSA9IFNUX1JFQURPTkxZOwotICAgICAgICB1c21fYWRkX3VzZXIodXNlcik7Ci0gICAgfQotCi0gICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKLQotCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVuZCBjcmVhdGVfdXNlcl9mcm9tX3Nlc3Npb24oKSAqLwogCiAvKgogICogIERvIGEgImRlZXAgZnJlZSgpIiBvZiBhIG5ldHNubXBfc2Vzc2lvbi4KQEAgLTIyMDgsNDkgKzE5NjAsNiBAQAogICAgIHJldHVybiAxOwogfQogCi1zdGF0aWMgaW50Ci1zbm1wdjNfYnVpbGRfcHJvYmVfcGR1KG5ldHNubXBfcGR1ICoqcGR1KQotewotICAgIHN0cnVjdCB1c21Vc2VyICp1c2VyOwotCi0gICAgLyoKLSAgICAgKiBjcmVhdGUgdGhlIHBkdSAKLSAgICAgKi8KLSAgICBpZiAoIXBkdSkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgICpwZHUgPSBzbm1wX3BkdV9jcmVhdGUoU05NUF9NU0dfR0VUKTsKLSAgICBpZiAoISgqcGR1KSkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgICgqcGR1KS0+dmVyc2lvbiA9IFNOTVBfVkVSU0lPTl8zOwotICAgICgqcGR1KS0+c2VjdXJpdHlOYW1lID0gc3RyZHVwKCIiKTsKLSAgICAoKnBkdSktPnNlY3VyaXR5TmFtZUxlbiA9IHN0cmxlbigoKnBkdSktPnNlY3VyaXR5TmFtZSk7Ci0gICAgKCpwZHUpLT5zZWN1cml0eUxldmVsID0gU05NUF9TRUNfTEVWRUxfTk9BVVRIOwotICAgICgqcGR1KS0+c2VjdXJpdHlNb2RlbCA9IFNOTVBfU0VDX01PREVMX1VTTTsKLQotICAgIC8qCi0gICAgICogY3JlYXRlIHRoZSBlbXB0eSB1c2VyIAotICAgICAqLwotICAgIHVzZXIgPSB1c21fZ2V0X3VzZXIoTlVMTCwgMCwgKCpwZHUpLT5zZWN1cml0eU5hbWUpOwotICAgIGlmICh1c2VyID09IE5VTEwpIHsKLSAgICAgICAgdXNlciA9IChzdHJ1Y3QgdXNtVXNlciAqKSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCB1c21Vc2VyKSk7Ci0gICAgICAgIGlmICh1c2VyID09IE5VTEwpIHsKLSAgICAgICAgICAgIHNubXBfZnJlZV9wZHUoKnBkdSk7Ci0gICAgICAgICAgICAqcGR1ID0gKG5ldHNubXBfcGR1ICopIE5VTEw7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgdXNlci0+bmFtZSA9IHN0cmR1cCgoKnBkdSktPnNlY3VyaXR5TmFtZSk7Ci0gICAgICAgIHVzZXItPnNlY05hbWUgPSBzdHJkdXAoKCpwZHUpLT5zZWN1cml0eU5hbWUpOwotICAgICAgICB1c2VyLT5hdXRoUHJvdG9jb2xMZW4gPSBzaXplb2YodXNtTm9BdXRoUHJvdG9jb2wpIC8gc2l6ZW9mKG9pZCk7Ci0gICAgICAgIHVzZXItPmF1dGhQcm90b2NvbCA9Ci0gICAgICAgICAgICBzbm1wX2R1cGxpY2F0ZV9vYmppZCh1c21Ob0F1dGhQcm90b2NvbCwgdXNlci0+YXV0aFByb3RvY29sTGVuKTsKLSAgICAgICAgdXNlci0+cHJpdlByb3RvY29sTGVuID0gc2l6ZW9mKHVzbU5vUHJpdlByb3RvY29sKSAvIHNpemVvZihvaWQpOwotICAgICAgICB1c2VyLT5wcml2UHJvdG9jb2wgPQotICAgICAgICAgICAgc25tcF9kdXBsaWNhdGVfb2JqaWQodXNtTm9Qcml2UHJvdG9jb2wsIHVzZXItPnByaXZQcm90b2NvbExlbik7Ci0gICAgICAgIHVzbV9hZGRfdXNlcih1c2VyKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyB2b2lkCiBzbm1wdjNfY2FsY19tc2dfZmxhZ3MoaW50IHNlY19sZXZlbCwgaW50IG1zZ19jb21tYW5kLCB1X2NoYXIgKiBmbGFncykKIHsKQEAgLTIzNDAsOSArMjA0OSwxMyBAQAogICAgICAgICAvKgogICAgICAgICAgKiBGYWxsdGhyb3VnaCAKICAgICAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9USUZZX09OTFkKICAgICBjYXNlIFNOTVBfTVNHX0dFVDoKICAgICBjYXNlIFNOTVBfTVNHX0dFVE5FWFQ6CisjZW5kaWYgLyogISBORVRTTk1QX05PVElGWV9PTkxZICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgU05NUF9NU0dfU0VUOgorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICBjYXNlIFNOTVBfTVNHX0lORk9STToKICAgICAgICAgaWYgKHBkdS0+ZXJyc3RhdCA9PSBTTk1QX0RFRkFVTFRfRVJSU1RBVCkKICAgICAgICAgICAgIHBkdS0+ZXJyc3RhdCA9IDA7CkBAIC0yMzUwLDYgKzIwNjMsNyBAQAogICAgICAgICAgICAgcGR1LT5lcnJpbmRleCA9IDA7CiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9USUZZX09OTFkKICAgICBjYXNlIFNOTVBfTVNHX0dFVEJVTEs6CiAgICAgICAgIGlmIChwZHUtPm1heF9yZXBldGl0aW9ucyA8IDApIHsKICAgICAgICAgICAgIHNlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfQkFEX1JFUEVUSVRJT05TOwpAQCAtMjM2MCw2ICsyMDc0LDcgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhIE5FVFNOTVBfTk9USUZZX09OTFkgKi8KIAogICAgIGNhc2UgU05NUF9NU0dfVFJBUDoKICAgICAgICAgc2Vzc2lvbi0+c19zbm1wX2Vycm5vID0gU05NUEVSUl9WMV9JTl9WMjsKQEAgLTMwMjYsOSArMjc0MSwxMyBAQAogICAgICAgICAvKgogICAgICAgICAgKiBGYWxsdGhyb3VnaCAKICAgICAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9USUZZX09OTFkKICAgICBjYXNlIFNOTVBfTVNHX0dFVDoKICAgICBjYXNlIFNOTVBfTVNHX0dFVE5FWFQ6CisjZW5kaWYgLyogISBORVRTTk1QX05PVElGWV9PTkxZICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgU05NUF9NU0dfU0VUOgorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgLyoKICAgICAgICAgICogYWxsIHZlcnNpb25zIHN1cHBvcnQgdGhlc2UgUERVIHR5cGVzIAogICAgICAgICAgKi8KQEAgLTMwNjMsNiArMjc4Miw3IEBACiAgICAgICAgICAgICBwZHUtPmVycmluZGV4ID0gMDsKICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT1RJRllfT05MWQogICAgIGNhc2UgU05NUF9NU0dfR0VUQlVMSzoKICAgICAgICAgLyoKICAgICAgICAgICogbm90IHN1cHBvcnRlZCBpbiBTTk1QdjEgYW5kIFNOTVBzZWMgCkBAIC0zMDgyLDYgKzI4MDIsNyBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICEgTkVUU05NUF9OT1RJRllfT05MWSAqLwogCiAgICAgY2FzZSBTTk1QX01TR19UUkFQOgogICAgICAgICAvKgpAQCAtMzE2NSw3ICsyODg2LDYgQEAKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgaWYgKDAgPT0gc2Vzc2lvbi0+Y29tbXVuaXR5X2xlbikgewogICAgICAgICAgICAgICAgIFNOTVBfRlJFRShwZHUtPmNvbW11bml0eSk7Ci0gICAgICAgICAgICAgICAgcGR1LT5jb21tdW5pdHkgPSBOVUxMOwogICAgICAgICAgICAgfSBlbHNlIGlmIChwZHUtPmNvbW11bml0eV9sZW4gPT0gc2Vzc2lvbi0+Y29tbXVuaXR5X2xlbikgewogICAgICAgICAgICAgICAgIG1lbW1vdmUocGR1LT5jb21tdW5pdHksCiAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5jb21tdW5pdHksIHNlc3Npb24tPmNvbW11bml0eV9sZW4pOwpAQCAtNDA3Niw5ICszNzk2LDcgQEAKICAgICAgICAgICAgIERFQlVHSU5ERU5UQUREKC00KTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChtYWxsb2NidWYpIHsKLSAgICAgICAgICAgIFNOTVBfRlJFRShtYWxsb2NidWYpOwotICAgICAgICB9CisgICAgICAgIFNOTVBfRlJFRShtYWxsb2NidWYpOwogICAgICAgICByZXR1cm4gcmV0X3ZhbDsKICAgICB9CiAKQEAgLTQwOTEsOSArMzgwOSw3IEBACiAgICAgaWYgKGRhdGEgPT0gTlVMTCkgewogICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9TTk1QSU5BU05QQVJTRUVSUlMpOwogICAgICAgICBERUJVR0lOREVOVEFERCgtNCk7Ci0gICAgICAgIGlmIChtYWxsb2NidWYpIHsKLSAgICAgICAgICAgIFNOTVBfRlJFRShtYWxsb2NidWYpOwotICAgICAgICB9CisgICAgICAgIFNOTVBfRlJFRShtYWxsb2NidWYpOwogICAgICAgICByZXR1cm4gU05NUEVSUl9BU05fUEFSU0VfRVJSOwogICAgIH0KIApAQCAtNDExNiwxNSArMzgzMiwxMSBAQAogICAgIGlmIChyZXQgIT0gU05NUEVSUl9TVUNDRVNTKSB7CiAgICAgICAgIEVSUk9SX01TRygiZXJyb3IgcGFyc2luZyBQRFUiKTsKICAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfU05NUElOQVNOUEFSU0VFUlJTKTsKLSAgICAgICAgaWYgKG1hbGxvY2J1ZikgewotICAgICAgICAgICAgU05NUF9GUkVFKG1hbGxvY2J1Zik7Ci0gICAgICAgIH0KKyAgICAgICAgU05NUF9GUkVFKG1hbGxvY2J1Zik7CiAgICAgICAgIHJldHVybiBTTk1QRVJSX0FTTl9QQVJTRV9FUlI7CiAgICAgfQogCi0gICAgaWYgKG1hbGxvY2J1ZikgewotICAgICAgICBTTk1QX0ZSRUUobWFsbG9jYnVmKTsKLSAgICB9CisgICAgU05NUF9GUkVFKG1hbGxvY2J1Zik7CiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZW5kIHNubXB2M19wYXJzZSgpICovCiAKQEAgLTQyMzYsNyArMzk0OCwxMSBAQAogICAgIC8qCiAgICAgICogZmluZCB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY291bnRlciAgCiAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBVElTVElDUwogICAgIGx0bXAgPSBzbm1wX2dldF9zdGF0aXN0aWMoc3RhdF9pbmQpOworI2Vsc2UgLyogIU5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBVElTVElDUyAqLworICAgIGx0bXAgPSAxOworI2VuZGlmIC8qICFORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVRJU1RJQ1MgKi8KIAogICAgIC8qCiAgICAgICogcmV0dXJuIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb3VudGVyICAKQEAgLTQ3MTUsMTIgKzQ0MzEsMTYgQEAKICAgICAgICAgICogZmFsbHRocm91Z2ggCiAgICAgICAgICAqLwogCisjaWZuZGVmIE5FVFNOTVBfTk9USUZZX09OTFkKICAgICBjYXNlIFNOTVBfTVNHX0dFVDoKICAgICBjYXNlIFNOTVBfTVNHX0dFVE5FWFQ6CiAgICAgY2FzZSBTTk1QX01TR19HRVRCVUxLOgorI2VuZGlmIC8qICEgTkVUU05NUF9OT1RJRllfT05MWSAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKKyAgICBjYXNlIFNOTVBfTVNHX1NFVDoKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgY2FzZSBTTk1QX01TR19UUkFQMjoKICAgICBjYXNlIFNOTVBfTVNHX0lORk9STToKLSAgICBjYXNlIFNOTVBfTVNHX1NFVDoKICAgICAgICAgLyoKICAgICAgICAgICogUERVIGlzIG5vdCBhbiBTTk1QdjEgVFJBUCAKICAgICAgICAgICovCkBAIC00OTY3LDE4ICs0Njg3LDYgQEAKICAgICB9CiAKICAgICAvKgotICAgICAqIGNoZWNrIHRoYXQgaXQgYWdyZWVzIHdpdGggZW5naW5lSUQgcmV0dXJuZWQgZnJvbSBVU00gYWJvdmUKLSAgICAgKiAqIG9ubHkgYSB3YXJuaW5nIGJlY2F1c2UgdGhpcyBjb3VsZCBiZSBsZWdhbCBpZiB3ZSBhcmUgYSBwcm94eQotICAgICAqLwotICAgIGlmIChwZHUtPnNlY3VyaXR5TW9kZWwgPT0gTkVUU05NUF9TRUNNT0RfVVNNICYmCi0gICAgICAgIChwZHUtPnNlY3VyaXR5RW5naW5lSURMZW4gIT0gcGR1LT5jb250ZXh0RW5naW5lSURMZW4gfHwKLSAgICAgICAgIG1lbWNtcChwZHUtPnNlY3VyaXR5RW5naW5lSUQsIHBkdS0+Y29udGV4dEVuZ2luZUlELAotICAgICAgICAgICAgICAgIHBkdS0+c2VjdXJpdHlFbmdpbmVJRExlbikgIT0gMCkpIHsKLSAgICAgICAgREVCVUdNU0dUTCgoInNjb3BlZFBEVV9wYXJzZSIsCi0gICAgICAgICAgICAgICAgICAgICJOb3RlOiBzZWN1cml0eSBhbmQgY29udGV4dCBlbmdpbmVJRHMgZGlmZmVyXG4iKSk7Ci0gICAgfQotCi0gICAgLyoKICAgICAgKiBwYXJzZSBjb250ZXh0TmFtZSBmcm9tIHNjb3BlZFBkdQogICAgICAqLwogICAgIHRtcF9idWZfbGVuID0gU05NUF9NQVhfQ09OVEVYVF9TSVpFOwpAQCAtNTE0NSwxNiArNDg1Myw2IEBACiAgICAgICAgICAgICByZXR1cm4gMDsgLyogc19zbm1wX2Vycm5vIGFscmVhZHkgc2V0ICovCiAgICAgfQogCi0gICAgLyoKLSAgICAgKiBjaGVjayB0byBzZWUgaWYgd2UgbmVlZCB0byBjcmVhdGUgYSB2MyB1c2VyIGZyb20gdGhlIHNlc3Npb24gaW5mbwotICAgICAqLwotICAgIGlmIChjcmVhdGVfdXNlcl9mcm9tX3Nlc3Npb24oc2Vzc2lvbikgIT0gU05NUEVSUl9TVUNDRVNTKSB7Ci0gICAgICAgIHNlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfVU5LTk9XTl9VU0VSX05BTUU7ICAvKiBYWD8/ICovCi0gICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FwaSIsCi0gICAgICAgICAgICAgICAgICAgICJzbm1wX3NlbmQoKTogZmFpbGVkKDIpIHRvIGNyZWF0ZSBhIG5ldyB1c2VyIGZyb20gc2Vzc2lvblxuIikpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KICAgICBpZiAoKHBrdGJ1ZiA9ICh1X2NoYXIgKiltYWxsb2MoMjA0OCkpID09IE5VTEwpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInNlc3NfYXN5bmNfc2VuZCIsCiAgICAgICAgICAgICAgICAgICAgICJjb3VsZG4ndCBtYWxsb2MgaW5pdGlhbCBwYWNrZXQgYnVmZmVyXG4iKSk7CkBAIC01MTc1LDggKzQ4NzMsMTAgQEAKICAgICAgKi8KICAgICBpZiAocGR1LT52YXJpYWJsZXMgPT0gTlVMTCkgewogICAgICAgICBzd2l0Y2ggKHBkdS0+Y29tbWFuZCkgewotICAgICAgICBjYXNlIFNOTVBfTVNHX0dFVDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIGNhc2UgU05NUF9NU0dfU0VUOgorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICAgICAgY2FzZSBTTk1QX01TR19HRVQ6CiAgICAgICAgIGNhc2UgU05NUF9NU0dfR0VUTkVYVDoKICAgICAgICAgY2FzZSBTTk1QX01TR19HRVRCVUxLOgogICAgICAgICBjYXNlIFNOTVBfTVNHX1JFU1BPTlNFOgpAQCAtNTI4OSw3ICs0OTg5LDcgQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0diwgKHN0cnVjdCB0aW1lem9uZSAqKSAwKTsKKyAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZ0dik7CiAgICAgICAgIHJwLT5wZHUgPSBwZHU7CiAgICAgICAgIHJwLT5yZXF1ZXN0X2lkID0gcGR1LT5yZXFpZDsKICAgICAgICAgcnAtPm1lc3NhZ2VfaWQgPSBwZHUtPm1zZ2lkOwpAQCAtNTMwMSwxMSArNTAwMSwxMSBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcnAtPnRpbWVvdXQgPSBzZXNzaW9uLT50aW1lb3V0OwogICAgICAgICB9Ci0gICAgICAgIHJwLT50aW1lID0gdHY7CisgICAgICAgIHJwLT50aW1lTSA9IHR2OwogICAgICAgICB0di50dl91c2VjICs9IHJwLT50aW1lb3V0OwogICAgICAgICB0di50dl9zZWMgKz0gdHYudHZfdXNlYyAvIDEwMDAwMDBMOwogICAgICAgICB0di50dl91c2VjICU9IDEwMDAwMDBMOwotICAgICAgICBycC0+ZXhwaXJlID0gdHY7CisgICAgICAgIHJwLT5leHBpcmVNID0gdHY7CiAKICAgICAgICAgLyoKICAgICAgICAgICogWFggbG9jayBzaG91bGQgYmUgcGVyIHNlc3Npb24gISAKQEAgLTU1MTIsOSArNTIxMiw3IEBACiAgIGlmIChpc3AtPmhvb2tfcHJlKSB7CiAgICAgaWYgKGlzcC0+aG9va19wcmUoc3AsIHRyYW5zcG9ydCwgb3BhcXVlLCBvbGVuZ3RoKSA9PSAwKSB7CiAgICAgICBERUJVR01TR1RMKCgic2Vzc19wcm9jZXNzX3BhY2tldCIsICJwcmUtcGFyc2UgZmFpbFxuIikpOwotICAgICAgaWYgKG9wYXF1ZSAhPSBOVUxMKSB7Ci0JU05NUF9GUkVFKG9wYXF1ZSk7Ci0gICAgICB9CisgICAgICBTTk1QX0ZSRUUob3BhcXVlKTsKICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgIH0KQEAgLTU1MjcsOSArNTIyNSw3IEBACiAKICAgaWYgKHBkdSA9PSBOVUxMKSB7CiAgICAgc25tcF9sb2coTE9HX0VSUiwgInBkdSBmYWlsZWQgdG8gYmUgY3JlYXRlZFxuIik7Ci0gICAgaWYgKG9wYXF1ZSAhPSBOVUxMKSB7Ci0gICAgICBTTk1QX0ZSRUUob3BhcXVlKTsKLSAgICB9CisgICAgU05NUF9GUkVFKG9wYXF1ZSk7CiAgICAgcmV0dXJuIC0xOwogICB9CiAKQEAgLTU3MTUsMTkgKzU0MTEsMTQgQEAKIAkvKgogCSAqIFN1Y2Nlc3NmdWwsIHNvIGRlbGV0ZSByZXF1ZXN0LiAgCiAJICovCi0JaWYgKGlzcC0+cmVxdWVzdHMgPT0gcnApIHsKLQkgIGlzcC0+cmVxdWVzdHMgPSBycC0+bmV4dF9yZXF1ZXN0OwotCSAgaWYgKGlzcC0+cmVxdWVzdHNFbmQgPT0gcnApIHsKLQkgICAgaXNwLT5yZXF1ZXN0c0VuZCA9IE5VTEw7Ci0JICB9Ci0JfSBlbHNlIHsKKwlpZiAob3JwKQogCSAgb3JwLT5uZXh0X3JlcXVlc3QgPSBycC0+bmV4dF9yZXF1ZXN0OwotCSAgaWYgKGlzcC0+cmVxdWVzdHNFbmQgPT0gcnApIHsKLQkgICAgaXNwLT5yZXF1ZXN0c0VuZCA9IG9ycDsKLQkgIH0KLQl9CisgICAgICAgIGVsc2UKKwkgIGlzcC0+cmVxdWVzdHMgPSBycC0+bmV4dF9yZXF1ZXN0OworICAgICAgICBpZiAoaXNwLT5yZXF1ZXN0c0VuZCA9PSBycCkKKwkgIGlzcC0+cmVxdWVzdHNFbmQgPSBvcnA7CiAJc25tcF9mcmVlX3BkdShycC0+cGR1KTsKLQlmcmVlKChjaGFyICopIHJwKTsKKwlmcmVlKHJwKTsKIAkvKgogCSAqIFRoZXJlIHNob3VsZG4ndCBiZSBhbnkgbW9yZSByZXF1ZXN0cyB3aXRoIHRoZSBzYW1lIHJlcWlkLiAgCiAJICovCkBAIC01OTgyLDkgKzU2NzMsNyBAQAogICAgICAgICBzcC0+c19lcnJubyA9IGVycm5vOwogICAgICAgICBzbm1wX3NldF9kZXRhaWwoc3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgU05NUF9GUkVFKHJ4YnVmKTsKLSAgICAgICAgaWYgKG9wYXF1ZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUob3BhcXVlKTsKLSAgICAgICAgfQorICAgICAgICBTTk1QX0ZSRUUob3BhcXVlKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIApAQCAtNjAxOCw5ICs1NzA3LDcgQEAKICAgICAgICAgREVCVUdNU0dUTCgoInNlc3NfcmVhZCIsICJmZCAlZCBjbG9zZWRcbiIsIHRyYW5zcG9ydC0+c29jaykpOwogICAgICAgICB0cmFuc3BvcnQtPmZfY2xvc2UodHJhbnNwb3J0KTsKICAgICAgICAgU05NUF9GUkVFKGlzcC0+cGFja2V0KTsKLSAgICAgICAgaWYgKG9wYXF1ZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUob3BhcXVlKTsKLSAgICAgICAgfQorICAgICAgICBTTk1QX0ZSRUUob3BhcXVlKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIApAQCAtNjA2MCw5ICs1NzQ3LDcgQEAKIAkJfQogCQlERUJVR01TR1RMKCgic2Vzc19yZWFkIiwgImZkICVkIGNsb3NlZFxuIiwgdHJhbnNwb3J0LT5zb2NrKSk7CiAgICAgICAgICAgICAgICAgdHJhbnNwb3J0LT5mX2Nsb3NlKHRyYW5zcG9ydCk7Ci0gICAgICAgICAgICAgICAgaWYgKG9wYXF1ZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFNOTVBfRlJFRShvcGFxdWUpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBTTk1QX0ZSRUUob3BhcXVlKTsKICAgICAgICAgICAgICAgICAvKiogWFhYLXJrczogd2h5IG5vIFNOTVBfRlJFRShpc3AtPnBhY2tldCk7ID8/ICovCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQpAQCAtNjA4Miw5ICs1NzY3LDcgQEAKICAgICAgICAgICAgICAgICBpZiAocHB0ciAhPSBpc3AtPnBhY2tldCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8qIG9wYXF1ZSBmcmVlZCBmb3IgdXMgb3V0c2lkZSBvZiBsb29wLiAqLwogCi0gICAgICAgICAgICAgICAgaWYgKG9wYXF1ZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFNOTVBfRlJFRShvcGFxdWUpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBTTk1QX0ZSRUUob3BhcXVlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KIApAQCAtNjEzMyw5ICs1ODE2LDcgQEAKIAkgICAgb2YgdGhlIG9wYXF1ZSBwb2ludGVyLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGZyZWUoKSB0aGUgb3BhcXVlCiAJICAgIHBvaW50ZXIgaXRzZWxmLiAgKi8KIAotCWlmIChvcGFxdWUgIT0gTlVMTCkgewotCSAgICBTTk1QX0ZSRUUob3BhcXVlKTsKLQl9CisJU05NUF9GUkVFKG9wYXF1ZSk7CiAKICAgICAgICAgaWYgKGlzcC0+cGFja2V0X2xlbiA+PSBNQVhJTVVNX1BBQ0tFVF9TSVpFKSB7CiAgICAgICAgICAgICAvKgpAQCAtNjE1Niw3ICs1ODM3LDYgQEAKICAgICAgICAgICAgICAqIGZvb3RwcmludCBkb3duLgogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBTTk1QX0ZSRUUoaXNwLT5wYWNrZXQpOwotICAgICAgICAgICAgaXNwLT5wYWNrZXQgPSBOVUxMOwogICAgICAgICAgICAgaXNwLT5wYWNrZXRfc2l6ZSA9IDA7CiAgICAgICAgICAgICBpc3AtPnBhY2tldF9sZW4gPSAwOwogICAgICAgICAgICAgcmV0dXJuIHJjOwpAQCAtNjQwNCw5ICs2MDg0LDEwIEBACiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIHJlcXVlc3RzKys7CiAgICAgICAgICAgICBmb3IgKHJwID0gc2xwLT5pbnRlcm5hbC0+cmVxdWVzdHM7IHJwOyBycCA9IHJwLT5uZXh0X3JlcXVlc3QpIHsKLSAgICAgICAgICAgICAgICBpZiAoKCF0aW1lcmlzc2V0KCZlYXJsaWVzdCkKLSAgICAgICAgICAgICAgICAgICAgIHx8ICh0aW1lcmNtcCgmcnAtPmV4cGlyZSwgJmVhcmxpZXN0LCA8KSkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVhcmxpZXN0ID0gcnAtPmV4cGlyZTsKKyAgICAgICAgICAgICAgICBpZiAoIXRpbWVyaXNzZXQoJmVhcmxpZXN0KQorICAgICAgICAgICAgICAgICAgICB8fCAodGltZXJpc3NldCgmcnAtPmV4cGlyZU0pCisgICAgICAgICAgICAgICAgICAgICAgICAmJiB0aW1lcmNtcCgmcnAtPmV4cGlyZU0sICZlYXJsaWVzdCwgPCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGVhcmxpZXN0ID0gcnAtPmV4cGlyZU07CiAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHKCgidmVyYm9zZTpzZXNzX3NlbGVjdCIsIih0byBpbiAlZC4lMDZkIHNlYykgIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KWVhcmxpZXN0LnR2X3NlYywgKGludCllYXJsaWVzdC50dl91c2VjKSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtNjQyMyw3ICs2MTA0LDcgQEAKICAgICB9CiAgICAgREVCVUdNU0coKCJzZXNzX3NlbGVjdCIsICJcbiIpKTsKIAotICAgIGdldHRpbWVvZmRheSgmbm93LCBOVUxMKTsKKyAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJm5vdyk7CiAKICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfQUxBUk1fRE9OVF9VU0VfU0lHKSAmJgpAQCAtNjQ1MSw3ICs2MTMyLDcgQEAKICAgICAgICAgdGltZV90IG92ZXJkdWVfbXMgPSAtKGVhcmxpZXN0LnR2X3NlYyAqIDEwMDAgKyBlYXJsaWVzdC50dl91c2VjIC8gMTAwMCk7CiAgICAgICAgIGlmIChvdmVyZHVlX21zID49IDEwKQogICAgICAgICAgICAgREVCVUdNU0dUKCgidmVyYm9zZTpzZXNzX3NlbGVjdCIsInRpbWVyIG92ZXJkdWUgYnkgJWxkIG1zXG4iLAotICAgICAgICAgICAgICAgICAgICAgICBvdmVyZHVlX21zKSk7CisgICAgICAgICAgICAgICAgICAgICAgIChsb25nKSBvdmVyZHVlX21zKSk7CiAgICAgICAgIHRpbWVyY2xlYXIoJmVhcmxpZXN0KTsKICAgICB9IGVsc2UgewogICAgICAgICBERUJVR01TR1QoKCJ2ZXJib3NlOnNlc3Nfc2VsZWN0IiwidGltZXIgZHVlIGluICVkLiUwNmQgc2VjXG4iLApAQCAtNjU2MCw5ICs2MjQxLDcgQEAKICAgICAgICAgICogVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLiAgCiAgICAgICAgICAqLwogICAgICAgICBERUJVR01TR1RMKCgic2Vzc19yZXNlbmQiLCAiZW5jb2RpbmcgZmFpbHVyZVxuIikpOwotICAgICAgICBpZiAocGt0YnVmICE9IE5VTEwpIHsKLSAgICAgICAgICAgIFNOTVBfRlJFRShwa3RidWYpOwotICAgICAgICB9CisgICAgICAgIFNOTVBfRlJFRShwa3RidWYpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCkBAIC02NTgwLDcgKzYyNTksNyBAQAogCiAgICAgaWYgKHBrdGJ1ZiAhPSBOVUxMKSB7CiAgICAgICAgIFNOTVBfRlJFRShwa3RidWYpOwotICAgICAgICBwa3RidWYgPSBwYWNrZXQgPSBOVUxMOworICAgICAgICBwYWNrZXQgPSBOVUxMOwogICAgIH0KIAogICAgIGlmIChyZXN1bHQgPCAwKSB7CkBAIC02NTg5LDEzICs2MjY4LDEzIEBACiAgICAgICAgIHNubXBfc2V0X2RldGFpbChzdHJlcnJvcihlcnJubykpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZub3csIChzdHJ1Y3QgdGltZXpvbmUgKikgMCk7CisgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmbm93KTsKICAgICAgICAgdHYgPSBub3c7Ci0gICAgICAgIHJwLT50aW1lID0gdHY7CisgICAgICAgIHJwLT50aW1lTSA9IHR2OwogICAgICAgICB0di50dl91c2VjICs9IHJwLT50aW1lb3V0OwogICAgICAgICB0di50dl9zZWMgKz0gdHYudHZfdXNlYyAvIDEwMDAwMDBMOwogICAgICAgICB0di50dl91c2VjICU9IDEwMDAwMDBMOwotICAgICAgICBycC0+ZXhwaXJlID0gdHY7CisgICAgICAgIHJwLT5leHBpcmVNID0gdHY7CiAgICAgfQogICAgIHJldHVybiAwOwogfQpAQCAtNjYyMSw3ICs2MzAwLDcgQEAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGdldHRpbWVvZmRheSgmbm93LCAoc3RydWN0IHRpbWV6b25lICopIDApOworICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmbm93KTsKIAogICAgIC8qCiAgICAgICogRm9yIGVhY2ggcmVxdWVzdCBvdXRzdGFuZGluZywgY2hlY2sgdG8gc2VlIGlmIGl0IGhhcyBleHBpcmVkLgpAQCAtNjYzNSw3ICs2MzE0LDcgQEAKICAgICAgICAgICAgIGZyZWVtZSA9IE5VTEw7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoKHRpbWVyY21wKCZycC0+ZXhwaXJlLCAmbm93LCA8KSkpIHsKKyAgICAgICAgaWYgKCh0aW1lcmNtcCgmcnAtPmV4cGlyZU0sICZub3csIDwpKSkgewogICAgICAgICAgICAgaWYgKChzcHRyID0gZmluZF9zZWNfbW9kKHJwLT5wZHUtPnNlY3VyaXR5TW9kZWwpKSAhPSBOVUxMICYmCiAgICAgICAgICAgICAgICAgc3B0ci0+cGR1X3RpbWVvdXQgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIC8qCkBAIC02NjYzLDE4ICs2MzQyLDEzIEBACiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKE5FVFNOTVBfQ0FMTEJBQ0tfT1BfVElNRURfT1VULCBzcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnAtPnBkdS0+cmVxaWQsIHJwLT5wZHUsIG1hZ2ljKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGlzcC0+cmVxdWVzdHMgPT0gcnApIHsKLSAgICAgICAgICAgICAgICAgICAgaXNwLT5yZXF1ZXN0cyA9IHJwLT5uZXh0X3JlcXVlc3Q7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc3AtPnJlcXVlc3RzRW5kID09IHJwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpc3AtPnJlcXVlc3RzRW5kID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKG9ycCkKICAgICAgICAgICAgICAgICAgICAgb3JwLT5uZXh0X3JlcXVlc3QgPSBycC0+bmV4dF9yZXF1ZXN0OwotICAgICAgICAgICAgICAgICAgICBpZiAoaXNwLT5yZXF1ZXN0c0VuZCA9PSBycCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaXNwLT5yZXF1ZXN0c0VuZCA9IG9ycDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzbm1wX2ZyZWVfcGR1KHJwLT5wZHUpOyAvKiBGSVggIHJwIGlzIGFscmVhZHkgZnJlZSdkISAqLworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaXNwLT5yZXF1ZXN0cyA9IHJwLT5uZXh0X3JlcXVlc3Q7CisgICAgICAgICAgICAgICAgaWYgKGlzcC0+cmVxdWVzdHNFbmQgPT0gcnApCisgICAgICAgICAgICAgICAgICAgIGlzcC0+cmVxdWVzdHNFbmQgPSBvcnA7CisgICAgICAgICAgICAgICAgc25tcF9mcmVlX3BkdShycC0+cGR1KTsKICAgICAgICAgICAgICAgICBmcmVlbWUgPSBycDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsgICAgICAgLyogZG9uJ3QgdXBkYXRlIG9ycCBiZWxvdyAqLwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTY5MjcsNiArNjYwMSw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9PSURfSVNfU1VCVFJFRQogLyoqIElkZW50aWNhbCB0byBuZXRzbm1wX29pZF9lcXVhbHMsIGV4Y2VwdCBvbmx5IHRoZSBsZW5ndGggdXAgdG8gbGVuMSBpcyBjb21wYXJlZC4KICAqIEZ1bmN0aW9uYWxseSwgdGhpcyBkZXRlcm1pbmVzIGlmIGluX25hbWUyIGlzIGVxdWFsIG9yIGEgc3VidHJlZSBvZiBpbl9uYW1lMQogICogQHBhcmFtIGluX25hbWUxIEEgcG9pbnRlciB0byB0aGUgZmlyc3Qgb2lkLgpAQCAtNjk0Nyw2ICs2NjIyLDcgQEAKIAogICAgIHJldHVybiAwOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfT0lEX0lTX1NVQlRSRUUgKi8KIAogLyoqIEdpdmVuIHR3byBPSURzLCBkZXRlcm1pbmUgdGhlIGNvbW1vbiBwcmVmaXggdG8gdGhlbSBib3RoLgogICogQHBhcmFtIGluX25hbWUxIEEgcG9pbnRlciB0byB0aGUgZmlyc3Qgb2lkLgpAQCAtNzY5MCw2ICs3MzY2LDcgQEAKICAgICByZXR1cm4gcmV0dXJuT2lkOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBVElTVElDUwogLyoKICAqIGdlbmVyaWMgc3RhdGlzdGljcyBjb3VudGVyIGZ1bmN0aW9ucyAKICAqLwpAQCAtNzcyOCw1ICs3NDA1LDUgQEAKIHsKICAgICBtZW1zZXQoc3RhdGlzdGljcywgMCwgc2l6ZW9mKHN0YXRpc3RpY3MpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVRJU1RJQ1MgKi8KIC8qKiAgQH0gKi8KLQpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wX2NsaWVudC5jIGIvc25tcGxpYi9zbm1wX2NsaWVudC5jCmluZGV4IGJmZjMyNWUuLmFiN2E1OGMgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcF9jbGllbnQuYworKysgYi9zbm1wbGliL3NubXBfY2xpZW50LmMKQEAgLTQwLDYgKzQwLDcgQEAKICAqICBAewogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KQEAgLTk4LDYgKzk5LDEyIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL3BkdV9hcGkuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNubXBfY2xpZW50X2FsbCwgbGlibmV0c25tcCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNubXBfc3BsaXRfcGR1LCBzbm1wX2NsaWVudF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc25tcF9yZXNldF92YXJfdHlwZXMsIHNubXBfY2xpZW50X2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihxdWVyeV9zZXRfZGVmYXVsdF9zZXNzaW9uLCBzbm1wX2NsaWVudF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yocm93X2NyZWF0ZSwgc25tcF9jbGllbnRfYWxsKQogCiAjaWZuZGVmIEJTRDRfMwogI2RlZmluZSBCU0Q0XzIKQEAgLTU4Nyw2ICs1OTQsNyBAQAogICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGNsb25lZCBQRFUgaWYgc3VjY2Vzc2Z1bC4KICAqIFJldHVybnMgMCBpZiBmYWlsdXJlLgogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUF9TUExJVF9QRFUKIG5ldHNubXBfcGR1ICAgICoKIHNubXBfc3BsaXRfcGR1KG5ldHNubXBfcGR1ICpwZHUsIGludCBza2lwX2NvdW50LCBpbnQgY29weV9jb3VudCkKIHsKQEAgLTU5Nyw2ICs2MDUsNyBAQAogCiAgICAgcmV0dXJuIG5ld3BkdTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBfU1BMSVRfUERVICovCiAKIAogLyoKQEAgLTczNSw2ICs3NDQsOCBAQAogICAgIHJldHVybiBjb3VudDsKIH0KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNvdW50X3ZhcmJpbmRzX29mX3R5cGUsIG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPVU5UX1ZBUkJJTkRTX09GX1RZUEUKIGludAogY291bnRfdmFyYmluZHNfb2ZfdHlwZShuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXJfcHRyLCB1X2NoYXIgdHlwZSkKIHsKQEAgLTc0Niw3ICs3NTcsMTAgQEAKIAogICAgIHJldHVybiBjb3VudDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPVU5UX1ZBUkJJTkRTX09GX1RZUEUgKi8KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGZpbmRfdmFyaW5kX29mX3R5cGUsIG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZJTkRfVkFSSU5EX09GX1RZUEUKIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqCiBmaW5kX3ZhcmJpbmRfb2ZfdHlwZShuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXJfcHRyLCB1X2NoYXIgdHlwZSkKIHsKQEAgLTc1NSw2ICs3NjksNyBAQAogCiAgICAgcmV0dXJuIHZhcl9wdHI7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GSU5EX1ZBUklORF9PRl9UWVBFICovCiAKIG5ldHNubXBfdmFyaWFibGVfbGlzdCoKIGZpbmRfdmFyYmluZF9pbl9saXN0KCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZibGlzdCwKQEAgLTk5OCw2ICsxMDEzLDcgQEAKICAgICB9CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QX1JFU0VUX1ZBUl9UWVBFUwogdm9pZAogc25tcF9yZXNldF92YXJfdHlwZXMobmV0c25tcF92YXJpYWJsZV9saXN0ICogdmJsLCB1X2NoYXIgbmV3X3R5cGUpCiB7CkBAIC0xMDA2LDYgKzEwMjIsNyBAQAogICAgICAgICB2YmwgPSB2YmwtPm5leHRfdmFyaWFibGU7CiAgICAgfQogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUF9SRVNFVF9WQVJfVFlQRVMgKi8KIAogaW50CiBzbm1wX3N5bmNoX3Jlc3BvbnNlX2NiKG5ldHNubXBfc2Vzc2lvbiAqIHNzLApAQCAtMTIxMywxMiArMTIzMCwxNiBAQAogICoKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oPgorCiBzdGF0aWMgbmV0c25tcF9zZXNzaW9uICpfZGVmX3F1ZXJ5X3Nlc3Npb24gPSBOVUxMOworCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUVVFUllfU0VUX0RFRkFVTFRfU0VTU0lPTgogdm9pZAogbmV0c25tcF9xdWVyeV9zZXRfZGVmYXVsdF9zZXNzaW9uKCBuZXRzbm1wX3Nlc3Npb24gKnNlc3MpIHsKICAgICBERUJVR01TR1RMKCgiaXF1ZXJ5IiwgInNldCBkZWZhdWx0IHNlc3Npb24gJXBcbiIsIHNlc3MpKTsKICAgICBfZGVmX3F1ZXJ5X3Nlc3Npb24gPSBzZXNzOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUVVFUllfU0VUX0RFRkFVTFRfU0VTU0lPTiAqLwogCiAvKioKICAqIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGRlZmF1bHQgaW50ZXJuYWwgcXVlcnkgc2Vzc2lvbi4KQEAgLTEzMTEsNiArMTMzMiw3IEBACiAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVkFSKCgiaXF1ZXJ5OnJlc3VsdCIsIHZ0bXApKTsKICAgICAgICAgICAgICAgICBERUJVR01TRygoImlxdWVyeTpyZXN1bHQiLCAiXG4iKSk7CiAgICAgICAgICAgICB9CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAgICAgaWYgKHJlcXVlc3QgIT0gU05NUF9NU0dfU0VUICYmCiAgICAgICAgICAgICAgICAgcmVzcG9uc2UtPmVycmluZGV4ICE9IDApIHsKICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiaXF1ZXJ5IiwgInJldHJ5aW5nIHF1ZXJ5ICglZCwgJWxkKVxuIiwgcmV0LCByZXNwb25zZS0+ZXJyaW5kZXgpKTsKQEAgLTEzMjAsNiArMTM0Miw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCBwZHUgIT0gTlVMTCApCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmV0cnk7CiAgICAgICAgICAgICB9CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZm9yICh2YjEgPSByZXNwb25zZS0+dmFyaWFibGVzLCB2YjIgPSBsaXN0OwogICAgICAgICAgICAgICAgICB2YjE7CkBAIC0xMzU5LDEwICsxMzgyLDEyIEBACiB9CiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIGludCBuZXRzbm1wX3F1ZXJ5X3NldChuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKmxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXNzaW9uICAgICAgICpzZXNzaW9uKXsKICAgICByZXR1cm4gX3F1ZXJ5KCBsaXN0LCBTTk1QX01TR19TRVQsIHNlc3Npb24gKTsKIH0KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIC8qCiAgKiBBIHdhbGsgbmVlZHMgYSBiaXQgbW9yZSB3b3JrLgpAQCAtMTQ4MCw2ICsxNTA1LDggQEAKICAgICByZXR1cm4gaW5wdXQtPmxhc3RfcnVuLT5yZXN1bHQ7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUk9XX0NSRUFURQogLyoqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogcm93IGNyZWF0ZSBzdGF0ZSBtYWNoaW5lIHN0ZXBzCkBAIC0xODU2LDYgKzE4ODMsOCBAQAogCiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JPV19DUkVBVEUgKi8KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogCiAvKiogQH0gKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcF9lbnVtLmMgYi9zbm1wbGliL3NubXBfZW51bS5jCmluZGV4IDM5OTY2ZmEuLjhhNmJkMzggMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcF9lbnVtLmMKKysrIGIvc25tcGxpYi9zbm1wX2VudW0uYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaWZkZWYgSEFWRV9TVERMSUJfSAogI2luY2x1ZGUgPHN0ZGxpYi5oPgpAQCAtMjIsNiArMjMsMTMgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc25tcF9lbnVtX2FsbCwgbGlibmV0c25tcCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNlX2ZpbmRfZnJlZV92YWx1ZV9pbl9zbGlzdCwgc25tcF9lbnVtX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzbm1wX2VudW1fc3RvcmVfbGlzdCwgc25tcF9lbnVtX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzbm1wX2VudW1fc3RvcmVfc2xpc3QsIHNubXBfZW51bV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc25tcF9lbnVtX2NsZWFyLCBzbm1wX2VudW1fYWxsKQorCiBzdHJ1Y3Qgc25tcF9lbnVtX2xpc3Rfc3RyIHsKICAgICBjaGFyICAgICAgICAgICAqbmFtZTsKICAgICBzdHJ1Y3Qgc25tcF9lbnVtX2xpc3QgKmxpc3Q7CkBAIC0xNzcsNiArMTg1LDcgQEAKICAgICByZWFkX2NvbmZpZ19zdG9yZSh0eXBlLCBsaW5lKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBfRU5VTV9TVE9SRV9MSVNUCiB2b2lkCiBzZV9zdG9yZV9saXN0KHVuc2lnbmVkIGludCBtYWpvciwgdW5zaWduZWQgaW50IG1pbm9yLCBjb25zdCBjaGFyICp0eXBlKQogewpAQCAtMTg1LDYgKzE5NCw3IEBACiAgICAgc25wcmludGYodG9rZW4sIHNpemVvZih0b2tlbiksICIlZDolZCIsIG1ham9yLCBtaW5vcik7CiAgICAgc2Vfc3RvcmVfZW51bV9saXN0KHNlX2ZpbmRfbGlzdChtYWpvciwgbWlub3IpLCB0b2tlbiwgdHlwZSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QX0VOVU1fU1RPUkVfTElTVCAqLwogCiBzdHJ1Y3Qgc25tcF9lbnVtX2xpc3QgKgogc2VfZmluZF9saXN0KHVuc2lnbmVkIGludCBtYWpvciwgdW5zaWduZWQgaW50IG1pbm9yKQpAQCAtMzMxLDE4ICszNDEsMTkgQEAKICAgICByZXR1cm4gKHNlX2ZpbmRfbGFiZWxfaW5fbGlzdChzZV9maW5kX3NsaXN0KGxpc3RuYW1lKSwgdmFsdWUpKTsKIH0KIAotCiBpbnQKIHNlX2ZpbmRfdmFsdWVfaW5fc2xpc3QoY29uc3QgY2hhciAqbGlzdG5hbWUsIGNvbnN0IGNoYXIgKmxhYmVsKQogewogICAgIHJldHVybiAoc2VfZmluZF92YWx1ZV9pbl9saXN0KHNlX2ZpbmRfc2xpc3QobGlzdG5hbWUpLCBsYWJlbCkpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU0VfRklORF9GUkVFX1ZBTFVFX0lOX1NMSVNUCiBpbnQKIHNlX2ZpbmRfZnJlZV92YWx1ZV9pbl9zbGlzdChjb25zdCBjaGFyICpsaXN0bmFtZSkKIHsKICAgICByZXR1cm4gKHNlX2ZpbmRfZnJlZV92YWx1ZV9pbl9saXN0KHNlX2ZpbmRfc2xpc3QobGlzdG5hbWUpKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TRV9GSU5EX0ZSRUVfVkFMVUVfSU5fU0xJU1QgKi8KIAogaW50CiBzZV9hZGRfcGFpcl90b19zbGlzdChjb25zdCBjaGFyICpsaXN0bmFtZSwgY2hhciAqbGFiZWwsIGludCB2YWx1ZSkKQEAgLTQyNywxMiArNDM4LDcgQEAKICAgICByZXR1cm47CiB9CiAKLXZvaWQKLXNlX2NsZWFyX3NsaXN0KGNvbnN0IGNoYXIgKmxpc3RuYW1lKQotewotICAgIHNlX2NsZWFyX2xpc3Qoc2VfZmluZF9zbGlzdF9wdHIobGlzdG5hbWUpKTsKLX0KLQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBfRU5VTV9TVE9SRV9TTElTVAogdm9pZAogc2Vfc3RvcmVfc2xpc3QoY29uc3QgY2hhciAqbGlzdG5hbWUsIGNvbnN0IGNoYXIgKnR5cGUpCiB7CkBAIC00NDksNiArNDU1LDE0IEBACiAgICAgc2Vfc3RvcmVfc2xpc3QoKGNoYXIgKiljbGllbnRhcmdzLCBhcHBuYW1lKTsKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUF9FTlVNX1NUT1JFX1NMSVNUICovCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QX0VOVU1fQ0xFQVIKK3ZvaWQKK3NlX2NsZWFyX3NsaXN0KGNvbnN0IGNoYXIgKmxpc3RuYW1lKQoreworICAgIHNlX2NsZWFyX2xpc3Qoc2VfZmluZF9zbGlzdF9wdHIobGlzdG5hbWUpKTsKK30KIAogdm9pZAogc2VfY2xlYXJfYWxsX2xpc3RzKHZvaWQpCkBAIC00NTgsMyArNDcyLDQgQEAKICAgICBmb3IgKHNwdHIgPSBzbGlzdHN0b3JhZ2U7IHNwdHIgIT0gTlVMTDsgc3B0ciA9IHNwdHItPm5leHQpCiAgICAgICAgIHNlX2NsZWFyX2xpc3QoJihzcHRyLT5saXN0KSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QX0VOVU1fQ0xFQVIgKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcF9sb2dnaW5nLmMgYi9zbm1wbGliL3NubXBfbG9nZ2luZy5jCmluZGV4IGIzMGYxNjUuLmEyY2Q1NWEgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcF9sb2dnaW5nLmMKKysrIGIvc25tcGxpYi9zbm1wX2xvZ2dpbmcuYwpAQCAtMTgsNiArMTgsNyBAQAogICogIEB7CiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaWYgSEFWRV9NQUxMT0NfSAogI2luY2x1ZGUgPG1hbGxvYy5oPgpAQCAtODQsNiArODUsMjIgQEAKICNlbmRpZgogI2VuZGlmCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihsb2dnaW5nX2FsbCwgbGlibmV0c25tcCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGxvZ2dpbmdfb3V0cHV0cywgbG9nZ2luZ19hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobG9nZ2luZ19maWxlLCBsb2dnaW5nX291dHB1dHMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobG9nZ2luZ19zdGRpbywgbG9nZ2luZ19vdXRwdXRzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGxvZ2dpbmdfc3lzbG9nLCBsb2dnaW5nX291dHB1dHMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobG9nZ2luZ19leHRlcm5hbCwgbG9nZ2luZ19hbGwpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihlbmFibGVfc3RkZXJybG9nLCBsb2dnaW5nX2FsbCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGxvZ2dpbmdfZW5hYmxlX2NhbGxsb2csIG5ldHNubXBfdW51c2VkKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGxvZ2dpbmdfZW5hYmxlX2xvZ2hhbmRsZXIsIG5ldHNubXBfdW51c2VkKQorCisvKiBkZWZhdWx0IHRvIHRoZSBmaWxlL3N0ZGlvL3N5c2xvZyBzZXQgKi8KK25ldHNubXBfZmVhdHVyZV93YW50KGxvZ2dpbmdfb3V0cHV0cykKKwogLyoKICAqIGxvZ2hfaGVhZDogIEEgbGlzdCBvZiBhbGwgbG9nIGhhbmRsZXJzLCBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIHByaW9yaXR5CiAgKiBsb2doX3ByaW9yaXRpZXM6ICAnSW5kZXhlcycgaW50byB0aGlzIGxpc3QsIGJ5IHByaW9yaXR5CkBAIC05Miw3ICsxMDksOSBAQAogbmV0c25tcF9sb2dfaGFuZGxlciAqbG9naF9wcmlvcml0aWVzW0xPR19ERUJVRysxXTsKIHN0YXRpYyBpbnQgIGxvZ2hfZW5hYmxlZCA9IDA7CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogc3RhdGljIGNoYXIgc3lzbG9nbmFtZVs2NF0gPSBERUZBVUxUX0xPR19JRDsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HICovCiAKIHZvaWQKIG5ldHNubXBfZGlzYWJsZV90aGlzX2xvZ2hhbmRsZXIobmV0c25tcF9sb2dfaGFuZGxlciAqbG9naCkKQEAgLTExMyw4ICsxMzIsMTAgQEAKICAgICArK2xvZ2hfZW5hYmxlZDsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRQogdm9pZAogbmV0c25tcF9lbmFibGVfZmlsZWxvZyhuZXRzbm1wX2xvZ19oYW5kbGVyICpsb2doLCBpbnQgZG9udF96ZXJvX2xvZyk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUgKi8KIAogI2lmbmRlZiBIQVZFX1ZTTlBSSU5URgogICAgICAgICAgICAgICAgIC8qCkBAIC0xNTQsNiArMTc1LDcgQEAKIC8qCiAgKiBUaGVzZSBkZWZpbml0aW9ucyBoYW5kbGUgNC4yIHN5c3RlbXMgd2l0aG91dCBhZGRpdGlvbmFsIHN5c2xvZyBmYWNpbGl0aWVzLgogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cKICNpZm5kZWYgTE9HX0NPTlMKICNkZWZpbmUgTE9HX0NPTlMJMCAgICAgICAvKiBEb24ndCBib3RoZXIgaWYgbm90IGRlZmluZWQuLi4gKi8KICNlbmRpZgpAQCAtMTkwLDYgKzIxMiw3IEBACiAjaWZuZGVmIExPR19VU0VSCiAjZGVmaW5lIExPR19VU0VSCTAKICNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cgKi8KIAogLyogU2V0IGxpbmUgYnVmZmVyaW5nIG1vZGUgZm9yIGEgc3RyZWFtLiAqLwogdm9pZApAQCAtMjg1LDYgKzMwOCw3IEBACiAgICAgcmV0dXJuIHByaV9sb3c7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogaW50CiBkZWNvZGVfZmFjaWxpdHkoIGNoYXIgKm9wdGFyZyApCiB7CkBAIC0zMTksNiArMzQzLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HICovCiAKIGludAogc25tcF9sb2dfb3B0aW9ucyhjaGFyICpvcHRhcmcsIGludCBhcmdjLCBjaGFyICpjb25zdCAqYXJndikKQEAgLTM3NSw2ICs0MDAsNyBAQAogICAgIERFQlVHTVNHVCgoImxvZ2dpbmc6b3B0aW9ucyIsICIqY3A6ICclYydcbiIsICpjcCkpOwogICAgIHN3aXRjaCAoKmNwKSB7CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NURElPCiAgICAgLyoKICAgICAgKiBMb2cgdG8gU3RhbmRhcmQgRXJyb3IKICAgICAgKi8KQEAgLTQxMSw2ICs0MzcsNyBAQAogICAgICAgICAgICAgbG9naC0+aW1hZ2ljICA9IDE7CSAgICAvKiBzdGRvdXQsIG5vdCBzdGRlcnIgKi8KIAl9CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTyAqLwogCiAgICAgLyoKICAgICAgKiBMb2cgdG8gYSBuYW1lZCBmaWxlCkBAIC00MjAsNiArNDQ3LDcgQEAKICAgICAgICAgaWYgKHByaW9yaXR5ID09IC0xIHx8ICFhcmd2KSAgcmV0dXJuIC0xOwogICAgICAgICBvcHRhcmcgPSBhcmd2Wysrb3B0aW5kXTsKICAgICAgICAgLyogRmFsbHRocm91Z2ggKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUKICAgICBjYXNlICdmJzoKICAgICAgICAgaWYgKGluY19vcHRpbmQpCiAgICAgICAgICAgICBvcHRpbmQrKzsKQEAgLTQzNiw3ICs0NjQsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0FQUEVORF9MT0dGSUxFUykpOwogCX0KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HCiAgICAgLyoKICAgICAgKiBMb2cgdG8gc3lzbG9nCiAgICAgICovCkBAIC00NjgsNiArNDk4LDcgQEAKIAkgICAgc25tcF9lbmFibGVfc3lzbG9nX2lkZW50KHNubXBfbG9nX3N5c2xvZ25hbWUoTlVMTCksIGZhY2lsaXR5KTsKIAl9CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cgKi8KIAogICAgIC8qCiAgICAgICogRG9uJ3QgbG9nIApAQCAtNDk5LDYgKzUzMCw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogY2hhciAqCiBzbm1wX2xvZ19zeXNsb2duYW1lKGNvbnN0IGNoYXIgKnBzdHIpCiB7CkBAIC01MDcsMjAgKzUzOSwyOSBAQAogCiAgIHJldHVybiBzeXNsb2duYW1lOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cgKi8KIAogdm9pZAogc25tcF9sb2dfb3B0aW9uc191c2FnZShjb25zdCBjaGFyICpsZWFkLCBGSUxFICogb3V0ZikKIHsKICAgICBjb25zdCBjaGFyICpwcmkxX21zZyA9ICIgZm9yIGxldmVsICdwcmknIGFuZCBhYm92ZSI7CiAgICAgY29uc3QgY2hhciAqcHJpMl9tc2cgPSAiIGZvciBsZXZlbHMgJ3AxJyB0byAncDInIjsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NURElPCiAgICAgZnByaW50ZihvdXRmLCAiJXNlOiAgICAgICAgICAgbG9nIHRvIHN0YW5kYXJkIGVycm9yXG4iLCBsZWFkKTsKICAgICBmcHJpbnRmKG91dGYsICIlc286ICAgICAgICAgICBsb2cgdG8gc3RhbmRhcmQgb3V0cHV0XG4iLCBsZWFkKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1RESU8gKi8KICAgICBmcHJpbnRmKG91dGYsICIlc246ICAgICAgICAgICBkb24ndCBsb2cgYXQgYWxsXG4iLCBsZWFkKTsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUKICAgICBmcHJpbnRmKG91dGYsICIlc2YgZmlsZTogICAgICBsb2cgdG8gdGhlIHNwZWNpZmllZCBmaWxlXG4iLCBsZWFkKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRSAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HCiAgICAgZnByaW50ZihvdXRmLCAiJXNzIGZhY2lsaXR5OiAgbG9nIHRvIHN5c2xvZyAodmlhIHRoZSBzcGVjaWZpZWQgZmFjaWxpdHkpXG4iLCBsZWFkKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HICovCiAgICAgZnByaW50ZihvdXRmLCAiXG4lcyh2YXJpYW50cylcbiIsIGxlYWQpOworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRQogICAgIGZwcmludGYob3V0ZiwgIiVzW0VPTl0gcHJpOiAgIGxvZyB0byBzdGFuZGFyZCBlcnJvciwgb3V0cHV0IG9yIC9kZXYvbnVsbCVzXG4iLCBsZWFkLCBwcmkxX21zZyk7CiAgICAgZnByaW50ZihvdXRmLCAiJXNbRU9OXSBwMS1wMjogbG9nIHRvIHN0YW5kYXJkIGVycm9yLCBvdXRwdXQgb3IgL2Rldi9udWxsJXNcbiIsIGxlYWQsIHByaTJfbXNnKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRSAqLwogICAgIGZwcmludGYob3V0ZiwgIiVzW0ZTXSBwcmkgdG9rZW46ICAgIGxvZyB0byBmaWxlL3N5c2xvZyVzXG4iLCBsZWFkLCBwcmkxX21zZyk7CiAgICAgZnByaW50ZihvdXRmLCAiJXNbRlNdIHAxLXAyIHRva2VuOiAgbG9nIHRvIGZpbGUvc3lzbG9nJXNcbiIsIGxlYWQsIHByaTJfbXNnKTsKIH0KQEAgLTU1NSw2ICs1OTYsNyBAQAogICAgIHJldHVybiBzYnVmOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cKIHZvaWQKIHNubXBfZGlzYWJsZV9zeXNsb2dfZW50cnkobmV0c25tcF9sb2dfaGFuZGxlciAqbG9naCkKIHsKQEAgLTU4NCw3ICs2MjYsOSBAQAogICAgICAgICBpZiAobG9naC0+ZW5hYmxlZCAmJiBsb2doLT50eXBlID09IE5FVFNOTVBfTE9HSEFORExFUl9TWVNMT0cpCiAgICAgICAgICAgICBzbm1wX2Rpc2FibGVfc3lzbG9nX2VudHJ5KGxvZ2gpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRQogdm9pZAogc25tcF9kaXNhYmxlX2ZpbGVsb2dfZW50cnkobmV0c25tcF9sb2dfaGFuZGxlciAqbG9naCkKIHsKQEAgLTU5OCw3ICs2NDIsOSBAQAogICAgIH0KICAgICBuZXRzbm1wX2Rpc2FibGVfdGhpc19sb2doYW5kbGVyKGxvZ2gpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19GSUxFICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUKIHZvaWQKIHNubXBfZGlzYWJsZV9maWxlbG9nKHZvaWQpCiB7CkBAIC02MDgsNyArNjU0LDkgQEAKICAgICAgICAgaWYgKGxvZ2gtPmVuYWJsZWQgJiYgbG9naC0+dHlwZSA9PSBORVRTTk1QX0xPR0hBTkRMRVJfRklMRSkKICAgICAgICAgICAgIHNubXBfZGlzYWJsZV9maWxlbG9nX2VudHJ5KGxvZ2gpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19GSUxFICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NURElPCiAvKgogICogcmV0dXJucyB0aGF0IHN0YXR1cyBvZiBzdGRlcnIgbG9nZ2luZwogICoKQEAgLTY0MCw3ICs2ODgsOSBAQAogICAgICAgICAgICAgbmV0c25tcF9kaXNhYmxlX3RoaXNfbG9naGFuZGxlcihsb2doKTsKIAl9CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NURElPICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0VOQUJMRV9DQUxMTE9HCiB2b2lkCiBzbm1wX2Rpc2FibGVfY2FsbGxvZyh2b2lkKQogewpAQCAtNjUxLDYgKzcwMSw3IEBACiAgICAgICAgICAgICBuZXRzbm1wX2Rpc2FibGVfdGhpc19sb2doYW5kbGVyKGxvZ2gpOwogCX0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRU5BQkxFX0NBTExMT0cgKi8KIAogdm9pZAogc25tcF9kaXNhYmxlX2xvZyh2b2lkKQpAQCAtNjU4LDEwICs3MDksMTQgQEAKICAgICBuZXRzbm1wX2xvZ19oYW5kbGVyICpsb2doOwogCiAgICAgZm9yIChsb2doID0gbG9naF9oZWFkOyBsb2doOyBsb2doID0gbG9naC0+bmV4dCkgeworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HCiAgICAgICAgIGlmIChsb2doLT50eXBlID09IE5FVFNOTVBfTE9HSEFORExFUl9TWVNMT0cpCiAgICAgICAgICAgICBzbm1wX2Rpc2FibGVfc3lzbG9nX2VudHJ5KGxvZ2gpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUKICAgICAgICAgaWYgKGxvZ2gtPnR5cGUgPT0gTkVUU05NUF9MT0dIQU5ETEVSX0ZJTEUpCiAgICAgICAgICAgICBzbm1wX2Rpc2FibGVfZmlsZWxvZ19lbnRyeShsb2doKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRSAqLwogICAgICAgICBuZXRzbm1wX2Rpc2FibGVfdGhpc19sb2doYW5kbGVyKGxvZ2gpOwogICAgIH0KIH0KQEAgLTY3NCwxNSArNzI5LDIwIEBACiBuZXRzbm1wX2xvZ2dpbmdfcmVzdGFydCh2b2lkKQogewogICAgIG5ldHNubXBfbG9nX2hhbmRsZXIgKmxvZ2g7CisgICAgaW50IGRvbmVvbmUgPSAwOwogCiAgICAgZm9yIChsb2doID0gbG9naF9oZWFkOyBsb2doOyBsb2doID0gbG9naC0+bmV4dCkgewogICAgICAgICBpZiAoMCA9PSBsb2doLT5lbmFibGVkKQogICAgICAgICAgICAgY29udGludWU7CisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cKICAgICAgICAgaWYgKGxvZ2gtPnR5cGUgPT0gTkVUU05NUF9MT0dIQU5ETEVSX1NZU0xPRykgewogICAgICAgICAgICAgc25tcF9kaXNhYmxlX3N5c2xvZ19lbnRyeShsb2doKTsKICAgICAgICAgICAgIHNubXBfZW5hYmxlX3N5c2xvZ19pZGVudChsb2doLT50b2tlbiwoaW50KShpbnRwdHJfdClsb2doLT5tYWdpYyk7CisgICAgICAgICAgICBkb25lb25lID0gMTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChsb2doLT50eXBlID09IE5FVFNOTVBfTE9HSEFORExFUl9GSUxFKSB7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRyAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRQorICAgICAgICBpZiAobG9naC0+dHlwZSA9PSBORVRTTk1QX0xPR0hBTkRMRVJfRklMRSAmJiAhZG9uZW9uZSkgewogICAgICAgICAgICAgc25tcF9kaXNhYmxlX2ZpbGVsb2dfZW50cnkobG9naCk7CiAgICAgICAgICAgICAvKiogaG1tLCBkb24ndCB6ZXJvIHN0YXR1cyBpc24ndCBzYXZlZC4uIGkgdGhpbmsgaXQncwogICAgICAgICAgICAgICogc2FmZXIgbm90IHRvIG92ZXJ3cml0ZSwgaW4gY2FzZSBhIGh1cCBpcyBqdXN0IHRvCkBAIC02OTAsMTEgKzc1MCwxMyBAQAogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBuZXRzbm1wX2VuYWJsZV9maWxlbG9nKGxvZ2gsIDEpOwogICAgICAgICB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUgKi8KICAgICB9CiB9CiAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogdm9pZAogc25tcF9lbmFibGVfc3lzbG9nKHZvaWQpCiB7CkBAIC03NTQsNyArODE2LDkgQEAKICAgICAgICAgfQogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUKIHZvaWQKIG5ldHNubXBfZW5hYmxlX2ZpbGVsb2cobmV0c25tcF9sb2dfaGFuZGxlciAqbG9naCwgaW50IGRvbnRfemVyb19sb2cpCiB7CkBAIC04MDQsOCArODY4LDExIEBACiAgICAgICAgICAgICAgICAgbmV0c25tcF9lbmFibGVfZmlsZWxvZyhsb2doLCBkb250X3plcm9fbG9nKTsKICAgICB9CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUgKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRU5BQkxFX1NUREVSUkxPRworLyogdXNlZCBpbiB0aGUgcGVybCBtb2R1bGVzIGFuZCBpcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9zdWJhZ2VudC5jICovCiB2b2lkCiBzbm1wX2VuYWJsZV9zdGRlcnJsb2codm9pZCkKIHsKQEAgLTgyNiw4ICs4OTMsOSBAQAogICAgICAgICAgICAgbG9naC0+dG9rZW4gICAgPSBzdHJkdXAoInN0ZGVyciIpOwogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0VOQUJMRV9TVERFUlJMT0cgKi8KIAotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19FTkFCTEVfQ0FMTExPRwogdm9pZAogc25tcF9lbmFibGVfY2FsbGxvZyh2b2lkKQkvKiBYWFggLSBvciB0YWtlIGEgY2FsbGJhY2sgcm91dGluZSA/Pz8gKi8KIHsKQEAgLTg0Nyw3ICs5MTUsNyBAQAogICAgICAgICAgICAgbG9naC0+dG9rZW4gICAgPSBzdHJkdXAoImNhbGxiYWNrIik7CiAgICAgfQogfQotCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0VOQUJMRV9DQUxMTE9HICovCiAKIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwpAQCAtOTMzLDE3ICsxMDAxLDIzIEBACiAgICAgY2FzZSBORVRTTk1QX0xPR0hBTkRMRVJfU1RET1VUOgogICAgICAgICBsb2doLT5pbWFnaWMgID0gMTsKICAgICAgICAgLyogZmFsbHRocm91Z2ggKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NURElPCiAgICAgY2FzZSBORVRTTk1QX0xPR0hBTkRMRVJfU1RERVJSOgogICAgICAgICBsb2doLT5oYW5kbGVyID0gbG9nX2hhbmRsZXJfc3Rkb3V0ZXJyOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1RESU8gKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRQogICAgIGNhc2UgTkVUU05NUF9MT0dIQU5ETEVSX0ZJTEU6CiAgICAgICAgIGxvZ2gtPmhhbmRsZXIgPSBsb2dfaGFuZGxlcl9maWxlOwogICAgICAgICBsb2doLT5pbWFnaWMgID0gMTsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogICAgIGNhc2UgTkVUU05NUF9MT0dIQU5ETEVSX1NZU0xPRzoKICAgICAgICAgbG9naC0+aGFuZGxlciA9IGxvZ19oYW5kbGVyX3N5c2xvZzsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRyAqLwogICAgIGNhc2UgTkVUU05NUF9MT0dIQU5ETEVSX0NBTExCQUNLOgogICAgICAgICBsb2doLT5oYW5kbGVyID0gbG9nX2hhbmRsZXJfY2FsbGJhY2s7CiAgICAgICAgIGJyZWFrOwpAQCAtOTYxLDYgKzEwMzUsNyBAQAogfQogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0VOQUJMRV9MT0dIQU5ETEVSCiBpbnQKIG5ldHNubXBfZW5hYmxlX2xvZ2hhbmRsZXIoIGNvbnN0IGNoYXIgKnRva2VuICkKIHsKQEAgLTk4NSw2ICsxMDYwLDcgQEAKICAgICBuZXRzbm1wX2Rpc2FibGVfdGhpc19sb2doYW5kbGVyKGxvZ2gpOwogICAgIHJldHVybiAxOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19FTkFCTEVfTE9HSEFORExFUiAqLwogCiBpbnQKIG5ldHNubXBfcmVtb3ZlX2xvZ2hhbmRsZXIoIG5ldHNubXBfbG9nX2hhbmRsZXIgKmxvZ2ggKQpAQCAtMTAxMSw2ICsxMDg3LDcgQEAKIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTwogaW50CiBsb2dfaGFuZGxlcl9zdGRvdXRlcnIoICBuZXRzbm1wX2xvZ19oYW5kbGVyKiBsb2doLCBpbnQgcHJpLCBjb25zdCBjaGFyICpzdHIpCiB7CkBAIC0xMDM4LDggKzExMTUsMTAgQEAKIAogICAgIHJldHVybiAxOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTyAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogI2lmZGVmIFdJTjMyCiBpbnQKIGxvZ19oYW5kbGVyX3N5c2xvZyggIG5ldHNubXBfbG9nX2hhbmRsZXIqIGxvZ2gsIGludCBwcmksIGNvbnN0IGNoYXIgKnN0cikKQEAgLTExMjMsOCArMTIwMiwxMCBAQAogICAgIHJldHVybiAxOwogfQogI2VuZGlmIC8qICFXSU4zMiAqLworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cgKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19GSUxFCiBpbnQKIGxvZ19oYW5kbGVyX2ZpbGUoICAgIG5ldHNubXBfbG9nX2hhbmRsZXIqIGxvZ2gsIGludCBwcmksIGNvbnN0IGNoYXIgKnN0cikKIHsKQEAgLTExNjEsNiArMTI0Miw3IEBACiAgICAgbG9naC0+aW1hZ2ljID0gc3RyW3N0cmxlbihzdHIpIC0gMV0gPT0gJ1xuJzsKICAgICByZXR1cm4gMTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRSAqLwogCiBpbnQKIGxvZ19oYW5kbGVyX2NhbGxiYWNrKG5ldHNubXBfbG9nX2hhbmRsZXIqIGxvZ2gsIGludCBwcmksIGNvbnN0IGNoYXIgKnN0cikKQEAgLTExOTUsMTAgKzEyNzcsMTIgQEAKIHZvaWQKIHNubXBfbG9nX3N0cmluZyhpbnQgcHJpb3JpdHksIGNvbnN0IGNoYXIgKnN0cikKIHsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NURElPCiAgICAgc3RhdGljIGludCBzdGRlcnJfZW5hYmxlZCA9IDA7CiAgICAgc3RhdGljIG5ldHNubXBfbG9nX2hhbmRsZXIgbGggPSB7IDEsIDAsIDAsIDAsICJzdGRlcnIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaGFuZGxlcl9zdGRvdXRlcnIsIDAsIE5VTEwsICBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMIH07CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NURElPICovCiAgICAgbmV0c25tcF9sb2dfaGFuZGxlciAqbG9naDsKIAogICAgIC8qCkBAIC0xMjA2LDIxICsxMjkwLDIzIEBACiAgICAgICogSWYgeW91IGRvbid0IHdhbnQgc3RkZXJyIGxvZ2dpbmcsIHRoZW4gZW5hYmxlIHNvbWV0aGluZyBlbHNlLgogICAgICAqLwogICAgIGlmICgwID09IGxvZ2hfZW5hYmxlZCkgeworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1RESU8KICAgICAgICAgaWYgKCFzdGRlcnJfZW5hYmxlZCkgewogICAgICAgICAgICAgKytzdGRlcnJfZW5hYmxlZDsKICAgICAgICAgICAgIG5ldHNubXBfc2V0X2xpbmVfYnVmZmVyaW5nKHN0ZGVycik7Ci0gICAgICAgICAgICBsb2dfaGFuZGxlcl9zdGRvdXRlcnIoICZsaCwgTE9HX1dBUk5JTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBsb2cgaGFuZGxpbmcgZW5hYmxlZCAtIHVzaW5nIHN0ZGVyciBsb2dnaW5nXG4iKTsKICAgICAgICAgfQogICAgICAgICBsb2dfaGFuZGxlcl9zdGRvdXRlcnIoICZsaCwgcHJpb3JpdHksIHN0ciApOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTyAqLwogCiAgICAgICAgIHJldHVybjsKICAgICB9CisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTwogICAgIGVsc2UgaWYgKHN0ZGVycl9lbmFibGVkKSB7CiAgICAgICAgIHN0ZGVycl9lbmFibGVkID0gMDsKICAgICAgICAgbG9nX2hhbmRsZXJfc3Rkb3V0ZXJyKCAmbGgsIExPR19JTkZPLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMb2cgaGFuZGxpbmcgZGVmaW5lZCAtIGRpc2FibGluZyBzdGRlcnJcbiIgKTsKICAgICB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NURElPICovCiAgICAgICAgIAogCiAgICAgLyoKQEAgLTEzNjQsMTEgKzE0NTAsMTMgQEAKICAgICB9CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0VYVEVSTkFMCiAvKiBleHRlcm5hbCBhY2Nlc3MgdG8gbG9naF9oZWFkIHZhcmlhYmxlICovCiBuZXRzbm1wX2xvZ19oYW5kbGVyICAqCiBnZXRfbG9naF9oZWFkKHZvaWQpCiB7CiAJcmV0dXJuIGxvZ2hfaGVhZDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRVhURVJOQUwgKi8KIAogLyoqICBAfSAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wX29wZW5zc2wuYyBiL3NubXBsaWIvc25tcF9vcGVuc3NsLmMKaW5kZXggZTEzZTU5ZS4uM2IwZWFhOCAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wX29wZW5zc2wuYworKysgYi9zbm1wbGliL3NubXBfb3BlbnNzbC5jCkBAIC02LDcgKzYsMTYgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAKLSNpZiBkZWZpbmVkKE5FVFNOTVBfVVNFX09QRU5TU0wpICYmIGRlZmluZWQoSEFWRV9MSUJTU0wpCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKworI2lmIGRlZmluZWQoTkVUU05NUF9VU0VfT1BFTlNTTCkgJiYgZGVmaW5lZChIQVZFX0xJQlNTTCkgJiYgIWRlZmluZWQoTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DRVJUX1VUSUwpCisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNvbnRhaW5lcl9mcmVlX2FsbCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG9wZW5zc2xfY2VydF9nZXRfc3ViamVjdEFsdE5hbWVzLCBuZXRzbm1wX3VudXNlZCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihvcGVuc3NsX2h0Mm5pZCwgbmV0c25tcF91bnVzZWQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yob3BlbnNzbF9lcnJfbG9nLCBuZXRzbm1wX3VudXNlZCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjZXJ0X2R1bXBfbmFtZXMsIG5ldHNubXBfdW51c2VkKQogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIApAQCAtMTMxLDYgKzE0MCw3IEBACiAgICAgcmV0dXJuIF9jZXJ0X2dldF9uYW1lKG9jZXJ0LCBOSURfY29tbW9uTmFtZSwgYnVmLCBsZW4sIDApOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0VSVF9EVU1QX05BTUVTCiAvKiogbmV0c25tcF9vcGVuc3NsX2NlcnRfZHVtcF9uYW1lOiBkdW1wIHN1YmplY3QgbmFtZXMgaW4gY2VydAogICovCiB2b2lkCkBAIC0xNzQsNiArMTg0LDcgQEAKICAgICAgICAgICAgICAgICAgICBwcmVmaXhfc2hvcnQsIEFTTjFfU1RSSU5HX2RhdGEob25hbWVfZW50cnktPnZhbHVlKSkpOwogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NFUlRfRFVNUF9OQU1FUyAqLwogCiBzdGF0aWMgY2hhciAqCiBfY2VydF9nZXRfZXh0ZW5zaW9uKFg1MDlfRVhURU5TSU9OICAqb2V4dCwgY2hhciAqKmJ1ZiwgaW50ICpsZW4sIGludCBmbGFncykKQEAgLTM2OCw4ICszNzksNyBAQAogICAgIHJldHVybiBydG47CiB9CiAKLS8qKgotICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfT1BFTlNTTF9DRVJUX0dFVF9TVUJKRUNUQUxUTkFNRVMKIC8qKiBuZXRzbm1wX29wZW5zc2xfY2VydF9nZXRfc3ViamVjdEFsdE5hbWU6IGdldCBzdWJqZWN0QWx0TmFtZSBmb3IgY2VydC4KICAqIGlmIGEgcG9pbnRlciB0byBhIGJ1ZmZlciBhbmQgaXRzIGxlbmd0aCBhcmUgc3BlY2lmaWVkLCB0aGV5IHdpbGwgYmUKICAqIHVzZWQuIG90aGVyd2lzZSwgYSBuZXcgYnVmZmVyIHdpbGwgYmUgYWxsb2NhdGVkLCB3aGljaCB0aGUgY2FsbGVyIHdpbGwKQEAgLTM4MCw2ICszOTAsNyBAQAogewogICAgIHJldHVybiBfY2VydF9nZXRfZXh0ZW5zaW9uX2lkX3N0cihvY2VydCwgTklEX3N1YmplY3RfYWx0X25hbWUsIGJ1ZiwgbGVuLCAwKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09QRU5TU0xfQ0VSVF9HRVRfU1VCSkVDVEFMVE5BTUVTICovCiAKIHZvaWQKIG5ldHNubXBfb3BlbnNzbF9jZXJ0X2R1bXBfZXh0ZW5zaW9ucyhYNTA5ICpvY2VydCkKQEAgLTQ0MCw2ICs0NTEsNyBAQAogICAgIHJldHVybiAwOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfT1BFTlNTTF9IVDJOSUQKIGludAogX2h0Mm5pZChpbnQgaHQpCiB7CkBAIC00NDcsNiArNDU5LDcgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIF9odG1hcFtodF07CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9PUEVOU1NMX0hUMk5JRCAqLwogCiAvKioKICAqIHJldHVybnMgYWxsb2NhdGVkIHBvaW50ZXIgY2FsbGVyIG11c3QgZnJlZS4KQEAgLTQ5NSw3ICs1MDgsNyBAQAogICAgICAgICAgICAgZGlnZXN0ID0gRVZQX3NoYTEoKTsKICAgICAgICAgICAgIGJyZWFrOwogCi0jaWZuZGVmIE9QRU5TU0xfTk9fU0hBMjU2CisjaWZkZWYgSEFWRV9FVlBfU0hBMjI0CiAgICAgICAgIGNhc2UgTlNfSEFTSF9TSEEyMjQ6CiAgICAgICAgICAgICBkaWdlc3QgPSBFVlBfc2hhMjI0KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTUwNSw3ICs1MTgsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAKICNlbmRpZgotI2lmbmRlZiBPUEVOU1NMX05PX1NIQTUxMgorI2lmZGVmIEhBVkVfRVZQX1NIQTM4NAogICAgICAgICBjYXNlIE5TX0hBU0hfU0hBMzg0OgogICAgICAgICAgICAgZGlnZXN0ID0gRVZQX3NoYTM4NCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC03OTksNiArODEyLDcgQEAKIH0KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfT1BFTlNTTF9FUlJfTE9HCiB2b2lkCiBuZXRzbm1wX29wZW5zc2xfZXJyX2xvZyhjb25zdCBjaGFyICpwcmVmaXgpCiB7CkBAIC04MDksNiArODIzLDcgQEAKICAgICAgICAgICAgICAgICAgRVJSX0dFVF9MSUIoZXJyKSwgRVJSX0dFVF9GVU5DKGVyciksIEVSUl9HRVRfUkVBU09OKGVycikpOwogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09QRU5TU0xfRVJSX0xPRyAqLwogCiB2b2lkCiBuZXRzbm1wX29wZW5zc2xfbnVsbF9jaGVja3MoU1NMICpzc2wsIGludCAqbnVsbF9hdXRoLCBpbnQgKm51bGxfY2lwaGVyKQpAQCAtODYxLDQgKzg3Niw0IEBACiAgICAgfQogfQogCi0jZW5kaWYgLyogTkVUU05NUF9VU0VfT1BFTlNTTCAmJiBIQVZFX0xJQlNTTCAqLworI2VuZGlmIC8qIE5FVFNOTVBfVVNFX09QRU5TU0wgJiYgSEFWRV9MSUJTU0wgJiYgIWRlZmluZWQoTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DRVJUX1VUSUwpICovCmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXBfcGFyc2VfYXJncy5jIGIvc25tcGxpYi9zbm1wX3BhcnNlX2FyZ3MuYwppbmRleCA5NDdhNzhhLi42ODQyZDBlIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBfcGFyc2VfYXJncy5jCisrKyBiL3NubXBsaWIvc25tcF9wYXJzZV9hcmdzLmMKQEAgLTIxMCw3ICsyMTAsNyBAQAogICAgICAqIGluaXRpYWxpemUgc2Vzc2lvbiB0byBkZWZhdWx0IHZhbHVlcyAKICAgICAgKi8KICAgICBzbm1wX3Nlc3NfaW5pdChzZXNzaW9uKTsKLSAgICBzdHJjcHkoT3B0cywgIlk6VmhIbTpNOk86STpQOkQ6ZHY6cjp0OmM6WjplOkU6bjp1Omw6eDpYOmE6QTpwOlQ6LTozOnM6UzpMOiIpOworICAgIHN0cmNweShPcHRzLCAiWTpWaEhtOk06TzpJOlA6RDpkdjpyOnQ6YzpaOmU6RTpuOnU6bDp4Olg6YTpBOnA6VDotOjM6TDoiKTsKICAgICBpZiAobG9jYWxPcHRzKSB7CiAgICAgICAgIGlmIChzdHJsZW4obG9jYWxPcHRzKSArIHN0cmxlbihPcHRzKSA+PSBzaXplb2YoT3B0cykpIHsKICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJUb28gbWFueSBsb2NhbE9wdHMgaW4gc25tcF9wYXJzZV9hcmdzKClcbiIpOwpAQCAtNTU3LDYgKzU1Nyw3IEBACiAKICAgICAgICAgICAgIGJyZWFrOwogCisjaWZkZWYgTkVUU05NUF9TRUNNT0RfVVNNCiAgICAgICAgIGNhc2UgJ2EnOgogI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfTUQ1CiAgICAgICAgICAgICBpZiAoIXN0cmNhc2VjbXAob3B0YXJnLCAiTUQ1IikpIHsKQEAgLTYzMCw2ICs2MzEsNyBAQAogCSAgICB9CiAgICAgICAgICAgICBicmVhazsKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU05NUFYzX0NNRF9PUFRJT05TICovCisjZW5kaWYgLyogTkVUU05NUF9TRUNNT0RfVVNNICovCiAKICAgICAgICAgY2FzZSAnPyc6CiAgICAgICAgICAgICByZXR1cm4gKE5FVFNOTVBfUEFSU0VfQVJHU19FUlJPUl9VU0FHRSk7CkBAIC02OTAsNiArNjkyLDkgQEAKICAgICAgICAgfQogICAgIH0KIAorI2lmZGVmIE5FVFNOTVBfU0VDTU9EX1VTTQorICAgIC8qIFhYWDogdGhpcyBzaG91bGQgaWRlYWxseSBiZSBtb3ZlZCB0byBzbm1wdXNtLmMgc29tZWhvdyAqLworCiAgICAgLyoKICAgICAgKiBtYWtlIG1hc3RlciBrZXkgZnJvbSBwYXNzIHBocmFzZXMgCiAgICAgICovCkBAIC03NzAsNiArNzc1LDggQEAKICAgICAgICAgICAgIHJldHVybiAoTkVUU05NUF9QQVJTRV9BUkdTX0VSUk9SKTsKICAgICAgICAgfQogICAgIH0KKyNlbmRpZiAvKiBORVRTTk1QX1NFQ01PRF9VU00gKi8KKwogICAgIC8qCiAgICAgICogZ2V0IHRoZSBob3N0bmFtZSAKICAgICAgKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcF9zZWNtb2QuYyBiL3NubXBsaWIvc25tcF9zZWNtb2QuYwppbmRleCBhOGNmOTI4Li45ZTYwYTQyIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBfc2VjbW9kLmMKKysrIGIvc25tcGxpYi9zbm1wX3NlY21vZC5jCkBAIC0zMiw2ICszMiw4IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorCiBzdGF0aWMgc3RydWN0IHNubXBfc2VjbW9kX2xpc3QgKnJlZ2lzdGVyZWRfc2VydmljZXMgPSBOVUxMOwogCiBzdGF0aWMgU05NUENhbGxiYWNrIHNldF9kZWZhdWx0X3NlY21vZDsKQEAgLTUxLDYgKzUzLDExIEBACiAjaW5jbHVkZSAic25tcHNtX2luaXQuaCIKIH0KIAordm9pZAorc2h1dGRvd25fc2VjbW9kKHZvaWQpCit7CisgICAgI2luY2x1ZGUgInNubXBzbV9zaHV0ZG93bi5oIgorfQogCiBpbnQKIHJlZ2lzdGVyX3NlY19tb2QoaW50IHNlY21vZCwgY29uc3QgY2hhciAqbW9kbmFtZSwKQEAgLTk5LDYgKzEwNiw4IEBACiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVucmVnaXN0ZXJfc2VjX21vZCwgbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVU5SRUdJU1RFUl9TRUNfTU9ECiBpbnQKIHVucmVnaXN0ZXJfc2VjX21vZChpbnQgc2VjbW9kKQogewpAQCAtMTIxLDYgKzEzMCw3IEBACiAgICAgICovCiAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVU5SRUdJU1RFUl9TRUNfTU9EICovCiAKIHZvaWQgICAgICAgICAgICAKIGNsZWFyX3NlY19tb2Qodm9pZCkKQEAgLTE1Myw2ICsxNjMsMTkgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorLyogdHJ5IHRvIHBpY2sgYSByZWFzb25hYmxlIHNlY3VyaXR5IG1vZHVsZSBkZWZhdWx0IGJhc2VkIG9uIHdoYXQgd2FzCisgICBjb21waWxlZCBpbnRvIHRoZSBuZXQtc25tcCBwYWNrYWdlICovCisjaWZkZWYgVVNNX1NFQ19NT0RFTF9OVU1CRVIKKyNkZWZpbmUgTkVUU05NUF9TRUNNT0RfREVGQVVMVF9NT0RFTCAgVVNNX1NFQ19NT0RFTF9OVU1CRVIKKyNlbGlmIGRlZmluZWQoVFNNX1NFQ19NT0RFTF9OVU1CRVIpCisjZGVmaW5lIE5FVFNOTVBfU0VDTU9EX0RFRkFVTFRfTU9ERUwgIFRTTV9TRUNfTU9ERUxfTlVNQkVSCisjZWxpZiBkZWZpbmVkKEtTTV9TRUNfTU9ERUxfTlVNQkVSKQorI2RlZmluZSBORVRTTk1QX1NFQ01PRF9ERUZBVUxUX01PREVMICBLU01fU0VDX01PREVMX05VTUJFUgorI2Vsc2UKKy8qIGVsc2Ugd2UgZ2l2ZSB1cCBhbmQgbGVhdmUgaXQgYmxhbmsgKi8KKyNkZWZpbmUgTkVUU05NUF9TRUNNT0RfREVGQVVMVF9NT0RFTCAgLTEKKyNlbmRpZgorCiBzdGF0aWMgaW50CiBzZXRfZGVmYXVsdF9zZWNtb2QoaW50IG1ham9yLCBpbnQgbWlub3IsIHZvaWQgKnNlcnZlcmFyZywgdm9pZCAqY2xpZW50YXJnKQogewpAQCAtMTcyLDExICsxOTUsMTEgQEAKICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmtub3duIHNlY3VyaXR5IG1vZGVsIG5hbWU6ICVzLiAgRm9yY2luZyBVU00gaW5zdGVhZC5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY3B0cik7Ci0gICAgICAgICAgICAgICAgc2Vzcy0+c2VjdXJpdHlNb2RlbCA9IFVTTV9TRUNfTU9ERUxfTlVNQkVSOworICAgICAgICAgICAgICAgIHNlc3MtPnNlY3VyaXR5TW9kZWwgPSBORVRTTk1QX1NFQ01PRF9ERUZBVUxUX01PREVMOwogICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNlc3MtPnNlY3VyaXR5TW9kZWwgPSBVU01fU0VDX01PREVMX05VTUJFUjsKKyAgICAgICAgICAgIHNlc3MtPnNlY3VyaXR5TW9kZWwgPSBORVRTTk1QX1NFQ01PRF9ERUZBVUxUX01PREVMOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXBfdHJhbnNwb3J0LmMgYi9zbm1wbGliL3NubXBfdHJhbnNwb3J0LmMKaW5kZXggNGRmOTYwMi4uYWRhNDc4MSAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jCisrKyBiL3NubXBsaWIvc25tcF90cmFuc3BvcnQuYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0Lmg+CkBAIC03MCw2ICs3MSwxMSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodHJhbnNwb3J0X2FsbCwgbGlibmV0c25tcCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRkb21haW5fc3VwcG9ydCwgdHJhbnNwb3J0X2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0ZG9tYWluX3RyYW5zcG9ydF9vaWQsIHRyYW5zcG9ydF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc29ja2FkZHJfc2l6ZSwgdHJhbnNwb3J0X2FsbCkKIAogLyoKICAqIE91ciBsaXN0IG9mIHN1cHBvcnRlZCB0cmFuc3BvcnQgZG9tYWlucy4gIApAQCAtOTksOSArMTA1LDYgQEAKIHN0YXRpYyB2b2lkICAgICBuZXRzbm1wX3Rkb21haW5fZHVtcCh2b2lkKTsKIAogCi0vKgotICogTWFrZSBhIGRlZXAgY29weSBvZiBhbiBuZXRzbm1wX3RyYW5zcG9ydC4gIAotICovCiAKIHZvaWQKIGluaXRfc25tcF90cmFuc3BvcnQodm9pZCkKQEAgLTExMiwxNiArMTE1LDIyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfRE9OVF9MT0FEX0hPU1RfRklMRVMpOwogfQogCisvKgorICogTWFrZSBhIGRlZXAgY29weSBvZiBhbiBuZXRzbm1wX3RyYW5zcG9ydC4gIAorICovCiBuZXRzbm1wX3RyYW5zcG9ydCAqCiBuZXRzbm1wX3RyYW5zcG9ydF9jb3B5KG5ldHNubXBfdHJhbnNwb3J0ICp0KQogewogICAgIG5ldHNubXBfdHJhbnNwb3J0ICpuID0gTlVMTDsKIAotICAgIG4gPSAobmV0c25tcF90cmFuc3BvcnQgKikgbWFsbG9jKHNpemVvZihuZXRzbm1wX3RyYW5zcG9ydCkpOworICAgIGlmICh0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbiA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90cmFuc3BvcnQpOwogICAgIGlmIChuID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG1lbXNldChuLCAwLCBzaXplb2YobmV0c25tcF90cmFuc3BvcnQpKTsKIAogICAgIGlmICh0LT5kb21haW4gIT0gTlVMTCkgewogICAgICAgICBuLT5kb21haW4gPSB0LT5kb21haW47CkBAIC0xODAsNiArMTg5LDcgQEAKICAgICBuLT5mX2ZtdGFkZHIgPSB0LT5mX2ZtdGFkZHI7CiAgICAgbi0+c29jayA9IHQtPnNvY2s7CiAgICAgbi0+ZmxhZ3MgPSB0LT5mbGFnczsKKyAgICBuLT5iYXNlX3RyYW5zcG9ydCA9IG5ldHNubXBfdHJhbnNwb3J0X2NvcHkodC0+YmFzZV90cmFuc3BvcnQpOwogCiAgICAgLyogZ2l2ZSB0aGUgdHJhbnNwb3J0IGEgY2hhbmNlIHRvIGRvICJzcGVjaWFsIHRoaW5ncyIgKi8KICAgICBpZiAodC0+Zl9jb3B5KQpAQCAtMTk2LDE1ICsyMDYsMTEgQEAKICAgICBpZiAoTlVMTCA9PSB0KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodC0+bG9jYWwgIT0gTlVMTCkgewotICAgICAgICBTTk1QX0ZSRUUodC0+bG9jYWwpOwotICAgIH0KLSAgICBpZiAodC0+cmVtb3RlICE9IE5VTEwpIHsKLSAgICAgICAgU05NUF9GUkVFKHQtPnJlbW90ZSk7Ci0gICAgfQotICAgIGlmICh0LT5kYXRhICE9IE5VTEwpIHsKLSAgICAgICAgU05NUF9GUkVFKHQtPmRhdGEpOwotICAgIH0KKyAgICBTTk1QX0ZSRUUodC0+bG9jYWwpOworICAgIFNOTVBfRlJFRSh0LT5yZW1vdGUpOworICAgIFNOTVBfRlJFRSh0LT5kYXRhKTsKKyAgICBuZXRzbm1wX3RyYW5zcG9ydF9mcmVlKHQtPmJhc2VfdHJhbnNwb3J0KTsKKwogICAgIFNOTVBfRlJFRSh0KTsKIH0KIApAQCAtMjMwLDYgKzIzNiwyOCBAQAogCiAgICAgcmV0dXJuIHN0cjsKIH0KKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NPQ0tBRERSX1NJWkUKK2ludAorbmV0c25tcF9zb2NrYWRkcl9zaXplKHN0cnVjdCBzb2NrYWRkciAqc2EpCit7CisgICAgaWYgKE5VTEwgPT0gc2EpCisgICAgICAgIHJldHVybiAwOworCisgICAgc3dpdGNoIChzYS0+c2FfZmFtaWx5KSB7CisgICAgICAgIGNhc2UgQUZfSU5FVDoKKyAgICAgICAgICAgIHJldHVybiBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKKyAgICAgICAgYnJlYWs7CisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorICAgICAgICBjYXNlIEFGX0lORVQ2OgorICAgICAgICAgICAgcmV0dXJuIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TT0NLQUREUl9TSVpFICovCiAgICAgCiBpbnQKIG5ldHNubXBfdHJhbnNwb3J0X3NlbmQobmV0c25tcF90cmFuc3BvcnQgKnQsIHZvaWQgKnBhY2tldCwgaW50IGxlbmd0aCwKQEAgLTI5OSw2ICszMjcsNyBAQAogCiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RET01BSU5fU1VQUE9SVAogaW50CiBuZXRzbm1wX3Rkb21haW5fc3VwcG9ydChjb25zdCBvaWQgKiBpbl9vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5fbGVuLApAQCAtMzE3LDcgKzM0Niw3IEBACiAgICAgfQogICAgIHJldHVybiAwOwogfQotCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9URE9NQUlOX1NVUFBPUlQgKi8KIAogCiB2b2lkCkBAIC0zOTUsNiArNDI0LDggQEAKIAogCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0ZG9tYWluX3VucmVnaXN0ZXIsIG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RET01BSU5fVU5SRUdJU1RFUgogaW50CiBuZXRzbm1wX3Rkb21haW5fdW5yZWdpc3RlcihuZXRzbm1wX3Rkb21haW4gKm4pCiB7CkBAIC00MTUsNiArNDQ2LDcgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVERPTUFJTl9VTlJFR0lTVEVSICovCiAKIAogc3RhdGljIG5ldHNubXBfdGRvbWFpbiAqCkBAIC00NjYsMTAgKzQ5OCw3IEBACiAgICAgY29uc3QgY2hhciAqIGNvbnN0ICpzcGVjID0gTlVMTDsKICAgICBpbnQgICAgICAgICAgICAgICAgIGFueV9mb3VuZCA9IDA7CiAgICAgY2hhciBidWZbU05NUF9NQVhQQVRIXTsKLSAgICBleHRlcm4gY29uc3QgY2hhciAqY3VyZmlsZW5hbWU7CQkvKiBmcm9tIHJlYWRfY29uZmlnLmMgKi8KLSAgICBjb25zdCBjaGFyICAgICAgICAqcHJldl9jdXJmaWxlbmFtZTsKLQotICAgIHByZXZfY3VyZmlsZW5hbWUgPSBjdXJmaWxlbmFtZTsKKyAgICBjaGFyICoqbHNwZWMgPSAwOwogCiAgICAgREVCVUdNU0dUTCgoInRkb21haW4iLAogICAgICAgICAgICAgICAgICJ0ZG9tYWluX3RyYW5zcG9ydF9mdWxsKFwiJXNcIiwgXCIlc1wiLCAlZCwgXCIlc1wiLCBcIiVzXCIpXG4iLApAQCAtNTU5LDcgKzU4OCwyMSBAQAogICAgICAgICAgICAgREVCVUdNU0dUTCgoInRkb21haW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgIlVzZSB1c2VyIHNwZWNpZmllZCBkZWZhdWx0IGRvbWFpbiBcIiVzXCJcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X2RvbWFpbikpOwotICAgICAgICAgICAgbWF0Y2ggPSBmaW5kX3Rkb21haW4oZGVmYXVsdF9kb21haW4pOworICAgICAgICAgICAgaWYgKCFzdHJjaHIoZGVmYXVsdF9kb21haW4sICcsJykpCisgICAgICAgICAgICAgICAgbWF0Y2ggPSBmaW5kX3Rkb21haW4oZGVmYXVsdF9kb21haW4pOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaW50IGNvbW1hcyA9IDA7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY3AgPSBkZWZhdWx0X2RvbWFpbjsKKyAgICAgICAgICAgICAgICBjaGFyICpkdXAgPSBzdHJkdXAoZGVmYXVsdF9kb21haW4pOworCisgICAgICAgICAgICAgICAgd2hpbGUgKCorK2NwKSBpZiAoKmNwID09ICcsJykgY29tbWFzKys7CisgICAgICAgICAgICAgICAgbHNwZWMgPSBjYWxsb2MoY29tbWFzKzIsIHNpemVvZihjaGFyICopKTsKKyAgICAgICAgICAgICAgICBjb21tYXMgPSAxOworICAgICAgICAgICAgICAgIGxzcGVjWzBdID0gc3RydG9rKGR1cCwgIiwiKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoKGxzcGVjW2NvbW1hcysrXSA9IHN0cnRvayhOVUxMLCAiLCIpKSkKKyAgICAgICAgICAgICAgICAgICAgOworICAgICAgICAgICAgICAgIHNwZWMgPSAoY29uc3QgY2hhciAqIGNvbnN0ICopbHNwZWM7CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzcGVjID0gbmV0c25tcF9sb29rdXBfZGVmYXVsdF9kb21haW5zKGFwcGxpY2F0aW9uKTsKICAgICAgICAgICAgIGlmIChzcGVjID09IE5VTEwpIHsKQEAgLTU5OSwxMiArNjQyLDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCBhZGRyZXNzIFwiJXNcIlxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoLT5wcmVmaXhbMF0sIGFkZHIgPyBhZGRyIDogIltOSUxdIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIyID8gYWRkcjIgOiAiW05JTF0iKSk7Ci0gICAgICAgICAgICBpZiAobWF0Y2gtPmZfY3JlYXRlX2Zyb21fdHN0cmluZykKKyAgICAgICAgICAgIGlmIChtYXRjaC0+Zl9jcmVhdGVfZnJvbV90c3RyaW5nKSB7CisgICAgICAgICAgICAgICAgTkVUU05NUF9MT0dPTkNFKChMT0dfV0FSTklORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0cmFuc3BvcnQgZG9tYWluICVzIHVzZXMgZGVwcmVjYXRlZCBmX2NyZWF0ZV9mcm9tX3RzdHJpbmdcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaC0+cHJlZml4WzBdKSk7CiAgICAgICAgICAgICAgICAgdCA9IG1hdGNoLT5mX2NyZWF0ZV9mcm9tX3RzdHJpbmcoYWRkciwgbG9jYWwpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHQgPSBtYXRjaC0+Zl9jcmVhdGVfZnJvbV90c3RyaW5nX25ldyhhZGRyLCBsb2NhbCwgYWRkcjIpOwogICAgICAgICAgICAgaWYgKHQpIHsKLSAgICAgICAgICAgICAgICBjdXJmaWxlbmFtZSA9IHByZXZfY3VyZmlsZW5hbWU7CisgICAgICAgICAgICAgICAgaWYgKGxzcGVjKSB7CisgICAgICAgICAgICAgICAgICAgIGZyZWUobHNwZWNbMF0pOworICAgICAgICAgICAgICAgICAgICBmcmVlKGxzcGVjKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuIHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTYxNiw3ICs2NjYsMTAgQEAKICAgICB9CiAgICAgaWYgKCFhbnlfZm91bmQpCiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJObyBzdXBwb3J0IGZvciBhbnkgY2hlY2tlZCB0cmFuc3BvcnQgZG9tYWluXG4iKTsKLSAgICBjdXJmaWxlbmFtZSA9IHByZXZfY3VyZmlsZW5hbWU7CisgICAgaWYgKGxzcGVjKSB7CisgICAgICAgIGZyZWUobHNwZWNbMF0pOworICAgICAgICBmcmVlKGxzcGVjKTsKKyAgICB9CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTYzMCw2ICs2ODMsNyBAQAogfQogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9URE9NQUlOX1RSQU5TUE9SVF9PSUQKIG5ldHNubXBfdHJhbnNwb3J0ICoKIG5ldHNubXBfdGRvbWFpbl90cmFuc3BvcnRfb2lkKGNvbnN0IG9pZCAqIGRvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkb21fbGVuLApAQCAtNjU0LDYgKzcwOCw3IEBACiAgICAgc25tcF9sb2coTE9HX0VSUiwgIk5vIHN1cHBvcnQgZm9yIHJlcXVlc3RlZCB0cmFuc3BvcnQgZG9tYWluXG4iKTsKICAgICByZXR1cm4gTlVMTDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RET01BSU5fVFJBTlNQT1JUX09JRCAqLwogCiBuZXRzbm1wX3RyYW5zcG9ydCoKIG5ldHNubXBfdHJhbnNwb3J0X29wZW4oY29uc3QgY2hhciogYXBwbGljYXRpb24sIGNvbnN0IGNoYXIqIHN0ciwgaW50IGxvY2FsKQpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wa3NtLmMgYi9zbm1wbGliL3NubXBrc20uYwppbmRleCA0YjY0MDAzLi43ZDMwNjEyIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBrc20uYworKysgYi9zbm1wbGliL3NubXBrc20uYwpAQCAtNjYsNiArNjYsMTIgQEAKICNkZWZpbmUgVElDS0VUX0NMSUVOVCh4KQkoeCktPmVuY19wYXJ0Mi0+Y2xpZW50CiAjZW5kaWYJCQkJLyogTkVUU05NUF9VU0VfS0VSQkVST1NfSEVJTURBTCAqLwogCisjaWYgSEFWRV9FVF9DT01fRVJSX0gKKyNpbmNsdWRlIDxldC9jb21fZXJyLmg+CisjZWxpZiBIQVZFX0NPTV9FUlJfSAorI2luY2x1ZGUgPGNvbV9lcnIuaD4KKyNlbmRpZgorCiAjaW5jbHVkZSA8bmV0LXNubXAvb3V0cHV0X2FwaS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2NvbmZpZ19hcGkuaD4KICNpbmNsdWRlIDxuZXQtc25tcC91dGlsaXRpZXMuaD4KQEAgLTI1Myw2ICsyNTksMTAgQEAKICAgICByZWdpc3Rlcl9zZWNfbW9kKE5FVFNOTVBfU0VDX01PREVMX0tTTSwgImtzbSIsIGRlZik7CiB9CiAKK3ZvaWQgc2h1dGRvd25fa3NtKHZvaWQpCit7Cit9CisKIC8qCiAgKiBUaGVzZSByb3V0aW5lcyBpbXBsZW1lbnQgYSBzaW1wbGUgY2FjaGUgZm9yIGluZm9ybWF0aW9uIHdlIG5lZWQgdG8KICAqIHByb2Nlc3MgcmVzcG9uc2VzLiAgV2hlbiB3ZSBzZW5kIG91dCBhIHJlcXVlc3QsIGl0IGNvbnRhaW5zIGFuIEFQX1JFUTsKZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcHRzbS5jIGIvc25tcGxpYi9zbm1wdHNtLmMKaW5kZXggYTM4YzYzMi4uNDJkZTY4MiAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wdHNtLmMKKysrIGIvc25tcGxpYi9zbm1wdHNtLmMKQEAgLTksNiArOSw3IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oPgpAQCAtMjYsNiArMjcsOSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcERUTFNTQ1RQRG9tYWluLmg+CiAjZW5kaWYKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoc25tcHYzX3Byb2JlX2NvbnRleHRFbmdpbmVJRF9yZmM1MzQzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X2NyZWF0ZSkKKwogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCiBzdGF0aWMgaW50ICAgICAgdHNtX3Nlc3Npb25faW5pdChuZXRzbm1wX3Nlc3Npb24gKik7CkBAIC02Nyw2ICs3MSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1RTTV9VU0VfUFJFRklYKTsKIH0KIAorLyoqIHNodXRkb3duIHRoZSBUU00gc2VjdXJpdHkgbW9kdWxlICovCit2b2lkCitzaHV0ZG93bl90c20odm9pZCkKK3sKK30KKwogLyoKICAqIEluaXRpYWxpemUgc3BlY2lmaWMgc2Vzc2lvbiBpbmZvcm1hdGlvbiAocmlnaHQgbm93LCBqdXN0IHNldCB1cCB0aGluZ3MgdG8KICAqIG5vdCBkbyBhbiBlbmdpbmVJRCBwcm9iZSkKQEAgLTU0MCw3ICs1NTAsNyBAQAogICAgICAgIG1lc3NhZ2UuKi8KICAgICBpZiAocGFybXMtPnNlY0xldmVsID4gdG1TdGF0ZVJlZi0+dHJhbnNwb3J0U2VjdXJpdHlMZXZlbCkgewogICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9UU01fU05NUFRTTUlOQURFUVVBVEVTRUNVUklUWUxFVkVMUyk7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJ0c20iLCAiaW5hZGVxdWF0ZSBzZWN1cml0eSBsZXZlbCAlZFxuIiwgcGFybXMtPnNlY0xldmVsKSk7CisgICAgICAgIERFQlVHTVNHVEwoKCJ0c20iLCAiaW5hZGVxdWF0ZSBzZWN1cml0eSBsZXZlbDogJWRcbiIsIHBhcm1zLT5zZWNMZXZlbCkpOwogICAgICAgICAvKiBuZXQtc25tcCByZXR1cm5zIGVycm9yIGNvZGVzIG5vdCBPSURzLCB3aGljaCBhcmUgZGVhbHQgd2l0aCBsYXRlciAqLwogICAgICAgICByZXR1cm4gU05NUEVSUl9VTlNVUFBPUlRFRF9TRUNfTEVWRUw7CiAgICAgfQpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wdXNtLmMgYi9zbm1wbGliL3NubXB1c20uYwppbmRleCA4NzgwNTk2Li42YTljZWMzIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXB1c20uYworKysgYi9zbm1wbGliL3NubXB1c20uYwpAQCAtMjIsNiArMjIsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTcxLDYgKzcyLDExIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodXNtX2FsbCwgbGlibmV0c25tcCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1c21fc3VwcG9ydCwgdXNtX2FsbCkKKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodXNtX3N1cHBvcnQpCisKIG9pZCAgICAgICAgICAgICB1c21Ob0F1dGhQcm90b2NvbFsxMF0gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDEwLCAxLCAxLCAxIH07CiAjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9NRDUKIG9pZCAgICAgICAgICAgICB1c21ITUFDTUQ1QXV0aFByb3RvY29sWzEwXSA9CkBAIC04OSw2ICs5NSwxNiBAQAogc3RhdGljIHVfaW50ICAgIGR1bW15X2V0aW1lLCBkdW1teV9lYm9vdDsgICAgICAgLyogRm9yIElTRU5HSU5FS05PV04oKS4gKi8KIAogLyoKKyAqIFNldCB1cCBkZWZhdWx0IHNubXB2MyBwYXJhbWV0ZXIgdmFsdWUgc3RvcmFnZS4KKyAqLworI2lmZGVmIE5FVFNOTVBfU0VDTU9EX1VTTQorc3RhdGljIGNvbnN0IG9pZCAqZGVmYXVsdEF1dGhUeXBlID0gTlVMTDsKK3N0YXRpYyBzaXplX3QgICBkZWZhdWx0QXV0aFR5cGVMZW4gPSAwOworc3RhdGljIGNvbnN0IG9pZCAqZGVmYXVsdFByaXZUeXBlID0gTlVMTDsKK3N0YXRpYyBzaXplX3QgICBkZWZhdWx0UHJpdlR5cGVMZW4gPSAwOworI2VuZGlmIC8qIE5FVFNOTVBfU0VDTU9EX1VTTSAqLworCisvKgogICogR2xvYmFscy4KICAqLwogc3RhdGljIHVfaW50ICAgIHNhbHRfaW50ZWdlcjsKQEAgLTE1OCw2ICsxNzQsMjEgQEAKIH0KIAogCitpbnQKK2ZyZWVfZW5naW5ldGltZV9vbl9zaHV0ZG93bihpbnQgbWFqb3JpZCwgaW50IG1pbm9yaWQsIHZvaWQgKnNlcnZlcmFyZywKKwkJCSAgICB2b2lkICpjbGllbnRhcmcpCit7CisgICAgdV9jaGFyIGVuZ2luZUlEW1NOTVBfTUFYX0VOR19TSVpFXTsKKyAgICBzaXplX3QgZW5naW5lSURfbGVuID0gc2l6ZW9mKGVuZ2luZUlEKTsKKworICAgIERFQlVHTVNHVEwoKCJzbm1wdjMiLCAiZnJlZSBlbmdpbmV0aW1lIGNhbGxiYWNrIGNhbGxlZFxuIikpOworCisgICAgZW5naW5lSURfbGVuID0gc25tcHYzX2dldF9lbmdpbmVJRChlbmdpbmVJRCwgZW5naW5lSURfbGVuKTsKKyAgICBpZiAoZW5naW5lSURfbGVuID4gMCkKKwlmcmVlX2VuZ2luZXRpbWUoZW5naW5lSUQsIGVuZ2luZUlEX2xlbik7CisgICAgcmV0dXJuIDA7Cit9CisKIHN0cnVjdCB1c21TdGF0ZVJlZmVyZW5jZSAqCiB1c21fbWFsbG9jX3VzbVN0YXRlUmVmZXJlbmNlKHZvaWQpCiB7CkBAIC0yMTQzLDExICsyMTc0LDcgQEAKICAgICAgICAgaWYgKGJvb3RzX3VpbnQgPT0gRU5HSU5FQk9PVF9NQVgKICAgICAgICAgICAgIHx8IGJvb3RzX3VpbnQgIT0gbXlCb290cwogICAgICAgICAgICAgfHwgdGltZV9kaWZmZXJlbmNlID4gVVNNX1RJTUVfV0lORE9XKSB7Ci0gICAgICAgICAgICBpZiAoc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVVNNU1RBVFNOT1RJTlRJTUVXSU5ET1dTKSA9PQotICAgICAgICAgICAgICAgIDApIHsKLSAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwgIiVzXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gaW5jcmVtZW50IHN0YXRpc3RpYy4iKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9VU01TVEFUU05PVElOVElNRVdJTkRPV1MpOwogCiAgICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICJib290X3VpbnQgJXUgbXlCb290cyAldSB0aW1lX2RpZmYgJXUgPT4gbm90IGluIHRpbWUgd2luZG93XG4iLApAQCAtMjM2MCwxNiArMjM4NywxMCBAQAogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIFRoaXMgaW5kaWNhdGVzIGEgZGVjcnlwdGlvbkVycm9yLiAgCiAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmIChzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9VU01TVEFUU0RFQ1JZUFRJT05FUlJPUlMpID09Ci0gICAgICAgICAgICAgICAgMCkgewotICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ1c20iLCAiJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBpbmNyZW1lbnQgc3RhdGlzdGljLiIpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1VTTVNUQVRTREVDUllQVElPTkVSUk9SUyk7CiAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9VU01fREVDUllQVElPTkVSUk9SOwogICAgICAgICB9Ci0gICAgICAgIGlmIChzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9TTk1QSU5BU05QQVJTRUVSUlMpID09IDApIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ1c20iLCAiJXNcbiIsICJGYWlsZWQgdG8gaW5jcmVtZW50IHN0YXRpc3RpYy4iKSk7Ci0gICAgICAgIH0KKyAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfU05NUElOQVNOUEFSU0VFUlJTKTsKICAgICAgICAgcmV0dXJuIFNOTVBFUlJfVVNNX1BBUlNFRVJST1I7CiAgICAgfQogCkBAIC0yMzgwLDEwICsyNDAxLDcgQEAKICAgICAgKiBjYWxsaW5nIG1vZHVsZS4KICAgICAgKi8KICAgICBpZiAoKHNlY0xldmVsID09IFNOTVBfU0VDX0xFVkVMX0FVVEhQUklWKSAmJiAoc2FsdF9sZW5ndGggIT0gOCkpIHsKLSAgICAgICAgaWYgKHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1VTTVNUQVRTREVDUllQVElPTkVSUk9SUykgPT0gCi0gICAgICAgICAgICAwKSB7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwgIiVzXG4iLCAiRmFpbGVkIGluY3JlbWVudCBzdGF0aXN0aWMuIikpOwotICAgICAgICB9CisgICAgICAgIHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1VTTVNUQVRTREVDUllQVElPTkVSUk9SUyk7CiAgICAgICAgIHJldHVybiBTTk1QRVJSX1VTTV9ERUNSWVBUSU9ORVJST1I7CiAgICAgfQogCkBAIC0yNDMxLDExICsyNDQ5LDcgQEAKICAgICAgICAgKCFzZXNzICYmIChtc2dfZmxhZ3MgJiBTTk1QX01TR19GTEFHX1JQUlRfQklUKSkpIHsKICAgICAgICAgaWYgKElTRU5HSU5FS05PV04oc2VjRW5naW5lSUQsICpzZWNFbmdpbmVJRExlbikgPT0gRkFMU0UpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ1c20iLCAiVW5rbm93biBFbmdpbmUgSUQuXG4iKSk7Ci0gICAgICAgICAgICBpZiAoc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVVNNU1RBVFNVTktOT1dORU5HSU5FSURTKSA9PQotICAgICAgICAgICAgICAgIDApIHsKLSAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwgIiVzXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gaW5jcmVtZW50IHN0YXRpc3RpYy4iKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9VU01TVEFUU1VOS05PV05FTkdJTkVJRFMpOwogICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfVVNNX1VOS05PV05FTkdJTkVJRDsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CkBAIC0yNDU5LDkgKzI0NzMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIXNlc3MpKSA/IDAgOiAxKSkpCiAgICAgICAgID09IE5VTEwpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsICJVbmtub3duIFVzZXIoJXMpXG4iLCBzZWNOYW1lKSk7Ci0gICAgICAgIGlmIChzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9VU01TVEFUU1VOS05PV05VU0VSTkFNRVMpID09IDApIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ1c20iLCAiJXNcbiIsICJGYWlsZWQgdG8gaW5jcmVtZW50IHN0YXRpc3RpYy4iKSk7Ci0gICAgICAgIH0KKyAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVVNNU1RBVFNVTktOT1dOVVNFUk5BTUVTKTsKICAgICAgICAgcmV0dXJuIFNOTVBFUlJfVVNNX1VOS05PV05TRUNVUklUWU5BTUU7CiAgICAgfQogCkBAIC0yNDc5LDEwICsyNDkxLDcgQEAKICAgICBpZiAoMSA9PSByYykgewogICAgICAgICBERUJVR01TR1RMKCgidXNtIiwgIlVuc3VwcG9ydGVkIFNlY3VyaXR5IExldmVsICglZCkuXG4iLAogICAgICAgICAgICAgICAgICAgICBzZWNMZXZlbCkpOwotICAgICAgICBpZiAoc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljCi0gICAgICAgICAgICAoU1RBVF9VU01TVEFUU1VOU1VQUE9SVEVEU0VDTEVWRUxTKSA9PSAwKSB7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwgIiVzXG4iLCAiRmFpbGVkIHRvIGluY3JlbWVudCBzdGF0aXN0aWMuIikpOwotICAgICAgICB9CisgICAgICAgIHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1VTTVNUQVRTVU5TVVBQT1JURURTRUNMRVZFTFMpOwogICAgICAgICByZXR1cm4gU05NUEVSUl9VU01fVU5TVVBQT1JURURTRUNVUklUWUxFVkVMOwogICAgIH0gZWxzZSBpZiAocmMgIT0gMCkgewogICAgICAgICBERUJVR01TR1RMKCgidXNtIiwgIlVua25vd24gaXNzdWUuXG4iKSk7CkBAIC0yNTAwLDEwICsyNTA5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlLCBzaWduYXR1cmVfbGVuZ3RoKQogICAgICAgICAgICAgIT0gU05NUF9FUlJfTk9FUlJPUikgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsICJWZXJpZmljYXRpb24gZmFpbGVkLlxuIikpOwotICAgICAgICAgICAgaWYgKHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1VTTVNUQVRTV1JPTkdESUdFU1RTKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsICIlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGluY3JlbWVudCBzdGF0aXN0aWMuIikpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVVNNU1RBVFNXUk9OR0RJR0VTVFMpOwogCSAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIkF1dGhlbnRpY2F0aW9uIGZhaWxlZCBmb3IgJXNcbiIsCiAJCQkJdXNlci0+bmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9VU01fQVVUSEVOVElDQVRJT05GQUlMVVJFOwpAQCAtMjU5NCw5ICsyNjAwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuY3J5cHRlZCBzUERVIikpID09IE5VTEwpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ1c20iLCAiJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHdoaWxlIHBhcnNpbmcgZW5jcnlwdGVkIHNQRFUuIikpOwotICAgICAgICAgICAgaWYgKHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1NOTVBJTkFTTlBBUlNFRVJSUykgPT0gMCkgewotICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ1c20iLCAiJXNcbiIsICJGYWlsZWQgaW5jcmVtZW50IHN0YXRpc3RpYy4iKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9TTk1QSU5BU05QQVJTRUVSUlMpOwogICAgICAgICAgICAgdXNtX2ZyZWVfdXNtU3RhdGVSZWZlcmVuY2UoKnNlY1N0YXRlUmVmKTsKICAgICAgICAgICAgICpzZWNTdGF0ZVJlZiA9IE5VTEw7CiAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9VU01fUEFSU0VFUlJPUjsKQEAgLTI2MTcsMTAgKzI2MjEsNyBAQAogICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ1c20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDaXBoZXJ0ZXh0IGlzICVsdSBieXRlcywgbm90IGFuIGludGVnZXIgbXVsdGlwbGUgb2YgOCAocmVtICVsdSlcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpcmVtYWluaW5nLCAodW5zaWduZWQgbG9uZylyZW1haW5pbmcgJSA4KSk7Ci0gICAgICAgICAgICAgICAgaWYgKHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1VTTVNUQVRTREVDUllQVElPTkVSUk9SUykgPT0KLSAgICAgICAgICAgICAgICAgICAgMCkgewotICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwgIiVzXG4iLCAiRmFpbGVkIGluY3JlbWVudCBzdGF0aXN0aWMuIikpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9VU01TVEFUU0RFQ1JZUFRJT05FUlJPUlMpOwogICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzbVN0YXRlUmVmZXJlbmNlKCpzZWNTdGF0ZVJlZik7CiAgICAgICAgICAgICAgICAgKnNlY1N0YXRlUmVmID0gTlVMTDsKICAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9VU01fREVDUllQVElPTkVSUk9SOwpAQCAtMjYzMCwxMCArMjYzMSw3IEBACiAKICAgICAgICAgICAgIGlmICggIXVzZXItPnByaXZLZXkgKSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsICJObyBwcml2YWN5IHBhc3MgcGhyYXNlIGZvciAlc1xuIiwgdXNlci0+c2VjTmFtZSkpOwotICAgICAgICAgICAgICAgIGlmIChzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9VU01TVEFUU0RFQ1JZUFRJT05FUlJPUlMpID09Ci0gICAgICAgICAgICAgICAgICAgIDApIHsKLSAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsICIlc1xuIiwgIkZhaWxlZCBpbmNyZW1lbnQgc3RhdGlzdGljLiIpKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVVNNU1RBVFNERUNSWVBUSU9ORVJST1JTKTsKICAgICAgICAgICAgICAgICB1c21fZnJlZV91c21TdGF0ZVJlZmVyZW5jZSgqc2VjU3RhdGVSZWYpOwogICAgICAgICAgICAgICAgICpzZWNTdGF0ZVJlZiA9IE5VTEw7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfVVNNX0RFQ1JZUFRJT05FUlJPUjsKQEAgLTI2NjUsMTAgKzI2NjMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9wdHIsIHJlbWFpbmluZywgKnNjb3BlZFBkdSwgc2NvcGVkUGR1TGVuKQogICAgICAgICAgICAgIT0gU05NUF9FUlJfTk9FUlJPUikgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsICIlc1xuIiwgIkZhaWxlZCBkZWNyeXB0aW9uLiIpKTsKLSAgICAgICAgICAgIGlmIChzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMKLSAgICAgICAgICAgICAgICAoU1RBVF9VU01TVEFUU0RFQ1JZUFRJT05FUlJPUlMpID09IDApIHsKLSAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwgIiVzXG4iLCAiRmFpbGVkIGluY3JlbWVudCBzdGF0aXN0aWMuIikpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVVNNU1RBVFNERUNSWVBUSU9ORVJST1JTKTsKICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX1VTTV9ERUNSWVBUSU9ORVJST1I7CiAgICAgICAgIH0KICNpZmRlZiBORVRTTk1QX0VOQUJMRV9URVNUSU5HX0NPREUKQEAgLTI4NTcsMTAgKzI4NTIsMzUyIEBACiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0KIAorCisvKgorICogdXNtX2NyZWF0ZV91c2VyX2Zyb21fc2Vzc2lvbihuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb24pOgorICogCisgKiBjcmVhdGVzIGEgdXNlciBpbiB0aGUgdXNtIHRhYmxlIGZyb20gdGhlIGluZm9ybWF0aW9uIGluIGEgc2Vzc2lvbi4KKyAqIElmIHRoZSB1c2VyIGFscmVhZHkgZXhpc3RzLCBpdCBpcyB1cGRhdGVkIHdpdGggdGhlIGN1cnJlbnQKKyAqIGluZm9ybWF0aW9uIGZyb20gdGhlIHNlc3Npb24KKyAqIAorICogUGFyYW1ldGVyczoKKyAqIHNlc3Npb24gLS0gSU46IHBvaW50ZXIgdG8gdGhlIHNlc3Npb24gdG8gdXNlIHdoZW4gY3JlYXRpbmcgdGhlIHVzZXIuCisgKiAKKyAqIFJldHVybnM6CisgKiBTTk1QRVJSX1NVQ0NFU1MKKyAqIFNOTVBFUlJfR0VORVJSIAorICovCitpbnQKK3VzbV9jcmVhdGVfdXNlcl9mcm9tX3Nlc3Npb24obmV0c25tcF9zZXNzaW9uICogc2Vzc2lvbikKK3sKKyAgICBzdHJ1Y3QgdXNtVXNlciAqdXNlcjsKKyAgICBpbnQgICAgICAgICAgICAgdXNlcl9qdXN0X2NyZWF0ZWQgPSAwOworICAgIGNoYXIgKmNwOworCisgICAgLyoKKyAgICAgKiAtIGRvbid0IGNyZWF0ZS1hbm90aGVyL2NvcHktaW50byB1c2VyIGZvciB0aGlzIHNlc3Npb24gYnkgZGVmYXVsdAorICAgICAqIC0gYmFpbCBub3cgKG5vIGVycm9yKSBpZiB3ZSBkb24ndCBoYXZlIGFuIGVuZ2luZUlECisgICAgICovCisgICAgaWYgKFNOTVBfRkxBR1NfVVNFUl9DUkVBVEVEID09IChzZXNzaW9uLT5mbGFncyAmIFNOTVBfRkxBR1NfVVNFUl9DUkVBVEVEKSB8fAorICAgICAgICBzZXNzaW9uLT5zZWN1cml0eU1vZGVsICE9IFNOTVBfU0VDX01PREVMX1VTTSB8fAorICAgICAgICBzZXNzaW9uLT52ZXJzaW9uICE9IFNOTVBfVkVSU0lPTl8zIHx8CisgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5TmFtZUxlbiA9PSAwIHx8CisgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5RW5naW5lSURMZW4gPT0gMCkKKyAgICAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKKworICAgIERFQlVHTVNHVEwoKCJ1c20iLCAibm8gZmxhZyBkZWZpbmVkLi4uICBjb250aW51aW5nXG4iKSk7CisgICAgc2Vzc2lvbi0+ZmxhZ3MgfD0gU05NUF9GTEFHU19VU0VSX0NSRUFURUQ7CisKKyAgICAvKgorICAgICAqIG5vdyB0aGF0IHdlIGhhdmUgdGhlIGVuZ2luZUlELCBjcmVhdGUgYW4gZW50cnkgaW4gdGhlIFVTTSBsaXN0CisgICAgICogZm9yIHRoaXMgdXNlciB1c2luZyB0aGUgaW5mb3JtYXRpb24gaW4gdGhlIHNlc3Npb24gCisgICAgICovCisgICAgdXNlciA9IHVzbV9nZXRfdXNlcl9mcm9tX2xpc3Qoc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c21fZ2V0X3VzZXJMaXN0KCksIDApOworICAgIERFQlVHTVNHVEwoKCJ1c20iLCAidXNlciBleGlzdHM/IHg9JXBcbiIsIHVzZXIpKTsKKyAgICBpZiAodXNlciA9PSBOVUxMKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJ1c20iLCAiQnVpbGRpbmcgdXNlciAlcy4uLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlOYW1lKSk7CisgICAgICAgIC8qCisgICAgICAgICAqIHVzZXIgZG9lc24ndCBleGlzdCBzbyB3ZSBjcmVhdGUgYW5kIGFkZCBpdCAKKyAgICAgICAgICovCisgICAgICAgIHVzZXIgPSAoc3RydWN0IHVzbVVzZXIgKikgY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgdXNtVXNlcikpOworICAgICAgICBpZiAodXNlciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworCisgICAgICAgIC8qCisgICAgICAgICAqIGNvcHkgaW4gdGhlIHNlY3VyaXR5TmFtZSAKKyAgICAgICAgICovCisgICAgICAgIGlmIChzZXNzaW9uLT5zZWN1cml0eU5hbWUpIHsKKyAgICAgICAgICAgIHVzZXItPm5hbWUgPSBzdHJkdXAoc2Vzc2lvbi0+c2VjdXJpdHlOYW1lKTsKKyAgICAgICAgICAgIHVzZXItPnNlY05hbWUgPSBzdHJkdXAoc2Vzc2lvbi0+c2VjdXJpdHlOYW1lKTsKKyAgICAgICAgICAgIGlmICh1c2VyLT5uYW1lID09IE5VTEwgfHwgdXNlci0+c2VjTmFtZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcih1c2VyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBjb3B5IGluIHRoZSBlbmdpbmVJRCAKKyAgICAgICAgICovCisgICAgICAgIHVzZXItPmVuZ2luZUlEID0gbmV0c25tcF9tZW1kdXAoc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuKTsKKyAgICAgICAgaWYgKHNlc3Npb24tPnNlY3VyaXR5RW5naW5lSUQgJiYgIXVzZXItPmVuZ2luZUlEKSB7CisgICAgICAgICAgICB1c21fZnJlZV91c2VyKHVzZXIpOworICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgICAgICB9CisgICAgICAgIHVzZXItPmVuZ2luZUlETGVuID0gc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbjsKKworICAgICAgICB1c2VyX2p1c3RfY3JlYXRlZCA9IDE7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBjb3B5IHRoZSBhdXRoIHByb3RvY29sIAorICAgICAqLworICAgIGlmICh1c2VyLT5hdXRoUHJvdG9jb2wgPT0gTlVMTCAmJiBzZXNzaW9uLT5zZWN1cml0eUF1dGhQcm90byAhPSBOVUxMKSB7CisgICAgICAgIFNOTVBfRlJFRSh1c2VyLT5hdXRoUHJvdG9jb2wpOworICAgICAgICB1c2VyLT5hdXRoUHJvdG9jb2wgPQorICAgICAgICAgICAgc25tcF9kdXBsaWNhdGVfb2JqaWQoc2Vzc2lvbi0+c2VjdXJpdHlBdXRoUHJvdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUF1dGhQcm90b0xlbik7CisgICAgICAgIGlmICh1c2VyLT5hdXRoUHJvdG9jb2wgPT0gTlVMTCkgeworICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcih1c2VyKTsKKyAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKyAgICAgICAgfQorICAgICAgICB1c2VyLT5hdXRoUHJvdG9jb2xMZW4gPSBzZXNzaW9uLT5zZWN1cml0eUF1dGhQcm90b0xlbjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGNvcHkgdGhlIHByaXYgcHJvdG9jb2wgCisgICAgICovCisgICAgaWYgKHVzZXItPnByaXZQcm90b2NvbCA9PSBOVUxMICYmIHNlc3Npb24tPnNlY3VyaXR5UHJpdlByb3RvICE9IE5VTEwpIHsKKyAgICAgICAgU05NUF9GUkVFKHVzZXItPnByaXZQcm90b2NvbCk7CisgICAgICAgIHVzZXItPnByaXZQcm90b2NvbCA9CisgICAgICAgICAgICBzbm1wX2R1cGxpY2F0ZV9vYmppZChzZXNzaW9uLT5zZWN1cml0eVByaXZQcm90bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5UHJpdlByb3RvTGVuKTsKKyAgICAgICAgaWYgKHVzZXItPnByaXZQcm90b2NvbCA9PSBOVUxMKSB7CisgICAgICAgICAgICB1c21fZnJlZV91c2VyKHVzZXIpOworICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgICAgICB9CisgICAgICAgIHVzZXItPnByaXZQcm90b2NvbExlbiA9IHNlc3Npb24tPnNlY3VyaXR5UHJpdlByb3RvTGVuOworICAgIH0KKworICAgIC8qCisgICAgICogY29weSBpbiB0aGUgYXV0aGVudGljYXRpb24gS2V5LiAgSWYgbm90IGxvY2FsaXplZCwgbG9jYWxpemUgaXQgCisgICAgICovCisgICAgaWYgKHVzZXItPmF1dGhLZXkgPT0gTlVMTCkgeworICAgICAgICBpZiAoc2Vzc2lvbi0+c2VjdXJpdHlBdXRoTG9jYWxLZXkgIT0gTlVMTAorICAgICAgICAgICAgJiYgc2Vzc2lvbi0+c2VjdXJpdHlBdXRoTG9jYWxLZXlMZW4gIT0gMCkgeworICAgICAgICAgICAgLyogYWxyZWFkeSBsb2NhbGl6ZWQga2V5IHBhc3NlZCBpbi4gIHVzZSBpdCAqLworICAgICAgICAgICAgU05NUF9GUkVFKHVzZXItPmF1dGhLZXkpOworICAgICAgICAgICAgdXNlci0+YXV0aEtleSA9IG5ldHNubXBfbWVtZHVwKHNlc3Npb24tPnNlY3VyaXR5QXV0aExvY2FsS2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5QXV0aExvY2FsS2V5TGVuKTsKKyAgICAgICAgICAgIGlmICghdXNlci0+YXV0aEtleSkgeworICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdXNlci0+YXV0aEtleUxlbiA9IHNlc3Npb24tPnNlY3VyaXR5QXV0aExvY2FsS2V5TGVuOworICAgICAgICB9IGVsc2UgaWYgKHNlc3Npb24tPnNlY3VyaXR5QXV0aEtleSAhPSBOVUxMCisgICAgICAgICAgICAgICAgICAgJiYgc2Vzc2lvbi0+c2VjdXJpdHlBdXRoS2V5TGVuICE9IDApIHsKKyAgICAgICAgICAgIFNOTVBfRlJFRSh1c2VyLT5hdXRoS2V5KTsKKyAgICAgICAgICAgIHVzZXItPmF1dGhLZXkgPSAodV9jaGFyICopIGNhbGxvYygxLCBVU01fTEVOR1RIX0tVX0hBU0hCTE9DSyk7CisgICAgICAgICAgICBpZiAodXNlci0+YXV0aEtleSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcih1c2VyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB1c2VyLT5hdXRoS2V5TGVuID0gVVNNX0xFTkdUSF9LVV9IQVNIQkxPQ0s7CisgICAgICAgICAgICBpZiAoZ2VuZXJhdGVfa3VsKHVzZXItPmF1dGhQcm90b2NvbCwgdXNlci0+YXV0aFByb3RvY29sTGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUF1dGhLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5QXV0aEtleUxlbiwgdXNlci0+YXV0aEtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXItPmF1dGhLZXlMZW4pICE9IFNOTVBFUlJfU1VDQ0VTUykgeworICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKChjcCA9IG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9BVVRITE9DQUxJWkVES0VZKSkpIHsKKyAgICAgICAgICAgIHNpemVfdCBidWZsZW4gPSBVU01fQVVUSF9LVV9MRU47CisgICAgICAgICAgICBTTk1QX0ZSRUUodXNlci0+YXV0aEtleSk7CisgICAgICAgICAgICB1c2VyLT5hdXRoS2V5ID0gKHVfY2hhciAqKW1hbGxvYyhidWZsZW4pOyAvKiBtYXggbGVuZ3RoIG5lZWRlZCAqLworICAgICAgICAgICAgdXNlci0+YXV0aEtleUxlbiA9IDA7CisgICAgICAgICAgICAvKiBpdCB3aWxsIGJlIGEgaGV4IHN0cmluZyAqLworICAgICAgICAgICAgaWYgKCFzbm1wX2hleF90b19iaW5hcnkoJnVzZXItPmF1dGhLZXksICZidWZsZW4sICZ1c2VyLT5hdXRoS2V5TGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgY3ApKSB7CisgICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcih1c2VyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKgorICAgICAqIGNvcHkgaW4gdGhlIHByaXZhY3kgS2V5LiAgSWYgbm90IGxvY2FsaXplZCwgbG9jYWxpemUgaXQgCisgICAgICovCisgICAgaWYgKHVzZXItPnByaXZLZXkgPT0gTlVMTCkgeworICAgICAgICBpZiAoc2Vzc2lvbi0+c2VjdXJpdHlQcml2TG9jYWxLZXkgIT0gTlVMTAorICAgICAgICAgICAgJiYgc2Vzc2lvbi0+c2VjdXJpdHlQcml2TG9jYWxLZXlMZW4gIT0gMCkgeworICAgICAgICAgICAgLyogYWxyZWFkeSBsb2NhbGl6ZWQga2V5IHBhc3NlZCBpbi4gIHVzZSBpdCAqLworICAgICAgICAgICAgU05NUF9GUkVFKHVzZXItPnByaXZLZXkpOworICAgICAgICAgICAgdXNlci0+cHJpdktleSA9IG5ldHNubXBfbWVtZHVwKHNlc3Npb24tPnNlY3VyaXR5UHJpdkxvY2FsS2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5UHJpdkxvY2FsS2V5TGVuKTsKKyAgICAgICAgICAgIGlmICghdXNlci0+cHJpdktleSkgeworICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdXNlci0+cHJpdktleUxlbiA9IHNlc3Npb24tPnNlY3VyaXR5UHJpdkxvY2FsS2V5TGVuOworICAgICAgICB9IGVsc2UgaWYgKHNlc3Npb24tPnNlY3VyaXR5UHJpdktleSAhPSBOVUxMCisgICAgICAgICAgICAgICAgICAgJiYgc2Vzc2lvbi0+c2VjdXJpdHlQcml2S2V5TGVuICE9IDApIHsKKyAgICAgICAgICAgIFNOTVBfRlJFRSh1c2VyLT5wcml2S2V5KTsKKyAgICAgICAgICAgIHVzZXItPnByaXZLZXkgPSAodV9jaGFyICopIGNhbGxvYygxLCBVU01fTEVOR1RIX0tVX0hBU0hCTE9DSyk7CisgICAgICAgICAgICBpZiAodXNlci0+cHJpdktleSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcih1c2VyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB1c2VyLT5wcml2S2V5TGVuID0gVVNNX0xFTkdUSF9LVV9IQVNIQkxPQ0s7CisgICAgICAgICAgICBpZiAoZ2VuZXJhdGVfa3VsKHVzZXItPmF1dGhQcm90b2NvbCwgdXNlci0+YXV0aFByb3RvY29sTGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eVByaXZLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5UHJpdktleUxlbiwgdXNlci0+cHJpdktleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXItPnByaXZLZXlMZW4pICE9IFNOTVBFUlJfU1VDQ0VTUykgeworICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKChjcCA9IG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9QUklWTE9DQUxJWkVES0VZKSkpIHsKKyAgICAgICAgICAgIHNpemVfdCBidWZsZW4gPSBVU01fUFJJVl9LVV9MRU47CisgICAgICAgICAgICBTTk1QX0ZSRUUodXNlci0+cHJpdktleSk7CisgICAgICAgICAgICB1c2VyLT5wcml2S2V5ID0gKHVfY2hhciAqKW1hbGxvYyhidWZsZW4pOyAvKiBtYXggbGVuZ3RoIG5lZWRlZCAqLworICAgICAgICAgICAgdXNlci0+cHJpdktleUxlbiA9IDA7CisgICAgICAgICAgICAvKiBpdCB3aWxsIGJlIGEgaGV4IHN0cmluZyAqLworICAgICAgICAgICAgaWYgKCFzbm1wX2hleF90b19iaW5hcnkoJnVzZXItPnByaXZLZXksICZidWZsZW4sICZ1c2VyLT5wcml2S2V5TGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgY3ApKSB7CisgICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcih1c2VyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAodXNlcl9qdXN0X2NyZWF0ZWQpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogYWRkIHRoZSB1c2VyIGludG8gdGhlIGRhdGFiYXNlIAorICAgICAgICAgKi8KKyAgICAgICAgdXNlci0+dXNlclN0YXR1cyA9IFJTX0FDVElWRTsKKyAgICAgICAgdXNlci0+dXNlclN0b3JhZ2VUeXBlID0gU1RfUkVBRE9OTFk7CisgICAgICAgIHVzbV9hZGRfdXNlcih1c2VyKTsKKyAgICB9CisKKyAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOworCisKK30KKworLyogQSB3cmFwcGVyIGFyb3VuZCB0aGUgaG9vayAqLworaW50Cit1c21fY3JlYXRlX3VzZXJfZnJvbV9zZXNzaW9uX2hvb2sodm9pZCAqc2xwLCBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb24pCit7CisgICAgREVCVUdNU0dUTCgoInVzbSIsICJwb3RlbnRpYWxseSBib290c3RyYXBwaW5nIHRoZSBVU00gdGFibGUgZnJvbSBzZXNzaW9uIGRhdGFcbiIpKTsKKyAgICByZXR1cm4gdXNtX2NyZWF0ZV91c2VyX2Zyb21fc2Vzc2lvbihzZXNzaW9uKTsKK30KKworc3RhdGljIGludAordXNtX2J1aWxkX3Byb2JlX3BkdShuZXRzbm1wX3BkdSAqKnBkdSkKK3sKKyAgICBzdHJ1Y3QgdXNtVXNlciAqdXNlcjsKKworICAgIC8qCisgICAgICogY3JlYXRlIHRoZSBwZHUgCisgICAgICovCisgICAgaWYgKCFwZHUpCisgICAgICAgIHJldHVybiAtMTsKKyAgICAqcGR1ID0gc25tcF9wZHVfY3JlYXRlKFNOTVBfTVNHX0dFVCk7CisgICAgaWYgKCEoKnBkdSkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICAoKnBkdSktPnZlcnNpb24gPSBTTk1QX1ZFUlNJT05fMzsKKyAgICAoKnBkdSktPnNlY3VyaXR5TmFtZSA9IHN0cmR1cCgiIik7CisgICAgKCpwZHUpLT5zZWN1cml0eU5hbWVMZW4gPSBzdHJsZW4oKCpwZHUpLT5zZWN1cml0eU5hbWUpOworICAgICgqcGR1KS0+c2VjdXJpdHlMZXZlbCA9IFNOTVBfU0VDX0xFVkVMX05PQVVUSDsKKyAgICAoKnBkdSktPnNlY3VyaXR5TW9kZWwgPSBTTk1QX1NFQ19NT0RFTF9VU007CisKKyAgICAvKgorICAgICAqIGNyZWF0ZSB0aGUgZW1wdHkgdXNlciAKKyAgICAgKi8KKyAgICB1c2VyID0gdXNtX2dldF91c2VyKE5VTEwsIDAsICgqcGR1KS0+c2VjdXJpdHlOYW1lKTsKKyAgICBpZiAodXNlciA9PSBOVUxMKSB7CisgICAgICAgIHVzZXIgPSAoc3RydWN0IHVzbVVzZXIgKikgY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgdXNtVXNlcikpOworICAgICAgICBpZiAodXNlciA9PSBOVUxMKSB7CisgICAgICAgICAgICBzbm1wX2ZyZWVfcGR1KCpwZHUpOworICAgICAgICAgICAgKnBkdSA9IChuZXRzbm1wX3BkdSAqKSBOVUxMOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHVzZXItPm5hbWUgPSBzdHJkdXAoKCpwZHUpLT5zZWN1cml0eU5hbWUpOworICAgICAgICB1c2VyLT5zZWNOYW1lID0gc3RyZHVwKCgqcGR1KS0+c2VjdXJpdHlOYW1lKTsKKyAgICAgICAgdXNlci0+YXV0aFByb3RvY29sTGVuID0gc2l6ZW9mKHVzbU5vQXV0aFByb3RvY29sKSAvIHNpemVvZihvaWQpOworICAgICAgICB1c2VyLT5hdXRoUHJvdG9jb2wgPQorICAgICAgICAgICAgc25tcF9kdXBsaWNhdGVfb2JqaWQodXNtTm9BdXRoUHJvdG9jb2wsIHVzZXItPmF1dGhQcm90b2NvbExlbik7CisgICAgICAgIHVzZXItPnByaXZQcm90b2NvbExlbiA9IHNpemVvZih1c21Ob1ByaXZQcm90b2NvbCkgLyBzaXplb2Yob2lkKTsKKyAgICAgICAgdXNlci0+cHJpdlByb3RvY29sID0KKyAgICAgICAgICAgIHNubXBfZHVwbGljYXRlX29iamlkKHVzbU5vUHJpdlByb3RvY29sLCB1c2VyLT5wcml2UHJvdG9jb2xMZW4pOworICAgICAgICB1c21fYWRkX3VzZXIodXNlcik7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitpbnQgdXNtX2Rpc2NvdmVyX2VuZ2luZWlkKHZvaWQgKnNscHYsIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbikgeworICAgIG5ldHNubXBfcGR1ICAgICpwZHUgPSBOVUxMLCAqcmVzcG9uc2UgPSBOVUxMOworICAgIGludCBzdGF0dXMsIGk7CisgICAgc3RydWN0IHNlc3Npb25fbGlzdCAqc2xwID0gKHN0cnVjdCBzZXNzaW9uX2xpc3QgKikgc2xwdjsKKworICAgIGlmICh1c21fYnVpbGRfcHJvYmVfcGR1KCZwZHUpICE9IDApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYXBpIiwgInVuYWJsZSB0byBjcmVhdGUgcHJvYmUgUERVXG4iKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisgICAgfQorICAgIERFQlVHTVNHVEwoKCJzbm1wX2FwaSIsICJwcm9iaW5nIGZvciBlbmdpbmVJRC4uLlxuIikpOworICAgIHNlc3Npb24tPmZsYWdzIHw9IFNOTVBfRkxBR1NfRE9OVF9QUk9CRTsgLyogcHJldmVudCByZWN1cnNpb24gKi8KKyAgICBzdGF0dXMgPSBzbm1wX3Nlc3Nfc3luY2hfcmVzcG9uc2Uoc2xwLCBwZHUsICZyZXNwb25zZSk7CisKKyAgICBpZiAoKHJlc3BvbnNlID09IE5VTEwpICYmIChzdGF0dXMgPT0gU1RBVF9TVUNDRVNTKSkgeworICAgICAgICBzdGF0dXMgPSBTVEFUX0VSUk9SOworICAgIH0KKworICAgIHN3aXRjaCAoc3RhdHVzKSB7CisgICAgY2FzZSBTVEFUX1NVQ0NFU1M6CisgICAgICAgIHNlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfSU5WQUxJRF9NU0c7IC8qIFhYPz8gKi8KKyAgICAgICAgREVCVUdNU0dUTCgoInNubXBfc2Vzc19vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgImVycm9yOiBleHBlY3RlZCBSZXBvcnQgYXMgcmVzcG9uc2UgdG8gcHJvYmU6ICVzICglbGQpXG4iLAorICAgICAgICAgICAgICAgICAgICBzbm1wX2VycnN0cmluZyhyZXNwb25zZS0+ZXJyc3RhdCksCisgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLT5lcnJzdGF0KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU1RBVF9FUlJPUjogICAvKiB0aGlzIGlzIHdoYXQgd2UgZXhwZWN0ZWQgLT4gUmVwb3J0ID09IFNUQVRfRVJST1IgKi8KKyAgICAgICAgc2Vzc2lvbi0+c19zbm1wX2Vycm5vID0gU05NUEVSUl9VTktOT1dOX0VOR19JRDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTVEFUX1RJTUVPVVQ6CisgICAgICAgIHNlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfVElNRU9VVDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgREVCVUdNU0dUTCgoInNubXBfc2Vzc19vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBjb25uZWN0IHdpdGggcmVtb3RlIGVuZ2luZTogJXMgKCVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgc25tcF9hcGlfZXJyc3RyaW5nKHNlc3Npb24tPnNfc25tcF9lcnJubyksCisgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNfc25tcF9lcnJubykpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoc2xwLT5zZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuID09IDApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYXBpIiwKKyAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBkZXRlcm1pbmUgcmVtb3RlIGVuZ2luZSBJRFxuIikpOworICAgICAgICAvKiBjbGVhciB0aGUgZmxhZyBzbyB0aGF0IHByb2JlIG9jY3VycyBvbiBuZXh0IGluZm9ybSAqLworICAgICAgICBzZXNzaW9uLT5mbGFncyAmPSB+U05NUF9GTEFHU19ET05UX1BST0JFOworICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOworICAgIH0KKworICAgIHNlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfU1VDQ0VTUzsKKyAgICBpZiAoc25tcF9nZXRfZG9fZGVidWdnaW5nKCkpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInNubXBfc2Vzc19vcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgIiAgcHJvYmUgZm91bmQgZW5naW5lSUQ6ICAiKSk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzbHAtPnNlc3Npb24tPnNlY3VyaXR5RW5naW5lSURMZW47IGkrKykKKyAgICAgICAgICAgIERFQlVHTVNHKCgic25tcF9zZXNzX29wZW4iLCAiJTAyeCIsCisgICAgICAgICAgICAgICAgICAgICAgc2xwLT5zZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlEW2ldKSk7CisgICAgICAgIERFQlVHTVNHKCgic25tcF9zZXNzX29wZW4iLCAiXG4iKSk7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBpZiBib290L3RpbWUgc3VwcGxpZWQgc2V0IGl0IGZvciB0aGlzIGVuZ2luZUlEIAorICAgICAqLworICAgIGlmIChzZXNzaW9uLT5lbmdpbmVCb290cyB8fCBzZXNzaW9uLT5lbmdpbmVUaW1lKSB7CisgICAgICAgIHNldF9lbmdpbmV0aW1lKHNlc3Npb24tPnNlY3VyaXR5RW5naW5lSUQsCisgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5RW5naW5lSURMZW4sCisgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPmVuZ2luZUJvb3RzLCBzZXNzaW9uLT5lbmdpbmVUaW1lLAorICAgICAgICAgICAgICAgICAgICAgICBUUlVFKTsKKyAgICB9CisgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKK30KKwogdm9pZAogaW5pdF91c20odm9pZCkKIHsKICAgICBzdHJ1Y3Qgc25tcF9zZWNtb2RfZGVmICpkZWY7CisgICAgY2hhciAqdHlwZTsKIAogICAgIERFQlVHTVNHVEwoKCJpbml0X3VzbSIsICJ1bml0X3VzbTogJSIgTkVUU05NUF9QUklvICJ1ICUiIE5FVFNOTVBfUFJJbyAidVxuIiwKICAgICAgICAgICAgICAgICB1c21Ob1ByaXZQcm90b2NvbFswXSwgdXNtTm9Qcml2UHJvdG9jb2xbMV0pKTsKQEAgLTI4ODIsNiArMzIxOSw4IEBACiAgICAgZGVmLT5wZHVfZnJlZV9zdGF0ZV9yZWYgPSB1c21fZnJlZV91c21TdGF0ZVJlZmVyZW5jZTsKICAgICBkZWYtPnNlc3Npb25fc2V0dXAgPSB1c21fc2Vzc2lvbl9pbml0OwogICAgIGRlZi0+aGFuZGxlX3JlcG9ydCA9IHVzbV9oYW5kbGVfcmVwb3J0OworICAgIGRlZi0+cHJvYmVfZW5naW5laWQgPSB1c21fZGlzY292ZXJfZW5naW5laWQ7CisgICAgZGVmLT5wb3N0X3Byb2JlX2VuZ2luZWlkID0gdXNtX2NyZWF0ZV91c2VyX2Zyb21fc2Vzc2lvbl9ob29rOwogICAgIHJlZ2lzdGVyX3NlY19tb2QoVVNNX1NFQ19NT0RFTF9OVU1CRVIsICJ1c20iLCBkZWYpOwogCiAgICAgc25tcF9yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0xJQlJBUlksCkBAIC0yODk2LDYgKzMyMzUsMzkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfQ0FMTEJBQ0tfU0hVVERPV04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlX2VuZ2luZUlELCBOVUxMKTsKIAorICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzbm1wIiwgImRlZkF1dGhUeXBlIiwgc25tcHYzX2F1dGh0eXBlX2NvbmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgIk1ENXxTSEEiKTsKKyAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcCIsICJkZWZQcml2VHlwZSIsIHNubXB2M19wcml2dHlwZV9jb25mLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisjaWZkZWYgSEFWRV9BRVMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiREVTfEFFUyIKKyNlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRFUyAoQUVTIHN1cHBvcnQgbm90IGF2YWlsYWJsZSkiCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisKKyAgICAvKgorICAgICAqIEZyZWUgc3R1ZmYgYXQgc2h1dGRvd24gdGltZQorICAgICAqLworICAgIHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19MSUJSQVJZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9DQUxMQkFDS19TSFVURE9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWVfZW5naW5ldGltZV9vbl9zaHV0ZG93biwgTlVMTCk7CisKKworICAgIHR5cGUgPSBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELCBORVRTTk1QX0RTX0xJQl9BUFBUWVBFKTsKKworICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKHR5cGUsICJ1c2VyU2V0QXV0aFBhc3MiLCB1c21fc2V0X3Bhc3N3b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOworICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKHR5cGUsICJ1c2VyU2V0UHJpdlBhc3MiLCB1c21fc2V0X3Bhc3N3b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOworICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKHR5cGUsICJ1c2VyU2V0QXV0aEtleSIsIHVzbV9zZXRfcGFzc3dvcmQsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIodHlwZSwgInVzZXJTZXRQcml2S2V5IiwgdXNtX3NldF9wYXNzd29yZCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcih0eXBlLCAidXNlclNldEF1dGhMb2NhbEtleSIsIHVzbV9zZXRfcGFzc3dvcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7CisgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIodHlwZSwgInVzZXJTZXRQcml2TG9jYWxLZXkiLCB1c21fc2V0X3Bhc3N3b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOwogfQogCiB2b2lkCkBAIC0zMDA0LDYgKzMzNzYsMTMgQEAKIAogfQogCit2b2lkCitzaHV0ZG93bl91c20odm9pZCkKK3sKKyAgICBmcmVlX2V0aW1lbGlzdCgpOworICAgIGNsZWFyX3VzZXJfbGlzdCgpOworfQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi1vLSoqKioqKgogICogdXNtX2NoZWNrX3NlY0xldmVsCiAgKgpAQCAtMzQwOSw2ICszNzg4LDcgQEAKIAogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAvKgogICogdGFrZSBhIGdpdmVuIHVzZXIgYW5kIGNsb25lIHRoZSBzZWN1cml0eSBpbmZvIGludG8gYW5vdGhlciAKICAqLwpAQCAtMzQ3Miw2ICszODUyLDcgQEAKICAgICB9CiAgICAgcmV0dXJuIHRvOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAvKgogICogdXNtX2NyZWF0ZV91c2VyKHZvaWQpOgpAQCAtMzkzNywzICs0MzE4LDM1NSBAQAogICAgICAgICB9CiAgICAgfQogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlbmQgdXNtX3NldF9wYXNzd29yZCgpICovCisKK3ZvaWQKK3VzbV9wYXJzZV9jcmVhdGVfdXNtVXNlcihjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSkKK3sKKyAgICBjaGFyICAgICAgICAgICAqY3A7CisgICAgY2hhciAgICAgICAgICAgIGJ1ZltTTk1QX01BWEJVRl9NRURJVU1dOworICAgIHN0cnVjdCB1c21Vc2VyICpuZXd1c2VyOworICAgIHVfY2hhciAgICAgICAgICB1c2VyS2V5W1NOTVBfTUFYQlVGX1NNQUxMXSwgKnRtcHA7CisgICAgc2l6ZV90ICAgICAgICAgIHVzZXJLZXlMZW4gPSBTTk1QX01BWEJVRl9TTUFMTDsKKyAgICBzaXplX3QgICAgICAgICAgcHJpdktleUxlbiA9IDA7CisgICAgc2l6ZV90ICAgICAgICAgIHJldDsKKyAgICBpbnQgICAgICAgICAgICAgcmV0MjsKKyAgICBpbnQgICAgICAgICAgICAgdGVzdGNhc2U7CisKKyAgICBuZXd1c2VyID0gdXNtX2NyZWF0ZV91c2VyKCk7CisKKyAgICAvKgorICAgICAqIFJFQUQ6IFNlY3VyaXR5IE5hbWUgCisgICAgICovCisgICAgY3AgPSBjb3B5X253b3JkKGxpbmUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworCisgICAgLyoKKyAgICAgKiBtaWdodCBiZSBhIC1lIEVOR0lORUlEIGFyZ3VtZW50IAorICAgICAqLworICAgIGlmIChzdHJjbXAoYnVmLCAiLWUiKSA9PSAwKSB7CisgICAgICAgIHNpemVfdCAgICAgICAgICBlYnVmX2xlbiA9IDMyLCBlb3V0X2xlbiA9IDA7CisgICAgICAgIHVfY2hhciAgICAgICAgICplYnVmID0gKHVfY2hhciAqKSBtYWxsb2MoZWJ1Zl9sZW4pOworCisgICAgICAgIGlmIChlYnVmID09IE5VTEwpIHsKKyAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIm1hbGxvYyBmYWlsdXJlIHByb2Nlc3NpbmcgLWUgZmxhZyIpOworICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIEdldCB0aGUgc3BlY2lmaWVkIGVuZ2luZWlkIGZyb20gdGhlIGxpbmUuICAKKyAgICAgICAgICovCisgICAgICAgIGNwID0gY29weV9ud29yZChjcCwgYnVmLCBzaXplb2YoYnVmKSk7CisgICAgICAgIGlmICghc25tcF9oZXhfdG9fYmluYXJ5KCZlYnVmLCAmZWJ1Zl9sZW4sICZlb3V0X2xlbiwgMSwgYnVmKSkgeworICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiaW52YWxpZCBFbmdpbmVJRCBhcmd1bWVudCB0byAtZSIpOworICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKKyAgICAgICAgICAgIFNOTVBfRlJFRShlYnVmKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG5ld3VzZXItPmVuZ2luZUlEID0gZWJ1ZjsKKyAgICAgICAgbmV3dXNlci0+ZW5naW5lSURMZW4gPSBlb3V0X2xlbjsKKyAgICAgICAgY3AgPSBjb3B5X253b3JkKGNwLCBidWYsIHNpemVvZihidWYpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBuZXd1c2VyLT5lbmdpbmVJRCA9IHNubXB2M19nZW5lcmF0ZV9lbmdpbmVJRCgmcmV0KTsKKyAgICAgICAgaWYgKHJldCA9PSAwKSB7CisgICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG5ld3VzZXItPmVuZ2luZUlETGVuID0gcmV0OworICAgIH0KKworICAgIG5ld3VzZXItPnNlY05hbWUgPSBzdHJkdXAoYnVmKTsKKyAgICBuZXd1c2VyLT5uYW1lID0gc3RyZHVwKGJ1Zik7CisKKyAgICBpZiAoIWNwKQorICAgICAgICBnb3RvIGFkZDsgICAgICAgICAgICAgICAvKiBubyBhdXRoZW50aWNhdGlvbiBvciBwcml2YWN5IHR5cGUgKi8KKworICAgIC8qCisgICAgICogUkVBRDogQXV0aGVudGljYXRpb24gVHlwZSAKKyAgICAgKi8KKyNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX01ENQorICAgIGlmIChzdHJuY21wKGNwLCAiTUQ1IiwgMykgPT0gMCkgeworICAgICAgICBtZW1jcHkobmV3dXNlci0+YXV0aFByb3RvY29sLCB1c21ITUFDTUQ1QXV0aFByb3RvY29sLAorICAgICAgICAgICAgICAgc2l6ZW9mKHVzbUhNQUNNRDVBdXRoUHJvdG9jb2wpKTsKKyAgICB9IGVsc2UKKyNlbmRpZgorICAgICAgICBpZiAoc3RybmNtcChjcCwgIlNIQSIsIDMpID09IDApIHsKKyAgICAgICAgbWVtY3B5KG5ld3VzZXItPmF1dGhQcm90b2NvbCwgdXNtSE1BQ1NIQTFBdXRoUHJvdG9jb2wsCisgICAgICAgICAgICAgICBzaXplb2YodXNtSE1BQ1NIQTFBdXRoUHJvdG9jb2wpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBjb25maWdfcGVycm9yKCJVbmtub3duIGF1dGhlbnRpY2F0aW9uIHByb3RvY29sIik7CisgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjcCA9IHNraXBfdG9rZW4oY3ApOworCisgICAgLyoKKyAgICAgKiBSRUFEOiBBdXRoZW50aWNhdGlvbiBQYXNzIFBocmFzZSBvciBrZXkKKyAgICAgKi8KKyAgICBpZiAoIWNwKSB7CisgICAgICAgIGNvbmZpZ19wZXJyb3IoIm5vIGF1dGhlbnRpY2F0aW9uIHBhc3MgcGhyYXNlIik7CisgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY3AgPSBjb3B5X253b3JkKGNwLCBidWYsIHNpemVvZihidWYpKTsKKyAgICBpZiAoc3RyY21wKGJ1ZiwiLW0iKSA9PSAwKSB7CisgICAgICAgIC8qIGEgbWFzdGVyIGtleSBpcyBzcGVjaWZpZWQgKi8KKyAgICAgICAgY3AgPSBjb3B5X253b3JkKGNwLCBidWYsIHNpemVvZihidWYpKTsKKyAgICAgICAgcmV0ID0gc2l6ZW9mKHVzZXJLZXkpOworICAgICAgICB0bXBwID0gdXNlcktleTsKKyAgICAgICAgdXNlcktleUxlbiA9IDA7CisgICAgICAgIGlmICghc25tcF9oZXhfdG9fYmluYXJ5KCZ0bXBwLCAmcmV0LCAmdXNlcktleUxlbiwgMCwgYnVmKSkgeworICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiaW52YWxpZCBrZXkgdmFsdWUgYXJndW1lbnQgdG8gLW0iKTsKKyAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHN0cmNtcChidWYsIi1sIikgIT0gMCkgeworICAgICAgICAvKiBhIHBhc3N3b3JkIGlzIHNwZWNpZmllZCAqLworICAgICAgICB1c2VyS2V5TGVuID0gc2l6ZW9mKHVzZXJLZXkpOworICAgICAgICByZXQyID0gZ2VuZXJhdGVfS3UobmV3dXNlci0+YXV0aFByb3RvY29sLCBuZXd1c2VyLT5hdXRoUHJvdG9jb2xMZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgYnVmLCBzdHJsZW4oYnVmKSwgdXNlcktleSwgJnVzZXJLZXlMZW4pOworICAgICAgICBpZiAocmV0MiAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImNvdWxkIG5vdCBnZW5lcmF0ZSB0aGUgYXV0aGVudGljYXRpb24ga2V5IGZyb20gdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBsaWVkIHBhc3MgcGhyYXNlLiIpOworICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0gICAgICAgIAorICAgICAgICAKKyAgICAvKgorICAgICAqIEFuZCB0dXJuIGl0IGludG8gYSBsb2NhbGl6ZWQga2V5IAorICAgICAqLworICAgIHJldDIgPSBzY19nZXRfcHJvcGVybGVuZ3RoKG5ld3VzZXItPmF1dGhQcm90b2NvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXd1c2VyLT5hdXRoUHJvdG9jb2xMZW4pOworICAgIGlmIChyZXQyIDw9IDApIHsKKyAgICAgICAgY29uZmlnX3BlcnJvcigiQ291bGQgbm90IGdldCBwcm9wZXIgYXV0aGVudGljYXRpb24gcHJvdG9jb2wga2V5IGxlbmd0aCIpOworCXVzbV9mcmVlX3VzZXIobmV3dXNlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbmV3dXNlci0+YXV0aEtleSA9ICh1X2NoYXIgKikgbWFsbG9jKHJldDIpOworCisgICAgaWYgKHN0cmNtcChidWYsIi1sIikgPT0gMCkgeworICAgICAgICAvKiBhIGxvY2FsIGtleSBpcyBkaXJlY3RseSBzcGVjaWZpZWQgKi8KKyAgICAgICAgY3AgPSBjb3B5X253b3JkKGNwLCBidWYsIHNpemVvZihidWYpKTsKKyAgICAgICAgbmV3dXNlci0+YXV0aEtleUxlbiA9IDA7CisgICAgICAgIHJldCA9IHJldDI7CisgICAgICAgIGlmICghc25tcF9oZXhfdG9fYmluYXJ5KCZuZXd1c2VyLT5hdXRoS2V5LCAmcmV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3dXNlci0+YXV0aEtleUxlbiwgMCwgYnVmKSkgeworICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiaW52YWxpZCBrZXkgdmFsdWUgYXJndW1lbnQgdG8gLWwiKTsKKyAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJldCAhPSBuZXd1c2VyLT5hdXRoS2V5TGVuKSB7CisgICAgICAgICAgICBjb25maWdfcGVycm9yKCJpbXByb3BlciBrZXkgbGVuZ3RoIHRvIC1sIik7CisgICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgbmV3dXNlci0+YXV0aEtleUxlbiA9IHJldDI7CisgICAgICAgIHJldDIgPSBnZW5lcmF0ZV9rdWwobmV3dXNlci0+YXV0aFByb3RvY29sLCBuZXd1c2VyLT5hdXRoUHJvdG9jb2xMZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXd1c2VyLT5lbmdpbmVJRCwgbmV3dXNlci0+ZW5naW5lSURMZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyS2V5LCB1c2VyS2V5TGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3dXNlci0+YXV0aEtleSwgJm5ld3VzZXItPmF1dGhLZXlMZW4pOworICAgICAgICBpZiAocmV0MiAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImNvdWxkIG5vdCBnZW5lcmF0ZSBsb2NhbGl6ZWQgYXV0aGVudGljYXRpb24ga2V5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIihLdWwpIGZyb20gdGhlIG1hc3RlciBrZXkgKEt1KS4iKTsKKyAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWNwKQorICAgICAgICBnb3RvIGFkZDsgICAgICAgICAgICAgICAvKiBubyBwcml2YWN5IHR5cGUgKHdoaWNoIGlzIGxlZ2FsKSAqLworCisgICAgLyoKKyAgICAgKiBSRUFEOiBQcml2YWN5IFR5cGUgCisgICAgICovCisgICAgdGVzdGNhc2UgPSAwOworI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfREVTCisgICAgaWYgKHN0cm5jbXAoY3AsICJERVMiLCAzKSA9PSAwKSB7CisgICAgICAgIG1lbWNweShuZXd1c2VyLT5wcml2UHJvdG9jb2wsIHVzbURFU1ByaXZQcm90b2NvbCwKKyAgICAgICAgICAgICAgIHNpemVvZih1c21ERVNQcml2UHJvdG9jb2wpKTsKKyAgICAgICAgdGVzdGNhc2UgPSAxOworCS8qIERFUyB1c2VzIGEgMTI4IGJpdCBrZXksIDY0IGJpdHMgb2Ygd2hpY2ggaXMgYSBzYWx0ICovCisJcHJpdktleUxlbiA9IDE2OworICAgIH0KKyNlbmRpZgorI2lmZGVmIEhBVkVfQUVTCisgICAgaWYgKHN0cm5jbXAoY3AsICJBRVMxMjgiLCA2KSA9PSAwIHx8CisgICAgICAgICAgICAgICBzdHJuY21wKGNwLCAiQUVTIiwgMykgPT0gMCkgeworICAgICAgICBtZW1jcHkobmV3dXNlci0+cHJpdlByb3RvY29sLCB1c21BRVNQcml2UHJvdG9jb2wsCisgICAgICAgICAgICAgICBzaXplb2YodXNtQUVTUHJpdlByb3RvY29sKSk7CisgICAgICAgIHRlc3RjYXNlID0gMTsKKwlwcml2S2V5TGVuID0gMTY7CisgICAgfQorI2VuZGlmCisgICAgaWYgKHRlc3RjYXNlID09IDApIHsKKyAgICAgICAgY29uZmlnX3BlcnJvcigiVW5rbm93biBwcml2YWN5IHByb3RvY29sIik7CisgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjcCA9IHNraXBfdG9rZW4oY3ApOworICAgIC8qCisgICAgICogUkVBRDogRW5jcnlwdGlvbiBQYXNzIFBocmFzZSBvciBrZXkKKyAgICAgKi8KKyAgICBpZiAoIWNwKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIGFzc3VtZSB0aGUgc2FtZSBhcyB0aGUgYXV0aGVudGljYXRpb24ga2V5IAorICAgICAgICAgKi8KKyAgICAgICAgbmV3dXNlci0+cHJpdktleSA9IG5ldHNubXBfbWVtZHVwKG5ld3VzZXItPmF1dGhLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXd1c2VyLT5hdXRoS2V5TGVuKTsKKyAgICAgICAgbmV3dXNlci0+cHJpdktleUxlbiA9IG5ld3VzZXItPmF1dGhLZXlMZW47CisgICAgfSBlbHNlIHsKKyAgICAgICAgY3AgPSBjb3B5X253b3JkKGNwLCBidWYsIHNpemVvZihidWYpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChzdHJjbXAoYnVmLCItbSIpID09IDApIHsKKyAgICAgICAgICAgIC8qIGEgbWFzdGVyIGtleSBpcyBzcGVjaWZpZWQgKi8KKyAgICAgICAgICAgIGNwID0gY29weV9ud29yZChjcCwgYnVmLCBzaXplb2YoYnVmKSk7CisgICAgICAgICAgICByZXQgPSBzaXplb2YodXNlcktleSk7CisgICAgICAgICAgICB0bXBwID0gdXNlcktleTsKKyAgICAgICAgICAgIHVzZXJLZXlMZW4gPSAwOworICAgICAgICAgICAgaWYgKCFzbm1wX2hleF90b19iaW5hcnkoJnRtcHAsICZyZXQsICZ1c2VyS2V5TGVuLCAwLCBidWYpKSB7CisgICAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiaW52YWxpZCBrZXkgdmFsdWUgYXJndW1lbnQgdG8gLW0iKTsKKyAgICAgICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChzdHJjbXAoYnVmLCItbCIpICE9IDApIHsKKyAgICAgICAgICAgIC8qIGEgcGFzc3dvcmQgaXMgc3BlY2lmaWVkICovCisgICAgICAgICAgICB1c2VyS2V5TGVuID0gc2l6ZW9mKHVzZXJLZXkpOworICAgICAgICAgICAgcmV0MiA9IGdlbmVyYXRlX0t1KG5ld3VzZXItPmF1dGhQcm90b2NvbCwgbmV3dXNlci0+YXV0aFByb3RvY29sTGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSBidWYsIHN0cmxlbihidWYpLCB1c2VyS2V5LCAmdXNlcktleUxlbik7CisgICAgICAgICAgICBpZiAocmV0MiAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJjb3VsZCBub3QgZ2VuZXJhdGUgdGhlIHByaXZhY3kga2V5IGZyb20gdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwbGllZCBwYXNzIHBocmFzZS4iKTsKKyAgICAgICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSAgICAgICAgCisgICAgICAgIAorICAgICAgICAvKgorICAgICAgICAgKiBBbmQgdHVybiBpdCBpbnRvIGEgbG9jYWxpemVkIGtleSAKKyAgICAgICAgICovCisgICAgICAgIHJldDIgPSBzY19nZXRfcHJvcGVybGVuZ3RoKG5ld3VzZXItPmF1dGhQcm90b2NvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3dXNlci0+YXV0aFByb3RvY29sTGVuKTsKKyAgICAgICAgaWYgKHJldDIgPCAwKSB7CisgICAgICAgICAgICBjb25maWdfcGVycm9yKCJjb3VsZCBub3QgZ2V0IHByb3BlciBrZXkgbGVuZ3RoIHRvIHVzZSBmb3IgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInByaXZhY3kgYWxnb3JpdGhtLiIpOworICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBuZXd1c2VyLT5wcml2S2V5ID0gKHVfY2hhciAqKSBtYWxsb2MocmV0Mik7CisKKyAgICAgICAgaWYgKHN0cmNtcChidWYsIi1sIikgPT0gMCkgeworICAgICAgICAgICAgLyogYSBsb2NhbCBrZXkgaXMgZGlyZWN0bHkgc3BlY2lmaWVkICovCisgICAgICAgICAgICBjcCA9IGNvcHlfbndvcmQoY3AsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworICAgICAgICAgICAgcmV0ID0gcmV0MjsKKyAgICAgICAgICAgIG5ld3VzZXItPnByaXZLZXlMZW4gPSAwOworICAgICAgICAgICAgaWYgKCFzbm1wX2hleF90b19iaW5hcnkoJm5ld3VzZXItPnByaXZLZXksICZyZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3dXNlci0+cHJpdktleUxlbiwgMCwgYnVmKSkgeworICAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImludmFsaWQga2V5IHZhbHVlIGFyZ3VtZW50IHRvIC1sIik7CisgICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBuZXd1c2VyLT5wcml2S2V5TGVuID0gcmV0MjsKKyAgICAgICAgICAgIHJldDIgPSBnZW5lcmF0ZV9rdWwobmV3dXNlci0+YXV0aFByb3RvY29sLCBuZXd1c2VyLT5hdXRoUHJvdG9jb2xMZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3dXNlci0+ZW5naW5lSUQsIG5ld3VzZXItPmVuZ2luZUlETGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJLZXksIHVzZXJLZXlMZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3dXNlci0+cHJpdktleSwgJm5ld3VzZXItPnByaXZLZXlMZW4pOworICAgICAgICAgICAgaWYgKHJldDIgIT0gU05NUEVSUl9TVUNDRVNTKSB7CisgICAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiY291bGQgbm90IGdlbmVyYXRlIGxvY2FsaXplZCBwcml2YWN5IGtleSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKEt1bCkgZnJvbSB0aGUgbWFzdGVyIGtleSAoS3UpLiIpOworICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKChuZXd1c2VyLT5wcml2S2V5TGVuID49IHByaXZLZXlMZW4pIHx8IChwcml2S2V5TGVuID09IDApKXsKKyAgICAgIG5ld3VzZXItPnByaXZLZXlMZW4gPSBwcml2S2V5TGVuOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIC8qIFRoZSBwcml2S2V5IGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gcmVxdWlyZWQgYnkgcHJpdlByb3RvY29sICovCisgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOworICAgICAgcmV0dXJuOworICAgIH0KKworICBhZGQ6CisgICAgdXNtX2FkZF91c2VyKG5ld3VzZXIpOworICAgIERFQlVHTVNHVEwoKCJ1c21Vc2VyIiwgImNyZWF0ZWQgYSBuZXcgdXNlciAlcyBhdCAiLCBuZXd1c2VyLT5zZWNOYW1lKSk7CisgICAgREVCVUdNU0dIRVgoKCJ1c21Vc2VyIiwgbmV3dXNlci0+ZW5naW5lSUQsIG5ld3VzZXItPmVuZ2luZUlETGVuKSk7CisgICAgREVCVUdNU0coKCJ1c21Vc2VyIiwgIlxuIikpOworfQorCit2b2lkCitzbm1wdjNfYXV0aHR5cGVfY29uZihjb25zdCBjaGFyICp3b3JkLCBjaGFyICpjcHRyKQoreworI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfTUQ1CisgICAgaWYgKHN0cmNhc2VjbXAoY3B0ciwgIk1ENSIpID09IDApCisgICAgICAgIGRlZmF1bHRBdXRoVHlwZSA9IHVzbUhNQUNNRDVBdXRoUHJvdG9jb2w7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIGlmIChzdHJjYXNlY21wKGNwdHIsICJTSEEiKSA9PSAwKQorICAgICAgICBkZWZhdWx0QXV0aFR5cGUgPSB1c21ITUFDU0hBMUF1dGhQcm90b2NvbDsKKyAgICBlbHNlCisgICAgICAgIGNvbmZpZ19wZXJyb3IoIlVua25vd24gYXV0aGVudGljYXRpb24gdHlwZSIpOworICAgIGRlZmF1bHRBdXRoVHlwZUxlbiA9IFVTTV9MRU5HVEhfT0lEX1RSQU5TRk9STTsKKyAgICBERUJVR01TR1RMKCgic25tcHYzIiwgInNldCBkZWZhdWx0IGF1dGhlbnRpY2F0aW9uIHR5cGU6ICVzXG4iLCBjcHRyKSk7Cit9CisKK2NvbnN0IG9pZCAgICAgICoKK2dldF9kZWZhdWx0X2F1dGh0eXBlKHNpemVfdCAqIGxlbikKK3sKKyAgICBpZiAoZGVmYXVsdEF1dGhUeXBlID09IE5VTEwpIHsKKyAgICAgICAgZGVmYXVsdEF1dGhUeXBlID0gU05NUF9ERUZBVUxUX0FVVEhfUFJPVE87CisgICAgICAgIGRlZmF1bHRBdXRoVHlwZUxlbiA9IFNOTVBfREVGQVVMVF9BVVRIX1BST1RPTEVOOworICAgIH0KKyAgICBpZiAobGVuKQorICAgICAgICAqbGVuID0gZGVmYXVsdEF1dGhUeXBlTGVuOworICAgIHJldHVybiBkZWZhdWx0QXV0aFR5cGU7Cit9CisKK3ZvaWQKK3NubXB2M19wcml2dHlwZV9jb25mKGNvbnN0IGNoYXIgKndvcmQsIGNoYXIgKmNwdHIpCit7CisgICAgaW50IHRlc3RjYXNlID0gMDsKKworI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfREVTCisgICAgaWYgKHN0cmNhc2VjbXAoY3B0ciwgIkRFUyIpID09IDApIHsKKyAgICAgICAgdGVzdGNhc2UgPSAxOworICAgICAgICBkZWZhdWx0UHJpdlR5cGUgPSB1c21ERVNQcml2UHJvdG9jb2w7CisgICAgfQorI2VuZGlmCisKKyNpZiBIQVZFX0FFUworICAgIC8qIFhYWCBBRVM6IGFzc3VtZXMgb2lkIGxlbmd0aCA9PSBkZXMgb2lkIGxlbmd0aCAqLworICAgIGlmIChzdHJjYXNlY21wKGNwdHIsICJBRVMxMjgiKSA9PSAwIHx8CisgICAgICAgIHN0cmNhc2VjbXAoY3B0ciwgIkFFUyIpID09IDApIHsKKyAgICAgICAgdGVzdGNhc2UgPSAxOworICAgICAgICBkZWZhdWx0UHJpdlR5cGUgPSB1c21BRVMxMjhQcml2UHJvdG9jb2w7CisgICAgfQorI2VuZGlmCisgICAgaWYgKHRlc3RjYXNlID09IDApCisgICAgICAgIGNvbmZpZ19wZXJyb3IoIlVua25vd24gcHJpdmFjeSB0eXBlIik7CisgICAgZGVmYXVsdFByaXZUeXBlTGVuID0gU05NUF9ERUZBVUxUX1BSSVZfUFJPVE9MRU47CisgICAgREVCVUdNU0dUTCgoInNubXB2MyIsICJzZXQgZGVmYXVsdCBwcml2YWN5IHR5cGU6ICVzXG4iLCBjcHRyKSk7Cit9CisKK2NvbnN0IG9pZCAgICAgICoKK2dldF9kZWZhdWx0X3ByaXZ0eXBlKHNpemVfdCAqIGxlbikKK3sKKyAgICBpZiAoZGVmYXVsdFByaXZUeXBlID09IE5VTEwpIHsKKyNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX0RFUworICAgICAgICBkZWZhdWx0UHJpdlR5cGUgPSB1c21ERVNQcml2UHJvdG9jb2w7CisjZWxzZQorICAgICAgICBkZWZhdWx0UHJpdlR5cGUgPSB1c21BRVNQcml2UHJvdG9jb2w7CisjZW5kaWYKKyAgICAgICAgZGVmYXVsdFByaXZUeXBlTGVuID0gVVNNX0xFTkdUSF9PSURfVFJBTlNGT1JNOworICAgIH0KKyAgICBpZiAobGVuKQorICAgICAgICAqbGVuID0gZGVmYXVsdFByaXZUeXBlTGVuOworICAgIHJldHVybiBkZWZhdWx0UHJpdlR5cGU7Cit9CisKZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcHYzLmMgYi9zbm1wbGliL3NubXB2My5jCmluZGV4IDhiNDkzNjIuLjQzNWNhZmQgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcHYzLmMKKysrIGIvc25tcGxpYi9zbm1wdjMuYwpAQCAtNzUsNiArNzUsOCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKIHN0YXRpYyB1X2xvbmcgICBlbmdpbmVCb290cyA9IDE7CiBzdGF0aWMgdW5zaWduZWQgaW50IGVuZ2luZUlEVHlwZSA9IEVOR0lORUlEX1RZUEVfTkVUU05NUF9STkQ7CiBzdGF0aWMgdW5zaWduZWQgY2hhciAqZW5naW5lSUQgPSBOVUxMOwpAQCAtODUsMTAwICs4NywxMCBAQAogc3RhdGljIHNpemVfdCAgIG9sZEVuZ2luZUlETGVuZ3RoID0gMDsKIHN0YXRpYyBzdHJ1Y3QgdGltZXZhbCBzbm1wdjNzdGFydHRpbWU7CiAKLS8qCi0gKiBTZXQgdXAgZGVmYXVsdCBzbm1wdjMgcGFyYW1ldGVyIHZhbHVlIHN0b3JhZ2UuCi0gKi8KLXN0YXRpYyBjb25zdCBvaWQgKmRlZmF1bHRBdXRoVHlwZSA9IE5VTEw7Ci1zdGF0aWMgc2l6ZV90ICAgZGVmYXVsdEF1dGhUeXBlTGVuID0gMDsKLXN0YXRpYyBjb25zdCBvaWQgKmRlZmF1bHRQcml2VHlwZSA9IE5VTEw7Ci1zdGF0aWMgc2l6ZV90ICAgZGVmYXVsdFByaXZUeXBlTGVuID0gMDsKLQotLyogdGhpcyBpcyBwcm9iYWJseSBhbiBvdmVyLWtpbGwgaWZkZWYsIGJ1dCB3aHkgbm90ICovCi0jaWYgZGVmaW5lZChIQVZFX1NZU19USU1FU19IKSAmJiBkZWZpbmVkKEhBVkVfVU5JU1REX0gpICYmIGRlZmluZWQoSEFWRV9USU1FUykgJiYgZGVmaW5lZChfU0NfQ0xLX1RDSykgJiYgZGVmaW5lZChIQVZFX1NZU0NPTkYpICYmIGRlZmluZWQoVUlOVF9NQVgpCi0KLSNkZWZpbmUgU05NUF9VU0VfVElNRVMgMQotCi1zdGF0aWMgY2xvY2tfdCBzbm1wdjNzdGFydENsb2NrOwotc3RhdGljIGxvbmcgY2xvY2t0aWNrcyA9IDA7Ci1zdGF0aWMgdW5zaWduZWQgaW50IGxhc3RjYWxsdGltZSA9IDA7Ci1zdGF0aWMgdW5zaWduZWQgaW50IHdyYXBjb3VudGVyID0gMDsKLQotI2VuZGlmIC8qIHRpbWVzKCkgdGVzdHMgKi8KLQogI2lmIGRlZmluZWQoSUZIV0FERFJMRU4pICYmIGRlZmluZWQoU0lPQ0dJRkhXQUREUikKIHN0YXRpYyBpbnQgICAgICBnZXRId0FkZHJlc3MoY29uc3QgY2hhciAqbmV0d29ya0RldmljZSwgY2hhciAqYWRkcmVzc091dCk7CiAjZW5kaWYKIAotdm9pZAotc25tcHYzX2F1dGh0eXBlX2NvbmYoY29uc3QgY2hhciAqd29yZCwgY2hhciAqY3B0cikKLXsKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX01ENQotICAgIGlmIChzdHJjYXNlY21wKGNwdHIsICJNRDUiKSA9PSAwKQotICAgICAgICBkZWZhdWx0QXV0aFR5cGUgPSB1c21ITUFDTUQ1QXV0aFByb3RvY29sOwotICAgIGVsc2UKLSNlbmRpZgotICAgICAgICBpZiAoc3RyY2FzZWNtcChjcHRyLCAiU0hBIikgPT0gMCkKLSAgICAgICAgZGVmYXVsdEF1dGhUeXBlID0gdXNtSE1BQ1NIQTFBdXRoUHJvdG9jb2w7Ci0gICAgZWxzZQotICAgICAgICBjb25maWdfcGVycm9yKCJVbmtub3duIGF1dGhlbnRpY2F0aW9uIHR5cGUiKTsKLSAgICBkZWZhdWx0QXV0aFR5cGVMZW4gPSBVU01fTEVOR1RIX09JRF9UUkFOU0ZPUk07Ci0gICAgREVCVUdNU0dUTCgoInNubXB2MyIsICJzZXQgZGVmYXVsdCBhdXRoZW50aWNhdGlvbiB0eXBlOiAlc1xuIiwgY3B0cikpOwotfQotCi1jb25zdCBvaWQgICAgICAqCi1nZXRfZGVmYXVsdF9hdXRodHlwZShzaXplX3QgKiBsZW4pCi17Ci0gICAgaWYgKGRlZmF1bHRBdXRoVHlwZSA9PSBOVUxMKSB7Ci0gICAgICAgIGRlZmF1bHRBdXRoVHlwZSA9IFNOTVBfREVGQVVMVF9BVVRIX1BST1RPOwotICAgICAgICBkZWZhdWx0QXV0aFR5cGVMZW4gPSBTTk1QX0RFRkFVTFRfQVVUSF9QUk9UT0xFTjsKLSAgICB9Ci0gICAgaWYgKGxlbikKLSAgICAgICAgKmxlbiA9IGRlZmF1bHRBdXRoVHlwZUxlbjsKLSAgICByZXR1cm4gZGVmYXVsdEF1dGhUeXBlOwotfQotCi12b2lkCi1zbm1wdjNfcHJpdnR5cGVfY29uZihjb25zdCBjaGFyICp3b3JkLCBjaGFyICpjcHRyKQotewotICAgIGludCB0ZXN0Y2FzZSA9IDA7Ci0KLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX0RFUwotICAgIGlmIChzdHJjYXNlY21wKGNwdHIsICJERVMiKSA9PSAwKSB7Ci0gICAgICAgIHRlc3RjYXNlID0gMTsKLSAgICAgICAgZGVmYXVsdFByaXZUeXBlID0gdXNtREVTUHJpdlByb3RvY29sOwotICAgIH0KLSNlbmRpZgotCi0jaWYgSEFWRV9BRVMKLSAgICAvKiBYWFggQUVTOiBhc3N1bWVzIG9pZCBsZW5ndGggPT0gZGVzIG9pZCBsZW5ndGggKi8KLSAgICBpZiAoc3RyY2FzZWNtcChjcHRyLCAiQUVTMTI4IikgPT0gMCB8fAotICAgICAgICBzdHJjYXNlY21wKGNwdHIsICJBRVMiKSA9PSAwKSB7Ci0gICAgICAgIHRlc3RjYXNlID0gMTsKLSAgICAgICAgZGVmYXVsdFByaXZUeXBlID0gdXNtQUVTMTI4UHJpdlByb3RvY29sOwotICAgIH0KLSNlbmRpZgotICAgIGlmICh0ZXN0Y2FzZSA9PSAwKQotICAgICAgICBjb25maWdfcGVycm9yKCJVbmtub3duIHByaXZhY3kgdHlwZSIpOwotICAgIGRlZmF1bHRQcml2VHlwZUxlbiA9IFNOTVBfREVGQVVMVF9QUklWX1BST1RPTEVOOwotICAgIERFQlVHTVNHVEwoKCJzbm1wdjMiLCAic2V0IGRlZmF1bHQgcHJpdmFjeSB0eXBlOiAlc1xuIiwgY3B0cikpOwotfQotCi1jb25zdCBvaWQgICAgICAqCi1nZXRfZGVmYXVsdF9wcml2dHlwZShzaXplX3QgKiBsZW4pCi17Ci0gICAgaWYgKGRlZmF1bHRQcml2VHlwZSA9PSBOVUxMKSB7Ci0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9ERVMKLSAgICAgICAgZGVmYXVsdFByaXZUeXBlID0gdXNtREVTUHJpdlByb3RvY29sOwotI2Vsc2UKLSAgICAgICAgZGVmYXVsdFByaXZUeXBlID0gdXNtQUVTUHJpdlByb3RvY29sOwotI2VuZGlmCi0gICAgICAgIGRlZmF1bHRQcml2VHlwZUxlbiA9IFVTTV9MRU5HVEhfT0lEX1RSQU5TRk9STTsKLSAgICB9Ci0gICAgaWYgKGxlbikKLSAgICAgICAgKmxlbiA9IGRlZmF1bHRQcml2VHlwZUxlbjsKLSAgICByZXR1cm4gZGVmYXVsdFByaXZUeXBlOwotfQotCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi1vLSoqKioqKgogICogc25tcHYzX3NlY0xldmVsX2NvbmYKICAqCkBAIC0zNTIsNiArMjY0LDcgQEAKIAogICAgICAgICBicmVhazsKIAorI2lmZGVmIE5FVFNOTVBfU0VDTU9EX1VTTQogICAgIGNhc2UgJ2EnOgogI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfTUQ1CiAgICAgICAgIGlmICghc3RyY2FzZWNtcChvcHRhcmcsICJNRDUiKSkgewpAQCAtNDAyLDYgKzMxNSw3IEBACiAgICAgY2FzZSAnWCc6CiAgICAgICAgICpYcHN6ID0gb3B0YXJnOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX1NFQ01PRF9VU00gKi8KIAogICAgIGNhc2UgJ20nOiB7CiAgICAgICAgIHNpemVfdCBidWZTaXplID0gc2l6ZW9mKHNlc3Npb24tPnNlY3VyaXR5QXV0aEtleSk7CkBAIC01MjgsNyArNDQyLDcgQEAKICAgICAgICAgICogZ2V0IHRoZSBob3N0IG5hbWUgYW5kIHNhdmUgdGhlIGluZm9ybWF0aW9uIAogICAgICAgICAgKi8KICAgICAgICAgZ2V0aG9zdG5hbWUoKGNoYXIgKikgYnVmLCBzaXplb2YoYnVmKSk7Ci0gICAgICAgIGhlbnQgPSBnZXRob3N0YnluYW1lKChjaGFyICopIGJ1Zik7CisgICAgICAgIGhlbnQgPSBuZXRzbm1wX2dldGhvc3RieW5hbWUoKGNoYXIgKikgYnVmKTsKICAgICAgICAgaWYgKGhlbnQgJiYgaGVudC0+aF9hZGRydHlwZSA9PSBBRl9JTkVUNikgewogICAgICAgICAgICAgbG9jYWxFbmdpbmVJRFR5cGUgPSBFTkdJTkVJRF9UWVBFX0lQVjY7CiAgICAgICAgIH0gZWxzZSB7CkBAIC01NTEsNyArNDY1LDcgQEAKICAgICAgICAgICogZ2V0IHRoZSBob3N0IG5hbWUgYW5kIHNhdmUgdGhlIGluZm9ybWF0aW9uIAogICAgICAgICAgKi8KICAgICAgICAgZ2V0aG9zdG5hbWUoKGNoYXIgKikgYnVmLCBzaXplb2YoYnVmKSk7Ci0gICAgICAgIGhlbnQgPSBnZXRob3N0YnluYW1lKChjaGFyICopIGJ1Zik7CisgICAgICAgIGhlbnQgPSBuZXRzbm1wX2dldGhvc3RieW5hbWUoKGNoYXIgKikgYnVmKTsKICAgICB9CiAjZW5kaWYKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSEFWRV9HRVRIT1NUTkFNRSAqLwpAQCAtNzQ0LDI5NyArNjU4LDYgQEAKICAgICByZXR1cm4gMDsKIH0KIAotaW50Ci1mcmVlX2VuZ2luZXRpbWVfb25fc2h1dGRvd24oaW50IG1ham9yaWQsIGludCBtaW5vcmlkLCB2b2lkICpzZXJ2ZXJhcmcsCi0JCQkgICAgdm9pZCAqY2xpZW50YXJnKQotewotICAgIERFQlVHTVNHVEwoKCJzbm1wdjMiLCAiZnJlZSBlbmdpbmV0aW1lIGNhbGxiYWNrIGNhbGxlZFxuIikpOwotICAgIGlmIChlbmdpbmVJRCAhPSBOVUxMKQotCWZyZWVfZW5naW5ldGltZShlbmdpbmVJRCwgZW5naW5lSURMZW5ndGgpOwotICAgIHJldHVybiAwOwotfQotCi12b2lkCi11c21fcGFyc2VfY3JlYXRlX3VzbVVzZXIoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmxpbmUpCi17Ci0gICAgY2hhciAgICAgICAgICAgKmNwOwotICAgIGNoYXIgICAgICAgICAgICBidWZbU05NUF9NQVhCVUZfTUVESVVNXTsKLSAgICBzdHJ1Y3QgdXNtVXNlciAqbmV3dXNlcjsKLSAgICB1X2NoYXIgICAgICAgICAgdXNlcktleVtTTk1QX01BWEJVRl9TTUFMTF0sICp0bXBwOwotICAgIHNpemVfdCAgICAgICAgICB1c2VyS2V5TGVuID0gU05NUF9NQVhCVUZfU01BTEw7Ci0gICAgc2l6ZV90ICAgICAgICAgIHByaXZLZXlMZW4gPSAwOwotICAgIHNpemVfdCAgICAgICAgICByZXQ7Ci0gICAgaW50ICAgICAgICAgICAgIHJldDI7Ci0gICAgaW50ICAgICAgICAgICAgIHRlc3RjYXNlOwotCi0gICAgbmV3dXNlciA9IHVzbV9jcmVhdGVfdXNlcigpOwotCi0gICAgLyoKLSAgICAgKiBSRUFEOiBTZWN1cml0eSBOYW1lIAotICAgICAqLwotICAgIGNwID0gY29weV9ud29yZChsaW5lLCBidWYsIHNpemVvZihidWYpKTsKLQotICAgIC8qCi0gICAgICogbWlnaHQgYmUgYSAtZSBFTkdJTkVJRCBhcmd1bWVudCAKLSAgICAgKi8KLSAgICBpZiAoc3RyY21wKGJ1ZiwgIi1lIikgPT0gMCkgewotICAgICAgICBzaXplX3QgICAgICAgICAgZWJ1Zl9sZW4gPSAzMiwgZW91dF9sZW4gPSAwOwotICAgICAgICB1X2NoYXIgICAgICAgICAqZWJ1ZiA9ICh1X2NoYXIgKikgbWFsbG9jKGVidWZfbGVuKTsKLQotICAgICAgICBpZiAoZWJ1ZiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBjb25maWdfcGVycm9yKCJtYWxsb2MgZmFpbHVyZSBwcm9jZXNzaW5nIC1lIGZsYWciKTsKLSAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvKgotICAgICAgICAgKiBHZXQgdGhlIHNwZWNpZmllZCBlbmdpbmVpZCBmcm9tIHRoZSBsaW5lLiAgCi0gICAgICAgICAqLwotICAgICAgICBjcCA9IGNvcHlfbndvcmQoY3AsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwotICAgICAgICBpZiAoIXNubXBfaGV4X3RvX2JpbmFyeSgmZWJ1ZiwgJmVidWZfbGVuLCAmZW91dF9sZW4sIDEsIGJ1ZikpIHsKLSAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImludmFsaWQgRW5naW5lSUQgYXJndW1lbnQgdG8gLWUiKTsKLSAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUoZWJ1Zik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBuZXd1c2VyLT5lbmdpbmVJRCA9IGVidWY7Ci0gICAgICAgIG5ld3VzZXItPmVuZ2luZUlETGVuID0gZW91dF9sZW47Ci0gICAgICAgIGNwID0gY29weV9ud29yZChjcCwgYnVmLCBzaXplb2YoYnVmKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbmV3dXNlci0+ZW5naW5lSUQgPSBzbm1wdjNfZ2VuZXJhdGVfZW5naW5lSUQoJnJldCk7Ci0gICAgICAgIGlmIChyZXQgPT0gMCkgewotICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBuZXd1c2VyLT5lbmdpbmVJRExlbiA9IHJldDsKLSAgICB9Ci0KLSAgICBuZXd1c2VyLT5zZWNOYW1lID0gc3RyZHVwKGJ1Zik7Ci0gICAgbmV3dXNlci0+bmFtZSA9IHN0cmR1cChidWYpOwotCi0gICAgaWYgKCFjcCkKLSAgICAgICAgZ290byBhZGQ7ICAgICAgICAgICAgICAgLyogbm8gYXV0aGVudGljYXRpb24gb3IgcHJpdmFjeSB0eXBlICovCi0KLSAgICAvKgotICAgICAqIFJFQUQ6IEF1dGhlbnRpY2F0aW9uIFR5cGUgCi0gICAgICovCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9NRDUKLSAgICBpZiAoc3RybmNtcChjcCwgIk1ENSIsIDMpID09IDApIHsKLSAgICAgICAgbWVtY3B5KG5ld3VzZXItPmF1dGhQcm90b2NvbCwgdXNtSE1BQ01ENUF1dGhQcm90b2NvbCwKLSAgICAgICAgICAgICAgIHNpemVvZih1c21ITUFDTUQ1QXV0aFByb3RvY29sKSk7Ci0gICAgfSBlbHNlCi0jZW5kaWYKLSAgICAgICAgaWYgKHN0cm5jbXAoY3AsICJTSEEiLCAzKSA9PSAwKSB7Ci0gICAgICAgIG1lbWNweShuZXd1c2VyLT5hdXRoUHJvdG9jb2wsIHVzbUhNQUNTSEExQXV0aFByb3RvY29sLAotICAgICAgICAgICAgICAgc2l6ZW9mKHVzbUhNQUNTSEExQXV0aFByb3RvY29sKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY29uZmlnX3BlcnJvcigiVW5rbm93biBhdXRoZW50aWNhdGlvbiBwcm90b2NvbCIpOwotICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY3AgPSBza2lwX3Rva2VuKGNwKTsKLQotICAgIC8qCi0gICAgICogUkVBRDogQXV0aGVudGljYXRpb24gUGFzcyBQaHJhc2Ugb3Iga2V5Ci0gICAgICovCi0gICAgaWYgKCFjcCkgewotICAgICAgICBjb25maWdfcGVycm9yKCJubyBhdXRoZW50aWNhdGlvbiBwYXNzIHBocmFzZSIpOwotICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNwID0gY29weV9ud29yZChjcCwgYnVmLCBzaXplb2YoYnVmKSk7Ci0gICAgaWYgKHN0cmNtcChidWYsIi1tIikgPT0gMCkgewotICAgICAgICAvKiBhIG1hc3RlciBrZXkgaXMgc3BlY2lmaWVkICovCi0gICAgICAgIGNwID0gY29weV9ud29yZChjcCwgYnVmLCBzaXplb2YoYnVmKSk7Ci0gICAgICAgIHJldCA9IHNpemVvZih1c2VyS2V5KTsKLSAgICAgICAgdG1wcCA9IHVzZXJLZXk7Ci0gICAgICAgIHVzZXJLZXlMZW4gPSAwOwotICAgICAgICBpZiAoIXNubXBfaGV4X3RvX2JpbmFyeSgmdG1wcCwgJnJldCwgJnVzZXJLZXlMZW4sIDAsIGJ1ZikpIHsKLSAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImludmFsaWQga2V5IHZhbHVlIGFyZ3VtZW50IHRvIC1tIik7Ci0gICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChzdHJjbXAoYnVmLCItbCIpICE9IDApIHsKLSAgICAgICAgLyogYSBwYXNzd29yZCBpcyBzcGVjaWZpZWQgKi8KLSAgICAgICAgdXNlcktleUxlbiA9IHNpemVvZih1c2VyS2V5KTsKLSAgICAgICAgcmV0MiA9IGdlbmVyYXRlX0t1KG5ld3VzZXItPmF1dGhQcm90b2NvbCwgbmV3dXNlci0+YXV0aFByb3RvY29sTGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopIGJ1Ziwgc3RybGVuKGJ1ZiksIHVzZXJLZXksICZ1c2VyS2V5TGVuKTsKLSAgICAgICAgaWYgKHJldDIgIT0gU05NUEVSUl9TVUNDRVNTKSB7Ci0gICAgICAgICAgICBjb25maWdfcGVycm9yKCJjb3VsZCBub3QgZ2VuZXJhdGUgdGhlIGF1dGhlbnRpY2F0aW9uIGtleSBmcm9tIHRoZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwbGllZCBwYXNzIHBocmFzZS4iKTsKLSAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9ICAgICAgICAKLSAgICAgICAgCi0gICAgLyoKLSAgICAgKiBBbmQgdHVybiBpdCBpbnRvIGEgbG9jYWxpemVkIGtleSAKLSAgICAgKi8KLSAgICByZXQyID0gc2NfZ2V0X3Byb3Blcmxlbmd0aChuZXd1c2VyLT5hdXRoUHJvdG9jb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3dXNlci0+YXV0aFByb3RvY29sTGVuKTsKLSAgICBpZiAocmV0MiA8PSAwKSB7Ci0gICAgICAgIGNvbmZpZ19wZXJyb3IoIkNvdWxkIG5vdCBnZXQgcHJvcGVyIGF1dGhlbnRpY2F0aW9uIHByb3RvY29sIGtleSBsZW5ndGgiKTsKLQl1c21fZnJlZV91c2VyKG5ld3VzZXIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG5ld3VzZXItPmF1dGhLZXkgPSAodV9jaGFyICopIG1hbGxvYyhyZXQyKTsKLQotICAgIGlmIChzdHJjbXAoYnVmLCItbCIpID09IDApIHsKLSAgICAgICAgLyogYSBsb2NhbCBrZXkgaXMgZGlyZWN0bHkgc3BlY2lmaWVkICovCi0gICAgICAgIGNwID0gY29weV9ud29yZChjcCwgYnVmLCBzaXplb2YoYnVmKSk7Ci0gICAgICAgIG5ld3VzZXItPmF1dGhLZXlMZW4gPSAwOwotICAgICAgICByZXQgPSByZXQyOwotICAgICAgICBpZiAoIXNubXBfaGV4X3RvX2JpbmFyeSgmbmV3dXNlci0+YXV0aEtleSwgJnJldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld3VzZXItPmF1dGhLZXlMZW4sIDAsIGJ1ZikpIHsKLSAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImludmFsaWQga2V5IHZhbHVlIGFyZ3VtZW50IHRvIC1sIik7Ci0gICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChyZXQgIT0gbmV3dXNlci0+YXV0aEtleUxlbikgewotICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiaW1wcm9wZXIga2V5IGxlbmd0aCB0byAtbCIpOwotICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIG5ld3VzZXItPmF1dGhLZXlMZW4gPSByZXQyOwotICAgICAgICByZXQyID0gZ2VuZXJhdGVfa3VsKG5ld3VzZXItPmF1dGhQcm90b2NvbCwgbmV3dXNlci0+YXV0aFByb3RvY29sTGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3dXNlci0+ZW5naW5lSUQsIG5ld3VzZXItPmVuZ2luZUlETGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcktleSwgdXNlcktleUxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3VzZXItPmF1dGhLZXksICZuZXd1c2VyLT5hdXRoS2V5TGVuKTsKLSAgICAgICAgaWYgKHJldDIgIT0gU05NUEVSUl9TVUNDRVNTKSB7Ci0gICAgICAgICAgICBjb25maWdfcGVycm9yKCJjb3VsZCBub3QgZ2VuZXJhdGUgbG9jYWxpemVkIGF1dGhlbnRpY2F0aW9uIGtleSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIoS3VsKSBmcm9tIHRoZSBtYXN0ZXIga2V5IChLdSkuIik7Ci0gICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKCFjcCkKLSAgICAgICAgZ290byBhZGQ7ICAgICAgICAgICAgICAgLyogbm8gcHJpdmFjeSB0eXBlICh3aGljaCBpcyBsZWdhbCkgKi8KLQotICAgIC8qCi0gICAgICogUkVBRDogUHJpdmFjeSBUeXBlIAotICAgICAqLwotICAgIHRlc3RjYXNlID0gMDsKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX0RFUwotICAgIGlmIChzdHJuY21wKGNwLCAiREVTIiwgMykgPT0gMCkgewotICAgICAgICBtZW1jcHkobmV3dXNlci0+cHJpdlByb3RvY29sLCB1c21ERVNQcml2UHJvdG9jb2wsCi0gICAgICAgICAgICAgICBzaXplb2YodXNtREVTUHJpdlByb3RvY29sKSk7Ci0gICAgICAgIHRlc3RjYXNlID0gMTsKLQkvKiBERVMgdXNlcyBhIDEyOCBiaXQga2V5LCA2NCBiaXRzIG9mIHdoaWNoIGlzIGEgc2FsdCAqLwotCXByaXZLZXlMZW4gPSAxNjsKLSAgICB9Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX0FFUwotICAgIGlmIChzdHJuY21wKGNwLCAiQUVTMTI4IiwgNikgPT0gMCB8fAotICAgICAgICAgICAgICAgc3RybmNtcChjcCwgIkFFUyIsIDMpID09IDApIHsKLSAgICAgICAgbWVtY3B5KG5ld3VzZXItPnByaXZQcm90b2NvbCwgdXNtQUVTUHJpdlByb3RvY29sLAotICAgICAgICAgICAgICAgc2l6ZW9mKHVzbUFFU1ByaXZQcm90b2NvbCkpOwotICAgICAgICB0ZXN0Y2FzZSA9IDE7Ci0JcHJpdktleUxlbiA9IDE2OwotICAgIH0KLSNlbmRpZgotICAgIGlmICh0ZXN0Y2FzZSA9PSAwKSB7Ci0gICAgICAgIGNvbmZpZ19wZXJyb3IoIlVua25vd24gcHJpdmFjeSBwcm90b2NvbCIpOwotICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY3AgPSBza2lwX3Rva2VuKGNwKTsKLSAgICAvKgotICAgICAqIFJFQUQ6IEVuY3J5cHRpb24gUGFzcyBQaHJhc2Ugb3Iga2V5Ci0gICAgICovCi0gICAgaWYgKCFjcCkgewotICAgICAgICAvKgotICAgICAgICAgKiBhc3N1bWUgdGhlIHNhbWUgYXMgdGhlIGF1dGhlbnRpY2F0aW9uIGtleSAKLSAgICAgICAgICovCi0gICAgICAgIG5ld3VzZXItPnByaXZLZXkgPSBuZXRzbm1wX21lbWR1cChuZXd1c2VyLT5hdXRoS2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3dXNlci0+YXV0aEtleUxlbik7Ci0gICAgICAgIG5ld3VzZXItPnByaXZLZXlMZW4gPSBuZXd1c2VyLT5hdXRoS2V5TGVuOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGNwID0gY29weV9ud29yZChjcCwgYnVmLCBzaXplb2YoYnVmKSk7Ci0gICAgICAgIAotICAgICAgICBpZiAoc3RyY21wKGJ1ZiwiLW0iKSA9PSAwKSB7Ci0gICAgICAgICAgICAvKiBhIG1hc3RlciBrZXkgaXMgc3BlY2lmaWVkICovCi0gICAgICAgICAgICBjcCA9IGNvcHlfbndvcmQoY3AsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwotICAgICAgICAgICAgcmV0ID0gc2l6ZW9mKHVzZXJLZXkpOwotICAgICAgICAgICAgdG1wcCA9IHVzZXJLZXk7Ci0gICAgICAgICAgICB1c2VyS2V5TGVuID0gMDsKLSAgICAgICAgICAgIGlmICghc25tcF9oZXhfdG9fYmluYXJ5KCZ0bXBwLCAmcmV0LCAmdXNlcktleUxlbiwgMCwgYnVmKSkgewotICAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImludmFsaWQga2V5IHZhbHVlIGFyZ3VtZW50IHRvIC1tIik7Ci0gICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGJ1ZiwiLWwiKSAhPSAwKSB7Ci0gICAgICAgICAgICAvKiBhIHBhc3N3b3JkIGlzIHNwZWNpZmllZCAqLwotICAgICAgICAgICAgdXNlcktleUxlbiA9IHNpemVvZih1c2VyS2V5KTsKLSAgICAgICAgICAgIHJldDIgPSBnZW5lcmF0ZV9LdShuZXd1c2VyLT5hdXRoUHJvdG9jb2wsIG5ld3VzZXItPmF1dGhQcm90b2NvbExlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgYnVmLCBzdHJsZW4oYnVmKSwgdXNlcktleSwgJnVzZXJLZXlMZW4pOwotICAgICAgICAgICAgaWYgKHJldDIgIT0gU05NUEVSUl9TVUNDRVNTKSB7Ci0gICAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiY291bGQgbm90IGdlbmVyYXRlIHRoZSBwcml2YWN5IGtleSBmcm9tIHRoZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3VwcGxpZWQgcGFzcyBwaHJhc2UuIik7Ci0gICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gICAgICAgIAotICAgICAgICAKLSAgICAgICAgLyoKLSAgICAgICAgICogQW5kIHR1cm4gaXQgaW50byBhIGxvY2FsaXplZCBrZXkgCi0gICAgICAgICAqLwotICAgICAgICByZXQyID0gc2NfZ2V0X3Byb3Blcmxlbmd0aChuZXd1c2VyLT5hdXRoUHJvdG9jb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3VzZXItPmF1dGhQcm90b2NvbExlbik7Ci0gICAgICAgIGlmIChyZXQyIDwgMCkgewotICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiY291bGQgbm90IGdldCBwcm9wZXIga2V5IGxlbmd0aCB0byB1c2UgZm9yIHRoZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJwcml2YWN5IGFsZ29yaXRobS4iKTsKLSAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbmV3dXNlci0+cHJpdktleSA9ICh1X2NoYXIgKikgbWFsbG9jKHJldDIpOwotCi0gICAgICAgIGlmIChzdHJjbXAoYnVmLCItbCIpID09IDApIHsKLSAgICAgICAgICAgIC8qIGEgbG9jYWwga2V5IGlzIGRpcmVjdGx5IHNwZWNpZmllZCAqLwotICAgICAgICAgICAgY3AgPSBjb3B5X253b3JkKGNwLCBidWYsIHNpemVvZihidWYpKTsKLSAgICAgICAgICAgIHJldCA9IHJldDI7Ci0gICAgICAgICAgICBuZXd1c2VyLT5wcml2S2V5TGVuID0gMDsKLSAgICAgICAgICAgIGlmICghc25tcF9oZXhfdG9fYmluYXJ5KCZuZXd1c2VyLT5wcml2S2V5LCAmcmV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld3VzZXItPnByaXZLZXlMZW4sIDAsIGJ1ZikpIHsKLSAgICAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJpbnZhbGlkIGtleSB2YWx1ZSBhcmd1bWVudCB0byAtbCIpOwotICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbmV3dXNlci0+cHJpdktleUxlbiA9IHJldDI7Ci0gICAgICAgICAgICByZXQyID0gZ2VuZXJhdGVfa3VsKG5ld3VzZXItPmF1dGhQcm90b2NvbCwgbmV3dXNlci0+YXV0aFByb3RvY29sTGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3VzZXItPmVuZ2luZUlELCBuZXd1c2VyLT5lbmdpbmVJRExlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyS2V5LCB1c2VyS2V5TGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3VzZXItPnByaXZLZXksICZuZXd1c2VyLT5wcml2S2V5TGVuKTsKLSAgICAgICAgICAgIGlmIChyZXQyICE9IFNOTVBFUlJfU1VDQ0VTUykgewotICAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImNvdWxkIG5vdCBnZW5lcmF0ZSBsb2NhbGl6ZWQgcHJpdmFjeSBrZXkgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihLdWwpIGZyb20gdGhlIG1hc3RlciBrZXkgKEt1KS4iKTsKLSAgICAgICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICgobmV3dXNlci0+cHJpdktleUxlbiA+PSBwcml2S2V5TGVuKSB8fCAocHJpdktleUxlbiA9PSAwKSl7Ci0gICAgICBuZXd1c2VyLT5wcml2S2V5TGVuID0gcHJpdktleUxlbjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAvKiBUaGUgcHJpdktleSBsZW5ndGggaXMgc21hbGxlciB0aGFuIHJlcXVpcmVkIGJ5IHByaXZQcm90b2NvbCAqLwotICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgYWRkOgotICAgIHVzbV9hZGRfdXNlcihuZXd1c2VyKTsKLSAgICBERUJVR01TR1RMKCgidXNtVXNlciIsICJjcmVhdGVkIGEgbmV3IHVzZXIgJXMgYXQgIiwgbmV3dXNlci0+c2VjTmFtZSkpOwotICAgIERFQlVHTVNHSEVYKCgidXNtVXNlciIsIG5ld3VzZXItPmVuZ2luZUlELCBuZXd1c2VyLT5lbmdpbmVJRExlbikpOwotICAgIERFQlVHTVNHKCgidXNtVXNlciIsICJcbiIpKTsKLX0KLQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiotby0qKioqKioKICAqIGVuZ2luZUJvb3RzX2NvbmYKICAqCkBAIC0xMTIwLDkgKzc0Myw3IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIFNlZSBpZiBhbHJlYWR5IHNldCBpZiBzbyBlcmFzZSAmIHJlbGVhc2UgaXQgCiAgICAgICAgICAqLwotICAgICAgICBpZiAoTlVMTCAhPSBlbmdpbmVJRE5pYykgewotICAgICAgICAgICAgU05NUF9GUkVFKGVuZ2luZUlETmljKTsKLSAgICAgICAgfQorICAgICAgICBTTk1QX0ZSRUUoZW5naW5lSUROaWMpOwogICAgICAgICBlbmdpbmVJRE5pYyA9ICh1X2NoYXIgKikgbWFsbG9jKHN0cmxlbihjcHRyKSArIDEpOwogICAgICAgICBpZiAoTlVMTCAhPSBlbmdpbmVJRE5pYykgewogICAgICAgICAgICAgc3RyY3B5KChjaGFyICopIGVuZ2luZUlETmljLCBjcHRyKTsKQEAgLTEyMjcsNiArODQ4LDggQEAKIC8qCiAgKiBtZXJlbHkgY2FsbCAKICAqLworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGdldF9lbmdpbmV0aW1lX2FsYXJtLCBuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9HRVRfRU5HSU5FVElNRV9BTEFSTQogdm9pZAogZ2V0X2VuZ2luZXRpbWVfYWxhcm0odW5zaWduZWQgaW50IHJlZ251bSwgdm9pZCAqY2xpZW50YXJncykKIHsKQEAgLTEyMzQsNiArODU3LDcgQEAKICAgICAgICB3cmFwcGluZyBvZiB0aGUgdGltZXMoKSBvdXRwdXQgKi8KICAgICBzbm1wdjNfbG9jYWxfc25tcEVuZ2luZVRpbWUoKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0dFVF9FTkdJTkVUSU1FX0FMQVJNICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLW8tKioqKioqCiAgKiBpbml0X3NubXB2MwpAQCAtMTI0OCwxOSArODcyLDcgQEAKIHZvaWQKIGluaXRfc25tcHYzKGNvbnN0IGNoYXIgKnR5cGUpCiB7Ci0jaWYgU05NUF9VU0VfVElNRVMKLSAgc3RydWN0IHRtcyBkdW1teTsKLQotICAvKiBmaXhtZTogLTEgaXMgZmF1bHQgY29kZS4uLiAqLwotICBzbm1wdjNzdGFydENsb2NrID0gdGltZXMoJmR1bW15KTsKLQotICAvKiByZW1lbWJlciBob3cgbWFueSB0aWNrcyBwZXIgc2Vjb25kIHRoZXJlIGFyZSwgc2luY2UgdGltZXMoKSByZXR1cm5zIHRoaXMgKi8KLQotICBjbG9ja3RpY2tzID0gc3lzY29uZihfU0NfQ0xLX1RDSyk7Ci0KLSNlbmRpZiAvKiBTTk1QX1VTRV9USU1FUyAqLwotCi0gICAgZ2V0dGltZW9mZGF5KCZzbm1wdjNzdGFydHRpbWUsIE5VTEwpOworICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmc25tcHYzc3RhcnR0aW1lKTsKIAogICAgIGlmICghdHlwZSkKICAgICAgICAgdHlwZSA9ICJfX3NubXBhcHBfXyI7CkBAIC0xMjgyLDEzICs4OTQsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcHYzX3N0b3JlLCAodm9pZCAqKSBzdHJkdXAodHlwZSkpOwogCiAgICAgLyoKLSAgICAgKiBGcmVlIHN0dWZmIGF0IHNodXRkb3duIHRpbWUKLSAgICAgKi8KLSAgICBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfQ0FMTEJBQ0tfU0hVVERPV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlX2VuZ2luZXRpbWVfb25fc2h1dGRvd24sIE5VTEwpOwotCi0gICAgLyoKICAgICAgKiBpbml0aWFsaXplIHN1Ym1vZHVsZXMgCiAgICAgICovCiAgICAgLyoKQEAgLTEzNDgsMzAgKzk1Myw5IEBACiAgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXAiLCAiZGVmVmVyc2lvbiIsIHZlcnNpb25fY29uZiwgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMXwyY3wzIik7CiAKLSAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcCIsICJkZWZBdXRoVHlwZSIsIHNubXB2M19hdXRodHlwZV9jb25mLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICJNRDV8U0hBIik7Ci0gICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXAiLCAiZGVmUHJpdlR5cGUiLCBzbm1wdjNfcHJpdnR5cGVfY29uZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotI2lmZGVmIEhBVkVfQUVTCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRFU3xBRVMiKTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRFUyAoQUVTIHN1cHBvcnQgbm90IGF2YWlsYWJsZSkiKTsKLSNlbmRpZgogICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzbm1wIiwgImRlZlNlY3VyaXR5TGV2ZWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXB2M19zZWNMZXZlbF9jb25mLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub0F1dGhOb1ByaXZ8YXV0aE5vUHJpdnxhdXRoUHJpdiIpOwotICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKHR5cGUsICJ1c2VyU2V0QXV0aFBhc3MiLCB1c21fc2V0X3Bhc3N3b3JkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOwotICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKHR5cGUsICJ1c2VyU2V0UHJpdlBhc3MiLCB1c21fc2V0X3Bhc3N3b3JkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOwotICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKHR5cGUsICJ1c2VyU2V0QXV0aEtleSIsIHVzbV9zZXRfcGFzc3dvcmQsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIodHlwZSwgInVzZXJTZXRQcml2S2V5IiwgdXNtX3NldF9wYXNzd29yZCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcih0eXBlLCAidXNlclNldEF1dGhMb2NhbEtleSIsIHVzbV9zZXRfcGFzc3dvcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7Ci0gICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIodHlwZSwgInVzZXJTZXRQcml2TG9jYWxLZXkiLCB1c21fc2V0X3Bhc3N3b3JkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOwogfQogCiAvKgpAQCAtMTQwNiwxMiArOTkwLDE0IEBACiAgICAgICAgIGVuZ2luZUJvb3RzID0gMTsKICAgICB9CiAKKyNpZmRlZiBORVRTTk1QX1NFQ01PRF9VU00KICAgICAvKgotICAgICAqIHNldCBvdXIgbG9jYWwgZW5naW5lVGltZSBpbiB0aGUgTENEIHRpbWluZyBjYWNoZSAKKyAgICAgKiBmb3IgVVNNIHNldCBvdXIgbG9jYWwgZW5naW5lVGltZSBpbiB0aGUgTENEIHRpbWluZyBjYWNoZSAKICAgICAgKi8KICAgICBzZXRfZW5naW5ldGltZShjX2VuZ2luZUlELCBlbmdpbmVJRExlbiwKICAgICAgICAgICAgICAgICAgICBzbm1wdjNfbG9jYWxfc25tcEVuZ2luZUJvb3RzKCksCiAgICAgICAgICAgICAgICAgICAgc25tcHYzX2xvY2FsX3NubXBFbmdpbmVUaW1lKCksIFRSVUUpOworI2VuZGlmIC8qIE5FVFNOTVBfU0VDTU9EX1VTTSAqLwogCiAgICAgU05NUF9GUkVFKGNfZW5naW5lSUQpOwogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CkBAIC0xNTI1LDEwICsxMTExLDcgQEAKICAgICBpZiAoIWRlc3QgfHwgIWRlc3RsZW4pCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKCpkZXN0KSB7Ci0gICAgICAgIFNOTVBfRlJFRSgqZGVzdCk7Ci0gICAgICAgICpkZXN0ID0gTlVMTDsKLSAgICB9CisgICAgU05NUF9GUkVFKCpkZXN0KTsKICAgICAqZGVzdGxlbiA9IDA7CiAKICAgICBpZiAoc3JjbGVuICYmIHNyYykgewpAQCAtMTU3NiwzOCArMTE1OSwzMyBAQAogCiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVuZCBzbm1wdjNfZ2VuZXJhdGVfZW5naW5lSUQoKSAqLwogCi0vKgotICogc25tcHYzX2xvY2FsX3NubXBFbmdpbmVUaW1lKCk6IHJldHVybiB0aGUgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgdGhlCi0gKiBzbm1wdjMgZW5naW5lIGxhc3QgaW5jcmVtZW50ZWQgZW5naW5lX2Jvb3RzIAorLyoqCisgKiBSZXR1cm4gdGhlIHZhbHVlIG9mIHNubXBFbmdpbmVUaW1lLiBBY2NvcmRpbmcgdG8gUkZDIDM0MTQgc25tcEVuZ2luZVRpbWUKKyAqIGlzIGEgMzEtYml0IGNvdW50ZXIuIGVuZ2luZUJvb3RzIG11c3QgYmUgaW5jcmVtZW50ZWQgZXZlcnkgdGltZSB0aGF0CisgKiBjb3VudGVyIHdyYXBzIGFyb3VuZC4KKyAqCisgKiBAc2VlIFNlZSBhbHNvIDxhIGhyZWY9Imh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM0MTQiPlJGQyAzNDE0PC9hPi4KKyAqCisgKiBAbm90ZSBJdCBpcyBhc3N1bWVkIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgbGVhc3Qgb25jZSBldmVyeQorICogICAyKiozMSBzZWNvbmRzLgogICovCiB1X2xvbmcKIHNubXB2M19sb2NhbF9zbm1wRW5naW5lVGltZSh2b2lkKQogewotI2lmZGVmIFNOTVBfVVNFX1RJTUVTCi0gIHN0cnVjdCB0bXMgZHVtbXk7Ci0gIGNsb2NrX3Qgbm93ID0gdGltZXMoJmR1bW15KTsKLSAgLyogZml4bWU6IC0xIGlzIGZhdWx0IGNvZGUuLi4gKi8KLSAgdW5zaWduZWQgaW50IHJlc3VsdDsKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcKKyAgICBuZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjYWxjdWxhdGVfc2VjdGltZV9kaWZmKQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9DSEVDS0lORyAqLwogCi0gIGlmIChub3cgPCBzbm1wdjNzdGFydENsb2NrKSB7Ci0gICAgICByZXN1bHQgPSBVSU5UX01BWCAtIChzbm1wdjNzdGFydENsb2NrIC0gbm93KTsKLSAgfSBlbHNlIHsKLSAgICAgIHJlc3VsdCA9IG5vdyAtIHNubXB2M3N0YXJ0Q2xvY2s7Ci0gIH0KLSAgaWYgKHJlc3VsdCA8IGxhc3RjYWxsdGltZSkgewotICAgICAgLyogd3JhcHBlZCAqLwotICAgICAgd3JhcGNvdW50ZXIrKzsKLSAgfQotICBsYXN0Y2FsbHRpbWUgPSByZXN1bHQ7Ci0gIHJlc3VsdCA9ICAoVUlOVF9NQVgvY2xvY2t0aWNrcykqd3JhcGNvdW50ZXIgKyByZXN1bHQvY2xvY2t0aWNrczsKLQotICByZXR1cm4gcmVzdWx0OwotI2Vsc2UgLyogIVNOTVBfVVNFX1RJTUVTICovCisgICAgc3RhdGljIHVpbnQzMl90IGxhc3RfZW5naW5lVGltZTsKICAgICBzdHJ1Y3QgdGltZXZhbCAgbm93OworICAgIHVpbnQzMl90IGVuZ2luZVRpbWU7CiAKLSAgICBnZXR0aW1lb2ZkYXkoJm5vdywgTlVMTCk7Ci0gICAgcmV0dXJuIGNhbGN1bGF0ZV9zZWN0aW1lX2RpZmYoJm5vdywgJnNubXB2M3N0YXJ0dGltZSk7Ci0jZW5kaWYgLyogSEFWRV9TWVNfVElNRVNfSCAqLworICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmbm93KTsKKyAgICBlbmdpbmVUaW1lID0gY2FsY3VsYXRlX3NlY3RpbWVfZGlmZigmbm93LCAmc25tcHYzc3RhcnR0aW1lKSAmIDB4N2ZmZmZmZmZMOworICAgIGlmIChlbmdpbmVUaW1lIDwgbGFzdF9lbmdpbmVUaW1lKQorICAgICAgICBlbmdpbmVCb290cysrOworICAgIGxhc3RfZW5naW5lVGltZSA9IGVuZ2luZVRpbWU7CisgICAgcmV0dXJuIGVuZ2luZVRpbWU7CiB9CiAKIApAQCAtMTY3OSwxOCArMTI1NywxNyBAQAogI2VuZGlmCiAKICNpZmRlZiBORVRTTk1QX0VOQUJMRV9URVNUSU5HX0NPREUKLS8qCi0gKiBzbm1wdjNfc2V0X2VuZ2luZUJvb3RzQW5kVGltZSgpOiB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGV4aXN0LiAgR28gYXdheS4gCi0gKi8KLS8qCi0gKiBJdCBjZXJ0YWlubHkgc2hvdWxkIG5ldmVyIGJlIHVzZWQsIHVubGVzcyBpbiBhIHRlc3Rpbmcgc2NlbmVybywKLSAqIHdoaWNoIGlzIHdoeSBpdCB3YXMgY3JlYXRlZCAKKy8qKgorICogU2V0IFNOTVB2MyBlbmdpbmVCb290cyBhbmQgc3RhcnQgdGltZS4KKyAqCisgKiBAbm90ZSBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGV4aXN0LiBHbyBhd2F5LiBJdCBjZXJ0YWlubHkgc2hvdWxkIG5ldmVyIGJlCisgKiAgIHVzZWQsIHVubGVzcyBpbiBhIHRlc3Rpbmcgc2NlbmFyaW8sIHdoaWNoIGlzIHdoeSBpdCB3YXMgY3JlYXRlZAogICovCiB2b2lkCiBzbm1wdjNfc2V0X2VuZ2luZUJvb3RzQW5kVGltZShpbnQgYm9vdHMsIGludCB0dGltZSkKIHsKICAgICBlbmdpbmVCb290cyA9IGJvb3RzOwotICAgIGdldHRpbWVvZmRheSgmc25tcHYzc3RhcnR0aW1lLCBOVUxMKTsKKyAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnNubXB2M3N0YXJ0dGltZSk7CiAgICAgc25tcHYzc3RhcnR0aW1lLnR2X3NlYyAtPSB0dGltZTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zdHJ0b3VsbC5jIGIvc25tcGxpYi9zdHJ0b3VsbC5jCmluZGV4IDZjOThmYzQuLjllZTUzYjQgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc3RydG91bGwuYworKysgYi9zbm1wbGliL3N0cnRvdWxsLmMKQEAgLTIwLDYgKzIwLDggQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaWZuZGVmIEhBVkVfU1RSVE9VTEwKKwogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KICNpbmNsdWRlIDxsaW1pdHMuaD4KQEAgLTE1NiwzICsxNTgsNSBAQAogICAgICAgICAqZW5kcHRyID0gKGNoYXIgKikgbnB0cjsKICAgICByZXR1cm4gMDsKIH0KKworI2VuZGlmIC8qIEhBVkVfU1RSVE9VTEwgKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvc3lzdGVtLmMgYi9zbm1wbGliL3N5c3RlbS5jCmluZGV4IDQyNTIyYzYuLmE4MmVkY2QgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc3lzdGVtLmMKKysrIGIvc25tcGxpYi9zeXN0ZW0uYwpAQCAtNDIsNiArNDIsNyBAQAogICogU3lzdGVtIGRlcGVuZGVudCByb3V0aW5lcyBnbyBoZXJlCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KICNpbmNsdWRlIDxlcnJuby5oPgpAQCAtMTYyLDYgKzE2MywxOSBAQAogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2VuZGlmCiAKKyNpZiBIQVZFX0FSUEFfSU5FVF9ICisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisjZW5kaWYKKworI2lmZGVmIEROU1NFQ19MT0NBTF9WQUxJREFUSU9OCisjaWYgMSAvKkhBVkVfQVJQQV9OQU1FU0VSX0gqLworI2luY2x1ZGUgPGFycGEvbmFtZXNlci5oPgorI2VuZGlmCisjaW5jbHVkZSA8dmFsaWRhdG9yL3ZhbGlkYXRvci5oPgorLyogTmV0U05NUCBhbmQgRE5TU0VDLVRvb2xzIGJvdGggZGVmaW5lIEZSRUUuIFdlJ2xsIG5vdCB1c2UgZWl0aGVyIGhlcmUuICovCisjdW5kZWYgRlJFRQorI2VuZGlmCisKICNpbmNsdWRlIDxuZXQtc25tcC90eXBlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL291dHB1dF9hcGkuaD4KICNpbmNsdWRlIDxuZXQtc25tcC91dGlsaXRpZXMuaD4KQEAgLTE3MCw2ICsxODQsMTYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oPiAvKiBmb3IgZ2V0X3RlbXBfZmlsZV9wYXR0ZXJuKCkgKi8KIAorI2luY2x1ZGUgImluZXRfbnRvcC5oIgorCisvKiBOZXRTTk1QIGFuZCBETlNTRUMtVG9vbHMgYm90aCBkZWZpbmUgRlJFRS4gV2UnbGwgbm90IHVzZSBlaXRoZXIgaGVyZS4gKi8KKyN1bmRlZiBGUkVFCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzeXN0ZW1fYWxsLCBsaWJuZXRzbm1wKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodXNlcl9pbmZvcm1hdGlvbiwgc3lzdGVtX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjYWxjdWxhdGVfc2VjdGltZV9kaWZmLCBzeXN0ZW1fYWxsKQorCiAjaWZuZGVmIElGRl9MT09QQkFDSwogIwlkZWZpbmUgSUZGX0xPT1BCQUNLIDAKICNlbmRpZgpAQCAtMTgwLDYgKzIwNCwxMCBAQAogIyBkZWZpbmUgTE9PUEJBQ0sgICAgMHg3ZjAwMDAwMQogI2VuZGlmCiAKKyNpZm5kZWYgRUFJX0ZBSUwKKyMgZGVmaW5lIEVBSV9GQUlMICAgIC00ICAgIC8qIE5vbi1yZWNvdmVyYWJsZSBmYWlsdXJlIGluIG5hbWUgcmVzLiAgKi8KKyNlbmRpZgorCiAjaWYgZGVmaW5lZChIQVZFX0ZPUkspCiBzdGF0aWMgdm9pZAogX2RhZW1vbl9wcmVwKGludCBzdGRlcnJfbG9nKQpAQCAtNTY0LDE0ICs1OTIsMTYgQEAKICAgICBzaXplX3QgICAgICAgICAgbGVuOwogI2VsaWYgZGVmaW5lZChORVRTTk1QX0NBTl9VU0VfTkxJU1QpCiAgICAgaW50ICAgICAgICAgICAgIGttZW07Ci0gICAgc3RhdGljIHN0cnVjdCBubGlzdCBubFtdID0gewogI2lmICFkZWZpbmVkKGhwdXgpCi0gICAgICAgIHsoY2hhciAqKSAiX2Jvb3R0aW1lIn0sCisgICAgc3RhdGljIGNoYXIgYm9vdHRpbWVfbmFtZVtdID0gIl9ib290dGltZSI7CiAjZWxzZQotICAgICAgICB7KGNoYXIgKikgImJvb3R0aW1lIn0sCisgICAgc3RhdGljIGNoYXIgYm9vdHRpbWVfbmFtZVtdID0gImJvb3R0aW1lIjsKICNlbmRpZgotICAgICAgICB7KGNoYXIgKikgIiJ9Ci0gICAgfTsKKyAgICBzdGF0aWMgY2hhciBlbXB0eV9uYW1lW10gPSAiIjsKKyAgICBzdHJ1Y3Qgbmxpc3QgbmxbMl0gPSB7IH07CisKKyAgICBubFswXS5uX25hbWUgPSBib290dGltZV9uYW1lOworICAgIG5sWzFdLm5fbmFtZSA9IGVtcHR5X25hbWU7CiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5FVFNOTVBfQ0FOX1VTRV9TWVNDVEwgKi8KICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaHB1eDEwIHx8IGhwdXggMTEgKi8KIApAQCAtNjI1LDEwICs2NTUsMTEgQEAKIGdldF91cHRpbWUodm9pZCkKIHsKICNpZiBkZWZpbmVkKGFpeDQpIHx8IGRlZmluZWQoYWl4NSkgfHwgZGVmaW5lZChhaXg2KSB8fCBkZWZpbmVkKGFpeDcpCisgICAgc3RhdGljIGNoYXIgbGJvbHRfbmFtZVtdID0gImxib2x0IjsKICAgICBzdHJ1Y3Qgbmxpc3Qgbmw7CiAgICAgaW50IGttZW07CiAgICAgdGltZV90IGxib2x0OwotICAgIG5sLm5fbmFtZSA9IChjaGFyICopICJsYm9sdCI7CisgICAgbmwubl9uYW1lID0gbGJvbHRfbmFtZTsKICAgICBpZihrbmxpc3QoJm5sLCAxLCBzaXplb2Yoc3RydWN0IG5saXN0KSkgIT0gMCkgcmV0dXJuKDApOwogICAgIGlmKG5sLm5fdHlwZSA9PSAwIHx8IG5sLm5fdmFsdWUgPT0gMCkgcmV0dXJuKDApOwogICAgIGlmKChrbWVtID0gb3BlbigiL2Rldi9tZW0iLCAwKSkgPCAwKSByZXR1cm4gMDsKQEAgLTY4NywxMCArNzE4LDI4IEBACiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICEgV0lOMzIgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCisjaWZkZWYgRE5TU0VDX0xPQ0FMX1ZBTElEQVRJT04KK3N0YXRpYyB2YWxfY29udGV4dF90ICpfdmFsX2NvbnRleHQgPSBOVUxMOworCitzdGF0aWMgdmFsX2NvbnRleHRfdCAqCituZXRzbm1wX3ZhbGlkYXRvcl9jb250ZXh0KHZvaWQpCit7CisgICAgaWYgKE5VTEwgPT0gX3ZhbF9jb250ZXh0KSB7CisgICAgICAgIGludCByYzsKKyAgICAgICAgY2hhciAqYXBwdHlwZSA9IG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0FQUFRZUEUpOworICAgICAgICBERUJVR01TR1RMKCgiZG5zOnNlYzpjb250ZXh0IiwgImNyZWF0aW5nIGRuc3NlYyBjb250ZXh0IGZvciAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgYXBwdHlwZSkpOworICAgICAgICByYyA9IHZhbF9jcmVhdGVfY29udGV4dChhcHB0eXBlLCAmX3ZhbF9jb250ZXh0KTsKKyAgICB9CisKKyAgICByZXR1cm4gX3ZhbF9jb250ZXh0OworfQorI2VuZGlmIC8qIEROU1NFQ19MT0NBTF9WQUxJREFUSU9OICovCisKIGludAogbmV0c25tcF9nZXRob3N0YnluYW1lX3Y0KGNvbnN0IGNoYXIqIG5hbWUsIGluX2FkZHJfdCAqYWRkcl9vdXQpCiB7Ci0KICNpZiBIQVZFX0dFVEFERFJJTkZPCiAgICAgc3RydWN0IGFkZHJpbmZvICphZGRycyA9IE5VTEw7CiAgICAgc3RydWN0IGFkZHJpbmZvIGhpbnQ7CkBAIC03MDIsMTcgKzc1MSwxMSBAQAogICAgIGhpbnQuYWlfc29ja3R5cGUgPSBTT0NLX0RHUkFNOwogICAgIGhpbnQuYWlfcHJvdG9jb2wgPSAwOwogCi0gICAgZXJyID0gZ2V0YWRkcmluZm8obmFtZSwgTlVMTCwgJmhpbnQsICZhZGRycyk7CisgICAgZXJyID0gbmV0c25tcF9nZXRhZGRyaW5mbyhuYW1lLCBOVUxMLCAmaGludCwgJmFkZHJzKTsKICAgICBpZiAoZXJyICE9IDApIHsKLSNpZiBIQVZFX0dBSV9TVFJFUlJPUgotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZ2V0YWRkcmluZm86ICVzICVzXG4iLCBuYW1lLAotICAgICAgICAgICAgICAgICBnYWlfc3RyZXJyb3IoZXJyKSk7Ci0jZWxzZQotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZ2V0YWRkcmluZm86ICVzIChlcnJvciAlZClcbiIsIG5hbWUsCi0gICAgICAgICAgICAgICAgIGVycik7Ci0jZW5kaWYKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKwogICAgIGlmIChhZGRycyAhPSBOVUxMKSB7CiAgICAgICAgIG1lbWNweShhZGRyX291dCwKICAgICAgICAgICAgICAgICYoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSBhZGRycy0+YWlfYWRkciktPnNpbl9hZGRyLApAQCAtNzI3LDcgKzc3MCw3IEBACiAjZWxpZiBIQVZFX0dFVEhPU1RCWU5BTUUKICAgICBzdHJ1Y3QgaG9zdGVudCAqaHAgPSBOVUxMOwogCi0gICAgaHAgPSBnZXRob3N0YnluYW1lKG5hbWUpOworICAgIGhwID0gbmV0c25tcF9nZXRob3N0YnluYW1lKG5hbWUpOwogICAgIGlmIChocCA9PSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJnZXRfdGhpc2FkZHIiLAogICAgICAgICAgICAgICAgICAgICAiaG9zdG5hbWUgKGNvdWxkbid0IHJlc29sdmUpXG4iKSk7CkBAIC03NjMsNiArODA2LDE5NiBAQAogI2VuZGlmCiB9CiAKK2ludAorbmV0c25tcF9nZXRhZGRyaW5mbyhjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzZXJ2aWNlLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYWRkcmluZm8gKmhpbnRzLCBzdHJ1Y3QgYWRkcmluZm8gKipyZXMpCit7CisjaWYgSEFWRV9HRVRBRERSSU5GTworICAgIHN0cnVjdCBhZGRyaW5mbyAqYWRkcnMgPSBOVUxMOworICAgIHN0cnVjdCBhZGRyaW5mbyBoaW50OworICAgIGludCAgICAgICAgICAgICBlcnI7CisjaWZkZWYgRE5TU0VDX0xPQ0FMX1ZBTElEQVRJT04KKyAgICB2YWxfc3RhdHVzX3QgICAgdmFsX3N0YXR1czsKKyNlbmRpZgorCisgICAgREVCVUdNU0dUTCgoImRuczpnZXRhZGRyaW5mbyIsICJsb29raW5nIHVwICIpKTsKKyAgICBpZiAobmFtZSkKKyAgICAgICAgREVCVUdNU0coKCJkbnM6Z2V0YWRkcmluZm8iLCAiXCIlc1wiIiwgbmFtZSkpOworICAgIGVsc2UKKyAgICAgICAgREVCVUdNU0coKCJkbnM6Z2V0YWRkcmluZm8iLCAiPE5VTEw+IikpOworCisgICAgaWYgKHNlcnZpY2UpCisJREVCVUdNU0coKCJkbnM6Z2V0YWRkcmluZm8iLCAiOlwiJXNcIiIsIHNlcnZpY2UpKTsKKworICAgIGlmIChoaW50cykKKwlERUJVR01TRygoImRuczpnZXRhZGRyaW5mbyIsICIgd2l0aCBoaW50ICh7IC4uLiB9KSIpKTsKKyAgICBlbHNlCisJREVCVUdNU0coKCJkbnM6Z2V0YWRkcmluZm8iLCAiIHdpdGggbm8gaGludCIpKTsKKworICAgIERFQlVHTVNHKCgiZG5zOmdldGFkZHJpbmZvIiwgIlxuIikpOworCisgICAgaWYgKE5VTEwgPT0gaGludHMpIHsKKyAgICAgICAgbWVtc2V0KCZoaW50LCAwLCBzaXplb2YgaGludCk7CisgICAgICAgIGhpbnQuYWlfZmxhZ3MgPSAwOworICAgICAgICBoaW50LmFpX2ZhbWlseSA9IFBGX0lORVQ7CisgICAgICAgIGhpbnQuYWlfc29ja3R5cGUgPSBTT0NLX0RHUkFNOworICAgICAgICBoaW50LmFpX3Byb3RvY29sID0gMDsKKyAgICAgICAgaGludHMgPSAmaGludDsKKyAgICB9IGVsc2UgeworICAgICAgICBtZW1jcHkoJmhpbnQsIGhpbnRzLCBzaXplb2YgaGludCk7CisgICAgfQorCisjaWZuZGVmIEROU1NFQ19MT0NBTF9WQUxJREFUSU9OCisgICAgZXJyID0gZ2V0YWRkcmluZm8obmFtZSwgTlVMTCwgJmhpbnQsICZhZGRycyk7CisjZWxzZSAvKiBETlNTRUNfTE9DQUxfVkFMSURBVElPTiAqLworICAgIGVyciA9IHZhbF9nZXRhZGRyaW5mbyhuZXRzbm1wX3ZhbGlkYXRvcl9jb250ZXh0KCksIG5hbWUsIE5VTEwsICZoaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRkcnMsICZ2YWxfc3RhdHVzKTsKKyAgICBERUJVR01TR1RMKCgiZG5zOnNlYzp2YWwiLCAiZXJyICVkLCB2YWxfc3RhdHVzICVkIC8gJXM7IHRydXN0ZWQ6ICVkXG4iLAorICAgICAgICAgICAgICAgIGVyciwgdmFsX3N0YXR1cywgcF92YWxfc3RhdHVzKHZhbF9zdGF0dXMpLAorICAgICAgICAgICAgICAgIHZhbF9pc3RydXN0ZWQodmFsX3N0YXR1cykpKTsKKyAgICBpZiAoISB2YWxfaXN0cnVzdGVkKHZhbF9zdGF0dXMpKSB7CisgICAgICAgIGludCByYzsKKyAgICAgICAgaWYgKChlcnIgIT0gMCkgJiYgVkFMX0dFVEFERFJJTkZPX0hBU19TVEFUVVMoZXJyKSkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsCisgICAgICAgICAgICAgICAgICAgICAiV0FSTklORzogVU5UUlVTVEVEIGVycm9yIGluIEROUyByZXNvbHV0aW9uIGZvciAlcyFcbiIsCisgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKKyAgICAgICAgICAgIHJjID0gRUFJX0ZBSUw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKKyAgICAgICAgICAgICAgICAgICAgICJUaGUgYXV0aGVudGljaXR5IG9mIEROUyByZXNwb25zZSBpcyBub3QgdHJ1c3RlZCAoJXMpXG4iLAorICAgICAgICAgICAgICAgICAgICAgcF92YWxfc3RhdHVzKHZhbF9zdGF0dXMpKTsKKyAgICAgICAgICAgIHJjID0gRUFJX05PTkFNRTsKKyAgICAgICAgfQorICAgICAgICAvKiogY29udGludWUgYW55d2F5cyBpZiBETlNTRUNfV0FSTl9PTkxZIGlzIHNldCAqLworICAgICAgICBpZiAoIW5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0ROU1NFQ19XQVJOX09OTFkpKQorICAgICAgICAgICAgcmV0dXJuIHJjOworICAgIH0KKworCisjZW5kaWYgLyogRE5TU0VDX0xPQ0FMX1ZBTElEQVRJT04gKi8KKyAgICAqcmVzID0gYWRkcnM7CisgICAgaWYgKCgwID09IGVycikgJiYgYWRkcnMgJiYgYWRkcnMtPmFpX2FkZHIpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImRuczpnZXRhZGRyaW5mbyIsICJhbnN3ZXIgeyBBRl9JTkVULCAlczolaHUgfVxuIiwKKyAgICAgICAgICAgICAgICAgICAgaW5ldF9udG9hKCgoc3RydWN0IHNvY2thZGRyX2luKilhZGRycy0+YWlfYWRkciktPnNpbl9hZGRyKSwKKyAgICAgICAgICAgICAgICAgICAgbnRvaHMoKChzdHJ1Y3Qgc29ja2FkZHJfaW4qKWFkZHJzLT5haV9hZGRyKS0+c2luX3BvcnQpKSk7CisgICAgfQorICAgIHJldHVybiBlcnI7CisjZWxzZQorICAgIE5FVFNOTVBfTE9HT05DRSgoTE9HX0VSUiwgImdldGFkZHJpbmZvIG5vdCBhdmFpbGFibGUiKSk7CisgICAgcmV0dXJuIEVBSV9GQUlMOworI2VuZGlmIC8qIGdldGFkZHJpbmZvICovCit9CisKK3N0cnVjdCBob3N0ZW50ICoKK25ldHNubXBfZ2V0aG9zdGJ5bmFtZShjb25zdCBjaGFyICpuYW1lKQoreworI2lmIEhBVkVfR0VUSE9TVEJZTkFNRQorI2lmZGVmIEROU1NFQ19MT0NBTF9WQUxJREFUSU9OCisgICAgdmFsX3N0YXR1c190IHZhbF9zdGF0dXM7CisjZW5kaWYKKyAgICBzdHJ1Y3QgaG9zdGVudCAqaHAgPSBOVUxMOworCisgICAgaWYgKE5VTEwgPT0gbmFtZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBERUJVR01TR1RMKCgiZG5zOmdldGhvc3RieW5hbWUiLCAibG9va2luZyB1cCAlc1xuIiwgbmFtZSkpOworCisjaWZkZWYgRE5TU0VDX0xPQ0FMX1ZBTElEQVRJT04KKyAgICBocCAgPSB2YWxfZ2V0aG9zdGJ5bmFtZShuZXRzbm1wX3ZhbGlkYXRvcl9jb250ZXh0KCksIG5hbWUsICZ2YWxfc3RhdHVzKTsKKyAgICBERUJVR01TR1RMKCgiZG5zOnNlYzp2YWwiLCAidmFsX3N0YXR1cyAlZCAvICVzOyB0cnVzdGVkOiAlZFxuIiwKKyAgICAgICAgICAgICAgICB2YWxfc3RhdHVzLCBwX3ZhbF9zdGF0dXModmFsX3N0YXR1cyksCisgICAgICAgICAgICAgICAgdmFsX2lzdHJ1c3RlZCh2YWxfc3RhdHVzKSkpOworICAgIGlmICghdmFsX2lzdHJ1c3RlZCh2YWxfc3RhdHVzKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKKyAgICAgICAgICAgICAgICAgIlRoZSBhdXRoZW50aWNpdHkgb2YgRE5TIHJlc3BvbnNlIGlzIG5vdCB0cnVzdGVkICglcylcbiIsCisgICAgICAgICAgICAgICAgIHBfdmFsX3N0YXR1cyh2YWxfc3RhdHVzKSk7CisgICAgICAgIC8qKiBjb250aW51ZSBhbnl3YXlzIGlmIEROU1NFQ19XQVJOX09OTFkgaXMgc2V0ICovCisgICAgICAgIGlmICghbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfRE5TU0VDX1dBUk5fT05MWSkpCisgICAgICAgICAgICBocCA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKHZhbF9kb2VzX25vdF9leGlzdCh2YWxfc3RhdHVzKSAmJiBocCkKKyAgICAgICAgaHAgPSBOVUxMOworI2Vsc2UKKyAgICBocCA9IGdldGhvc3RieW5hbWUobmFtZSk7CisjZW5kaWYKKyAgICBpZiAoaHAgPT0gTlVMTCkgeworICAgICAgICBERUJVR01TR1RMKCgiZG5zOmdldGhvc3RieW5hbWUiLAorICAgICAgICAgICAgICAgICAgICAiY291bGRuJ3QgcmVzb2x2ZSAlc1xuIiwgbmFtZSkpOworICAgIH0gZWxzZSBpZiAoaHAtPmhfYWRkcnR5cGUgIT0gQUZfSU5FVCkgeworICAgICAgICBERUJVR01TR1RMKCgiZG5zOmdldGhvc3RieW5hbWUiLAorICAgICAgICAgICAgICAgICAgICAid2FybmluZzogcmVzcG9uc2UgZm9yICVzIG5vdCBBRl9JTkVUIVxuIiwgbmFtZSkpOworICAgIH0gZWxzZSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJkbnM6Z2V0aG9zdGJ5bmFtZSIsCisgICAgICAgICAgICAgICAgICAgICIlcyByZXNvbHZlZCBva2F5XG4iLCBuYW1lKSk7CisgICAgfQorICAgIHJldHVybiBocDsKKyNlbHNlCisgICAgTkVUU05NUF9MT0dPTkNFKChMT0dfRVJSLCAiZ2V0aG9zdGJ5bmFtZSBub3QgYXZhaWxhYmxlIikpOworICAgIHJldHVybiBOVUxMOworI2VuZGlmIC8qIEhBVkVfR0VUSE9TVEJZTkFNRSAqLworfQorCisvKioKKyAqIExvb2sgdXAgdGhlIGhvc3QgbmFtZSB2aWEgRE5TLgorICoKKyAqIEBwYXJhbVtpbl0gYWRkciBQb2ludGVyIHRvIHRoZSBhZGRyZXNzIHRvIHJlc29sdmUuIFRoaXMgYXJndW1lbnQgcG9pbnRzIGUuZy4KKyAqICAgdG8gYSBzdHJ1Y3QgaW5fYWRkciBmb3IgQUZfSU5FVCBvciB0byBhIHN0cnVjdCBpbjZfYWRkciBmb3IgQUZfSU5FVDYuCisgKiBAcGFyYW1baW5dIGxlbiAgTGVuZ3RoIGluIGJ5dGVzIG9mICphZGRyLgorICogQHBhcmFtW2luXSB0eXBlIEFkZHJlc3MgZmFtaWx5LCBlLmcuIEFGX0lORVQgb3IgQUZfSU5FVDYuCisgKgorICogQHJldHVybiBQb2ludGVyIHRvIGEgaG9zdGVudCBzdHJ1Y3R1cmUgaWYgYWRkcmVzcyBsb29rdXAgc3VjY2VlZGVkIG9yIE5VTEwKKyAqICAgaWYgdGhlIGxvb2t1cCBmYWlsZWQuCisgKgorICogQHNlZSBTZWUgYWxzbyB0aGUgZ2V0aG9zdGJ5YWRkcigpIG1hbiBwYWdlLgorICovCitzdHJ1Y3QgaG9zdGVudCAqCituZXRzbm1wX2dldGhvc3RieWFkZHIoY29uc3Qgdm9pZCAqYWRkciwgc29ja2xlbl90IGxlbiwgaW50IHR5cGUpCit7CisjaWYgSEFWRV9HRVRIT1NUQllBRERSCisgICAgc3RydWN0IGhvc3RlbnQgKmhwID0gTlVMTDsKKyAgICBjaGFyIGJ1Zls2NF07CisKKyAgICBERUJVR01TR1RMKCgiZG5zOmdldGhvc3RieWFkZHIiLCAicmVzb2x2aW5nICVzXG4iLAorICAgICAgICAgICAgICAgIGluZXRfbnRvcCh0eXBlLCBhZGRyLCBidWYsIHNpemVvZihidWYpKSkpOworCisjaWZkZWYgRE5TU0VDX0xPQ0FMX1ZBTElEQVRJT04KKyAgICB2YWxfc3RhdHVzX3QgdmFsX3N0YXR1czsKKyAgICBocCA9IHZhbF9nZXRob3N0YnlhZGRyKG5ldHNubXBfdmFsaWRhdG9yX2NvbnRleHQoKSwgYWRkciwgbGVuLCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZhbF9zdGF0dXMpOworICAgIERFQlVHTVNHVEwoKCJkbnM6c2VjOnZhbCIsICJ2YWxfc3RhdHVzICVkIC8gJXM7IHRydXN0ZWQ6ICVkXG4iLAorICAgICAgICAgICAgICAgIHZhbF9zdGF0dXMsIHBfdmFsX3N0YXR1cyh2YWxfc3RhdHVzKSwKKyAgICAgICAgICAgICAgICB2YWxfaXN0cnVzdGVkKHZhbF9zdGF0dXMpKSk7CisgICAgaWYgKCF2YWxfaXN0cnVzdGVkKHZhbF9zdGF0dXMpKSB7CisgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLAorICAgICAgICAgICAgICAgICAiVGhlIGF1dGhlbnRpY2l0eSBvZiBETlMgcmVzcG9uc2UgaXMgbm90IHRydXN0ZWQgKCVzKVxuIiwKKyAgICAgICAgICAgICAgICAgcF92YWxfc3RhdHVzKHZhbF9zdGF0dXMpKTsKKyAgICAgICAgLyoqIGNvbnRpbnVlIGFueXdheXMgaWYgRE5TU0VDX1dBUk5fT05MWSBpcyBzZXQgKi8KKyAgICAgICAgaWYgKCFuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9ETlNTRUNfV0FSTl9PTkxZKSkKKyAgICAgICAgICAgIGhwID0gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAodmFsX2RvZXNfbm90X2V4aXN0KHZhbF9zdGF0dXMpICYmIGhwKQorICAgICAgICBocCA9IE5VTEw7CisjZWxzZQorICAgIGhwID0gZ2V0aG9zdGJ5YWRkcihhZGRyLCBsZW4sIHR5cGUpOworI2VuZGlmCisgICAgaWYgKGhwID09IE5VTEwpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImRuczpnZXRob3N0YnlhZGRyIiwgImNvdWxkbid0IHJlc29sdmUgYWRkclxuIikpOworICAgIH0gZWxzZSBpZiAoaHAtPmhfYWRkcnR5cGUgIT0gQUZfSU5FVCkgeworICAgICAgICBERUJVR01TR1RMKCgiZG5zOmdldGhvc3RieWFkZHIiLAorICAgICAgICAgICAgICAgICAgICAid2FybmluZzogcmVzcG9uc2UgZm9yIGFkZHIgbm90IEFGX0lORVQhXG4iKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImRuczpnZXRob3N0YnlhZGRyIiwgImFkZHIgcmVzb2x2ZWQgb2theVxuIikpOworICAgIH0KKyAgICByZXR1cm4gaHA7CisjZWxzZQorICAgIE5FVFNOTVBfTE9HT05DRSgoTE9HX0VSUiwgImdldGhvc3RieWFkZHIgbm90IGF2YWlsYWJsZSIpKTsKKyAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorfQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogI2lmbmRlZiBIQVZFX1NUUk5DQVNFQ01QCkBAIC04NTUsNDEgKzEwODgsMzIgQEAKIH0KICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSEFWRV9TRVRFTlYgKi8KIAotLyogcmV0dXJucyBjZW50aXNlY29uZHMgKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjYWxjdWxhdGVfdGltZV9kaWZmLCBuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DQUxDVUxBVEVfVElNRV9ESUZGCisvKioKKyAqIENvbXB1dGUgKCpub3cgLSAqdGhlbikgaW4gY2VudGlzZWNvbmRzLgorICovCiBpbnQKIGNhbGN1bGF0ZV90aW1lX2RpZmYoY29uc3Qgc3RydWN0IHRpbWV2YWwgKm5vdywgY29uc3Qgc3RydWN0IHRpbWV2YWwgKnRoZW4pCiB7Ci0gICAgc3RydWN0IHRpbWV2YWwgIHRtcCwgZGlmZjsKLSAgICBtZW1jcHkoJnRtcCwgbm93LCBzaXplb2Yoc3RydWN0IHRpbWV2YWwpKTsKLSAgICB0bXAudHZfc2VjLS07Ci0gICAgdG1wLnR2X3VzZWMgKz0gMTAwMDAwMEw7Ci0gICAgZGlmZi50dl9zZWMgPSB0bXAudHZfc2VjIC0gdGhlbi0+dHZfc2VjOwotICAgIGRpZmYudHZfdXNlYyA9IHRtcC50dl91c2VjIC0gdGhlbi0+dHZfdXNlYzsKLSAgICBpZiAoZGlmZi50dl91c2VjID4gMTAwMDAwMEwpIHsKLSAgICAgICAgZGlmZi50dl91c2VjIC09IDEwMDAwMDBMOwotICAgICAgICBkaWZmLnR2X3NlYysrOwotICAgIH0KLSAgICByZXR1cm4gKChkaWZmLnR2X3NlYyAqIDEwMCkgKyAoZGlmZi50dl91c2VjIC8gMTAwMDApKTsKLX0KKyAgICBzdHJ1Y3QgdGltZXZhbCAgZGlmZjsKIAotLyogcmV0dXJucyBkaWZmIGluIHJvdW5kZWQgc2Vjb25kcyAqLworICAgIE5FVFNOTVBfVElNRVJTVUIobm93LCB0aGVuLCAmZGlmZik7CisgICAgcmV0dXJuIChpbnQpKGRpZmYudHZfc2VjICogMTAwICsgZGlmZi50dl91c2VjIC8gMTAwMDApOworfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0FMQ1VMQVRFX1RJTUVfRElGRiAqLworCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0FMQ1VMQVRFX1NFQ1RJTUVfRElGRgorLyoqIENvbXB1dGUgcm91bmRlZCAoKm5vdyAtICp0aGVuKSBpbiBzZWNvbmRzLiAqLwogdV9pbnQKIGNhbGN1bGF0ZV9zZWN0aW1lX2RpZmYoY29uc3Qgc3RydWN0IHRpbWV2YWwgKm5vdywgY29uc3Qgc3RydWN0IHRpbWV2YWwgKnRoZW4pCiB7Ci0gICAgc3RydWN0IHRpbWV2YWwgIHRtcCwgZGlmZjsKLSAgICBtZW1jcHkoJnRtcCwgbm93LCBzaXplb2Yoc3RydWN0IHRpbWV2YWwpKTsKLSAgICB0bXAudHZfc2VjLS07Ci0gICAgdG1wLnR2X3VzZWMgKz0gMTAwMDAwMEw7Ci0gICAgZGlmZi50dl9zZWMgPSB0bXAudHZfc2VjIC0gdGhlbi0+dHZfc2VjOwotICAgIGRpZmYudHZfdXNlYyA9IHRtcC50dl91c2VjIC0gdGhlbi0+dHZfdXNlYzsKLSAgICBpZiAoZGlmZi50dl91c2VjID49IDEwMDAwMDBMKSB7Ci0gICAgICAgIGRpZmYudHZfdXNlYyAtPSAxMDAwMDAwTDsKLSAgICAgICAgZGlmZi50dl9zZWMrKzsKLSAgICB9Ci0gICAgaWYgKGRpZmYudHZfdXNlYyA+PSA1MDAwMDBMKQotICAgICAgICByZXR1cm4gZGlmZi50dl9zZWMgKyAxOwotICAgIHJldHVybiAgZGlmZi50dl9zZWM7CisgICAgc3RydWN0IHRpbWV2YWwgIGRpZmY7CisKKyAgICBORVRTTk1QX1RJTUVSU1VCKG5vdywgdGhlbiwgJmRpZmYpOworICAgIHJldHVybiBkaWZmLnR2X3NlYyArIChkaWZmLnR2X3VzZWMgPj0gNTAwMDAwTCk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DQUxDVUxBVEVfU0VDVElNRV9ESUZGICovCiAKICNpZm5kZWYgSEFWRV9TVFJDQVNFU1RSCiAvKgpAQCAtMTE0NSw2ICsxMzY5LDE3IEBACiAjZW5kaWYKIH0KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHN0cl90b191aWQsIHVzZXJfaW5mb3JtYXRpb24pCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RSX1RPX1VJRAorLyoqCisgKiBDb252ZXJ0IGEgdXNlciBuYW1lIG9yIG51bWJlciBpbnRvIG51bWVyaWMgZm9ybS4KKyAqCisgKiBAcGFyYW1baW5dIHVzZXJvcnVpZCBFaXRoZXIgYSBVbml4IHVzZXIgbmFtZSBvciB0aGUgQVNDSUkgcmVwcmVzZW50YXRpb24KKyAqICAgb2YgYSB1c2VyIG51bWJlci4KKyAqCisgKiBAcmV0dXJuIEVpdGhlciBhIHVzZXIgbnVtYmVyID4gMCBvciAwIGlmIHVzZXJvcnVpZCBpcyBub3QgYSB2YWxpZCB1c2VyCisgKiAgIG5hbWUsIG5vdCBhIHZhbGlkIHVzZXIgbnVtYmVyIG9yIHRoZSBuYW1lIG9mIHRoZSByb290IHVzZXIuCisgKi8KIGludCBuZXRzbm1wX3N0cl90b191aWQoY29uc3QgY2hhciAqdXNlcm9ydWlkKSB7CiAgICAgaW50IHVpZDsKICNpZiBIQVZFX0dFVFBXTkFNICYmIEhBVkVfUFdEX0gKQEAgLTExNTMsMzcgKzEzODgsNDkgQEAKIAogICAgIHVpZCA9IGF0b2kodXNlcm9ydWlkKTsKIAotICAgIGlmICggdWlkID09IDAgKSB7CisgICAgaWYgKHVpZCA9PSAwKSB7CiAjaWYgSEFWRV9HRVRQV05BTSAmJiBIQVZFX1BXRF9ICi0gICAgICAgIHB3ZCA9IGdldHB3bmFtKCB1c2Vyb3J1aWQgKTsKLSAgICAgICAgaWYgKHB3ZCkKLSAgICAgICAgICAgIHVpZCA9IHB3ZC0+cHdfdWlkOwotICAgICAgICBlbHNlCisgICAgICAgIHB3ZCA9IGdldHB3bmFtKHVzZXJvcnVpZCk7CisgICAgICAgIHVpZCA9IHB3ZCA/IHB3ZC0+cHdfdWlkIDogMDsKKyAgICAgICAgZW5kcHdlbnQoKTsKICNlbmRpZgorICAgICAgICBpZiAodWlkID09IDApCiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIkNhbid0IGlkZW50aWZ5IHVzZXIgKCVzKS5cbiIsIHVzZXJvcnVpZCk7CiAgICAgfQogICAgIHJldHVybiB1aWQ7CiAgICAgCiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVFJfVE9fVUlEICovCiAKLWludCBuZXRzbm1wX3N0cl90b19naWQoY29uc3QgY2hhciAqZ3JvdXBvcmdpZCkgeworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHN0cl90b19naWQsIHVzZXJfaW5mb3JtYXRpb24pCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RSX1RPX0dJRAorLyoqCisgKiBDb252ZXJ0IGEgZ3JvdXAgbmFtZSBvciBudW1iZXIgaW50byBudW1lcmljIGZvcm0uCisgKgorICogQHBhcmFtW2luXSBncm91cG9yZ2lkIEVpdGhlciBhIFVuaXggZ3JvdXAgbmFtZSBvciB0aGUgQVNDSUkgcmVwcmVzZW50YXRpb24KKyAqICAgb2YgYSBncm91cCBudW1iZXIuCisgKgorICogQHJldHVybiBFaXRoZXIgYSBncm91cCBudW1iZXIgPiAwIG9yIDAgaWYgZ3JvdXBvcmdpZCBpcyBub3QgYSB2YWxpZCBncm91cAorICogICBuYW1lLCBub3QgYSB2YWxpZCBncm91cCBudW1iZXIgb3IgdGhlIHJvb3QgZ3JvdXAuCisgKi8KK2ludCBuZXRzbm1wX3N0cl90b19naWQoY29uc3QgY2hhciAqZ3JvdXBvcmdpZCkKK3sKICAgICBpbnQgZ2lkOwotI2lmIEhBVkVfR0VUR1JOQU0gJiYgSEFWRV9HUlBfSAotICAgIHN0cnVjdCBncm91cCAgKmdycDsKLSNlbmRpZgogCiAgICAgZ2lkID0gYXRvaShncm91cG9yZ2lkKTsKIAotICAgIGlmICggZ2lkID09IDAgKSB7CisgICAgaWYgKGdpZCA9PSAwKSB7CiAjaWYgSEFWRV9HRVRHUk5BTSAmJiBIQVZFX0dSUF9ICi0gICAgICAgIGdycCA9IGdldGdybmFtKCBncm91cG9yZ2lkICk7Ci0gICAgICAgIGlmIChncnApCi0gICAgICAgICAgICBnaWQgPSBncnAtPmdyX2dpZDsKLSAgICAgICAgZWxzZQorICAgICAgICBzdHJ1Y3QgZ3JvdXAgICpncnA7CisKKyAgICAgICAgZ3JwID0gZ2V0Z3JuYW0oZ3JvdXBvcmdpZCk7CisgICAgICAgIGdpZCA9IGdycCA/IGdycC0+Z3JfZ2lkIDogMDsKKyAgICAgICAgZW5kZ3JlbnQoKTsKICNlbmRpZgotICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJDYW4ndCBpZGVudGlmeSBncm91cCAoJXMpLlxuIiwKLSAgICAgICAgICAgICAgICAgICAgIGdyb3Vwb3JnaWQpOworICAgICAgICBpZiAoZ2lkID09IDApCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIkNhbid0IGlkZW50aWZ5IGdyb3VwICglcykuXG4iLCBncm91cG9yZ2lkKTsKICAgICB9CiAKICAgICByZXR1cm4gZ2lkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RSX1RPX0dJRCAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi90ZXN0X2JpbmFyeV9hcnJheS5jIGIvc25tcGxpYi90ZXN0X2JpbmFyeV9hcnJheS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NGIxZjBlLi4wMDAwMDAwCi0tLSBhL3NubXBsaWIvdGVzdF9iaW5hcnlfYXJyYXkuYworKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0jaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+Ci0KLSNpZiBIQVZFX0lPX0gKLSNpbmNsdWRlIDxpby5oPgotI2VuZGlmCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpZiBIQVZFX1NURExJQl9ICi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX01BTExPQ19ICi0jaW5jbHVkZSA8bWFsbG9jLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBIQVZFX1NUUklOR19ICi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jZWxzZQotI2luY2x1ZGUgPHN0cmluZ3MuaD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC90eXBlcy5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0Lmg+Ci0KLSNkZWZpbmUgVEVTVF9TSVpFIDcKLQotdm9pZAotcHJpbnRfaW50KG5ldHNubXBfaW5kZXggKmksIHZvaWQgKnYpCi17Ci0gICAgcHJpbnRmKCJpdGVtICVwID0gJWxkXG4iLCBpLCBpLT5vaWRzWzBdKTsKLX0KLQotaW50Ci10ZXN0X2ludCh2b2lkKQotewotICAgIG9pZCBvMSA9IDE7Ci0gICAgb2lkIG8yID0gMjsKLSAgICBvaWQgbzMgPSA2OwotICAgIG9pZCBvNCA9IDg7Ci0gICAgb2lkIG81ID0gOTsKLSAgICBvaWQgb3ggPSA3OwotICAgIG9pZCBveSA9IDEwOwotICAgIG5ldHNubXBfaW5kZXggaTEsaTIsaTMsaTQsaTUsaXgsaXksICppcDsKLSAgICBuZXRzbm1wX2luZGV4ICphW1RFU1RfU0laRV0gPSB7ICZpMSwgJmkyLCAmaTMsICZpeCwgJmk0LCAmaTUsICZpeSB9OwotICAgIG5ldHNubXBfY29udGFpbmVyICpjID0gbmV0c25tcF9jb250YWluZXJfZ2V0X2JpbmFyeV9hcnJheSgpOwotICAgIGludCBpOwotCi0gICAgYy0+Y29tcGFyZSA9IG5ldHNubXBfY29tcGFyZV9uZXRzbm1wX2luZGV4OwotICAgIAotICAgIGkxLm9pZHMgPSAmbzE7Ci0gICAgaTIub2lkcyA9ICZvMjsKLSAgICBpMy5vaWRzID0gJm8zOwotICAgIGk0Lm9pZHMgPSAmbzQ7Ci0gICAgaTUub2lkcyA9ICZvNTsKLSAgICBpeC5vaWRzID0gJm94OwotICAgIGl5Lm9pZHMgPSAmb3k7Ci0gICAgaTEubGVuID0gaTIubGVuID0gaTMubGVuID0gaTQubGVuID0gaTUubGVuID0gaXgubGVuID0gaXkubGVuID0gMTsKLQotICAgIHByaW50ZigiQ3JlYXRpbmcgY29udGFpbmVyLi4uXG4iKTsKLQotICAgIHByaW50ZigiSW5zZXJ0aW5nIGRhdGEuLi5cbiIpOwotICAgIENPTlRBSU5FUl9JTlNFUlQoYywmaTQpOwotICAgIENPTlRBSU5FUl9JTlNFUlQoYywmaTIpOwotICAgIENPTlRBSU5FUl9JTlNFUlQoYywmaTMpOwotICAgIENPTlRBSU5FUl9JTlNFUlQoYywmaTEpOwotICAgIENPTlRBSU5FUl9JTlNFUlQoYywmaTUpOwotCi0gICAgcHJpbnRmKCJGb3IgZWFjaC4uLlxuIik7Ci0gICAgQ09OVEFJTkVSX0ZPUl9FQUNIKGMsIHByaW50X2ludCwgTlVMTCk7Ci0gICAgcHJpbnRmKCJEb25lLlxuIik7Ci0KLSAgICBwcmludGYoIlxuIik7Ci0gICAgaXAgPSBDT05UQUlORVJfRklSU1QoYyk7Ci0gICAgcHJpbnRmKCJGaW5kIGZpcnN0ID0gJXAgJWxkXG4iLGlwLCBpcC0+b2lkc1swXSk7Ci0gICAgd2hpbGUoIGlwICkgewotICAgICAgICBpcCA9IENPTlRBSU5FUl9ORVhUKGMsaXApOwotICAgICAgICBpZihpcCkKLSAgICAgICAgICAgIHByaW50ZigiRmluZCBuZXh0ID0gJXAgJWxkXG4iLGlwLCBpcC0+b2lkc1swXSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByaW50ZigiRmluZCBuZXh0ID0gJXNcbiIsaXApOwotICAgIH0KLQotICAgIGZvciggaT0wOyBpIDwgVEVTVF9TSVpFOyArK2kpIHsKLSAgICAgICAgcHJpbnRmKCJcbiIpOwotICAgICAgICBpcCA9IENPTlRBSU5FUl9GSU5EKGMsYVtpXSk7Ci0gICAgICAgIHByaW50ZigiRmluZCAlbGQgPSAlcCAlbGRcbiIsIGFbaV0tPm9pZHNbMF0sIGlwLCBpcCA/IGlwLT5vaWRzWzBdIDogMCk7Ci0gICAgICAgIGlwID0gQ09OVEFJTkVSX05FWFQoYyxhW2ldKTsKLSAgICAgICAgcHJpbnRmKCJOZXh0ICVsZCA9ICVwICVsZFxuIiwgYVtpXS0+b2lkc1swXSwgaXAsIGlwID8gaXAtPm9pZHNbMF0gOiAwKTsKLSAgICB9Ci0KLSAgICBwcmludGYoIkRvbmUuXG4iKTsKLQotICAgIHJldHVybiAwOwotfQotCi12b2lkCi1wcmludF9zdHJpbmcoY2hhciAqaSwgdm9pZCAqdikKLXsKLSAgICBwcmludGYoIml0ZW0gJXNcbiIsIGkpOwotfQotCi1pbnQKLW15X3N0cmNtcChjaGFyICpsaHMsIGNoYXIgKnJocykKLXsKLSAgICBpbnQgcmMgPSBzdHJjbXAobGhzLHJocyk7Ci0vKiAgICAgIHByaW50ZigiJXMgJWQgJXNcbiIsbGhzLCByYywgcmhzKTsgKi8KLSAgICByZXR1cm4gcmM7Ci19Ci0KLWludAotdGVzdF9zdHJpbmcoKQotewotICAgIGNvbnN0IGNoYXIgKm8xID0gInplYnJhIjsKLSAgICBjb25zdCBjaGFyICpvMiA9ICJiLXR3byI7Ci0gICAgY29uc3QgY2hhciAqbzMgPSAiYiI7Ci0gICAgY29uc3QgY2hhciAqbzQgPSAiY2VkYXIiOwotICAgIGNvbnN0IGNoYXIgKm81ID0gImFscGhhIjsKLSAgICBjb25zdCBjaGFyICpveCA9ICJkZXYiOwotICAgIGNvbnN0IGNoYXIgKm95ID0gImFhIjsKLSAgICBjb25zdCBjaGFyICogaXA7Ci0gICAgCi0gICAgY29uc3QgY2hhciAqYVtURVNUX1NJWkVdID0geyBvMSwgbzIsIG8zLCBveCwgbzQsIG81LCBveSB9OwotICAgIG5ldHNubXBfY29udGFpbmVyICpjID0gbmV0c25tcF9jb250YWluZXJfZ2V0X2JpbmFyeV9hcnJheSgpOwotICAgIGludCBpOwotCi0gICAgYy0+Y29tcGFyZSA9IG15X3N0cmNtcDsKLSAgICAKLSAgICBwcmludGYoIkNyZWF0aW5nIGNvbnRhaW5lci4uLlxuIik7Ci0KLSAgICBwcmludGYoIkluc2VydGluZyBkYXRhLi4uXG4iKTsKLSAgICBDT05UQUlORVJfSU5TRVJUKGMsbzQpOwotICAgIENPTlRBSU5FUl9JTlNFUlQoYyxvMik7Ci0gICAgQ09OVEFJTkVSX0lOU0VSVChjLG8zKTsKLSAgICBDT05UQUlORVJfSU5TRVJUKGMsbzEpOwotICAgIENPTlRBSU5FUl9JTlNFUlQoYyxvNSk7Ci0gICAgcHJpbnRmKCJcbiIpOwotICAgIHByaW50ZigiRm9yIGVhY2guLi5cbiIpOwotICAgIENPTlRBSU5FUl9GT1JfRUFDSChjLCBwcmludF9zdHJpbmcsIE5VTEwpOwotICAgIHByaW50ZigiRG9uZS5cbiIpOwotCi0gICAgcHJpbnRmKCJcbiIpOwotICAgIGlwID0gQ09OVEFJTkVSX0ZJUlNUKGMpOwotICAgIHByaW50ZigiRmluZCBmaXJzdCA9ICVzXG4iLGlwKTsKLSAgICB3aGlsZSggaXAgKSB7Ci0gICAgICAgIGlwID0gQ09OVEFJTkVSX05FWFQoYyxpcCk7Ci0gICAgICAgIHByaW50ZigiRmluZCBuZXh0ID0gJXNcbiIsaXApOwotICAgIH0KLQotICAgIGZvciggaT0wOyBpIDwgVEVTVF9TSVpFOyArK2kpIHsKLSAgICAgICAgcHJpbnRmKCJcbiIpOwotICAgICAgICBpcCA9IENPTlRBSU5FUl9GSU5EKGMsYVtpXSk7Ci0gICAgICAgIHByaW50ZigiRmluZCAlcyA9ICVzXG4iLCBhW2ldLCBpcCk7Ci0gICAgICAgIGlwID0gQ09OVEFJTkVSX05FWFQoYyxhW2ldKTsKLSAgICAgICAgcHJpbnRmKCJOZXh0ICVzID0gJXNcbiIsIGFbaV0sIGlwKTsKLSAgICB9Ci0KLSAgICBwcmludGYoIkRvbmUuXG4iKTsKLQotICAgIHJldHVybiAwOwotfQotCi1pbnQKLW1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQotewotCi0gICAgdGVzdF9pbnQoKTsKLSAgICB0ZXN0X3N0cmluZygpOwotfQpkaWZmIC0tZ2l0IGEvc25tcGxpYi90ZXh0X3V0aWxzLmMgYi9zbm1wbGliL3RleHRfdXRpbHMuYwppbmRleCA3MTQ4ZGNjLi4zMjU5NmJlIDEwMDY0NAotLS0gYS9zbm1wbGliL3RleHRfdXRpbHMuYworKysgYi9zbm1wbGliL3RleHRfdXRpbHMuYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtNDIsNyArNDMsMTQgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2ZpbGVfdXRpbHMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3RleHRfdXRpbHMuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRleHRfdXRpbHMsIGxpYm5ldHNubXApCiAKK25ldHNubXBfZmVhdHVyZV9wcm92aWRlKHRleHRfdXRpbHMpCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfVEVYVF9VVElMUworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZmlsZV91dGlscykKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9URVhUX1VUSUxTICovCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9URVhUX1VUSUxTCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAqIFByb3RvdHlwZXMKQEAgLTE0Nyw2ICsxNTUsOCBAQAogICAgIHJldHVybiBjOwogfQogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGV4dF90b2tlbl9jb250YWluZXJfZnJvbV9maWxlLCBuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9URVhUX1RPS0VOX0NPTlRBSU5FUl9GUk9NX0ZJTEUKIG5ldHNubXBfY29udGFpbmVyICoKIG5ldHNubXBfdGV4dF90b2tlbl9jb250YWluZXJfZnJvbV9maWxlKGNvbnN0IGNoYXIgKmZpbGUsIHVfaW50IGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXIgKmNpbiwgdm9pZCAqY29udGV4dCkKQEAgLTE5OSw2ICsyMDksNyBAQAogICAgIAogICAgIHJldHVybiBjOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEVYVF9UT0tFTl9DT05UQUlORVJfRlJPTV9GSUxFICovCiAKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTUxMCwzICs1MjEsNiBAQAogICAgIHJldHVybiBQTUxQX1JDX01FTU9SWV9VU0VEOwogfQogCisjZWxzZSAgLyogISBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RFWFRfVVRJTFMgKi8KK25ldHNubXBfZmVhdHVyZV91bnVzZWQodGV4dF91dGlscyk7CisjZW5kaWYgLyogISBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RFWFRfVVRJTFMgKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvdG9vbHMuYyBiL3NubXBsaWIvdG9vbHMuYwppbmRleCBmOTk1MWI5Li4yOWU1ZmVmIDEwMDY0NAotLS0gYS9zbm1wbGliL3Rvb2xzLmMKKysrIGIvc25tcGxpYi90b29scy5jCkBAIC0xNCw2ICsxNCw3IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxjdHlwZS5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC00OCw2ICs0OSw5IEBACiAjaWZkZWYgSEFWRV9BUlBBX0lORVRfSAogI2luY2x1ZGUgPGFycGEvaW5ldC5oPgogI2VuZGlmCisjaWZkZWYgSEFWRV9WQUxHUklORF9NRU1DSEVDS19ICisjaW5jbHVkZSA8dmFsZ3JpbmQvbWVtY2hlY2suaD4KKyNlbmRpZgogI2lmZGVmIGN5Z3dpbgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgpAQCAtNjgsNiArNzIsMjMgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L21pYi5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRvb2xzX2FsbCwgbGlibmV0c25tcCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG1lbW9yeV93cmFwcGVycywgdG9vbHNfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHZhbGdyaW5kLCB0b29sc19hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc3RyaW5nX3RpbWVfdG9fc2VjcywgdG9vbHNfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG5ldHNubXBfY2hlY2tfZGVmaW5lZG5lc3MsIHZhbGdyaW5kKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodWF0aW1lX3JlYWR5LCBuZXRzbm1wX3VudXNlZCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0aW1ldmFsX3R0aWNrcywgbmV0c25tcF91bnVzZWQpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihtZW1vcnlfc3RyZHVwLCBtZW1vcnlfd3JhcHBlcnMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobWVtb3J5X2NhbGxvYywgbWVtb3J5X3dyYXBwZXJzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG1lbW9yeV9tYWxsb2MsIG1lbW9yeV93cmFwcGVycykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihtZW1vcnlfcmVhbGxvYywgbWVtb3J5X3dyYXBwZXJzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG1lbW9yeV9mcmVlLCBtZW1vcnlfd3JhcHBlcnMpCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NRU1PUllfV1JBUFBFUlMKIC8qKgogICogVGhpcyBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgZm9yIHRoZSBzdHJkdXAgZnVuY3Rpb24uCiAgKgpAQCAtNzgsNiArOTksOCBAQAogewogICAgIHJldHVybiBzdHJkdXAocHRyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX01FTU9SWV9TVFJEVVAgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NRU1PUllfQ0FMTE9DCiAvKioKICAqIFRoaXMgZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGZvciB0aGUgY2FsbG9jIGZ1bmN0aW9uLgogICovCkBAIC04NSw3ICsxMDgsOCBAQAogewogICAgIHJldHVybiBjYWxsb2Mobm1lbWIsIHNpemUpOwogfQotCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NRU1PUllfQ0FMTE9DICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTUVNT1JZX01BTExPQwogLyoqCiAgKiBUaGlzIGZ1bmN0aW9uIGlzIGEgd3JhcHBlciBmb3IgdGhlIG1hbGxvYyBmdW5jdGlvbi4KICAqLwpAQCAtOTMsNyArMTE3LDggQEAKIHsKICAgICByZXR1cm4gbWFsbG9jKHNpemUpOwogfQotCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NRU1PUllfTUFMTE9DICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTUVNT1JZX1JFQUxMT0MKIC8qKgogICogVGhpcyBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgZm9yIHRoZSByZWFsbG9jIGZ1bmN0aW9uLgogICovCkBAIC0xMDEsNyArMTI2LDggQEAKIHsKICAgICByZXR1cm4gcmVhbGxvYyhwdHIsIHNpemUpOwogfQotCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NRU1PUllfUkVBTExPQyAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX01FTU9SWV9GUkVFCiAvKioKICAqIFRoaXMgZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGZvciB0aGUgZnJlZSBmdW5jdGlvbi4KICAqIEl0IGNhbGxzIGZyZWUgb25seSBpZiB0aGUgY2FsbGluZyBwYXJhbWV0ZXIgaGFzIGEgbm9uLXplcm8gdmFsdWUuCkBAIC0xMTEsNiArMTM3LDcgQEAKICAgICBpZiAocHRyKQogICAgICAgICBmcmVlKHB0cik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NRU1PUllfRlJFRSAqLwogCiAvKioKICAqIFRoaXMgZnVuY3Rpb24gaW5jcmVhc2UgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBwb2ludGVkIGF0IGJ5ICpidWYsIHdoaWNoIGlzCkBAIC0xODAsNiArMjA3LDkgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIGlmICghKmJ1ZikKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBzdHJjcHkoKGNoYXIgKikgKCpidWYgKyAqb3V0X2xlbiksIChjb25zdCBjaGFyICopIHMpOwogICAgICpvdXRfbGVuICs9IHN0cmxlbigoY2hhciAqKSAoKmJ1ZiArICpvdXRfbGVuKSk7CiAgICAgcmV0dXJuIDE7CkBAIC0yMDAsNiArMjMwLDcgQEAKIAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlbmQgZnJlZV96ZXJvKCkgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VTTV9TQ0FQSQogLyoqCiAgKiBSZXR1cm5zIHBvaW50ZXIgdG8gYWxsb2NhZWQgJiBzZXQgYnVmZmVyIG9uIHN1Y2Nlc3MsIHNpemUgY29udGFpbnMKICAqIG51bWJlciBvZiByYW5kb20gYnl0ZXMgZmlsbGVkLiAgYnVmIGlzIE5VTEwgYW5kICpzaXplIHNldCB0byBLTVQKQEAgLTIzMCw2ICsyNjEsNyBAQAogICAgIHJldHVybiBidWY7CiAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZW5kIG1hbGxvY19yYW5kb20oKSAqLworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVVNNX1NDQVBJICovCiAKIC8qKgogICogRHVwbGljYXRlcyBhIG1lbW9yeSBibG9jay4KQEAgLTI1Miw2ICsyODQsMzkgQEAKICAgICByZXR1cm4gdG87CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVuZCBuZXRzbm1wX21lbWR1cCgpICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ORVRTTk1QX0NIRUNLX0RFRklORURORVNTCisvKioKKyAqIFdoZW4gcnVubmluZyB1bmRlciBWYWxncmluZCwgY2hlY2sgd2hldGhlciBhbGwgYnl0ZXMgaW4gdGhlIHJhbmdlIFtwYWNrZXQsCisgKiBwYWNrZXQrbGVuZ3RoKSBhcmUgZGVmaW5lZC4gTGV0IFZhbGdyaW5kIHByaW50IGEgYmFja3RyYWNlIGlmIG9uZSBvciBtb3JlCisgKiBieXRlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgdmFsdWVzIGhhdmUgYmVlbiBmb3VuZC4gVGhpcyBmdW5jdGlvbiBjYW4gaGVscCB0bworICogZmluZCB0aGUgY2F1c2Ugb2YgdW5kZWZpbmVkIHZhbHVlIGVycm9ycyBpZiAtLXRyYWNrLW9yaWdpbnM9eWVzIGlzIG5vdAorICogc3VmZmljaWVudC4gRG9lcyBub3RoaW5nIHdoZW4gbm90IHJ1bm5pbmcgdW5kZXIgVmFsZ3JpbmQuCisgKgorICogTm90ZTogdGhpcyByZXF1aXJlcyBhIGZhaXJseSByZWNlbnQgdmFsZ3JpbmQuCisgKi8KK3ZvaWQKK25ldHNubXBfY2hlY2tfZGVmaW5lZG5lc3MoY29uc3Qgdm9pZCAqcGFja2V0LCBzaXplX3QgbGVuZ3RoKQoreworI2lmIGRlZmluZWQoX19WQUxHUklORF9NQUpPUl9fKSAmJiBkZWZpbmVkKF9fVkFMR1JJTkRfTUlOT1JfXykgICBcCisgICAgJiYgKF9fVkFMR1JJTkRfTUFKT1JfXyA+IDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfHwgKF9fVkFMR1JJTkRfTUFKT1JfXyA9PSAzICYmIF9fVkFMR1JJTkRfTUlOT1JfXyA+PSA2KSkKKworICAgIGlmIChSVU5OSU5HX09OX1ZBTEdSSU5EKSB7CisgICAgICAgIGludCBpOworICAgICAgICBjaGFyIHZiaXRzOworCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKFZBTEdSSU5EX0dFVF9WQklUUygoY29uc3QgY2hhciAqKXBhY2tldCArIGksICZ2Yml0cywgMSkgPT0gMQorICAgICAgICAgICAgICAgICYmIHZiaXRzKQorICAgICAgICAgICAgICAgIFZBTEdSSU5EX1BSSU5URl9CQUNLVFJBQ0UoIlVuZGVmaW5lZDogYnl0ZSAlZC8lZCIsIGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KWxlbmd0aCk7CisgICAgICAgIH0KKyAgICB9CisKKyNlbmRpZgorfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTkVUU05NUF9DSEVDS19ERUZJTkVETkVTUyAqLworCiAvKiogY29waWVzIGEgKHBvc3NpYmxlKSB1bnRlcm1pbmF0ZWQgc3RyaW5nIG9mIGEgZ2l2ZW4gbGVuZ3RoIGludG8gYQogICogIG5ldyBidWZmZXIgYW5kIG51bGwgdGVybWluYXRlcyBpdCBhcyB3ZWxsIChuZXcgYnVmZmVyIE1BWSBiZSBvbmUKICAqICBieXRlIGxvbmdlciB0byBhY2NvdW50IGZvciB0aGlzICovCkBAIC0zNzAsMTEgKzQzNSwxNCBAQAogaGV4X3RvX2JpbmFyeTIoY29uc3QgdV9jaGFyICogaW5wdXQsIHNpemVfdCBsZW4sIGNoYXIgKipvdXRwdXQpCiB7CiAgICAgdV9pbnQgICAgICAgICAgIG9sZW4gPSAobGVuIC8gMikgKyAobGVuICUgMik7Ci0gICAgY2hhciAgICAgICAgICAgKnMgPSAoY2hhciAqKSBjYWxsb2MoMSwgKG9sZW4pID8gb2xlbiA6IDEpLCAqb3AgPSBzOworICAgIGNoYXIgICAgICAgICAgICpzID0gY2FsbG9jKDEsIG9sZW4gPyBvbGVuIDogMSksICpvcCA9IHM7CiAgICAgY29uc3QgdV9jaGFyICAgKmlwID0gaW5wdXQ7CiAKIAogICAgICpvdXRwdXQgPSBOVUxMOworICAgIGlmICghcykKKyAgICAgICAgZ290byBoZXhfdG9fYmluYXJ5Ml9xdWl0OworCiAgICAgKm9wID0gMDsKICAgICBpZiAobGVuICUgMikgewogICAgICAgICBpZiAoIWlzeGRpZ2l0KCppcCkpCkBAIC0zODMsNyArNDUxLDcgQEAKICAgICAgICAgaXArKzsKICAgICB9CiAKLSAgICB3aGlsZSAoaXAgLSBpbnB1dCA8IChpbnQpIGxlbikgeworICAgIHdoaWxlIChpcCA8IGlucHV0ICsgbGVuKSB7CiAgICAgICAgIGlmICghaXN4ZGlnaXQoKmlwKSkKICAgICAgICAgICAgIGdvdG8gaGV4X3RvX2JpbmFyeTJfcXVpdDsKICAgICAgICAgKm9wID0gSEVYMlZBTCgqaXApIDw8IDQ7CkBAIC04MDYsOCArODc0LDExIEBACiAKIAogLyoqCi0gKiBjcmVhdGUgYSBuZXcgdGltZSBtYXJrZXIuCi0gKiBOT1RFOiBDYWxsZXIgbXVzdCBmcmVlIHRpbWUgbWFya2VyIHdoZW4gbm8gbG9uZ2VyIG5lZWRlZC4KKyAqIENyZWF0ZSBhIG5ldyByZWFsLXRpbWUgbWFya2VyLgorICoKKyAqIFxkZXByZWNhdGVkIFVzZSBuZXRzbm1wX3NldF9tb25vdG9uaWNfbWFya2VyKCkgaW5zdGVhZC4KKyAqCisgKiBAbm90ZSBDYWxsZXIgbXVzdCBmcmVlIHRpbWUgbWFya2VyIHdoZW4gbm8gbG9uZ2VyIG5lZWRlZC4KICAqLwogbWFya2VyX3QKIGF0aW1lX25ld01hcmtlcih2b2lkKQpAQCAtODE4LDcgKzg4OSw4IEBACiB9CiAKIC8qKgotICogc2V0IGEgdGltZSBtYXJrZXIuCisgKiBTZXQgYSB0aW1lIG1hcmtlciB0byB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgcmVhbC10aW1lIGNsb2NrLgorICogXGRlcHJlY2F0ZWQgVXNlIG5ldHNubXBfc2V0X21vbm90b25pY19tYXJrZXIoKSBpbnN0ZWFkLgogICovCiB2b2lkCiBhdGltZV9zZXRNYXJrZXIobWFya2VyX3QgcG0pCkBAIC04MjksOSArOTAxLDg4IEBACiAgICAgZ2V0dGltZW9mZGF5KChzdHJ1Y3QgdGltZXZhbCAqKSBwbSwgTlVMTCk7CiB9CiAKKy8qKgorICogUXVlcnkgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIG1vbm90b25pYyBjbG9jay4KKyAqCisgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgbW9ub3RvbmljIGNsb2NrIGlmIHN1Y2ggYSBjbG9jayBpcyBwcm92aWRlZCBieQorICogdGhlIG9wZXJhdGluZyBzeXN0ZW0gb3IgdGhlIHdhbGwgY2xvY2sgdGltZSBpZiBubyBzdWNoIGNsb2NrIGlzIHByb3ZpZGVkIGJ5CisgKiB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gQSBtb25vdG9uaWMgY2xvY2sgaXMgYSBjbG9jayB0aGF0IGlzIG5ldmVyIGFkanVzdGVkCisgKiBiYWNrd2FyZHMgYW5kIHRoYXQgcHJvY2VlZHMgYXQgdGhlIHNhbWUgcmF0ZSBhcyB3YWxsIGNsb2NrIHRpbWUuCisgKgorICogQHBhcmFtW291dF0gdHYgUG9pbnRlciB0byBtb25vdG9uaWMgY2xvY2sgdGltZS4KKyAqLwordm9pZCBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soc3RydWN0IHRpbWV2YWwqIHR2KQoreworI2lmIGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKSAmJiBkZWZpbmVkKENMT0NLX01PTk9UT05JQykKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7CisgICAgaW50IHJlczsKKworICAgIHJlcyA9IGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmdHMpOworICAgIGlmIChyZXMgPj0gMCkgeworICAgICAgICB0di0+dHZfc2VjID0gdHMudHZfc2VjOworICAgICAgICB0di0+dHZfdXNlYyA9IHRzLnR2X25zZWMgLyAxMDAwOworICAgIH0gZWxzZSB7CisgICAgICAgIGdldHRpbWVvZmRheSh0diwgTlVMTCk7CisgICAgfQorI2VsaWYgZGVmaW5lZChXSU4zMikKKyAgICAvKgorICAgICAqIFdpbmRvd3M6IHJldHVybiB0aWNrIGNvdW50LiBOb3RlOiB0aGUgcmF0ZSBhdCB3aGljaCB0aGUgdGljayBjb3VudAorICAgICAqIGluY3JlYXNlcyBpcyBub3QgYWRqdXN0ZWQgYnkgdGhlIHRpbWUgc3luY2hyb25pemF0aW9uIGFsZ29yaXRobSwgc28KKyAgICAgKiBleHBlY3QgYW4gZXJyb3Igb2YgPD0gMTAwIHBwbSBmb3IgdGhlIHJhdGUgYXQgd2hpY2ggdGhpcyBjbG9jaworICAgICAqIGluY3JlYXNlcy4KKyAgICAgKi8KKyAgICB0eXBlZGVmIFVMT05HTE9ORyAoV0lOQVBJICogcGZHZXRUaWNrQ291bnQ2NCkodm9pZCk7CisgICAgc3RhdGljIGludCBzX2luaXRpYWxpemVkOworICAgIHN0YXRpYyBwZkdldFRpY2tDb3VudDY0IHNfcGZHZXRUaWNrQ291bnQ2NDsKKyAgICB1aW50NjRfdCBub3c2NDsKKworICAgIGlmICghc19pbml0aWFsaXplZCkgeworICAgICAgICBITU9EVUxFIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZSgia2VybmVsMzIiKTsKKyAgICAgICAgc19wZkdldFRpY2tDb3VudDY0ID0KKyAgICAgICAgICAgIChwZkdldFRpY2tDb3VudDY0KSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsICJHZXRUaWNrQ291bnQ2NCIpOworICAgICAgICBzX2luaXRpYWxpemVkID0gVFJVRTsKKyAgICB9CisKKyAgICBpZiAoc19wZkdldFRpY2tDb3VudDY0KSB7CisgICAgICAgIC8qIFdpbmRvd3MgVmlzdGEsIFdpbmRvd3MgMjAwOCBvciBhbnkgbGF0ZXIgV2luZG93cyB2ZXJzaW9uICovCisgICAgICAgIG5vdzY0ID0gKCpzX3BmR2V0VGlja0NvdW50NjQpKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogV2luZG93cyBYUCwgV2luZG93cyAyMDAzIG9yIGFueSBlYXJsaWVyIFdpbmRvd3MgdmVyc2lvbiAqLworICAgICAgICBzdGF0aWMgdWludDMyX3Qgc193cmFwcywgc19sYXN0OworICAgICAgICB1aW50MzJfdCBub3c7CisKKyAgICAgICAgbm93ID0gR2V0VGlja0NvdW50KCk7CisgICAgICAgIGlmIChub3cgPCBzX2xhc3QpCisgICAgICAgICAgICBzX3dyYXBzKys7CisgICAgICAgIHNfbGFzdCA9IG5vdzsKKyAgICAgICAgbm93NjQgPSAoKHVpbnQ2NF90KXNfd3JhcHMgPDwgMzIpIHwgbm93OworICAgIH0KKyAgICB0di0+dHZfc2VjID0gbm93NjQgLyAxMDAwOworICAgIHR2LT50dl91c2VjID0gKG5vdzY0ICUgMTAwMCkgKiAxMDAwOworI2Vsc2UKKyAgICAvKiBBdCBsZWFzdCBGcmVlQlNEIDQgZG9lc24ndCBwcm92aWRlIG1vbm90b25pYyBjbG9jayBzdXBwb3J0LiAqLworI3dhcm5pbmcgTm90IHN1cmUgaG93IHRvIHF1ZXJ5IGEgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGNsb2NrIG9uIHlvdXIgc3lzdGVtLiBcCitUaW1lcnMgd2lsbCBub3Qgd29yayBjb3JyZWN0bHkgaWYgdGhlIHN5c3RlbSBjbG9jayBpcyBhZGp1c3RlZCBieSBlLmcuIG50cGQuCisgICAgZ2V0dGltZW9mZGF5KHR2LCBOVUxMKTsKKyNlbmRpZgorfQorCisvKioKKyAqIFNldCBhIHRpbWUgbWFya2VyIHRvIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBtb25vdG9uaWMgY2xvY2suCisgKi8KK3ZvaWQKK25ldHNubXBfc2V0X21vbm90b25pY19tYXJrZXIobWFya2VyX3QgKnBtKQoreworICAgIGlmICghKnBtKQorICAgICAgICAqcG0gPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCB0aW1ldmFsKSk7CisgICAgaWYgKCpwbSkKKyAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCpwbSk7Cit9CiAKIC8qKgogICogUmV0dXJucyB0aGUgZGlmZmVyZW5jZSAoaW4gbXNlYykgYmV0d2VlbiB0aGUgdHdvIG1hcmtlcnMKKyAqCisgKiBcZGVwcmVjYXRlZCBEb24ndCB1c2UgaW4gbmV3IGNvZGUuCiAgKi8KIGxvbmcKIGF0aW1lX2RpZmYoY29uc3RfbWFya2VyX3QgZmlyc3QsIGNvbnN0X21hcmtlcl90IHNlY29uZCkKQEAgLTg0MCwxMSArOTkxLDEzIEBACiAKICAgICBORVRTTk1QX1RJTUVSU1VCKChjb25zdCBzdHJ1Y3QgdGltZXZhbCAqKSBzZWNvbmQsIChjb25zdCBzdHJ1Y3QgdGltZXZhbCAqKSBmaXJzdCwgJmRpZmYpOwogCi0gICAgcmV0dXJuIChkaWZmLnR2X3NlYyAqIDEwMDAgKyBkaWZmLnR2X3VzZWMgLyAxMDAwKTsKKyAgICByZXR1cm4gKGxvbmcpKGRpZmYudHZfc2VjICogMTAwMCArIGRpZmYudHZfdXNlYyAvIDEwMDApOwogfQogCiAvKioKICAqIFJldHVybnMgdGhlIGRpZmZlcmVuY2UgKGluIHVfbG9uZyBtc2VjKSBiZXR3ZWVuIHRoZSB0d28gbWFya2VycworICoKKyAqIFxkZXByZWNhdGVkIERvbid0IHVzZSBpbiBuZXcgY29kZS4KICAqLwogdV9sb25nCiB1YXRpbWVfZGlmZihjb25zdF9tYXJrZXJfdCBmaXJzdCwgY29uc3RfbWFya2VyX3Qgc2Vjb25kKQpAQCAtODU5LDYgKzEwMTIsOCBAQAogLyoqCiAgKiBSZXR1cm5zIHRoZSBkaWZmZXJlbmNlIChpbiB1X2xvbmcgMS8xMDB0aCBzZWNzKSBiZXR3ZWVuIHRoZSB0d28gbWFya2VycwogICogKGZ1bmN0aW9uYWxseSB0aGlzIGlzIHdoYXQgc3lzVXBUaW1lIG5lZWRzKQorICoKKyAqIFxkZXByZWNhdGVkIERvbid0IHVzZSBpbiBuZXcgY29kZS4KICAqLwogdV9sb25nCiB1YXRpbWVfaGRpZmYoY29uc3RfbWFya2VyX3QgZmlyc3QsIGNvbnN0X21hcmtlcl90IHNlY29uZCkKQEAgLTg3Miw2ICsxMDI3LDggQEAKIC8qKgogICogVGVzdDogSGFzIChtYXJrZWQgdGltZSBwbHVzIGRlbHRhKSBleGNlZWRlZCBjdXJyZW50IHRpbWUgPwogICogUmV0dXJucyAwIGlmIHRlc3QgZmFpbHMgb3IgY2Fubm90IGJlIHRlc3RlZCAobm8gbWFya2VyKS4KKyAqCisgKiBcZGVwcmVjYXRlZCBVc2UgbmV0c25tcF9yZWFkeV9tb25vdG9uaWMoKSBpbnN0ZWFkLgogICovCiBpbnQKIGF0aW1lX3JlYWR5KGNvbnN0X21hcmtlcl90IHBtLCBpbnQgZGVsdGFfbXMpCkBAIC04OTEsOSArMTA0OCwxMiBAQAogICAgIHJldHVybiAxOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVUFUSU1FX1JFQURZCiAvKioKICAqIFRlc3Q6IEhhcyAobWFya2VkIHRpbWUgcGx1cyBkZWx0YSkgZXhjZWVkZWQgY3VycmVudCB0aW1lID8KICAqIFJldHVybnMgMCBpZiB0ZXN0IGZhaWxzIG9yIGNhbm5vdCBiZSB0ZXN0ZWQgKG5vIG1hcmtlcikuCisgKgorICogXGRlcHJlY2F0ZWQgVXNlIG5ldHNubXBfcmVhZHlfbW9ub3RvbmljKCkgaW5zdGVhZC4KICAqLwogaW50CiB1YXRpbWVfcmVhZHkoY29uc3RfbWFya2VyX3QgcG0sIHVuc2lnbmVkIGludCBkZWx0YV9tcykKQEAgLTkxMiw2ICsxMDcyLDMzIEBACiAKICAgICByZXR1cm4gMTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VBVElNRV9SRUFEWSAqLworCisvKioKKyAqIElzIHRoZSBjdXJyZW50IHRpbWUgcGFzdCAobWFya2VkIHRpbWUgcGx1cyBkZWx0YSkgPworICoKKyAqIEBwYXJhbVtpbl0gcG0gUG9pbnRlciB0byBtYXJrZWQgdGltZSBhcyBvYnRhaW5lZCB2aWEKKyAqICAgbmV0c25tcF9zZXRfbW9ub3RvbmljX21hcmtlcigpLgorICogQHBhcmFtW2luXSBkZWx0YV9tcyBUaW1lIGRlbHRhIGluIG1pbGxpc2Vjb25kcy4KKyAqCisgKiBAcmV0dXJuIHBtICE9IE5VTEwgJiYgbm93ID49ICgqcG0gKyBkZWx0YV9tcykKKyAqLworaW50CituZXRzbm1wX3JlYWR5X21vbm90b25pYyhjb25zdF9tYXJrZXJfdCBwbSwgaW50IGRlbHRhX21zKQoreworICAgIHN0cnVjdCB0aW1ldmFsICBub3csIGRpZmYsIGRlbHRhOworCisgICAgbmV0c25tcF9hc3NlcnQoZGVsdGFfbXMgPj0gMCk7CisgICAgaWYgKHBtKSB7CisgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmbm93KTsKKyAgICAgICAgTkVUU05NUF9USU1FUlNVQigmbm93LCAoY29uc3Qgc3RydWN0IHRpbWV2YWwgKikgcG0sICZkaWZmKTsKKyAgICAgICAgZGVsdGEudHZfc2VjID0gZGVsdGFfbXMgLyAxMDAwOworICAgICAgICBkZWx0YS50dl91c2VjID0gKGRlbHRhX21zICUgMTAwMCkgKiAxMDAwVUw7CisgICAgICAgIHJldHVybiB0aW1lcmNtcCgmZGlmZiwgJmRlbHRhLCA+PSkgPyBUUlVFIDogRkFMU0U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KK30KIAogCiAgICAgICAgIC8qCkBAIC05MTksNyArMTEwNiw5IEBACiAgICAgICAgICAqLwogCiAvKioKLSAqIFJldHVybiB0aGUgbnVtYmVyIG9mIHRpbWVUaWNrcyBzaW5jZSB0aGUgZ2l2ZW4gbWFya2VyIAorICogUmV0dXJuIHRoZSBudW1iZXIgb2YgdGltZVRpY2tzIHNpbmNlIHRoZSBnaXZlbiBtYXJrZXIKKyAqCisgKiBcZGVwcmVjYXRlZCBEb24ndCB1c2UgaW4gbmV3IGNvZGUuCiAgKi8KIGludAogbWFya2VyX3R0aWNrcyhjb25zdF9tYXJrZXJfdCBwbSkKQEAgLTkzMiwxMSArMTEyMSwxNiBAQAogICAgIHJldHVybiByZXMgLyAxMDsgICAgICAgICAgICAvKiBhdGltZV9kaWZmIHdvcmtzIGluIG1zZWMsIG5vdCBjc2VjICovCiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9USU1FVkFMX1RUSUNLUworLyoqCisgKiBcZGVwcmVjYXRlZCBEb24ndCB1c2UgaW4gbmV3IGNvZGUuCisgKi8KIGludAogdGltZXZhbF90dGlja3MoY29uc3Qgc3RydWN0IHRpbWV2YWwgKnR2KQogewogICAgIHJldHVybiBtYXJrZXJfdHRpY2tzKChjb25zdF9tYXJrZXJfdCkgdHYpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVElNRVZBTF9UVElDS1MgKi8KIAogLyoqCiAgKiBOb24gV2luZG93czogIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBkZXNpcmVkIGVudmlyb25tZW50IHZhcmlhYmxlICAKQEAgLTk5NSw4ICsxMTg5LDcgQEAKICAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgLyogSnVzdCBnZXQgdGhlIHNpemUgKi8KICAgICAgICAgICAgICZrZXlfdmFsdWVfc2l6ZSkgPT0gRVJST1JfU1VDQ0VTUykgewogCi0gICAgICAgIGlmIChrZXlfdmFsdWUpCi0gICAgICAgICAgU05NUF9GUkVFKGtleV92YWx1ZSk7CisgICAgICAgIFNOTVBfRlJFRShrZXlfdmFsdWUpOwogCiAgICAgICAgIC8qIEFsbG9jYXRlIG1lbW9yeSBuZWVkZWQgKzEgdG8gYWxsb3cgUmVnUXVlcnlWYWx1ZUV4QSB0byBOVUxMIHRlcm1pbmF0ZSB0aGUKICAgICAgICAgICogc3RyaW5nIGRhdGEgaW4gcmVnaXN0cnkgaXMgbWlzc2luZyBvbmUgKHdoaWNoIGlzIHVubGlrZWx5KS4KQEAgLTEwMzcsOCArMTIzMCw3IEBACiAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgIC8qIEp1c3QgZ2V0IHRoZSBzaXplICovCiAgICAgICAgICAgICAma2V5X3ZhbHVlX3NpemUpID09IEVSUk9SX1NVQ0NFU1MpIHsKIAotICAgICAgICBpZiAoa2V5X3ZhbHVlKQotICAgICAgICAgIFNOTVBfRlJFRShrZXlfdmFsdWUpOworICAgICAgICBTTk1QX0ZSRUUoa2V5X3ZhbHVlKTsKIAogICAgICAgICAvKiBBbGxvY2F0ZSBtZW1vcnkgbmVlZGVkICsxIHRvIGFsbG93IFJlZ1F1ZXJ5VmFsdWVFeEEgdG8gTlVMTCB0ZXJtaW5hdGUgdGhlCiAgICAgICAgICAqIHN0cmluZyBkYXRhIGluIHJlZ2lzdHJ5IGlzIG1pc3Npbmcgb25lICh3aGljaCBpcyB1bmxpa2VseSkuCkBAIC0xMTIwLDMgKzEzMTIsNjUgQEAKIAogICAgIHJldHVybiAwOwogfQorCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RSSU5HX1RJTUVfVE9fU0VDUworLyoqCisgKiBUYWtlcyBhIHRpbWUgc3RyaW5nIGxpa2UgNGggYW5kIGNvbnZlcnRzIGl0IHRvIHNlY29uZHMuCisgKiBUaGUgc3RyaW5nIHRpbWUgZ2l2ZW4gbWF5IGVuZCBpbiAncycgZm9yIHNlY29uZHMgKHRoZSBkZWZhdWx0CisgKiBhbnl3YXkgaWYgbm8gc3VmZml4IGlzIHNwZWNpZmllZCksCisgKiAnbScgZm9yIG1pbnV0ZXMsICdoJyBmb3IgaG91cnMsICdkJyBmb3IgZGF5cywgb3IgJ3cnIGZvciB3ZWVrcy4gIFRoZQorICogdXBwZXIgY2FzZSB2ZXJzaW9ucyBhcmUgYWxzbyBhY2NlcHRlZC4KKyAqCisgKiBAcGFyYW0gdGltZV9zdHJpbmcgVGhlIHRpbWUgc3RyaW5nIHRvIGNvbnZlcnQuCisgKgorICogQHJldHVybiBzZWNvbmRzIGNvbnZlcnRlZCBmcm9tIHRoZSBzdHJpbmcKKyAqIEByZXR1cm4gLTEgIDogb24gZmFpbHVyZQorICovCitpbnQKK25ldHNubXBfc3RyaW5nX3RpbWVfdG9fc2Vjcyhjb25zdCBjaGFyICp0aW1lX3N0cmluZykgeworICAgIGludCBzZWNzID0gLTE7CisgICAgaWYgKCF0aW1lX3N0cmluZyB8fCAhdGltZV9zdHJpbmdbMF0pCisgICAgICAgIHJldHVybiBzZWNzOworCisgICAgc2VjcyA9IGF0b2kodGltZV9zdHJpbmcpOworCisgICAgaWYgKGlzZGlnaXQoKHVuc2lnbmVkIGNoYXIpdGltZV9zdHJpbmdbc3RybGVuKHRpbWVfc3RyaW5nKS0xXSkpCisgICAgICAgIHJldHVybiBzZWNzOyAvKiBubyBsZXR0ZXIgc3BlY2lmaWVkLCBpdCdzIGFscmVhZHkgaW4gc2Vjb25kcyAqLworICAgIAorICAgIHN3aXRjaCAodGltZV9zdHJpbmdbc3RybGVuKHRpbWVfc3RyaW5nKS0xXSkgeworICAgIGNhc2UgJ3MnOgorICAgIGNhc2UgJ1MnOgorICAgICAgICAvKiBhbHJlYWR5IGluIHNlY29uZHMgKi8KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlICdtJzoKKyAgICBjYXNlICdNJzoKKyAgICAgICAgc2VjcyA9IHNlY3MgKiA2MDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlICdoJzoKKyAgICBjYXNlICdIJzoKKyAgICAgICAgc2VjcyA9IHNlY3MgKiA2MCAqIDYwOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgJ2QnOgorICAgIGNhc2UgJ0QnOgorICAgICAgICBzZWNzID0gc2VjcyAqIDYwICogNjAgKiAyNDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlICd3JzoKKyAgICBjYXNlICdXJzoKKyAgICAgICAgc2VjcyA9IHNlY3MgKiA2MCAqIDYwICogMjQgKiA3OworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ0aW1lIHN0cmluZyAlcyBjb250YWlucyBhbiBpbnZhbGlkIHN1ZmZpeCBsZXR0ZXJcbiIsCisgICAgICAgICAgICAgICAgIHRpbWVfc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIERFQlVHTVNHVEwoKCJzdHJpbmdfdGltZV90b19zZWNzIiwgIkNvbnZlcnRlZCB0aW1lIHN0cmluZyAlcyB0byAlZFxuIiwKKyAgICAgICAgICAgICAgICB0aW1lX3N0cmluZywgc2VjcykpOworICAgIHJldHVybiBzZWNzOworfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RSSU5HX1RJTUVfVE9fU0VDUyAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4uYwppbmRleCAyYjI4Y2IzLi41YWM2OWExIDEwMDY0NAotLS0gYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4uYworKysgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4uYwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2NvbmZpZ19hcGkuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmg+CiAKIAogb2lkIG5ldHNubXBfQUFMNVBWQ0RvbWFpblsxMF0gPSB7IE5FVFNOTVBfRU5URVJQUklTRV9NSUIsIDMsIDMsIDMgfTsKQEAgLTE3MiwxMSArMTczLDE2IEBACiB7CiAgICAgbmV0c25tcF90cmFuc3BvcnQgKnQgPSBOVUxMOwogCisjaWZkZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAorICAgIGlmIChsb2NhbCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLworCiAgICAgaWYgKGFkZHIgPT0gTlVMTCB8fCBhZGRyLT5zYXBfZmFtaWx5ICE9IEFGX0FUTVBWQykgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICB0ID0gKG5ldHNubXBfdHJhbnNwb3J0ICopIG1hbGxvYyhzaXplb2YobmV0c25tcF90cmFuc3BvcnQpKTsKKyAgICB0ID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RyYW5zcG9ydCk7CiAgICAgaWYgKHQgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xODksOCArMTk1LDYgQEAKICAgICAgICAgZnJlZShzdHIpOwogICAgIH0KIAotICAgIG1lbXNldCh0LCAwLCBzaXplb2YobmV0c25tcF90cmFuc3BvcnQpKTsKLQogICAgIHQtPmRvbWFpbiA9IG5ldHNubXBfQUFMNVBWQ0RvbWFpbjsKICAgICB0LT5kb21haW5fbGVuZ3RoID0KICAgICAgICAgc2l6ZW9mKG5ldHNubXBfQUFMNVBWQ0RvbWFpbikgLyBzaXplb2YobmV0c25tcF9BQUw1UFZDRG9tYWluWzBdKTsKQEAgLTIyNCw2ICsyMjgsNyBAQAogICAgIH0KIAogICAgIGlmIChsb2NhbCkgeworI2lmbmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCiAgICAgICAgIHQtPmxvY2FsID0gKHVuc2lnbmVkIGNoYXIqKW1hbGxvYyg4KTsKICAgICAgICAgaWYgKHQtPmxvY2FsID09IE5VTEwpIHsKICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodCk7CkBAIC0yNDcsNiArMjUyLDkgQEAKICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQorI2Vsc2UgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLworICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCiAgICAgfSBlbHNlIHsKICAgICAgICAgdC0+cmVtb3RlID0gKHVuc2lnbmVkIGNoYXIqKW1hbGxvYyg4KTsKICAgICAgICAgaWYgKHQtPnJlbW90ZSA9PSBOVUxMKSB7CmRpZmYgLS1naXQgYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmMKaW5kZXggMTc1YzIyOC4uOTUwMThiOCAxMDA2NDQKLS0tIGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBDYWxsYmFja0RvbWFpbi5jCisrKyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wQ2FsbGJhY2tEb21haW4uYwpAQCAtMjg5LDEwICsyODksNyBAQAogICAgICAgICAvKgogICAgICAgICAgKiB3ZSBkb24ndCBuZWVkIHRoZSB0cmFuc3BvcnQgZGF0YSBhbnkgbW9yZSAKICAgICAgICAgICovCi0gICAgICAgIGlmICgqb3BhcXVlKSB7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUoKm9wYXF1ZSk7Ci0gICAgICAgICAgICAqb3BhcXVlID0gTlVMTDsKLSAgICAgICAgfQorICAgICAgICBTTk1QX0ZSRUUoKm9wYXF1ZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLyoKICAgICAgICAgICogd2UncmUgdGhlIHNlcnZlciwgc2VuZCBpdCB0byB0aGUgcGVyc29uIHRoYXQgc2VudCB1cyB0aGUgcmVxdWVzdCAKQEAgLTMwMSwxMCArMjk4LDcgQEAKICAgICAgICAgLyoKICAgICAgICAgICogd2UgZG9uJ3QgbmVlZCB0aGUgdHJhbnNwb3J0IGRhdGEgYW55IG1vcmUgCiAgICAgICAgICAqLwotICAgICAgICBpZiAoKm9wYXF1ZSkgewotICAgICAgICAgICAgU05NUF9GUkVFKCpvcGFxdWUpOwotICAgICAgICAgICAgKm9wYXF1ZSA9IE5VTEw7Ci0gICAgICAgIH0KKyAgICAgICAgU05NUF9GUkVFKCpvcGFxdWUpOwogICAgICAgICBvdGhlcl9zaWRlID0gZmluZF90cmFuc3BvcnRfZnJvbV9jYWxsYmFja19udW0oZnJvbSk7CiAgICAgICAgIGlmICghb3RoZXJfc2lkZSkgewogICAgICAgICAgICAgc25tcF9mcmVlX3BkdShjcC0+cGR1KTsKQEAgLTM1OSw3ICszNTMsNyBAQAogewogICAgIERFQlVHTVNHVEwoKCJ0cmFuc3BvcnRfY2FsbGJhY2siLCAiaG9va19hY2NlcHQgZW50ZXJcbiIpKTsKICAgICBERUJVR01TR1RMKCgidHJhbnNwb3J0X2NhbGxiYWNrIiwgImhvb2tfYWNjZXB0IGV4aXRcbiIpKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gLTE7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYwppbmRleCBhNTA5MThiLi5iN2RjNzY3IDEwMDY0NAotLS0gYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYworKysgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYwpAQCAtMTgsNyArMTgsMTMgQEAKIAogI2lmZGVmIEhBVkVfTElCU1NMX0RUTFMKIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNlcnRfdXRpbCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHNvY2thZGRyX3NpemUpCisKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBEVExTVURQRG9tYWluLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oPgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTgwLDEwICs4Niw2IEBACiAjZGVmaW5lIElOQUREUl9OT05FCS0xCiAjZW5kaWYKIAotI2lmbmRlZiBNU0dfRE9OVFdBSVQKLSNkZWZpbmUgTVNHX0RPTlRXQUlUIDAKLSNlbmRpZgotCiAjZGVmaW5lIFdFX0FSRV9TRVJWRVIgMAogI2RlZmluZSBXRV9BUkVfQ0xJRU5UIDEKIApAQCAtOTEsNiArOTMsOSBAQAogc2l6ZV90ICAgICAgICAgIG5ldHNubXBEVExTVURQRG9tYWluX2xlbiA9IE9JRF9MRU5HVEgobmV0c25tcERUTFNVRFBEb21haW4pOwogCiBzdGF0aWMgbmV0c25tcF90ZG9tYWluIGR0bHN1ZHBEb21haW47CisjaWZkZWYgTkVUU05NUF9UUkFOU1BPUlRfVURQSVBWNl9ET01BSU4KK3N0YXRpYyBpbnQgb3BlbnNzbF9hZGRyX2luZGV4NiA9IDA7CisjZW5kaWYKIAogLyogdGhpcyBzdG9yZXMgb3BlbnNzbCBjcmVkZW50aWFscyBmb3IgZWFjaCBjb25uZWN0aW9uIHNpbmNlIG9wZW5zc2wKICAgIGNhbid0IGRvIGl0IGZvciB1cyBhdCB0aGUgbW9tZW50OyBob3BlZnVsbHkgZnV0dXJlIHZlcnNpb25zIHdpbGwKQEAgLTk4LDkgKzEwMyw3IEBACiB0eXBlZGVmIHN0cnVjdCBiaW9fY2FjaGVfcyB7CiAgICBCSU8gKnJlYWRfYmlvOyAgLyogT3BlblNTTCB3aWxsIHJlYWQgaXRzIGluY29taW5nIFNTTCBwYWNrZXRzIGZyb20gaGVyZSAqLwogICAgQklPICp3cml0ZV9iaW87IC8qIE9wZW5TU0wgd2lsbCB3cml0ZSBpdHMgb3V0Z29pbmcgU1NMIHBhY2tldHMgdG8gaGVyZSAqLwotICAgc3RydWN0IHNvY2thZGRyX2luIHNvY2thZGRyOwotICAgdWludDMyX3QgaXB2NGFkZHI7Ci0gICB1X3Nob3J0IHBvcnRudW07CisgICBuZXRzbm1wX3NvY2thZGRyX3N0b3JhZ2Ugc2FzOwogICAgdV9pbnQgZmxhZ3M7CiAgICBzdHJ1Y3QgYmlvX2NhY2hlX3MgKm5leHQ7CiAgICBpbnQgbXNnbnVtOwpAQCAtMTIzLDI0ICsxMjYsMzYgQEAKIHN0YXRpYyBpbnQgbmV0c25tcF9kdGxzX2dlbl9jb29raWUoU1NMICpzc2wsIHVuc2lnbmVkIGNoYXIgKmNvb2tpZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpjb29raWVfbGVuKTsKIAotCiAvKiB0aGlzIHN0b3JlcyByZW1vdGUgY29ubmVjdGlvbnMgaW4gYSBsaXN0IHRvIHNlYXJjaCB0aHJvdWdoICovCiAvKiBYWFg6IG9wdGltaXplIGZvciBzZWFyY2hpbmcgKi8KIC8qIFhYWDogaGFuZGxlIHN0YXRlIGlzc3VlcyBmb3IgbmV3IGNvbm5lY3Rpb25zIHRvIHJlZHVjZSBET1MgaXNzdWVzICovCiAvKiAgICAgIChUTFMgc2hvdWxkIGRvIHRoaXMsIGJ1dCBvcGVuc3NsIGNhbid0IGRvIG1vcmUgdGhhbiBvbmUgY3R4IHBlciBzb2NrICovCiAvKiBYWFg6IHB1dCBhIHRpbWVyIG9uIHRoZSBjYWNoZSBmb3IgZXhwaXJhcnkgcHVycG9zZXMgKi8KLXN0YXRpYyBiaW9fY2FjaGUgKmZpbmRfYmlvX2NhY2hlKHN0cnVjdCBzb2NrYWRkcl9pbiAqZnJvbV9hZGRyKSB7CitzdGF0aWMgYmlvX2NhY2hlICpmaW5kX2Jpb19jYWNoZShuZXRzbm1wX3NvY2thZGRyX3N0b3JhZ2UgKmZyb21fYWRkcikgewogICAgIGJpb19jYWNoZSAqY2FjaGVwID0gTlVMTDsKLSAgICBjYWNoZXAgPSBiaW9jYWNoZTsKLSAgICB3aGlsZShjYWNoZXApIHsKKyAgICAKKyAgICBmb3IoY2FjaGVwID0gYmlvY2FjaGU7IGNhY2hlcDsgY2FjaGVwID0gY2FjaGVwLT5uZXh0KSB7CiAKLSAgICAgICAgaWYgKGNhY2hlcC0+aXB2NGFkZHIgPT0gZnJvbV9hZGRyLT5zaW5fYWRkci5zX2FkZHIgJiYKLSAgICAgICAgICAgIGNhY2hlcC0+cG9ydG51bSA9PSBmcm9tX2FkZHItPnNpbl9wb3J0KSB7Ci0gICAgICAgICAgICAvKiBmb3VuZCBhbiBleGlzdGluZyBjb25uZWN0aW9uICovCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIGNhY2hlcCA9IGNhY2hlcC0+bmV4dDsKKyAgICAgICAgaWYgKGNhY2hlcC0+c2FzLnNhLnNhX2ZhbWlseSAhPSBmcm9tX2FkZHItPnNhLnNhX2ZhbWlseSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICgoZnJvbV9hZGRyLT5zYS5zYV9mYW1pbHkgPT0gQUZfSU5FVCkgJiYKKyAgICAgICAgICAgICgoY2FjaGVwLT5zYXMuc2luLnNpbl9hZGRyLnNfYWRkciAhPQorICAgICAgICAgICAgICBmcm9tX2FkZHItPnNpbi5zaW5fYWRkci5zX2FkZHIpIHx8CisgICAgICAgICAgICAgKGNhY2hlcC0+c2FzLnNpbi5zaW5fcG9ydCAhPSBmcm9tX2FkZHItPnNpbi5zaW5fcG9ydCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1VEUElQVjZfRE9NQUlOCisgICAgICAgIGVsc2UgaWYgKChmcm9tX2FkZHItPnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUNikgJiYKKyAgICAgICAgICAgICAgICAgKChjYWNoZXAtPnNhcy5zaW42LnNpbjZfcG9ydCAhPSBmcm9tX2FkZHItPnNpbjYuc2luNl9wb3J0KSB8fAorICAgICAgICAgICAgICAgICAgKGNhY2hlcC0+c2FzLnNpbjYuc2luNl9zY29wZV9pZCAhPQorICAgICAgICAgICAgICAgICAgIGZyb21fYWRkci0+c2luNi5zaW42X3Njb3BlX2lkKSB8fAorICAgICAgICAgICAgICAgICAgKG1lbWNtcChjYWNoZXAtPnNhcy5zaW42LnNpbjZfYWRkci5zNl9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX2FkZHItPnNpbjYuc2luNl9hZGRyLnM2X2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihmcm9tX2FkZHItPnNpbjYuc2luNl9hZGRyLnM2X2FkZHIpKSAhPSAwKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyNlbmRpZgorICAgICAgICAvKiBmb3VuZCBhbiBleGlzdGluZyBjb25uZWN0aW9uICovCisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gY2FjaGVwOwogfQpAQCAtMTkzLDcgKzIwOCw3IEBACiAKIHN0YXRpYyBiaW9fY2FjaGUgKgogc3RhcnRfbmV3X2NhY2hlZF9jb25uZWN0aW9uKG5ldHNubXBfdHJhbnNwb3J0ICp0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqcmVtb3RlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zb2NrYWRkcl9zdG9yYWdlICpyZW1vdGVfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2VfYXJlX2NsaWVudCkgewogICAgIGJpb19jYWNoZSAqY2FjaGVwID0gTlVMTDsKICAgICBfbmV0c25tcFRMU0Jhc2VEYXRhICp0bHNkYXRhOwpAQCAtMjcwLDkgKzI4NSwxNCBAQAogICAgIGNhY2hlcC0+bmV4dCA9IGJpb2NhY2hlOwogICAgIGJpb2NhY2hlID0gY2FjaGVwOwogCi0gICAgY2FjaGVwLT5pcHY0YWRkciA9IHJlbW90ZV9hZGRyLT5zaW5fYWRkci5zX2FkZHI7Ci0gICAgY2FjaGVwLT5wb3J0bnVtID0gcmVtb3RlX2FkZHItPnNpbl9wb3J0OwotICAgIG1lbWNweSgmY2FjaGVwLT5zb2NrYWRkciwgcmVtb3RlX2FkZHIsIHNpemVvZigqcmVtb3RlX2FkZHIpKTsKKyAgICBpZiAocmVtb3RlX2FkZHItPnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUKQorICAgICAgICBtZW1jcHkoJmNhY2hlcC0+c2FzLnNpbiwgJnJlbW90ZV9hZGRyLT5zaW4sIHNpemVvZihyZW1vdGVfYWRkci0+c2luKSk7CisjaWZkZWYgTkVUU05NUF9UUkFOU1BPUlRfVURQSVBWNl9ET01BSU4KKyAgICBlbHNlIGlmIChyZW1vdGVfYWRkci0+c2Euc2FfZmFtaWx5ID09IEFGX0lORVQ2KQorICAgICAgICBtZW1jcHkoJmNhY2hlcC0+c2FzLnNpbjYsICZyZW1vdGVfYWRkci0+c2luNiwgc2l6ZW9mKHJlbW90ZV9hZGRyLT5zaW42KSk7CisjZW5kaWYKKyAgICBlbHNlCisgICAgICAgIERJRUhFUkUoInVua25vd24gYWRkcmVzcyBmYW1pbHkiKTsKIAogICAgIC8qIGNyZWF0ZSBjYWNoaW5nIG1lbW9yeSBiaW9zIGZvciBPcGVuU1NMIHRvIHJlYWQgYW5kIHdyaXRlIHRvICovCiAKQEAgLTM4Niw3ICs0MDYsOCBAQAogfQogCiBzdGF0aWMgYmlvX2NhY2hlICoKLWZpbmRfb3JfY3JlYXRlX2Jpb19jYWNoZShuZXRzbm1wX3RyYW5zcG9ydCAqdCwgc3RydWN0IHNvY2thZGRyX2luICpmcm9tX2FkZHIsCitmaW5kX29yX2NyZWF0ZV9iaW9fY2FjaGUobmV0c25tcF90cmFuc3BvcnQgKnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zb2NrYWRkcl9zdG9yYWdlICpmcm9tX2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdlX2FyZV9jbGllbnQpIHsKICAgICBiaW9fY2FjaGUgKmNhY2hlcCA9IGZpbmRfYmlvX2NhY2hlKGZyb21fYWRkcik7CiAgICAgaWYgKE5VTEwgPT0gY2FjaGVwKSB7CkBAIC00MDEsNiArNDIyLDQ3IEBACiAgICAgcmV0dXJuIGNhY2hlcDsKIH0KIAorc3RhdGljIG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgKgorX2V4dHJhY3RfYWRkcl9wYWlyKG5ldHNubXBfdHJhbnNwb3J0ICp0LCB2b2lkICpvcGFxdWUsIGludCBvbGVuKQoreworICAgIG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgKmFkZHJfcGFpciA9IE5VTEw7CisKKyAgICBpZiAob3BhcXVlICYmIG9sZW4gPT0gc2l6ZW9mKG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSkpIHsKKyAgICAgICAgbmV0c25tcF90bVN0YXRlUmVmZXJlbmNlICp0bVN0YXRlUmVmID0KKyAgICAgICAgICAgIChuZXRzbm1wX3RtU3RhdGVSZWZlcmVuY2UgKikgb3BhcXVlOworCisgICAgICAgIGlmICh0bVN0YXRlUmVmLT5oYXZlX2FkZHJlc3NlcykKKyAgICAgICAgICAgIGFkZHJfcGFpciA9ICYodG1TdGF0ZVJlZi0+YWRkcmVzc2VzKTsKKyAgICB9CisgICAgaWYgKChOVUxMID09IGFkZHJfcGFpcikgJiYgKE5VTEwgIT0gdCkpIHsKKyAgICAgICAgaWYgKHQtPmRhdGEgIT0gTlVMTCAmJgorICAgICAgICAgICAgdC0+ZGF0YV9sZW5ndGggPT0gc2l6ZW9mKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIpKQorICAgICAgICAgICAgYWRkcl9wYWlyID0gKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgKikgKHQtPmRhdGEpOworICAgICAgICBlbHNlIGlmICh0LT5kYXRhICE9IE5VTEwgJiYKKyAgICAgICAgICAgICAgICAgdC0+ZGF0YV9sZW5ndGggPT0gc2l6ZW9mKF9uZXRzbm1wVExTQmFzZURhdGEpKSB7CisgICAgICAgICAgICBfbmV0c25tcFRMU0Jhc2VEYXRhICp0bHNkYXRhID0gKF9uZXRzbm1wVExTQmFzZURhdGEgKikgdC0+ZGF0YTsKKyAgICAgICAgICAgIGFkZHJfcGFpciA9IChuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyICopICh0bHNkYXRhLT5hZGRyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBhZGRyX3BhaXI7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc29ja2FkZHIgKgorX2ZpbmRfcmVtb3RlX3NvY2thZGRyKG5ldHNubXBfdHJhbnNwb3J0ICp0LCB2b2lkICpvcGFxdWUsIGludCBvbGVuLCBpbnQgKnNvY2tsZW4pCit7CisgICAgbmV0c25tcF9pbmRleGVkX2FkZHJfcGFpciAqYWRkcl9wYWlyID0gX2V4dHJhY3RfYWRkcl9wYWlyKHQsIG9wYXF1ZSwgb2xlbik7CisgICAgc3RydWN0IHNvY2thZGRyICpzYSA9IE5VTEw7CisKKyAgICBpZiAoTlVMTCA9PSBhZGRyX3BhaXIpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgc2EgPSAmYWRkcl9wYWlyLT5yZW1vdGVfYWRkci5zYTsKKyAgICAqc29ja2xlbiA9IG5ldHNubXBfc29ja2FkZHJfc2l6ZShzYSk7CisgICAgcmV0dXJuIHNhOworfQorCisKIC8qCiAgKiBSZWFkcyBkYXRhIGZyb20gb3VyIGludGVybmFsIG9wZW5zc2wgb3V0Z29pbmcgQklPIGFuZCBzZW5kcyBhbnkKICAqIHF1ZXVlZCBwYWNrZXRzIG91dCB0aGUgVURQIHBvcnQKQEAgLTQyMSwxNyArNDgzLDE0IEBACiAgICAgICAgIERFQlVHTVNHVEwoKCJkdGxzdWRwIiwgImhhdmUgJWQgYnl0ZXMgdG8gc2VuZFxuIiwgb3V0c2l6ZSkpOwogCiAgICAgICAgIC8qIHNob3VsZCBhbHdheXMgYmUgdHJ1ZS4gKi8KLSNpZiBkZWZpbmVkKFhYWEZJWE1FKSAmJiBkZWZpbmVkKGxpbnV4KSAmJiBkZWZpbmVkKElQX1BLVElORk8pCi0gICAgICAgIC8qIFhYWDogYmVmb3JlIHRoaXMgY2FuIHdvcmssIHdlIG5lZWQgdG8gcmVtZW1iZXIgYWRkcmVzcyB3ZQotICAgICAgICAgICByZWNlaXZlZCBpdCBmcm9tIChhZGRyX3BhaXIpICovCi0gICAgICAgIHJjMiA9IG5ldHNubXBfdWRwX3NlbmR0byh0LT5zb2NrLCBhZGRyX3BhaXItPmxvY2FsX2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyX3BhaXItPmlmX2luZGV4LCBhZGRyX3BhaXItPnJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0YnVmLCBvdXRzaXplKTsKLSNlbHNlCi0gICAgICAgIHJjMiA9IHNlbmR0byh0LT5zb2NrLCBvdXRidWYsIG91dHNpemUsIDAsCi0gICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHNvY2thZGRyICopJmNhY2hlcC0+c29ja2FkZHIsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKTsKLSNlbmRpZiAvKiBsaW51eCAmJiBJUF9QS1RJTkZPICovCi0KKyAgICAgICAgaW50IHNvY2tzaXplOworICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNhOworICAgICAgICBzYSA9IF9maW5kX3JlbW90ZV9zb2NrYWRkcih0LCBOVUxMLCAwLCAmc29ja3NpemUpOworICAgICAgICBpZiAoTlVMTCA9PSBzYSkKKyAgICAgICAgICAgIHNhID0gJmNhY2hlcC0+c2FzLnNhOworICAgICAgICBzb2Nrc2l6ZSA9IG5ldHNubXBfc29ja2FkZHJfc2l6ZShzYSk7CisgICAgICAgIHJjMiA9IHQtPmJhc2VfdHJhbnNwb3J0LT5mX3NlbmQodCwgb3V0YnVmLCBvdXRzaXplLCAodm9pZCoqKSZzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc29ja3NpemUpOwogICAgICAgICBpZiAocmMyID09IC0xKSB7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZmFpbGVkIHRvIHNlbmQgYSBEVExTIHNwZWNpZmljIHBhY2tldFxuIik7CiAgICAgICAgIH0KQEAgLTU0NSw3ICs2MDQsNiBAQAogICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKm9wYXF1ZSwgaW50ICpvbGVuZ3RoKQogewogICAgIGludCAgICAgICAgICAgICByYyA9IC0xOwotICAgIHNvY2tsZW5fdCAgICAgICBmcm9tbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcik7CiAgICAgbmV0c25tcF9pbmRleGVkX2FkZHJfcGFpciAqYWRkcl9wYWlyID0gTlVMTDsKICAgICBzdHJ1Y3Qgc29ja2FkZHIgKmZyb207CiAgICAgbmV0c25tcF90bVN0YXRlUmVmZXJlbmNlICp0bVN0YXRlUmVmID0gTlVMTDsKQEAgLTU3NywxNCArNjM1LDEyIEBACiAgICAgZnJvbSA9IChzdHJ1Y3Qgc29ja2FkZHIgKikgJihhZGRyX3BhaXItPnJlbW90ZV9hZGRyKTsKIAogICAgIHdoaWxlIChyYyA8IDApIHsKLSNpZiBkZWZpbmVkKGxpbnV4KSAmJiBkZWZpbmVkKElQX1BLVElORk8pCi0gICAgICAgIHNvY2tsZW5fdCBsb2NhbF9hZGRyX2xlbiA9IHNpemVvZihhZGRyX3BhaXItPmxvY2FsX2FkZHIpOwotICAgICAgICByYyA9IG5ldHNubXBfdWRwX3JlY3Zmcm9tKHQtPnNvY2ssIGJ1Ziwgc2l6ZSwgZnJvbSwgJmZyb21sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBzb2NrYWRkciopJihhZGRyX3BhaXItPmxvY2FsX2FkZHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbF9hZGRyX2xlbiwgJihhZGRyX3BhaXItPmlmX2luZGV4KSk7Ci0jZWxzZQotICAgICAgICByYyA9IHJlY3Zmcm9tKHQtPnNvY2ssIGJ1Ziwgc2l6ZSwgTVNHX0RPTlRXQUlULCBmcm9tLCAmZnJvbWxlbik7Ci0jZW5kaWYgLyogbGludXggJiYgSVBfUEtUSU5GTyAqLworICAgICAgICBjaGFyICpvcGFxdWUgPSBOVUxMOworICAgICAgICBpbnQgb2xlbjsKKyAgICAgICAgcmMgPSB0LT5iYXNlX3RyYW5zcG9ydC0+Zl9yZWN2KHQsIGJ1Ziwgc2l6ZSwgKHZvaWQqKikmb3BhcXVlLCAmb2xlbik7CisgICAgICAgIGlmIChyYyA+IDApCisgICAgICAgICAgICBtZW1jcHkoZnJvbSwgb3BhcXVlLCBvbGVuKTsKKyAgICAgICAgU05NUF9GUkVFKG9wYXF1ZSk7CiAgICAgICAgIGlmIChyYyA8IDAgJiYgZXJybm8gIT0gRUlOVFIpIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC04NzcsNiArOTMzLDcgQEAKICAgICAgICAgICAgIHRsc2RhdGEtPmZsYWdzIHw9IE5FVFNOTVBfVExTQkFTRV9DRVJUX0ZQX1ZFUklGSUVEOwogICAgICAgICAgICAgREVCVUdNU0dUTCgoImR0bHN1ZHAiLCAiVmVyaWZpZWQgdGhlIHNlcnZlcidzIGNlcnRpZmljYXRlXG4iKSk7CiAgICAgICAgIH0gZWxzZSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQKICAgICAgICAgICAgIC8qIHZlcmlmeSB0aGF0IHRoZSBjbGllbnQncyBjZXJ0aWZpY2F0ZSBpcyB0aGUgY29ycmVjdCBvbmUgKi8KICAgICAgICAgCiAgICAgICAgICAgICBpZiAoKHZlcmlmeXJlc3VsdCA9IG5ldHNubXBfdGxzYmFzZV92ZXJpZnlfY2xpZW50X2NlcnQodGxzZGF0YS0+c3NsLCB0bHNkYXRhKSkKQEAgLTkwMCw2ICs5NTcsOSBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgdGxzZGF0YS0+ZmxhZ3MgfD0gTkVUU05NUF9UTFNCQVNFX0NFUlRfRlBfVkVSSUZJRUQ7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgiZHRsc3VkcCIsICJWZXJpZmllZCB0aGUgY2xpZW50J3MgY2VydGlmaWNhdGVcbiIpKTsKKyNlbHNlIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KKyAgICAgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KICAgICAgICAgfQogICAgIH0KIApAQCAtOTExLDcgKzk3MSw5IEBACiAgICAgfQogCiAgICAgREVCVUdJRiAoIjk6ZHRsc3VkcCIpIHsKLSAgICAgICAgY2hhciAqc3RyID0gbmV0c25tcF91ZHBfZm10YWRkcihOVUxMLCBhZGRyX3BhaXIsIHNpemVvZihuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyKSk7CisgICAgICAgIGNoYXIgKnN0ciA9CisgICAgICAgICAgICB0LT5iYXNlX3RyYW5zcG9ydC0+Zl9mbXRhZGRyKHQsIGFkZHJfcGFpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobmV0c25tcF9pbmRleGVkX2FkZHJfcGFpcikpOwogICAgICAgICBERUJVR01TR1RMKCgiOTpkdGxzdWRwIiwKICAgICAgICAgICAgICAgICAgICAgInJlY3Zmcm9tIGZkICVkIGdvdCAlZCBieXRlcyAoZnJvbSAlcylcbiIsCiAgICAgICAgICAgICAgICAgICAgIHQtPnNvY2ssIHJjLCBzdHIpKTsKQEAgLTk1OSwzOSArMTAyMSwyNSBAQAogewogICAgIGludCByYyA9IC0xOwogICAgIG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgKmFkZHJfcGFpciA9IE5VTEw7Ci0gICAgc3RydWN0IHNvY2thZGRyICp0byA9IE5VTEw7CiAgICAgYmlvX2NhY2hlICpjYWNoZXAgPSBOVUxMOwogICAgIG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSAqdG1TdGF0ZVJlZiA9IE5VTEw7CiAgICAgdV9jaGFyIG91dGJ1Zls2NTUzNV07CiAgICAgX25ldHNubXBUTFNCYXNlRGF0YSAqdGxzZGF0YSA9IE5VTEw7CisgICAgaW50IHNvY2tzaXplOworICAgIHN0cnVjdCBzb2NrYWRkciAqc2E7CiAgICAgCiAgICAgREVCVUdUUkFDRVRPSygiOTpkdGxzdWRwIik7CiAgICAgREVCVUdNU0dUTCgoImR0bHN1ZHAiLCAic2VuZGluZyAlZCBieXRlc1xuIiwgc2l6ZSkpOwogCi0gICAgLyogZGV0ZXJtaW5lIHJlbW90ZSBhZGRyZXNzZXMgKi8KLSAgICBpZiAob3BhcXVlICE9IE5VTEwgJiYgKm9wYXF1ZSAhPSBOVUxMICYmCi0gICAgICAgICpvbGVuZ3RoID09IHNpemVvZihuZXRzbm1wX3RtU3RhdGVSZWZlcmVuY2UpKSB7Ci0gICAgICAgIHRtU3RhdGVSZWYgPSAobmV0c25tcF90bVN0YXRlUmVmZXJlbmNlICopICpvcGFxdWU7Ci0KLSAgICAgICAgaWYgKHRtU3RhdGVSZWYtPmhhdmVfYWRkcmVzc2VzKQotICAgICAgICAgICAgYWRkcl9wYWlyID0gJih0bVN0YXRlUmVmLT5hZGRyZXNzZXMpOwotICAgICAgICBlbHNlIGlmICh0ICE9IE5VTEwgJiYgdC0+ZGF0YSAhPSBOVUxMICYmCi0gICAgICAgICAgICAgICAgIHQtPmRhdGFfbGVuZ3RoID09IHNpemVvZihuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyKSkKLSAgICAgICAgICAgIGFkZHJfcGFpciA9IChuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyICopICh0LT5kYXRhKTsKLSAgICAgICAgZWxzZSBpZiAodCAhPSBOVUxMICYmIHQtPmRhdGEgIT0gTlVMTCAmJgotICAgICAgICAgICAgICAgICB0LT5kYXRhX2xlbmd0aCA9PSBzaXplb2YoX25ldHNubXBUTFNCYXNlRGF0YSkpIHsKLSAgICAgICAgICAgIHRsc2RhdGEgPSAoX25ldHNubXBUTFNCYXNlRGF0YSAqKSB0LT5kYXRhOwotICAgICAgICAgICAgYWRkcl9wYWlyID0gKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgKikgKHRsc2RhdGEtPnJlbW90ZV9hZGRyKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAodCAhPSBOVUxMICYmIHQtPmRhdGEgIT0gTlVMTCAmJgotICAgICAgICAgICAgICAgdC0+ZGF0YV9sZW5ndGggPT0gc2l6ZW9mKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIpKSB7Ci0gICAgICAgIGFkZHJfcGFpciA9IChuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyICopICh0LT5kYXRhKTsKLSAgICB9IGVsc2UgaWYgKHQgIT0gTlVMTCAmJiB0LT5kYXRhICE9IE5VTEwgJiYKLSAgICAgICAgICAgICAgIHQtPmRhdGFfbGVuZ3RoID09IHNpemVvZihfbmV0c25tcFRMU0Jhc2VEYXRhKSkgewotICAgICAgICB0bHNkYXRhID0gKF9uZXRzbm1wVExTQmFzZURhdGEgKikgdC0+ZGF0YTsKLSAgICAgICAgYWRkcl9wYWlyID0gKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgKikgKHRsc2RhdGEtPnJlbW90ZV9hZGRyKTsKKyAgICBpZiAoTlVMTCA9PSB0IHx8IHQtPnNvY2sgPD0gMCkgeworICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9UTFNUTV9TTk1QVExTVE1TRVNTSU9OSU5WQUxJRENBQ0hFUyk7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJpbnZhbGlkIG5ldHNubXBfZHRsc3VkcF9zZW5kIHVzYWdlXG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAorICAgIC8qIGRldGVybWluZSByZW1vdGUgYWRkcmVzc2VzICovCisgICAgYWRkcl9wYWlyID0gX2V4dHJhY3RfYWRkcl9wYWlyKHQsIG9wYXF1ZSA/ICpvcGFxdWUgOiBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGVuZ3RoID8gKm9sZW5ndGggOiAwKTsKICAgICBpZiAoTlVMTCA9PSBhZGRyX3BhaXIpIHsKICAgICAgIC8qIFJGQzU5NTM6IHNlY3Rpb24gNS4yLCBzdGVwIDE6CiAgICAgICAgMSkgIElmIHRtU3RhdGVSZWZlcmVuY2UgZG9lcyBub3QgcmVmZXIgdG8gYSBjYWNoZSBjb250YWluaW5nIHZhbHVlcwpAQCAtMTAwNiwxNCArMTA1NCw2IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICB0byA9IChzdHJ1Y3Qgc29ja2FkZHIgKikgJihhZGRyX3BhaXItPnJlbW90ZV9hZGRyKTsKLQotICAgIGlmIChOVUxMID09IHRvIHx8IE5VTEwgPT0gdCB8fCB0LT5zb2NrIDw9IDApIHsKLSAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVExTVE1fU05NUFRMU1RNU0VTU0lPTklOVkFMSURDQUNIRVMpOwotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiaW52YWxpZCBuZXRzbm1wX2R0bHN1ZHBfc2VuZCB1c2FnZVxuIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICAgICAvKiBSRkM1OTUzOiBzZWN0aW9uIDUuMiwgc3RlcCAyOgogICAgICAgIDIpICBFeHRyYWN0IHRoZSB0bVNlc3Npb25JRCwgdG1UcmFuc3BvcnREb21haW4sIHRtVHJhbnNwb3J0QWRkcmVzcywKICAgICAgICAgICAgdG1TZWN1cml0eU5hbWUsIHRtUmVxdWVzdGVkU2VjdXJpdHlMZXZlbCwgYW5kIHRtU2FtZVNlY3VyaXR5CkBAIC0xMDI3LDYgKzEwNjcsOSBAQAogICAgICAgIC0gaWYgd2UgZG9uJ3QgaGF2ZSBhIHNlc3Npb24geWV0IChlZywgbm8gdG1TZXNzaW9uSUQgZnJvbSB0aGUKICAgICAgICAgIHNwZWNzKSB0aGVuIHdlIGNyZWF0ZSBvbmUgYXV0b21hdGljYWxseSBoZXJlLgogICAgICovCisgICAgaWYgKG9wYXF1ZSAhPSBOVUxMICYmICpvcGFxdWUgIT0gTlVMTCAmJgorICAgICAgICBvbGVuZ3RoICE9IE5VTEwgJiYgKm9sZW5ndGggPT0gc2l6ZW9mKG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSkpCisgICAgICAgIHRtU3RhdGVSZWYgPSAobmV0c25tcF90bVN0YXRlUmVmZXJlbmNlICopICpvcGFxdWU7CiAKIAogICAgIC8qIFJGQzU5NTM6IHNlY3Rpb24gNS4yLCBzdGVwIDM6CkBAIC0xMTA4LDcgKzExNTEsNyBAQAogICAgIH0KIAogICAgIERFQlVHSUYgKCI5OmR0bHN1ZHAiKSB7Ci0gICAgICAgIGNoYXIgKnN0ciA9IG5ldHNubXBfdWRwX2ZtdGFkZHIoTlVMTCwgKHZvaWQgKikgYWRkcl9wYWlyLAorICAgICAgICBjaGFyICpzdHIgPSB0LT5iYXNlX3RyYW5zcG9ydC0+Zl9mbXRhZGRyKHQsICh2b2lkICopIGFkZHJfcGFpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobmV0c25tcF9pbmRleGVkX2FkZHJfcGFpcikpOwogICAgICAgICBERUJVR01TR1RMKCgiOTpkdGxzdWRwIiwgInNlbmQgJWQgYnl0ZXMgZnJvbSAlcCB0byAlcyBvbiBmZCAlZFxuIiwKICAgICAgICAgICAgICAgICAgICAgc2l6ZSwgYnVmLCBzdHIsIHQtPnNvY2spKTsKQEAgLTExNzYsMTQgKzEyMTksOSBAQAogICAgICAgICAvKiBpbiB0aGVvcnkgYW4gb2sgdGhpbmcgKi8KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotI2lmIGRlZmluZWQoRklYTUUpICYmIGRlZmluZWQobGludXgpICYmIGRlZmluZWQoSVBfUEtUSU5GTykKLSAgICAvKiBYWFg6IGJlZm9yZSB0aGlzIGNhbiB3b3JrLCB3ZSBuZWVkIHRvIHJlbWVtYmVyIGFkZHJlc3Mgd2UKLSAgICAgICByZWNlaXZlZCBpdCBmcm9tIChhZGRyX3BhaXIpICovCi0gICAgcmMgPSBuZXRzbm1wX3VkcGJhc2Vfc2VuZHRvKHQtPnNvY2ssICZjYWNoZXAtPnNvY2thZGRyICByZW1vdGUgIGFkZHJfcGFpciA/ICYoYWRkcl9wYWlyLT5sb2NhbF9hZGRyKSA6IE5VTEwsIHRvLCBvdXRidWYsIHJjKTsKLSNlbHNlCi0gICAgcmMgPSBzZW5kdG8odC0+c29jaywgb3V0YnVmLCByYywgMCwgKHN0cnVjdCBzb2NrYWRkciAqKSZjYWNoZXAtPnNvY2thZGRyLAotICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKTsKLSNlbmRpZiAvKiBsaW51eCAmJiBJUF9QS1RJTkZPICovCisgICAgc29ja3NpemUgPSBuZXRzbm1wX3NvY2thZGRyX3NpemUoJmNhY2hlcC0+c2FzLnNhKTsKKyAgICBzYSA9ICZjYWNoZXAtPnNhcy5zYTsKKyAgICByYyA9IHQtPmJhc2VfdHJhbnNwb3J0LT5mX3NlbmQodCwgb3V0YnVmLCByYywgKHZvaWQqKikmc2EsICZzb2Nrc2l6ZSk7CiAKICAgICByZXR1cm4gcmM7CiB9CkBAIC0xMjA3LDcgKzEyNDUsNyBAQAogICAgICAgICAgICAgc25tcFRsc3RtU2Vzc2lvblNlcnZlckNsb3NlcyBjb3VudGVyIGFzIGFwcHJvcHJpYXRlLgogICAgICovCiAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVExTVE1fU05NUFRMU1RNU0VTU0lPTkNMSUVOVENMT1NFUyk7Ci0gICAgCisKICAgICAvKiBSRkM1OTUzOiBzZWN0aW9uIDUuNCwgc3RlcCAyOgogICAgICAgICAyKSAgTG9vayB1cCB0aGUgc2Vzc2lvbiB1c2luZyB0aGUgdG1TZXNzaW9uSUQuCiAgICAgKi8KQEAgLTEyMTcsOCArMTI1NSw4IEBACiAgICAgaWYgKE5VTEwgIT0gdC0+ZGF0YSAmJiB0LT5kYXRhX2xlbmd0aCA9PSBzaXplb2YoX25ldHNubXBUTFNCYXNlRGF0YSkpIHsKICAgICAgICAgdGxzYmFzZSA9IChfbmV0c25tcFRMU0Jhc2VEYXRhICopIHQtPmRhdGE7CiAKLSAgICAgICAgaWYgKHRsc2Jhc2UtPnJlbW90ZV9hZGRyKQotICAgICAgICAgICAgY2FjaGVwID0gZmluZF9iaW9fY2FjaGUoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKXRsc2Jhc2UtPnJlbW90ZV9hZGRyKTsKKyAgICAgICAgaWYgKHRsc2Jhc2UtPmFkZHIpCisgICAgICAgICAgICBjYWNoZXAgPSBmaW5kX2Jpb19jYWNoZSgmdGxzYmFzZS0+YWRkci0+cmVtb3RlX2FkZHIpOwogICAgIH0KIAogICAgIC8qIFJGQzU5NTM6IHNlY3Rpb24gNS40LCBzdGVwIDM6CkBAIC0xMjM3LDExICsxMjc1LDExIEBACiAgICAgICAgIGludCBvcGFxdWVfbGVuID0gMDsKICAgICAgICAgZmRfc2V0IHJlYWRmczsKICAgICAgICAgc3RydWN0IHRpbWV2YWwgdHY7Ci0KKyAKICAgICAgICAgREVCVUdNU0dUTCgoImR0bHN1ZHA6Y2xvc2UiLAogCQkgICAgIiUiIE5FVFNOTVBfUFJJeiAiZCBieXRlcyByZW1haW4gaW4gd3JpdGVfY2FjaGVcbiIsCiAgICAgICAgICAgICAgICAgICAgIGNhY2hlcC0+d3JpdGVfY2FjaGVfbGVuKSk7Ci0KKyAKICAgICAgICAgLyoKICAgICAgICAgICogaWYgbmVnb3RpYXRpb25zIGhhdmUgY29tcGxldGVkIGFuZCB3ZSd2ZSByZWNlaXZlZCBkYXRhLCB0cnkgYW5kCiAgICAgICAgICAqIHNlbmQgYW55IHF1ZXVlZCBwYWNrZXRzLgpAQCAtMTI1OCw3ICsxMjk2LDcgQEAKICAgICAgICAgICAgICAgICBfbmV0c25tcF9iaW9fdHJ5X2FuZF93cml0ZV9idWZmZXJlZCh0LCBjYWNoZXApOwogICAgICAgICAgICAgICAgIGlmIChjYWNoZXAtPndyaXRlX2NhY2hlX2xlbiA9PSAwKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLQorIAogICAgICAgICAgICAgICAgIC8qIGlmIHdlJ3ZlIGZhaWxlZCB0aGF0LCB3ZSBwcm9iYWJseSBuZWVkIHRvIHdhaXQgZm9yIHBhY2tldHMgKi8KICAgICAgICAgICAgICAgICBGRF9aRVJPKCZyZWFkZnMpOwogICAgICAgICAgICAgICAgIEZEX1NFVCh0LT5zb2NrLCAmcmVhZGZzKTsKQEAgLTEzMDgsNiArMTM0NiwxMyBAQAogY2hhciAqCiBuZXRzbm1wX2R0bHN1ZHBfZm10YWRkcihuZXRzbm1wX3RyYW5zcG9ydCAqdCwgdm9pZCAqZGF0YSwgaW50IGxlbikKIHsKKyAgICBpbnQgICAgICAgICAgICAgIHNhX2xlbjsKKyAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNhID0gX2ZpbmRfcmVtb3RlX3NvY2thZGRyKHQsIGRhdGEsIGxlbiwgJnNhX2xlbik7CisgICAgaWYgKHNhKSB7CisgICAgICAgIGRhdGEgPSBzYTsKKyAgICAgICAgbGVuID0gc2FfbGVuOworICAgIH0KKwogICAgIHJldHVybiBuZXRzbm1wX2lwdjRfZm10YWRkcigiRFRMU1VEUCIsIHQsIGRhdGEsIGxlbik7CiB9CiAKQEAgLTEzMTcsNDYgKzEzNjIsNDQgQEAKICAqIHRoZSByZW1vdGUgYWRkcmVzcyB0byBzZW5kIHRoaW5ncyB0by4gIAogICovCiAKLW5ldHNubXBfdHJhbnNwb3J0ICoKLW5ldHNubXBfZHRsc3VkcF90cmFuc3BvcnQoc3RydWN0IHNvY2thZGRyX2luICphZGRyLCBpbnQgbG9jYWwpCitzdGF0aWMgbmV0c25tcF90cmFuc3BvcnQgKgorX3RyYW5zcG9ydF9jb21tb24obmV0c25tcF90cmFuc3BvcnQgKnQsIGludCBsb2NhbCkKIHsKLSAgICBuZXRzbm1wX3RyYW5zcG9ydCAqdCA9IE5VTEw7CisgICAgY2hhciAqdG1wID0gTlVMTDsKKyAgICBpbnQgdG1wX2xlbjsKIAogICAgIERFQlVHVFJBQ0VUT0soIjk6ZHRsc3VkcCIpOwogCi0gICAgdCA9IG5ldHNubXBfdWRwaXB2NGJhc2VfdHJhbnNwb3J0KGFkZHIsIGxvY2FsKTsKICAgICBpZiAoTlVMTCA9PSB0KQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIC8qKiBzYXZlIGJhc2UgdHJhbnNwb3J0IGZvciBjbGllbnRzOyBuZWVkIGluIHNlbmQvcmVjdiBmdW5jdGlvbnMgbGF0ZXIgKi8KKyAgICBpZiAodC0+ZGF0YSkgeyAvKiBkb24ndCBjb3B5IGRhdGEgKi8KKyAgICAgICAgdG1wID0gdC0+ZGF0YTsKKyAgICAgICAgdG1wX2xlbiA9IHQtPmRhdGFfbGVuZ3RoOworICAgICAgICB0LT5kYXRhID0gTlVMTDsKKyAgICB9CisgICAgdC0+YmFzZV90cmFuc3BvcnQgPSBuZXRzbm1wX3RyYW5zcG9ydF9jb3B5KHQpOworCisgICAgaWYgKHRtcCkgeworICAgICAgICB0LT5kYXRhID0gdG1wOworICAgICAgICB0LT5kYXRhX2xlbmd0aCA9IHRtcF9sZW47CisgICAgfQogICAgIGlmIChOVUxMICE9IHQtPmRhdGEgJiYKICAgICAgICAgdC0+ZGF0YV9sZW5ndGggPT0gc2l6ZW9mKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIpKSB7CiAgICAgICAgIF9uZXRzbm1wVExTQmFzZURhdGEgKnRsc2RhdGEgPQogICAgICAgICAgICAgbmV0c25tcF90bHNiYXNlX2FsbG9jYXRlX3Rsc2RhdGEodCwgbG9jYWwpOwotICAgICAgICB0bHNkYXRhLT5yZW1vdGVfYWRkciA9IHQtPmRhdGE7CisgICAgICAgIHRsc2RhdGEtPmFkZHIgPSB0LT5kYXRhOwogICAgICAgICB0LT5kYXRhID0gdGxzZGF0YTsKICAgICAgICAgdC0+ZGF0YV9sZW5ndGggPSBzaXplb2YoX25ldHNubXBUTFNCYXNlRGF0YSk7CiAgICAgfQogCi0gICAgaWYgKCFsb2NhbCkgewotICAgICAgICAvKiBkdGxzIG5lZWRzIHRvIGJpbmQgdGhlIHNvY2tldCBmb3IgU1NMX3dyaXRlIHRvIHdvcmsgKi8KLSAgICAgICAgaWYgKGNvbm5lY3QodC0+c29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSBhZGRyLCBzaXplb2YoKmFkZHIpKSA9PSAtMSkKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkdGxzOiBmYWlsZWQgdG8gY29ubmVjdFxuIik7Ci0gICAgfQotCi0gICAgLyogWFhYOiBQb3RlbnRpYWxseSBzZXQgc29jayBvcHRzIGhlcmUgKFNPX1NOREJVRi9TT19SQ1ZfQlVGKSAqLyAgICAgIAotICAgIC8qIFhYWDogYW5kIGJ1ZiBzaXplICovICAgICAgICAKLQogICAgIC8qCiAgICAgICogU2V0IERvbWFpbgogICAgICAqLwogICAgIHQtPmRvbWFpbiA9IG5ldHNubXBEVExTVURQRG9tYWluOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICB0LT5kb21haW5fbGVuZ3RoID0gbmV0c25tcERUTFNVRFBEb21haW5fbGVuOyAgICAgCiAKLSAgICAvKgotICAgICAqIDE2LWJpdCBsZW5ndGggZmllbGQsIDggYnl0ZSBEVExTIGhlYWRlciwgMjAgYnl0ZSBJUHY0IGhlYWRlciAgCi0gICAgICovCi0gICAgdC0+bXNnTWF4U2l6ZSAgICAgID0gMHhmZmZmIC0gOCAtIDIwOwotCiAgICAgdC0+Zl9yZWN2ICAgICAgICAgID0gbmV0c25tcF9kdGxzdWRwX3JlY3Y7CiAgICAgdC0+Zl9zZW5kICAgICAgICAgID0gbmV0c25tcF9kdGxzdWRwX3NlbmQ7CiAgICAgdC0+Zl9jbG9zZSAgICAgICAgID0gbmV0c25tcF9kdGxzdWRwX2Nsb3NlOwpAQCAtMTM3MCwyOSArMTQxMywxMDAgQEAKICAgICByZXR1cm4gdDsKIH0KIAotCi12b2lkCi1uZXRzbm1wX2R0bHN1ZHBfYWdlbnRfY29uZmlnX3Rva2Vuc19yZWdpc3Rlcih2b2lkKQorbmV0c25tcF90cmFuc3BvcnQgKgorbmV0c25tcF9kdGxzdWRwX3RyYW5zcG9ydChzdHJ1Y3Qgc29ja2FkZHJfaW4gKmFkZHIsIGludCBsb2NhbCkKIHsKKyAgICBuZXRzbm1wX3RyYW5zcG9ydCAqdCA9IE5VTEw7CisKKyAgICBERUJVR1RSQUNFVE9LKCJkdGxzdWRwIik7CisKKyAgICB0ID0gbmV0c25tcF91ZHBfdHJhbnNwb3J0KGFkZHIsIGxvY2FsKTsKKyAgICBpZiAoTlVMTCA9PSB0KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIF90cmFuc3BvcnRfY29tbW9uKHQsIGxvY2FsKTsKKworICAgIGlmICghbG9jYWwpIHsKKyAgICAgICAgLyogZHRscyBuZWVkcyB0byBiaW5kIHRoZSBzb2NrZXQgZm9yIFNTTF93cml0ZSB0byB3b3JrICovCisgICAgICAgIGlmIChjb25uZWN0KHQtPnNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikgYWRkciwgc2l6ZW9mKCphZGRyKSkgPT0gLTEpCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZHRsczogZmFpbGVkIHRvIGNvbm5lY3RcbiIpOworICAgIH0KKworICAgIHJldHVybiB0OwogfQogCiAKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgorCitjaGFyICoKK25ldHNubXBfZHRsc3VkcDZfZm10YWRkcihuZXRzbm1wX3RyYW5zcG9ydCAqdCwgdm9pZCAqZGF0YSwgaW50IGxlbikKK3sKKyAgICBpbnQgICAgICAgICAgICAgIHNhX2xlbjsKKyAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNhID0gX2ZpbmRfcmVtb3RlX3NvY2thZGRyKHQsIGRhdGEsIGxlbiwgJnNhX2xlbik7CisgICAgaWYgKHNhKSB7CisgICAgICAgIGRhdGEgPSBzYTsKKyAgICAgICAgbGVuID0gc2FfbGVuOworICAgIH0KKworICAgIHJldHVybiBuZXRzbm1wX2lwdjZfZm10YWRkcigiRFRMU1VEUDYiLCB0LCBkYXRhLCBsZW4pOworfQorCisvKgorICogT3BlbiBhIERUTFMtYmFzZWQgdHJhbnNwb3J0IGZvciBTTk1QLiAgTG9jYWwgaXMgVFJVRSBpZiBhZGRyIGlzIHRoZSBsb2NhbAorICogYWRkcmVzcyB0byBiaW5kIHRvIChpLmUuIHRoaXMgaXMgYSBzZXJ2ZXItdHlwZSBzZXNzaW9uKTsgb3RoZXJ3aXNlIGFkZHIgaXMgCisgKiB0aGUgcmVtb3RlIGFkZHJlc3MgdG8gc2VuZCB0aGluZ3MgdG8uICAKKyAqLworCituZXRzbm1wX3RyYW5zcG9ydCAqCituZXRzbm1wX2R0bHN1ZHA2X3RyYW5zcG9ydChzdHJ1Y3Qgc29ja2FkZHJfaW42ICphZGRyLCBpbnQgbG9jYWwpCit7CisgICAgbmV0c25tcF90cmFuc3BvcnQgKnQgPSBOVUxMOworCisgICAgREVCVUdUUkFDRVRPSygiZHRsc3VkcCIpOworCisgICAgdCA9IG5ldHNubXBfdWRwNl90cmFuc3BvcnQoYWRkciwgbG9jYWwpOworICAgIGlmIChOVUxMID09IHQpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgX3RyYW5zcG9ydF9jb21tb24odCwgbG9jYWwpOworCisgICAgaWYgKCFsb2NhbCkgeworICAgICAgICAvKiBkdGxzIG5lZWRzIHRvIGJpbmQgdGhlIHNvY2tldCBmb3IgU1NMX3dyaXRlIHRvIHdvcmsgKi8KKyAgICAgICAgaWYgKGNvbm5lY3QodC0+c29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSBhZGRyLCBzaXplb2YoKmFkZHIpKSA9PSAtMSkKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkdGxzOiBmYWlsZWQgdG8gY29ubmVjdFxuIik7CisgICAgfQorCisgICAgLyogWFhYOiBQb3RlbnRpYWxseSBzZXQgc29jayBvcHRzIGhlcmUgKFNPX1NOREJVRi9TT19SQ1ZfQlVGKSAqLyAgICAgIAorICAgIC8qIFhYWDogYW5kIGJ1ZiBzaXplICovICAgICAgICAKKworICAgIHQtPmZfZm10YWRkciAgICAgICA9IG5ldHNubXBfZHRsc3VkcDZfZm10YWRkcjsKKworICAgIHJldHVybiB0OworfQorI2VuZGlmCiAKIAogbmV0c25tcF90cmFuc3BvcnQgKgogbmV0c25tcF9kdGxzdWRwX2NyZWF0ZV90c3RyaW5nKGNvbnN0IGNoYXIgKnN0ciwgaW50IGlzc2VydmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRlZmF1bHRfdGFyZ2V0KQogeworI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1VEUElQVjZfRE9NQUlOCisgICAgc3RydWN0IHNvY2thZGRyX2luNiBhZGRyNjsKKyNlbmRpZgogICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOwogICAgIG5ldHNubXBfdHJhbnNwb3J0ICp0OwogICAgIF9uZXRzbm1wVExTQmFzZURhdGEgKnRsc2RhdGE7CiAgICAgY2hhciBidWZbU1BSSU5UX01BWF9MRU5dLCAqY3A7CiAKLSAgICBpZiAobmV0c25tcF9zb2NrYWRkcl9pbjIoJmFkZHIsIHN0ciwgZGVmYXVsdF90YXJnZXQpKSB7CisgICAgaWYgKG5ldHNubXBfc29ja2FkZHJfaW4yKCZhZGRyLCBzdHIsIGRlZmF1bHRfdGFyZ2V0KSkKICAgICAgICAgdCA9IG5ldHNubXBfZHRsc3VkcF90cmFuc3BvcnQoJmFkZHIsIGlzc2VydmVyKTsKLSAgICB9IGVsc2UgeworI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1VEUElQVjZfRE9NQUlOCisgICAgZWxzZSBpZiAobmV0c25tcF9zb2NrYWRkcl9pbjZfMigmYWRkcjYsIHN0ciwgZGVmYXVsdF90YXJnZXQpKQorICAgICAgICB0ID0gbmV0c25tcF9kdGxzdWRwNl90cmFuc3BvcnQoJmFkZHI2LCBpc3NlcnZlcik7CisjZW5kaWYKKyAgICBlbHNlCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKwogCiAgICAgLyogc2VlIGlmIHdlIGNhbiBleHRyYWN0IHRoZSByZW1vdGUgaG9zdG5hbWUgKi8KICAgICBpZiAoIWlzc2VydmVyICYmIHQgJiYgdC0+ZGF0YSAmJiBzdHIpIHsKQEAgLTE0MjMsNiArMTUzNywxNiBAQAogICAgICAgICBhZGRyLnNpbl9wb3J0ID0gaHRvbnMocG9ydHRtcCk7CiAgICAgICAgIHJldHVybiBuZXRzbm1wX2R0bHN1ZHBfdHJhbnNwb3J0KCZhZGRyLCBsb2NhbCk7CiAgICAgfQorI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1VEUElQVjZfRE9NQUlOCisgICAgZWxzZSBpZiAob19sZW4gPT0gMTgpIHsKKyAgICAgICAgc3RydWN0IHNvY2thZGRyX2luNiBhZGRyNjsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQgcG9ydHRtcCA9IChvWzE2XSA8PCA4KSArIG9bMTddOworICAgICAgICBhZGRyNi5zaW42X2ZhbWlseSA9IEFGX0lORVQ2OworICAgICAgICBtZW1jcHkoKHVfY2hhciAqKSAmIChhZGRyNi5zaW42X2FkZHIuczZfYWRkciksIG8sIDQpOworICAgICAgICBhZGRyNi5zaW42X3BvcnQgPSBodG9ucyhwb3J0dG1wKTsKKyAgICAgICAgcmV0dXJuIG5ldHNubXBfZHRsc3VkcDZfdHJhbnNwb3J0KCZhZGRyNiwgbG9jYWwpOworICAgIH0KKyNlbmRpZgogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0xNDMwLDE2ICsxNTU0LDMyIEBACiBuZXRzbm1wX2R0bHN1ZHBfY3Rvcih2b2lkKQogewogICAgIGNoYXIgaW5kZXhuYW1lW10gPSAiX25ldHNubXBfYWRkcl9pbmZvIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqcHJlZml4ZXNbXSA9IHsgImR0bHN1ZHAiLCAiZHRscyIKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICJkdGxzdWRwNiIsICJkdGxzNiIKKyNlbmRpZgorICAgIH07CisgICAgaW50IGksIG51bV9wcmVmaXhlcyA9IHNpemVvZihwcmVmaXhlcykgLyBzaXplb2YoY2hhciAqKTsKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgorICAgIGNoYXIgaW5kZXhuYW1lNltdID0gIl9uZXRzbm1wX2FkZHJfaW5mbzYiOworI2VuZGlmCiAKICAgICBERUJVR01TR1RMKCgiZHRsc3VkcCIsICJyZWdpc3RlcmluZyBEVExTIGNvbnN0cnVjdG9yXG4iKSk7CiAKICAgICAvKiBjb25maWcgc2V0dGluZ3MgKi8KIAorI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1VEUElQVjZfRE9NQUlOCisgICAgaWYgKCFvcGVuc3NsX2FkZHJfaW5kZXg2KQorICAgICAgICBvcGVuc3NsX2FkZHJfaW5kZXg2ID0KKyAgICAgICAgICAgIFNTTF9nZXRfZXhfbmV3X2luZGV4KDAsIGluZGV4bmFtZTYsIE5VTEwsIE5VTEwsIE5VTEwpOworI2VuZGlmCisKICAgICBkdGxzdWRwRG9tYWluLm5hbWUgPSBuZXRzbm1wRFRMU1VEUERvbWFpbjsKICAgICBkdGxzdWRwRG9tYWluLm5hbWVfbGVuZ3RoID0gbmV0c25tcERUTFNVRFBEb21haW5fbGVuOwotICAgIGR0bHN1ZHBEb21haW4ucHJlZml4ID0gKGNvbnN0IGNoYXIqKiljYWxsb2MoMywgc2l6ZW9mKGNoYXIgKikpOwotICAgIGR0bHN1ZHBEb21haW4ucHJlZml4WzBdID0gImR0bHN1ZHAiOwotICAgIGR0bHN1ZHBEb21haW4ucHJlZml4WzFdID0gImR0bHMiOworICAgIGR0bHN1ZHBEb21haW4ucHJlZml4ID0gKGNvbnN0IGNoYXIqKiljYWxsb2MobnVtX3ByZWZpeGVzICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihjaGFyICopKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX3ByZWZpeGVzOyArKyBpKQorICAgICAgICBkdGxzdWRwRG9tYWluLnByZWZpeFtpXSA9IHByZWZpeGVzW2ldOwogCiAgICAgZHRsc3VkcERvbWFpbi5mX2NyZWF0ZV9mcm9tX3RzdHJpbmcgICAgID0gTlVMTDsKICAgICBkdGxzdWRwRG9tYWluLmZfY3JlYXRlX2Zyb21fdHN0cmluZ19uZXcgPSBuZXRzbm1wX2R0bHN1ZHBfY3JlYXRlX3RzdHJpbmc7CkBAIC0xNDYzLDYgKzE2MDMsOSBAQAogdHlwZWRlZiB1bmlvbiB7CiAgICAgICAgc3RydWN0IHNvY2thZGRyIHNhOwogICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBzNDsKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgorICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgczY7CisjZW5kaWYKIH0gX3BlZXJfdW5pb247CiAKIGludCBuZXRzbm1wX2R0bHNfZ2VuX2Nvb2tpZShTU0wgKnNzbCwgdW5zaWduZWQgY2hhciAqY29va2llLApAQCAtMTQ5MCw3ICsxNjMzLDcgQEAKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImR0bHM6IGZhaWxlZCB0byBnZXQgdGhlIHBlZXIgYWRkcmVzc1xuIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBwZWVyID0gKF9wZWVyX3VuaW9uICopJmNhY2hlcC0+c29ja2FkZHI7CisgICAgcGVlciA9IChfcGVlcl91bmlvbiAqKSZjYWNoZXAtPnNhczsKIAogICAgIC8qIENyZWF0ZSBidWZmZXIgd2l0aCBwZWVyJ3MgYWRkcmVzcyBhbmQgcG9ydCAqLwogICAgIGxlbmd0aCA9IDA7CkBAIC0xNDk5LDYgKzE2NDIsMTIgQEAKICAgICAgICAgbGVuZ3RoICs9IHNpemVvZihzdHJ1Y3QgaW5fYWRkcik7CiAgICAgICAgIGxlbmd0aCArPSBzaXplb2YocGVlci0+czQuc2luX3BvcnQpOwogICAgICAgICBicmVhazsKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgorICAgIGNhc2UgQUZfSU5FVDY6CisgICAgICAgIGxlbmd0aCArPSBzaXplb2Yoc3RydWN0IGluNl9hZGRyKTsKKyAgICAgICAgbGVuZ3RoICs9IHNpemVvZihwZWVyLT5zNi5zaW42X3BvcnQpOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkdGxzIGdlbmVyYXRpbmcgY29va2llOiB1bmtub3duIGZhbWlseTogJWRcbiIsCiAgICAgICAgICAgICAgICAgIHBlZXItPnNhLnNhX2ZhbWlseSk7CkBAIC0xNTE5LDYgKzE2NjgsMTYgQEAKICAgICAgICAgICAgICAgICZwZWVyLT5zNC5zaW5fYWRkciwKICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpOwogICAgICAgICBicmVhazsKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgorICAgIGNhc2UgQUZfSU5FVDY6CisgICAgICAgIG1lbWNweShidWZmZXIsCisgICAgICAgICAgICAgICAmcGVlci0+czYuc2luNl9wb3J0LAorICAgICAgICAgICAgICAgc2l6ZW9mKHBlZXItPnM2LnNpbjZfcG9ydCkpOworICAgICAgICBtZW1jcHkoYnVmZmVyICsgc2l6ZW9mKHBlZXItPnM2LnNpbjZfcG9ydCksCisgICAgICAgICAgICAgICAmcGVlci0+czYuc2luNl9hZGRyLAorICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkdGxzOiB1bmtub3duIGFkZHJlc3MgZmFtaWx5IGdlbmVyYXRpbmcgYSBjb29raWVcbiIpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE1NTYsNyArMTcxNSw3IEBACiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkdGxzOiBmYWlsZWQgdG8gZ2V0IHRoZSBwZWVyIGFkZHJlc3NcbiIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgcGVlciA9IChfcGVlcl91bmlvbiAqKSZjYWNoZXAtPnNvY2thZGRyOworICAgIHBlZXIgPSAoX3BlZXJfdW5pb24gKikmY2FjaGVwLT5zYXM7CiAKICAgICAvKiBDcmVhdGUgYnVmZmVyIHdpdGggcGVlcidzIGFkZHJlc3MgYW5kIHBvcnQgKi8KICAgICBsZW5ndGggPSAwOwpAQCAtMTU2NSw2ICsxNzI0LDEyIEBACiAgICAgICAgIGxlbmd0aCArPSBzaXplb2Yoc3RydWN0IGluX2FkZHIpOwogICAgICAgICBsZW5ndGggKz0gc2l6ZW9mKHBlZXItPnM0LnNpbl9wb3J0KTsKICAgICAgICAgYnJlYWs7CisjaWZkZWYgTkVUU05NUF9UUkFOU1BPUlRfVURQSVBWNl9ET01BSU4KKyAgICBjYXNlIEFGX0lORVQ2OgorICAgICAgICBsZW5ndGggKz0gc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcik7CisgICAgICAgIGxlbmd0aCArPSBzaXplb2YocGVlci0+czYuc2luNl9wb3J0KTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAogICAgICAgICAgICAgICAgICAiZHRsczogdW5rbm93biBhZGRyZXNzIGZhbWlseSAlZCBnZW5lcmF0aW5nIGEgY29va2llXG4iLApAQCAtMTU4Niw2ICsxNzUxLDE2IEBACiAgICAgICAgICAgICAgICAmcGVlci0+czQuc2luX2FkZHIsCiAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IGluX2FkZHIpKTsKICAgICAgICAgYnJlYWs7CisjaWZkZWYgTkVUU05NUF9UUkFOU1BPUlRfVURQSVBWNl9ET01BSU4KKyAgICBjYXNlIEFGX0lORVQ2OgorICAgICAgICBtZW1jcHkoYnVmZmVyLAorICAgICAgICAgICAgICAgJnBlZXItPnM2LnNpbjZfcG9ydCwKKyAgICAgICAgICAgICAgIHNpemVvZihwZWVyLT5zNi5zaW42X3BvcnQpKTsKKyAgICAgICAgbWVtY3B5KGJ1ZmZlciArIHNpemVvZihwZWVyLT5zNi5zaW42X3BvcnQpLAorICAgICAgICAgICAgICAgJnBlZXItPnM2LnNpbjZfYWRkciwKKyAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAogICAgICAgICAgICAgICAgICAiZHRsczogdW5rbm93biBhZGRyZXNzIGZhbWlseSAlZCBnZW5lcmF0aW5nIGEgY29va2llXG4iLApkaWZmIC0tZ2l0IGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4uYyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVBYRG9tYWluLmMKaW5kZXggZmRjODA3MS4uMTM0NjE1NiAxMDA2NDQKLS0tIGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4uYworKysgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5jCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvY29uZmlnX2FwaS5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaD4KIAogI2RlZmluZSBTTk1QX0lQWF9ERUZBVUxUX1BPUlQJMzY4NzkgICAvKiAgU3BlY2lmaWVkIGluIFJGQyAxNDIwLiAgKi8KIHN0YXRpYyBuZXRzbm1wX3Rkb21haW4gaXB4RG9tYWluOwpAQCAtMTgyLDExICsxODMsMTYgQEAKICAgICBuZXRzbm1wX3RyYW5zcG9ydCAqdCA9IE5VTEw7CiAgICAgaW50ICAgICAgICAgICAgIHJjID0gMDsKIAorI2lmZGVmIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQKKyAgICBpZiAobG9jYWwpCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KKwogICAgIGlmIChhZGRyID09IE5VTEwgfHwgYWRkci0+c2lweF9mYW1pbHkgIT0gQUZfSVBYKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHQgPSAobmV0c25tcF90cmFuc3BvcnQgKikgbWFsbG9jKHNpemVvZihuZXRzbm1wX3RyYW5zcG9ydCkpOworICAgIHQgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdHJhbnNwb3J0KTsKICAgICBpZiAodCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTE5OSw4ICsyMDUsNiBAQAogICAgICAgICBmcmVlKHN0cik7CiAgICAgfQogCi0gICAgbWVtc2V0KHQsIDAsIHNpemVvZihuZXRzbm1wX3RyYW5zcG9ydCkpOwotCiAgICAgdC0+ZG9tYWluID0gbmV0c25tcElQWERvbWFpbjsKICAgICB0LT5kb21haW5fbGVuZ3RoID0gbmV0c25tcElQWERvbWFpbl9sZW47CiAKQEAgLTIxMSw2ICsyMTUsNyBAQAogICAgIH0KIAogICAgIGlmIChsb2NhbCkgeworI2lmbmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCiAgICAgICAgIHQtPmxvY2FsID0gKHVuc2lnbmVkIGNoYXIqKW1hbGxvYygxMik7CiAgICAgICAgIGlmICh0LT5sb2NhbCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBuZXRzbm1wX3RyYW5zcG9ydF9mcmVlKHQpOwpAQCAtMjM2LDYgKzI0MSw5IEBACiAgICAgICAgIH0KICAgICAgICAgdC0+ZGF0YSA9IE5VTEw7CiAgICAgICAgIHQtPmRhdGFfbGVuZ3RoID0gMDsKKyNlbHNlIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLwogICAgIH0gZWxzZSB7CiAgICAgICAgIHQtPnJlbW90ZSA9ICh1bnNpZ25lZCBjaGFyKiltYWxsb2MoMTIpOwogICAgICAgICBpZiAodC0+cmVtb3RlID09IE5VTEwpIHsKZGlmZiAtLWdpdCBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4uYyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4uYwppbmRleCA5ZjRiNmE5Li4wNWUxNTBiIDEwMDY0NAotLS0gYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmMKKysrIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5jCkBAIC0yMDIsMTkgKzIwMiwxOSBAQAogICAgICAgICB0byA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikgJihhZGRyX3BhaXItPnJlbW90ZV9hZGRyKTsKICAgICAgICAgaWYgKHRvID09IE5VTEwpIHsKICAgICAgICAgICAgIHNucHJpbnRmKHRtcCwgc2l6ZW9mKHRtcCksICIlczogdW5rbm93bi0+WyVzXTolaHUiLCBwcmVmaXgsCi0gICAgICAgICAgICAgICAgICAgICBpbmV0X250b2EoYWRkcl9wYWlyLT5sb2NhbF9hZGRyLnNpbl9hZGRyKSwKLSAgICAgICAgICAgICAgICAgICAgIG50b2hzKGFkZHJfcGFpci0+bG9jYWxfYWRkci5zaW5fcG9ydCkpOworICAgICAgICAgICAgICAgICAgICAgaW5ldF9udG9hKGFkZHJfcGFpci0+bG9jYWxfYWRkci5zaW4uc2luX2FkZHIpLAorICAgICAgICAgICAgICAgICAgICAgbnRvaHMoYWRkcl9wYWlyLT5sb2NhbF9hZGRyLnNpbi5zaW5fcG9ydCkpOwogICAgICAgICB9IGVsc2UgaWYgKCB0ICYmIHQtPmZsYWdzICYgTkVUU05NUF9UUkFOU1BPUlRfRkxBR19IT1NUTkFNRSApIHsKICAgICAgICAgICAgIC8qIFhYWDogaG1tLi4uICB3aHkgaXNuJ3QgdGhpcyBwcmVmaXhlZCAqLwogICAgICAgICAgICAgLyogYXNzdW1pbmcgaW50ZW50aW9uYWwgKi8KLSAgICAgICAgICAgIGhvc3QgPSBnZXRob3N0YnlhZGRyKChjaGFyICopJnRvLT5zaW5fYWRkciwgNCwgQUZfSU5FVCk7CisgICAgICAgICAgICBob3N0ID0gbmV0c25tcF9nZXRob3N0YnlhZGRyKChjaGFyICopJnRvLT5zaW5fYWRkciwgc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSwgQUZfSU5FVCk7CiAgICAgICAgICAgICByZXR1cm4gKGhvc3QgPyBzdHJkdXAoaG9zdC0+aF9uYW1lKSA6IE5VTEwpOyAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNucHJpbnRmKHRtcCwgc2l6ZW9mKHRtcCksICIlczogWyVzXTolaHUtPiIsIHByZWZpeCwKICAgICAgICAgICAgICAgICAgICAgIGluZXRfbnRvYSh0by0+c2luX2FkZHIpLCBudG9ocyh0by0+c2luX3BvcnQpKTsKICAgICAgICAgICAgIHNucHJpbnRmKHRtcCArIHN0cmxlbih0bXApLCBzaXplb2YodG1wKS1zdHJsZW4odG1wKSwgIlslc106JWh1IiwKLSAgICAgICAgICAgICAgICAgICAgIGluZXRfbnRvYShhZGRyX3BhaXItPmxvY2FsX2FkZHIuc2luX2FkZHIpLAotICAgICAgICAgICAgICAgICAgICAgbnRvaHMoYWRkcl9wYWlyLT5sb2NhbF9hZGRyLnNpbl9wb3J0KSk7CisgICAgICAgICAgICAgICAgICAgICBpbmV0X250b2EoYWRkcl9wYWlyLT5sb2NhbF9hZGRyLnNpbi5zaW5fYWRkciksCisgICAgICAgICAgICAgICAgICAgICBudG9ocyhhZGRyX3BhaXItPmxvY2FsX2FkZHIuc2luLnNpbl9wb3J0KSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgdG1wW3NpemVvZih0bXApLTFdID0gJ1wwJzsKZGlmZiAtLWdpdCBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4uYyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4uYwppbmRleCAyZWQ0NjhkLi45YWZhOGZhIDEwMDY0NAotLS0gYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmMKKysrIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5jCkBAIC0zLDggKzMsMTEgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorCiAjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmg+CiAKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtOTAsNyArOTMsNyBAQAogICAgIGNoYXIgYWRkcltJTkVUNl9BRERSU1RSTEVOXTsKICAgICBjaGFyIHRtcFtJTkVUNl9BRERSU1RSTEVOICsgMThdOwogCi0gICAgREVCVUdNU0dUTCgoIm5ldHNubXBfdWRwNiIsICJmbXRhZGRyOiB0ID0gJXAsIGRhdGEgPSAlcCwgbGVuID0gJWRcbiIsIHQsCisgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfaXB2NiIsICJmbXRhZGRyOiB0ID0gJXAsIGRhdGEgPSAlcCwgbGVuID0gJWRcbiIsIHQsCiAgICAgICAgICAgICAgICAgZGF0YSwgbGVuKSk7CiAgICAgaWYgKGRhdGEgIT0gTlVMTCAmJiBsZW4gPT0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKSB7CiAgICAgICAgIHRvID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKikgZGF0YTsKQEAgLTMzNiwxNiArMzM5LDkgQEAKICAgICAgICAgICAgIGhpbnQuYWlfc29ja3R5cGUgPSBTT0NLX0RHUkFNOwogICAgICAgICAgICAgaGludC5haV9wcm90b2NvbCA9IDA7CiAKLSAgICAgICAgICAgIGVyciA9IGdldGFkZHJpbmZvKHBlZXJuYW1lLCBOVUxMLCAmaGludCwgJmFkZHJzKTsKKyAgICAgICAgICAgIGVyciA9IG5ldHNubXBfZ2V0YWRkcmluZm8ocGVlcm5hbWUsIE5VTEwsICZoaW50LCAmYWRkcnMpOwogICAgICAgICB9CiAgICAgICAgIGlmIChlcnIgIT0gMCkgewotI2lmIEhBVkVfR0FJX1NUUkVSUk9SCi0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZ2V0YWRkcmluZm8oXCIlc1wiLCBOVUxMLCAuLi4pOiAlc1xuIiwgcGVlcm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICBnYWlfc3RyZXJyb3IoZXJyKSk7Ci0jZWxzZQotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImdldGFkZHJpbmZvKFwiJXNcIiwgTlVMTCwgLi4uKTogKGVycm9yICVkKVxuIiwKLSAgICAgICAgICAgICAgICAgICAgIHBlZXJuYW1lLCBlcnIpOwotI2VuZGlmCiAgICAgICAgICAgICBmcmVlKHBlZXJuYW1lKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC0zNzAsNyArMzY2LDcgQEAKICAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfc29ja2FkZHJfaW42XzIiLCAiaG9zdG5hbWUgKHJlc29sdmVkIG9rYXkpXG4iKSk7CiAgICAgICAgIG1lbWNweSgmKGFkZHItPnNpbjZfYWRkciksIGhwLT5oX2FkZHIsIGhwLT5oX2xlbmd0aCk7CiAjZWxpZiBIQVZFX0dFVEhPU1RCWU5BTUUKLSAgICAgICAgaHAgPSBnZXRob3N0YnluYW1lKHBlZXJuYW1lKTsKKyAgICAgICAgaHAgPSBuZXRzbm1wX2dldGhvc3RieW5hbWUocGVlcm5hbWUpOwogICAgICAgICBpZiAoaHAgPT0gTlVMTCkgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfc29ja2FkZHJfaW42XzIiLAogICAgICAgICAgICAgICAgICAgICAgICAgImhvc3RuYW1lIChjb3VsZG4ndCByZXNvbHZlKVxuIikpOwpAQCAtNDE5LDMgKzQxNSw1IEBACiAgICAgc3ByaW50ZihidWYsICI6JXUiLCByZW1vdGVfcG9ydCk7CiAgICAgcmV0dXJuIG5ldHNubXBfc29ja2FkZHJfaW42XzIoYWRkciwgaW5wZWVybmFtZSwgcmVtb3RlX3BvcnQgPyBidWYgOiBOVUxMKTsKIH0KKworI2VuZGlmIC8qIE5FVFNOTVBfRU5BQkxFX0lQVjYgKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wU1NIRG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5jCmluZGV4IDdmNTFmODYuLmE5ZWQ4MWYgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wU1NIRG9tYWluLmMKKysrIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4uYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wU1NIRG9tYWluLmg+CiAKQEAgLTYwLDYgKzYxLDggQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBTb2NrZXRCYXNlRG9tYWluLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh1c2VyX2luZm9ybWF0aW9uKQorCiAjZGVmaW5lIE1BWF9OQU1FX0xFTkdUSCAxMjcKIAogI2RlZmluZSBORVRTTk1QX1NTSFRPU05NUF9WRVJTSU9OMSAgICAgIDEKQEAgLTgwLDEwICs4Myw2IEBACiBjb25zdCBvaWQgbmV0c25tcF9zbm1wU1NIRG9tYWluW10gPSB7IFRSQU5TUE9SVF9ET01BSU5fU1NIX0lQIH07CiBzdGF0aWMgbmV0c25tcF90ZG9tYWluIHNzaERvbWFpbjsKIAotY29uc3QgY2hhciAqa2V5ZmlsZTE9Ii9ob21lL2hhcmRha2VyLy5zc2gvaWRfcnNhLnB1YiI7Ci1jb25zdCBjaGFyICprZXlmaWxlMj0iL2hvbWUvaGFyZGFrZXIvLnNzaC9pZF9yc2EiOwotY29uc3QgY2hhciAqdXNlcm5hbWU9ImhhcmRha2VyIjsKLQogI2RlZmluZSBTTk1QU1NIRE9NQUlOX1VTRV9FWFRFUk5BTF9QSVBFIDEKIAogLyoKQEAgLTU4NCw2ICs1ODMsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1NTSFRPU05NUF9TT0NLRVQpOwogICAgIGNoYXIgdG1wc29ja3BhdGhbTUFYUEFUSExFTl07CiAKKyNpZmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCisgICAgaWYgKGxvY2FsKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCisKICAgICBpZiAoYWRkciA9PSBOVUxMIHx8IGFkZHItPnNpbl9mYW1pbHkgIT0gQUZfSU5FVCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC01OTIsNyArNTk2LDYgQEAKICAgICBpZiAodCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBtZW1zZXQodCwgMCwgc2l6ZW9mKG5ldHNubXBfdHJhbnNwb3J0KSk7CiAKICAgICB0LT5kb21haW4gPSBuZXRzbm1wX3NubXBTU0hEb21haW47CiAgICAgdC0+ZG9tYWluX2xlbmd0aCA9IG5ldHNubXBfc25tcFNTSERvbWFpbl9sZW47CkBAIC02MDcsNiArNjEwLDcgQEAKICAgICB0LT5kYXRhX2xlbmd0aCA9IHNpemVvZihuZXRzbm1wX3NzaF9hZGRyX3BhaXIpOwogCiAgICAgaWYgKGxvY2FsKSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQKICNpZmRlZiBTTk1QU1NIRE9NQUlOX1VTRV9FWFRFUk5BTF9QSVBFCiAKICAgICAgICAgLyogWFhYOiBzZXQgdC0+bG9jYWwgYW5kIHQtPmxvY2FsX2xlbmd0aCAqLwpAQCAtNzE1LDkgKzcxOSw0MiBAQAogICAgICAgICAvKiBYWFg6IHZlcmlmeSB3ZSdyZSBpbnNpZGUgc3NoICovCiAgICAgICAgIHQtPnNvY2sgPSBTVERJTl9GSUxFTk87CiAjZW5kaWYgLyogISBTTk1QU1NIRE9NQUlOX1VTRV9FWFRFUk5BTF9QSVBFICovCi0KKyNlbHNlIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLwogICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIFhYWDogbmVlZCBhbiBpcHY2IGZyaWVuZGx5IG9uZSB0b28gKHNpZ2gpICovCisgICAgICAgIGNoYXIgKnVzZXJuYW1lOworICAgICAgICBjaGFyICprZXlmaWxlcHViOworICAgICAgICBjaGFyICprZXlmaWxlcHJpdjsKKyAgICAgICAgCisgICAgICAgIC8qIHVzZSB0aGUgcmVxdWVzdGVkIHVzZXIgbmFtZSAqLworICAgICAgICAvKiBYWFg6IGRlZmF1bHQgdG8gdGhlIGN1cnJlbnQgdXNlciBuYW1lIG9uIHRoZSBzeXN0ZW0gbGlrZSBzc2ggZG9lcyAqLworICAgICAgICB1c2VybmFtZSA9IG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1NTSF9VU0VSTkFNRSk7CisgICAgICAgIGlmICghdXNlcm5hbWUgfHwgMCA9PSAqdXNlcm5hbWUpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJZb3UgbXVzdCBzcGVjaWZ5IGEgc3NoIHVzZXJuYW1lIHRvIHVzZS4gIFNlZSB0aGUgc25tcC5jb25mIG1hbnVhbCBwYWdlXG4iKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgLyogdXNlIHRoZSByZXF1ZXN0ZWQgcHVibGljIGtleSBmaWxlICovCisgICAgICAgIGtleWZpbGVwdWIgPSBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1NTSF9QVUJLRVkpOworICAgICAgICBpZiAoIWtleWZpbGVwdWIgfHwgMCA9PSAqa2V5ZmlsZXB1YikgeworICAgICAgICAgICAgLyogWFhYOiBkZWZhdWx0IHRvIH4vLnNzaC9pZF9yc2EucHViICovCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiWW91IG11c3Qgc3BlY2lmeSBhIHNzaCBwdWJsaWMga2V5IGZpbGUgdG8gdXNlLiAgU2VlIHRoZSBzbm1wLmNvbmYgbWFudWFsIHBhZ2VcbiIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICAvKiB1c2UgdGhlIHJlcXVlc3RlZCBwcml2YXRlIGtleSBmaWxlICovCisgICAgICAgIGtleWZpbGVwcml2ID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfU1NIX1BSSVZLRVkpOworICAgICAgICBpZiAoIWtleWZpbGVwcml2IHx8IDAgPT0gKmtleWZpbGVwcml2KSB7CisgICAgICAgICAgICAvKiBYWFg6IGRlZmF1bHQgdG8ga2V5ZmlsZXB1YiB3aXRob3V0IHRoZSAucHViIHN1ZmZpeCAqLworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIllvdSBtdXN0IHNwZWNpZnkgYSBzc2ggcHJpdmF0ZSBrZXkgZmlsZSB0byB1c2UuICBTZWUgdGhlIHNubXAuY29uZiBtYW51YWwgcGFnZVxuIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIHh4eDogbmVlZCBhbiBpcHY2IGZyaWVuZGx5IG9uZSB0b28gKHNpZ2gpICovCiAKICAgICAgICAgLyogWFhYOiBub3QgaWRlYWwgd2hlbiBzdHJ1Y3RzIGRvbid0IGFjdHVhbGx5IG1hdGNoIHNpemUgd2lzZSAqLwogICAgICAgICBtZW1jcHkoJihhZGRyX3BhaXItPnJlbW90ZV9hZGRyKSwgYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwpAQCAtODA0LDcgKzg0MSw3IEBACiAgICAgICAgICAgICAvKiBwdWJsaWMga2V5ICovCiAgICAgICAgICAgICBpZiAobGlic3NoMl91c2VyYXV0aF9wdWJsaWNrZXlfZnJvbWZpbGUoYWRkcl9wYWlyLT5zZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWZpbGUxLCBrZXlmaWxlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlmaWxlcHViLCBrZXlmaWxlcHJpdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSkgewogICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsIkF1dGhlbnRpY2F0aW9uIGJ5IHB1YmxpYyBrZXkgZmFpbGVkIVxuIik7CiAgICAgICAgICAgICAgICAgZ290byBzaHV0ZG93bjsKQEAgLTk1NCw2ICs5OTEsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQlJBUllfSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfU1NIVE9TTk1QX1NPQ0tFVCk7CiAKKyAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fT0NURVRfU1RSLCAic25tcCIsICJzc2h1c2VybmFtZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1NTSF9VU0VSTkFNRSk7CisKKyAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fT0NURVRfU1RSLCAic25tcCIsICJzc2hwdWJsaWNrZXkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9TU0hfUFVCS0VZKTsKKworICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9PQ1RFVF9TVFIsICJzbm1wIiwgInNzaHByaXZhdGVrZXkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9TU0hfUFJJVktFWSk7CisKICAgICBERUJVR01TR1RMKCgic3NoIiwgInJlZ2lzdGVyaW5nIHRoZSBzc2ggZG9tYWluXG4iKSk7CiAgICAgbmV0c25tcF90ZG9tYWluX3JlZ2lzdGVyKCZzc2hEb21haW4pOwogfQpkaWZmIC0tZ2l0IGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBTVEREb21haW4uYyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wU1RERG9tYWluLmMKaW5kZXggMjFlMGQ3OS4uMGExYzNmOSAxMDA2NDQKLS0tIGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBTVEREb21haW4uYworKysgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFNURERvbWFpbi5jCkBAIC0xNTQsMTEgKzE1NCwxMCBAQAogewogICAgIG5ldHNubXBfdHJhbnNwb3J0ICp0OwogCi0gICAgdCA9IChuZXRzbm1wX3RyYW5zcG9ydCAqKSBtYWxsb2Moc2l6ZW9mKG5ldHNubXBfdHJhbnNwb3J0KSk7CisgICAgdCA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90cmFuc3BvcnQpOwogICAgIGlmICh0ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG1lbXNldCh0LCAwLCBzaXplb2YobmV0c25tcF90cmFuc3BvcnQpKTsKIAogICAgIHQtPmRvbWFpbiA9IG5ldHNubXBfc25tcFNURERvbWFpbjsKICAgICB0LT5kb21haW5fbGVuZ3RoID0KZGlmZiAtLWdpdCBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVENQRG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5jCmluZGV4IGExMDNmMDYuLjdmZWIwMjggMTAwNjQ0Ci0tLSBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVENQRG9tYWluLmMKKysrIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4uYwpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wU29ja2V0QmFzZURvbWFpbi5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFRDUEJhc2VEb21haW4uaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmg+CiAKIC8qCiAgKiBuZWVkcyB0byBiZSBpbiBzeW5jIHdpdGggdGhlIGRlZmluaXRpb25zIGluIHNubXBsaWIvc25tcFVEUERvbWFpbi5jCkBAIC03NiwxMCArNzcsOSBAQAogICAgIHN0cnVjdCBzb2NrYWRkciAqZmFyZW5kID0gTlVMTDsKICAgICBuZXRzbm1wX3VkcF9hZGRyX3BhaXIgKmFkZHJfcGFpciA9IE5VTEw7CiAgICAgaW50ICAgICAgICAgICAgIG5ld3NvY2sgPSAtMTsKLSAgICBzb2NrbGVuX3QgICAgICAgZmFyZW5kbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CisgICAgc29ja2xlbl90ICAgICAgIGZhcmVuZGxlbiA9IHNpemVvZihuZXRzbm1wX3VkcF9hZGRyX3BhaXIpOwogCi0gICAgYWRkcl9wYWlyID0gKG5ldHNubXBfdWRwX2FkZHJfcGFpciAqKW1hbGxvYyhzaXplb2YobmV0c25tcF91ZHBfYWRkcl9wYWlyKSk7Ci0KKyAgICBhZGRyX3BhaXIgPSAobmV0c25tcF91ZHBfYWRkcl9wYWlyICopbWFsbG9jKGZhcmVuZGxlbik7CiAgICAgaWYgKGFkZHJfcGFpciA9PSBOVUxMKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIEluZGljYXRlIHRoYXQgdGhlIGFjY2VwdGFuY2Ugb2YgdGhpcyBzb2NrZXQgZmFpbGVkLiAgCkBAIC04OCw3ICs4OCw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgbWVtc2V0KGFkZHJfcGFpciwgMCwgc2l6ZW9mICphZGRyX3BhaXIpOwotICAgIGZhcmVuZCA9IChzdHJ1Y3Qgc29ja2FkZHIgKikgJihhZGRyX3BhaXItPnJlbW90ZV9hZGRyKTsKKyAgICBmYXJlbmQgPSAmYWRkcl9wYWlyLT5yZW1vdGVfYWRkci5zYTsKIAogICAgIGlmICh0ICE9IE5VTEwgJiYgdC0+c29jayA+PSAwKSB7CiAgICAgICAgIG5ld3NvY2sgPSBhY2NlcHQodC0+c29jaywgZmFyZW5kLCAmZmFyZW5kbGVuKTsKQEAgLTk2LDcgKzk2LDcgQEAKICAgICAgICAgaWYgKG5ld3NvY2sgPCAwKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF90Y3AiLCAiYWNjZXB0IGZhaWxlZCByYyAlZCBlcnJubyAlZCBcIiVzXCJcbiIsCiAJCQluZXdzb2NrLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKSk7Ci0gICAgICAgICAgICBmcmVlKGZhcmVuZCk7CisgICAgICAgICAgICBmcmVlKGFkZHJfcGFpcik7CiAgICAgICAgICAgICByZXR1cm4gbmV3c29jazsKICAgICAgICAgfQogCkBAIC0xMzAsNyArMTMwLDcgQEAKIAogICAgICAgICByZXR1cm4gbmV3c29jazsKICAgICB9IGVsc2UgewotICAgICAgICBmcmVlKGZhcmVuZCk7CisgICAgICAgIGZyZWUoYWRkcl9wYWlyKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIH0KQEAgLTE1MCwxNiArMTUwLDE5IEBACiAgICAgbmV0c25tcF91ZHBfYWRkcl9wYWlyICphZGRyX3BhaXIgPSBOVUxMOwogICAgIGludCByYyA9IDA7CiAKKyNpZmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCisgICAgaWYgKGxvY2FsKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCiAKICAgICBpZiAoYWRkciA9PSBOVUxMIHx8IGFkZHItPnNpbl9mYW1pbHkgIT0gQUZfSU5FVCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICB0ID0gKG5ldHNubXBfdHJhbnNwb3J0ICopIG1hbGxvYyhzaXplb2YobmV0c25tcF90cmFuc3BvcnQpKTsKKyAgICB0ID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RyYW5zcG9ydCk7CiAgICAgaWYgKHQgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbWVtc2V0KHQsIDAsIHNpemVvZihuZXRzbm1wX3RyYW5zcG9ydCkpOwogCiAgICAgYWRkcl9wYWlyID0gKG5ldHNubXBfdWRwX2FkZHJfcGFpciAqKW1hbGxvYyhzaXplb2YobmV0c25tcF91ZHBfYWRkcl9wYWlyKSk7CiAgICAgaWYgKGFkZHJfcGFpciA9PSBOVUxMKSB7CkBAIC0xODQsNiArMTg3LDcgQEAKICAgICB0LT5mbGFncyA9IE5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfU1RSRUFNOwogCiAgICAgaWYgKGxvY2FsKSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQKICAgICAgICAgaW50IG9wdCA9IDE7CiAKICAgICAgICAgLyoKQEAgLTI0Miw3ICsyNDYsOSBAQAogICAgICAgICAvKgogICAgICAgICAgKiBubyBidWZmZXIgc2l6ZSBvbiBsaXN0ZW4gc29ja2V0IC0gZG9lc24ndCBtYWtlIHNlbnNlCiAgICAgICAgICAqLwotCisjZWxzZSAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KICAgICB9IGVsc2UgewogICAgICAgdC0+cmVtb3RlID0gKHVfY2hhciAqKW1hbGxvYyg2KTsKICAgICAgICAgaWYgKHQtPnJlbW90ZSA9PSBOVUxMKSB7CmRpZmYgLS1naXQgYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFRDUElQdjZEb21haW4uYyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVENQSVB2NkRvbWFpbi5jCmluZGV4IDJhNTllZWEuLmQyZTBhMmQgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVENQSVB2NkRvbWFpbi5jCisrKyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVENQSVB2NkRvbWFpbi5jCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFNvY2tldEJhc2VEb21haW4uaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BCYXNlRG9tYWluLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS90b29scy5oPgogCiAjaW5jbHVkZSAiaW5ldF9udG9wLmgiCiAKQEAgLTE0MCwxNSArMTQxLDE5IEBACiAgICAgbmV0c25tcF90cmFuc3BvcnQgKnQgPSBOVUxMOwogICAgIGludCAgICAgICAgICAgICByYyA9IDA7CiAKKyNpZmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCisgICAgaWYgKGxvY2FsKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCisKICAgICBpZiAoYWRkciA9PSBOVUxMIHx8IGFkZHItPnNpbjZfZmFtaWx5ICE9IEFGX0lORVQ2KSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHQgPSAobmV0c25tcF90cmFuc3BvcnQgKikgbWFsbG9jKHNpemVvZihuZXRzbm1wX3RyYW5zcG9ydCkpOworICAgIHQgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdHJhbnNwb3J0KTsKICAgICBpZiAodCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBtZW1zZXQodCwgMCwgc2l6ZW9mKG5ldHNubXBfdHJhbnNwb3J0KSk7CiAKICAgICBERUJVR0lGKCJuZXRzbm1wX3RjcDYiKSB7CiAgICAgICAgIGNoYXIgKnN0ciA9IG5ldHNubXBfdGNwNl9mbXRhZGRyKE5VTEwsICh2b2lkICopYWRkciwKQEAgLTE1OCwxNCArMTYzLDEyIEBACiAgICAgICAgIGZyZWUoc3RyKTsKICAgICB9CiAKLSAgICBtZW1zZXQodCwgMCwgc2l6ZW9mKG5ldHNubXBfdHJhbnNwb3J0KSk7Ci0KLSAgICB0LT5kYXRhID0gbWFsbG9jKHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7CisgICAgdC0+ZGF0YSA9IG1hbGxvYyhzaXplb2YobmV0c25tcF9pbmRleGVkX2FkZHJfcGFpcikpOwogICAgIGlmICh0LT5kYXRhID09IE5VTEwpIHsKICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfZnJlZSh0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHQtPmRhdGFfbGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOworICAgIHQtPmRhdGFfbGVuZ3RoID0gc2l6ZW9mKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIpOwogICAgIG1lbWNweSh0LT5kYXRhLCBhZGRyLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpOwogCiAgICAgdC0+ZG9tYWluID0gbmV0c25tcF9UQ1BJUHY2RG9tYWluOwpAQCAtMTgwLDYgKzE4Myw3IEBACiAgICAgdC0+ZmxhZ3MgPSBORVRTTk1QX1RSQU5TUE9SVF9GTEFHX1NUUkVBTTsKIAogICAgIGlmIChsb2NhbCkgeworI2lmbmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCiAgICAgICAgIGludCBvcHQgPSAxOwogCiAgICAgICAgIC8qCkBAIC0yNDgsNyArMjUyLDkgQEAKICAgICAgICAgLyoKICAgICAgICAgICogbm8gYnVmZmVyIHNpemUgb24gbGlzdGVuIHNvY2tldCAtIGRvZXNuJ3QgbWFrZSBzZW5zZQogICAgICAgICAgKi8KLQorI2Vsc2UgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLworICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCiAgICAgfSBlbHNlIHsKICAgICAgICAgdC0+cmVtb3RlID0gKHVuc2lnbmVkIGNoYXIqKW1hbGxvYygxOCk7CiAgICAgICAgIGlmICh0LT5yZW1vdGUgPT0gTlVMTCkgewpkaWZmIC0tZ2l0IGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYwppbmRleCBiMWU5NDY1Li5jNTRkNmFkIDEwMDY0NAotLS0gYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYworKysgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYwpAQCAtMSw1ICsxLDkgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNlcnRfdXRpbCkKKwogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFRMU0Jhc2VEb21haW4uaD4KIAogI2lmIEhBVkVfRE1BTExPQ19ICkBAIC0zNCw2ICszOCw3IEBACiAjaW5jbHVkZSA8b3BlbnNzbC94NTA5djMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvY29uZmlnX2FwaS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY2VydF91dGlsLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX29wZW5zc2wuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaD4KQEAgLTQ1LDYgKzUwLDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0Lmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaD4KIAogI2RlZmluZSBMT0dBTkRESUUobXNnKSBkbyB7IHNubXBfbG9nKExPR19FUlIsICIlc1xuIiwgbXNnKTsgcmV0dXJuIDA7IH0gd2hpbGUoMCkKQEAgLTE1MSwyNiArMTU3LDI2IEBACiAKICAgICBpZiAoIXRsc2RhdGEtPnRoZWlyX2ZpbmdlcnByaW50ICYmIHRsc2RhdGEtPnRoZWlyX2lkZW50aXR5KSB7CiAgICAgICAgIC8qIHdlIGhhdmUgYW4gaWRlbnRpdHk7IHRyeSBhbmQgZmluZCBpdCdzIGZpbmdlcnByaW50ICovCi0gICAgICAgIG5ldHNubXBfY2VydCAqdGhlaXJfY2VydDsKLSAgICAgICAgdGhlaXJfY2VydCA9CisgICAgICAgIG5ldHNubXBfY2VydCAqcGVlcl9jZXJ0OworICAgICAgICBwZWVyX2NlcnQgPQogICAgICAgICAgICAgbmV0c25tcF9jZXJ0X2ZpbmQoTlNfQ0VSVF9SRU1PVEVfUEVFUiwgTlNfQ0VSVEtFWV9NVUxUSVBMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRsc2RhdGEtPnRoZWlyX2lkZW50aXR5KTsKIAotICAgICAgICBpZiAodGhlaXJfY2VydCkKKyAgICAgICAgaWYgKHBlZXJfY2VydCkKICAgICAgICAgICAgIHRsc2RhdGEtPnRoZWlyX2ZpbmdlcnByaW50ID0KLSAgICAgICAgICAgICAgICBuZXRzbm1wX29wZW5zc2xfY2VydF9nZXRfZmluZ2VycHJpbnQodGhlaXJfY2VydC0+b2NlcnQsIC0xKTsKKyAgICAgICAgICAgICAgICBuZXRzbm1wX29wZW5zc2xfY2VydF9nZXRfZmluZ2VycHJpbnQocGVlcl9jZXJ0LT5vY2VydCwgLTEpOwogICAgIH0KIAogICAgIGlmICghdGxzZGF0YS0+dGhlaXJfZmluZ2VycHJpbnQgJiYgdHJ5X2RlZmF1bHQpIHsKICAgICAgICAgLyogdHJ5IGZvciB0aGUgZGVmYXVsdCBpbnN0ZWFkICovCi0gICAgICAgIG5ldHNubXBfY2VydCAqdGhlaXJfY2VydDsKLSAgICAgICAgdGhlaXJfY2VydCA9CisgICAgICAgIG5ldHNubXBfY2VydCAqcGVlcl9jZXJ0OworICAgICAgICBwZWVyX2NlcnQgPQogICAgICAgICAgICAgbmV0c25tcF9jZXJ0X2ZpbmQoTlNfQ0VSVF9SRU1PVEVfUEVFUiwgTlNfQ0VSVEtFWV9ERUZBVUxULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CiAKLSAgICAgICAgaWYgKHRoZWlyX2NlcnQpCisgICAgICAgIGlmIChwZWVyX2NlcnQpCiAgICAgICAgICAgICB0bHNkYXRhLT50aGVpcl9maW5nZXJwcmludCA9Ci0gICAgICAgICAgICAgICAgbmV0c25tcF9vcGVuc3NsX2NlcnRfZ2V0X2ZpbmdlcnByaW50KHRoZWlyX2NlcnQtPm9jZXJ0LCAtMSk7CisgICAgICAgICAgICAgICAgbmV0c25tcF9vcGVuc3NsX2NlcnRfZ2V0X2ZpbmdlcnByaW50KHBlZXJfY2VydC0+b2NlcnQsIC0xKTsKICAgICB9CiAgICAgCiAgICAgaWYgKHRsc2RhdGEtPnRoZWlyX2ZpbmdlcnByaW50KSB7CkBAIC01NzksOCArNTg1LDcgQEAKICAgICAgICAgTE9HQU5ERElFKCJjYW4ndCBjcmVhdGUgYSBuZXcgY29udGV4dCIpOwogICAgIH0KIAotICAgIGlkX2NlcnQgPSBuZXRzbm1wX2NlcnRfZmluZChOU19DRVJUX0lERU5USVRZLCBOU19DRVJUS0VZX0RFRkFVTFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKikxKTsKKyAgICBpZF9jZXJ0ID0gbmV0c25tcF9jZXJ0X2ZpbmQoTlNfQ0VSVF9JREVOVElUWSwgTlNfQ0VSVEtFWV9ERUZBVUxULCBOVUxMKTsKICAgICBpZiAoIWlkX2NlcnQpCiAgICAgICAgIExPR0FORERJRSAoImVycm9yIGZpbmRpbmcgc2VydmVyIGlkZW50aXR5IGtleXMiKTsKIApAQCAtNjIxLDI0ICs2MjYsMjggQEAKIAogICAgIHRsc2RhdGEgPSB0LT5kYXRhOwogCi0gICAgaWYgKHN0cmNtcCh0b2tlbiwgIm91cl9pZGVudGl0eSIpID09IDApIHsKKyAgICBpZiAoKHN0cmNtcCh0b2tlbiwgImxvY2FsQ2VydCIpID09IDApIHx8CisgICAgICAgIChzdHJjbXAodG9rZW4sICJvdXJfaWRlbnRpdHkiKSA9PSAwKSkgewogICAgICAgICBTTk1QX0ZSRUUodGxzZGF0YS0+b3VyX2lkZW50aXR5KTsKICAgICAgICAgdGxzZGF0YS0+b3VyX2lkZW50aXR5ID0gc3RyZHVwKHZhbHVlKTsKICAgICAgICAgREVCVUdNU0dUKCgidGxzOmNvbmZpZyIsIm91ciBpZGVudGl0eSAlc1xuIiwgdmFsdWUpKTsKICAgICB9CiAKLSAgICBpZiAoc3RyY21wKHRva2VuLCAidGhlaXJfaWRlbnRpdHkiKSA9PSAwKSB7CisgICAgaWYgKChzdHJjbXAodG9rZW4sICJwZWVyQ2VydCIpID09IDApIHx8CisgICAgICAgIChzdHJjbXAodG9rZW4sICJ0aGVpcl9pZGVudGl0eSIpID09IDApKSB7CiAgICAgICAgIFNOTVBfRlJFRSh0bHNkYXRhLT50aGVpcl9pZGVudGl0eSk7CiAgICAgICAgIHRsc2RhdGEtPnRoZWlyX2lkZW50aXR5ID0gc3RyZHVwKHZhbHVlKTsKICAgICAgICAgREVCVUdNU0dUKCgidGxzOmNvbmZpZyIsInRoZWlyIGlkZW50aXR5ICVzXG4iLCB2YWx1ZSkpOwogICAgIH0KIAotICAgIGlmIChzdHJjbXAodG9rZW4sICJ0aGVpcl9ob3N0bmFtZSIpID09IDApIHsKKyAgICBpZiAoKHN0cmNtcCh0b2tlbiwgInBlZXJIb3N0bmFtZSIpID09IDApIHx8CisgICAgICAgIChzdHJjbXAodG9rZW4sICJ0aGVpcl9ob3N0bmFtZSIpID09IDApKSB7CiAgICAgICAgIFNOTVBfRlJFRSh0bHNkYXRhLT50aGVpcl9ob3N0bmFtZSk7CiAgICAgICAgIHRsc2RhdGEtPnRoZWlyX2hvc3RuYW1lID0gc3RyZHVwKHZhbHVlKTsKICAgICB9CiAKLSAgICBpZiAoc3RyY21wKHRva2VuLCAidHJ1c3RfY2VydCIpID09IDApIHsKKyAgICBpZiAoKHN0cmNtcCh0b2tlbiwgInRydXN0X2NlcnQiKSA9PSAwKSB8fAorICAgICAgICAoc3RyY21wKHRva2VuLCAidHJ1c3RDZXJ0IikgPT0gMCkpIHsKICAgICAgICAgU05NUF9GUkVFKHRsc2RhdGEtPnRydXN0X2NlcnQpOwogICAgICAgICB0bHNkYXRhLT50cnVzdF9jZXJ0ID0gc3RyZHVwKHZhbHVlKTsKICAgICB9CkBAIC03MDUsNiArNzE0LDMyIEBACiAgICAgcmV0dXJuIG9wZW5zc2xfbG9jYWxfaW5kZXg7CiB9CiAKK3N0YXRpYyB2b2lkIF9wYXJzZV9jbGllbnRfY2VydChjb25zdCBjaGFyICp0b2ssIGNoYXIgKmxpbmUpCit7CisgICAgY29uZmlnX3B3YXJuKCJjbGllbnRDZXJ0IGlzIGRlcHJlY2F0ZWQuIENsaWVudHMgc2hvdWxkIHVzZSBsb2NhbENlcnQsIHNlcnZlcnMgc2hvdWxkIHVzZSBwZWVyQ2VydCIpOworICAgIGlmICgqbGluZSA9PSAnIicpIHsKKyAgICAgICAgY2hhciBidWZbU05NUF9NQVhCVUZdOworICAgICAgICBjb3B5X253b3JkKGxpbmUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworICAgICAgICBuZXRzbm1wX2RzX3NldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfWDUwOV9DTElFTlRfUFVCLCBidWYpOworICAgIH0gZWxzZQorICAgICAgICBuZXRzbm1wX2RzX3NldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfWDUwOV9DTElFTlRfUFVCLCBsaW5lKTsKK30KKworc3RhdGljIHZvaWQgX3BhcnNlX3NlcnZlcl9jZXJ0KGNvbnN0IGNoYXIgKnRvaywgY2hhciAqbGluZSkKK3sKKyAgICBjb25maWdfcHdhcm4oInNlcnZlckNlcnQgaXMgZGVwcmVjYXRlZC4gQ2xpZW50cyBzaG91bGQgdXNlIHBlZXJDZXJ0LCBzZXJ2ZXJzIHNob3VsZCB1c2UgbG9jYWxDZXJ0LiIpOworICAgIGlmICgqbGluZSA9PSAnIicpIHsKKyAgICAgICAgY2hhciBidWZbU05NUF9NQVhCVUZdOworICAgICAgICBjb3B5X253b3JkKGxpbmUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworICAgICAgICBuZXRzbm1wX2RzX3NldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfWDUwOV9DTElFTlRfUFVCLCBidWYpOworICAgIH0gZWxzZQorICAgICAgICBuZXRzbm1wX2RzX3NldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfWDUwOV9TRVJWRVJfUFVCLCBsaW5lKTsKK30KKwogdm9pZAogbmV0c25tcF90bHNiYXNlX2N0b3Iodm9pZCkgewogCkBAIC03MzEsMjYgKzc2NiwyNSBAQAogICAgICAqLwogCiAgICAgLyogdGhlIHB1YmxpYyBjbGllbnQgY2VydCB0byBhdXRoZW50aWNhdGUgd2l0aCAqLwotICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9PQ1RFVF9TVFIsICJzbm1wIiwgImNsaWVudENlcnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X0NMSUVOVF9QVUIpOwotICAgIC8qIFhYWDogdGhpcyBvbmUgbmVlZHMgdG8gZ28gYXdheSBiZWZvcmUgNS42IGZpbmFsICovCi0gICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX09DVEVUX1NUUiwgInNubXAiLCAiZGVmWDUwOUNsaWVudFB1YiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJSQVJZX0lELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1g1MDlfQ0xJRU5UX1BVQik7CisgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXAiLCAiY2xpZW50Q2VydCIsIF9wYXJzZV9jbGllbnRfY2VydCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKIAogICAgIC8qCiAgICAgICogZm9yIHRoZSBzZXJ2ZXIKICAgICAgKi8KIAogICAgIC8qIFRoZSBYNTA5IHNlcnZlciBrZXkgdG8gdXNlICovCi0gICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX09DVEVUX1NUUiwgInNubXAiLCAic2VydmVyQ2VydCIsCisgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXAiLCAic2VydmVyQ2VydCIsIF9wYXJzZV9zZXJ2ZXJfY2VydCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAvKgorICAgICAqIHJlbW92ZSBjZXJ0IGNvbmZpZyBhbWJpZ3VpdHk6IGxvY2FsQ2VydCwgcGVlckNlcnQKKyAgICAgKi8KKyAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fT0NURVRfU1RSLCAic25tcCIsICJsb2NhbENlcnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9QVUIpOwotICAgIC8qIFhYWDogdGhpcyBvbmUgbmVlZHMgdG8gZ28gYXdheSBiZWZvcmUgNS42IGZpbmFsICovCi0gICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX09DVEVUX1NUUiwgInNubXAiLCAiZGVmWDUwOVNlcnZlclB1YiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfVExTX0xPQ0FMX0NFUlQpOworICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9PQ1RFVF9TVFIsICJzbm1wIiwgInBlZXJDZXJ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQlJBUllfSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfWDUwOV9TRVJWRVJfUFVCKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9UTFNfUEVFUl9DRVJUKTsKIAogICAgIC8qCiAgICAgICogcmVnaXN0ZXIgb3VyIGJvb3Qtc3RyYXBwaW5nIG5lZWRzCkBAIC05MDAsNiArOTM0LDggQEAKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoX3g1MDlfZ2V0X2Vycm9yLCBuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9fWDUwOV9HRVRfRVJST1IKIGNvbnN0IGNoYXIgKiBfeDUwOV9nZXRfZXJyb3IoaW50IHg1MDlmYWlsdmFsdWUsIGNvbnN0IGNoYXIgKmxvY2F0aW9uKSB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIgKnJlYXNvbiA9IE5VTEw7CiAgICAgCkBAIC0xMDU1LDYgKzEwOTEsNyBAQAogCiAgICAgcmV0dXJuIHJlYXNvbjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX19YNTA5X0dFVF9FUlJPUiAqLwogCiB2b2lkIF9vcGVuc3NsX2xvZ19lcnJvcihpbnQgcmMsIFNTTCAqY29uLCBjb25zdCBjaGFyICpsb2NhdGlvbikgewogICAgIGNvbnN0IGNoYXIgICAgICpyZWFzb24sICpmaWxlLCAqZGF0YTsKZGlmZiAtLWdpdCBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU1RDUERvbWFpbi5jCmluZGV4IGUzODBiZDUuLjQ3M2QwMmMgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmMKKysrIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4uYwpAQCAtOSw2ICs5LDEwIEBACiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNlcnRfdXRpbCkKKwogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFRMU1RDUERvbWFpbi5oPgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTEyOSw5ICsxMzMsOSBAQAogICAgICAgICBuZXd0bHNkYXRhLT50aGVpcl9ob3N0bmFtZSA9IHN0cmR1cChvbGR0bHNkYXRhLT50aGVpcl9ob3N0bmFtZSk7CiAgICAgaWYgKG9sZHRsc2RhdGEtPnRydXN0X2NlcnQpCiAgICAgICAgIG5ld3Rsc2RhdGEtPnRydXN0X2NlcnQgPSBzdHJkdXAob2xkdGxzZGF0YS0+dHJ1c3RfY2VydCk7Ci0gICAgaWYgKG9sZHRsc2RhdGEtPnJlbW90ZV9hZGRyKQotICAgICAgICBuZXd0bHNkYXRhLT5yZW1vdGVfYWRkciA9IG5ldHNubXBfbWVtZHVwKG9sZHRsc2RhdGEtPnJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgc2l6ZW9mKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIpKTsKKyAgICBpZiAob2xkdGxzZGF0YS0+YWRkcikKKyAgICAgICAgbmV3dGxzZGF0YS0+YWRkciA9IG5ldHNubXBfbWVtZHVwKG9sZHRsc2RhdGEtPmFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoKm9sZHRsc2RhdGEtPmFkZHIpKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtNzIzLDggKzcyNyw2IEBACiAgICAgICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9UTFNUTV9TTk1QVExTVE1TRVNTSU9OT1BFTkVSUk9SUyk7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidGxzdGNwOiBmYWlsZWQgdG8gY3JlYXRlIGJpb1xuIik7CiAgICAgICAgICAgICBfb3BlbnNzbF9sb2dfZXJyb3IocmMsIE5VTEwsICJCSU8gY3JlYXRpb24iKTsKLSAgICAgICAgICAgIFNOTVBfRlJFRSh0bHNkYXRhKTsKLSAgICAgICAgICAgIFNOTVBfRlJFRSh0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTczNiw4ICs3MzgsNiBAQAogCQkgICAgIHRsc2RhdGEtPmFkZHJfc3RyaW5nKTsKICAgICAgICAgICAgIF9vcGVuc3NsX2xvZ19lcnJvcihyYywgTlVMTCwgIkJJT19kb19jb25uZWN0Iik7CiAgICAgICAgICAgICBCSU9fZnJlZShiaW8pOwotICAgICAgICAgICAgU05NUF9GUkVFKHRsc2RhdGEpOwotICAgICAgICAgICAgU05NUF9GUkVFKHQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIApAQCAtNzQ3LDggKzc0Nyw2IEBACiAgICAgICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9UTFNUTV9TTk1QVExTVE1TRVNTSU9OT1BFTkVSUk9SUyk7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidGxzdGNwOiBmYWlsZWQgdG8gY3JlYXRlIGEgU1NMIGNvbm5lY3Rpb25cbiIpOwogICAgICAgICAgICAgQklPX2ZyZWUoYmlvKTsKLSAgICAgICAgICAgIFNOTVBfRlJFRSh0bHNkYXRhKTsKLSAgICAgICAgICAgIFNOTVBfRlJFRSh0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNzYyLDggKzc2MCw2IEBACiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidGxzdGNwOiBmYWlsZWQgdG8gY3JlYXRlIGEgU1NMIGNvbm5lY3Rpb25cbiIpOwogICAgICAgICAgICAgU1NMX3NodXRkb3duKHNzbCk7CiAgICAgICAgICAgICBCSU9fZnJlZShiaW8pOwotICAgICAgICAgICAgU05NUF9GUkVFKHRsc2RhdGEpOwotICAgICAgICAgICAgU05NUF9GUkVFKHQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIApAQCAtNzc0LDggKzc3MCw2IEBACiAgICAgICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9UTFNUTV9TTk1QVExTVE1TRVNTSU9OT1BFTkVSUk9SUyk7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidGxzdGNwOiBmYWlsZWQgdG8gc3NsX2Nvbm5lY3RcbiIpOwogICAgICAgICAgICAgQklPX2ZyZWUoYmlvKTsKLSAgICAgICAgICAgIFNOTVBfRlJFRSh0bHNkYXRhKTsKLSAgICAgICAgICAgIFNOTVBfRlJFRSh0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAKQEAgLTgzMCw4ICs4MjQsNiBAQAogICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInRsc3RjcDogZmFpbGVkIHRvIHZlcmlmeSBzc2wgY2VydGlmaWNhdGVcbiIpOwogICAgICAgICAgICAgU1NMX3NodXRkb3duKHNzbCk7CiAgICAgICAgICAgICBCSU9fZnJlZShiaW8pOwotICAgICAgICAgICAgU05NUF9GUkVFKHRsc2RhdGEpOwotICAgICAgICAgICAgU05NUF9GUkVFKHQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIApAQCAtODY5LDYgKzg2MSw3IEBACiAgICAgICAgIHQtPnNvY2sgPSBCSU9fZ2V0X2ZkKGJpbywgTlVMTCk7CiAKICAgICB9IGVsc2UgeworI2lmbmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCiAgICAgICAgIC8qIElzIHRoZSBzZXJ2ZXIgKi8KICAgICAgICAgCiAgICAgICAgIC8qIENyZWF0ZSB0aGUgc29ja2V0IGJpbyAqLwpAQCAtODc4LDggKzg3MSw2IEBACiAgICAgICAgIHQtPmxvY2FsID0gKHZvaWQgKikgc3RyZHVwKHRsc2RhdGEtPmFkZHJfc3RyaW5nKTsKICAgICAgICAgdC0+bG9jYWxfbGVuZ3RoID0gc3RybGVuKHRsc2RhdGEtPmFkZHJfc3RyaW5nKSsxOwogICAgICAgICBpZiAoTlVMTCA9PSB0bHNkYXRhLT5hY2NlcHRfYmlvKSB7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUodCk7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUodGxzZGF0YSk7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiVExTVENQOiBGYWxpZWQgdG8gY3JlYXRlIGEgYWNjZXB0IEJJT1xuIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtODg3LDggKzg3OCw2IEBACiAgICAgICAgIC8qIG9wZW5zc2wgcmVxdWlyZXMgYW4gaW5pdGlhbCBhY2NlcHQgdG8gYmluZCgpIHRoZSBzb2NrZXQgKi8KICAgICAgICAgaWYgKEJJT19kb19hY2NlcHQodGxzZGF0YS0+YWNjZXB0X2JpbykgPD0gMCkgewogCSAgICBfb3BlbnNzbF9sb2dfZXJyb3IocmMsIHRsc2RhdGEtPnNzbCwgIkJJT19kb19fYWNjZXB0Iik7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUodCk7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUodGxzZGF0YSk7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiVExTVENQOiBGYWxpZWQgdG8gZG8gZmlyc3QgYWNjZXB0IG9uIHRoZSBUTFMgYWNjZXB0IEJJT1xuIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtODk5LDYgKzg4OCw5IEBACiAKICAgICAgICAgdC0+c29jayA9IEJJT19nZXRfZmQodGxzZGF0YS0+YWNjZXB0X2JpbywgTlVMTCk7CiAgICAgICAgIHQtPmZsYWdzIHw9IE5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfTElTVEVOOworI2Vsc2UgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLworICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCiAgICAgfQogICAgIHJldHVybiB0OwogfQpAQCAtOTE3LDEyICs5MDksMTYgQEAKICAgICBjaGFyICpjcDsKICAgICBjaGFyIGJ1ZltTUFJJTlRfTUFYX0xFTl07CiAgICAgCisjaWZkZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAorICAgIGlmIChpc3NlcnZlcikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLworCiAgICAgLyogYWxsb2NhdGUgb3VyIHRyYW5zcG9ydCBzdHJ1Y3R1cmUgKi8KICAgICB0ID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RyYW5zcG9ydCk7CiAgICAgaWYgKE5VTEwgPT0gdCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbWVtc2V0KHQsIDAsIHNpemVvZihuZXRzbm1wX3RyYW5zcG9ydCkpOwogCiAgICAgLyogYWxsb2NhdGUgb3VyIFRMUyBzcGVjaWZpYyBkYXRhICovCiAgICAgaWYgKE5VTEwgPT0gKHRsc2RhdGEgPSBuZXRzbm1wX3Rsc2Jhc2VfYWxsb2NhdGVfdGxzZGF0YSh0LCBpc3NlcnZlcikpKQpkaWZmIC0tZ2l0IGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYwppbmRleCA1Y2IyOGQ2Li44NDk3ZjcxIDEwMDY0NAotLS0gYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYworKysgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYwpAQCAtMyw2ICszLDkgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmg+CisKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgpAQCAtMTUsOSArMTgsNiBAQAogI2Vsc2UKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjZW5kaWYKLSNpZiBIQVZFX1NZU19TT0NLRVRfSAotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNlbmRpZgogI2lmIEhBVkVfTkVUSU5FVF9JTl9ICiAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogI2VuZGlmCkBAIC0zNyw3ICszNyw2IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC90eXBlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFNvY2tldEJhc2VEb21haW4uaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS90b29scy5oPgpAQCAtNTMsMTIgKzUyLDYgQEAKICNkZWZpbmUgTVNHX05PU0lHTkFMIDAKICNlbmRpZgogCi0jaWYgZGVmaW5lZChJUF9SRUNWRFNUQUREUikgJiYgZGVmaW5lZChfX0RyYWdvbkZseV9fKQotIyBpZm5kZWYgSVBfU0VORFNSQ0FERFIKLSMgIGRlZmluZSBJUF9TRU5EU1JDQUREUiBJUF9SRUNWRFNUQUREUiAvKiBEcmFnb25GbHkgQlNEICovCi0jIGVuZGlmCi0jZW5kaWYKLQogdm9pZAogX25ldHNubXBfdWRwX3NvY2tvcHRfc2V0KGludCBmZCwgaW50IGxvY2FsKQogewpAQCAtMzkzLDcgKzM4Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqb3BhcXVlLCBpbnQgKm9sZW5ndGgpCiB7CiAgICAgaW50ICAgICAgICAgICAgIHJjID0gLTE7Ci0gICAgc29ja2xlbl90ICAgICAgIGZyb21sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyKTsKKyAgICBzb2NrbGVuX3QgICAgICAgZnJvbWxlbiA9IHNpemVvZihuZXRzbm1wX3NvY2thZGRyX3N0b3JhZ2UpOwogICAgIG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgKmFkZHJfcGFpciA9IE5VTEw7CiAgICAgc3RydWN0IHNvY2thZGRyICpmcm9tOwogCkBAIC00MDUsNyArMzk4LDcgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1lbXNldChhZGRyX3BhaXIsIDAsIHNpemVvZihuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyKSk7Ci0gICAgICAgICAgICBmcm9tID0gKHN0cnVjdCBzb2NrYWRkciAqKSAmKGFkZHJfcGFpci0+cmVtb3RlX2FkZHIpOworICAgICAgICAgICAgZnJvbSA9ICZhZGRyX3BhaXItPnJlbW90ZV9hZGRyLnNhOwogICAgICAgICB9CiAKIAl3aGlsZSAocmMgPCAwKSB7CkBAIC00NTIsMTQgKzQ0NSwxNSBAQAogICAgIHN0cnVjdCBzb2NrYWRkciAqdG8gPSBOVUxMOwogCiAgICAgaWYgKG9wYXF1ZSAhPSBOVUxMICYmICpvcGFxdWUgIT0gTlVMTCAmJgotICAgICAgICAqb2xlbmd0aCA9PSBzaXplb2YobmV0c25tcF9pbmRleGVkX2FkZHJfcGFpcikpIHsKKyAgICAgICAgKCgqb2xlbmd0aCA9PSBzaXplb2YobmV0c25tcF9pbmRleGVkX2FkZHJfcGFpcikgfHwKKyAgICAgICAgICAoKm9sZW5ndGggPT0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpKSkpIHsKICAgICAgICAgYWRkcl9wYWlyID0gKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgKikgKCpvcGFxdWUpOwogICAgIH0gZWxzZSBpZiAodCAhPSBOVUxMICYmIHQtPmRhdGEgIT0gTlVMTCAmJgogICAgICAgICAgICAgICAgIHQtPmRhdGFfbGVuZ3RoID09IHNpemVvZihuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyKSkgewogICAgICAgICBhZGRyX3BhaXIgPSAobmV0c25tcF9pbmRleGVkX2FkZHJfcGFpciAqKSAodC0+ZGF0YSk7CiAgICAgfQogCi0gICAgdG8gPSAoc3RydWN0IHNvY2thZGRyICopICYoYWRkcl9wYWlyLT5yZW1vdGVfYWRkcik7CisgICAgdG8gPSAmYWRkcl9wYWlyLT5yZW1vdGVfYWRkci5zYTsKIAogICAgIGlmICh0byAhPSBOVUxMICYmIHQgIT0gTlVMTCAmJiB0LT5zb2NrID49IDApIHsKICAgICAgICAgREVCVUdJRigibmV0c25tcF91ZHAiKSB7CkBAIC00NzIsNyArNDY2LDcgQEAKIAl3aGlsZSAocmMgPCAwKSB7CiAjaWZkZWYgbmV0c25tcF91ZHBiYXNlX3JlY3Zmcm9tX3NlbmR0b19kZWZpbmVkCiAgICAgICAgICAgICByYyA9IG5ldHNubXBfdWRwX3NlbmR0byh0LT5zb2NrLAotICAgICAgICAgICAgICAgICAgICBhZGRyX3BhaXIgPyAmKGFkZHJfcGFpci0+bG9jYWxfYWRkci5zaW5fYWRkcikgOiBOVUxMLAorICAgICAgICAgICAgICAgICAgICBhZGRyX3BhaXIgPyAmKGFkZHJfcGFpci0+bG9jYWxfYWRkci5zaW4uc2luX2FkZHIpIDogTlVMTCwKICAgICAgICAgICAgICAgICAgICAgYWRkcl9wYWlyID8gYWRkcl9wYWlyLT5pZl9pbmRleCA6IDAsIHRvLCBidWYsIHNpemUpOwogI2Vsc2UKICAgICAgICAgICAgIHJjID0gc2VuZHRvKHQtPnNvY2ssIGJ1Ziwgc2l6ZSwgMCwgdG8sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKTsKZGlmZiAtLWdpdCBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5jCmluZGV4IDdmYTJlZmQuLmEwYWJkOGMgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmMKKysrIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4uYwpAQCAtMTEsNiArMTEsMTAgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oPgorCiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTUzLDggKzU3LDYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9jb25maWdfYXBpLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0Lmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBTb2NrZXRCYXNlRG9tYWluLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmg+CkBAIC03MCwxMiArNzIsNiBAQAogI2RlZmluZSBJTkVUX0FERFJTVFJMRU4gMTYKICNlbmRpZgogCi0jaWYgZGVmaW5lZChJUF9SRUNWRFNUQUREUikgJiYgZGVmaW5lZChfX0RyYWdvbkZseV9fKQotIyBpZm5kZWYgSVBfU0VORFNSQ0FERFIKLSMgIGRlZmluZSBJUF9TRU5EU1JDQUREUiBJUF9SRUNWRFNUQUREUiAvKiBEcmFnb25GbHkgQlNEICovCi0jIGVuZGlmCi0jZW5kaWYKLQogc3RhdGljIG5ldHNubXBfdGRvbWFpbiB1ZHBEb21haW47CiAKIC8qCmRpZmYgLS1naXQgYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmMKaW5kZXggNzgwOWNhZS4uOGMwZmIwNSAxMDA2NDQKLS0tIGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5jCisrKyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4uYwpAQCAtMyw2ICszLDkgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oPgorCiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTM2LDE3ICszOSw4IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBTb2NrZXRCYXNlRG9tYWluLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmg+Ci0KLSNpZiBkZWZpbmVkKElQX1JFQ1ZEU1RBRERSKSAmJiBkZWZpbmVkKF9fRHJhZ29uRmx5X18pCi0jIGlmbmRlZiBJUF9TRU5EU1JDQUREUgotIyAgZGVmaW5lIElQX1NFTkRTUkNBRERSIElQX1JFQ1ZEU1RBRERSIC8qIERyYWdvbkZseSBCU0QgKi8KLSMgZW5kaWYKLSNlbmRpZgogCiAjaWYgZGVmaW5lZChIQVZFX0lQX1BLVElORk8pIHx8IGRlZmluZWQoSEFWRV9JUF9SRUNWRFNUQUREUikKLQogaW50IG5ldHNubXBfdWRwaXB2NF9yZWN2ZnJvbShpbnQgcywgdm9pZCAqYnVmLCBpbnQgbGVuLCBzdHJ1Y3Qgc29ja2FkZHIgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tsZW5fdCAqZnJvbWxlbiwgc3RydWN0IHNvY2thZGRyICpkc3RpcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2xlbl90ICpkc3RsZW4sIGludCAqaWZfaW5kZXgpCkBAIC03MSw2ICs2NSwxMSBAQAogICAgIG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgYWRkcl9wYWlyOwogICAgIHNvY2tsZW5fdCAgICAgICBsb2NhbF9hZGRyX2xlbjsKIAorI2lmZGVmIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQKKyAgICBpZiAobG9jYWwpCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KKwogICAgIGlmIChhZGRyID09IE5VTEwgfHwgYWRkci0+c2luX2ZhbWlseSAhPSBBRl9JTkVUKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTk5LDEzICs5OCwxNCBAQAogICAgIF9uZXRzbm1wX3VkcF9zb2Nrb3B0X3NldCh0LT5zb2NrLCBsb2NhbCk7CiAKICAgICBpZiAobG9jYWwpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAogICAgICAgICAvKgogICAgICAgICAgKiBUaGlzIHNlc3Npb24gaXMgaW50ZW5lZGVkIGFzIGEgc2VydmVyLCBzbyB3ZSBtdXN0IGJpbmQgb24gdG8gdGhlCiAgICAgICAgICAqIGdpdmVuIElQIGFkZHJlc3MsIHdoaWNoIG1heSBpbmNsdWRlIGFuIGludGVyZmFjZSBhZGRyZXNzLCBvciBjb3VsZAogICAgICAgICAgKiBiZSBJTkFERFJfQU5ZLCBidXQgY2VydGFpbmx5IGluY2x1ZGVzIGEgcG9ydCBudW1iZXIuCiAgICAgICAgICAqLwogCi0gICAgICB0LT5sb2NhbCA9ICh1X2NoYXIgKikgbWFsbG9jKDYpOworICAgICAgICB0LT5sb2NhbCA9ICh1X2NoYXIgKikgbWFsbG9jKDYpOwogICAgICAgICBpZiAodC0+bG9jYWwgPT0gTlVMTCkgewogICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfZnJlZSh0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTYwLDYgKzE2MCw5IEBACiAgICAgICAgIH0KICAgICAgICAgdC0+ZGF0YSA9IE5VTEw7CiAgICAgICAgIHQtPmRhdGFfbGVuZ3RoID0gMDsKKyNlbHNlIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIFRoaXMgaXMgYSBjbGllbnQgc2Vzc2lvbi4gIElmIHdlJ3ZlIGJlZW4gZ2l2ZW4gYQpkaWZmIC0tZ2l0IGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYwppbmRleCA1NWUzNjEwLi4xOGRlODc2IDEwMDY0NAotLS0gYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYworKysgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYwpAQCAtMSw2ICsxLDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KIApAQCAtNjQsNiArNjUsNyBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFNvY2tldEJhc2VEb21haW4uaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmg+CiAKICNpbmNsdWRlICJpbmV0X250b3AuaCIKICNpbmNsdWRlICJpbmV0X3B0b24uaCIKQEAgLTE1Miw3ICsxNTQsOCBAQAogICAgICAgICAqb2xlbmd0aCA9PSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpIHsKICAgICAgICAgdG8gPSAoc3RydWN0IHNvY2thZGRyICopICgqb3BhcXVlKTsKICAgICB9IGVsc2UgaWYgKHQgIT0gTlVMTCAmJiB0LT5kYXRhICE9IE5VTEwgJiYKLSAgICAgICAgICAgICAgIHQtPmRhdGFfbGVuZ3RoID09IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSkgeworICAgICAgICAgICAgICAgKCh0LT5kYXRhX2xlbmd0aCA9PSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpIHx8CisgICAgICAgICAgICAgICAgKHQtPmRhdGFfbGVuZ3RoID09IHNpemVvZihuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyKSkpKSB7CiAgICAgICAgIHRvID0gKHN0cnVjdCBzb2NrYWRkciAqKSAodC0+ZGF0YSk7CiAgICAgfQogCkBAIC0xODgsMTEgKzE5MSwxNiBAQAogICAgIG5ldHNubXBfdHJhbnNwb3J0ICp0ID0gTlVMTDsKICAgICBpbnQgICAgICAgICAgICAgcmMgPSAwOwogCisjaWZkZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAorICAgIGlmIChsb2NhbCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLworCiAgICAgaWYgKGFkZHIgPT0gTlVMTCB8fCBhZGRyLT5zaW42X2ZhbWlseSAhPSBBRl9JTkVUNikgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICB0ID0gKG5ldHNubXBfdHJhbnNwb3J0ICopIG1hbGxvYyhzaXplb2YobmV0c25tcF90cmFuc3BvcnQpKTsKKyAgICB0ID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RyYW5zcG9ydCk7CiAgICAgaWYgKHQgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0yMDUsOCArMjEzLDYgQEAKICAgICAgICAgZnJlZShzdHIpOwogICAgIH0KIAotICAgIG1lbXNldCh0LCAwLCBzaXplb2YobmV0c25tcF90cmFuc3BvcnQpKTsKLQogICAgIHQtPmRvbWFpbiA9IG5ldHNubXBfVURQSVB2NkRvbWFpbjsKICAgICB0LT5kb21haW5fbGVuZ3RoID0KICAgICAgICAgc2l6ZW9mKG5ldHNubXBfVURQSVB2NkRvbWFpbikgLyBzaXplb2YobmV0c25tcF9VRFBJUHY2RG9tYWluWzBdKTsKQEAgLTIyMCw4ICsyMjYsOSBAQAogICAgIF9uZXRzbm1wX3VkcF9zb2Nrb3B0X3NldCh0LT5zb2NrLCBsb2NhbCk7CiAKICAgICBpZiAobG9jYWwpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAogICAgICAgICAvKgotICAgICAgICAgKiBUaGlzIHNlc3Npb24gaXMgaW50ZW5lZGVkIGFzIGEgc2VydmVyLCBzbyB3ZSBtdXN0IGJpbmQgb24gdG8gdGhlCisgICAgICAgICAqIFRoaXMgc2Vzc2lvbiBpcyBpbnRlbmRlZCBhcyBhIHNlcnZlciwgc28gd2UgbXVzdCBiaW5kIG9uIHRvIHRoZQogICAgICAgICAgKiBnaXZlbiBJUCBhZGRyZXNzLCB3aGljaCBtYXkgaW5jbHVkZSBhbiBpbnRlcmZhY2UgYWRkcmVzcywgb3IgY291bGQKICAgICAgICAgICogYmUgSU5BRERSX0FOWSwgYnV0IGNlcnRhaW5seSBpbmNsdWRlcyBhIHBvcnQgbnVtYmVyLgogICAgICAgICAgKi8KQEAgLTI1NSwyMCArMjYyLDIzIEBACiAgICAgICAgIHQtPmxvY2FsX2xlbmd0aCA9IDE4OwogICAgICAgICB0LT5kYXRhID0gTlVMTDsKICAgICAgICAgdC0+ZGF0YV9sZW5ndGggPSAwOworI2Vsc2UgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLworICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCiAgICAgfSBlbHNlIHsKICAgICAgICAgLyoKICAgICAgICAgICogVGhpcyBpcyBhIGNsaWVudCBzZXNzaW9uLiAgU2F2ZSB0aGUgYWRkcmVzcyBpbiB0aGUKICAgICAgICAgICogdHJhbnNwb3J0LXNwZWNpZmljIGRhdGEgcG9pbnRlciBmb3IgbGF0ZXIgdXNlIGJ5IG5ldHNubXBfdWRwNl9zZW5kLgogICAgICAgICAgKi8KIAotICAgICAgICB0LT5kYXRhID0gbWFsbG9jKHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7CisgICAgICAgIHQtPmRhdGEgPSBtYWxsb2Moc2l6ZW9mKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIpKTsKICAgICAgICAgaWYgKHQtPmRhdGEgPT0gTlVMTCkgewogICAgICAgICAgICAgbmV0c25tcF9zb2NrZXRiYXNlX2Nsb3NlKHQpOwogICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfZnJlZSh0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIG1lbWNweSh0LT5kYXRhLCBhZGRyLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpOwotICAgICAgICB0LT5kYXRhX2xlbmd0aCA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKKyAgICAgICAgdC0+ZGF0YV9sZW5ndGggPSBzaXplb2YobmV0c25tcF9pbmRleGVkX2FkZHJfcGFpcik7CiAgICAgICAgIHQtPnJlbW90ZSA9ICh1bnNpZ25lZCBjaGFyKiltYWxsb2MoMTgpOwogICAgICAgICBpZiAodC0+cmVtb3RlID09IE5VTEwpIHsKICAgICAgICAgICAgIG5ldHNubXBfc29ja2V0YmFzZV9jbG9zZSh0KTsKQEAgLTU0MCw3ICs1NTAsNyBAQAogCiAgICAgICAgICAgICAgICAgaGludHMuYWlfZmFtaWx5ID0gQUZfSU5FVDY7CiAgICAgICAgICAgICAgICAgaGludHMuYWlfc29ja3R5cGUgPSBTT0NLX0RHUkFNOwotICAgICAgICAgICAgICAgIGdhaV9lcnJvciA9IGdldGFkZHJpbmZvKHNvdXJjZSwgTlVMTCwgJmhpbnRzLCAmcmVzKTsKKyAgICAgICAgICAgICAgICBnYWlfZXJyb3IgPSBuZXRzbm1wX2dldGFkZHJpbmZvKHNvdXJjZSwgTlVMTCwgJmhpbnRzLCAmcmVzKTsKICAgICAgICAgICAgICAgICBpZiAoZ2FpX2Vycm9yICE9IDApIHsKICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcihnYWlfc3RyZXJyb3IoZ2FpX2Vycm9yKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5jIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmMKaW5kZXggMWJkNWVmNi4uNDdkZmZjMSAxMDA2NDQKLS0tIGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmMKKysrIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaD4KQEAgLTM0LDcgKzM1LDEwIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFNvY2tldEJhc2VEb21haW4uaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oPiAvKiBta2RpcmhpZXIgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0cmFuc3BvcnRfdW5peF9zb2NrZXRfYWxsLCB0cmFuc3BvcnRfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVuaXhfc29ja2V0X3BhdGhzLCB0cmFuc3BvcnRfdW5peF9zb2NrZXRfYWxsKQogCiAjaWZuZGVmIE5FVFNOTVBfU1RSRUFNX1FVRVVFX0xFTgogI2RlZmluZSBORVRTTk1QX1NUUkVBTV9RVUVVRV9MRU4gIDUKQEAgLTI1OSw2ICsyNjMsNyBAQAogc3RhdGljIGludCBjcmVhdGVfcGF0aCA9IDA7CiBzdGF0aWMgbW9kZV90IGNyZWF0ZV9tb2RlOwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVU5JWF9TT0NLRVRfUEFUSFMKIC8qKiBJZiB0cnlpbmcgdG8gY3JlYXRlIHVuaXggc29ja2V0cyBpbiBub25leGlzdGluZyBkaXJlY3RvcmllcyB0aGVuCiAgKiAgdHJ5IHRvIGNyZWF0ZSB0aGUgZGlyZWN0b3J5IHdpdGggbWFzayBtb2RlLgogICovCkBAIC0yNzUsNiArMjgwLDcgQEAKIHsKICAgICBjcmVhdGVfcGF0aCA9IDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VTklYX1NPQ0tFVF9QQVRIUyAqLwogCiAvKgogICogT3BlbiBhIFVuaXgtZG9tYWluIHRyYW5zcG9ydCBmb3IgU05NUC4gIExvY2FsIGlzIFRSVUUgaWYgYWRkciBpcyB0aGUgbG9jYWwKQEAgLTI5MCwxMSArMjk2LDE4IEBACiAgICAgc29ja2FkZHJfdW5fcGFpciAqc3VwID0gTlVMTDsKICAgICBpbnQgICAgICAgICAgICAgcmMgPSAwOwogCisjaWZkZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAorICAgIC8qIFNQRUNJQUwgQ0lSQ1VNU1RBTkNFOiBXZSBzdGlsbCB3YW50IEFnZW50WCB0byBiZSBhYmxlIHRvIG9wZXJhdGUsCisgICAgICAgc28gd2UgYWxsb3cgZm9yIHVuaXggZG9tYWluIHNvY2t0ZXMgdG8gc3RpbGwgbGlzdGVuIHdoZW4gZXZlcnl0aGluZworICAgICAgIGVsc2UgaXNuJ3QgYWxsb3dlZCB0by4gIFRodXMsIHdlIGlnbm9yZSB0aGlzIGRlZmluZSBpbiB0aGlzIGZpbGUuCisgICAgKi8KKyNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCisKICAgICBpZiAoYWRkciA9PSBOVUxMIHx8IGFkZHItPnN1bl9mYW1pbHkgIT0gQUZfVU5JWCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICB0ID0gKG5ldHNubXBfdHJhbnNwb3J0ICopIG1hbGxvYyhzaXplb2YobmV0c25tcF90cmFuc3BvcnQpKTsKKyAgICB0ID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RyYW5zcG9ydCk7CiAgICAgaWYgKHQgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0zMDcsOCArMzIwLDYgQEAKICAgICAgICAgZnJlZShzdHIpOwogICAgIH0KIAotICAgIG1lbXNldCh0LCAwLCBzaXplb2YobmV0c25tcF90cmFuc3BvcnQpKTsKLQogICAgIHQtPmRvbWFpbiA9IG5ldHNubXBfVW5peERvbWFpbjsKICAgICB0LT5kb21haW5fbGVuZ3RoID0KICAgICAgICAgc2l6ZW9mKG5ldHNubXBfVW5peERvbWFpbikgLyBzaXplb2YobmV0c25tcF9Vbml4RG9tYWluWzBdKTsKZGlmZiAtLWdpdCBhL3NubXBsaWIvdWNkX2NvbXBhdC5jIGIvc25tcGxpYi91Y2RfY29tcGF0LmMKaW5kZXggYmYyMWJlOC4uNjRjMWUxMyAxMDA2NDQKLS0tIGEvc25tcGxpYi91Y2RfY29tcGF0LmMKKysrIGIvc25tcGxpYi91Y2RfY29tcGF0LmMKQEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC90eXBlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL3Nlc3Npb25fYXBpLmg+CkBAIC0xMSw2ICsxMiw5IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9taWIuaD4JLyogZm9yIE9JRCBPL1AgZm9ybWF0IGVudW1zICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0Lmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1Y2RfY29tcGF0aWJpbGl0eSwgbGlibmV0c25tcCkKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VDRF9DT01QQVRJQklMSVRZCiAvKgogICogdXNlIDxuZXRzbm1wX3Nlc3Npb24gKiktPnNfc25tcF9lcnJubyBpbnN0ZWFkIAogICovCkBAIC0yMjEsMyArMjI1LDYgQEAKIHsKICAgbmV0c25tcF9kc19zaHV0ZG93bigpOwogfQorI2Vsc2UgLyogIU5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVUNEX0NPTVBBVElCSUxJVFkgKi8KK25ldHNubXBfZmVhdHVyZV91bnVzZWQodWNkX2NvbXBhdGliaWxpdHkpOworI2VuZGlmIC8qICFORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VDRF9DT01QQVRJQklMSVRZICovCmRpZmYgLS1naXQgYS9zbm1wbGliL3ZhY20uYyBiL3NubXBsaWIvdmFjbS5jCmluZGV4IDJkYTFkZjkuLmM2Mzk3ODUgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvdmFjbS5jCisrKyBiL3NubXBsaWIvdmFjbS5jCkBAIC04NDIsNiArODQyLDcgQEAKICAgICByZXR1cm4gZ3A7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiB2b2lkCiB2YWNtX2Rlc3Ryb3lHcm91cEVudHJ5KGludCBzZWN1cml0eU1vZGVsLCBjb25zdCBjaGFyICpzZWN1cml0eU5hbWUpCiB7CkBAIC04NjcsNiArODY4LDcgQEAKICAgICBmcmVlKHZwKTsKICAgICByZXR1cm47CiB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIHZvaWQKIHZhY21fZGVzdHJveUFsbEdyb3VwRW50cmllcyh2b2lkKQpAQCAtMTAzOCw2ICsxMDQwLDcgQEAKICAgICByZXR1cm4gdnA7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiB2b2lkCiB2YWNtX2Rlc3Ryb3lBY2Nlc3NFbnRyeShjb25zdCBjaGFyICpncm91cE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0UHJlZml4LApAQCAtMTA2OSw2ICsxMDcyLDcgQEAKICAgICBmcmVlKHZwKTsKICAgICByZXR1cm47CiB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIHZvaWQKIHZhY21fZGVzdHJveUFsbEFjY2Vzc0VudHJpZXModm9pZCkKQEAgLTExNDIsMTIgKzExNDYsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld1N1YnRyZWVMZW4pOwogfQogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogdm9pZAogdmFjbV9kZXN0cm95Vmlld0VudHJ5KGNvbnN0IGNoYXIgKnZpZXdOYW1lLAogICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHZpZXdTdWJ0cmVlLCBzaXplX3Qgdmlld1N1YnRyZWVMZW4pCiB7CiAgICAgbmV0c25tcF92aWV3X2Rlc3Ryb3koICZ2aWV3TGlzdCwgdmlld05hbWUsIHZpZXdTdWJ0cmVlLCB2aWV3U3VidHJlZUxlbik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIHZvaWQKIHZhY21fZGVzdHJveUFsbFZpZXdFbnRyaWVzKHZvaWQpCmRpZmYgLS1naXQgYS90ZXN0aW5nL1JVTlRFU1RTIGIvdGVzdGluZy9SVU5URVNUUwppbmRleCA2OWZiYWU0Li40OTMzMzA3IDEwMDc1NQotLS0gYS90ZXN0aW5nL1JVTlRFU1RTCisrKyBiL3Rlc3RpbmcvUlVOVEVTVFMKQEAgLTEyLDEzICsxMiwxNyBAQAogCiAjIE1ha2Ugc3VyZSBNaW5HVyAvIE1TWVMgdXNlcnMgaGF2ZSB0aGUgcHNraWxsLmV4ZSBwcm9ncmFtIHRvIHN0b3AgdGhlIGFnZW50IGFuZAogIyBzbm1wdHJhcGQKLWlmIFsgIngkT1NUWVBFIiA9ICJ4bXN5cyIgLWEgInhgdHlwZSBwc2tpbGwuZXhlIDI+L2Rldi9udWxsYCIgPSAieCIgXTsgdGhlbgotICAgIGVjaG8gIkNvdWxkIG5vdCBmaW5kIHBza2lsbC5leGUuIEFib3J0aW5nIHRlc3RzLiIKLSAgICBlY2hvICJwc2tpbGwuZXhlIGNhbiBiZSBpbnN0YWxsZWQgYXMgZm9sbG93czoiCi0gICAgZWNobyAiIC0gRG93bmxvYWQgcHNraWxsLmV4ZSBmcm9tIGh0dHA6Ly90ZWNobmV0Lm1pY3Jvc29mdC5jb20vZW4tdXMvc3lzaW50ZXJuYWxzL2RlZmF1bHQuYXNweC4iCi0gICAgZWNobyAiIC0gQ29weSBwc2tpbGwuZXhlIHRvIEM6XFxNaW5HV1xcbXN5c1xcMS4wXFxiaW4uIgotICAgIGV4aXQgMQotZmkgCitpZiBbICJ4JE9TVFlQRSIgPSAieG1zeXMiIF07IHRoZW4KKyAgICBmb3IgZSBpbiBwc2tpbGwuZXhlIHBzbGlzdC5leGU7IGRvCisJaWYgWyAieGB0eXBlICRlIDI+L2Rldi9udWxsYCIgPSAieCIgXTsgdGhlbgorCSAgICBlY2hvICJDb3VsZCBub3QgZmluZCAkZS4gQWJvcnRpbmcgdGVzdHMuIgorCSAgICBlY2hvICIkZSBjYW4gYmUgaW5zdGFsbGVkIGFzIGZvbGxvd3M6IgorCSAgICBlY2hvICItIERvd25sb2FkIFBTVG9vbHMuemlwIGZyb20gaHR0cDovL3RlY2huZXQubWljcm9zb2Z0LmNvbS9lbi11cy9zeXNpbnRlcm5hbHMvZGVmYXVsdC4iCisJICAgIGVjaG8gIi0gQ29weSAkZSB0byBDOlxcTWluR1dcXG1zeXNcXDEuMFxcYmluLiIKKwkgICAgZXhpdCAxCisJZmkKKyAgICBkb25lCitmaQogCiBzdWNjZXNzX2NvdW50PTAKIGZhaWxlZF9jb3VudD0wCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1N2M2NvbmZpZyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3YzY29uZmlnCmluZGV4IDQzYTdmYjIuLjU1ZGY1YjQgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3YzY29uZmlnCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3YzY29uZmlnCkBAIC0xLDUgKzEsNyBAQAogIyEvYmluL3NoCiAKK1NLSVBJRk5PVCBORVRTTk1QX1NFQ01PRF9VU00KKwogWyAieCRTTk1QX1NNVVhfU09DS0VUIiA9ICJ4IiBdICYmIFNOTVBfU01VWF9TT0NLRVQ9MS4wLjAuMAogCiBDT05GSUdBR0VOVCBbc25tcF0gcGVyc2lzdGVudGRpciAkU05NUF9UTVBfUEVSU0lTVEVOVERJUgpkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9TdjN1c21jb25maWdiYXNlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9TdjN1c21jb25maWdiYXNlCmluZGV4IDk5YmRhMDQuLmIyZTFlYjIgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3YzdXNtY29uZmlnYmFzZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1N2M3VzbWNvbmZpZ2Jhc2UKQEAgLTIyLDYgKzIyLDggQEAKICMgICBURVNUUFJJVkFSR1NbTk9QQVNTXVsyXQogIwogCitTS0lQSUZOT1QgTkVUU05NUF9TRUNNT0RfVVNNCisKICMjIERlZmF1bHRzCiBbICJ4JERFRlNFQ1VSSVRZTEVWRUwiID0gIngiIF0gJiYgREVGU0VDVVJJVFlMRVZFTD1hdXRoUHJpdgogCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1N2M3ZhY21jb25maWcgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1N2M3ZhY21jb25maWcKaW5kZXggM2Q3YmY5NS4uN2MzNWUzNiAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9TdjN2YWNtY29uZmlnCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3YzdmFjbWNvbmZpZwpAQCAtMTAsNiArMTAsNyBAQAogIyBYWFg6IGRvIGF1dG9zZWxlY3Rpb24gb2Ygc3VwcG9ydGVkIGFsZ29yaXRobXMKIFNLSVBJRiBORVRTTk1QX0RJU0FCTEVfTUQ1CiBTS0lQSUYgTkVUU05NUF9ESVNBQkxFX0RFUworU0tJUElGTk9UIE5FVFNOTVBfU0VDTU9EX1VTTQogCiBDT05GSUdBR0VOVCBbc25tcF0gcGVyc2lzdGVudGRpciAkU05NUF9UTVBfUEVSU0lTVEVOVERJUgogCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1N2YW55Y29uZmlnIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9TdmFueWNvbmZpZwppbmRleCBiOTFlYjBmLi44Y2I1M2RjIDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1N2YW55Y29uZmlnCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3Zhbnljb25maWcKQEAgLTI2LDQgKzI2LDQgQEAKIAogQ09ORklHQUdFTlQgZ3JvdXAgICB0ZXN0Y29tbXVuaXR5Z3JvdXAgICRzbm1wX3ZlcnNpb24gICAgIHRlc3Rjb21tdW5pdHlzZWMKIENPTkZJR0FHRU5UIHZpZXcgICAgYWxsICAgICBpbmNsdWRlZCAuMSA4MAotQ09ORklHQUdFTlQgImFjY2VzcyAgdGVzdGNvbW11bml0eWdyb3VwICAiJyIiJyIgYW55IG5vYXV0aCBleGFjdCBhbGwgJHNubXBfd3JpdGVfYWNjZXNzIG5vbmUiCitDT05GSUdBR0VOVCAiYWNjZXNzICB0ZXN0Y29tbXVuaXR5Z3JvdXAgICcnIGFueSBub2F1dGggZXhhY3QgYWxsICRzbm1wX3dyaXRlX2FjY2VzcyBub25lIgpkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDE0MXNubXB2MmNzZXRfc2ltcGxlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDE0MXNubXB2MmNzZXRfc2ltcGxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ZDliYWUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMTQxc25tcHYyY3NldF9zaW1wbGUKQEAgLTAsMCArMSwzNSBAQAorIyEvYmluL3NoCisKKy4gLi4vc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaAorCitIRUFERVIgU05NUHYyYyBzZXQgb2Ygc3lzdGVtLnN5c0NvbnRhY3QuMAorCitTS0lQSUYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCitTS0lQSUYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCitTS0lQSUYgTkVUU05NUF9ESVNBQkxFX1NOTVBWMkMKK1NLSVBJRk5PVCBVU0lOR19NSUJJSV9TWVNURU1fTUlCX01PRFVMRQorCisjCisjIEJlZ2luIHRlc3QKKyMKKworIyBzdGFuZGFyZCBWMkMgY29uZmlndXJhdGlvbjogdGVzdGNvbXVubml0eQorc25tcF93cml0ZV9hY2Nlc3M9J2FsbCcKKy4gLi9TdjJjY29uZmlnCitTVEFSVEFHRU5UCisKK0NBUFRVUkUgInNubXBnZXQgLU9uICRTTk1QX0ZMQUdTIC1jIHRlc3Rjb21tdW5pdHkgLXYgMmMgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS4yLjEuMS40LjAiCisKK0NIRUNLICIuMS4zLjYuMS4yLjEuMS40LjAgPSBTVFJJTkc6IgorCitDQVBUVVJFICJzbm1wc2V0IC1PbiAkU05NUF9GTEFHUyAtYyB0ZXN0Y29tbXVuaXR5IC12IDJjICRTTk1QX1RSQU5TUE9SVF9TUEVDOiRTTk1QX1RFU1RfREVTVCRTTk1QX1NOTVBEX1BPUlQgLjEuMy42LjEuMi4xLjEuNC4wIHMgZm9vYmFydGVzdGluZ2JheiIKKworQ0hFQ0sgIi4xLjMuNi4xLjIuMS4xLjQuMCA9IFNUUklORzoiCisKK0NBUFRVUkUgInNubXBnZXQgLU9uICRTTk1QX0ZMQUdTIC1jIHRlc3Rjb21tdW5pdHkgLXYgMmMgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS4yLjEuMS40LjAiCisKK0NIRUNLICJTVFJJTkc6IGZvb2JhcnRlc3RpbmdiYXoiCisKK1NUT1BBR0VOVAorCitGSU5JU0hFRApkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDE2c25tcHYyY2dldGZhaWxfc2ltcGxlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDE2c25tcHYyY2dldGZhaWxfc2ltcGxlCmluZGV4IDZlM2I4MTQuLjFjZDBlOTQgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAxNnNubXB2MmNnZXRmYWlsX3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMTZzbm1wdjJjZ2V0ZmFpbF9zaW1wbGUKQEAgLTEwLDYgKzEwLDcgQEAKIAogU0tJUElGIE5FVFNOTVBfRElTQUJMRV9TTk1QVjJDCiBTS0lQSUZOT1QgVVNJTkdfTUlCSUlfU1lTVEVNX01JQl9NT0RVTEUKK1NLSVBJRk5PVCBVU0lOR19NSUJJSV9WQUNNX0NPTkZfTU9EVUxFCiAKICMKICMgQmVnaW4gdGVzdApkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDI1c25tcHYzZ2V0U0hBREVTX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAyNXNubXB2M2dldFNIQURFU19zaW1wbGUKaW5kZXggYTU5YjY5Yi4uZDAxYTRlZiAxMDA3NTUKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDI1c25tcHYzZ2V0U0hBREVTX3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMjVzbm1wdjNnZXRTSEFERVNfc2ltcGxlCkBAIC0xNyw2ICsxNyw3IEBACiBERUZQUklWVFlQRT0iREVTIgogLiAuL1N2M2NvbmZpZwogCitBR0VOVF9GTEFHUz0iJEFHRU5UX0ZMQUdTIC1JLXdpbkV4dERMTCIKIFNUQVJUQUdFTlQKIAogQ0FQVFVSRSAic25tcGdldCAtT24gJFNOTVBfRkxBR1MgJFBSSVZURVNUQVJHUyAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUIC4xLjMuNi4xLjIuMS4xLjMuMCIKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAyNnNubXB2M2dldFNIQUFFU19zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMjZzbm1wdjNnZXRTSEFBRVNfc2ltcGxlCmluZGV4IGNiZmNjYTcuLjU2MWNkYWIgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAyNnNubXB2M2dldFNIQUFFU19zaW1wbGUKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDI2c25tcHYzZ2V0U0hBQUVTX3NpbXBsZQpAQCAtMTcsNiArMTcsNyBAQAogREVGQVVUSFRZUEU9IlNIQSIKIC4gLi9TdjNjb25maWcKIAorQUdFTlRfRkxBR1M9IiRBR0VOVF9GTEFHUyAtSS13aW5FeHRETEwiCiBTVEFSVEFHRU5UCiAKIENBUFRVUkUgInNubXBnZXQgLU9uICRTTk1QX0ZMQUdTICRQUklWVEVTVEFSR1MgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS4yLjEuMS4zLjAiCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMjdzbm1wdjNEZWZhdWx0c19zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMjdzbm1wdjNEZWZhdWx0c19zaW1wbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JiZjVlMAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAyN3NubXB2M0RlZmF1bHRzX3NpbXBsZQpAQCAtMCwwICsxLDM5IEBACisjIS9iaW4vc2gKKworLiAuLi9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoCisKK0hFQURFUiBTTk1QdjMgZ2V0IHVzaW5nIGRlZmF1bHQgY29uZmlnIG9mIC4xLjMuNi4xLjIuMS4xLjMuMAorCitTS0lQSUZOT1QgTkVUU05NUF9DQU5fRE9fQ1JZUFRPCitTS0lQSUZOT1QgTkVUU05NUF9FTkFCTEVfU0NBUElfQVVUSFBSSVYKK1NLSVBJRk5PVCBIQVZFX0FFU19DRkIxMjhfRU5DUllQVAorCisjCisjIEJlZ2luIHRlc3QKKyMKKworIyBzdGFuZGFyZCBWMyBjb25maWd1cmF0aW9uIGZvciB0ZW1wbGF0ZVNIQSB1c2VyCitERUZQUklWVFlQRT0iQUVTIgorREVGQVVUSFRZUEU9IlNIQSIKKy4gLi9TdjNjb25maWcKKworU1RBUlRBR0VOVAorCitDT05GSUdBUFAgZGVmVmVyc2lvbiAzCitDT05GSUdBUFAgZGVmUHJpdlR5cGUgQUVTCitDT05GSUdBUFAgZGVmQXV0aFR5cGUgU0hBCitDT05GSUdBUFAgZGVmQ29udGV4dCBcIlwiCitDT05GSUdBUFAgZGVmQXV0aFBhc3NQaHJhc2UgaW5pdGlhbF90ZXN0X3Bhc3NfYXV0aAorQ09ORklHQVBQIGRlZlByaXZQYXNzUGhyYXNlIGluaXRpYWxfdGVzdF9wYXNzX2F1dGgKK0NPTkZJR0FQUCBkZWZTZWN1cml0eUxldmVsIGF1dGhQcml2CitDT05GSUdBUFAgZGVmU2VjdXJpdHlOYW1lIGluaXRpYWwKKworIyBtYWtlIHN1cmUgdGhhdCB0aGUgYWJvdmUgY29uZmlndXJhdGlvbiB0b2tlbnMgcHJvcGVybHkgc2V0IHRoaW5ncyB1cCBzbyB0aGF0CisjIG5vIGZsYWdzIGFyZSBuZWVkZWQKK0NBUFRVUkUgInNubXBnZXQgLU9uICRTTk1QX0ZMQUdTICRTTk1QX1RSQU5TUE9SVF9TUEVDOiRTTk1QX1RFU1RfREVTVCRTTk1QX1NOTVBEX1BPUlQgLjEuMy42LjEuMi4xLjEuMy4wIgorCitTVE9QQUdFTlQKKworQ0hFQ0sgIi4xLjMuNi4xLjIuMS4xLjMuMCA9IFRpbWV0aWNrczoiCisKK0ZJTklTSEVECmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMzBzbm1wdjN1c2VyY3JlYXRpb25fc2ltcGxlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDMwc25tcHYzdXNlcmNyZWF0aW9uX3NpbXBsZQppbmRleCA0MGU0Y2FjLi4yOGVhYWU4IDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMzBzbm1wdjN1c2VyY3JlYXRpb25fc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAzMHNubXB2M3VzZXJjcmVhdGlvbl9zaW1wbGUKQEAgLTUsNiArNSw3IEBACiBIRUFERVIgU05NUHYzIGFnZW50IFVTTSB1c2VyIG1hbmFnZW1lbnQgd2l0aCBzbm1wdXNtCiAKIFNLSVBJRiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKK1NLSVBJRiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIFNLSVBJRk5PVCBVU0lOR19TTk1QVjNfVVNNVVNFUl9NT0RVTEUKIFNLSVBJRk5PVCBORVRTTk1QX0NBTl9ET19DUllQVE8KIFNLSVBJRk5PVCBORVRTTk1QX0VOQUJMRV9TQ0FQSV9BVVRIUFJJVgpkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDM1c25tcHYzdHJhcGR1c2VybWdtdF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMzVzbm1wdjN0cmFwZHVzZXJtZ210X3NpbXBsZQppbmRleCBjYTMzZGM5Li5iZTdhYWI2IDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMzVzbm1wdjN0cmFwZHVzZXJtZ210X3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMzVzbm1wdjN0cmFwZHVzZXJtZ210X3NpbXBsZQpAQCAtOSw3ICs5LDggQEAKIFNLSVBJRk5PVCBVU0lOR19TTk1QVjNfVVNNVVNFUl9NT0RVTEUKIFNLSVBJRiAgICBORVRTTk1QX1NOTVBUUkFQRF9ESVNBQkxFX0FHRU5UWAogU0tJUElGICAgIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAotU0tJUElGTk9UIE5FVFNOTVBfVVNFX09QRU5TU0wKK1NLSVBJRiAgICBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK1NLSVBJRk5PVCBORVRTTk1QX0NBTl9ET19DUllQVE8KIFNLSVBJRk5PVCBORVRTTk1QX0VOQUJMRV9TQ0FQSV9BVVRIUFJJVgogCiAjCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNDlzbm1wdjNpbmZvcm1fc2ltcGxlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDQ5c25tcHYzaW5mb3JtX3NpbXBsZQppbmRleCAzMjM3ZWZhLi45OWNiNWViIDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNDlzbm1wdjNpbmZvcm1fc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA0OXNubXB2M2luZm9ybV9zaW1wbGUKQEAgLTIsNiArMiw4IEBACiAKIC4gLi4vc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaAogCitTS0lQSUZOT1QgTkVUU05NUF9TRUNNT0RfVVNNCisKIERFRlNFQ1VSSVRZTEVWRUw9bm9BdXRoTm9Qcml2CiAKIEhFQURFUiAiU05NUHYzIGluZm9ybXMgKG5vQXV0aE5vUHJpdikgcmVjZWl2ZWQgYW5kIHNlbnQgYnkgdG9vbHMiCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNDlzbm1wdjNpbmZvcm1hdXRoX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA0OXNubXB2M2luZm9ybWF1dGhfc2ltcGxlCmluZGV4IGQxNGFmYmEuLjBmMTg1NzcgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA0OXNubXB2M2luZm9ybWF1dGhfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA0OXNubXB2M2luZm9ybWF1dGhfc2ltcGxlCkBAIC0yLDYgKzIsOCBAQAogCiAuIC4uL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2gKIAorU0tJUElGTk9UIE5FVFNOTVBfU0VDTU9EX1VTTQorCiBERUZTRUNVUklUWUxFVkVMPWF1dGhOb1ByaXYKIAogSEVBREVSICJTTk1QdjMgaW5mb3JtcyAoYXV0aE5vUHJpdikgcmVjZWl2ZWQgYW5kIHNlbnQgYnkgdG9vbHMiCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTFzbm1wdjJjdHJhcF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTFzbm1wdjJjdHJhcF9zaW1wbGUKaW5kZXggNzQzMTcxYS4uOGUxYmU2YiAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDUxc25tcHYyY3RyYXBfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1MXNubXB2MmN0cmFwX3NpbXBsZQpAQCAtNSw2ICs1LDcgQEAKIEhFQURFUiBTTk1QdjJjIHRyYXBzIHJlY2VpdmVkIGFuZCBzZW50IGJ5IHRvb2xzCiAKIFNLSVBJRiBORVRTTk1QX0RJU0FCTEVfU05NUFYyQworU0tJUElGTk9UIFVTSU5HX01JQklJX1ZBQ01fQ09ORl9NT0RVTEUKIAogIwogIyBCZWdpbiB0ZXN0CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTJzbm1wdjJjaW5mb3JtX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1MnNubXB2MmNpbmZvcm1fc2ltcGxlCmluZGV4IDc3ZjNhNGMuLjQyMDhkZjggMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1MnNubXB2MmNpbmZvcm1fc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1MnNubXB2MmNpbmZvcm1fc2ltcGxlCkBAIC01LDYgKzUsNyBAQAogSEVBREVSIFNOTVB2MmMgaW5mb3JtcyByZWNlaXZlZCBhbmQgc2VudCBieSB0b29scwogCiBTS0lQSUYgTkVUU05NUF9ESVNBQkxFX1NOTVBWMkMKK1NLSVBJRk5PVCBVU0lOR19NSUJJSV9WQUNNX0NPTkZfTU9EVUxFCiAKICMKICMgQmVnaW4gdGVzdApkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdDJfc2ltcGxlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdDJfc2ltcGxlCmluZGV4IDA3M2QzYzQuLjZhNDM5ODkgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1N3RyYXBkYXV0aHRlc3QyX3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTd0cmFwZGF1dGh0ZXN0Ml9zaW1wbGUKQEAgLTIsNiArMiw4IEBACiAKIC4gLi4vc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaAogCitTS0lQSUZOT1QgTkVUU05NUF9TRUNNT0RfVVNNCisKIEhFQURFUiBzbm1wdHJhcGQgZGlzY2FyZHMgb2YgdW5hdXRob3JpemVkIG5vdGlmaWNhdGlvbiB0eXBlcyAKIAogIwpkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdDNfc2ltcGxlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdDNfc2ltcGxlCmluZGV4IDE0MjZiNGEuLjA3OGVmMzggMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1N3RyYXBkYXV0aHRlc3QzX3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTd0cmFwZGF1dGh0ZXN0M19zaW1wbGUKQEAgLTIsNiArMiw4IEBACiAKIC4gLi4vc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaAogCitTS0lQSUZOT1QgTkVUU05NUF9TRUNNT0RfVVNNCisKIEhFQURFUiBzbm1wdHJhcGQgZGlzY2FyZHMgb2YgaW5jb3JyZWN0IHZpZXcgdHlwZXMgCiAKICMKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1N3RyYXBkYXV0aHRlc3Rfc2ltcGxlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdF9zaW1wbGUKaW5kZXggZTI1ZTM5ZS4uNGUyZmMxMCAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdF9zaW1wbGUKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdF9zaW1wbGUKQEAgLTIsNiArMiw4IEBACiAKIC4gLi4vc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaAogCitTS0lQSUZOT1QgTkVUU05NUF9TRUNNT0RfVVNNCisKIEhFQURFUiBzbm1wdHJhcGQgYXV0aG9yaXphdGlvbiBmYWlsdXJlIG9mIG5vbiBhdXRob3JpemVkIHVzZXJzCiAKICMKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1OXRyYXBkdHJhcGhhbmRsZV9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTl0cmFwZHRyYXBoYW5kbGVfc2ltcGxlCmluZGV4IDJjMWY3YTYuLjUzZDViOTAgMTAwNzU1Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1OXRyYXBkdHJhcGhhbmRsZV9zaW1wbGUKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU5dHJhcGR0cmFwaGFuZGxlX3NpbXBsZQpAQCAtMTksNiArMTksNyBAQAogCiBTS0lQSUYgTkVUU05NUF9ESVNBQkxFX1NOTVBWMkMKIFNLSVBJRk5PVCBVU0lOR19VVElMSVRJRVNfRVhFQ1VURV9NT0RVTEUKK1NLSVBJRk5PVCBIQVZFX1NJR0hVUAogCiAjCiAjIEJlZ2luIHRlc3QKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA2MHRyYXBkcGVybF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNjB0cmFwZHBlcmxfc2ltcGxlCmluZGV4IDdlNzIzYmIuLjcwZGVjZjQgMTAwNzU1Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA2MHRyYXBkcGVybF9zaW1wbGUKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDYwdHJhcGRwZXJsX3NpbXBsZQpAQCAtNyw2ICs3LDcgQEAKIFNLSVBJRiBORVRTTk1QX0RJU0FCTEVfU05NUFYyQwogU0tJUElGTk9UIE5FVFNOTVBfRU1CRURERURfUEVSTAogU0tJUElGTk9UIEhBVkVfU0lHSFVQCitTS0lQSUZOT1QgTkVUU05NUF9TRUNNT0RfVVNNCiAKICMKICMgQmVnaW4gdGVzdApkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDYxYWdlbnRwZXJsX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA2MWFnZW50cGVybF9zaW1wbGUKaW5kZXggNWViZjg2My4uYzIwYTNmZiAxMDA3NTUKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDYxYWdlbnRwZXJsX3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNjFhZ2VudHBlcmxfc2ltcGxlCkBAIC03LDYgKzcsNyBAQAogU0tJUElGIE5FVFNOTVBfRElTQUJMRV9TTk1QVjJDCiBTS0lQSUZOT1QgTkVUU05NUF9FTUJFRERFRF9QRVJMCiBTS0lQSUZOT1QgSEFWRV9TSUdIVVAKK1NLSVBJRk5PVCBORVRTTk1QX1NFQ01PRF9VU00KIAogIwogIyBCZWdpbiB0ZXN0CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNjVhZ2VudGV4dGVuZF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNjVhZ2VudGV4dGVuZF9zaW1wbGUKaW5kZXggNjhjMzhmOS4uZjQxOTI2NiAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDY1YWdlbnRleHRlbmRfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA2NWFnZW50ZXh0ZW5kX3NpbXBsZQpAQCAtMjEsMTEgKzIxLDEwIEBACiAjIEJlZ2luIHRlc3QKICMKIAoraW5kZXg9JyJoZWxsbyInCiBpZiBbICJ4JE9TVFlQRSIgPSAieG1zeXMiIF07IHRoZW4KLSAgICBpbmRleD0nXCJoZWxsb1wiJwogICAgIENPTkZJR0FHRU5UIGV4dGVuZCBoZWxsbyAkTVNZU19TSCAtYyAiJyIgZWNobyBoZWxsb193b3JsZCAiJyIKIGVsc2UKLSAgICBpbmRleD0nImhlbGxvIicKICAgICBDT05GSUdBR0VOVCBleHRlbmQgaGVsbG8gL3Vzci9iaW4vZW52IGVjaG8gaGVsbG9fd29ybGQKIGZpCiAKQEAgLTMzLDE1ICszMiwxNSBAQAogCiAjIE5FVC1TTk1QLUVYVEVORC1NSUI6Om5zRXh0ZW5kT3V0cHV0MUxpbmUuImhlbGxvIiA9IFNUUklORzogImhlbGxvX3dvcmxkIgogQ0FQVFVSRSAiJFNOTVBHRVQgJFNOTVBfRkxBR1MgLSRzbm1wX3ZlcnNpb24gLWMgJFRFU1RDT01NVU5JVFkgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS40LjEuODA3Mi4xLjMuMi4zLjEuMS4kaW5kZXgiCi1DSEVDS09SRElFICJoZWxsb193b3JsZCIKK0NIRUNLT1JESUUgIlNUUklORzogaGVsbG9fd29ybGQiCiAKICNORVQtU05NUC1FWFRFTkQtTUlCOjpuc0V4dGVuZE91dHB1dEZ1bGwuImhlbGxvIiA9IFNUUklORzogImhlbGxvX3dvcmxkIgogQ0FQVFVSRSAiJFNOTVBHRVQgJFNOTVBfRkxBR1MgLSRzbm1wX3ZlcnNpb24gLWMgJFRFU1RDT01NVU5JVFkgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS40LjEuODA3Mi4xLjMuMi4zLjEuMi4kaW5kZXgiCi1DSEVDS09SRElFICJoZWxsb193b3JsZCIKK0NIRUNLT1JESUUgIlNUUklORzogaGVsbG9fd29ybGQiCiAKICNORVQtU05NUC1FWFRFTkQtTUlCOjpuc0V4dGVuZE91dExpbmUuImhlbGxvIi4xID0gU1RSSU5HOiAiaGVsbG9fd29ybGQiCiBDQVBUVVJFICIkU05NUEdFVCAkU05NUF9GTEFHUyAtJHNubXBfdmVyc2lvbiAtYyAkVEVTVENPTU1VTklUWSAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUIC4xLjMuNi4xLjQuMS44MDcyLjEuMy4yLjQuMS4yLiRpbmRleC4xIgotQ0hFQ0tPUkRJRSAiaGVsbG9fd29ybGQiCitDSEVDS09SRElFICJTVFJJTkc6IGhlbGxvX3dvcmxkIgogCiAjTkVULVNOTVAtRVhURU5ELU1JQjo6bnNFeHRlbmRPdXROdW1MaW5lcy4iaGVsbG8iID0gSU5URUdFUjogMQogQ0FQVFVSRSAiJFNOTVBHRVQgJFNOTVBfRkxBR1MgLSRzbm1wX3ZlcnNpb24gLWMgJFRFU1RDT01NVU5JVFkgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS40LjEuODA3Mi4xLjMuMi4zLjEuMy4kaW5kZXgiCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTFhZ2VudHhzZXRfc2ltcGxlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTExYWdlbnR4c2V0X3NpbXBsZQppbmRleCBjNzY3MDY0Li44NzkzOWJkIDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTFhZ2VudHhzZXRfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDExMWFnZW50eHNldF9zaW1wbGUKQEAgLTgsNiArOCw3IEBACiBTS0lQSUZOT1QgVVNJTkdfQUdFTlRYX1NVQkFHRU5UX01PRFVMRQogU0tJUElGTk9UIFVTSU5HX01JQklJX1NZU1RFTV9NSUJfTU9EVUxFCiBTS0lQSUYgICAgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCitTS0lQSUYgICAgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAKICMKICMgQmVnaW4gdGVzdApkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTEyYWdlbnR4c2V0ZmFpbF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTJhZ2VudHhzZXRmYWlsX3NpbXBsZQppbmRleCA0ZjFmMGNiLi5kNjEwYjQxIDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTJhZ2VudHhzZXRmYWlsX3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTJhZ2VudHhzZXRmYWlsX3NpbXBsZQpAQCAtOCw2ICs4LDcgQEAKIFNLSVBJRk5PVCBVU0lOR19BR0VOVFhfU1VCQUdFTlRfTU9EVUxFCiBTS0lQSUZOT1QgVVNJTkdfTUlCSUlfU1lTVEVNX01JQl9NT0RVTEUKIFNLSVBJRiAgICBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKK1NLSVBJRiAgICBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIAogIwogIyBCZWdpbiB0ZXN0CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTNhZ2VudHh0cmFwX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDExM2FnZW50eHRyYXBfc2ltcGxlCmluZGV4IGJlMmI5YmUuLjRmYTVlMmYgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDExM2FnZW50eHRyYXBfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDExM2FnZW50eHRyYXBfc2ltcGxlCkBAIC03LDYgKzcsNyBAQAogU0tJUElGTk9UIFVTSU5HX0FHRU5UWF9NQVNURVJfTU9EVUxFCiBTS0lQSUZOT1QgVVNJTkdfQUdFTlRYX1NVQkFHRU5UX01PRFVMRQogU0tJUElGTk9UIFVTSU5HX0VYQU1QTEVTX0VYQU1QTEVfTU9EVUxFCitTS0lQSUZOT1QgTkVUU05NUF9TRUNNT0RfVVNNCiAKICMKICMgQmVnaW4gdGVzdApkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTE0YWdlbnR4YWdlbnR4dHJhcF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTRhZ2VudHhhZ2VudHh0cmFwX3NpbXBsZQppbmRleCAzODBjMGVmLi41ODQ3NWQwIDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTRhZ2VudHhhZ2VudHh0cmFwX3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTRhZ2VudHhhZ2VudHh0cmFwX3NpbXBsZQpAQCAtNSw2ICs1LDcgQEAKIEhFQURFUiBBZ2VudFggdHJhcCBzZW5kaW5nIHN1cHBvcnQgdXNpbmcgYWdlbnR4dHJhcAogCiBTS0lQSUZOT1QgVVNJTkdfQUdFTlRYX01BU1RFUl9NT0RVTEUKK1NLSVBJRk5PVCBORVRTTk1QX1NFQ01PRF9VU00KIAogIwogIyBCZWdpbiB0ZXN0CkBAIC0zNyw3ICszOCw3IEBACiBTVE9QVFJBUEQKIAogIyBDaGVjayB0aGF0IHRoZSB0cmFwIHdhcyByZWNlaXZlZAotQ0hFQ0tUUkFQRCAibW9zdGx5X2hhcm1sZXNzIgorQ0hFQ0tUUkFQRCAiPSBTVFJJTkc6IFwiKm1vc3RseV9oYXJtbGVzc1wiKiIKIAogIyBhbGwgZG9uZSAod2hldykKIEZJTklTSEVECmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMjFwcm94eXNldF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMjFwcm94eXNldF9zaW1wbGUKaW5kZXggYzg3NjY4Yy4uZGQxOTY0MSAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTIxcHJveHlzZXRfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDEyMXByb3h5c2V0X3NpbXBsZQpAQCAtOCw2ICs4LDcgQEAKIFNLSVBJRk5PVCBVU0lOR19NSUJJSV9TWVNURU1fTUlCX01PRFVMRQogU0tJUElGICAgIE5FVFNOTVBfRElTQUJMRV9TTk1QVjJDCiBTS0lQSUYgICAgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCitTS0lQSUYgICAgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAKICMgWFhYOiB1Y2Qtc25tcC9wcm94eSBkb2Vzbid0IHByb3Blcmx5IHN1cHBvcnQgVENQIC0tIHJlbW92ZSB0aGlzIG9uY2UgaXQgZG9lcwogWyAieCRTTk1QX1RSQU5TUE9SVF9TUEVDIiA9ICJ4dGNwIiAtbyAieCRTTk1QX1RSQU5TUE9SVF9TUEVDIiA9ICJ4dGNwNiIgXSAmJiBTS0lQIFRlc3QgZG9lcyBub3Qgc3VwcG9ydCBUQ1AKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDEyMnByb3h5c2V0ZmFpbF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMjJwcm94eXNldGZhaWxfc2ltcGxlCmluZGV4IDdmNTdiZTkuLjdmMjc4NzMgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDEyMnByb3h5c2V0ZmFpbF9zaW1wbGUKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTIycHJveHlzZXRmYWlsX3NpbXBsZQpAQCAtOCw2ICs4LDcgQEAKIFNLSVBJRk5PVCBVU0lOR19NSUJJSV9TWVNURU1fTUlCX01PRFVMRQogU0tJUElGICAgIE5FVFNOTVBfRElTQUJMRV9TTk1QVjJDCiBTS0lQSUYgICAgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCitTS0lQSUYgICAgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAKICMgWFhYOiB1Y2Qtc25tcC9wcm94eSBkb2Vzbid0IHByb3Blcmx5IHN1cHBvcnQgVENQIC0tIHJlbW92ZSB0aGlzIG9uY2UgaXQgZG9lcwogWyAieCRTTk1QX1RSQU5TUE9SVF9TUEVDIiA9ICJ4dGNwIiBdICYmIFNLSVAgVGVzdCBkb2VzIG5vdCBzdXBwb3J0IFRDUApkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTMwc25tcHYxdmFjbWdldF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMzBzbm1wdjF2YWNtZ2V0X3NpbXBsZQppbmRleCAxOTc0YjdmLi44MDYyM2Y0IDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMzBzbm1wdjF2YWNtZ2V0X3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMzBzbm1wdjF2YWNtZ2V0X3NpbXBsZQpAQCAtMTYsNiArMTYsNyBAQAogc25tcF92ZXJzaW9uPXYxCiAuIC4vU3ZhY21jb25maWcKIAorQUdFTlRfRkxBR1M9IiRBR0VOVF9GTEFHUyAtSS13aW5FeHRETEwiCiBTVEFSVEFHRU5UCiAKIENBUFRVUkUgInNubXBnZXQgLU9uICRTTk1QX0ZMQUdTIC1jIHRlc3Rjb21tdW5pdHkxIC12IDEgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS4yLjEuMS4xLjAiIApkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTQxc25tcHYyY3ZhY21nZXRmYWlsX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDE0MXNubXB2MmN2YWNtZ2V0ZmFpbF9zaW1wbGUKaW5kZXggNWY2NjViYS4uY2QzNjJhYSAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTQxc25tcHYyY3ZhY21nZXRmYWlsX3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxNDFzbm1wdjJjdmFjbWdldGZhaWxfc2ltcGxlCkBAIC02LDYgKzYsOCBAQAogCiBTS0lQSUYgTkVUU05NUF9ESVNBQkxFX1NOTVBWMkMKIFNLSVBJRiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKK1NLSVBJRiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK1NLSVBJRk5PVCBVU0lOR19NSUJJSV9WQUNNX0NPTkZfTU9EVUxFCiAKICMKICMgQmVnaW4gdGVzdApkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTU0ZGlzbWFucGluZ21pYl9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxNTRkaXNtYW5waW5nbWliX3NpbXBsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWNmZmUwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTU0ZGlzbWFucGluZ21pYl9zaW1wbGUKQEAgLTAsMCArMSwxMTYgQEAKKyMhL2Jpbi9zaAorCisuIC4uL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2gKKworSEVBREVSIERJU01BTiBQSU5HIE1JQgorCitbICIkVUlEIiA9IDAgXSB8fCBTS0lQICJOb3QgcGVybWl0dGVkIHRvIGNyZWF0ZSByYXcgc29ja2V0cyIKK1NLSVBJRk5PVCBVU0lOR19ESVNNQU5fUElOR19NSUJfTU9EVUxFCitTS0lQSUYgTkVUU05NUF9ESVNBQkxFX1NOTVBWMQorCisjIFNOTVB2Mi1UQworYWN0aXZlPTEKK2NyZWF0ZUFuZFdhaXQ9NQorZGVzdHJveT02CisjIERJU01BTi1QSU5HLU1JQgorRElTTUFOX1BJTkdfTUlCPS4xLjMuNi4xLjIuMS44MC4xCitwaW5nQ3RsRW50cnk9JHtESVNNQU5fUElOR19NSUJ9LjIuMQorcGluZ0N0bFRhcmdldEFkZHJlc3NUeXBlPSR7cGluZ0N0bEVudHJ5fS4zCitwaW5nQ3RsVGFyZ2V0QWRkcmVzVHlwZUlwdjQ9MQorcGluZ0N0bFRhcmdldEFkZHJlc3M9JHtwaW5nQ3RsRW50cnl9LjQKK3BpbmdDdGxQcm9iZUNvdW50PSR7cGluZ0N0bEVudHJ5fS43CitwaW5nQ3RsQWRtaW5TdGF0dXM9JHtwaW5nQ3RsRW50cnl9LjgKK3BpbmdDdGxBZG1pblN0YXR1c0VuYWJsZWQ9MQorcGluZ0N0bEZyZXF1ZW5jeT0ke3BpbmdDdGxFbnRyeX0uMTAKK3BpbmdDdGxEZXNjcj0ke3BpbmdDdGxFbnRyeX0uMTcKK3BpbmdDdGxSb3dTdGF0dXM9JHtwaW5nQ3RsRW50cnl9LjIzCitwaW5nUmVzdWx0c0VudHJ5PSR7RElTTUFOX1BJTkdfTUlCfS4zLjEKK3BpbmdSZXN1bHRzUHJvYmVSZXNwb25zZXM9JHtwaW5nUmVzdWx0c0VudHJ5fS43CitwaW5nUmVzdWx0c1NlbnRQcm9iZXM9JHtwaW5nUmVzdWx0c0VudHJ5fS44CisjIFRlc3QgY29uZmlndXJhdGlvbgorVEFSR0VUX0FERFJFU1M9MTI3LjAuMC4xCitJRFhQRlg9OC43OC4xMDEuMTE2LjQ1LjgzLjc4Ljc3LjgwLjYuODQuNDkuNTMuNTIgIyAiTmV0LVNOTVAiLiJUMTU0IgorSURYUz0iJHtJRFhQRlh9Ljk1LjQ5ICR7SURYUEZYfS45NS41MCAke0lEWFBGWH0uOTUuNTEiCitQUk9CRV9DT1VOVD01CisKKworIworIyBCZWdpbiB0ZXN0CisjCisKKyMgc3RhbmRhcmQgVjEgY29uZmlndXJhdGlvbjogdGVzdGNvbW11bml0eQorc25tcF93cml0ZV9hY2Nlc3M9J2FsbCcKKy4gLi9TdjFjb25maWcKKworU1RBUlRBR0VOVAorCitmb3IgSURYIGluICRJRFhTOyBkbworCitDQVBUVVJFICJzbm1wc2V0IC1PbmUgJFNOTVBfRkxBR1MgLWMgdGVzdGNvbW11bml0eSAtdjEgICAgICAgICAgXAorICAgICAgICAgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAgIFwKKyAgICAgICAgICRwaW5nQ3RsUm93U3RhdHVzLiRJRFggaSAkZGVzdHJveSIKKworQ0hFQ0sgIl4kcGluZ0N0bFJvd1N0YXR1cy4kSURYID0gSU5URUdFUjogJGRlc3Ryb3kiCisKK0NBUFRVUkUgInNubXBzZXQgLU9uZSAkU05NUF9GTEFHUyAtYyB0ZXN0Y29tbXVuaXR5IC12MSAgICAgICAgICBcCisgICAgICAgICAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUICAgXAorICAgICAgICAgJHBpbmdDdGxSb3dTdGF0dXMuJElEWCBpICRjcmVhdGVBbmRXYWl0IgorCitDSEVDSyAiXiRwaW5nQ3RsUm93U3RhdHVzLiRJRFggPSBJTlRFR0VSOiAkY3JlYXRlQW5kV2FpdCIKKworQ0FQVFVSRSAic25tcHNldCAtT25lICRTTk1QX0ZMQUdTIC1jIHRlc3Rjb21tdW5pdHkgLXYxICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICRTTk1QX1RSQU5TUE9SVF9TUEVDOiRTTk1QX1RFU1RfREVTVCRTTk1QX1NOTVBEX1BPUlQgICAgICAgICAgIFwKKyAgICAgICAgICRwaW5nQ3RsVGFyZ2V0QWRkcmVzc1R5cGUuJElEWCBpICRwaW5nQ3RsVGFyZ2V0QWRkcmVzVHlwZUlwdjQgIFwKKyAgICAgICAgICRwaW5nQ3RsVGFyZ2V0QWRkcmVzcy4kSURYIHMgJFRBUkdFVF9BRERSRVNTICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICRwaW5nQ3RsRnJlcXVlbmN5LiRJRFggdSAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICRwaW5nQ3RsRGVzY3IuJElEWCBzIFNjcmlwdEdlbmVyYXRlZCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICRwaW5nQ3RsUHJvYmVDb3VudC4kSURYIHUgJHtQUk9CRV9DT1VOVH0gICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICRwaW5nQ3RsQWRtaW5TdGF0dXMuJElEWCBpICRwaW5nQ3RsQWRtaW5TdGF0dXNFbmFibGVkIgorCitDSEVDSyAiXiRwaW5nQ3RsQWRtaW5TdGF0dXMuJElEWCA9IElOVEVHRVI6ICRwaW5nQ3RsQWRtaW5TdGF0dXNFbmFibGVkIgorCitDQVBUVVJFICJzbm1wc2V0IC1PbmUgJFNOTVBfRkxBR1MgLWMgdGVzdGNvbW11bml0eSAtdjEgICAgICAgICAgXAorICAgICAgICAgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAgIFwKKyAgICAgICAgICRwaW5nQ3RsUm93U3RhdHVzLiRJRFggaSAkYWN0aXZlIgorCitDSEVDSyAiXiRwaW5nQ3RsUm93U3RhdHVzLiRJRFggPSBJTlRFR0VSOiAkYWN0aXZlIgorCitkb25lCisKK3NsZWVwICR7UFJPQkVfQ09VTlR9CitzbGVlcCAyCisKK2ZvciBJRFggaW4gJElEWFM7IGRvCisKK0NBUFRVUkUgInNubXBnZXQgLU9uICRTTk1QX0ZMQUdTIC1jIHRlc3Rjb21tdW5pdHkgLXYxICAgICAgICAgICBcCisgICAgICAgICAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUICAgXAorICAgICAgICAgJHBpbmdSZXN1bHRzU2VudFByb2Jlcy4kSURYIgorCitDSEVDSyAiXiRwaW5nUmVzdWx0c1NlbnRQcm9iZXMuJElEWCA9IEdhdWdlMzI6ICR7UFJPQkVfQ09VTlR9IgorCitDQVBUVVJFICJzbm1wZ2V0IC1PbiAkU05NUF9GTEFHUyAtYyB0ZXN0Y29tbXVuaXR5IC12MSAgICAgICAgICAgXAorICAgICAgICAgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAgIFwKKyAgICAgICAgICRwaW5nUmVzdWx0c1Byb2JlUmVzcG9uc2VzLiRJRFgiCisKK0NIRUNLICJeJHBpbmdSZXN1bHRzUHJvYmVSZXNwb25zZXMuJElEWCA9IEdhdWdlMzI6ICR7UFJPQkVfQ09VTlR9IgorCitkb25lCisKKyMgRGVsZXRlIGZpcnN0IHJvdyBhbmQgbGVhdmUgdGhlIHJlbWFpbmluZyByb3dzIGluIHRoZSB0YWJsZS4KKworZm9yIElEWCBpbiAkSURYUzsgZG8KKworQ0FQVFVSRSAic25tcHNldCAtT25lICRTTk1QX0ZMQUdTIC1jIHRlc3Rjb21tdW5pdHkgLXYxICAgICAgICAgIFwKKyAgICAgICAgICRTTk1QX1RSQU5TUE9SVF9TUEVDOiRTTk1QX1RFU1RfREVTVCRTTk1QX1NOTVBEX1BPUlQgICBcCisgICAgICAgICAkcGluZ0N0bFJvd1N0YXR1cy4kSURYIGkgJGRlc3Ryb3kiCisKK0NIRUNLICJeJHBpbmdDdGxSb3dTdGF0dXMuJElEWCA9IElOVEVHRVI6ICRkZXN0cm95IgorCiticmVhaworCitkb25lCisKK1NUT1BBR0VOVAorCisKK0ZJTklTSEVECmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxNjFzbm1wVGFyZ2V0QWRkcl9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxNjFzbm1wVGFyZ2V0QWRkcl9zaW1wbGUKaW5kZXggYzdjYWE2YS4uMDBlMDk0ZSAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTYxc25tcFRhcmdldEFkZHJfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDE2MXNubXBUYXJnZXRBZGRyX3NpbXBsZQpAQCAtMzIsMTEgKzMyLDI0IEBACiAKIENIRUNLT1JESUUgIm5vQ3JlYXRpb24iCiAKKyMgQ3JlYXRlIGFuIGVudHJ5IHdpdGggaW5kZXggJ0JcMEEnCitDQVBUVVJFICJzbm1wc2V0IC1PbiAtT2UgJFNOTVBfRkxBR1MgJEFVVEhURVNUQVJHUyAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUIC4xLjMuNi4xLjYuMy4xMi4xLjIuMS45LjY2LjAuNjUgaSA1IgorCitDSEVDS09SRElFICIuMS4zLjYuMS42LjMuMTIuMS4yLjEuOS42Ni4wLjY1ID0gSU5URUdFUjogNSIKKworIyBDaGVjayB0aGF0IHRoZSB0YWJsZSBjb250YWlucyB0aGUgJ0JcMEEnIGVudHJ5IGFuZCBubyBvdGhlcgorQ0FQVFVSRSAic25tcHdhbGsgLU9uIC1PZSAkU05NUF9GTEFHUyAkQVVUSFRFU1RBUkdTICRTTk1QX1RSQU5TUE9SVF9TUEVDOiRTTk1QX1RFU1RfREVTVCRTTk1QX1NOTVBEX1BPUlQgLjEuMy42LjEuNi4zLjEyLjEuMi4xLjkiCisKK0NIRUNLICJeLjEuMy42LjEuNi4zLjEyLjEuMi4xLjkiCitDSEVDS09SRElFICIuMS4zLjYuMS42LjMuMTIuMS4yLjEuOS42Ni4wLjY1ID0iCisKKyMgRGVsZXRlIGFuIGVudHJ5IHdpdGggaW5kZXggJ0JcMEEnCitDQVBUVVJFICJzbm1wc2V0IC1PbiAtT2UgJFNOTVBfRkxBR1MgJEFVVEhURVNUQVJHUyAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUIC4xLjMuNi4xLjYuMy4xMi4xLjIuMS45LjY2LjAuNjUgaSA2IgorCiAjIENyZWF0ZSBhbiBlbnRyeSB3aXRoIGluZGV4ICdBJwogQ0FQVFVSRSAic25tcHNldCAtT24gLU9lICRTTk1QX0ZMQUdTICRBVVRIVEVTVEFSR1MgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS42LjMuMTIuMS4yLjEuOS42NSBpIDUiCiAKIENIRUNLT1JESUUgIi4xLjMuNi4xLjYuMy4xMi4xLjIuMS45LjY1ID0gSU5URUdFUjogNSIKLUNIRUNLT1JESUUgIi4xLjMuNi4xLjYuMy4xMi4xLjIuMS45LjY1ID0iCiAKICMgQ2hlY2sgdGhhdCB0aGUgdGFibGUgY29udGFpbnMgb25lIGFuZCBvbmx5IG9uZSBlbnRyeQogQ0FQVFVSRSAic25tcHdhbGsgLU9uIC1PZSAkU05NUF9GTEFHUyAkQVVUSFRFU1RBUkdTICRTTk1QX1RSQU5TUE9SVF9TUEVDOiRTTk1QX1RFU1RfREVTVCRTTk1QX1NOTVBEX1BPUlQgLjEuMy42LjEuNi4zLjEyLjEuMi4xLjkiCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9yZWFkLW9ubHkvVDAxNDFzbm1wdjJjc2V0ZmFpbF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9yZWFkLW9ubHkvVDAxNDFzbm1wdjJjc2V0ZmFpbF9zaW1wbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTcwNWY0OQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3JlYWQtb25seS9UMDE0MXNubXB2MmNzZXRmYWlsX3NpbXBsZQpAQCAtMCwwICsxLDMyIEBACisjIS9iaW4vc2gKKworLiAuLi9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoCisKK0hFQURFUiBTTk1QdjJjIHNldCBmYWlsdXJlIHRvIHN5c3RlbS5zeXNDb250YWN0LjAKKworU0tJUElGTk9UIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorU0tJUElGIE5FVFNOTVBfRElTQUJMRV9TTk1QVjJDCitTS0lQSUZOT1QgVVNJTkdfTUlCSUlfU1lTVEVNX01JQl9NT0RVTEUKKworIworIyBCZWdpbiB0ZXN0CisjCisKKyMgc3RhbmRhcmQgVjJDIGNvbmZpZ3VyYXRpb246IHRlc3Rjb211bm5pdHkKK3NubXBfd3JpdGVfYWNjZXNzPSdhbGwnCisoY2QgLi4vZGVmYXVsdCA7IC4gLi9TdjJjY29uZmlnKQorU1RBUlRBR0VOVAorCitDQVBUVVJFICJzbm1wZ2V0IC1PbiAkU05NUF9GTEFHUyAtYyB0ZXN0Y29tbXVuaXR5IC12IDJjICRTTk1QX1RSQU5TUE9SVF9TUEVDOiRTTk1QX1RFU1RfREVTVCRTTk1QX1NOTVBEX1BPUlQgLjEuMy42LjEuMi4xLjEuNC4wIgorCitDSEVDSyAiLjEuMy42LjEuMi4xLjEuNC4wID0gU1RSSU5HOiIKKworQ0FQVFVSRSAic25tcHNldCAtciAwIC10IDEgLU9uICRTTk1QX0ZMQUdTIC1jIHRlc3Rjb21tdW5pdHkgLXYgMmMgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS4yLjEuMS40LjAgcyBmb29iYXJ0ZXN0aW5nYmF6IgorCitDSEVDSyAiVGltZW91dDogTm8gUmVzcG9uc2UiCisKK1NUT1BBR0VOVAorCitDSEVDS0FHRU5UICdCYWQgUERVIHR5cGUgcmVjZWl2ZWQnCisKK0ZJTklTSEVECmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9zbm1wdjMvVDA0MGtleW1hbmFnZXRlc3RfY2FwcC5jIGIvdGVzdGluZy9mdWxsdGVzdHMvc25tcHYzL1QwNDBrZXltYW5hZ2V0ZXN0X2NhcHAuYwppbmRleCAzZTBmZDU4Li5kNjhmNjYzIDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9zbm1wdjMvVDA0MGtleW1hbmFnZXRlc3RfY2FwcC5jCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3NubXB2My9UMDQwa2V5bWFuYWdldGVzdF9jYXBwLmMKQEAgLTQwMSw5ICs0MDEsNyBAQAogICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIiMgZW5naW5lSUQlcyAobGVuPSVkKTogICVzXG4iLAogICAgICAgICAgICAgICAgIChpc2RlZmF1bHQpID8gIiAoZGVmYXVsdCkiIDogIiIsCiAgICAgICAgICAgICAgICAgZW5naW5lSURfbGVuLCAoKHMgIT0gMCkgPyAoKHVfY2hhciAqKSBzKSA6IGVuZ2luZUlEKSk7Ci0gICAgaWYgKHMpIHsKLSAgICAgICAgU05NUF9GUkVFKHMpOwotICAgIH0KKyAgICBTTk1QX0ZSRUUocyk7CiAKIAogCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9URVNUQ09ORi5zaCBiL3Rlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX1RFU1RDT05GLnNoCmluZGV4IDVkMWRjNTAuLjJhMGE4YWYgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX1RFU1RDT05GLnNoCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX1RFU1RDT05GLnNoCkBAIC03LDYgKzcsMjggQEAKICMgICpTTk1QX1BFUlNJU1RFTlRfRklMRTogd2hlcmUgdG8gc3RvcmUgdGhlIGFnZW50J3MgcGVyc2lzdGVudCBpbmZvcm1hdGlvbgogIyAgICAgICAgICAgICAgICAgICAgICAgICAoWFhYOiB0aGlzIHNob3VsZCBiZSBzcGVjaWZpYyB0byBqdXN0IHRoZSBhZ2VudCkKIAorIyBNaW5HVy9NU1lTIG9ubHk6IHRyYW5zbGF0ZSBhbiBNU1lTIHBhdGggYmFjayBpbnRvIGEgRE9TIHBhdGggc3VjaCB0aGF0IHNubXBkCisjIGFuZCB0aGUgTmV0LVNOTVAgYXBwbGljYXRpb25zIGNhbiB1bmRlcnN0YW5kIGl0LiBPbmUgb2YgdGhlIGZlYXR1cmVzIG9mIE1TWVMKKyMgaXMgdGhhdCBpZiBhIFBPU0lYLXN0eWxlIHBhdGggaXMgcGFzc2VkIGFzIGEgY29tbWFuZC1saW5lIGFyZ3VtZW50IHRvIGFuCisjIGV4ZWN1dGFibGUgdGhhdCBNU1lTIHRyYW5zbGF0ZXMgdGhhdCBwYXRoIHRvIGEgRE9TLXN0eWxlIHBhdGggYmVmb3JlCisjIHN0YXJ0aW5nIHRoZSBleGVjdXRhYmxlLiBUaGlzIGlzIGEga2V5IGZlYXR1cmUgb2YgTVNZUyB0aGF0IG1ha2VzIGl0CisjIHBvc3NpYmxlIHRvIHJ1biBzaGVsbCBzY3JpcHRzIHVubW9kaWZpZWQgYW5kIGF0IHRoZSBzYW1lIHRpbWUgdG8gdXNlCisjIGV4ZWN1dGFibGVzIHRoYXQgYWNjZXB0IERPUy1zdHlsZSBwYXRocy4gVGhlcmUgaXMgbm8gc3VwcG9ydCBob3dldmVyIGZvcgorIyBhdXRvbWF0aWNhbCB0cmFuc2xhdGlvbiBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCBjb250YWluIHBhdGhzLiBIZW5jZQorIyB0aGlzIGZ1bmN0aW9uIHRoYXQgdHJhbnNsYXRlcyBwYXRocyBleHBsaWNpdGx5LgordHJhbnNsYXRlX3BhdGgoKSB7CisgIGlmIFsgIiRPU1RZUEUiID0gbXN5cyBdOyB0aGVuCisgICAgbG9jYWwgdD1gc2V0IFwKKyAgICAgICAgICAgICB8IHNlZCAtbiAtZSAicy9eJDE9J1woLipcKSckLyR7U05NUF9FTlZfU0VQQVJBVE9SfVwxL3AiIFwKKyAgICAgICAgICAgICAgICAgICAgICAtZSAicy9eJDE9XCguKlwpJC8ke1NOTVBfRU5WX1NFUEFSQVRPUn1cMS9wIiBcCisgICAgICAgICAgICAgfCBzZWQgLWUgInN8JHtTTk1QX0VOVl9TRVBBUkFUT1J9L2MvfCR7U05NUF9FTlZfU0VQQVJBVE9SfWM6L3xnIiBcCisgICAgICAgICAgICAgICAgICAgLWUgInN8JHtTTk1QX0VOVl9TRVBBUkFUT1J9L3RtcC98JHtTTk1QX0VOVl9TRVBBUkFUT1J9Yzovd2luZG93cy90ZW1wL3xnIiBcCisgICAgICAgICAgICAgfCBzZWQgLWUgInMvXiR7U05NUF9FTlZfU0VQQVJBVE9SfS8vIiBcCisgICAgICAgICAgICBgCisgICAgZXZhbCAiJDE9JyR0JyIKKyAgZmkKK30KKwogIwogIyBPbmx5IGFsbG93IG91cnNlbHZlcyB0byBiZSBldmFsJ2VkIG9uY2UKICMKQEAgLTQ4LDYgKzcwLDggQEAKICAgICBleHBvcnQgU05NUF9WRVJCT1NFCiBmaQogCitTTk1QX0VOVl9TRVBBUkFUT1I9ImAke2J1aWxkZGlyfS9uZXQtc25tcC1jb25maWcgLS1lbnYtc2VwYXJhdG9yYCIKKwogaWYgWyAieCRNSUJESVJTIiA9ICJ4IiBdOyB0aGVuCiAgIGlmIFsgIngkU05NUF9QUkVGRVJfTkVBUl9NSUJTIiA9ICJ4MSIgXTsgdGhlbgogICAgIE1JQkRJUlM9JHtzcmNkaXJ9L21pYnMKQEAgLTEwMyw2ICsxMjcsNyBAQAogICAgICAgICB0ZXN0bnVtPTAKICAgICBmaQogICAgIFNOTVBfVE1QRElSPSIvdG1wL3NubXAtdGVzdC0kdGVzdG51bS0kJCIKKyAgICB0cmFuc2xhdGVfcGF0aCBTTk1QX1RNUERJUgogICAgIGV4cG9ydCBTTk1QX1RNUERJUgogICAgIGlmIFsgLWQgJFNOTVBfVE1QRElSIF07IHRoZW4KIAllY2hvICIkMDogRVJST1I6ICRTTk1QX1RNUERJUiBhbHJlYWR5IGV4aXN0ZWQuIgpAQCAtMTEwLDcgKzEzNSw3IEBACiAgICAgZmkKICAgZmkKICAgaWYgWyAhIC1kICRTTk1QX1RNUERJUiBdOyB0aGVuCi0gICAgbWtkaXIgJFNOTVBfVE1QRElSCisgICAgbWtkaXIgLXAgJFNOTVBfVE1QRElSCiAgICAgY2htb2QgMDcwMCAkU05NUF9UTVBESVIKICAgZmkKICAgaWYgWyAieCRTTk1QX1RNUF9QRVJTSVNURU5URElSIiA9ICJ4IiBdOyB0aGVuCkBAIC0xMzAsNyArMTU1LDYgQEAKIAogU05NUF9JR05PUkVfV0lORE9XU19SRUdJU1RSWT0idHJ1ZSIKIGV4cG9ydCBTTk1QX0lHTk9SRV9XSU5ET1dTX1JFR0lTVFJZCi1TTk1QX0VOVl9TRVBBUkFUT1I9ImAke2J1aWxkZGlyfS9uZXQtc25tcC1jb25maWcgLS1lbnYtc2VwYXJhdG9yYCIKIFNOTVBfUEVSTFBST0c9ImAke2J1aWxkZGlyfS9uZXQtc25tcC1jb25maWcgLS1wZXJscHJvZ2AiCiBTTk1QX1RFU1RESVI9IiRTTk1QX0JBU0VESVIvdGVzdHMiCiBTTk1QX0NPTkZJR19GSUxFPSIkU05NUF9UTVBESVIvc25tcGQuY29uZiIKQEAgLTE0NCw4ICsxNjgsMTAgQEAKIFNOTVBfQUdFTlRYX1BJRF9GSUxFPSIkU05NUF9UTVBESVIvYWdlbnR4LnBpZCIKIFNOTVBfQUdFTlRYX0xPR19GSUxFPSIkU05NUF9UTVBESVIvYWdlbnR4LmxvZyIKIFNOTVBDT05GUEFUSD0iJHtTTk1QX1RNUERJUn0ke1NOTVBfRU5WX1NFUEFSQVRPUn0ke1NOTVBfVE1QX1BFUlNJU1RFTlRESVJ9IgordHJhbnNsYXRlX3BhdGggU05NUENPTkZQQVRICiBleHBvcnQgU05NUENPTkZQQVRICiBTTk1QX1BFUlNJU1RFTlRfRElSPSRTTk1QX1RNUF9QRVJTSVNURU5URElSCit0cmFuc2xhdGVfcGF0aCBTTk1QX1BFUlNJU1RFTlRfRElSCiBleHBvcnQgU05NUF9QRVJTSVNURU5UX0RJUgogI1NOTVBfUEVSU0lTVEVOVF9GSUxFPSIkU05NUF9UTVBfUEVSU0lTVEVOVERJUi9wZXJzaXN0ZW50LXN0b3JlLmNvbmYiCiAjZXhwb3J0IFNOTVBfUEVSU0lTVEVOVF9GSUxFCkBAIC0xNzUsOCArMjAxLDEyIEBACiBmaQogCiBpZiBbICJ4JE9TVFlQRSIgPSAieG1zeXMiIF07IHRoZW4KLSAgICAjIFRvIGRvOiBtYWtlIGNvbmZpZ3VyZSBmaW5kIG91dCB0aGUgcGF0aCBvZiBNU1lTJyBzaC5leGUuCi0gICAgTVNZU19TSD0iYzovbXN5cy8xLjAvYmluL3NoLmV4ZSIKKyAgICAjIE9idGFpbiB0aGUgTVNZUyBpbnN0YWxsYXRpb24gcGF0aCBmcm9tIHRoZSAhQzogZW52aXJvbm1lbnQgdmFyaWFibGUsCisgICAgIyByZW1vdmUgc3Vycm91bmRpbmcgc2luZ2xlIHF1b3RlcyBhbmQgY29udmVydCBiYWNrc2xhc2hlcyBpbnRvIGZvcndhcmQKKyAgICAjIHNsYXNoZXMuCisgICAgTVNZU19QQVRIPSIkKHNldCBcCisgICAgICAgICAgICAgICAgIHwgc2VkIC1uICdzfF5cIUM6PSciJyInXCguKlwpJyInIickfFwxfHAnIHwgc2VkICdzfFxcfC98ZycpIgorICAgIE1TWVNfU0g9IiRNU1lTX1BBVEgvc2guZXhlIgogZmkKIAogUFJPQkVfRk9SX1BPUlQoKSB7CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoIGIvdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaAppbmRleCAyZGYyYzk1Li43MThlZGM0IDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2gKQEAgLTY4LDggKzY4LDggQEAKIH0KIAogQ0FOX1VTTEVFUCgpIHsKLSAgIGlmIFsgIiRTTk1QX0NBTl9VU0xFRVAiID0gMCAtbyAiJFNOTVBfQ0FOX1VTTEVFUCIgPSAwIF0gOyB0aGVuCi0gICAgIHJldHVybiAkU05NUF9DQU5fVVNMRUVQCisgICBpZiBbICIkU05NUF9DQU5fVVNMRUVQIiA9IDAgLW8gIiRTTk1QX0NBTl9VU0xFRVAiID0gMSBdIDsgdGhlbgorICAgICByZXR1cm4gMAogICAgZmkKICAgIHNsZWVwIC4xID4gL2Rldi9udWxsIDI+JjEKICAgIGlmIFsgJD8gPSAwIF0gOyB0aGVuCkBAIC0xMzQsNyArMTM0LDcgQEAKIAltaXNzaW5nZmlsZXM9IiIKIAogCWZvciBmIGluICQqOyBkbwotCQlbIC1lICIkZiIgXSAmJiBjb250aW51ZQorCQlbIC1mICIkZiIgXSAmJiBjb250aW51ZQogCQllY2hvICJGQUlMRUQ6IENhbm5vdCBmaW5kIGZpbGUgXCIkZlwiLiIKIAkJbWlzc2luZ2ZpbGVzPXRydWUKIAlkb25lCkBAIC0xNTEsNyArMTUxLDcgQEAKICMKIFNUQVJUVEVTVCgpIHsKICAgICAgICAgTkVXT1VUUFVURklMRQotCVsgISAtZSAiJGp1bmtvdXRwdXRmaWxlIiBdICYmIHsKKwlbICEgLWYgIiRqdW5rb3V0cHV0ZmlsZSIgXSAmJiB7CiAJCXRvdWNoICRqdW5rb3V0cHV0ZmlsZQogCQlyZXR1cm4KIAl9CkBAIC0yODYsNyArMjg2LDcgQEAKICAgICBzaGlmdAogICAgIHNoaWZ0CiAgICAgaWYgWyAkU05NUF9WRVJCT1NFIC1ndCAwIF07IHRoZW4KLQllY2hvIC1uICJjaGVja2luZyBvdXRwdXQgZm9yIFwiJCpcIi4uLiIKKwllY2hvIC1uICJjaGVja2luZyAkY2hrZmlsZSBmb3IgJGNrZmNvdW50IFwiJCpcIi4uLiIKICAgICBmaQogCiAgICAgaWYgWyAtZiAkY2hrZmlsZSBdOyB0aGVuCkBAIC0zNTYsODUgKzM1Niw4MyBAQAogICAgIENIRUNLRklMRUNPVU5UICRTTk1QX1NOTVBEX0xPR19GSUxFICRjb3VudCAkQAogfQogCi1XQUlURk9SQUdFTlRTSFVUVElOR0RPV04oKSB7Ci0gICAgaWYgWyAieCRPU1RZUEUiICE9ICJ4bXN5cyIgXTsgdGhlbgotICAgICAgICBXQUlURk9SQUdFTlQgInNodXR0aW5nIGRvd24iCisjIFJldHVybiAwICh0cnVlKSBpZiBhIHByb2Nlc3Mgd2l0aCBwaWQgJDEgZXhpc3RzIGFuZCAxIChmYWxzZSkgaWYgbm8gcHJvY2VzcworIyB3aXRoIHBpZCAkMSBleGlzdHMuCitJU1JVTk5JTkcoKSB7CisgICAgaWYgWyAieCRPU1RZUEUiID0gInhtc3lzIiBdOyB0aGVuCisJcHNsaXN0LmV4ZSAiJDEiIDI+JjEgfCB3aGlsZSByZWFkIG5hbWUgcHNwaWQgcmVzdDsgZG8KKwkgICAgaWYgWyAiJDEiID0gIiRwc3BpZCIgXTsgdGhlbgorCQlyZXR1cm4gMAorCSAgICBmaQorCWRvbmUKKwlyZXR1cm4gMQogICAgIGVsc2UKLQlDQU5fVVNMRUVQCi0JaWYgWyAkU05NUF9DQU5fVVNMRUVQID0gMSBdIDsgdGhlbgotCSAgc2xlZXB0aW1lPWBleHByICRTTk1QX1NMRUVQICcqJyA1MGAKLQllbHNlIAotCSAgc2xlZXB0aW1lPWBleHByICRTTk1QX1NMRUVQICcqJyA1YAotCWZpCi0gICAgICAgIHNubXBkX3BpZD1gY2F0ICRTTk1QX1NOTVBEX1BJRF9GSUxFYAotICAgICAgICB3aGlsZSBbICRzbGVlcHRpbWUgLWd0IDAgXSAmJiBraWxsIC0wICIkc25tcGRfcGlkIiAyPi9kZXYvbnVsbDsgZG8KLSAgICAgICAgICAgIGlmIFsgJFNOTVBfQ0FOX1VTTEVFUCA9IDEgXTsgdGhlbgotICAgICAgICAgICAgICAgIHNsZWVwIC4xCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc2xlZXAgMQotICAgICAgICAgICAgZmkKLSAgICAgICAgICAgIHNsZWVwdGltZT1gZXhwciAkc2xlZXB0aW1lIC0gMWAKLSAgICAgICAgZG9uZQorICAgICAgICBraWxsIC0wICIkMSIgMj4vZGV2L251bGwKICAgICBmaQogfQogCisjIEVjaG8gYSBjb21tYW5kIHRoYXQgYXNrcyB0aGUgcHJvY2VzcyB3aXRoIHBpZCAkMSB0byBzdG9wLgorRUNIT1NFTkRTSUdURVJNKCkgeworICAgIGlmIFsgIngkT1NUWVBFIiA9ICJ4bXN5cyIgXTsgdGhlbgorICAgICAgICBlY2hvIHBza2lsbC5leGUgJDEKKyAgICBlbHNlCisgICAgICAgIGVjaG8ga2lsbCAtVEVSTSAkMQorICAgIGZpCit9CisKKyMgRWNobyBhIGNvbW1hbmQgdGhhdCBzdG9wcyB0aGUgcHJvY2VzcyB3aXRoIHBpZCAkMSBmb3JjaWJseS4KK0VDSE9TRU5EU0lHS0lMTCgpIHsKKyAgICBpZiBbICJ4JE9TVFlQRSIgPSAieG1zeXMiIF07IHRoZW4KKyAgICAgICAgZWNobyBwc2tpbGwuZXhlICQxCisgICAgZWxzZQorICAgICAgICBlY2hvIGtpbGwgLUtJTEwgJDEKKyAgICBmaQorfQorCisjIFdhaXQgdW50aWwgdGhlIHNoZWxsIHN0YXRlbWVudCAiJEAiIGV2YWx1YXRlcyB0byBmYWxzZS4KK1dBSVRGT1JOT1RDT05EKCkgeworICAgIENBTl9VU0xFRVAKKyAgICBpZiBbICRTTk1QX0NBTl9VU0xFRVAgPSAxIF0gOyB0aGVuCisgICAgICAgIHNsZWVwdGltZT1gZXhwciAkU05NUF9TTEVFUCAnKicgNTBgCisgICAgZWxzZSAKKyAgICAgICAgc2xlZXB0aW1lPWBleHByICRTTk1QX1NMRUVQICcqJyA1YAorICAgIGZpCisgICAgd2hpbGUgWyAkc2xlZXB0aW1lIC1ndCAwIF0gJiYgZXZhbCAiJEAiOyBkbworICAgICAgICBpZiBbICRTTk1QX0NBTl9VU0xFRVAgPSAxIF07IHRoZW4KKyAgICAgICAgICAgIHNsZWVwIC4xCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNsZWVwIDEKKyAgICAgICAgZmkKKyAgICAgICAgc2xlZXB0aW1lPWBleHByICRzbGVlcHRpbWUgLSAxYAorICAgIGRvbmUKK30KKworIyBXYWl0IHVudGlsIHRoZSBzaGVsbCBzdGF0ZW1lbnQgIiRAIiBldmFsdWF0ZXMgdG8gdHJ1ZS4KK1dBSVRGT1JDT05EKCkgeworICAgIFdBSVRGT1JOT1RDT05EIGlmICIkQDsiIHRoZW4gZmFsc2UgIjsiIGVsc2UgdHJ1ZSAiOyIgZmkKK30KKwogV0FJVEZPUkFHRU5UKCkgewogICAgIFdBSVRGT1IgIiRAIiAkU05NUF9TTk1QRF9MT0dfRklMRQorICAgIGlmIFsgJFNOTVBfQ0FOX1VTTEVFUCA9IDEgXTsgdGhlbgorICAgICAgICBzbGVlcCAuMQorICAgIGVsc2UKKyAgICAgICAgc2xlZXAgMQorICAgIGZpCiB9CiAKIFdBSVRGT1JUUkFQRCgpIHsKICAgICBXQUlURk9SICIkQCIgJFNOTVBfU05NUFRSQVBEX0xPR19GSUxFCisgICAgaWYgWyAkU05NUF9DQU5fVVNMRUVQID0gMSBdOyB0aGVuCisgICAgICAgIHNsZWVwIC4xCisgICAgZWxzZQorICAgICAgICBzbGVlcCAxCisgICAgZmkKIH0KIAorIyBXYWl0IHVudGlsIHBhdHRlcm4gIiQxIiBhcHBlYXJzIGluIGZpbGUgIiQyIi4KIFdBSVRGT1IoKSB7Ci0gICMjIHNhdmUgdGhlIHByZXZpb3VzIHNhdmUgc3RhdGUgYW5kIHRlc3QgcmVzdWx0Ci0gICAgc2F2ZV9zdGF0ZT0kT0tfVE9fU0FWRV9SRVNVTFQKLSAgICBzYXZlX3Rlc3Q9JHNubXBfbGFzdF90ZXN0X3Jlc3VsdAotICAgIE9LX1RPX1NBVkVfUkVTVUxUPTAKLQotICAgIHNsZWVwdGltZT0kU05NUF9TTEVFUAotICAgIG9sZHNsZWVwdGltZT0kU05NUF9TTEVFUAotICAgIGlmIFsgIiQxIiAhPSAiIiBdIDsgdGhlbgotCUNBTl9VU0xFRVAKLQlpZiBbICRTTk1QX0NBTl9VU0xFRVAgPSAxIF0gOyB0aGVuCi0JICBzbGVlcHRpbWU9YGV4cHIgJFNOTVBfU0xFRVAgJyonIDUwYAotICAgICAgICAgIFNOTVBfU0xFRVA9LjEKLQllbHNlIAotCSAgc2xlZXB0aW1lPWBleHByICRTTk1QX1NMRUVQICcqJyA1YAotCSAgU05NUF9TTEVFUD0xCi0JZmkKLSAgICAgICAgd2hpbGUgWyAkc2xlZXB0aW1lIC1ndCAwIF0gOyBkbwotCSAgaWYgWyAiJDIiID0gIiIgXSA7IHRoZW4KLSAgICAgICAgICAgIENIRUNLQ09VTlQgbm9lcnJvciAiJEAiCi0gICAgICAgICAgZWxzZQotCSAgICBDSEVDS0ZJTEVDT1VOVCAiJDIiIG5vZXJyb3IgIiQxIgotCSAgZmkKLSAgICAgICAgICBpZiBbICIkc25tcF9sYXN0X3Rlc3RfcmVzdWx0IiAhPSAiIiBdIDsgdGhlbgotICAgICAgICAgICAgICBpZiBbICIkc25tcF9sYXN0X3Rlc3RfcmVzdWx0IiAtZ3QgMCBdIDsgdGhlbgotCSAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBmaQotCSAgZmkKLSAgICAgICAgICBERUxBWQotICAgICAgICAgIHNsZWVwdGltZT1gZXhwciAkc2xlZXB0aW1lIC0gMWAKLSAgICAgICAgZG9uZQotCi0JIyB0aGUgYWJvdmUgbXVsdGktY2hlY2svc2xlZXAgZG9lc24ndCByZXBvcnQgZXJyb3JzIG91dCBvZiBUQVAKLSAgICAgICAgIyB0aGlzIGZpbmFsIGNoZWNrIHdpbGwgcmVwb3J0IG9ubHkgMSAKLQlpZiBbICIkMiIgPSAiIiBdIDsgdGhlbgotICAgICAgICAgIENIRUNLQ09VTlQgYXRsZWFzdG9uZSAiJEAiCi0gICAgICAgIGVsc2UKLQkgIENIRUNLRklMRUNPVU5UICIkMiIgYXRsZWFzdG9uZSAiJDEiCi0JZmkKLSAgICAgICAgU05NUF9TTEVFUD0kb2xkc2xlZXB0aW1lCi0gICAgZWxzZQotICAgICAgICBpZiBbICRTTk1QX1NMRUVQIC1uZSAwIF0gOyB0aGVuCi0JICAgIHNsZWVwICRTTk1QX1NMRUVQCi0gICAgICAgIGZpCi0gICAgZmkKLQotICAjIyByZXN0b3JlIHRoZSBwcmV2aW91cyBzYXZlIHN0YXRlIGFuZCB0ZXN0IHJlc3VsdAotICAgIE9LX1RPX1NBVkVfUkVTVUxUPSRzYXZlX3N0YXRlCi0gICAgc25tcF9sYXN0X3Rlc3RfcmVzdWx0PSRzYXZlX3Rlc3QKKyAgICBXQUlURk9SQ09ORCBncmVwICIkMSIgIiQyIiAiPi9kZXYvbnVsbCIgIjI+JjEiCiB9CiAKIEdPT0QoKSB7CkBAIC00NTUsMTYgKzQ1Myw2IEBACiAgICAgZWNobyAiIyAkQCIgPj4gJFNOTVBfVE1QRElSL2ludm9rZWQKIH0KIAotIyBXQUlURk9ST1JESUUgImdyZXAgc3RyaW5nIiBbImZpbGUiXQotV0FJVEZPUk9SRElFKCkgewotICAgIFdBSVRGT1IgIiQxIiAiJDIiCi0gICAgaWYgWyAiJHNubXBfbGFzdF90ZXN0X3Jlc3VsdCIgIT0gMCBdIDsgdGhlbgotICAgICAgICBCQUQKLSAgICAgICAgRklOSVNIRUQKLSAgICBmaQotICAgIEdPT0QKLX0KLQogIyBDSEVDS09SRElFICJncmVwIHN0cmluZyIgWyJmaWxlIl0gLi4gRkFJTCBpZiAiZ3JlcCBzdHJpbmciIGlzICpub3QqIGZvdW5kCiBDSEVDS09SRElFKCkgewogICAgIGlmIFsgIngkMiIgPSAieCIgXTsgdGhlbgpAQCAtNTIwLDcgKzUwOCw2IEBACiAjCiAjIGNvbW1vbiB0byBTVEFSVEFHRU5UIGFuZCBTVEFSVFRSQVBECiAjIGxvZyBjb21tYW5kIHRvICJpbnZva2VkIiBmaWxlCi0jIGRlbGF5IGFmdGVyIGNvbW1hbmQgdG8gYWxsb3cgZm9yIHNldHRsZQogIwogU1RBUlRQUk9HKCkgewogICAgIGlmIFsgIngkRFlOQU1JQ19BTkFMWVpFUiIgIT0gIngiIF07IHRoZW4KQEAgLTU2OCw3ICs1NTUsOCBAQAogICAgICAgICBQT1JUX1NQRUM9IiR7U05NUF9UUkFOU1BPUlRfU1BFQ306JHtTTk1QX1RFU1RfREVTVH0ke1BPUlRfU1BFQ30iCiAgICAgZmkKICAgICBTVEFSVFBST0cKLSAgICBXQUlURk9SQUdFTlQgIk5FVC1TTk1QIHZlcnNpb24iCisgICAgV0FJVEZPUkNPTkQgdGVzdCAtZiAkU05NUF9TTk1QRF9QSURfRklMRQorICAgIFdBSVRGT1JBR0VOVCAiTkVULVNOTVAudmVyc2lvbiIKIH0KIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtby0KQEAgLTU4Miw3ICs1NzAsOCBAQAogICAgICAgICBQT1JUX1NQRUM9IiR7U05NUF9UUkFOU1BPUlRfU1BFQ306JHtTTk1QX1RFU1RfREVTVH0ke1BPUlRfU1BFQ30iCiAgICAgZmkKICAgICBTVEFSVFBST0cKLSAgICBXQUlURk9SVFJBUEQgIk5FVC1TTk1QIHZlcnNpb24iCisgICAgV0FJVEZPUkNPTkQgdGVzdCAtZiAkU05NUF9TTk1QVFJBUERfUElEX0ZJTEUKKyAgICBXQUlURk9SVFJBUEQgIk5FVC1TTk1QLnZlcnNpb24iCiB9CiAKICMjIHNlbmRpbmcgU0lHSFVQIGZvciByZWNvbmZpZ3VyYXRpb24KQEAgLTU5NSw2ICs1ODQsNyBAQAogICAgICAgICAgIENPTU1BTkQ9ImtpbGwgLUhVUCBgY2F0ICQxYCIKICAgICAgICAgZmkKIAllY2hvICRDT01NQU5EID4+ICRTTk1QX1RNUERJUi9pbnZva2VkCisJVkVSQk9TRV9PVVQgMCAkQ09NTUFORAogCSRDT01NQU5EID4gL2Rldi9udWxsIDI+JjEKICAgICBmaQogfQpAQCAtNjE5LDE0ICs2MDksMTMgQEAKICMgICAgdGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBmb3IgaW50ZXJhY3Rpb24gYmV0d2VlbgogIyAgICBtYXN0ZXIgYWdlbnQgYW5kIHN1YiBhZ2VudC4KIFNUT1BQUk9HKCkgewotICAgIGlmIFsgLWYgJDEgXTsgdGhlbgotICAgICAgICBpZiBbICJ4JE9TVFlQRSIgPSAieG1zeXMiIF07IHRoZW4KLSAgICAgICAgICBDT01NQU5EPSJwc2tpbGwuZXhlIGBjYXQgJDFgIgotICAgICAgICBlbHNlCi0gICAgICAgICAgQ09NTUFORD0ia2lsbCAtVEVSTSBgY2F0ICQxYCIKLSAgICAgICAgZmkKLQllY2hvICRDT01NQU5EID4+ICRTTk1QX1RNUERJUi9pbnZva2VkCi0JJENPTU1BTkQgPiAvZGV2L251bGwgMj4mMQorICAgIHBpZD0iYGNhdCAkMSAyPi9kZXYvbnVsbGAiCisgICAgaWYgWyAieCRwaWQiICE9ICJ4IiBdOyB0aGVuCisJQ09NTUFORD0iYEVDSE9TRU5EU0lHVEVSTSAkcGlkYCIKKwllY2hvICIkQ09NTUFORCAoJDEpIiA+PiAkU05NUF9UTVBESVIvaW52b2tlZAorCVZFUkJPU0VfT1VUIDAgIiRDT01NQU5EICgkMSkiCisgICAgICAgICRDT01NQU5EID4vZGV2L251bGwgMj4mMQorICAgICAgICBXQUlURk9STk9UQ09ORCAiSVNSVU5OSU5HICRwaWQiCiAgICAgZmkKIH0KIApAQCAtNjM1LDcgKzYyNCw2IEBACiBTVE9QQUdFTlQoKSB7CiAgICAgU0FWRV9SRVNVTFRTCiAgICAgU1RPUFBST0cgJFNOTVBfU05NUERfUElEX0ZJTEUKLSAgICBXQUlURk9SQUdFTlRTSFVUVElOR0RPV04KICAgICBpZiBbICRTTk1QX1ZFUkJPU0UgLWd0IDEgXTsgdGhlbgogCWVjaG8gIkFnZW50IE91dHB1dDoiCiAJZWNobyAiJHNlcGFyYXRvciBbc3Rkb3V0XSIKQEAgLTY1MSw5ICs2MzksNiBAQAogU1RPUFRSQVBEKCkgewogICAgIFNBVkVfUkVTVUxUUwogICAgIFNUT1BQUk9HICRTTk1QX1NOTVBUUkFQRF9QSURfRklMRQotICAgIGlmIFsgIngkT1NUWVBFIiAhPSAieG1zeXMiIF07IHRoZW4KLSAgICAgICAgV0FJVEZPUlRSQVBEICJTdG9wcGVkIgotICAgIGZpCiAgICAgaWYgWyAkU05NUF9WRVJCT1NFIC1ndCAxIF07IHRoZW4KIAllY2hvICJzbm1wdHJhcGQgT3V0cHV0OiIKIAllY2hvICIkc2VwYXJhdG9yIFtzdGRvdXRdIgpAQCAtNjcxLDMzICs2NTYsMTkgQEAKICAgICAjIyBubyBtb3JlIGNoYW5nZXMgdG8gdGVzdCByZXN1bHQuCiAgICAgT0tfVE9fU0FWRV9SRVNVTFQ9MAogCisgICAgcGlkcz0iYGNhdCAkU05NUF9UTVBESVIvKnBpZCogMj4vZGV2L251bGxgIgogICAgIGlmIFsgIiRTTk1QRFNUQVJURUQiID0gIjEiIF0gOyB0aGVuCiAgICAgICBTVE9QQUdFTlQKICAgICBmaQogICAgIGlmIFsgIiRUUkFQRFNUQVJURUQiID0gIjEiIF0gOyB0aGVuCiAgICAgICBTVE9QVFJBUEQKICAgICBmaQotICAgIGZvciBwZmlsZSBpbiAkU05NUF9UTVBESVIvKnBpZCogOyBkbwotICAgICAgICBpZiBbICJ4JHBmaWxlIiA9ICJ4JFNOTVBfVE1QRElSLypwaWQqIiBdOyB0aGVuCi0gICAgICAgICAgICBCQUQgIihubyBwaWQgZmlsZShzKSBmb3VuZCkgIgotICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZmkKLSAgICAgICAgaWYgWyAhIC1mICRwZmlsZSBdOyB0aGVuCi0gICAgICAgICAgICBCQUQgIignJHBmaWxlJyBkaXNhcHBlYXJlZCkgIgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgZmkKLQlwaWQ9YGNhdCAkcGZpbGVgCi0gICAgICAgICMgV2hlbiBub3QgcnVubmluZyBvbiBNaW5HVywgY2hlY2sgd2hldGhlciBzbm1wZCBpcyBzdGlsbCBydW5uaW5nLgotICAgICAgICBpZiBbICJ4JE9TVFlQRSIgPSAieG1zeXMiIF0gfHwgeyBwcyAtZSAyPi9kZXYvbnVsbCB8IGVncmVwICJeWwkgXSokcGlkWwkgXSsiID4gL2Rldi9udWxsIDI+JjE7IH07IHRoZW4KLSAgICAgICAgICAgIGlmIFsgIngkT1NUWVBFIiAhPSAieG1zeXMiIF07IHRoZW4KLSAgICAgICAgICAgICAgICBTTk1QX1NBVkVfVE1QRElSPXllcwotICAgICAgICAgICAgZmkKLSAgICAgICAgICAgIGlmIFsgIngkT1NUWVBFIiA9ICJ4bXN5cyIgXTsgdGhlbgotICAgICAgICAgICAgICBDT01NQU5EPSJwc2tpbGwuZXhlICRwaWQiCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIENPTU1BTkQ9ImtpbGwgLTkgJHBpZCIKLSAgICAgICAgICAgIGZpCi0JICAgIGVjaG8gJENPTU1BTkQgIigkcGZpbGUpIiA+PiAkU05NUF9UTVBESVIvaW52b2tlZAorICAgIGZvciBwaWQgaW4gJHBpZHM7IGRvCisgICAgICAgIGlmIElTUlVOTklORyAkcGlkOyB0aGVuCisJICAgIFNOTVBfU0FWRV9UTVBESVI9eWVzCisJICAgIENPTU1BTkQ9ImBFQ0hPU0VORFNJR0tJTEwgJHBpZGAiCisJICAgIGVjaG8gIiRDT01NQU5EICgkcGZpbGUpIiA+PiAkU05NUF9UTVBESVIvaW52b2tlZAorCSAgICBWRVJCT1NFX09VVCAwICIkQ09NTUFORCAoJHBmaWxlKSIKIAkgICAgJENPTU1BTkQgPiAvZGV2L251bGwgMj4mMQogCSAgICByZXR1cm5fdmFsdWU9MQogCWZpCkBAIC03MjgsNyArNjk5LDcgQEAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLW8tCiAjCiBWRVJCT1NFX09VVCgpIHsKLSAgICBpZiBbICRTTk1QX1ZFUkJPU0UgPiAkMSBdOyB0aGVuCisgICAgaWYgWyAkU05NUF9WRVJCT1NFIC1ndCAkMSBdOyB0aGVuCiAJc2hpZnQKIAllY2hvICIkKiIKICAgICBmaQpkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfcnVuIGIvdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfcnVuCmluZGV4IGViMzdlOTYuLjE5NzgwMDkgMTAwNzU1Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX3J1bgorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ydW4KQEAgLTExLDcgKzExLDggQEAKICAgICBpZiBjZCB0ZXN0aW5nIDI+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgOgogICAgIGVsc2UKLSAgICAgICBlY2hvICJFcnJvcjogJDAgbXVzdCBiZSBzdGFydGVkIGZyb20gaW5zaWRlIHRoZSB0ZXN0aW5nIGRpcmVjdG9yeS4iCisgICAgICAgZWNobyAiRXJyb3I6ICQwIG11c3QgYmUgc3RhcnRlZCBmcm9tIGluc2lkZSB0aGUgdGVzdGluZyBkaXJlY3RvcnkgaW4gdGhlIHNvdXJjZSB0cmVlLiIKKyAgICAgICBlY2hvICJUaGUgYnVpbGRkaXIgZW52aXJvbm1lbnQgdmFyaWFibGUgY2FuIGJlIHNldCB0byBwb2ludCB0byB0aGUgYnVpbGQgZGlyZWN0b3J5LiIKICAgICAgICBleGl0IDEKICAgICBmaQogZmkKQEAgLTI0LDcgKzI1LDggQEAKICAgICBpZiBjZCB0ZXN0aW5nIDI+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgOgogICAgIGVsc2UKLSAgICAgICBlY2hvICJFcnJvcjogJDAgbXVzdCBiZSBzdGFydGVkIGZyb20gaW5zaWRlIHRoZSB0ZXN0aW5nIGRpcmVjdG9yeS4iCisgICAgICAgZWNobyAiRXJyb3I6ICQwIG11c3QgYmUgc3RhcnRlZCBmcm9tIGluc2lkZSB0aGUgdGVzdGluZyBkaXJlY3RvcnkgaW4gdGhlIHNvdXJjZSB0cmVlLiIKKyAgICAgICBlY2hvICJUaGUgYnVpbGRkaXIgZW52aXJvbm1lbnQgdmFyaWFibGUgY2FuIGJlIHNldCB0byBwb2ludCB0byB0aGUgYnVpbGQgZGlyZWN0b3J5LiIKICAgICAgICBleGl0IDEKICAgICBmaQogZmkKQEAgLTQ3LDcgKzQ5LDEyIEBACiBleHBvcnQgU05NUF9PUklHRElSCiAKIFNOTVBfVVBESVI9JHtidWlsZGRpcn0gICAgICAgICAgIyMgYnVpbGQgZGlyZWN0b3J5Ci1TTk1QX1NMRUVQPSR7U05NUF9TTEVFUDo9MX0gCSMjIGRlZmF1bHQgc2Vjb25kcyB0byBzbGVlcAoraWYgWyAieCREWU5BTUlDX0FOQUxZWkVSIiA9ICJ4IiBdOyB0aGVuCisgICAgU05NUF9TTEVFUF9ERUZBVUxUPTEKK2Vsc2UKKyAgICBTTk1QX1NMRUVQX0RFRkFVTFQ9MTAKK2ZpCitTTk1QX1NMRUVQPSR7U05NUF9TTEVFUDo9JFNOTVBfU0xFRVBfREVGQVVMVH0gCSMjIGRlZmF1bHQgc2Vjb25kcyB0byBzbGVlcAogZXhwb3J0IFNOTVBfU0xFRVAKIAogIyBGaW5kIGV4ZWN1dGFibGVzIGluIHNvdXJjZSBmaXJzdCwgdGhlbiBidWlsZCwgdGhlbiBleGlzdGluZyBQQVRILgpkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA0c25tcF9lbnVtX2NsaWIuYyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwNHNubXBfZW51bV9jbGliLmMKaW5kZXggNzJlZTVjOS4uZDI4YjE5YiAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA0c25tcF9lbnVtX2NsaWIuYworKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDRzbm1wX2VudW1fY2xpYi5jCkBAIC04NywxMCArODcsMTAgQEAKIE9LKHNlX2ZpbmRfbGlzdCgyLCAzKSwgImxpc3QgKDIsIDMpIHNob3VsZCBiZSBwcmVzZW50Iik7CiBpZiAoc2VfZmluZF9saXN0KDIsIDMpKSB7CiAgIE9LKHNlX2ZpbmRfdmFsdWUoMiwgMywgImtpd2lmcnVpdCIpID09IDMsCi0gICAgICJsb29rdXAgYnkgc3RyaW5nIHNob3VsZCByZXR1cm4gdGhlIHByb3BlciB2YWx1ZSIpCisgICAgICJsb29rdXAgYnkgc3RyaW5nIHNob3VsZCByZXR1cm4gdGhlIHByb3BlciB2YWx1ZSIpOwogICBzZV9maW5kX3Jlc3VsdCA9IHNlX2ZpbmRfbGFiZWwoMiwgMywgMik7CiAgIE9LKHNlX2ZpbmRfcmVzdWx0ICYmIHN0cmNtcChzZV9maW5kX3Jlc3VsdCwgInBlYXIiKSA9PSAwLAotICAgICAibG9va3VwIGJ5IGxhYmVsIHNob3VsZCByZXR1cm4gdGhlIHByb3BlciBzdHJpbmciKQorICAgICAibG9va3VwIGJ5IGxhYmVsIHNob3VsZCByZXR1cm4gdGhlIHByb3BlciBzdHJpbmciKTsKIH0KIAogc2VfcmVhZF9jb25mKCJlbnVtIiwKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwNXRhYmxlX2RhdGFzZXRfY2FnZW50bGliLmMgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDV0YWJsZV9kYXRhc2V0X2NhZ2VudGxpYi5jCmluZGV4IGY5MDZjNTUuLmNhYzk0MGUgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwNXRhYmxlX2RhdGFzZXRfY2FnZW50bGliLmMKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA1dGFibGVfZGF0YXNldF9jYWdlbnRsaWIuYwpAQCAtMTUsNiArMTUsNyBAQAogaW50MzJfdCBpdmFsOwogaW50MzJfdCBpLCBqOwogCitpbml0X2FnZW50KCJzbm1wZCIpOwogaW5pdF9zbm1wKCJzbm1wZCIpOwogCiB0ZHMgPSBuZXRzbm1wX2NyZWF0ZV90YWJsZV9kYXRhX3NldCgidGFibGVfZGF0YXNldCB1bml0LXRlc3QiKTsKQEAgLTUyLDUgKzUzLDYgQEAKIG5ldHNubXBfZGVsZXRlX3RhYmxlX2RhdGFfc2V0KHRkcyk7CiAKIHNubXBfc2h1dGRvd24oInNubXBkIik7CitzaHV0ZG93bl9hZ2VudCgpOwogCiBPSyhUUlVFLCAiZG9uZSIpOwpkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA2c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jYWdlbnRsaWIuYyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwNnNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY2FnZW50bGliLmMKaW5kZXggYWVmNDJkMS4uZWQ3YWU2OCAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA2c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jYWdlbnRsaWIuYworKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDZzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NhZ2VudGxpYi5jCkBAIC0xLDI0ICsxLDQxIEBACiAvKiBIRUFERVIgVGVzdGluZyBTTk1QIGhhbmRsZXIgcmVnaXN0cmF0aW9uICovCiAKIHN0YXRpYyBvaWQgT2lkW10gPSB7IDEsIDMsIDYsIDEsIDMsIDMyNyB9OyAvKiBleHBlcmltZW50YWwuMzI3ICovCi1uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpoYW5kbGVyOwotbmV0c25tcF9taWJfaGFuZGxlciAqZGggPSBOVUxMOworbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqaGFuZGxlciwgKmhhbmRsZXIyOworbmV0c25tcF9taWJfaGFuZGxlciAqZGg7CituZXRzbm1wX2NhY2hlICpuYywgKm5jMjsKIAogaW5pdF9zbm1wKCJzbm1wIik7CiAKIGhhbmRsZXIgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigiZXhwZXJpbWVudGFsLjMyNyIsIE5VTEwsCiAJT2lkLCBPSURfTEVOR1RIKE9pZCksIEhBTkRMRVJfQ0FOX1JXUklURSk7CiBPSyhoYW5kbGVyICE9IE5VTEwsICJIYW5kbGVyIGNyZWF0aW9uLiIpOwotaGFuZGxlci0+aGFuZGxlci0+bXl2b2lkID0gbWFsbG9jKDMyOSk7Ci1oYW5kbGVyLT5oYW5kbGVyLT5kYXRhX2ZyZWUgPSBmcmVlOworCituYyA9IG5ldHNubXBfY2FjaGVfY3JlYXRlKDEwLCBOVUxMLCBOVUxMLCBPaWQsIE9JRF9MRU5HVEgoT2lkKSk7CitPSyhuYywgIm5ldHNubXBfY2FjaGUgYWxsb2NhdGlvbiIpOworT0soc25tcF9vaWRfY29tcGFyZShuYy0+cm9vdG9pZCwgbmMtPnJvb3RvaWRfbGVuLCBPaWQsIE9JRF9MRU5HVEgoT2lkKSkgPT0gMCwKKyAgICJIYW5kbGVyIHByaXZhdGUgT0lELiIpOworCitoYW5kbGVyLT5oYW5kbGVyLT5teXZvaWQgPSBuYzsKK25ldHNubXBfY2FjaGVfaGFuZGxlcl9vd25zX2NhY2hlKGhhbmRsZXItPmhhbmRsZXIpOworCituYzIgPSBoYW5kbGVyLT5oYW5kbGVyLT5teXZvaWQ7CitPSyhuYzIsICJIYW5kbGVyIHByaXZhdGUgZGF0YSIpOworT0soc25tcF9vaWRfY29tcGFyZShuYzItPnJvb3RvaWQsIG5jMi0+cm9vdG9pZF9sZW4sIE9pZCwgT0lEX0xFTkdUSChPaWQpKSA9PSAwLAorICAgIkhhbmRsZXIgcHJpdmF0ZSBPSUQuIik7CiAKIE9LKG5ldHNubXBfcmVnaXN0ZXJfaW5zdGFuY2UoaGFuZGxlcikgPT0gTUlCX1JFR0lTVEVSRURfT0ssCiAgICAiTUlCIHJlZ2lzdHJhdGlvbi4iKTsKIAotI2lmIDAKK2hhbmRsZXIyID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oImV4cGVyaW1lbnRhbC4zMjciLCBOVUxMLAorICAgICAgICBPaWQsIE9JRF9MRU5HVEgoT2lkKSwgSEFORExFUl9DQU5fUldSSVRFKTsKK09LKGhhbmRsZXIyICE9IE5VTEwsICJTZWNvbmQgcmVnaXN0cmF0aW9uIik7CisKK09LKG5ldHNubXBfcmVnaXN0ZXJfaW5zdGFuY2UoaGFuZGxlcjIpID09IE1JQl9EVVBMSUNBVEVfUkVHSVNUUkFUSU9OLAorICAgIkR1cGxpY2F0ZSBNSUIgcmVnaXN0cmF0aW9uLiIpOworCiBkaCA9IG5ldHNubXBfaGFuZGxlcl9kdXAoaGFuZGxlci0+aGFuZGxlcik7CiBPSyhkaCwgIkhhbmRsZXIgZHVwbGljYXRpb24uIik7Ci0jZW5kaWYKIAogT0sobmV0c25tcF91bnJlZ2lzdGVyX2hhbmRsZXIoaGFuZGxlcikgPT0gU05NUEVSUl9TVUNDRVNTLAogICAgIkhhbmRsZXIgdW5yZWdpc3RyYXRpb24uIik7CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTBuZXRzbm1wX3N0cmluZ190aW1lX3RvX3NlY3NfY2xpYi5jIGIvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDEwbmV0c25tcF9zdHJpbmdfdGltZV90b19zZWNzX2NsaWIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzFhZWViCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDEwbmV0c25tcF9zdHJpbmdfdGltZV90b19zZWNzX2NsaWIuYwpAQCAtMCwwICsxLDQ1IEBACisvKiBIRUFERVIgVGVzdGluZyB0aGUgbmV0c25tcF9zdHJpbmdfdGltZV90b19zZWNzIEFQSSAqLworaW50IHNlY3M7CisKKyNkZWZpbmUgVEVTVElUKHgseSkgXAorICAgIE9LRih5ID09IChzZWNzID0gbmV0c25tcF9zdHJpbmdfdGltZV90b19zZWNzKHgpKSwgXAorICAgICAgICAoIm5ldHNubXBfc3RyaW5nX3RpbWVfdG9fc2VjcyBvZiAlcyByZXR1cm5lZCAlZCwgbm90IDUiLCB4LCBzZWNzKSkKKworVEVTVElUKCI1IiwgNSk7CitURVNUSVQoIjUiLCA1KTsKKworVEVTVElUKCI1cyIsIDUpOworVEVTVElUKCI1UyIsIDUpOworCitURVNUSVQoIjVtIiwgNSAqIDYwKTsKK1RFU1RJVCgiNU0iLCA1ICogNjApOworCitURVNUSVQoIjVoIiwgNSAqIDYwICogNjApOworVEVTVElUKCI1SCIsIDUgKiA2MCAqIDYwKTsKKworVEVTVElUKCI1ZCIsIDUgKiA2MCAqIDYwICogMjQpOworVEVTVElUKCI1RCIsIDUgKiA2MCAqIDYwICogMjQpOworCitURVNUSVQoIjV3IiwgNSAqIDYwICogNjAgKiAyNCAqIDcpOworVEVTVElUKCI1VyIsIDUgKiA2MCAqIDYwICogMjQgKiA3KTsKKworLyogbm93IHdpdGggbG9uZ2VyIHRpbWVzICovCitURVNUSVQoIjEyMzQiLCAxMjM0KTsKK1RFU1RJVCgiMTIzNCIsIDEyMzQpOworCitURVNUSVQoIjEyMzRzIiwgMTIzNCk7CitURVNUSVQoIjEyMzRTIiwgMTIzNCk7CisKK1RFU1RJVCgiMTIzNG0iLCAxMjM0ICogNjApOworVEVTVElUKCIxMjM0TSIsIDEyMzQgKiA2MCk7CisKK1RFU1RJVCgiMTIzNGgiLCAxMjM0ICogNjAgKiA2MCk7CitURVNUSVQoIjEyMzRIIiwgMTIzNCAqIDYwICogNjApOworCitURVNUSVQoIjEyMzRkIiwgMTIzNCAqIDYwICogNjAgKiAyNCk7CitURVNUSVQoIjEyMzREIiwgMTIzNCAqIDYwICogNjAgKiAyNCk7CisKK1RFU1RJVCgiMTIzNHciLCAxMjM0ICogNjAgKiA2MCAqIDI0ICogNyk7CitURVNUSVQoIjEyMzRXIiwgMTIzNCAqIDYwICogNjAgKiAyNCAqIDcpOworCisKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAxMXNubXBfb2xkX2FwaV9yZWdpc3RyYXRpb25fY2FnZW50bGliLmMgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTFzbm1wX29sZF9hcGlfcmVnaXN0cmF0aW9uX2NhZ2VudGxpYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmMWQ0NDkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTFzbm1wX29sZF9hcGlfcmVnaXN0cmF0aW9uX2NhZ2VudGxpYi5jCkBAIC0wLDAgKzEsNDYgQEAKKy8qIEhFQURFUiBUZXN0aW5nIFNOTVAgaGFuZGxlciByZWdpc3RyYXRpb24gdmlhIHRoZSBvbGQgQVBJICovCisKK3N0YXRpYyBvaWQgT2lkW10gPSB7IDEsIDMsIDYsIDEsIDMsIDMyNyB9OyAvKiBleHBlcmltZW50YWwuMzI3ICovCitzdHJ1Y3QgdmFyaWFibGUgdmFyX2FycmF5W10gPSB7CisgICAgeyAwLCAwLyp0eXBlKi8sIDAvKmFjbCovLCBOVUxMLypmaW5kVmFyKi8sIDcsIHsgMSwgMywgNiwgMSwgMywgMzI3LCAxIH0gfSwKKyAgICB7IDAsIDAvKnR5cGUqLywgMC8qYWNsKi8sIE5VTEwvKmZpbmRWYXIqLywgNywgeyAxLCAzLCA2LCAxLCAzLCAzMjcsIDIgfSB9LAorICAgIHsgMCwgMC8qdHlwZSovLCAwLyphY2wqLywgTlVMTC8qZmluZFZhciovLCA3LCB7IDEsIDMsIDYsIDEsIDMsIDMyNywgMyB9IH0sCit9OworbmV0c25tcF9zZXNzaW9uICpzZXNzOworaW50IHJlczsKKworaW5pdF9zbm1wKCJzbm1wIik7CisKK3Nlc3MgPSBjYWxsb2MoMSwgc2l6ZW9mKCpzZXNzKSk7Citzbm1wX3Nlc3NfaW5pdChzZXNzKTsKKworcmVzID0gCituZXRzbm1wX3JlZ2lzdGVyX29sZF9hcGkoImV4cC4zMjcuYSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgdmFyX2FycmF5LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih2YXJfYXJyYXlbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih2YXJfYXJyYXkpL3NpemVvZih2YXJfYXJyYXlbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIE9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoT2lkKS9zaXplb2YoT2lkWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAyLCAvKiBwcmlvcml0eSAqLworICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8qIHJhbmdlX3N1YmlkICovCisgICAgICAgICAgICAgICAgICAgICAgICAgMCwgLyogcmFuZ2VfdWJvdW5kICovCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY29udGV4dCIsIDUvKnRpbWVvdXQqLywgMC8qZmxhZ3MgLSBpZ25vcmVkKi8pOworT0socmVzID09IFNOTVBFUlJfU1VDQ0VTUywgIkhhbmRsZXIgcmVnaXN0cmF0aW9uICgxKS4iKTsKKworLyogVmVyaWZ5IHRoYXQgZHVwbGljYXRlIHJlZ2lzdHJhdGlvbiBkb2VzIG5vdCBjYXVzZSBhbnkgaGF2b2MuICovCityZXMgPSAKK25ldHNubXBfcmVnaXN0ZXJfb2xkX2FwaSgiZXhwLjMyNy5iIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfYXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHZhcl9hcnJheVswXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHZhcl9hcnJheSkvc2l6ZW9mKHZhcl9hcnJheVswXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgT2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihPaWQpL3NpemVvZihPaWRbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIDIsIC8qIHByaW9yaXR5ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgMCwgLyogcmFuZ2Vfc3ViaWQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAwLCAvKiByYW5nZV91Ym91bmQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjb250ZXh0IiwgNS8qdGltZW91dCovLCAwLypmbGFncyAtIGlnbm9yZWQqLyk7CitPSyhyZXMgPT0gU05NUEVSUl9TVUNDRVNTLCAiSGFuZGxlciByZWdpc3RyYXRpb24gKDIpLiIpOworCitzbm1wX3NodXRkb3duKCJzbm1wIik7CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTJiaW5hcnlfYXJyYXlfb2lkX2NsaWIuYyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAxMmJpbmFyeV9hcnJheV9vaWRfY2xpYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlZWI1MDIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTJiaW5hcnlfYXJyYXlfb2lkX2NsaWIuYwpAQCAtMCwwICsxLDcyIEBACisvKiBIRUFERVIgVGVzdGluZyBiaW5hcnkgT0lEIGFycmF5ICovCisKK3N0YXRpYyBjb25zdCBjaGFyIHRlc3RfbmFtZVtdID0gImJpbmFyeS1hcnJheS1vZi1PSURzLXRlc3QiOworb2lkIG8xID0gMTsKK29pZCBvMiA9IDI7CitvaWQgbzMgPSA2Oworb2lkIG80ID0gODsKK29pZCBvNSA9IDk7CitvaWQgb3ggPSA3Oworb2lkIG95ID0gMTA7CituZXRzbm1wX2luZGV4IGkxLCBpMiwgaTMsIGk0LCBpNSwgaXgsIGl5LCAqaXA7Citjb25zdCBuZXRzbm1wX2luZGV4ICpjb25zdCBpX2xhc3QgPSAmaTU7CituZXRzbm1wX2luZGV4ICphW10gPSB7ICZpeCwgJml5IH07CituZXRzbm1wX2luZGV4ICpiW10gPSB7ICZpNCwgJmkyLCAmaTMsICZpMSwgJmk1IH07CituZXRzbm1wX2NvbnRhaW5lciAqYzsKK2ludCBpOworCitpbml0X3NubXAodGVzdF9uYW1lKTsKKworYyA9IG5ldHNubXBfY29udGFpbmVyX2dldF9iaW5hcnlfYXJyYXkoKTsKK2MtPmNvbXBhcmUgPSBuZXRzbm1wX2NvbXBhcmVfbmV0c25tcF9pbmRleDsKKyAgICAKK2kxLm9pZHMgPSAmbzE7CitpMi5vaWRzID0gJm8yOworaTMub2lkcyA9ICZvMzsKK2k0Lm9pZHMgPSAmbzQ7CitpNS5vaWRzID0gJm81OworaXgub2lkcyA9ICZveDsKK2l5Lm9pZHMgPSAmb3k7CitpMS5sZW4gPSBpMi5sZW4gPSBpMy5sZW4gPSBpNC5sZW4gPSBpNS5sZW4gPSBpeC5sZW4gPSBpeS5sZW4gPSAxOworCitmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGIpL3NpemVvZihiWzBdKTsgKytpKQorICAgIENPTlRBSU5FUl9JTlNFUlQoYywgYltpXSk7CisKK2ZvciAoaXAgPSBDT05UQUlORVJfRklSU1QoYyk7IGlwOyBpcCA9IENPTlRBSU5FUl9ORVhUKGMsIGlwKSkgeworICAgIGZvciAoaSA9IHNpemVvZihiKS9zaXplb2YoYlswXSkgLSAxOyBpID49IDA7IC0taSkKKyAgICAgICAgaWYgKGMtPmNvbXBhcmUoaXAsIGJbaV0pID09IDApCisgICAgICAgICAgICBicmVhazsKKyAgICBPS0YoaSA+PSAwLCAoIk9JRCBiWyVkXSA9ICUiIE5FVFNOTVBfUFJJbyAiZCBwcmVzZW50IiwgaSwgYltpXS0+b2lkc1swXSkpOworfQorCitmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGIpL3NpemVvZihiWzBdKTsgKytpKSB7CisgICAgaXAgPSBDT05UQUlORVJfRklORChjLCBiW2ldKTsKKyAgICBPS0YoaXAsICgiVmFsdWUgYlslZF0gPSAlIiBORVRTTk1QX1BSSW8gImQgcHJlc2VudCIsIGksIGJbaV0tPm9pZHNbMF0pKTsKKyAgICBpcCA9IENPTlRBSU5FUl9ORVhUKGMsIGJbaV0pOworICAgIGlmIChjLT5jb21wYXJlKGJbaV0sIGlfbGFzdCkgPCAwKQorICAgICAgICBPS0YoaXAgJiYgYy0+Y29tcGFyZShiW2ldLCBpcCkgPCAwLAorICAgICAgICAgICAgKCJTdWNjZXNzb3Igb2YgYlslZF0gPSAlIiBORVRTTk1QX1BSSW8gImQgaXMgJSIgTkVUU05NUF9QUklvICJkIiwKKyAgICAgICAgICAgICBpLCBiW2ldLT5vaWRzWzBdLCBpcC0+b2lkc1swXSkpOworICAgIGVsc2UKKyAgICAgICAgT0tGKCFpcCwgKCJObyBzdWNjZXNzb3IgZm91bmQgZm9yIGJbJWRdID0gJSIgTkVUU05NUF9QUklvICJkIiwgaSwKKyAgICAgICAgICAgICAgICAgIGJbaV0tPm9pZHNbMF0pKTsKK30KKworZm9yIChpID0gMDsgaSA8IHNpemVvZihhKS9zaXplb2YoYVswXSk7ICsraSkgeworICAgIGlwID0gQ09OVEFJTkVSX0ZJTkQoYywgYVtpXSk7CisgICAgT0tGKCFpcCwgKCJhWyVkXSA9ICUiIE5FVFNOTVBfUFJJbyAiZCBhYnNlbnQiLCBpLCBhW2ldLT5vaWRzWzBdKSk7CisgICAgaXAgPSBDT05UQUlORVJfTkVYVChjLCBhW2ldKTsKKyAgICBpZiAoYy0+Y29tcGFyZShhW2ldLCBpX2xhc3QpIDwgMCkKKyAgICAgICAgT0tGKGlwICYmIGMtPmNvbXBhcmUoaXAsIGFbaV0pID4gMCwKKyAgICAgICAgICAgICgiU3VjY2Vzc29yIG9mIGFbJWRdID0gJSIgTkVUU05NUF9QUklvICJkIGlzICUiIE5FVFNOTVBfUFJJbyAiZCIsCisgICAgICAgICAgICAgaSwgYVtpXS0+b2lkc1swXSwgaXAtPm9pZHNbMF0pKTsKKyAgICBlbHNlCisgICAgICAgIE9LRighaXAsICgiTm8gc3VjY2Vzc29yIGZvdW5kIGZvciBhWyVkXSA9ICUiIE5FVFNOTVBfUFJJbyAiZCIsIGksCisgICAgICAgICAgICAgICAgICBhW2ldLT5vaWRzWzBdKSk7Cit9CisKK3doaWxlICgoaXAgPSBDT05UQUlORVJfRklSU1QoYykpKQorICBDT05UQUlORVJfUkVNT1ZFKGMsIGlwKTsKK0NPTlRBSU5FUl9GUkVFKGMpOworCitzbm1wX3NodXRkb3duKHRlc3RfbmFtZSk7CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTNiaW5hcnlfYXJyYXlfc3RyaW5nX2NsaWIuYyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAxM2JpbmFyeV9hcnJheV9zdHJpbmdfY2xpYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjNDM2MWIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTNiaW5hcnlfYXJyYXlfc3RyaW5nX2NsaWIuYwpAQCAtMCwwICsxLDU5IEBACisvKiBIRUFERVIgVGVzdGluZyBiaW5hcnkgc3RyaW5nIGFycmF5ICovCisKK3N0YXRpYyBjb25zdCBjaGFyIHRlc3RfbmFtZVtdID0gImJpbmFyeS1hcnJheS1vZi1zdHJpbmdzLXRlc3QiOworY29uc3QgY2hhciBvMVtdID0gInplYnJhIjsKK2NvbnN0IGNoYXIgbzJbXSA9ICJiLXR3byI7Citjb25zdCBjaGFyIG8zW10gPSAiYiI7Citjb25zdCBjaGFyIG80W10gPSAiY2VkYXIiOworY29uc3QgY2hhciBvNVtdID0gImFscGhhIjsKK2NvbnN0IGNoYXIgb3hbXSA9ICJkZXYiOworY29uc3QgY2hhciBveVtdID0gImFhIjsKK2NvbnN0IGNoYXIqIGNvbnN0IG9fbGFzdCA9IG8xOworY29uc3QgY2hhciAqaXA7Citjb25zdCBjaGFyICpjb25zdCBhW10gPSB7IG94LCBveSB9OworY29uc3QgY2hhciAqY29uc3QgYltdID0geyBvNCwgbzIsIG8zLCBvMSwgbzUgfTsKK25ldHNubXBfY29udGFpbmVyICpjOworaW50IGk7CisKK2luaXRfc25tcCh0ZXN0X25hbWUpOworCitjID0gbmV0c25tcF9jb250YWluZXJfZ2V0X2JpbmFyeV9hcnJheSgpOworYy0+Y29tcGFyZSA9IChuZXRzbm1wX2NvbnRhaW5lcl9jb21wYXJlKilzdHJjbXA7CisgICAgCitmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGIpL3NpemVvZihiWzBdKTsgKytpKQorICAgIENPTlRBSU5FUl9JTlNFUlQoYywgYltpXSk7CisKK2ZvciAoaXAgPSBDT05UQUlORVJfRklSU1QoYyk7IGlwOyBpcCA9IENPTlRBSU5FUl9ORVhUKGMsIGlwKSkgeworICAgIGZvciAoaSA9IHNpemVvZihiKS9zaXplb2YoYlswXSkgLSAxOyBpID49IDA7IC0taSkKKyAgICAgICAgaWYgKGMtPmNvbXBhcmUoaXAsIGJbaV0pID09IDApCisgICAgICAgICAgICBicmVhazsKKyAgICBPS0YoaSA+PSAwLCAoInN0cmluZyBiWyVkXSA9IFwiJXNcIiBwcmVzZW50IiwgaSwgYltpXSkpOworfQorCitmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGIpL3NpemVvZihiWzBdKTsgKytpKSB7CisgICAgaXAgPSBDT05UQUlORVJfRklORChjLCBiW2ldKTsKKyAgICBPS0YoaXAsICgiYlslZF0gPSBcIiVzXCIgcHJlc2VudCIsIGksIGJbaV0pKTsKKyAgICBpcCA9IENPTlRBSU5FUl9ORVhUKGMsIGJbaV0pOworICAgIGlmIChjLT5jb21wYXJlKGJbaV0sIG9fbGFzdCkgPCAwKQorICAgICAgICBPS0YoaXAgJiYgYy0+Y29tcGFyZShiW2ldLCBpcCkgPCAwLAorICAgICAgICAgICAgKCJTdWNjZXNzb3Igb2YgYlslZF0gPSBcIiVzXCIgaXMgXCIlc1wiIiwgaSwgYltpXSwgaXApKTsKKyAgICBlbHNlCisgICAgICAgIE9LRighaXAsICgiTm8gc3VjY2Vzc29yIGZvdW5kIGZvciBiWyVkXSA9IFwiJXNcIiIsIGksIGJbaV0pKTsKK30KKworZm9yIChpID0gMDsgaSA8IHNpemVvZihhKS9zaXplb2YoYVswXSk7ICsraSkgeworICAgIGlwID0gQ09OVEFJTkVSX0ZJTkQoYywgYVtpXSk7CisgICAgT0tGKCFpcCwgKCJhWyVkXSA9IFwiJXNcIiBhYnNlbnQiLCBpLCBhW2ldKSk7CisgICAgaXAgPSBDT05UQUlORVJfTkVYVChjLCBhW2ldKTsKKyAgICBpZiAoYy0+Y29tcGFyZShhW2ldLCBvX2xhc3QpIDwgMCkKKyAgICAgICAgT0tGKGlwICYmIGMtPmNvbXBhcmUoaXAsIGFbaV0pID4gMCwKKyAgICAgICAgICAgICgiU3VjY2Vzc29yIG9mIGFbJWRdID0gXCIlc1wiIGlzIFwiJXNcIiIsIGksIGFbaV0sIGlwKSk7CisgICAgZWxzZQorICAgICAgICBPS0YoIWlwLCAoIk5vIHN1Y2Nlc3NvciBmb3VuZCBmb3IgYVslZF0gPSBcIiVzXCIiLCBpLCBhW2ldKSk7Cit9CisKK3doaWxlICgoaXAgPSBDT05UQUlORVJfRklSU1QoYykpKQorICBDT05UQUlORVJfUkVNT1ZFKGMsIGlwKTsKK0NPTlRBSU5FUl9GUkVFKGMpOworCitzbm1wX3NodXRkb3duKHRlc3RfbmFtZSk7CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTRnZXRob3N0YnlhZGRyX2NsaWIuYyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAxNGdldGhvc3RieWFkZHJfY2xpYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxYTU3OGUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTRnZXRob3N0YnlhZGRyX2NsaWIuYwpAQCAtMCwwICsxLDk3IEBACisvKgorICogSEVBREVSIFRlc3RpbmcgbmV0c25tcF9nZXRob3N0YnlhZGRyKCkgCisgKi8KKworU09DS19TVEFSVFVQOworCit7CisgICAgaW50ICAgICAgICAgICAgIHJhbl90ZXN0ID0gMDsKKyNpZmRlZiBIQVZFX0dFVEhPU1RCWUFERFIKKyAgICBzdHJ1Y3QgaG9zdGVudCAqaCwgKmgyID0gTlVMTDsKKyAgICBzdHJ1Y3QgaW5fYWRkciAgdjRsb29wOworICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBzaW5fYWRkcjsKKyAgICBpbnQgICAgICAgICAgICAgczsKKworICAgIHY0bG9vcC5zX2FkZHIgPSBodG9ubChJTkFERFJfTE9PUEJBQ0spOworICAgIG1lbXNldCgmc2luX2FkZHIsIDAsIHNpemVvZihzaW5fYWRkcikpOworICAgIHNpbl9hZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOworICAgIHNpbl9hZGRyLnNpbl9hZGRyID0gdjRsb29wOworICAgIHMgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7CisgICAgaWYgKHMgPj0gMCkgeworICAgICAgICBpZiAoYmluZChzLCAoc3RydWN0IHNvY2thZGRyICopICZzaW5fYWRkciwgc2l6ZW9mKHNpbl9hZGRyKSkgPj0gMCkgeworICAgICAgICAgICAgaCA9IG5ldHNubXBfZ2V0aG9zdGJ5YWRkcigmdjRsb29wLCBzaXplb2YodjRsb29wKSwgQUZfSU5FVCk7CisgICAgICAgICAgICBpZiAoaCkKKyAgICAgICAgICAgICAgICBoMiA9IGdldGhvc3RieW5hbWUoaC0+aF9uYW1lKTsKKyAgICAgICAgICAgIE9LRihoICYmIChzdHJjbXAoaC0+aF9uYW1lLCAibG9jYWxob3N0IikgPT0gMCB8fAorICAgICAgICAgICAgICAgICAgICAgIChoMiAmJiBtZW1jbXAoaDItPmhfYWRkciwgJnY0bG9vcC5zX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodjRsb29wLnNfYWRkcikpID09IDApKSwKKyAgICAgICAgICAgICAgICAoIjEyNy4wLjAuMSBsb29rdXAgKCVzIC0+ICVzKSIsIGggPyBoLT5oX25hbWUgOiAiKGZhaWxlZCkiLAorICAgICAgICAgICAgICAgICBoMiA/IGluZXRfbnRvYSgqKHN0cnVjdCBpbl9hZGRyICopIGgyLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaF9hZGRyKSA6ICIoZmFpbGVkKSIpKTsKKyAgICAgICAgICAgIHJhbl90ZXN0ID0gMTsKKyAgICAgICAgfQorICAgICAgICBjbG9zZShzKTsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAoIXJhbl90ZXN0KQorICAgICAgICBPS0YoMSwgKCJTa2lwcGVkIElQdjQgdGVzdCIpKTsKK30KKworeworICAgIHN0cnVjdCBob3N0ZW50ICpoOworI2lmZGVmIGN5Z3dpbgorICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgdjZsb29wID0geyB7IElONkFERFJfTE9PUEJBQ0tfSU5JVCB9IH07CisjZWxzZQorICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgdjZsb29wID0gSU42QUREUl9MT09QQkFDS19JTklUOworI2VuZGlmCisgICAgc3RydWN0IHNvY2thZGRyX2luNiBzaW42X2FkZHI7CisgICAgc3RydWN0IGFkZHJpbmZvIGhpbnRzLCAqYWRkciA9IE5VTEwsICphcDsKKyAgICBjaGFyICAgICAgICAgICAgYnVmWzY0XTsKKyAgICBpbnQgICAgICAgICAgICAgcywgcmVzLCByYW5fdGVzdCA9IDA7CisKKyAgICBtZW1zZXQoJnNpbjZfYWRkciwgMCwgc2l6ZW9mKHNpbjZfYWRkcikpOworICAgIHNpbjZfYWRkci5zaW42X2ZhbWlseSA9IEFGX0lORVQ2OworICAgIHNpbjZfYWRkci5zaW42X2FkZHIgPSB2Nmxvb3A7CisgICAgcyA9IHNvY2tldChBRl9JTkVUNiwgU09DS19ER1JBTSwgMCk7CisgICAgaWYgKHMgPj0gMCkgeworICAgICAgICBpZiAoYmluZChzLCAoc3RydWN0IHNvY2thZGRyICopICZzaW42X2FkZHIsIHNpemVvZihzaW42X2FkZHIpKSA+PQorICAgICAgICAgICAgMCkgeworICAgICAgICAgICAgc3RyY3B5KGJ1ZiwgIihmYWlsZWQpIik7CisgICAgICAgICAgICBoID0gbmV0c25tcF9nZXRob3N0YnlhZGRyKCZ2Nmxvb3AsIHNpemVvZih2Nmxvb3ApLCBBRl9JTkVUNik7CisgICAgICAgICAgICBpZiAoaCkgeworICAgICAgICAgICAgICAgIG1lbXNldCgmaGludHMsIDAsIHNpemVvZihoaW50cykpOworICAgICAgICAgICAgICAgIGhpbnRzLmFpX2ZhbWlseSA9IEFGX0lORVQ2OworICAgICAgICAgICAgICAgIHJlcyA9IGdldGFkZHJpbmZvKGgtPmhfbmFtZSwgTlVMTCwgJmhpbnRzLCAmYWRkcik7CisgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoYXAgPSBhZGRyOyBhcDsgYXAgPSBhcC0+YWlfbmV4dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFwLT5haV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmV0X250b3AoYXAtPmFpX2ZhbWlseSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJigoc3RydWN0IHNvY2thZGRyX2luNiAqKSBhcC0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWlfYWRkciktPnNpbjZfYWRkciwgYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoYnVmKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFhcCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweShidWYsICJubyBBRl9JTkVUNiBhZGRyZXNzIGZvdW5kIik7CisgICAgICAgICAgICAgICAgICAgIGlmIChhZGRyKQorICAgICAgICAgICAgICAgICAgICAgICAgZnJlZWFkZHJpbmZvKGFkZHIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJnZXRhZGRyaW5mbygpIGZhaWxlZDogJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE9LRihoICYmIChzdHJjbXAoaC0+aF9uYW1lLCAibG9jYWxob3N0IikgPT0gMCB8fAorICAgICAgICAgICAgICAgICAgICAgIChyZXMgPT0gMCAmJiBtZW1jbXAoYWRkci0+YWlfYWRkciwgJnNpbjZfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzaW42X2FkZHIpKSA9PSAwKSksCisgICAgICAgICAgICAgICAgKCI6OjEgbG9va3VwICglcyAtPiAlcykiLCBoID8gaC0+aF9uYW1lIDogIihmYWlsZWQpIiwKKyAgICAgICAgICAgICAgICAgYnVmKSk7CisgICAgICAgICAgICByYW5fdGVzdCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgY2xvc2Uocyk7CisgICAgfQorICAgIGlmICghcmFuX3Rlc3QpCisgICAgICAgIE9LRigxLCAoIlNraXBwZWQgSVB2NiB0ZXN0IikpOworfQorCitTT0NLX0NMRUFOVVA7CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QxMDFwZHVfdHlwZV9jbGliLmMgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QxMDFwZHVfdHlwZV9jbGliLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzcxYWE2MQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDEwMXBkdV90eXBlX2NsaWIuYwpAQCAtMCwwICsxLDEzIEBACisvKiBIRUFERVIgUERVIHR5cGUgZGVzY3JpcHRpb25zICovCitjb25zdCBjaGFyICpwZHVfZGVzY3JpcHRpb247CitwZHVfZGVzY3JpcHRpb24gPSBzbm1wX3BkdV90eXBlKFNOTVBfTVNHX0dFVCk7CitPS0YoKHN0cmNtcChwZHVfZGVzY3JpcHRpb24sICJHRVQiKSA9PSAwKSwKKyAgICAoIlNOTVAgR0VUIFBEVSB0eXBlIGRpZCBub3QgcmV0dXJuIHRoZSBleHBlY3RlZCBpZGVudGlmaWVyIChHRVQpOiAlcyIsCisgICAgIHBkdV9kZXNjcmlwdGlvbikpOworCisjaWZkZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCitwZHVfZGVzY3JpcHRpb24gPSBzbm1wX3BkdV90eXBlKDE2Myk7CitPS0YoKHN0cmNtcChwZHVfZGVzY3JpcHRpb24sICI/MHhBMz8iKSA9PSAwKSwKKyAgICAoIlNOTVAgU0VUIFBEVSB0eXBlIGRpZCBub3QgcmV0dXJuIHRoZSBleHBlY3RlZCB1bmtub3duIGlkZW50aWZpZXIgKD8weEEzPyk6ICVzIiwKKyAgICAgcGR1X2Rlc2NyaXB0aW9uKSk7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QxMDJwZHVfYnVpbGRfY2xpYi5jIGIvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMTAycGR1X2J1aWxkX2NsaWIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmJhNjllCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMTAycGR1X2J1aWxkX2NsaWIuYwpAQCAtMCwwICsxLDY3IEBACisvKiBIRUFERVIgUERVIGJ1aWxkaW5nICovCisKK1NPQ0tfU1RBUlRVUDsKKworbmV0c25tcF9wZHUgKnBkdTsKK3VfY2hhciAqcGFja2V0Oworc2l6ZV90IHBhY2tldF9sZW4sIG9mZnNldCA9IDA7CituZXRzbm1wX3Nlc3Npb24gc2Vzc2lvbiwgKnNzOworaW50IHJjOworCisvKiBwcm90b3R5cGUgY29waWVkIGZyb20gc25tcF9hcGkuYyAqLworaW50ICAgICAgICAgICAgIHNubXBfYnVpbGQodV9jaGFyICoqIHBrdCwgc2l6ZV90ICogcGt0X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqIG9mZnNldCwgbmV0c25tcF9zZXNzaW9uICogcHNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9wZHUgKnBkdSk7CisKK2luaXRfc25tcCgidGVzdGluZyIpOworc25tcF9zZXNzX2luaXQoJnNlc3Npb24pOworc2Vzc2lvbi52ZXJzaW9uID0gU05NUF9WRVJTSU9OXzJjOworc2Vzc2lvbi5wZWVybmFtZSA9IHN0cmR1cCgidWRwOjEyNy4wLjAuMSIpOyAvKiB3ZSB3b24ndCBhY3R1YWxseSBjb25uZWN0ICovCitzZXNzaW9uLmNvbW11bml0eSA9ICh1X2NoYXIgKikgc3RyZHVwKCJib2d1cyIpOworc2Vzc2lvbi5jb21tdW5pdHlfbGVuID0gc3RybGVuKChjaGFyICopIHNlc3Npb24uY29tbXVuaXR5KTsKK3NzID0gc25tcF9vcGVuKCZzZXNzaW9uKTsKKworT0tGKChzcyAhPSBOVUxMKSwgKCJDcmVhdGluZyBhIHNlc3Npb24gZmFpbGVkIikpOworaWYgKHNzID09IE5VTEwpCisgICAgc25tcF9wZXJyb3IoImFjayIpOworCitwYWNrZXRfbGVuID0gNDA5NjsKK3BhY2tldCA9IG1hbGxvYyhwYWNrZXRfbGVuKTsKKworcGR1ID0gc25tcF9wZHVfY3JlYXRlKFNOTVBfTVNHX0dFVCk7CitwZHUtPnZlcnNpb24gPSBzZXNzaW9uLnZlcnNpb247CisKK09LRigocGR1ICE9IE5VTEwpLCAoIkNyZWF0aW5nIGEgR0VUIFBEVSBmYWlsZWQiKSk7CisKK3JjID0gc25tcF9idWlsZCgmcGFja2V0LCAmcGFja2V0X2xlbiwgJm9mZnNldCwgc3MsIHBkdSk7CisKKyNpZm5kZWYgTkVUU05NUF9OT1RJRllfT05MWQorT0tGKChyYyA9PSBTTk1QRVJSX1NVQ0NFU1MpLAorICAgICgiQnVpbGRpbmcgYSBHRVQgUERVL3BhY2tldCBzaG91bGQgaGF2ZSB3b3JrZWQ6ICVkIiwgcmMpKTsKKyNlbHNlIC8qIE5FVFNOTVBfTk9USUZZX09OTFkgKi8KK09LRigocmMgIT0gU05NUEVSUl9TVUNDRVNTKSwKKyAgICAoIkJ1aWxkaW5nIGEgR0VUIFBEVS9wYWNrZXQgc2hvdWxkIGhhdmUgZmFpbGVkOiAlZCIsIHJjKSk7CisjZW5kaWYgLyogTkVUU05NUF9OT1RJRllfT05MWSAqLworCitvZmZzZXQgPSAwOworcGR1LT5jb21tYW5kID0gMTYzOyAvKiBhIFNFVCBtZXNzYWdlICovCityYyA9IHNubXBfYnVpbGQoJnBhY2tldCwgJnBhY2tldF9sZW4sICZvZmZzZXQsIHNzLCBwZHUpOworCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorT0tGKChyYyA9PSBTTk1QRVJSX1NVQ0NFU1MpLAorICAgICgiQnVpbGRpbmcgYSBTRVQgUERVL3BhY2tldCBzaG91bGQgaGF2ZSBzdWNjZWVkZWQ6ICVkIiwgcmMpKTsKKyNlbHNlIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworT0tGKChyYyAhPSBTTk1QRVJSX1NVQ0NFU1MpLAorICAgICgiQnVpbGRpbmcgYSBTRVQgUERVL3BhY2tldCBzaG91bGQgaGF2ZSBmYWlsZWQ6ICVkIiwgcmMpKTsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKworCisKK29mZnNldCA9IDA7CitwZHUtPmNvbW1hbmQgPSBTTk1QX01TR19JTkZPUk07CityYyA9IHNubXBfYnVpbGQoJnBhY2tldCwgJnBhY2tldF9sZW4sICZvZmZzZXQsIHNzLCBwZHUpOworCitPS0YoKHJjID09IFNOTVBFUlJfU1VDQ0VTUyksCisgICAgKCJCdWlsZGluZyBhbiBJTkZPUk0gUERVL3BhY2tldCBzaG91bGQgaGF2ZSBzdWNjZWVkOiAlZCIsIHJjKSk7CisKK1NPQ0tfQ0xFQU5VUDsKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDEwM3BkdV9wYXJzZV9jbGliLmMgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QxMDNwZHVfcGFyc2VfY2xpYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkNTg4MmQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QxMDNwZHVfcGFyc2VfY2xpYi5jCkBAIC0wLDAgKzEsMjIgQEAKKy8qIEhFQURFUiBQYXJzaW5nIG9mIFBEVXMgKi8KK25ldHNubXBfcGR1IHBkdTsKK2ludCByYzsKK3VfY2hhciBkYXRhW10gPSB7IAorICAgIDB4QTIsIDB4MUQsIDB4MDIsIDB4MDQsIDB4NEUsIDB4MzksCisgICAgMHhCMiwgMHg4RSwgMHgwMiwgMHgwMSwgMHgwMCwgMHgwMiwgMHgwMSwgMHgwMCwKKyAgICAweDMwLCAweDBGLCAweDMwLCAweDBELCAweDA2LCAweDA4LCAweDJCLCAweDA2LAorICAgIDB4MDEsIDB4MDIsIDB4MDEsIDB4MDEsIDB4MDQsIDB4MDAsIDB4MDQsIDB4MDEsCisgICAgMHg2NgorfTsKK3NpemVfdCBkYXRhX2xlbmd0aD1zaXplb2YoZGF0YSk7CisKK3JjID0gc25tcF9wZHVfcGFyc2UoJnBkdSwgZGF0YSwgJmRhdGFfbGVuZ3RoKTsKKworT0tGKChyYyA9PSAwKSwgKCJQYXJzaW5nIG9mIGEgZ2VuZXJpYyBQRFUgZmFpbGVkIikpOworCisjaWZkZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCitkYXRhWzBdID0gMHhBMzsgLyogY2hhbmdlcyBpdCB0byBhIFNFVCBwZHUgKi8KK3JjID0gc25tcF9wZHVfcGFyc2UoJnBkdSwgZGF0YSwgJmRhdGFfbGVuZ3RoKTsKKworT0tGKChyYyAhPSAwKSwgKCJQYXJzaW5nIG9mIGEgZ2VuZXJpYyBTRVQgUERVIHN1Y2NlZWRlZCIpKTsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KZGlmZiAtLWdpdCBhL3dpbjMyL0NvbmZpZ3VyZSBiL3dpbjMyL0NvbmZpZ3VyZQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGJjNjhhZmUuLmEzNmRiMGIKLS0tIGEvd2luMzIvQ29uZmlndXJlCisrKyBiL3dpbjMyL0NvbmZpZ3VyZQpAQCAtMTA0LDQ3ICsxMDQsNTUgQEAKICAgfQogfQogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIwotIyBDcmVhdGUgbWFpbiBNYWtlZmlsZQotIwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQXJndW1lbnRzOgorIyAkMTogTmFtZSBvZiBvdXRwdXQgZmlsZQorIyAkMjogTmFtZSBvZiBpbnB1dCBmaWxlCisjICQzOiBSZWZlcmVuY2UgdG8gYSBoYXNoIHdpdGggc3Vic3RpdHV0aW9ucy4gQSBzdWJzdGl0dXRpb24gaXMgYW4gYXJyYXkgd2l0aAorIyAgICAgdHdvIGVsZW1lbnRzIHdoZXJlIGVsZW1lbnQgWzBdIGlzIHRoZSBwYXR0ZXJuIHRvIHNlYXJjaCBmb3IgYW5kIGVsZW1lbnQKKyMgICAgIFsxXSB0aGUgcmVwbGFjZW1lbnQgdGV4dC4KK3N1YiBzdWJzdGl0dXRlCiB7Ci0gIG15ICRtYWtlZmlsZV9vdXQgPSAiTWFrZWZpbGUiOwotICBteSAkbWFrZWZpbGVfaW4gID0gIk1ha2VmaWxlLmluIjsKKyAgbXkgJG91dCAgPSBzaGlmdDsKKyAgbXkgJGluICAgPSBzaGlmdDsKKyAgbXkgJHN1YnMgPSBzaGlmdDsKIAotICBvcGVuIChNQUtFX09VVCwgIj4kbWFrZWZpbGVfb3V0IikgfHwgZGllICJDYW4ndCBPcGVuICRtYWtlZmlsZV9vdXRcbiI7Ci0gIG9wZW4gKE1BS0VfSU4sICI8JG1ha2VmaWxlX2luIikgfHwgZGllICJDYW4ndCBPcGVuICRtYWtlZmlsZV9pblxuIjsKKyAgb3BlbiAoT1VULCAiPiRvdXQiKSB8fCBkaWUgIkNhbid0IG9wZW4gJG91dFxuIjsKKyAgb3BlbiAoSU4sICAiPCRpbiIpICB8fCBkaWUgIkNhbid0IG9wZW4gJGluXG4iOwogCi0gIHByaW50ICJjcmVhdGluZyAkbWFrZWZpbGVfb3V0XG4iOworICBwcmludCAiY3JlYXRpbmcgJG91dFxuIjsKIAotICB3aGlsZSAoPE1BS0VfSU4+KQotICB7CisgIHdoaWxlICg8SU4+KSB7CiAgICAgY2hvbXA7Ci0gICAgaWYgKCRzZGsgPT0gMSkgewotICAgICAgcy9eU0RLPS9TREs9dHJ1ZS87CisgICAgZm9yZWFjaCBteSAkZSAoa2V5cyAlJHN1YnMpIHsKKyAgICAgICAgbXkgJHAgPSAkJHN1YnN7JGV9WzBdOworICAgICAgICBteSAkcSA9ICQkc3Vic3skZX1bMV07CisgICAgICAgIHMvJHAvJHEvOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHMvXlNESz0vU0RLPWZhbHNlLzsKLSAgICB9Ci0KLSAgICBzL15MSU5LVFlQRT0vTElOS1RZUEU9JGxpbmt0eXBlLzsKLSAgICBzL15DRkc9L0NGRz0kY29uZmlnLzsKLSAgICBzL15QUkVGSVg9L1BSRUZJWD0kcHJlZml4LzsKLSAgICBzL15QUkVGSVhfRE9TPS9QUkVGSVhfRE9TPSRwcmVmaXhkb3MvOwotICAgIHMvXlNTTD0uKi9TU0w9JG9wZW5zc2wvOwotCi0gICAgcHJpbnQgTUFLRV9PVVQgJF8gLiAiXG4iOworICAgIHByaW50IE9VVCAkXyAuICJcbiI7CiAgIH0KKworICBjbG9zZSBJTjsKKyAgY2xvc2UgT1VUOwogfQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIwotIyBDcmVhdGUgTWFrZWZpbGVzIGZvciBhcHBsaWNhdGlvbnMgZnJvbQotIyBNYWtlZmlsZS1hcHBzLmluCi0jIChleGNlcHQgZm9yIHNubXBuZXRzdGF0KQorIyBQZXJmb3JtIHN1YnN0aXR1dGlvbnMKICMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAlc3VicyA9ICgKKyAgICAiY2ZnIiA9PiBbICJeQ0ZHPSIsICAgICAgICAiQ0ZHPSRjb25maWciICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAiaW50IiA9PiBbICJeSU5URElSPSIsICAgICAiSU5URElSPS5cXCRjb25maWciICAgICAgICAgICAgICAgICAgXSwKKyAgICAibG5rIiA9PiBbICJeTElOS1RZUEU9IiwgICAiTElOS1RZUEU9JGxpbmt0eXBlIiAgICAgICAgICAgICAgICAgXSwKKyAgICAib3V0IiA9PiBbICJeT1VURElSPSIsICAgICAiT1VURElSPS5cXCRjb25maWciICAgICAgICAgICAgICAgICAgXSwKKyAgICAicGZ4IiA9PiBbICJeUFJFRklYPSIsICAgICAiUFJFRklYPSRwcmVmaXgiICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAiZG9zIiA9PiBbICJeUFJFRklYX0RPUz0iLCAiUFJFRklYX0RPUz0kcHJlZml4ZG9zIiAgICAgICAgICAgICAgXSwKKyAgICAic2RrIiA9PiBbICJeU0RLPSIsICAgICAgICAkc2RrID09IDEgPyAiU0RLPXRydWUiIDogIlNESz1mYWxzZSIgXSwKKyAgICApOworCitzdWJzdGl0dXRlKCJNYWtlZmlsZSIsICJNYWtlZmlsZS5pbiIsIFwlc3Vicyk7CitzdWJzdGl0dXRlKCJsb2NhbC9NYWtlZmlsZSIsICJsb2NhbC9NYWtlZmlsZS5pbiIsIFwlc3Vicyk7CisKIG15IEBwcm9ncmFtcyA9IHF3CiAvZW5jb2RlX2tleWNoYW5nZQogc25tcGJ1bGtnZXQKQEAgLTE2NSwyNDAgKzE3Myw1MSBAQAogLzsKIAogZm9yZWFjaCBteSAkcHJvZ05hbWUgKEBwcm9ncmFtcykgewotCi0gIG15ICRtYWtlZmlsZV9vdXQgPSAiJHByb2dOYW1lXFxNYWtlZmlsZSI7Ci0gIG15ICRtYWtlZmlsZV9pbiA9ICJNYWtlZmlsZS1hcHBzLmluIjsKLQotICBteSAkb3V0ZGlyID0gJGNvbmZpZzsKLSAgbXkgJGludGRpciA9ICRjb25maWc7Ci0KLSAgb3BlbiAoTUFLRV9PVVQsICI+JG1ha2VmaWxlX291dCIpIHx8IGRpZSAiQ2FuJ3QgT3BlbiAkbWFrZWZpbGVfb3V0XG4iOwotICBvcGVuIChNQUtFX0lOLCAiPCRtYWtlZmlsZV9pbiIpIHx8IGRpZSAiQ2FuJ3QgT3BlbiAkbWFrZWZpbGVfaW5cbiI7Ci0KLSAgcHJpbnQgImNyZWF0aW5nICRtYWtlZmlsZV9vdXRcbiI7Ci0KLSAgd2hpbGUgKDxNQUtFX0lOPikKLSAgewotICAgIGNob21wOwotCi0gICAgcy9eTElOS1RZUEU9L0xJTktUWVBFPSRsaW5rdHlwZS87Ci0gICAgcy9eUFJPR05BTUU9L1BST0dOQU1FPSRwcm9nTmFtZS87Ci0gICAgcy9eQ0ZHPS9DRkc9JGNvbmZpZy87Ci0gICAgcy9eT1VURElSPS9PVVRESVI9LlxcJG91dGRpci87Ci0gICAgcy9eSU5URElSPS9JTlRESVI9LlxcJGludGRpci87Ci0gICAgcy9eU1NMPS4qL1NTTD0kb3BlbnNzbC87Ci0KLSAgICBwcmludCBNQUtFX09VVCAkXyAuICJcbiI7Ci0gIH0KKyAgICAkc3Vic3sicHJnIn0gPSBbICJeUFJPR05BTUU9IiwgIlBST0dOQU1FPSRwcm9nTmFtZSIgXTsKKyAgICBzdWJzdGl0dXRlKCIkcHJvZ05hbWUvTWFrZWZpbGUiLCAiTWFrZWZpbGUtYXBwcy5pbiIsIFwlc3Vicyk7CiB9CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jCi0jIENyZWF0ZSBNYWtlZmlsZXMgZm9yIHNubXBuZXRzdGF0IGZyb20KLSMgc25tcG5ldHN0YXRcTWFrZWZpbGUuaW4KLSMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1teSBAcHJvZ3JhbXMgPSBxdwotL3NubXBuZXRzdGF0Ci0vOwotCi1mb3JlYWNoIG15ICRwcm9nTmFtZSAoQHByb2dyYW1zKSB7Ci0KLSAgbXkgJG1ha2VmaWxlX291dCA9ICIkcHJvZ05hbWVcXE1ha2VmaWxlIjsKLSAgbXkgJG1ha2VmaWxlX2luID0gIiRwcm9nTmFtZVxcTWFrZWZpbGUuaW4iOwotCi0gIG15ICRvdXRkaXIgPSAkY29uZmlnOwotICBteSAkaW50ZGlyID0gJGNvbmZpZzsKLQotICBvcGVuIChNQUtFX09VVCwgIj4kbWFrZWZpbGVfb3V0IikgfHwgZGllICJDYW4ndCBPcGVuICRtYWtlZmlsZV9vdXRcbiI7Ci0gIG9wZW4gKE1BS0VfSU4sICI8JG1ha2VmaWxlX2luIikgfHwgZGllICJDYW4ndCBPcGVuICRtYWtlZmlsZV9pblxuIjsKLQotICBwcmludCAiY3JlYXRpbmcgJG1ha2VmaWxlX291dFxuIjsKLQotICB3aGlsZSAoPE1BS0VfSU4+KQotICB7Ci0gICAgY2hvbXA7Ci0KLSAgICBzL15MSU5LVFlQRT0vTElOS1RZUEU9JGxpbmt0eXBlLzsKLSAgICBzL15QUk9HTkFNRT0vUFJPR05BTUU9JHByb2dOYW1lLzsKLSAgICBzL15DRkc9L0NGRz0kY29uZmlnLzsKLSAgICBzL15PVVRESVI9L09VVERJUj0uXFwkb3V0ZGlyLzsKLSAgICBzL15JTlRESVI9L0lOVERJUj0uXFwkaW50ZGlyLzsKLSAgICBzL15TU0w9LiovU1NMPSRvcGVuc3NsLzsKLQotICAgIHByaW50IE1BS0VfT1VUICRfIC4gIlxuIjsKLSAgfQorZm9yZWFjaCBteSAkcHJvZ05hbWUgKCJsaWJhZ2VudCIsICJsaWJuZXRzbm1wdHJhcGQiLCAibG9jYWwiLAorICAgICAgICAgICAgICAgICAgICAgICJuZXRzbm1wbWlicyIsICJzbm1wZCIsICJzbm1wdHJhcGQiLCAic25tcG5ldHN0YXQiLAorICAgICAgICAgICAgICAgICAgICAgICRsaW5rdHlwZSBlcSAiZHluYW1pYyIgPyAibGlic25tcF9kbGwiIDogImxpYnNubXAiKSB7CisgICAgJHN1YnN7InByZyJ9ID0gWyAiXlBST0dOQU1FPSIsICJQUk9HTkFNRT0kcHJvZ05hbWUiIF07CisgICAgc3Vic3RpdHV0ZSgiJHByb2dOYW1lL01ha2VmaWxlIiwgIiRwcm9nTmFtZS9NYWtlZmlsZS5pbiIsIFwlc3Vicyk7CiB9CiAKK215ICVzdWJzID0gKAorICAgICJlbnYiID0+IFsgIlxARU5WX1NFUEFSQVRPUlxAIiwgIjsiIF0KKyk7CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jCi0jIENyZWF0ZSBNYWtlZmlsZXMgZm9yIGxpYnJhcmllcwotIyBmcm9tIG5hbWVcTWFrZWZpbGUuaW4KLSMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1teSBAcHJvZ3JhbXMgPSBxdwotL2xpYmFnZW50Ci1saWJuZXRzbm1wdHJhcGQKLW5ldHNubXBtaWJzCi0vOworc3Vic3RpdHV0ZSgiLi4vbG9jYWwvc25tcGNvbmYiLCAiLi4vbG9jYWwvc25tcGNvbmYuaW4iLCBcJXN1YnMpOwogCisKK215ICVzdWJzID0gKAorICAgICJ2ZXIiID0+IFsgIl4jZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTi4qIiwKKyAgICAgICAgICAgICAgICIjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiBcIiR2ZXJzaW9uXCIiIF0KKyAgICApOworaWYgKCRwcmVmaXggbmUgIiIpIHsKKyAgICAkc3Vic3sicGZ4In0gPSBbICJeI2RlZmluZSBJTlNUQUxMX0JBU0UuKiIsICIjZGVmaW5lIElOU1RBTExfQkFTRSBcIiRwcmVmaXhcIiIgXTsKK30KIGlmICgkbGlua3R5cGUgZXEgImR5bmFtaWMiKSB7Ci0gIHB1c2ggKEBwcm9ncmFtcywgImxpYnNubXBfZGxsIik7CisgICAgJHN1YnN7ImRsbCJ9ID0gWyAiXi4qI3VuZGVmIE5FVFNOTVBfVVNFX0RMTC4qIiwgIiNkZWZpbmUgTkVUU05NUF9VU0VfRExMIDEiIF07CiB9Ci1lbHNlIHsKLSAgcHVzaCAoQHByb2dyYW1zLCAibGlic25tcCIpOworaWYgKCRzZGsgPT0gMSkgeworICAgICRzdWJzeyJzZGsifSA9IFsgIl4uKiN1bmRlZiBIQVZFX1dJTjMyX1BMQVRGT1JNX1NESy4qIiwgIiNkZWZpbmUgSEFWRV9XSU4zMl9QTEFURk9STV9TREsgMSIgXTsKK30KK2lmICgkb3BlbnNzbCA9PSAxKSB7CisgICAgJHN1YnN7InNzbCJ9ID0gWyAiXi4qI3VuZGVmIE5FVFNOTVBfVVNFX09QRU5TU0wuKiIsICIjZGVmaW5lIE5FVFNOTVBfVVNFX09QRU5TU0wgMSIgXTsKK30gZWxzZSB7CisgICAgJHN1YnN7InNzbCJ9ID0gWyAiXi4qI3VuZGVmIE5FVFNOTVBfVVNFX0lOVEVSTkFMX01ENS4qIiwgIiNkZWZpbmUgTkVUU05NUF9VU0VfSU5URVJOQUxfTUQ1IDEiIF07Cit9CitpZiAoJGJfaXB2NiA9PSAxKSB7CisgICAgJHN1YnN7ImlwdjYifSA9IFsgIl4uKiN1bmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2LioiLCAiI2RlZmluZSBORVRTTk1QX0VOQUJMRV9JUFY2IDEiIF07Cit9CitpZiAoJGJfd2luZXh0ZGxsID09IDEpIHsKKyAgICAkc3Vic3sid2luZXh0ZGxsIn0gPSBbICJeLiojdW5kZWYgVVNJTkdfV0lORVhURExMX01PRFVMRS4qIiwgIiNkZWZpbmUgVVNJTkdfV0lORVhURExMX01PRFVMRSAxIiBdOwogfQogCi1mb3JlYWNoIG15ICRwcm9nTmFtZSAoQHByb2dyYW1zKSB7Ci0KLSAgbXkgJG1ha2VmaWxlX291dCA9ICIkcHJvZ05hbWVcXE1ha2VmaWxlIjsKLSAgbXkgJG1ha2VmaWxlX2luID0gIiRwcm9nTmFtZVxcTWFrZWZpbGUuaW4iOwotCi0gIG15ICRvdXRkaXIgPSAkY29uZmlnOwotICBteSAkaW50ZGlyID0gJGNvbmZpZzsKLQotICBvcGVuIChNQUtFX09VVCwgIj4kbWFrZWZpbGVfb3V0IikgfHwgZGllICJDYW4ndCBPcGVuICRtYWtlZmlsZV9vdXRcbiI7Ci0gIG9wZW4gKE1BS0VfSU4sICI8JG1ha2VmaWxlX2luIikgfHwgZGllICJDYW4ndCBPcGVuICRtYWtlZmlsZV9pblxuIjsKLQotICBwcmludCAiY3JlYXRpbmcgJG1ha2VmaWxlX291dFxuIjsKLQotICB3aGlsZSAoPE1BS0VfSU4+KQotICB7Ci0gICAgY2hvbXA7Ci0KLSAgICBpZiAoJHNkayA9PSAxKSB7Ci0gICAgICBzL15TREs9L1NESz10cnVlLzsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBzL15TREs9L1NESz1mYWxzZS87Ci0gICAgfQotCi0gICAgcy9eUFJPR05BTUU9L1BST0dOQU1FPSRwcm9nTmFtZS87Ci0gICAgcy9eQ0ZHPS9DRkc9JGNvbmZpZy87Ci0gICAgcy9eT1VURElSPS9PVVRESVI9LlxcJG91dGRpci87Ci0gICAgcy9eSU5URElSPS9JTlRESVI9LlxcJGludGRpci87Ci0gICAgcy9eU1NMPS4qL1NTTD0kb3BlbnNzbC87Ci0gICAgcHJpbnQgTUFLRV9PVVQgJF8gLiAiXG4iOwotICB9Ci19Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jCi0jIENyZWF0ZSBNYWtlZmlsZXMgZm9yIGRhZW1vbnMKLSMgZnJvbSBuYW1lXE1ha2VmaWxlLmluCi0jCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotbXkgQHByb2dyYW1zID0gcXcKLS9zbm1wZAotc25tcHRyYXBkCi0vOwotCi1mb3JlYWNoIG15ICRwcm9nTmFtZSAoQHByb2dyYW1zKSB7Ci0KLSAgbXkgJG1ha2VmaWxlX291dCA9ICIkcHJvZ05hbWVcXE1ha2VmaWxlIjsKLSAgbXkgJG1ha2VmaWxlX2luID0gIiRwcm9nTmFtZVxcTWFrZWZpbGUuaW4iOwotCi0gIG15ICRvdXRkaXIgPSAkY29uZmlnOwotICBteSAkaW50ZGlyID0gJGNvbmZpZzsKLQotICBvcGVuIChNQUtFX09VVCwgIj4kbWFrZWZpbGVfb3V0IikgfHwgZGllICJDYW4ndCBPcGVuICRtYWtlZmlsZV9vdXRcbiI7Ci0gIG9wZW4gKE1BS0VfSU4sICI8JG1ha2VmaWxlX2luIikgfHwgZGllICJDYW4ndCBPcGVuICRtYWtlZmlsZV9pblxuIjsKLQotICBwcmludCAiY3JlYXRpbmcgJG1ha2VmaWxlX291dFxuIjsKLQotICB3aGlsZSAoPE1BS0VfSU4+KQotICB7Ci0gICAgY2hvbXA7Ci0KLSAgICBpZiAoJHNkayA9PSAxKSB7Ci0gICAgICBzL15TREs9L1NESz10cnVlLzsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBzL15TREs9L1NESz1mYWxzZS87Ci0gICAgfQotCi0gICAgcy9eTElOS1RZUEU9L0xJTktUWVBFPSRsaW5rdHlwZS87Ci0gICAgcy9eUFJPR05BTUU9L1BST0dOQU1FPSRwcm9nTmFtZS87Ci0gICAgcy9eQ0ZHPS9DRkc9JGNvbmZpZy87Ci0gICAgcy9eT1VURElSPS9PVVRESVI9LlxcJG91dGRpci87Ci0gICAgcy9eSU5URElSPS9JTlRESVI9LlxcJGludGRpci87Ci0gICAgcy9eU1NMPS4qL1NTTD0kb3BlbnNzbC87Ci0KLSAgICBwcmludCBNQUtFX09VVCAkXyAuICJcbiI7Ci0gIH0KLX0KLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgQ3JlYXRlIE1ha2VmaWxlIGZvciBQZXJsIHNjcmlwdHMgaW4gbG9jYWwKLSMgZnJvbSBsb2NhbFxNYWtlZmlsZS5pbgotIwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotbXkgJG1ha2VmaWxlX291dCA9ICJsb2NhbFxcTWFrZWZpbGUiOwotbXkgJG1ha2VmaWxlX2luID0gImxvY2FsXFxNYWtlZmlsZS5pbiI7Ci0KLW15ICRvdXRkaXIgPSAkY29uZmlnOwotCi1vcGVuIChNQUtFX09VVCwgIj4kbWFrZWZpbGVfb3V0IikgfHwgZGllICJDYW4ndCBPcGVuICRtYWtlZmlsZV9vdXRcbiI7Ci1vcGVuIChNQUtFX0lOLCAiPCRtYWtlZmlsZV9pbiIpIHx8IGRpZSAiQ2FuJ3QgT3BlbiAkbWFrZWZpbGVfaW5cbiI7Ci0KLXByaW50ICJjcmVhdGluZyAkbWFrZWZpbGVfb3V0XG4iOwotCi13aGlsZSAoPE1BS0VfSU4+KQotewotICBjaG9tcDsKLQotICBzL15PVVRESVI9L09VVERJUj0uXFwkb3V0ZGlyLzsKLSAgcy9eUFJFRklYPS9QUkVGSVg9JHByZWZpeC87Ci0gIHMvXlBSRUZJWF9ET1M9L1BSRUZJWF9ET1M9JHByZWZpeGRvcy87Ci0KLSAgcHJpbnQgTUFLRV9PVVQgJF8gLiAiXG4iOwotfQotCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jCi0jIENyZWF0ZSBuZXQtc25tcC1jb25maWcuaAotIwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLXsKLSAgbXkgJGZpbGVfb3V0ID0gIm5ldC1zbm1wXFxuZXQtc25tcC1jb25maWcuaCI7Ci0gIG15ICRmaWxlX2luID0gIm5ldC1zbm1wXFxuZXQtc25tcC1jb25maWcuaC5pbiI7Ci0KLSAgb3BlbiAoRklMRV9PVVQsICI+JGZpbGVfb3V0IikgfHwgZGllICJDYW4ndCBPcGVuICRmaWxlX291dFxuIjsKLSAgb3BlbiAoRklMRV9JTiwgIjwkZmlsZV9pbiIpIHx8IGRpZSAiQ2FuJ3QgT3BlbiAkZmlsZV9pblxuIjsKLQotICBwcmludCAiY3JlYXRpbmcgJGZpbGVfb3V0XG4iOwotCi0gIHdoaWxlICg8RklMRV9JTj4pCi0gIHsKLSAgICBjaG9tcDsKLSAgICBzL14jZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTi4qLyNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OIFwiJHZlcnNpb25cIi87Ci0gICAgaWYgKCRwcmVmaXggbmUgIiIpIHsKLSAgICAgIHMvXiNkZWZpbmUgSU5TVEFMTF9CQVNFLiovI2RlZmluZSBJTlNUQUxMX0JBU0UgXCIkcHJlZml4XCIvOwotICAgIH0KLSAgICBpZiAoJGxpbmt0eXBlIGVxICJkeW5hbWljIikgewotICAgICAgcy9eLiojdW5kZWYgTkVUU05NUF9VU0VfRExMLiovI2RlZmluZSBORVRTTk1QX1VTRV9ETEwgMS87Ci0gICAgfQotICAgIGlmICgkc2RrID09IDEpIHsKLSAgICAgIHMvXi4qI3VuZGVmIEhBVkVfV0lOMzJfUExBVEZPUk1fU0RLLiovI2RlZmluZSBIQVZFX1dJTjMyX1BMQVRGT1JNX1NESyAxLzsKLSAgICB9Ci0gICAgaWYgKCRvcGVuc3NsID09IDEpIHsKLSAgICAgIHMvXi4qI3VuZGVmIE5FVFNOTVBfVVNFX09QRU5TU0wuKi8jZGVmaW5lIE5FVFNOTVBfVVNFX09QRU5TU0wgMS87Ci0gICAgfQotICAgIGlmICgkYl9pcHY2ID09IDEpIHsKLSAgICAgIHMvXi4qI3VuZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYuKi8jZGVmaW5lIE5FVFNOTVBfRU5BQkxFX0lQVjYgMS87Ci0gICAgfQotICAgIGlmICgkYl93aW5leHRkbGwgPT0gMSkgewotICAgICAgcy9eLiojdW5kZWYgVVNJTkdfV0lORVhURExMX01PRFVMRS4qLyNkZWZpbmUgVVNJTkdfV0lORVhURExMX01PRFVMRSAxLzsKLSAgICB9Ci0KLSAgICBwcmludCBGSUxFX09VVCAkXyAuICJcbiI7Ci0gIH0KLX0KLQorc3Vic3RpdHV0ZSgibmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgiLCAibmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4iLAorICAgICAgICAgICBcJXN1YnMpOwogCiBwcmludCBxcS8KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvd2luMzIvTWFrZWZpbGUtYXBwcy5pbiBiL3dpbjMyL01ha2VmaWxlLWFwcHMuaW4KaW5kZXggMjExM2FkZS4uYmNmYjI2ZSAxMDA2NDQKLS0tIGEvd2luMzIvTWFrZWZpbGUtYXBwcy5pbgorKysgYi93aW4zMi9NYWtlZmlsZS1hcHBzLmluCkBAIC0zLDcgKzMsNiBAQAogT1VURElSPQogSU5URElSPQogTElOS1RZUEU9Ci1TU0w9CiAKICMgU2V0IHRvIDEgdG8gYWxsb3cgdGhlIGJ1aWxkaW5nIHVzaW5nIHRoZSBETEwgdmVyc2lvbiBvZiBTTk1QTElCLgogQUxMT1dfRExMPTEKZGlmZiAtLWdpdCBhL3dpbjMyL2J1aWxkLnBsIGIvd2luMzIvYnVpbGQucGwKaW5kZXggYzE5MWYyOC4uNDAwN2ZhZSAxMDA2NDQKLS0tIGEvd2luMzIvYnVpbGQucGwKKysrIGIvd2luMzIvYnVpbGQucGwKQEAgLTUsMzIgKzUsNDkgQEAKICMgTWFyY2ggMTJ0aCwgMjAwNAogIwogdXNlIHN0cmljdDsKLW15ICRvcGVuc3NsID0gImRpc2FibGVkIjsKLW15ICRiX2lwdjYgPSAiZGlzYWJsZWQiOwotbXkgJGJfd2luZXh0ZGxsID0gImRpc2FibGVkIjsKLW15ICRzZGsgPSAiZGlzYWJsZWQiOwordXNlIHdhcm5pbmdzOwordXNlIENvbmZpZzsKK3VzZSBDd2QgJ2Fic19wYXRoJzsKK3VzZSBGaWxlOjpCYXNlbmFtZTsKK3VzZSBjb25zdGFudCBmYWxzZSA9PiAwOwordXNlIGNvbnN0YW50IHRydWUgPT4gMTsKK215ICR0YXJnZXRfYXJjaCA9ICRFTlZ7VEFSR0VUX0NQVX0gPyAkRU5We1RBUkdFVF9DUFV9IDogJEVOVntQbGF0Zm9ybX0gPworICAgICAgICAgICAgICAgICAgJEVOVntQbGF0Zm9ybX0gOiAieDg2IjsKK2lmICgkdGFyZ2V0X2FyY2ggbmUgIng4NiIgJiYgJHRhcmdldF9hcmNoIG5lICJ4NjQiKSB7CisgICAgcHJpbnQgIkVycm9yOiB1bnN1cHBvcnRlZCB0YXJnZXQgYXJjaGl0ZWN0dXJlICR0YXJnZXRfYXJjaFxuIjsKKyAgICBkaWU7Cit9CitteSBAcGVybF9hcmNoID0gc3BsaXQoLy0vLCAkQ29uZmlne2FyY2huYW1lfSk7CitpZiAoJHBlcmxfYXJjaFsxXSBuZSAkdGFyZ2V0X2FyY2gpIHsKKyAgICBwcmludCAicGVybF9hcmNoID0gJHBlcmxfYXJjaFsxXSBkb2VzIG5vdCBtYXRjaCB0YXJnZXRfYXJjaCA9ICR0YXJnZXRfYXJjaFxuIjsKKyAgICBkaWU7Cit9CitteSAkb3BlbnNzbCA9IGZhbHNlOworbXkgJGRlZmF1bHRfb3BlbnNzbGRpciA9ICR0YXJnZXRfYXJjaCBlcSAieDY0IiA/CisgICAgIkM6XFxPcGVuU1NMLVdpbjY0IiA6ICJDOlxcT3BlblNTTC1XaW4zMiI7CitteSAkZGVmYXVsdF9vcGVuc3NsaW5jZGlyID0gJGRlZmF1bHRfb3BlbnNzbGRpciAuICJcXGluY2x1ZGUiOworbXkgJG9wZW5zc2xpbmNkaXIgPSAkZGVmYXVsdF9vcGVuc3NsaW5jZGlyOworbXkgJGRlZmF1bHRfb3BlbnNzbGxpYmRpciA9ICRkZWZhdWx0X29wZW5zc2xkaXIgLiAiXFxsaWJcXFZDIjsKK215ICRvcGVuc3NsbGliZGlyID0gJGRlZmF1bHRfb3BlbnNzbGxpYmRpcjsKK215ICRiX2lwdjYgPSBmYWxzZTsKK215ICRiX3dpbmV4dGRsbCA9IGZhbHNlOworbXkgJHNkayA9IGZhbHNlOwogbXkgJGRlZmF1bHRfaW5zdGFsbF9iYXNlID0gImM6L3VzciI7CiBteSAkaW5zdGFsbF9iYXNlID0gJGRlZmF1bHRfaW5zdGFsbF9iYXNlOwotbXkgJGluc3RhbGwgPSAiZW5hYmxlZCI7Ci1teSAkaW5zdGFsbF9kZXZlbCA9ICJkaXNhYmxlZCI7Ci1teSAkcGVybCA9ICJkaXNhYmxlZCI7Ci1teSAkcGVybF9pbnN0YWxsID0gImRpc2FibGVkIjsKLW15ICRsb2dnaW5nID0gImVuYWJsZWQiOwotbXkgJGRlYnVnID0gImRpc2FibGVkIjsKK215ICRpbnN0YWxsID0gdHJ1ZTsKK215ICRpbnN0YWxsX2RldmVsID0gZmFsc2U7CitteSAkcGVybCA9IGZhbHNlOworbXkgJHBlcmxfaW5zdGFsbCA9IGZhbHNlOworbXkgJGxvZ2dpbmcgPSB0cnVlOworbXkgJGRlYnVnID0gZmFsc2U7CiBteSAkY29uZmlnT3B0cyA9ICIiOwotbXkgJGxpbmt0eXBlID0gInN0YXRpYyI7CitteSAkbGlua19keW5hbWljID0gZmFsc2U7CiBteSAkb3B0aW9uOwogCi0jIFByZXBlbmQgd2luMzJcIGlmIHJ1bm5pbmcgZnJvbSBtYWluIGRpcmVjdG9yeQotbXkgJGN1cnJlbnRfcHdkID0gYCVDT01TUEVDJSAvYyBjZGA7Ci1jaG9tcCAkY3VycmVudF9wd2Q7Ci1pZiAoISAoJGN1cnJlbnRfcHdkID1+IC9cXHdpbjMyJC8pKSB7Ci0gIGNoZGlyICgid2luMzIiKTsKLSAgJGN1cnJlbnRfcHdkID0gYCVDT01TUEVDJSAvYyBjZGA7Ci0gIGNob21wICRjdXJyZW50X3B3ZDsKLX0KKyMgUGF0aCBvZiB0aGlzIHNjcmlwdCAoc291cmNlIHRyZWUgcGF0aCArICJ3aW4zMiIpLgorbXkgJGN1cnJlbnRfcHdkID0gZGlybmFtZShhYnNfcGF0aCgkMCkpOwogCi1pZiAoIC1kICRFTlZ7TVNWQ0Rpcn0gfHwgLWQgJEVOVntWQ0lOU1RBTExESVJ9KSB7CitpZiAoIC1kICRFTlZ7TVNWQ0Rpcn0gfHwgLWQgJEVOVntWQ0lOU1RBTExESVJ9IHx8IGRlZmluZWQoJEVOVntUQVJHRVRfQ1BVfSkgKSB7CiB9CiBlbHNlIHsKICAgcHJpbnQgIlxuUGxlYXNlIHJ1biBWQ1ZBUlMzMi5CQVQgZmlyc3QgdG8gc2V0IHVwIHRoZSBWaXN1YWwgU3R1ZGlvIGJ1aWxkXG4iIC4KQEAgLTQyLDEzMiArNTksODkgQEAKIHdoaWxlICgxKSB7CiAgIHByaW50ICJcblxuTmV0LVNOTVAgYnVpbGQgYW5kIGluc3RhbGwgb3B0aW9uc1xuIjsKICAgcHJpbnQgIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIjsKLSAgcHJpbnQgIjEuICBPcGVuU1NMIHN1cHBvcnQ6ICAgICAgICAgICAgICAgICIgLiAkb3BlbnNzbC4gIlxuIjsKLSAgcHJpbnQgIjIuICBQbGF0Zm9ybSBTREsgc3VwcG9ydDogICAgICAgICAgICIgLiAkc2RrIC4gIlxuIjsKKyAgcHJpbnQgIjEuICBPcGVuU1NMIHN1cHBvcnQ6ICAgICAgICAgICAgICAgICIgLiAoJG9wZW5zc2wgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKS4gIlxuIjsKKyAgcHJpbnQgIjIuICBPcGVuU1NMIGluY2x1ZGUgZGlyZWN0b3J5OiAgICAgICIgLiAkb3BlbnNzbGluY2Rpci4gIlxuIjsKKyAgcHJpbnQgIjMuICBPcGVuU1NMIGxpYnJhcnkgZGlyZWN0b3I6ICAgICAgICIgLiAkb3BlbnNzbGxpYmRpci4gIlxuIjsKKyAgcHJpbnQgIjQuICBQbGF0Zm9ybSBTREsgc3VwcG9ydDogICAgICAgICAgICIgLiAoJHNkayA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpIC4gIlxuIjsKICAgcHJpbnQgIlxuIjsKLSAgcHJpbnQgIjMuICBJbnN0YWxsIHBhdGg6ICAgICAgICAgICAgICAgICAgICIgLiAkaW5zdGFsbF9iYXNlIC4gIlxuIjsKLSAgcHJpbnQgIjQuICBJbnN0YWxsIGFmdGVyIGJ1aWxkOiAgICAgICAgICAgICIgLiAkaW5zdGFsbCAuICJcbiI7CisgIHByaW50ICI1LiAgSW5zdGFsbCBwYXRoOiAgICAgICAgICAgICAgICAgICAiIC4gJGluc3RhbGxfYmFzZSAuICJcbiI7CisgIHByaW50ICI2LiAgSW5zdGFsbCBhZnRlciBidWlsZDogICAgICAgICAgICAiIC4gKCRpbnN0YWxsID8gImVuYWJsZWQiIDogImRpc2FibGVkIikgLiAiXG4iOwogICBwcmludCAiXG4iOwotICBwcmludCAiNS4gIFBlcmwgbW9kdWxlczogICAgICAgICAgICAgICAgICAgIiAuICRwZXJsIC4gIlxuIjsKLSAgcHJpbnQgIjYuICBJbnN0YWxsIHBlcmwgbW9kdWxlczogICAgICAgICAgICIgLiAkcGVybF9pbnN0YWxsIC4gIlxuIjsKKyAgcHJpbnQgIjcuICBQZXJsIG1vZHVsZXM6ICAgICAgICAgICAgICAgICAgICIgLiAoJHBlcmwgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKSAuICJcbiI7CisgIHByaW50ICI4LiAgSW5zdGFsbCBwZXJsIG1vZHVsZXM6ICAgICAgICAgICAiIC4gKCRwZXJsX2luc3RhbGwgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKSAuICJcbiI7CiAgIHByaW50ICJcbiI7Ci0gIHByaW50ICI3LiAgUXVpZXQgYnVpbGQgKGxvZ2dlZCk6ICAgICAgICAgICAiIC4gJGxvZ2dpbmcgLiAiXG4iOwotICBwcmludCAiOC4gIERlYnVnIG1vZGU6ICAgICAgICAgICAgICAgICAgICAgIiAuICRkZWJ1ZyAuICJcbiI7CisgIHByaW50ICI5LiAgUXVpZXQgYnVpbGQgKGxvZ2dlZCk6ICAgICAgICAgICAiIC4gKCRsb2dnaW5nID8gImVuYWJsZWQiIDogImRpc2FibGVkIikgLiAiXG4iOworICBwcmludCAiMTAuIERlYnVnIG1vZGU6ICAgICAgICAgICAgICAgICAgICAgIiAuICgkZGVidWcgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKSAuICJcbiI7CiAgIHByaW50ICJcbiI7Ci0gIHByaW50ICI5LiAgSVB2NiB0cmFuc3BvcnRzIChyZXF1aXJlcyBTREspOiAiIC4gJGJfaXB2NiAuICJcbiI7Ci0gIHByaW50ICIxMC4gd2luRXh0RExMIGFnZW50IChyZXF1aXJlcyBTREspOiAiIC4gJGJfd2luZXh0ZGxsIC4gIlxuIjsKKyAgcHJpbnQgIjExLiBJUHY2IHRyYW5zcG9ydHMgKHJlcXVpcmVzIFNESyk6ICIgLiAoJGJfaXB2NiA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpIC4gIlxuIjsKKyAgcHJpbnQgIjEyLiB3aW5FeHRETEwgYWdlbnQgKHJlcXVpcmVzIFNESyk6ICIgLiAoJGJfd2luZXh0ZGxsID8gImVuYWJsZWQiIDogImRpc2FibGVkIikgLiAiXG4iOwogICBwcmludCAiXG4iOwotICBwcmludCAiMTEuIExpbmsgdHlwZTogICAgICAgICAgICAgICAgICAgICAgIiAuICRsaW5rdHlwZSAuICJcbiI7CisgIHByaW50ICIxMy4gTGluayB0eXBlOiAgICAgICAgICAgICAgICAgICAgICAiIC4gKCRsaW5rX2R5bmFtaWMgPyAiZHluYW1pYyIgOiAic3RhdGljIikgLiAiXG4iOwogICBwcmludCAiXG4iOwotICBwcmludCAiMTIuIEluc3RhbGwgZGV2ZWxvcG1lbnQgZmlsZXMgICAgICAgIiAuICRpbnN0YWxsX2RldmVsIC4gIlxuIjsKKyAgcHJpbnQgIjE0LiBJbnN0YWxsIGRldmVsb3BtZW50IGZpbGVzICAgICAgICIgLiAoJGluc3RhbGxfZGV2ZWwgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKSAuICJcbiI7CiAgIHByaW50ICJcbkYuICBGaW5pc2hlZCAtIHN0YXJ0IGJ1aWxkXG4iOwogICBwcmludCAiUS4gIFF1aXQgLSBhYm9ydCBidWlsZFxuXG4iOwogICBwcmludCAiU2VsZWN0IG9wdGlvbiB0byBzZXQgLyB0b2dnbGU6ICI7CiAKICAgY2hvbXAgKCRvcHRpb24gPSA8Pik7CiAgIGlmICgkb3B0aW9uIGVxICIxIikgewotICAgIGlmICgkb3BlbnNzbCBlcSAiZW5hYmxlZCIpIHsKLSAgICAgICRvcGVuc3NsID0gImRpc2FibGVkIjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAkb3BlbnNzbCA9ICJlbmFibGVkIjsKLSAgICB9CisgICAgJG9wZW5zc2wgPSAhJG9wZW5zc2w7CiAgIH0KICAgZWxzaWYgKCRvcHRpb24gZXEgIjIiKSB7Ci0gICAgaWYgKCRzZGsgZXEgImVuYWJsZWQiKSB7Ci0gICAgICAkc2RrID0gImRpc2FibGVkIjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAkc2RrID0gImVuYWJsZWQiOwotICAgIH0KLSAgfQotICBlbHNpZiAoJG9wdGlvbiBlcSAiOSIpIHsKLSAgICBpZiAoJGJfaXB2NiBlcSAiZW5hYmxlZCIpIHsKLSAgICAgICRiX2lwdjYgPSAiZGlzYWJsZWQiOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICRiX2lwdjYgPSAiZW5hYmxlZCI7Ci0gICAgICBpZiAoJHNkayA9ICJkaXNhYmxlZCIpIHsKLSAgICAgICAgcHJpbnQgIlxuXG4qIFNESyByZXF1aXJlZCBmb3IgSVB2NiBhbmQgaGFzIGJlZW4gYXV0b21hdGljYWxseSBlbmFibGVkIjsKLSAgICAgICAgJHNkayA9ICJlbmFibGVkIjsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgZWxzaWYgKCRvcHRpb24gZXEgIjEwIikgewotICAgIGlmICgkYl93aW5leHRkbGwgZXEgImVuYWJsZWQiKSB7Ci0gICAgICAkYl93aW5leHRkbGwgPSAiZGlzYWJsZWQiOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICRiX3dpbmV4dGRsbCA9ICJlbmFibGVkIjsKLSAgICAgIGlmICgkc2RrID0gImRpc2FibGVkIikgewotICAgICAgICBwcmludCAiXG5cbiogU0RLIHJlcXVpcmVkIGZvciBJUHY2IGFuZCBoYXMgYmVlbiBhdXRvbWF0aWNhbGx5IGVuYWJsZWQiOwotICAgICAgICAkc2RrID0gImVuYWJsZWQiOwotICAgICAgfQotICAgIH0KKyAgICBwcmludCAiUGxlYXNlIGVudGVyIHRoZSBPcGVuU1NMIGluY2x1ZGUgZGlyZWN0b3J5IFskb3BlbnNzbGluY2Rpcl06ICI7CisgICAgY2hvbXAgKCRvcGVuc3NsaW5jZGlyID0gPD4pOworICAgICRvcGVuc3NsaW5jZGlyID1+IHMvXFwvXC8vZzsKKyAgICAkb3BlbnNzbGluY2RpciA9ICRkZWZhdWx0X29wZW5zc2xpbmNkaXIgaWYgKCRvcGVuc3NsaW5jZGlyIGVxICIiKTsKICAgfQogICBlbHNpZiAoJG9wdGlvbiBlcSAiMyIpIHsKLSAgICBwcmludCAiUGxlYXNlIGVudGVyIHRoZSBuZXcgaW5zdGFsbCBwYXRoIFskZGVmYXVsdF9pbnN0YWxsX2Jhc2VdOiAiOwotICAgIGNob21wICgkaW5zdGFsbF9iYXNlID0gPD4pOwotICAgIGlmICgkaW5zdGFsbF9iYXNlIGVxICIiKSB7Ci0gICAgICAkaW5zdGFsbF9iYXNlID0gJGRlZmF1bHRfaW5zdGFsbF9iYXNlOwotICAgIH0KLSAgICAkaW5zdGFsbF9iYXNlID1+IHMvXFwvXC8vZzsKKyAgICBwcmludCAiUGxlYXNlIGVudGVyIHRoZSBPcGVuU1NMIGxpYnJhcnkgZGlyZWN0b3J5IFskb3BlbnNzbGxpYmRpcl06ICI7CisgICAgY2hvbXAgKCRvcGVuc3NsbGliZGlyID0gPD4pOworICAgICRvcGVuc3NsbGliZGlyID1+IHMvXFwvXC8vZzsKKyAgICAkb3BlbnNzbGxpYmRpciA9ICRkZWZhdWx0X29wZW5zc2xsaWJkaXIgaWYgKCRvcGVuc3NsbGliZGlyIGVxICIiKTsKICAgfQogICBlbHNpZiAoJG9wdGlvbiBlcSAiNCIpIHsKLSAgICBpZiAoJGluc3RhbGwgZXEgImVuYWJsZWQiKSB7Ci0gICAgICAkaW5zdGFsbCA9ICJkaXNhYmxlZCI7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgJGluc3RhbGwgPSAiZW5hYmxlZCI7CisgICAgJHNkayA9ICEkc2RrOworICB9CisgIGVsc2lmICgkb3B0aW9uIGVxICIxMSIpIHsKKyAgICAkYl9pcHY2ID0gISRiX2lwdjY7CisgICAgaWYgKCRiX2lwdjYgJiYgISRzZGspIHsKKyAgICAgIHByaW50ICJcblxuKiBTREsgcmVxdWlyZWQgZm9yIElQdjYgYW5kIGhhcyBiZWVuIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCI7CisgICAgICAkc2RrID0gdHJ1ZTsKICAgICB9CiAgIH0KICAgZWxzaWYgKCRvcHRpb24gZXEgIjEyIikgewotICAgIGlmICgkaW5zdGFsbF9kZXZlbCBlcSAiZW5hYmxlZCIpIHsKLSAgICAgICRpbnN0YWxsX2RldmVsID0gImRpc2FibGVkIjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAkaW5zdGFsbF9kZXZlbCA9ICJlbmFibGVkIjsKKyAgICAkYl93aW5leHRkbGwgPSAhJGJfd2luZXh0ZGxsOworICAgIGlmICgkYl93aW5leHRkbGwgJiYgISRzZGspIHsKKyAgICAgIHByaW50ICJcblxuKiBTREsgcmVxdWlyZWQgZm9yIElQdjYgYW5kIGhhcyBiZWVuIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCI7CisgICAgICAkc2RrID0gdHJ1ZTsKICAgICB9CiAgIH0KICAgZWxzaWYgKCRvcHRpb24gZXEgIjUiKSB7Ci0gICAgaWYgKCRwZXJsIGVxICJlbmFibGVkIikgewotICAgICAgJHBlcmwgPSAiZGlzYWJsZWQiOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICRwZXJsID0gImVuYWJsZWQiOwotICAgIH0KKyAgICBwcmludCAiUGxlYXNlIGVudGVyIHRoZSBuZXcgaW5zdGFsbCBwYXRoIFskZGVmYXVsdF9pbnN0YWxsX2Jhc2VdOiAiOworICAgIGNob21wICgkaW5zdGFsbF9iYXNlID0gPD4pOworICAgICRpbnN0YWxsX2Jhc2UgPX4gcy9cXC9cLy9nOworICAgICRpbnN0YWxsX2Jhc2UgPSAkZGVmYXVsdF9pbnN0YWxsX2Jhc2UgaWYgKCRpbnN0YWxsX2Jhc2UgZXEgIiIpOwogICB9CiAgIGVsc2lmICgkb3B0aW9uIGVxICI2IikgewotICAgIGlmICgkcGVybF9pbnN0YWxsIGVxICJlbmFibGVkIikgewotICAgICAgJHBlcmxfaW5zdGFsbCA9ICJkaXNhYmxlZCI7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgJHBlcmxfaW5zdGFsbCA9ICJlbmFibGVkIjsKLSAgICB9CisgICAgJGluc3RhbGwgPSAhJGluc3RhbGw7CisgIH0KKyAgZWxzaWYgKCRvcHRpb24gZXEgIjE0IikgeworICAgICRpbnN0YWxsX2RldmVsID0gISRpbnN0YWxsX2RldmVsOwogICB9CiAgIGVsc2lmICgkb3B0aW9uIGVxICI3IikgewotICAgIGlmICgkbG9nZ2luZyBlcSAiZW5hYmxlZCIpIHsKLSAgICAgICRsb2dnaW5nID0gImRpc2FibGVkIjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAkbG9nZ2luZyA9ICJlbmFibGVkIjsKLSAgICB9CisgICAgJHBlcmwgPSAhJHBlcmw7CiAgIH0KICAgZWxzaWYgKCRvcHRpb24gZXEgIjgiKSB7Ci0gICAgaWYgKCRkZWJ1ZyBlcSAiZW5hYmxlZCIpIHsKLSAgICAgICRkZWJ1ZyA9ICJkaXNhYmxlZCI7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgJGRlYnVnID0gImVuYWJsZWQiOwotICAgIH0KKyAgICAkcGVybF9pbnN0YWxsID0gISRwZXJsX2luc3RhbGw7CiAgIH0KLSAgZWxzaWYgKCRvcHRpb24gZXEgIjExIikgewotICAgIGlmICgkbGlua3R5cGUgZXEgInN0YXRpYyIpIHsKLSAgICAgICRsaW5rdHlwZSA9ICJkeW5hbWljIjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAkbGlua3R5cGUgPSAic3RhdGljIjsKLSAgICB9CisgIGVsc2lmICgkb3B0aW9uIGVxICI5IikgeworICAgICRsb2dnaW5nID0gISRsb2dnaW5nOworICB9CisgIGVsc2lmICgkb3B0aW9uIGVxICIxMCIpIHsKKyAgICAkZGVidWcgPSAhJGRlYnVnOworICB9CisgIGVsc2lmICgkb3B0aW9uIGVxICIxMyIpIHsKKyAgICAkbGlua19keW5hbWljID0gISRsaW5rX2R5bmFtaWM7CiAgIH0KICAgZWxzaWYgKGxjKCRvcHRpb24pIGVxICJmIikgewogICAgIGxhc3Q7CkBAIC0xNzcsMTUgKzE1MSwxNiBAQAogICB9CiB9CiAKLSRjb25maWdPcHRzIC49ICRvcGVuc3NsIGVxICJlbmFibGVkIiA/ICItLXdpdGgtc3NsIiA6ICIiOworbXkgJGxpbmt0eXBlID0gJGxpbmtfZHluYW1pYyA/ICJkeW5hbWljIiA6ICJzdGF0aWMiOworJGNvbmZpZ09wdHMgLj0gJG9wZW5zc2wgPyAiLS13aXRoLXNzbCIgOiAiIjsKICRjb25maWdPcHRzIC49ICIgIjsKLSRjb25maWdPcHRzIC49ICRzZGsgZXEgImVuYWJsZWQiID8gIi0td2l0aC1zZGsiIDogIiI7CiskY29uZmlnT3B0cyAuPSAkc2RrID8gIi0td2l0aC1zZGsiIDogIiI7CiAkY29uZmlnT3B0cyAuPSAiICI7Ci0kY29uZmlnT3B0cyAuPSAkYl9pcHY2IGVxICJlbmFibGVkIiA/ICItLXdpdGgtaXB2NiIgOiAiIjsKKyRjb25maWdPcHRzIC49ICRiX2lwdjYgPyAiLS13aXRoLWlwdjYiIDogIiI7CiAkY29uZmlnT3B0cyAuPSAiICI7Ci0kY29uZmlnT3B0cyAuPSAkYl93aW5leHRkbGwgZXEgImVuYWJsZWQiID8gIi0td2l0aC13aW5leHRkbGwiIDogIiI7CiskY29uZmlnT3B0cyAuPSAkYl93aW5leHRkbGwgPyAiLS13aXRoLXdpbmV4dGRsbCIgOiAiIjsKICRjb25maWdPcHRzIC49ICIgIjsKLSRjb25maWdPcHRzIC49ICRkZWJ1ZyBlcSAiZW5hYmxlZCIgPyAiLS1jb25maWc9ZGVidWciIDogIi0tY29uZmlnPXJlbGVhc2UiOworJGNvbmZpZ09wdHMgLj0gJGRlYnVnID8gIi0tY29uZmlnPWRlYnVnIiA6ICItLWNvbmZpZz1yZWxlYXNlIjsKIAogIyBTZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAKQEAgLTE5MywxNDQgKzE2OCw5NCBAQAogJEVOVntOT19FWFRFUk5BTF9ERVBTfT0iMSI7CiAKICMgU2V0IFBBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgc28gUGVybCBtYWtlIHRlc3RzIGNhbiBsb2NhdGUgdGhlIERMTAotJEVOVntQQVRIfSA9ICIkY3VycmVudF9wd2RcXGJpblxcIiAuICgkZGVidWcgZXEgImVuYWJsZWQiID8gImRlYnVnIiA6ICJyZWxlYXNlIiApIC4gIjskRU5We1BBVEh9IjsKKyRFTlZ7UEFUSH0gPSAiJGN1cnJlbnRfcHdkXFxiaW5cXCIgLiAoJGRlYnVnID8gImRlYnVnIiA6ICJyZWxlYXNlIiApIC4gIjskRU5We1BBVEh9IjsKKworJEVOVntJTkNMVURFfSAuPSAiOyRvcGVuc3NsaW5jZGlyIjsKKyRFTlZ7TElCfSAgICAgLj0gIjskb3BlbnNzbGxpYmRpciI7CiAKICMgU2V0IE1JQkRJUlMgZW52aXJvbm1lbnQgdmFyaWFibGUgc28gUGVybCBtYWtlIHRlc3RzIGNhbiBsb2NhdGUgdGhlIG1pYnMKLW15ICR0ZW1wX21pYmRpciA9ICIkY3VycmVudF9wd2QvLi4vbWlicyI7Ci0kdGVtcF9taWJkaXIgPX4gcy9cXC9cLy9nOwotJEVOVntNSUJESVJTfT0kdGVtcF9taWJkaXI7CiskRU5We01JQkRJUlN9ID0gZGlybmFtZSgkY3VycmVudF9wd2QpIC4gIi9taWJzIjsKIAogIyBTZXQgU05NUENPTkZQQVRIIGVudmlyb25tZW50IHZhcmlhYmxlIHNvIFBlcmwgY29uZi50IHRlc3QgY2FuIGxvY2F0ZQogIyB0aGUgY29uZmlndXJhdGlvbiBmaWxlcy4KICMgU2VlIHRoZSBub3RlIGFib3V0IGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiB0aGUgV2luMzIgc2VjdGlvbiBvZgogIyBwZXJsL1NOTVAvUkVBRE1FIGZvciBkZXRhaWxzIG9uIHdoeSB0aGlzIGlzIG5lZWRlZC4KLSRFTlZ7U05NUENPTkZQQVRIfT0idCI7JEVOVntTTk1QQ09ORlBBVEh9OworJEVOVntTTk1QQ09ORlBBVEh9PSJ0IjsKIAogcHJpbnQgIlxuQnVpbGRpbmcuLi5cbiI7CiAKLWlmICgkbG9nZ2luZyBlcSAiZW5hYmxlZCIpIHsKLSAgcHJpbnQgIlxuQ3JlYXRpbmcgKi5vdXQgbG9nIGZpbGVzLlxuXG4iOworcHJpbnQgIlxuQ3JlYXRpbmcgKi5vdXQgbG9nIGZpbGVzLlxuXG4iOworCitwcmludCAiRGVsZXRpbmcgb2xkIGxvZyBmaWxlcy4uLlxuIjsKK3N5c3RlbSgiZGVsICoub3V0IiAuICgkbG9nZ2luZyA/ICIgPiBOVUw6IDI+JjEiIDogIiIpKTsKKworIyBEZWxldGUgbmV0LXNubXAtY29uZmlnLmggZnJvbSBtYWluIGluY2x1ZGUgZm9sZGVyIGp1c3QgaW4gY2FzZSBpdCB3YXMgY3JlYXRlZCBieSBhIEN5Z3dpbiBvciBNaW5HVyBidWlsZAordW5saW5rICIuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIjsKK3VubGluayAiLi4vc25tcGxpYi90cmFuc3BvcnRzL3NubXBfdHJhbnNwb3J0X2luaXRzLmgiOworCitwcmludCAiUnVubmluZyBDb25maWd1cmUuLi5cbiI7CitzeXN0ZW0oInBlcmwgQ29uZmlndXJlICRjb25maWdPcHRzIC0tbGlua3R5cGU9JGxpbmt0eXBlIC0tcHJlZml4PVwiJGluc3RhbGxfYmFzZVwiIiAuICgkbG9nZ2luZyA/ICIgPiBjb25maWd1cmUub3V0IDI+JjEiIDogIiIpKSA9PSAwIHx8IGRpZSAoJGxvZ2dpbmcgPyAiQnVpbGQgZXJyb3IgKHNlZSBjb25maWd1cmUub3V0KSIgOiAiQnVpbGQgZXJyb3IgKHNlZSBhYm92ZSkiKTsKKworcHJpbnQgIkNsZWFuaW5nLi4uXG4iOworc3lzdGVtKCJubWFrZSAvbm9sb2dvIGNsZWFuIiAuICgkbG9nZ2luZyA/ICIgPiBjbGVhbi5vdXQgMj4mMSIgOiAiIikpID09IDAgfHwgZGllICgkbG9nZ2luZyA/ICJCdWlsZCBlcnJvciAoc2VlIGNsZWFuLm91dCkiIDogIkJ1aWxkIGVycm9yIChzZWUgYWJvdmUpIik7CisKK3ByaW50ICJCdWlsZGluZyBtYWluIHBhY2thZ2UuLi5cbiI7CitzeXN0ZW0oIm5tYWtlIC9ub2xvZ28iIC4gKCRsb2dnaW5nID8gIiA+IG1ha2Uub3V0IDI+JjEiIDogIiIpKSA9PSAwIHx8IGRpZSAoJGxvZ2dpbmcgPyAiQnVpbGQgZXJyb3IgKHNlZSBtYWtlLm91dCkiIDogIkJ1aWxkIGVycm9yIChzZWUgYWJvdmUpIik7CisKK2lmICgkcGVybCkgeworICBpZiAoISRsaW5rX2R5bmFtaWMpIHsKKyAgICBwcmludCAiUnVubmluZyBDb25maWd1cmUgZm9yIERMTC4uLlxuIjsKKyAgICBzeXN0ZW0oInBlcmwgQ29uZmlndXJlICRjb25maWdPcHRzIC0tbGlua3R5cGU9ZHluYW1pYyAtLXByZWZpeD1cIiRpbnN0YWxsX2Jhc2VcIiIgLiAoJGxvZ2dpbmcgPyAiID4gcGVybGNvbmZpZ3VyZS5vdXQgMj4mMSIgOiAiIikpID09IDAgfHwgZGllICgkbG9nZ2luZyA/ICJCdWlsZCBlcnJvciAoc2VlIHBlcmxjb25maWd1cmUub3V0KSIgOiAiQnVpbGQgZXJyb3IgKHNlZSBhYm92ZSkiKTsKKworICAgIHByaW50ICJDbGVhbmluZyBsaWJyYXJpZXMuLi5cbiI7CisgICAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIGxpYnNfY2xlYW4iIC4gKCRsb2dnaW5nID8gIiA+PiBjbGVhbi5vdXQgMj4mMSIgOiAiIikpID09IDAgfHwgZGllICgkbG9nZ2luZyA/ICJCdWlsZCBlcnJvciAoc2VlIGNsZWFuLm91dCkiIDogIkJ1aWxkIGVycm9yIChzZWUgYWJvdmUpIik7CisKKyAgICBwcmludCAiQnVpbGRpbmcgRExMIGxpYnJhcmllcy4uLlxuIjsKKyAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gbGlicyIgLiAoJGxvZ2dpbmcgPyAiID4gZGxsLm91dCAyPiYxIiA6ICIiKSkgPT0gMCB8fCBkaWUgKCRsb2dnaW5nID8gIkJ1aWxkIGVycm9yIChzZWUgZGxsLm91dCkiIDogIkJ1aWxkIGVycm9yIChzZWUgYWJvdmUpIik7CisgIH0KKworICBwcmludCAiQ2xlYW5pbmcgUGVybC4uLi5cbiI7CisgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBwZXJsX2NsZWFuIiAuICgkbG9nZ2luZyA/ICIgPj4gY2xlYW4ub3V0IDI+JjEiIDogIiIpKTsgIyBJZiBhbHJlYWR5IGNsZWFuZWQsIE1ha2VmaWxlIGlzIGdvbmUgc28gZG9uJ3Qgd29ycnkgYWJvdXQgZXJyb3JzIQorCisgIHByaW50ICJCdWlsZGluZyBQZXJsIG1vZHVsZXMuLi5cbiI7CisgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBwZXJsIiAuICgkbG9nZ2luZyA/ICIgPiBwZXJsbWFrZS5vdXQgMj4mMSIgOiAiIikpID09IDAgfHwgZGllICgkbG9nZ2luZyA/ICJCdWlsZCBlcnJvciAoc2VlIHBlcmxtYWtlLm91dCkiIDogIkJ1aWxkIGVycm9yIChzZWUgYWJvdmUpIik7CisKKyAgcHJpbnQgIlRlc3RpbmcgUGVybCBtb2R1bGVzLi4uXG4iOworICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gcGVybF90ZXN0IiAuICgkbG9nZ2luZyA/ICIgPiBwZXJsdGVzdC5vdXQgMj4mMSIgOiAiIikpOyAjIERvbid0IGRpZSBpZiBhbGwgdGhlIHRlc3RzIGRvbid0IHBhc3MuLgorCisgIGlmICgkcGVybF9pbnN0YWxsKSB7CisgICAgcHJpbnQgIkluc3RhbGxpbmcgUGVybCBtb2R1bGVzLi4uXG4iOworICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBwZXJsX2luc3RhbGwiIC4gKCRsb2dnaW5nID8gIiA+IHBlcmxpbnN0YWxsLm91dCAyPiYxIiA6ICIiKSkgPT0gMCB8fCBkaWUgKCRsb2dnaW5nID8gIkJ1aWxkIGVycm9yIChzZWUgcGVybGluc3RhbGwub3V0KSIgOiAiQnVpbGQgZXJyb3IgKHNlZSBhYm92ZSkiKTsKKyAgfQorCisgIHByaW50ICJcblNlZSBwZXJsdGVzdC5vdXQgZm9yIFBlcmwgdGVzdCByZXN1bHRzXG4iOwogfQogCi1pZiAoJGxvZ2dpbmcgZXEgImVuYWJsZWQiKSB7Ci0gIHByaW50ICJEZWxldGluZyBvbGQgbG9nIGZpbGVzLi4uXG4iOwotICBzeXN0ZW0oImRlbCAqLm91dCA+IE5VTDogMj4mMSIpOwotCi0gICMgRGVsZXRlIG5ldC1zbm1wLWNvbmZpZy5oIGZyb20gbWFpbiBpbmNsdWRlIGZvbGRlciBqdXN0IGluIGNhc2UgaXQgd2FzIGNyZWF0ZWQgYnkgYSBDeWd3aW4gb3IgTWluR1cgYnVpbGQKLSAgc3lzdGVtKCJkZWwgLi5cXGluY2x1ZGVcXG5ldC1zbm1wXFxuZXQtc25tcC1jb25maWcuaCA+IE5VTDogMj4mMSIpOwotICB1bmxpbmsgIi4uL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wX3RyYW5zcG9ydF9pbml0cy5oIjsKLQotICBwcmludCAiUnVubmluZyBDb25maWd1cmUuLi5cbiI7Ci0gIHN5c3RlbSgicGVybCBDb25maWd1cmUgJGNvbmZpZ09wdHMgLS1saW5rdHlwZT0kbGlua3R5cGUgLS1wcmVmaXg9XCIkaW5zdGFsbF9iYXNlXCIgPiBjb25maWd1cmUub3V0IDI+JjEiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBjb25maWd1cmUub3V0KSI7Ci0KLSAgcHJpbnQgIkNsZWFuaW5nLi4uXG4iOwotICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gY2xlYW4gPiBjbGVhbi5vdXQgMj4mMSIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIGNsZWFuLm91dCkiOwotCi0gIHByaW50ICJCdWlsZGluZyBtYWluIHBhY2thZ2UuLi5cbiI7Ci0gIHN5c3RlbSgibm1ha2UgL25vbG9nbyA+IG1ha2Uub3V0IDI+JjEiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBtYWtlLm91dCkiOwotCi0gIGlmICgkcGVybCBlcSAiZW5hYmxlZCIpIHsKLSAgICBpZiAoJGxpbmt0eXBlIGVxICJzdGF0aWMiKSB7Ci0gICAgICBwcmludCAiUnVubmluZyBDb25maWd1cmUgZm9yIERMTC4uLlxuIjsKLSAgICAgIHN5c3RlbSgicGVybCBDb25maWd1cmUgJGNvbmZpZ09wdHMgLS1saW5rdHlwZT1keW5hbWljIC0tcHJlZml4PVwiJGluc3RhbGxfYmFzZVwiID4gcGVybGNvbmZpZ3VyZS5vdXQgMj4mMSIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIHBlcmxjb25maWd1cmUub3V0KSI7Ci0KLSAgICAgIHByaW50ICJDbGVhbmluZyBsaWJyYXJpZXMuLi5cbiI7Ci0gICAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gbGlic19jbGVhbiA+PiBjbGVhbi5vdXQgMj4mMSIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIGNsZWFuLm91dCkiOwotCi0gICAgICBwcmludCAiQnVpbGRpbmcgRExMIGxpYnJhcmllcy4uLlxuIjsKLSAgICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBsaWJzID4gZGxsLm91dCAyPiYxIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgZGxsLm91dCkiOwotICAgIH0KLQotICAgIHByaW50ICJDbGVhbmluZyBQZXJsLi4uLlxuIjsKLSAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gcGVybF9jbGVhbiA+PiBjbGVhbi5vdXQgMj4mMSIpOyAjIElmIGFscmVhZHkgY2xlYW5lZCwgTWFrZWZpbGUgaXMgZ29uZSBzbyBkb24ndCB3b3JyeSBhYm91dCBlcnJvcnMhCi0KLSAgICBwcmludCAiQnVpbGRpbmcgUGVybCBtb2R1bGVzLi4uXG4iOwotICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBwZXJsID4gcGVybG1ha2Uub3V0IDI+JjEiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBwZXJsbWFrZS5vdXQpIjsKLQotICAgIHByaW50ICJUZXN0aW5nIFBlcmwgbW9kdWxlcy4uLlxuIjsKLSAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gcGVybF90ZXN0ID4gcGVybHRlc3Qub3V0IDI+JjEiKTsgIyBEb24ndCBkaWUgaWYgYWxsIHRoZSB0ZXN0cyBkb24ndCBwYXNzLi4KLQotICAgIGlmICgkcGVybF9pbnN0YWxsIGVxICJlbmFibGVkIikgewotICAgICAgcHJpbnQgIkluc3RhbGxpbmcgUGVybCBtb2R1bGVzLi4uXG4iOwotICAgICAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIHBlcmxfaW5zdGFsbCA+IHBlcmxpbnN0YWxsLm91dCAyPiYxIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgcGVybGluc3RhbGwub3V0KSI7Ci0gICAgfQotCi0gICAgcHJpbnQgIlxuU2VlIHBlcmx0ZXN0Lm91dCBmb3IgUGVybCB0ZXN0IHJlc3VsdHNcbiI7Ci0gIH0KLQotICBwcmludCAiXG4iOwotICBpZiAoJGluc3RhbGwgZXEgImVuYWJsZWQiKSB7Ci0gICAgcHJpbnQgIkluc3RhbGxpbmcgbWFpbiBwYWNrYWdlLi4uXG4iOwotICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBpbnN0YWxsID4gaW5zdGFsbC5vdXQgMj4mMSIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIGluc3RhbGwub3V0KSI7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcHJpbnQgIlR5cGUgbm1ha2UgaW5zdGFsbCB0byBpbnN0YWxsIHRoZSBwYWNrYWdlIHRvICRpbnN0YWxsX2Jhc2VcbiI7Ci0gIH0KLQotICBpZiAoJGluc3RhbGxfZGV2ZWwgZXEgImVuYWJsZWQiKSB7Ci0gICAgcHJpbnQgIkluc3RhbGxpbmcgZGV2ZWxvcG1lbnQgZmlsZXMuLi5cbiI7Ci0gICAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIGluc3RhbGxfZGV2ZWwgPiBpbnN0YWxsX2RldmVsLm91dCAyPiYxIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgaW5zdGFsbF9kZXZlbC5vdXQpIjsKLSAgfQotICBlbHNlIHsKLSAgICBwcmludCAiVHlwZSBubWFrZSBpbnN0YWxsX2RldmVsIHRvIGluc3RhbGwgdGhlIGRldmVsb3BtZW50IGZpbGVzIHRvICRpbnN0YWxsX2Jhc2VcbiI7Ci0gIH0KLQotICBpZiAoJHBlcmxfaW5zdGFsbCBlcSAiZGlzYWJsZWQiICYmICRwZXJsIGVxICJlbmFibGVkIikgewotICAgIHByaW50ICJUeXBlIG5tYWtlIHBlcmxfaW5zdGFsbCB0byBpbnN0YWxsIHRoZSBQZXJsIG1vZHVsZXNcbiI7Ci0gIH0KK3ByaW50ICJcbiI7CitpZiAoJGluc3RhbGwpIHsKKyAgcHJpbnQgIkluc3RhbGxpbmcgbWFpbiBwYWNrYWdlLi4uXG4iOworICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gaW5zdGFsbCIgLiAoJGxvZ2dpbmcgPyAiID4gaW5zdGFsbC5vdXQgMj4mMSIgOiAiIikpID09IDAgfHwgZGllICgkbG9nZ2luZyA/ICJCdWlsZCBlcnJvciAoc2VlIGluc3RhbGwub3V0KSIgOiAiQnVpbGQgZXJyb3IgKHNlZSBhYm92ZSkiKTsKIH0KIGVsc2UgewotICBzeXN0ZW0oImRlbCAqLm91dCIpOworICBwcmludCAiVHlwZSBubWFrZSBpbnN0YWxsIHRvIGluc3RhbGwgdGhlIHBhY2thZ2UgdG8gJGluc3RhbGxfYmFzZVxuIjsKK30KIAotICAjIERlbGV0ZSBuZXQtc25tcC1jb25maWcuaCBmcm9tIG1haW4gaW5jbHVkZSBmb2xkZXIganVzdCBpbiBjYXNlIGl0IHdhcyBjcmVhdGVkIGJ5IGEgQ3lnd2luIG9yIE1pbkdXIGJ1aWxkCi0gIHN5c3RlbSgiZGVsIC4uXFxpbmNsdWRlXFxuZXQtc25tcFxcbmV0LXNubXAtY29uZmlnLmggPiBOVUw6IDI+JjEiKTsKK2lmICgkaW5zdGFsbF9kZXZlbCkgeworICBwcmludCAiSW5zdGFsbGluZyBkZXZlbG9wbWVudCBmaWxlcy4uLlxuIjsKKyAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIGluc3RhbGxfZGV2ZWwgPiBpbnN0YWxsX2RldmVsLm91dCAyPiYxIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgaW5zdGFsbF9kZXZlbC5vdXQpIjsKK30KK2Vsc2UgeworICBwcmludCAiVHlwZSBubWFrZSBpbnN0YWxsX2RldmVsIHRvIGluc3RhbGwgdGhlIGRldmVsb3BtZW50IGZpbGVzIHRvICRpbnN0YWxsX2Jhc2VcbiI7Cit9CiAKLSAgc3lzdGVtKCJwZXJsIENvbmZpZ3VyZSAkY29uZmlnT3B0cyAtLWxpbmt0eXBlPSRsaW5rdHlwZSAtLXByZWZpeD1cIiRpbnN0YWxsX2Jhc2VcIiIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIGFib3ZlKSI7Ci0gIHN5c3RlbSgibm1ha2UgL25vbG9nbyBjbGVhbiIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIGFib3ZlKSI7Ci0gIHN5c3RlbSgibm1ha2UgL25vbG9nbyIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIGFib3ZlKSI7Ci0KLSAgaWYgKCRwZXJsIGVxICJlbmFibGVkIikgewotICAgIGlmICgkbGlua3R5cGUgZXEgInN0YXRpYyIpIHsKLSAgICAgIHN5c3RlbSgicGVybCBDb25maWd1cmUgJGNvbmZpZ09wdHMgLS1saW5rdHlwZT1keW5hbWljIC0tcHJlZml4PVwiJGluc3RhbGxfYmFzZVwiIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgYWJvdmUpIjsKLSAgICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBsaWJzX2NsZWFuIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgYWJvdmUpIjsKLSAgICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBsaWJzIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgYWJvdmUpIjsKLSAgICB9Ci0KLSAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gcGVybF9jbGVhbiIpOyAjIElmIGFscmVhZHkgY2xlYW5lZCwgTWFrZWZpbGUgaXMgZ29uZSBzbyBkb24ndCB3b3JyeSBhYm91dCBlcnJvcnMhCi0gICAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIHBlcmwiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBhYm92ZSkiOwotCi0gICAgbXkgJHBhdGhfb2xkID0gJEVOVntQQVRIfTsKLSAgICAkRU5We1BBVEh9ID0gIiRjdXJyZW50X3B3ZFxcYmluXFwiIC4gKCRkZWJ1ZyBlcSAiZW5hYmxlZCIgPyAiZGVidWciIDogInJlbGVhc2UiICkgLiAiOyRFTlZ7UEFUSH0iOwotICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBwZXJsX3Rlc3QiKTsgIyBEb24ndCBkaWUgaWYgYWxsIHRoZSB0ZXN0cyBkb24ndCBwYXNzLi4KLSAgICAkRU5We1BBVEh9ID0gJHBhdGhfb2xkOwotCi0gICAgaWYgKCRwZXJsX2luc3RhbGwgZXEgImVuYWJsZWQiKSB7Ci0gICAgICBwcmludCAiSW5zdGFsbGluZyBQZXJsIG1vZHVsZXMuLi5cbiI7Ci0gICAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gcGVybF9pbnN0YWxsIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgYWJvdmUpIjsKLSAgICB9Ci0gIH0KLQotICBwcmludCAiXG4iOwotICBpZiAoJGluc3RhbGwgZXEgImVuYWJsZWQiKSB7Ci0gICAgcHJpbnQgIkluc3RhbGxpbmcgbWFpbiBwYWNrYWdlLi4uXG4iOwotICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBpbnN0YWxsIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgYWJvdmUpIjsKLSAgfQotICBlbHNlIHsKLSAgICBwcmludCAiVHlwZSBubWFrZSBpbnN0YWxsIHRvIGluc3RhbGwgdGhlIHBhY2thZ2UgdG8gJGluc3RhbGxfYmFzZVxuIjsKLSAgfQotCi0gIGlmICgkaW5zdGFsbF9kZXZlbCBlcSAiZW5hYmxlZCIpIHsKLSAgICBwcmludCAiSW5zdGFsbGluZyBkZXZlbG9wbWVudCBmaWxlcy4uLlxuIjsKLSAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gaW5zdGFsbF9kZXZlbCA+IGluc3RhbGxfZGV2ZWwub3V0IDI+JjEiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBpbnN0YWxsX2RldmVsLm91dCkiOwotICB9Ci0gIGVsc2UgewotICAgIHByaW50ICJUeXBlIG5tYWtlIGluc3RhbGxfZGV2ZWwgdG8gaW5zdGFsbCB0aGUgZGV2ZWxvcG1lbnQgZmlsZXMgdG8gJGluc3RhbGxfYmFzZVxuIjsKLSAgfQotCi0gIGlmICgkcGVybF9pbnN0YWxsIGVxICJkaXNhYmxlZCIgJiYgJHBlcmwgZXEgImVuYWJsZWQiKSB7Ci0gICAgcHJpbnQgIlR5cGUgbm1ha2UgcGVybF9pbnN0YWxsIHRvIGluc3RhbGwgdGhlIFBlcmwgbW9kdWxlc1xuIjsKLSAgfQoraWYgKCRwZXJsICYmICEkcGVybF9pbnN0YWxsKSB7CisgIHByaW50ICJUeXBlIG5tYWtlIHBlcmxfaW5zdGFsbCB0byBpbnN0YWxsIHRoZSBQZXJsIG1vZHVsZXNcbiI7CiB9CiAKIHByaW50ICJcbkRvbmUhXG4iOwogCisjIExvY2FsIFZhcmlhYmxlczoKKyMgbW9kZTogcGVybAorIyBwZXJsLWluZGVudC1sZXZlbDogMgorIyBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyMgRW5kOgpkaWZmIC0tZ2l0IGEvd2luMzIvY29uZmlnLmggYi93aW4zMi9jb25maWcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQxY2I5YS4uMDAwMDAwMAotLS0gYS93aW4zMi9jb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotLyoKLSAqIEV2ZXJ5b25lIHNob3VsZCBiZSBpbmNsdWRpbmcgdGhlIG5ldyBzdHlsZSBjb25maWcgaGVhZGVyLgotICogRm9yIG5vdywgd2UnbGwgZG8gaXQgZm9yIHRoZW0gZm9yIGJhY2t3YXJkcyBjb21wYXRhYmlsaXR5LgotICovCi0jaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CmRpZmYgLS1naXQgYS93aW4zMi9kaXN0L2J1aWxkLWJpbmFyeS5iYXQgYi93aW4zMi9kaXN0L2J1aWxkLWJpbmFyeS5iYXQKaW5kZXggYmEyMzRiYS4uNjBlMTcyOCAxMDA3NTUKLS0tIGEvd2luMzIvZGlzdC9idWlsZC1iaW5hcnkuYmF0CisrKyBiL3dpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LmJhdApAQCAtMSw1ICsxLDMgQEAKIEBlY2hvIG9mZgogCi1jZCB3aW4zMiA+IE5VTDogMj4mMQotcGVybCBidWlsZC1iaW5hcnkucGwKLQorcGVybCAlfmRwMFxidWlsZC1iaW5hcnkucGwKZGlmZiAtLWdpdCBhL3dpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LnBsIGIvd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGwKaW5kZXggZDEwMmRmYi4uYjA2NGNjOCAxMDA3NTUKLS0tIGEvd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGwKKysrIGIvd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGwKQEAgLTUsMjcgKzUsNDggQEAKICMgTWF5IDEwdGgsIDIwMDkKICMKIHVzZSBzdHJpY3Q7Cit1c2UgRmlsZTo6QmFzZW5hbWU7CiB1c2UgRmlsZTo6Q29weTsKK3VzZSBGaWxlOjpTcGVjOwogdXNlIEN3ZCAnYWJzX3BhdGgnOwogCiBwcmludCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iOwogCi1teSAkdGFyX2NvbW1hbmQgPSAnQzpcbXN5c1wxLjBcYmluXHRhci5leGUnOwotbXkgJGd6aXBfY29tbWFuZCA9ICdDOlxtc3lzXDEuMFxiaW5cZ3ppcC5leGUnOworbXkgJHRhcl9jb21tYW5kOworbXkgJGd6aXBfY29tbWFuZDsKK2ZvciBteSAkbXN5c2JpbmRpciAoKCJDOlxcbXN5c1xcMS4wXFxiaW4iLCAiQzpcXG1pbmd3XFxtc3lzXFwxLjBcXGJpbiIpKSB7CisgICAgJHRhcl9jb21tYW5kID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkbXN5c2JpbmRpciwgInRhci5leGUiKTsKKyAgICAkZ3ppcF9jb21tYW5kID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkbXN5c2JpbmRpciwgImd6aXAuZXhlIik7CisgICAgbGFzdCBpZiAoLWYgJHRhcl9jb21tYW5kKTsKK30KIAogaWYgKCEgKC1mICR0YXJfY29tbWFuZCkpIHsKLSAgZGllICgiQ291bGQgbm90IGZpbmQgdGFyIGNvbW1hbmQgKCR0YXJfY29tbWFuZCkiKTsKKyAgZGllICgiQ291bGQgbm90IGZpbmQgdGFyIGNvbW1hbmQiKTsKIH0KIGVsc2UgewogICBwcmludCAidGFyIGNvbW1hbmQ6ICAkdGFyX2NvbW1hbmRcbiI7CiB9CiBpZiAoISAoLWYgJGd6aXBfY29tbWFuZCkpIHsKLSAgZGllICgiQ291bGQgbm90IGZpbmQgZ3ppcCBjb21tYW5kICgkZ3ppcF9jb21tYW5kKSIpOworICBkaWUgKCJDb3VsZCBub3QgZmluZCBnemlwIGNvbW1hbmQiKTsKIH0KIGVsc2UgewogICBwcmludCAiZ3ppcCBjb21tYW5kOiAkZ3ppcF9jb21tYW5kXG4iOwogfQogCitteSAkbWFrZW5zaXM7Citmb3IgbXkgJG5zaXNkaXIgKCgiQzpcXFByb2dyYW0gRmlsZXNcXE5TSVMiLCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE5TSVMiKSkgeworICAgICRtYWtlbnNpcyA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJG5zaXNkaXIsICJtYWtlbnNpcy5leGUiKTsKKyAgICBsYXN0IGlmICgtZiAkbWFrZW5zaXMpOworfQorZGllKCJtYWtlbnNpcy5leGUgbm90IGZvdW5kIikgaWYgKCEoLWYgJG1ha2Vuc2lzKSk7CisKK215ICR0YXJnZXRfYXJjaCA9ICRFTlZ7VEFSR0VUX0NQVX0gPyAkRU5We1RBUkdFVF9DUFV9IDogJEVOVntQbGF0Zm9ybX0gPworICAgICAgICAgICAgICAgICAgJEVOVntQbGF0Zm9ybX0gOiAieDg2IjsKK215ICRvcGVuc3NsZGlyID0gJHRhcmdldF9hcmNoIGVxICJ4NjQiID8gIkM6XFxPcGVuU1NMLVdpbjY0IiA6CisgICAgICAgICAgICAgICAgICJDOlxcT3BlblNTTC1XaW4zMiI7CitteSAkb3BlbnNzbGluY2RpciA9ICRvcGVuc3NsZGlyIC4gIlxcaW5jbHVkZSI7CitteSAkb3BlbnNzbGxpYmRpciA9ICRvcGVuc3NsZGlyIC4gIlxcbGliXFxWQyI7CisKIG15ICR2ZXJzaW9uID0gInVua25vd24iOwogbXkgJHZlcnNpb25fZm9yX3BlcmwgPSAidW5rbm93biI7CiBteSAkdmVyc2lvbl9tYWo7CkBAIC00OSwzMyArNzAsMTAgQEAKIG15ICRsaW5rdHlwZSA9ICJzdGF0aWMiOwogbXkgJG9wdGlvbjsKIAotIyBQcmVwZW5kIHdpbjMyXCBpZiBydW5uaW5nIGZyb20gbWFpbiBkaXJlY3RvcnkKLW15ICRjdXJyZW50X3B3ZCA9IGAlQ09NU1BFQyUgL2MgY2RgOwotY2hvbXAgJGN1cnJlbnRfcHdkOwotbXkgJHRvcF9kaXI7Ci1teSAkd2luMzJfZGlyOwotbXkgJHBlcmxfZGlyOwotCi1pZiAoJGN1cnJlbnRfcHdkID1+IC9cXHdpbjMyXFxkaXN0JC8pIHsKLSAgJHdpbjMyX2RpciA9ICIkY3VycmVudF9wd2QvLi4vIjsKLSAgJHRvcF9kaXIgPSAiJGN1cnJlbnRfcHdkLy4uLy4uLyI7Ci0gICRwZXJsX2RpciA9ICIkY3VycmVudF9wd2QvLi4vLi4vcGVybC8iOwotfQotZWxzaWYgKCRjdXJyZW50X3B3ZCA9fiAvXFx3aW4zMiQvKSB7Ci0gICR3aW4zMl9kaXIgPSAkY3VycmVudF9wd2Q7Ci0gICR0b3BfZGlyID0gIiRjdXJyZW50X3B3ZC8uLi8iOwotICAkcGVybF9kaXIgPSAiJGN1cnJlbnRfcHdkLy4uL3BlcmwvIjsKLX0KLWVsc2UgeyAgIyBBc3N1bWUgdG9wIGxldmVsIGZvbGRlcgotICAkd2luMzJfZGlyID0gIiRjdXJyZW50X3B3ZC93aW4zMi8iOwotICAkdG9wX2RpciA9ICRjdXJyZW50X3B3ZDsKLSAgJHBlcmxfZGlyID0gIiRjdXJyZW50X3B3ZC9wZXJsLyI7Ci19Ci0KLSR0b3BfZGlyID0gYWJzX3BhdGgoJHRvcF9kaXIpOwotJHdpbjMyX2RpciA9IGFic19wYXRoKCR3aW4zMl9kaXIpOwotJHBlcmxfZGlyID0gYWJzX3BhdGgoJHBlcmxfZGlyKTsKLQorbXkgJHNjcmlwdGRpciA9IGRpcm5hbWUoYWJzX3BhdGgoJDApKTsKK215ICR3aW4zMl9kaXIgPSBkaXJuYW1lKCRzY3JpcHRkaXIpOworbXkgJHRvcF9kaXIgPSBkaXJuYW1lKCR3aW4zMl9kaXIpOworbXkgJHBlcmxfZGlyID0gRmlsZTo6U3BlYy0+Y2F0ZGlyKCR0b3BfZGlyLCAicGVybCIpOwogCiBwcmludCAiXG50b3BfZGlyOiAgICAgICR0b3BfZGlyXG4iOwogcHJpbnQgIndpbjMyX2RpcjogICAgJHdpbjMyX2RpclxuIjsKQEAgLTkwLDkgKzg4LDcgQEAKICAgZXhpdDsKIH0KIAotaWYgKCAtZCAkRU5We01TVkNEaXJ9IHx8IC1kICRFTlZ7VkNJTlNUQUxMRElSfSkgewotfQotZWxzZSB7CitpZiAoISgtZCAkRU5We01TVkNEaXJ9KSAmJiAhKC1kICRFTlZ7VkNJTlNUQUxMRElSfSkgJiYgIWRlZmluZWQoJEVOVntUQVJHRVRfQ1BVfSkpIHsKICAgcHJpbnQgIlxuUGxlYXNlIHJ1biBWQ1ZBUlMzMi5CQVQgZmlyc3QgdG8gc2V0IHVwIHRoZSBWaXN1YWwgU3R1ZGlvIGJ1aWxkXG4iIC4KICAgICAgICAgImVudmlyb25tZW50LlxuXG4iOwogICBleGl0OwpAQCAtMTg5LDI3ICsxODUsNiBAQAogJGluc3RhbGwgPSAiZW5hYmxlZCI7CiAkaW5zdGFsbF9kZXZlbCA9ICJlbmFibGVkIjsKIAotcHJpbnQgIlxuXG5CdWlsZGluZyB3aXRoIG9wdGlvbnM6XG4iOwotcHJpbnQgIj09PT09PT09PT09PT09PT09PT09PT1cblxuIjsKLXByaW50ICIxLiAgT3BlblNTTCBzdXBwb3J0OiAgICAgICAgICAgICAgICAiIC4gJG9wZW5zc2wuICJcbiI7Ci1wcmludCAiMi4gIFBsYXRmb3JtIFNESyBzdXBwb3J0OiAgICAgICAgICAgIiAuICRzZGsgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICIzLiAgSW5zdGFsbCBwYXRoOiAgICAgICAgICAgICAgICAgICAiIC4gJGluc3RhbGxfYmFzZSAuICJcbiI7Ci1wcmludCAiNC4gIEluc3RhbGwgYWZ0ZXIgYnVpbGQ6ICAgICAgICAgICAgIiAuICRpbnN0YWxsIC4gIlxuIjsKLXByaW50ICJcbiI7Ci1wcmludCAiNS4gIFBlcmwgbW9kdWxlczogICAgICAgICAgICAgICAgICAgIiAuICRwZXJsIC4gIlxuIjsKLXByaW50ICI2LiAgSW5zdGFsbCBwZXJsIG1vZHVsZXM6ICAgICAgICAgICAiIC4gJHBlcmxfaW5zdGFsbCAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjcuICBRdWlldCBidWlsZCAobG9nZ2VkKTogICAgICAgICAgICIgLiAkbG9nZ2luZyAuICJcbiI7Ci1wcmludCAiOC4gIERlYnVnIG1vZGU6ICAgICAgICAgICAgICAgICAgICAgIiAuICRkZWJ1ZyAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjkuICBJUHY2IHRyYW5zcG9ydHMgKHJlcXVpcmVzIFNESyk6ICIgLiAkYl9pcHY2IC4gIlxuIjsKLXByaW50ICIxMC4gd2luRXh0RExMIGFnZW50IChyZXF1aXJlcyBTREspOiAiIC4gJGJfd2luZXh0ZGxsIC4gIlxuIjsKLXByaW50ICJcbiI7Ci1wcmludCAiMTEuIExpbmsgdHlwZTogICAgICAgICAgICAgICAgICAgICAgIiAuICRsaW5rdHlwZSAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjEyLiBJbnN0YWxsIGRldmVsb3BtZW50IGZpbGVzICAgICAgICIgLiAkaW5zdGFsbF9kZXZlbCAuICJcbiI7Ci0KIGNoZGlyICR3aW4zMl9kaXI7CiAmYnVpbGQoKTsKICZjcmVhdGVfcGVybF9wYWNrYWdlKCk7CkBAIC0yMjgsMjcgKzIwMyw2IEBACiAkaW5zdGFsbCA9ICJkaXNhYmxlZCI7CiAkaW5zdGFsbF9kZXZlbCA9ICJkaXNhYmxlZCI7CiAKLXByaW50ICJcblxuQnVpbGRpbmcgd2l0aCBvcHRpb25zOlxuIjsKLXByaW50ICI9PT09PT09PT09PT09PT09PT09PT09XG5cbiI7Ci1wcmludCAiMS4gIE9wZW5TU0wgc3VwcG9ydDogICAgICAgICAgICAgICAgIiAuICRvcGVuc3NsLiAiXG4iOwotcHJpbnQgIjIuICBQbGF0Zm9ybSBTREsgc3VwcG9ydDogICAgICAgICAgICIgLiAkc2RrIC4gIlxuIjsKLXByaW50ICJcbiI7Ci1wcmludCAiMy4gIEluc3RhbGwgcGF0aDogICAgICAgICAgICAgICAgICAgIiAuICRpbnN0YWxsX2Jhc2UgLiAiXG4iOwotcHJpbnQgIjQuICBJbnN0YWxsIGFmdGVyIGJ1aWxkOiAgICAgICAgICAgICIgLiAkaW5zdGFsbCAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjUuICBQZXJsIG1vZHVsZXM6ICAgICAgICAgICAgICAgICAgICIgLiAkcGVybCAuICJcbiI7Ci1wcmludCAiNi4gIEluc3RhbGwgcGVybCBtb2R1bGVzOiAgICAgICAgICAgIiAuICRwZXJsX2luc3RhbGwgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICI3LiAgUXVpZXQgYnVpbGQgKGxvZ2dlZCk6ICAgICAgICAgICAiIC4gJGxvZ2dpbmcgLiAiXG4iOwotcHJpbnQgIjguICBEZWJ1ZyBtb2RlOiAgICAgICAgICAgICAgICAgICAgICIgLiAkZGVidWcgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICI5LiAgSVB2NiB0cmFuc3BvcnRzIChyZXF1aXJlcyBTREspOiAiIC4gJGJfaXB2NiAuICJcbiI7Ci1wcmludCAiMTAuIHdpbkV4dERMTCBhZ2VudCAocmVxdWlyZXMgU0RLKTogIiAuICRiX3dpbmV4dGRsbCAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjExLiBMaW5rIHR5cGU6ICAgICAgICAgICAgICAgICAgICAgICIgLiAkbGlua3R5cGUgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICIxMi4gSW5zdGFsbCBkZXZlbG9wbWVudCBmaWxlcyAgICAgICAiIC4gJGluc3RhbGxfZGV2ZWwgLiAiXG4iOwotCiBjaGRpciAkd2luMzJfZGlyOwogJmJ1aWxkKCk7CiAKQEAgLTI4MCwyNyArMjM0LDYgQEAKICRpbnN0YWxsID0gImVuYWJsZWQiOwogJGluc3RhbGxfZGV2ZWwgPSAiZW5hYmxlZCI7CiAKLXByaW50ICJcblxuQnVpbGRpbmcgd2l0aCBvcHRpb25zOlxuIjsKLXByaW50ICI9PT09PT09PT09PT09PT09PT09PT09XG5cbiI7Ci1wcmludCAiMS4gIE9wZW5TU0wgc3VwcG9ydDogICAgICAgICAgICAgICAgIiAuICRvcGVuc3NsLiAiXG4iOwotcHJpbnQgIjIuICBQbGF0Zm9ybSBTREsgc3VwcG9ydDogICAgICAgICAgICIgLiAkc2RrIC4gIlxuIjsKLXByaW50ICJcbiI7Ci1wcmludCAiMy4gIEluc3RhbGwgcGF0aDogICAgICAgICAgICAgICAgICAgIiAuICRpbnN0YWxsX2Jhc2UgLiAiXG4iOwotcHJpbnQgIjQuICBJbnN0YWxsIGFmdGVyIGJ1aWxkOiAgICAgICAgICAgICIgLiAkaW5zdGFsbCAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjUuICBQZXJsIG1vZHVsZXM6ICAgICAgICAgICAgICAgICAgICIgLiAkcGVybCAuICJcbiI7Ci1wcmludCAiNi4gIEluc3RhbGwgcGVybCBtb2R1bGVzOiAgICAgICAgICAgIiAuICRwZXJsX2luc3RhbGwgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICI3LiAgUXVpZXQgYnVpbGQgKGxvZ2dlZCk6ICAgICAgICAgICAiIC4gJGxvZ2dpbmcgLiAiXG4iOwotcHJpbnQgIjguICBEZWJ1ZyBtb2RlOiAgICAgICAgICAgICAgICAgICAgICIgLiAkZGVidWcgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICI5LiAgSVB2NiB0cmFuc3BvcnRzIChyZXF1aXJlcyBTREspOiAiIC4gJGJfaXB2NiAuICJcbiI7Ci1wcmludCAiMTAuIHdpbkV4dERMTCBhZ2VudCAocmVxdWlyZXMgU0RLKTogIiAuICRiX3dpbmV4dGRsbCAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjExLiBMaW5rIHR5cGU6ICAgICAgICAgICAgICAgICAgICAgICIgLiAkbGlua3R5cGUgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICIxMi4gSW5zdGFsbCBkZXZlbG9wbWVudCBmaWxlcyAgICAgICAiIC4gJGluc3RhbGxfZGV2ZWwgLiAiXG4iOwotCiBjaGRpciAkd2luMzJfZGlyOwogJmJ1aWxkKCk7CiAmY3JlYXRlX3BlcmxfcGFja2FnZSgpOwpAQCAtMzE5LDI3ICsyNTIsNiBAQAogJGluc3RhbGwgPSAiZGlzYWJsZWQiOwogJGluc3RhbGxfZGV2ZWwgPSAiZGlzYWJsZWQiOwogCi1wcmludCAiXG5cbkJ1aWxkaW5nIHdpdGggb3B0aW9uczpcbiI7Ci1wcmludCAiPT09PT09PT09PT09PT09PT09PT09PVxuXG4iOwotcHJpbnQgIjEuICBPcGVuU1NMIHN1cHBvcnQ6ICAgICAgICAgICAgICAgICIgLiAkb3BlbnNzbC4gIlxuIjsKLXByaW50ICIyLiAgUGxhdGZvcm0gU0RLIHN1cHBvcnQ6ICAgICAgICAgICAiIC4gJHNkayAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjMuICBJbnN0YWxsIHBhdGg6ICAgICAgICAgICAgICAgICAgICIgLiAkaW5zdGFsbF9iYXNlIC4gIlxuIjsKLXByaW50ICI0LiAgSW5zdGFsbCBhZnRlciBidWlsZDogICAgICAgICAgICAiIC4gJGluc3RhbGwgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICI1LiAgUGVybCBtb2R1bGVzOiAgICAgICAgICAgICAgICAgICAiIC4gJHBlcmwgLiAiXG4iOwotcHJpbnQgIjYuICBJbnN0YWxsIHBlcmwgbW9kdWxlczogICAgICAgICAgICIgLiAkcGVybF9pbnN0YWxsIC4gIlxuIjsKLXByaW50ICJcbiI7Ci1wcmludCAiNy4gIFF1aWV0IGJ1aWxkIChsb2dnZWQpOiAgICAgICAgICAgIiAuICRsb2dnaW5nIC4gIlxuIjsKLXByaW50ICI4LiAgRGVidWcgbW9kZTogICAgICAgICAgICAgICAgICAgICAiIC4gJGRlYnVnIC4gIlxuIjsKLXByaW50ICJcbiI7Ci1wcmludCAiOS4gIElQdjYgdHJhbnNwb3J0cyAocmVxdWlyZXMgU0RLKTogIiAuICRiX2lwdjYgLiAiXG4iOwotcHJpbnQgIjEwLiB3aW5FeHRETEwgYWdlbnQgKHJlcXVpcmVzIFNESyk6ICIgLiAkYl93aW5leHRkbGwgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICIxMS4gTGluayB0eXBlOiAgICAgICAgICAgICAgICAgICAgICAiIC4gJGxpbmt0eXBlIC4gIlxuIjsKLXByaW50ICJcbiI7Ci1wcmludCAiMTIuIEluc3RhbGwgZGV2ZWxvcG1lbnQgZmlsZXMgICAgICAgIiAuICRpbnN0YWxsX2RldmVsIC4gIlxuIjsKLQogY2hkaXIgJHdpbjMyX2RpcjsKICZidWlsZCgpOwogCkBAIC0zNzYsNyArMjg4LDcgQEAKIAogY2hkaXIgJHRvcF9kaXI7CiBjb3B5KCd3aW4zMlxkaXN0XGluc3RhbGxlclxTZXRFblZhci5uc2knLCIkaW5zdGFsbF9iYXNlLyIpIHx8IGRpZSAoIkNvdWxkIG5vdCBjb3B5IGZpbGU6ICQ/Iik7Ci1jb3B5KCd3aW4zMlxkaXN0XGluc3RhbGxlclxuZXQtc25tcC5uc2knLCIkaW5zdGFsbF9iYXNlL25ldC1zbm1wLm5zaS5pbiIpIHx8IGRpZSAoIkNvdWxkIG5vdCBjb3B5IGZpbGU6ICQ/Iik7Citjb3B5KCd3aW4zMlxkaXN0XGluc3RhbGxlclxuZXQtc25tcC5uc2knLCIkaW5zdGFsbF9iYXNlL25ldC1zbm1wLm5zaSIpIHx8IGRpZSAoIkNvdWxkIG5vdCBjb3B5IGZpbGU6ICQ/Iik7CiBjb3B5KCd3aW4zMlxkaXN0XGluc3RhbGxlclxBZGQyUGF0aC5uc2knLCIkaW5zdGFsbF9iYXNlLyIpIHx8IGRpZSAoIkNvdWxkIG5vdCBjb3B5IGZpbGU6ICQ/Iik7CiBjb3B5KCd3aW4zMlxkaXN0XGluc3RhbGxlclxuZXQtc25tcC1oZWFkZXIxLmJtcCcsIiRpbnN0YWxsX2Jhc2UvIikgfHwgZGllICgiQ291bGQgbm90IGNvcHkgZmlsZTogJD8iKTsKIApAQCAtMzkxLDQyICszMDMsMjAgQEAKIG9wZW4gKFRFTVAsICI+JGluc3RhbGxfYmFzZS9ldGMvc25tcC9zbm1wLmNvbmYiKSB8fCBkaWUgKCJDb3VsZCBub3QgY3JlYXRlIGZpbGU6ICQ/Iik7CiBjbG9zZSBURU1QOwogCi0jCi0jIEJ1aWxkIG5ldC1zbm1wLm5zaSBmaWxlCi0jCi0gIHsKLSAgICBteSAkZmlsZV9vdXQgPSAiJGluc3RhbGxfYmFzZS9uZXQtc25tcC5uc2kiOwotICAgIG15ICRmaWxlX2luID0gIiRpbnN0YWxsX2Jhc2UvbmV0LXNubXAubnNpLmluIjsKLSAgCi0gICAgb3BlbiAoRklMRV9PVVQsICI+JGZpbGVfb3V0IikgfHwgZGllICJDYW4ndCBPcGVuICRmaWxlX291dFxuIjsKLSAgICBvcGVuIChGSUxFX0lOLCAiPCRmaWxlX2luIikgfHwgZGllICJDYW4ndCBPcGVuICRmaWxlX2luXG4iOwotICAgIAotICAgIHByaW50ICJjcmVhdGluZyAkZmlsZV9vdXRcbiI7Ci0JICAKLSAgICB3aGlsZSAoPEZJTEVfSU4+KQotICAgIHsKLSAgICAgIGNob21wOwotICAgICAgcy8hZGVmaW5lIFBST0RVQ1RfTUFKX1ZFUlNJT04uKi8hZGVmaW5lIFBST0RVQ1RfTUFKX1ZFUlNJT04gXCIkdmVyc2lvbl9tYWpcIi87Ci0gICAgICBzLyFkZWZpbmUgUFJPRFVDVF9NSU5fVkVSU0lPTi4qLyFkZWZpbmUgUFJPRFVDVF9NSU5fVkVSU0lPTiBcIiR2ZXJzaW9uX21pblwiLzsKLSAgICAgIHMvIWRlZmluZSBQUk9EVUNUX1JFVklTSU9OLiovIWRlZmluZSBQUk9EVUNUX1JFVklTSU9OIFwiJHZlcnNpb25fcmV2XCIvOwotICAgICAgcy8hZGVmaW5lIFBST0RVQ1RfRVhFX1ZFUlNJT04uKi8hZGVmaW5lIFBST0RVQ1RfRVhFX1ZFUlNJT04gXCIkaW5zdGFsbGVyX2V4ZV92ZXJzaW9uXCIvOwotCSAgaWYgKCRFTlZ7TElCfSA9fiAvXFx4NjQvKSB7Ci0gICAgICAgICAgICBzLyFkZWZpbmUgSU5TVEFMTEVSX1BMQVRGT1JNLiovIWRlZmluZSBJTlNUQUxMRVJfUExBVEZPUk0gXCJ4NjRcIi87Ci0gICAgICAgICAgICBzLyFkZWZpbmUgUFJPRFVDVF9FWEVfU1VGRklYLiovIWRlZmluZSBQUk9EVUNUX0VYRV9TVUZGSVggXCIueDY0LmV4ZVwiLzsKLSAgICAgICAgICAgIHMvIWRlZmluZSBXSU4zMl9QTEFURk9STS4qLyFkZWZpbmUgUFJPRFVDVF9FWEVfU1VGRklYIFwieDY0XCIvOwotCSAgfQotCSAgZWxzZSB7Ci0gICAgICAgICAgICBzLyFkZWZpbmUgSU5TVEFMTEVSX1BMQVRGT1JNLiovIWRlZmluZSBJTlNUQUxMRVJfUExBVEZPUk0gXCJ4ODZcIi87Ci0gICAgICAgICAgICBzLyFkZWZpbmUgUFJPRFVDVF9FWEVfU1VGRklYLiovIWRlZmluZSBQUk9EVUNUX0VYRV9TVUZGSVggXCIueDg2LmV4ZSIvOwotICAgICAgICAgICAgcy8hZGVmaW5lIFBST0RVQ1RfRVhFX1NVRkZJWC4qLyFkZWZpbmUgUFJPRFVDVF9FWEVfU1VGRklYIFwiLng4Ni5leGUiLzsKLSAgICAgICAgICAgIHMvIWRlZmluZSBXSU4zMl9QTEFURk9STS4qLyFkZWZpbmUgUFJPRFVDVF9FWEVfU1VGRklYIFwieDg2XCIvOwotCSAgfQotICAKLSAgICAgIHByaW50IEZJTEVfT1VUICRfIC4gIlxuIjsKLSAgICB9Ci0gICAgY2xvc2UgRklMRV9JTjsKLSAgICBjbG9zZSBGSUxFX09VVDsKLSAgfQorcHJpbnQgIlxuXG5Db3B5aW5nIGRvY3VtZW50YXRpb246XG4iOworcHJpbnQgIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiI7CisKKyMgVG8gZG86IHJlcGxhY2UgdGhlIHR3byBsaW5lcyBiZWxvdyB3aXRoIGNvbW1hbmRzIHRoYXQgYnVpbGQgdGhlIC5jaG0gZmlsZS4KK29wZW4gb3V0LCAiPiRpbnN0YWxsX2Jhc2UvZG9jcy9uZXQtc25tcC5jaG0iOworY2xvc2Ugb3V0OworCitwcmludCAiXG5cbkJ1aWxkaW5nIGluc3RhbGxlcjpcbiI7CitwcmludCAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIjsKKworbXkgJHN1ZmZpeCA9ICRFTlZ7TElCfSA9fiAvXFx4NjR8XFxhbWQ2NC8gPyAieDY0IiA6ICJ4ODYiOworaWYgKHN5c3RlbSgiXCIkbWFrZW5zaXNcIiAvRFBST0RVQ1RfTUFKX1ZFUlNJT049XCIkdmVyc2lvbl9tYWpcIiAvRFBST0RVQ1RfTUlOX1ZFUlNJT049XCIkdmVyc2lvbl9taW5cIiAvRFBST0RVQ1RfUkVWSVNJT049XCIkdmVyc2lvbl9yZXZcIiAvRFBST0RVQ1RfRVhFX1ZFUlNJT049XCIkaW5zdGFsbGVyX2V4ZV92ZXJzaW9uXCIgL0RJTlNUQUxMRVJfUExBVEZPUk09XCIkc3VmZml4XCIgXCIkaW5zdGFsbF9iYXNlL25ldC1zbm1wLm5zaVwiIikgIT0gMCkgeworICAgIGRpZSgiQnVpbGRpbmcgaW5zdGFsbGVyIGZhaWxlZCIpOworfQogCiBwcmludCAiXG49PT09PT09XG4iOwogcHJpbnQgIkRvbmUhISFcbiI7CkBAIC00NTcsNiArMzQ3LDI2IEBACiAKICMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIHN1YiBidWlsZCB7CisgIHByaW50ICJcblxuQnVpbGRpbmcgd2l0aCBvcHRpb25zOlxuIjsKKyAgcHJpbnQgIj09PT09PT09PT09PT09PT09PT09PT1cblxuIjsKKyAgcHJpbnQgIjEuICBPcGVuU1NMIHN1cHBvcnQ6ICAgICAgICAgICAgICAgICIgLiAkb3BlbnNzbC4gIlxuIjsKKyAgcHJpbnQgIjIuICBQbGF0Zm9ybSBTREsgc3VwcG9ydDogICAgICAgICAgICIgLiAkc2RrIC4gIlxuIjsKKyAgcHJpbnQgIlxuIjsKKyAgcHJpbnQgIjMuICBJbnN0YWxsIHBhdGg6ICAgICAgICAgICAgICAgICAgICIgLiAkaW5zdGFsbF9iYXNlIC4gIlxuIjsKKyAgcHJpbnQgIjQuICBJbnN0YWxsIGFmdGVyIGJ1aWxkOiAgICAgICAgICAgICIgLiAkaW5zdGFsbCAuICJcbiI7CisgIHByaW50ICJcbiI7CisgIHByaW50ICI1LiAgUGVybCBtb2R1bGVzOiAgICAgICAgICAgICAgICAgICAiIC4gJHBlcmwgLiAiXG4iOworICBwcmludCAiNi4gIEluc3RhbGwgcGVybCBtb2R1bGVzOiAgICAgICAgICAgIiAuICRwZXJsX2luc3RhbGwgLiAiXG4iOworICBwcmludCAiXG4iOworICBwcmludCAiNy4gIFF1aWV0IGJ1aWxkIChsb2dnZWQpOiAgICAgICAgICAgIiAuICRsb2dnaW5nIC4gIlxuIjsKKyAgcHJpbnQgIjguICBEZWJ1ZyBtb2RlOiAgICAgICAgICAgICAgICAgICAgICIgLiAkZGVidWcgLiAiXG4iOworICBwcmludCAiXG4iOworICBwcmludCAiOS4gIElQdjYgdHJhbnNwb3J0cyAocmVxdWlyZXMgU0RLKTogIiAuICRiX2lwdjYgLiAiXG4iOworICBwcmludCAiMTAuIHdpbkV4dERMTCBhZ2VudCAocmVxdWlyZXMgU0RLKTogIiAuICRiX3dpbmV4dGRsbCAuICJcbiI7CisgIHByaW50ICJcbiI7CisgIHByaW50ICIxMS4gTGluayB0eXBlOiAgICAgICAgICAgICAgICAgICAgICAiIC4gJGxpbmt0eXBlIC4gIlxuIjsKKyAgcHJpbnQgIlxuIjsKKyAgcHJpbnQgIjEyLiBJbnN0YWxsIGRldmVsb3BtZW50IGZpbGVzICAgICAgICIgLiAkaW5zdGFsbF9kZXZlbCAuICJcbiI7CiAKICAgJGNUbXAgPSAoJG9wZW5zc2wgZXEgImVuYWJsZWQiID8gIi0td2l0aC1zc2wiIDogIiIgKTsKICAgJGNvbmZpZ09wdHMgPSAiJGNUbXAiOwpAQCAtNDczLDEyICszODMsMTUgQEAKICAgCiAgICMgU2V0IHRvIG5vdCBzZWFyY2ggZm9yIG5vbi1leGlzdGVudCAiLmRlcCIgZmlsZXMKICAgJEVOVntOT19FWFRFUk5BTF9ERVBTfT0iMSI7Ci0gIAorCisgICRFTlZ7SU5DTFVERX0gLj0gIjskb3BlbnNzbGluY2RpciI7CisgICRFTlZ7TElCfSAgICAgLj0gIjskb3BlbnNzbGxpYmRpciI7CisKICAgIyBTZXQgUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBzbyBQZXJsIG1ha2UgdGVzdHMgY2FuIGxvY2F0ZSB0aGUgRExMCi0gICRFTlZ7UEFUSH0gPSAiJGN1cnJlbnRfcHdkXFxiaW5cXCIgLiAoJGRlYnVnIGVxICJlbmFibGVkIiA/ICJkZWJ1ZyIgOiAicmVsZWFzZSIgKSAuICI7JEVOVntQQVRIfSI7CisgICRFTlZ7UEFUSH0gPSBGaWxlOjpTcGVjLT5jYXRkaXIoJHRvcF9kaXIsICJiaW4iLCAkZGVidWcgZXEgImVuYWJsZWQiID8gImRlYnVnIiA6ICJyZWxlYXNlIikgLiAiOyRFTlZ7UEFUSH0iOwogICAKICAgIyBTZXQgTUlCRElSUyBlbnZpcm9ubWVudCB2YXJpYWJsZSBzbyBQZXJsIG1ha2UgdGVzdHMgY2FuIGxvY2F0ZSB0aGUgbWlicwotICBteSAkdGVtcF9taWJkaXIgPSAiJGN1cnJlbnRfcHdkLy4uL21pYnMiOworICBteSAkdGVtcF9taWJkaXIgPSBGaWxlOjpTcGVjLT5jYXRkaXIoJHRvcF9kaXIsICJtaWJzIik7CiAgICR0ZW1wX21pYmRpciA9fiBzL1xcL1wvL2c7CiAgICRFTlZ7TUlCRElSU309JHRlbXBfbWliZGlyOwogICAKZGlmZiAtLWdpdCBhL3dpbjMyL2Rpc3QvaW5zdGFsbGVyL25ldC1zbm1wLm5zaSBiL3dpbjMyL2Rpc3QvaW5zdGFsbGVyL25ldC1zbm1wLm5zaQppbmRleCA1ZTZmYzc1Li4yNDAzZDc3IDEwMDY0NAotLS0gYS93aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2kKKysrIGIvd2luMzIvZGlzdC9pbnN0YWxsZXIvbmV0LXNubXAubnNpCkBAIC0zLDE3ICszLDE0IEBACiAKICFpbmNsdWRlIHg2NC5uc2gKICFpbmNsdWRlICJTZWN0aW9ucy5uc2giCi0KLTsgQnVpbGRpbmcgYSB4ODYgb3IgeDY0IGJpbmFyeQotIWRlZmluZSBJTlNUQUxMRVJfUExBVEZPUk0gIng2NCIJCQorIWluY2x1ZGUgRmlsZUZ1bmMubnNoCishaW5zZXJ0bWFjcm8gR2V0UGFyYW1ldGVycworIWluc2VydG1hY3JvIEdldE9wdGlvbnMKK3ZhciBjbWRMaW5lUGFyYW1ldGVycwogCiA7IEhNIE5JUyBFZGl0IFdpemFyZCBoZWxwZXIgZGVmaW5lcwogIWRlZmluZSBQUk9EVUNUX05BTUUgIk5ldC1TTk1QIgotIWRlZmluZSBQUk9EVUNUX01BSl9WRVJTSU9OICI1IgotIWRlZmluZSBQUk9EVUNUX01JTl9WRVJTSU9OICI1IgotIWRlZmluZSBQUk9EVUNUX1JFVklTSU9OICJwcmUyIgotIWRlZmluZSBQUk9EVUNUX0VYRV9WRVJTSU9OICIxIgotIWRlZmluZSBQUk9EVUNUX0VYRV9TVUZGSVggIi54NjQuZXhlIgorIWRlZmluZSBQUk9EVUNUX0VYRV9TVUZGSVggIi4ke0lOU1RBTExFUl9QTEFURk9STX0uZXhlIgogIWRlZmluZSBQUk9EVUNUX1dFQl9TSVRFICJodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZyIKICFkZWZpbmUgUFJPRFVDVF9ESVJfUkVHS0VZICJTb2Z0d2FyZVxOZXQtU05NUCIKICFkZWZpbmUgUFJPRFVDVF9VTklOU1RfS0VZICJTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxVbmluc3RhbGxcJHtQUk9EVUNUX05BTUV9IgpAQCAtNzUsNyArNzIsNyBAQAogOyBNVUkgZW5kIC0tLS0tLQogCiBOYW1lICIke1BST0RVQ1RfTkFNRX0gJHtQUk9EVUNUX01BSl9WRVJTSU9OfS4ke1BST0RVQ1RfTUlOX1ZFUlNJT059LiR7UFJPRFVDVF9SRVZJU0lPTn0iCi1PdXRGaWxlICIuLlxcbmV0LXNubXAtJHtQUk9EVUNUX01BSl9WRVJTSU9OfS5cCitPdXRGaWxlICJuZXQtc25tcC0ke1BST0RVQ1RfTUFKX1ZFUlNJT059LlwKICAgICAgICAgICAgICAgICAgICR7UFJPRFVDVF9NSU5fVkVSU0lPTn0uXAogICAgICAgICAgICAgICAgICAgJHtQUk9EVUNUX1JFVklTSU9OfVwKICAgICAgICAgICAgICAgICAgIC0ke1BST0RVQ1RfRVhFX1ZFUlNJT059XApAQCAtMTAxLDExICs5OCw2IEBACiAgIEZpbGUgIlJFQURNRS50eHQiCiAgIFNldE91dFBhdGggIiRJTlNURElSXGJpbiIKIAotICBGaWxlICJiaW5cbXN2Y205MC5kbGwiCi0gIEZpbGUgImJpblxtc3ZjcDkwLmRsbCIKLSAgRmlsZSAiYmluXG1zdmNyOTAuZGxsIgotICBGaWxlICJiaW5cTWljcm9zb2Z0LlZDOTAuQ1JULm1hbmlmZXN0IgotCiAgIEZpbGUgImJpblxuZXRzbm1wLmRsbCIKICAgRmlsZSAiYmluXGVuY29kZV9rZXljaGFuZ2UuZXhlIgogICBGaWxlICJiaW5cc25tcHZhY20uZXhlIgpAQCAtMTMyLDExICsxMjQsNiBAQAogICBGaWxlICJSRUFETUUudHh0IgogICBTZXRPdXRQYXRoICIkSU5TVERJUlxiaW4iCiAKLSAgRmlsZSAiYmluXG1zdmNtOTAuZGxsIgotICBGaWxlICJiaW5cbXN2Y3A5MC5kbGwiCi0gIEZpbGUgImJpblxtc3ZjcjkwLmRsbCIKLSAgRmlsZSAiYmluXE1pY3Jvc29mdC5WQzkwLkNSVC5tYW5pZmVzdCIKLQogICBGaWxlICJiaW4uc3NsXG5ldHNubXAuZGxsIgogICBGaWxlICJiaW4uc3NsXGVuY29kZV9rZXljaGFuZ2UuZXhlIgogICBGaWxlICJiaW4uc3NsXHNubXB2YWNtLmV4ZSIKQEAgLTIwOCwxMSArMTk1LDYgQEAKICAgICA7IERlbGV0ZSBhZ2VudCBvdGhlcndpc2UgcmUtaW5zdGFsbGluZyBhIGRpZmZlcmVudCBhZ2VudCBtYXkgbm90IHdvcmsgYmVjYXVzZSBvZiBkYXRlIHN0YW1wcwogICAgIERlbGV0ZSAiJElOU1RESVJcYmluXHNubXBkLmV4ZSIgIAogCi0gICAgRmlsZSAiYmluXG1zdmNtOTAuZGxsIgotICAgIEZpbGUgImJpblxtc3ZjcDkwLmRsbCIKLSAgICBGaWxlICJiaW5cbXN2Y3I5MC5kbGwiCi0gICAgRmlsZSAiYmluXE1pY3Jvc29mdC5WQzkwLkNSVC5tYW5pZmVzdCIKLQogICAgIFN0ckNtcCAkb3BlblNTTCAiZmFsc2UiIFNFQzAyX25vT3BlblNTTCBTRUMwMl9PcGVuU1NMCiAgICAgU0VDMDJfbm9PcGVuU1NMOgogICAgICAgRmlsZSAiYmluXHNubXBkLmV4ZSIKQEAgLTIzMyw2ICsyMTUsOCBAQAogICAgIEZpbGUgInVucmVnaXN0ZXJhZ2VudC5iYXQiCiAgICAgQ2FsbCBDcmVhdGVBZ2VudEJhdHMKIAorCUNsZWFyRXJyb3JzCisJU3RyQ21wICRJQ09OU19HUk9VUCAiIiBTRUMwMl9Ob1NlcnZpY2UKICAgICBDcmVhdGVEaXJlY3RvcnkgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlIgogICAgIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxSZWdpc3RlciBBZ2VudCBTZXJ2aWNlLmxuayIgIiRJTlNURElSXHJlZ2lzdGVyYWdlbnQuYmF0IgogICAgIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxVbnJlZ2lzdGVyIEFnZW50IFNlcnZpY2UubG5rIiAiJElOU1RESVJcdW5yZWdpc3RlcmFnZW50LmJhdCIKQEAgLTI0OCwxMSArMjMyLDYgQEAKICAgICA7IERlbGV0ZSBhZ2VudCBvdGhlcndpc2UgcmUtaW5zdGFsbGluZyBhIGRpZmZlcmVudCBhZ2VudCBtYXkgbm90IHdvcmsgYmVjYXVzZSBvZiBkYXRlIHN0YW1wcwogICAgIERlbGV0ZSAiJElOU1RESVJcYmluXHNubXBkLmV4ZSIgIAogCi0gICAgRmlsZSAiYmluXG1zdmNtOTAuZGxsIgotICAgIEZpbGUgImJpblxtc3ZjcDkwLmRsbCIKLSAgICBGaWxlICJiaW5cbXN2Y3I5MC5kbGwiCi0gICAgRmlsZSAiYmluXE1pY3Jvc29mdC5WQzkwLkNSVC5tYW5pZmVzdCIKLQogICAgIFN0ckNtcCAkb3BlblNTTCAiZmFsc2UiIFNFQzAzX25vT3BlblNTTCBTRUMwM19PcGVuU1NMCiAgICAgU0VDMDNfbm9PcGVuU1NMOgogICAgICAgRmlsZSAvb25hbWU9c25tcGQuZXhlICJiaW5cc25tcGQtd2luRXh0RExMLmV4ZSIKQEAgLTI3Myw2ICsyNTIsOCBAQAogICAgIEZpbGUgInVucmVnaXN0ZXJhZ2VudC5iYXQiCiAgICAgQ2FsbCBDcmVhdGVBZ2VudEJhdHMKIAorCUNsZWFyRXJyb3JzCisJU3RyQ21wICRJQ09OU19HUk9VUCAiIiBTRUMwM19Ob1NlcnZpY2UKICAgICBDcmVhdGVEaXJlY3RvcnkgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlIgogICAgIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxSZWdpc3RlciBBZ2VudCBTZXJ2aWNlLmxuayIgIiRJTlNURElSXHJlZ2lzdGVyYWdlbnQuYmF0IgogICAgIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxVbnJlZ2lzdGVyIEFnZW50IFNlcnZpY2UubG5rIiAiJElOU1RESVJcdW5yZWdpc3RlcmFnZW50LmJhdCIKQEAgLTI4OSwxMSArMjcwLDYgQEAKIAogICBTdHJDbXAgJG9wZW5TU0wgImZhbHNlIiBTRUMwNF9ub09wZW5TU0wgU0VDMDRfT3BlblNTTAogCi0gIEZpbGUgImJpblxtc3ZjbTkwLmRsbCIKLSAgRmlsZSAiYmluXG1zdmNwOTAuZGxsIgotICBGaWxlICJiaW5cbXN2Y3I5MC5kbGwiCi0gIEZpbGUgImJpblxNaWNyb3NvZnQuVkM5MC5DUlQubWFuaWZlc3QiCi0KICAgU0VDMDRfbm9PcGVuU1NMOgogICBGaWxlICJiaW5cc25tcHRyYXBkLmV4ZSIKICAgZ290byBTRUMwNF9jb250aW51ZQpAQCAtMzE3LDYgKzI5Myw4IEBACiAgIEZpbGUgInVucmVnaXN0ZXJ0cmFwZC5iYXQiCiAgIENhbGwgQ3JlYXRlVHJhcGRCYXRzCiAgIAorICBDbGVhckVycm9ycworICBTdHJDbXAgJElDT05TX0dST1VQICIiIE5vVHJhcFNlcnZpY2UKICAgQ3JlYXRlU2hvcnRDdXQgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlXFJlZ2lzdGVyIFRyYXAgU2VydmljZS5sbmsiICIkSU5TVERJUlxyZWdpc3RlcnRyYXBkLmJhdCIKICAgQ3JlYXRlU2hvcnRDdXQgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlXFVucmVnaXN0ZXIgVHJhcCBTZXJ2aWNlLmxuayIgIiRJTlNURElSXHVucmVnaXN0ZXJ0cmFwZC5iYXQiCiAgIApAQCAtMzc4LDEwICszNTYsMTQgQEAKIFNlY3Rpb25FbmQKIAogU2VjdGlvbiAtQWRkaXRpb25hbEljb25zCisgIENsZWFyRXJyb3JzCisgIFN0ckNtcCAkSUNPTlNfR1JPVVAgIiIgbm9BZGRpdGlvbmFsSXRlbXMKICAgQ3JlYXRlRGlyZWN0b3J5ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVAiCiAgIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcVW5pbnN0YWxsLmxuayIgIiRJTlNURElSXHVuaW5zdC5leGUiCiAgIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcTmV0LVNOTVAgSGVscC5sbmsiICIkSU5TVERJUlxkb2NzXE5ldC1TTk1QLmNobSIKICAgQ3JlYXRlU2hvcnRDdXQgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxSRUFETUUubG5rIiAiJElOU1RESVJcUkVBRE1FLnR4dCIKKyAgCisgIG5vQWRkaXRpb25hbEl0ZW1zOgogU2VjdGlvbkVuZAogCiBTZWN0aW9uIC1Qb3N0CkBAIC02ODksNiArNjcxLDE2IEBACiBTZXRSZWdWaWV3IDY0CQk7IFByZXZlbnQgdGhlIGluc3RhbGxlciBmcm9tIHVzaW5nIHRoZSBXb3c2NDMyTm9kZSBIS0xNIHN1YmtleSBvbiA2NC1iaXQgc3lzdGVtcwogUHVzaCAkMAogUHVzaCAkUjAKK1B1c2ggJFIxCisKKzsgQ2hlY2sgZm9yIC8/IGNvbW1hbmQgbGluZSB1c2FnZSBvcHRpb24KKyR7R2V0UGFyYW1ldGVyc30gJFIxCitTdHJDcHkgJGNtZExpbmVQYXJhbWV0ZXJzICRSMQorQ2xlYXJFcnJvcnMKKyR7R2V0T3B0aW9uc30gJGNtZExpbmVQYXJhbWV0ZXJzICcvPycgJFIwCitJZkVycm9ycyArMyAwCitNZXNzYWdlQm94IE1CX09LICJPcHRpb25zOiRcbiAgXFN0YXJ0TWVudT17R3JvdXBOYW1lfSRcbiAgXEFnZW50PXN0YW5kYXJkfGV4dERMTHxub25lICAgKGRlZmF1bHQgc3RhbmRhcmQpJFxuICBcbm9UcmFwZCRcdChkZWZhdWx0IFxUcmFwZCkkXG4gIFxub1BlcmwkXHQkXHQoZGVmYXVsdCBcUGVybCkkXG4gIFxEZXYkXHQkXHQoZGVmYXVsdCBcbm9EZXYpJFxuICBcT3BlblNTTCRcdChkZWZhdWx0IFxub09wZW5TU0wpIgorQWJvcnQKIAogOyBNYWtlIHN1cmUgd2UncmUgcnVubmluZyBXaW5kb3dzIDIwMDAgKDUuMCkgb3IgaGlnaGVyCiBDbGVhckVycm9ycwpAQCAtNzQ2LDEwICs3MzgsMTIxIEBACiA7IFN0b3JlIGN1cnJlbnQgc3RhdHVzIG9mIFNFQzA3IChTU0wpLiAgVXNlZCBmb3IgY2hlY2tpbmcgaWYgT3BlblNTTCBpcyBpbnN0YWxsZWQuCiBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwN30gJFI5CiAKKzsgcHJvY2VzcyBvdGhlciBjb21tYW5kIGxpbmUgcGFyYW1ldGVycworQ2FsbCBwYXJzZVBhcmFtZXRlcnMKKwogUG9wICRSMAogUG9wICQwCiBGdW5jdGlvbkVuZAogCitGdW5jdGlvbiBwYXJzZVBhcmFtZXRlcnMKKyAgUHVzaCAkUjAKKyAgUHVzaCAkMAorCisgIDsgL1N0YXJ0TWVudT0KKyAgQ2xlYXJFcnJvcnMKKyAgJHtHZXRPcHRpb25zfSAkY21kTGluZVBhcmFtZXRlcnMgIi9TdGFydE1lbnU9IiAgJFIwCisgIElmRXJyb3JzICsyIDAKKyAgU3RyQ3B5ICRJQ09OU19HUk9VUCAkUjAKKworICA7IC97bm8sfVRyYXBkICAKKyAgQ2xlYXJFcnJvcnMKKyAgJHtHZXRPcHRpb25zfSAkY21kTGluZVBhcmFtZXRlcnMgIi9UcmFwZCIgICRSMAorICBJZkVycm9ycyArNCAwCisgIFNlY3Rpb25HZXRGbGFncyAke1NFQzA0fSAkMAorICBJbnRPcCAkMCAkMCB8ICR7U0ZfU0VMRUNURUR9CisgIFNlY3Rpb25TZXRGbGFncyAke1NFQzA0fSAkMAorICBDbGVhckVycm9ycworICAke0dldE9wdGlvbnN9ICRjbWRMaW5lUGFyYW1ldGVycyAiL25vVHJhcGQiICAkUjAKKyAgSWZFcnJvcnMgKzQgMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwNH0gJDAKKyAgSW50T3AgJDAgJDAgJiAke1NFQ1RJT05fT0ZGfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwNH0gJDAKKworICA7IC97bm8sfVBlcmwgIAorICBDbGVhckVycm9ycworICAke0dldE9wdGlvbnN9ICRjbWRMaW5lUGFyYW1ldGVycyAiL1BlcmwiICAkUjAKKyAgSWZFcnJvcnMgKzQgMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwNX0gJDAKKyAgSW50T3AgJDAgJDAgfCAke1NGX1NFTEVDVEVEfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwNX0gJDAKKyAgQ2xlYXJFcnJvcnMKKyAgJHtHZXRPcHRpb25zfSAkY21kTGluZVBhcmFtZXRlcnMgIi9ub1BlcmwiICAkUjAKKyAgSWZFcnJvcnMgKzQgMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwNX0gJDAKKyAgSW50T3AgJDAgJDAgJiAke1NFQ1RJT05fT0ZGfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwNX0gJDAKKworICA7IC97bm8sfURldiAgCisgIENsZWFyRXJyb3JzCisgICR7R2V0T3B0aW9uc30gJGNtZExpbmVQYXJhbWV0ZXJzICIvRGV2IiAgJFIwCisgIElmRXJyb3JzICs0IDAKKyAgU2VjdGlvbkdldEZsYWdzICR7U0VDMDZ9ICQwCisgIEludE9wICQwICQwIHwgJHtTRl9TRUxFQ1RFRH0KKyAgU2VjdGlvblNldEZsYWdzICR7U0VDMDZ9ICQwCisgIENsZWFyRXJyb3JzCisgICR7R2V0T3B0aW9uc30gJGNtZExpbmVQYXJhbWV0ZXJzICIvbm9EZXYiICAkUjAKKyAgSWZFcnJvcnMgKzQgMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwNn0gJDAKKyAgSW50T3AgJDAgJDAgJiAke1NFQ1RJT05fT0ZGfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwNn0gJDAKKworICA7IC97bm8sfU9wZW5TU0wgIAorICBDbGVhckVycm9ycworICAke0dldE9wdGlvbnN9ICRjbWRMaW5lUGFyYW1ldGVycyAiL09wZW5TU0wiICAkUjAKKyAgSWZFcnJvcnMgKzQgMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwN30gJDAKKyAgSW50T3AgJDAgJDAgfCAke1NGX1NFTEVDVEVEfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwN30gJDAKKyAgQ2xlYXJFcnJvcnMKKyAgJHtHZXRPcHRpb25zfSAkY21kTGluZVBhcmFtZXRlcnMgIi9ub09wZW5TU0wiICAkUjAKKyAgSWZFcnJvcnMgKzQgMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwN30gJDAKKyAgSW50T3AgJDAgJDAgJiAke1NFQ1RJT05fT0ZGfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwN30gJDAKKworICA7IC9BZ2VudD0gIAorICBDbGVhckVycm9ycworICAke0dldE9wdGlvbnN9ICRjbWRMaW5lUGFyYW1ldGVycyAiL0FnZW50PSIgICRSMAorICBJZkVycm9ycyBlbmRPZkFnZW50IDAKKyAgOyAvQWdlbnQ9bm9uZQorICBDbGVhckVycm9ycworICBTdHJDbXAgJFIwICJub25lIiAwIHN0YW5kYXJkQWdlbnQKKyAgU2VjdGlvbkdldEZsYWdzICR7U0VDMDJ9ICQwCisgIEludE9wICQwICQwICYgJHtTRUNUSU9OX09GRn0KKyAgU2VjdGlvblNldEZsYWdzICR7U0VDMDJ9ICQwCisgIFNlY3Rpb25HZXRGbGFncyAke1NFQzAzfSAkMAorICBJbnRPcCAkMCAkMCAmICR7U0VDVElPTl9PRkZ9CisgIFNlY3Rpb25TZXRGbGFncyAke1NFQzAzfSAkMAorICBHb3RvIGVuZE9mQWdlbnQKKyAgCisgIHN0YW5kYXJkQWdlbnQ6CisgIDsgL0FnZW50PXN0YW5kYXJkCisgIENsZWFyRXJyb3JzCisgIFN0ckNtcCAkUjAgInN0YW5kYXJkIiAwIHdpbkV4dERMTEFnZW50CisgIFNlY3Rpb25HZXRGbGFncyAke1NFQzAyfSAkMAorICBJbnRPcCAkMCAkMCB8ICR7U0ZfU0VMRUNURUR9CisgIFNlY3Rpb25TZXRGbGFncyAke1NFQzAyfSAkMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwM30gJDAKKyAgSW50T3AgJDAgJDAgJiAke1NFQ1RJT05fT0ZGfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwM30gJDAKKyAgR290byBlbmRPZkFnZW50CisgIAorICB3aW5FeHRETExBZ2VudDoKKyAgOyAvQWdlbnQ9ZXh0RExMCisgIENsZWFyRXJyb3JzCisgIFN0ckNtcCAkUjAgImV4dERMTCIgMCBlbmRPZkFnZW50CisgIFNlY3Rpb25HZXRGbGFncyAke1NFQzAyfSAkMAorICBJbnRPcCAkMCAkMCAmICR7U0VDVElPTl9PRkZ9CisgIFNlY3Rpb25TZXRGbGFncyAke1NFQzAyfSAkMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwM30gJDAKKyAgSW50T3AgJDAgJDAgfCAke1NGX1NFTEVDVEVEfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwM30gJDAKKyAgZW5kT2ZBZ2VudDoKKyAgCisgIFBvcCAkUjAgIAorRnVuY3Rpb25FbmQKKwogRnVuY3Rpb24gLm9uU2VsQ2hhbmdlCiAKIDsgICFpbnNlcnRtYWNybyBTdGFydFJhZGlvQnV0dG9ucyAkMgpAQCAtODM5LDExICs5NDIsOCBAQAogICBEZWxldGUgIiRJTlNURElSXGRvY3NcQ09QWUlORyIKICAgRGVsZXRlICIkSU5TVERJUlxkb2NzXE5ldC1TTk1QLmNobSIKICAgRGVsZXRlICIkSU5TVERJUlxiaW5cbmV0LXNubXAtcGVybC10ZXN0LnBsIgotCi0gIERlbGV0ZSAiJElOU1RESVJcYmluXG1zdmNtOTAuZGxsIgotICBEZWxldGUgIiRJTlNURElSXGJpblxtc3ZjcDkwLmRsbCIKLSAgRGVsZXRlICIkSU5TVERJUlxiaW5cbXN2Y3I5MC5kbGwiCi0gIERlbGV0ZSAiJElOU1RESVJcYmluXE1pY3Jvc29mdC5WQzkwLkNSVC5tYW5pZmVzdCIKKyAgOyBpZGVhbGx5IHdlIHNob3VsZCBjaGVjayB3aGV0aGVyIHRoaXMgZmlsZSBoYXMgY2hhbmdlZAorICBEZWxldGUgIiRJTlNURElSXGV0Y1xzbm1wXHNubXAuY29uZiIKIAogICBEZWxldGUgIiRJTlNURElSXGJpblxzbm1wdHJhcGQuZXhlIgogICBEZWxldGUgIiRJTlNURElSXGJpblxzbm1wZC5leGUiCkBAIC04OTMsNiArOTkzLDcgQEAKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXHNubXBjb25mLWRhdGFcc25tcHRyYXBkLWRhdGFcbG9nZ2luZyIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXHNubXBjb25mLWRhdGFcc25tcHRyYXBkLWRhdGFccnVudGltZSIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcQUdFTlRYLU1JQi50eHQiCisgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXEJSSURHRS1NSUIudHh0IgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWlic1xESVNNQU4tRVZFTlQtTUlCLnR4dCIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcRElTTUFOLUVYUFJFU1NJT04tTUlCLnR4dCIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcRElTTUFOLU5TTE9PS1VQLU1JQi50eHQiCkBAIC05MjcsNiArMTAyOCw3IEBACiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXE5FVC1TTk1QLU1JQi50eHQiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXE5FVC1TTk1QLU1PTklUT1ItTUlCLnR4dCIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcTkVULVNOTVAtUEFTUy1NSUIudHh0IgorICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWlic1xORVQtU05NUC1QRVJJT0RJQy1OT1RJRlktTUlCLnR4dCIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcTkVULVNOTVAtU1lTVEVNLU1JQi50eHQiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXE5FVC1TTk1QLVRDLnR4dCIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcTkVULVNOTVAtVkFDTS1NSUIudHh0IgpAQCAtOTQ0LDYgKzEwNDYsOCBAQAogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWlic1xTTk1QLU5PVElGSUNBVElPTi1NSUIudHh0IgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWlic1xTTk1QLVBST1hZLU1JQi50eHQiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXFNOTVAtVEFSR0VULU1JQi50eHQiCisgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXFNOTVAtVExTLVRNLU1JQi50eHQiCisgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXFNOTVAtVFNNLU1JQi50eHQiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXFNOTVAtVVNFUi1CQVNFRC1TTS1NSUIudHh0IgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWlic1xTTk1QLVVTTS1BRVMtTUlCLnR4dCIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcU05NUC1VU00tREgtT0JKRUNUUy1NSUIudHh0IgpAQCAtOTY1LDggKzEwNjksOCBAQAogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWlic1xVQ0QtU05NUC1NSUItT0xELnR4dCIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcVURQLU1JQi50eHQiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXC5pbmRleCIKKyAgRGVsZXRlICIkSU5TVERJUlxzbm1wXHBlcnNpc3RcbWliX2luZGV4ZXNcMCIKIAotICBTZXRPdXRQYXRoICIkSU5TVERJUlxzaGFyZVxzbm1wIgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWliMmMuYWNjZXNzX2Z1bmN0aW9ucy5jb25mIgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWliMmMuYXJyYXktdXNlci5jb25mIgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWliMmMuY2hlY2tfdmFsdWVzLmNvbmYiCkBAIC05OTEsNyArMTA5NSw2IEBACiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy5zY2FsYXIuY29uZiIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLnRhYmxlX2RhdGEuY29uZiIKIAotICBTZXRPdXRQYXRoICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLWRhdGEiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy1kYXRhXGRlZmF1bHQtbWZkLXRvcC5tMmMiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy1kYXRhXGRldGFpbHMtZW51bXMubTJpIgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWliMmMtZGF0YVxkZXRhaWxzLW5vZGUubTJpIgpAQCAtMTAzNCw3ICsxMTM3LDcgQEAKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLWRhdGFcbWZkLWludGVyYWN0aXZlLXNldHVwLm0yYyIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLWRhdGFcbWZkLWludGVyZmFjZS5tMmMiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy1kYXRhXG1mZC1tYWtlZmlsZS5tMm0iCi0gIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy1kYXRhXG1mZC1wZXJzaXN0ZW5jZS5tMm0iCisgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy1kYXRhXG1mZC1wZXJzaXN0ZW5jZS5tMmkiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy1kYXRhXG1mZC1yZWFkbWUubTJjIgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWliMmMtZGF0YVxtZmQtdG9wLm0yYyIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLWRhdGFcbm9kZS1nZXQubTJpIgpAQCAtMTA1OCw3ICsxMTYxLDYgQEAKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLWRhdGFcc3ludGF4LVJvd1N0YXR1cy12YXJiaW5kLXZhbGlkYXRlLm0yaSIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLWRhdGFcc3ludGF4LVN0b3JhZ2VUeXBlLWRlcGVuZGVuY2llcy5tMmkiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy1kYXRhXHN5bnRheC1UZXN0QW5kSW5jci1nZXQubTJpIgotICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWliMmMtZGF0YVwiCiAKICAgRGVsZXRlICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcTmV0LVNOTVAgSGVscC5sbmsiCiAgIERlbGV0ZSAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQXFVuaW5zdGFsbC5sbmsiCkBAIC0xMjcwLDggKzEzNzIsNiBAQAogICBEZWxldGUgIiRJTlNURElSXGxpYlxuZXRzbm1wbWlicy5saWIiCiAgIERlbGV0ZSAiJElOU1RESVJcbGliXG5ldHNubXAuZXhwIgogICAKLSAgUk1EaXIgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlIgotICBSTURpciAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQIgogICBSTURpciAiJElOU1RESVJccGVybFx4ODYiCiAgIFJNRGlyICIkSU5TVERJUlxwZXJsIgogICBSTURpciAiJElOU1RESVJcbGliIgpAQCAtMTI5NSw2ICsxMzk1LDcgQEAKICAgUk1EaXIgIiRJTlNURElSXHNoYXJlIgogCiAgIFJNRGlyICIkSU5TVERJUlx0ZW1wIgorICBSTURpciAiJElOU1RESVJcc25tcFxwZXJzaXN0XG1pYl9pbmRleGVzIgogICBSTURpciAiJElOU1RESVJcc25tcFxwZXJzaXN0IgogICBSTURpciAiJElOU1RESVJcc25tcCIKICAgUk1EaXIgIiRJTlNURElSXGV0Y1xzbm1wIgpAQCAtMTMwNCw2ICsxNDA1LDMxIEBACiAgIFJNRGlyICIkSU5TVERJUlxpbmNsdWRlIgogICBSTURpciAiJElOU1RESVJcbG9nIgogICBSTURpciAiJElOU1RESVIiCisgIAorICA7IFN0YXJ0IE1lbnUgZW50cmllcyBtYXkgaGF2ZSBiZWVuIGluc3RhbGxlZCBmb3IgdGhlIGN1cnJlbnQgdXNlciBvbmx5LAorICA7IG9yIGZvciBBbGwgVXNlcnMuICBTbyBsZXQncyBkZWxldGUgYm90aCBzZXRzLi4uLgorICBTZXRTaGVsbFZhckNvbnRleHQgY3VycmVudAorICBEZWxldGUgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxVbmluc3RhbGwubG5rIgorICBEZWxldGUgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxOZXQtU05NUCBIZWxwLmxuayIKKyAgRGVsZXRlICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcUkVBRE1FLmxuayIKKyAgRGVsZXRlICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxSZWdpc3RlciBBZ2VudCBTZXJ2aWNlLmxuayIKKyAgRGVsZXRlICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxVbnJlZ2lzdGVyIEFnZW50IFNlcnZpY2UubG5rIgorICBEZWxldGUgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlXFJlZ2lzdGVyIFRyYXAgU2VydmljZS5sbmsiCisgIERlbGV0ZSAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQXFNlcnZpY2VcVW5yZWdpc3RlciBUcmFwIFNlcnZpY2UubG5rIgorICBSTURpciAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQXFNlcnZpY2UiCisgIFJNRGlyICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVAiCisKKyAgU2V0U2hlbGxWYXJDb250ZXh0IGFsbAorICBEZWxldGUgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxVbmluc3RhbGwubG5rIgorICBEZWxldGUgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxOZXQtU05NUCBIZWxwLmxuayIKKyAgRGVsZXRlICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcUkVBRE1FLmxuayIKKyAgRGVsZXRlICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxSZWdpc3RlciBBZ2VudCBTZXJ2aWNlLmxuayIKKyAgRGVsZXRlICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxVbnJlZ2lzdGVyIEFnZW50IFNlcnZpY2UubG5rIgorICBEZWxldGUgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlXFJlZ2lzdGVyIFRyYXAgU2VydmljZS5sbmsiCisgIERlbGV0ZSAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQXFNlcnZpY2VcVW5yZWdpc3RlciBUcmFwIFNlcnZpY2UubG5rIgorICBSTURpciAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQXFNlcnZpY2UiCisgIFJNRGlyICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVAiCisgIAogICA7IERlbGV0ZSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAgIDtQdXNoICJTTk1QQ09ORlBBVEgiCiAgIDtDYWxsIHVuLkRlbGV0ZUVudlN0cgpAQCAtMTMyMSwxMyArMTQ0NywyMyBAQAogCiBGdW5jdGlvbiBJc1NTTEluc3RhbGxlZAogICBQdXNoICRSMAotICBSZWFkRW52U3RyICRSMCAiT1BFTlNTTF9DT05GIgotICBJZkZpbGVFeGlzdHMgIiRSMCIgMCBub1NTTAotICAgIEdvdG8gY29udGludWVJbnN0YWxsCisgIFB1c2ggJFIxCisKKyAgR2V0RExMVmVyc2lvbiBsaWJlYXkzMi5kbGwgJFIwICRSMQorICBJZkVycm9ycyBub1NTTAorCisgIDsgQ29udGludWUgaW5zdGFsbGluZyBpZiB0aGUgRExMIHZlcnNpb24gaXMgPj0gMS4wLjAuMAorICBJbnRDbXBVIDY1NTM2ICRSMCBjb250aW51ZUluc3RhbGwgY29udGludWVJbnN0YWxsCisKKyAgTWVzc2FnZUJveCBNQl9PSyAiVGhpcyBwYWNrYWdlIGlzIGtub3duIG5vdCB0byB3b3JrIHdpdGggT3BlblNTTCB2ZXJzaW9ucyBiZWZvcmUgMS4wLjAuICBQbGVhc2UgaW5zdGFsbCB0aGUgbGF0ZXN0IE9wZW5TU0wgdmVyc2lvbiBmcm9tIGh0dHA6Ly93d3cuc2xwcm93ZWIuY29tL3Byb2R1Y3RzL1dpbjMyT3BlblNTTC5odG1sIGFuZCB0cnkgYWdhaW4uIgorICBRdWl0CisKICAgbm9TU0w6CiAgICAgTWVzc2FnZUJveCBNQl9ZRVNOT3xNQl9JQ09OUVVFU1RJT04gIk9wZW5TU0wgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGluc3RhbGxlZC4gIE9wZW5TU0wgaXMgcmVxdWlyZWQgZm9yIHRoaXMgaW5zdGFsbGF0aW9uIG9mIE5ldC1TTk1QLiAgUGxlYXNlIGluc3RhbGwgT3BlblNTTCBmcm9tIGh0dHA6Ly93d3cuc2xwcm93ZWIuY29tL3Byb2R1Y3RzL1dpbjMyT3BlblNTTC5odG1sIGFuZCB0cnkgYWdhaW4uICBXb3VsZCB5b3UgbGlrZSB0byBjb250aW51ZSBpbnN0YWxsaW5nIGFueXdheXM/IiBJRFlFUyBjb250aW51ZUluc3RhbGwKICAgUXVpdAorICAKICAgY29udGludWVJbnN0YWxsOgorICBQb3AgJFIxCiAgIFBvcCAkUjAKIEZ1bmN0aW9uRW5kCiAKZGlmZiAtLWdpdCBhL3dpbjMyL2VuY29kZV9rZXljaGFuZ2UvZW5jb2RlX2tleWNoYW5nZS5kc3AgYi93aW4zMi9lbmNvZGVfa2V5Y2hhbmdlL2VuY29kZV9rZXljaGFuZ2UuZHNwCmluZGV4IDVlMTkzNjYuLjVhMjUyZjUgMTAwNjQ0Ci0tLSBhL3dpbjMyL2VuY29kZV9rZXljaGFuZ2UvZW5jb2RlX2tleWNoYW5nZS5kc3AKKysrIGIvd2luMzIvZW5jb2RlX2tleWNoYW5nZS9lbmNvZGVfa2V5Y2hhbmdlLmRzcApAQCAtNTAsNyArNTAsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL2VuY29kZV9rZXljaGFuZ2UuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL2VuY29kZV9rZXljaGFuZ2UuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQogDQogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImVuY29kZV9rZXljaGFuZ2UgLSBXaW4zMiBEZWJ1ZyINCiANCkBAIC03NCw3ICs3NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9lbmNvZGVfa2V5Y2hhbmdlLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL2VuY29kZV9rZXljaGFuZ2UuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQogDQogIUVORElGIA0KIA0KZGlmZiAtLWdpdCBhL3dpbjMyL2xpYmFnZW50L01ha2VmaWxlLmluIGIvd2luMzIvbGliYWdlbnQvTWFrZWZpbGUuaW4KaW5kZXggMzBhNmNmNi4uYWJjZDgyZSAxMDA2NDQKLS0tIGEvd2luMzIvbGliYWdlbnQvTWFrZWZpbGUuaW4KKysrIGIvd2luMzIvbGliYWdlbnQvTWFrZWZpbGUuaW4KQEAgLTM1LDYgKzM1LDcgQEAKIAkiJChJTlRESVIpXHNjYWxhcl9ncm91cC5vYmoiIFwKIAkiJChJTlRESVIpXHNlcmlhbGl6ZS5vYmoiIFwKIAkiJChJTlRESVIpXHNubXBfYWdlbnQub2JqIiBcCisJIiQoSU5URElSKVxzbm1wX2dldF9zdGF0aXN0aWMub2JqIiBcCiAJIiQoSU5URElSKVxzbm1wX3ZhcnMub2JqIiBcCiAJIiQoSU5URElSKVxzdGFzaF9jYWNoZS5vYmoiIFwKIAkiJChJTlRESVIpXHN0YXNoX3RvX25leHQub2JqIiBcCkBAIC0yMzYsNiArMjM3LDEyIEBACiAJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQogCiAKK1NPVVJDRT0uLlwuLlxhZ2VudFxoZWxwZXJzXHNubXBfZ2V0X3N0YXRpc3RpYy5jCisKKyIkKElOVERJUilcc25tcF9nZXRfc3RhdGlzdGljLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKKwogU09VUkNFPS4uXC4uXGFnZW50XGhlbHBlcnNcc3Rhc2hfY2FjaGUuYwogCiAiJChJTlRESVIpXHN0YXNoX2NhY2hlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKZGlmZiAtLWdpdCBhL3dpbjMyL2xpYmFnZW50L2xpYmFnZW50LmRzcCBiL3dpbjMyL2xpYmFnZW50L2xpYmFnZW50LmRzcAppbmRleCA4OTJlOGQzLi42MzY0MmMyIDEwMDY0NAotLS0gYS93aW4zMi9saWJhZ2VudC9saWJhZ2VudC5kc3AKKysrIGIvd2luMzIvbGliYWdlbnQvbGliYWdlbnQuZHNwCkBAIC0xNzcsNiArMTc3LDEwIEBACiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCiANCitTT1VSQ0U9Li5cLi5cYWdlbnRcaGVscGVyc1xzbm1wX2dldF9zdGF0aXN0aWMuYw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KIFNPVVJDRT0uLlwuLlxhZ2VudFxoZWxwZXJzXHN0YXNoX2NhY2hlLmMNCiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCmRpZmYgLS1naXQgYS93aW4zMi9saWJzbm1wL01ha2VmaWxlLmluIGIvd2luMzIvbGlic25tcC9NYWtlZmlsZS5pbgppbmRleCA1MWY1ZDRmLi45OGQ4M2M4IDEwMDY0NAotLS0gYS93aW4zMi9saWJzbm1wL01ha2VmaWxlLmluCisrKyBiL3dpbjMyL2xpYnNubXAvTWFrZWZpbGUuaW4KQEAgLTE3LDcgKzE3LDYgQEAKIAkiJChJTlRESVIpXGNhbGxiYWNrLm9iaiIgXAogCSIkKElOVERJUilcY2hlY2tfdmFyYmluZC5vYmoiIFwKIAkiJChJTlRESVIpXGNsb3NlZGlyLm9iaiIgXAotCSIkKElOVERJUilcY211X2NvbXBhdC5vYmoiIFwKIAkiJChJTlRESVIpXGNvbnRhaW5lci5vYmoiIFwKIAkiJChJTlRESVIpXGNvbnRhaW5lcl9iaW5hcnlfYXJyYXkub2JqIiBcCiAJIiQoSU5URElSKVxjb250YWluZXJfaXRlcmF0b3Iub2JqIiBcCkBAIC05NSw5ICs5NCw5IEBACiAKIENQUD1jbC5leGUKICFJRiAgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiCi1DUFBfUFJPSj0vbm9sb2dvIC9NRCAvVzMgL0VIc2MgL1ppIC9PMiAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIC9EICJfTUJDUyIgL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKK0NQUF9QUk9KPS9ub2xvZ28gL01EIC9XMyAvRUhzYyAvWmkgL08yIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiAvRCAiX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIiAvRCAiX01CQ1MiIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCiAhRUxTRUlGICAiJChDRkcpIiA9PSAiZGVidWciCi1DUFBfUFJPSj0vbm9sb2dvIC9NRGQgL1czIC9HbSAvRUhzYyAvWmkgL09kIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAorQ1BQX1BST0o9L25vbG9nbyAvTURkIC9XMyAvR20gL0VIc2MgL1ppIC9PZCAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAogIUVORElGCiAKIC5jeyQoSU5URElSKX0ub2JqOjoKQEAgLTE1OCwxMiArMTU3LDYgQEAKIAkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCiAKIAotU09VUkNFPS4uXC4uXHNubXBsaWJcY211X2NvbXBhdC5jCi0KLSIkKElOVERJUilcY211X2NvbXBhdC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KIFNPVVJDRT0uLlwuLlxzbm1wbGliXGNvbnRhaW5lci5jCiAKICIkKElOVERJUilcY29udGFpbmVyLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKZGlmZiAtLWdpdCBhL3dpbjMyL2xpYnNubXAvbGlic25tcC5kc3AgYi93aW4zMi9saWJzbm1wL2xpYnNubXAuZHNwCmluZGV4IDY0NDg4MDIuLjIzODYzMzEgMTAwNjQ0Ci0tLSBhL3dpbjMyL2xpYnNubXAvbGlic25tcC5kc3AKKysrIGIvd2luMzIvbGlic25tcC9saWJzbm1wLmRzcApAQCAtMTAxLDEwICsxMDEsNiBAQAogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQogDQotU09VUkNFPS4uXC4uXHNubXBsaWJcY211X2NvbXBhdC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQogU09VUkNFPS4uXC4uXHNubXBsaWJcY29udGFpbmVyLmMNCiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCkBAIC0zNjksMTAgKzM2NSw2IEBACiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCiANCi1TT1VSQ0U9Ii4uXC4uXGluY2x1ZGVcbmV0LXNubXBcbGlicmFyeVxjbXVfY29tcGF0LmgiDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQogU09VUkNFPSIuLlwuLlxpbmNsdWRlXG5ldC1zbm1wXGxpYnJhcnlcY29udGFpbmVyLmgiDQogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQpkaWZmIC0tZ2l0IGEvd2luMzIvbGlic25tcF9kbGwvTWFrZWZpbGUuaW4gYi93aW4zMi9saWJzbm1wX2RsbC9NYWtlZmlsZS5pbgppbmRleCAzMWFlMWJkLi4wYWFmNDFiIDEwMDY0NAotLS0gYS93aW4zMi9saWJzbm1wX2RsbC9NYWtlZmlsZS5pbgorKysgYi93aW4zMi9saWJzbm1wX2RsbC9NYWtlZmlsZS5pbgpAQCAtMiw3ICsyLDYgQEAKIENGRz0KIE9VVERJUj0KIElOVERJUj0KLVNTTD0KIFNESz0KIAogIUlGICIkKE9TKSIgPT0gIldpbmRvd3NfTlQiCkBAIC0xOCw3ICsxNyw2IEBACiAJIiQoSU5URElSKVxjYWxsYmFjay5vYmoiIFwKIAkiJChJTlRESVIpXGNoZWNrX3ZhcmJpbmQub2JqIiBcCiAJIiQoSU5URElSKVxjbG9zZWRpci5vYmoiIFwKLQkiJChJTlRESVIpXGNtdV9jb21wYXQub2JqIiBcCiAJIiQoSU5URElSKVxjb250YWluZXIub2JqIiBcCiAJIiQoSU5URElSKVxjb250YWluZXJfYmluYXJ5X2FycmF5Lm9iaiIgXAogCSIkKElOVERJUilcY29udGFpbmVyX2l0ZXJhdG9yLm9iaiIgXApAQCAtMTc0LDEyICsxNzIsNiBAQAogCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKIAogCi1TT1VSQ0U9Li5cLi5cc25tcGxpYlxjbXVfY29tcGF0LmMKLQotIiQoSU5URElSKVxjbXVfY29tcGF0Lm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQogU09VUkNFPS4uXC4uXHNubXBsaWJcY29udGFpbmVyLmMKIAogIiQoSU5URElSKVxjb250YWluZXIub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgpkaWZmIC0tZ2l0IGEvd2luMzIvbGlic25tcF9kbGwvbGlic25tcF9kbGwuZHNwIGIvd2luMzIvbGlic25tcF9kbGwvbGlic25tcF9kbGwuZHNwCmluZGV4IDY0MDdkNDIuLjEyYzA0MTQgMTAwNjQ0Ci0tLSBhL3dpbjMyL2xpYnNubXBfZGxsL2xpYnNubXBfZGxsLmRzcAorKysgYi93aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC5kc3AKQEAgLTEwOCwxMCArMTA4LDYgQEAKICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KIA0KLVNPVVJDRT0uLlwuLlxzbm1wbGliXGNtdV9jb21wYXQuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KIFNPVVJDRT0uLlwuLlxzbm1wbGliXGNvbnRhaW5lci5jDQogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQpAQCAtMzc2LDEwICszNzIsNiBAQAogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQogDQotU09VUkNFPSIuLlwuLlxpbmNsdWRlXG5ldC1zbm1wXGxpYnJhcnlcY211X2NvbXBhdC5oIg0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KIFNPVVJDRT0iLi5cLi5caW5jbHVkZVxuZXQtc25tcFxsaWJyYXJ5XGNvbnRhaW5lci5oIg0KICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KZGlmZiAtLWdpdCBhL3dpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIGIvd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKaW5kZXggN2Q2ZTNiNy4uMTYwODU2MyAxMDA2NDQKLS0tIGEvd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKysrIGIvd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKQEAgLTUsMTIgKzUsMTQgQEAKICNkZWZpbmUgTkVUX1NOTVBfQ09ORklHX0gKIAogLyogX01TQ19WRVIgdmFsdWVzCi0gICAxNjAwID0gMTAuMCAoMjAxMCkKLSAgIDE1MDAgPSAgOS4wICgyMDA4KQotICAgMTQwMCA9ICA4LjAgKDIwMDUpCi0gICAxMzEwID0gIDcuMSAoMjAwMykKLSAgIDEzMDAgPSAgNy4wICgyMDAyKQotICAgMTIwMCA9ICA2LjAKKyAgIDE4MDAgPSBNU1ZDKysgMTIuMCAoVmlzdWFsIFN0dWRpbyAyMDEzKQorICAgMTcwMCA9IE1TVkMrKyAxMS4wIChWaXN1YWwgU3R1ZGlvIDIwMTIpCisgICAxNjAwID0gTVNWQysrIDEwLjAgKFZpc3VhbCBTdHVkaW8gMjAxMCkKKyAgIDE1MDAgPSBNU1ZDKysgIDkuMCAoVmlzdWFsIFN0dWRpbyAyMDA4KQorICAgMTQwMCA9IE1TVkMrKyAgOC4wIChWaXN1YWwgU3R1ZGlvIDIwMDUpCisgICAxMzEwID0gTVNWQysrICA3LjEgKFZpc3VhbCBTdHVkaW8gMjAwMykKKyAgIDEzMDAgPSBNU1ZDKysgIDcuMCAoVmlzdWFsIFN0dWRpbyAyMDAyKQorICAgMTIwMCA9IE1TVkMrKyAgNi4wCiAqLwogCiAjaWZkZWYgX01TQ19WRVIKQEAgLTE1ODIsMTUgKzE1ODQsMTQgQEAKICNpZm5kZWYgSEFWRV9TVERJTlRfSAogdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4X3Q7CiB0eXBlZGVmIGNoYXIgaW50OF90OwotdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1aW50MTZfdDsKLXR5cGVkZWYgc2hvcnQgaW50MTZfdDsKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQxNiB1aW50MTZfdDsKK3R5cGVkZWYgX19pbnQxNiBpbnQxNl90OwogdHlwZWRlZiB1bnNpZ25lZCBfX2ludDMyIHVpbnQzMl90OwotdHlwZWRlZiBsb25nIGludDMyX3Q7Cit0eXBlZGVmIF9faW50MzIgaW50MzJfdDsKIHR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCB1aW50NjRfdDsKIHR5cGVkZWYgX19pbnQ2NCBpbnQ2NF90OwogdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IHVpbnRtYXhfdDsKIHR5cGVkZWYgX19pbnQ2NCBpbnRtYXhfdDsKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgICB1aW50MTZfdDsKICNlbHNlIC8qIEhBVkVfU1RESU5UX0ggKi8KICNpbmNsdWRlIDxzdGRpbnQuaD4KICNlbmRpZiAvKiBIQVZFX1NURElOVF9IICovCkBAIC0xNjE3LDEwICsxNjE4LDE3IEBACiAjZW5kaWYKIAogI2lmbmRlZiBfX2NwbHVzcGx1cworI2lmZGVmIF9NU0NfVkVSCisjcHJhZ21hIHdhcm5pbmcocHVzaCkKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0ODA0KSAvLyAnLScgOiB1bnNhZmUgdXNlIG9mIHR5cGUgJ2Jvb2wnIGluIG9wZXJhdGlvbgorI2VuZGlmCiBlbnVtIHsKICAgICBuZXRzbm1wX2NvbXBpbGVfdGltZV91aW50cHRyX3Rfc2l6ZV9jaGVjawogICAgICAgICA9IHNpemVvZihzdHJ1Y3QgbmV0c25tcF9jb21waWxlX3RpbWVfdWludHB0cl90X3NpemVfY2hlY2tfcyB7IGludDotIShzaXplb2YodWludHB0cl90KSA9PSBzaXplb2Yodm9pZCopKTsgfSkKIH07CisjaWZkZWYgX01TQ19WRVIKKyNwcmFnbWEgd2FybmluZyhwb3ApCisjZW5kaWYKICNlbmRpZgogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGNsb3Nlc29ja2V0IGZ1bmN0aW9uLiAgKi8KQEAgLTE2NzcsNyArMTY4NSw3IEBACiAvKiBNU1ZDIE9wZW5TU0wgbGlua2VyIHNldHRpbmdzLiAqLwogI2lmIGRlZmluZWQoX01TQ19WRVIpCiAjICBpZiBkZWZpbmVkKE5FVFNOTVBfVVNFX09QRU5TU0wpCi0jICAgIGlmZGVmIE5FVFNOTVBfVVNFX0RMTAorIyAgICBpZmRlZiBfRExMCiAjICAgICAgaWZkZWYgX0RFQlVHCiAjICAgICAgICBwcmFnbWEgY29tbWVudChsaWIsICJsaWJlYXkzMk1EZC5saWIiKQogIyAgICAgIGVsc2UKQEAgLTE2OTEsNiArMTY5OSw3IEBACiAjICAgICAgZW5kaWYKICMgICAgZW5kaWYKICMgICAgcHJhZ21hIGNvbW1lbnQobGliLCAiZ2RpMzIubGliIikKKyMgICAgcHJhZ21hIGNvbW1lbnQobGliLCAidXNlcjMyLmxpYiIpCiAjICBlbmRpZgogI2VuZGlmCiAKQEAgLTE3NTEsNyArMTc2MCwxMSBAQAogI2VuZGlmCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RydG91bGwnIGZ1bmN0aW9uLiAqLworI2lmIF9NU0NfVkVSID49IDE4MDAKKyNkZWZpbmUgSEFWRV9TVFJUT1VMTCAxCisjZWxzZQogLyogI3VuZGVmIEhBVkVfU1RSVE9VTEwgKi8KKyNlbmRpZgogCiAvKgogICogTW9kdWxlIGNvbmZpZ3VyYXRpb24gYW5kIGNvbnRyb2wgc3RhcnRzIGhlcmUuCmRpZmYgLS1naXQgYS93aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiBiL3dpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluCmluZGV4IDA0YWE5OWMuLjk2OTM3MzAgMTAwNjQ0Ci0tLSBhL3dpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluCisrKyBiL3dpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluCkBAIC01LDEyICs1LDE0IEBACiAjZGVmaW5lIE5FVF9TTk1QX0NPTkZJR19ICiAKIC8qIF9NU0NfVkVSIHZhbHVlcwotICAgMTYwMCA9IDEwLjAgKDIwMTApCi0gICAxNTAwID0gIDkuMCAoMjAwOCkKLSAgIDE0MDAgPSAgOC4wICgyMDA1KQotICAgMTMxMCA9ICA3LjEgKDIwMDMpCi0gICAxMzAwID0gIDcuMCAoMjAwMikKLSAgIDEyMDAgPSAgNi4wCisgICAxODAwID0gTVNWQysrIDEyLjAgKFZpc3VhbCBTdHVkaW8gMjAxMykKKyAgIDE3MDAgPSBNU1ZDKysgMTEuMCAoVmlzdWFsIFN0dWRpbyAyMDEyKQorICAgMTYwMCA9IE1TVkMrKyAxMC4wIChWaXN1YWwgU3R1ZGlvIDIwMTApCisgICAxNTAwID0gTVNWQysrICA5LjAgKFZpc3VhbCBTdHVkaW8gMjAwOCkKKyAgIDE0MDAgPSBNU1ZDKysgIDguMCAoVmlzdWFsIFN0dWRpbyAyMDA1KQorICAgMTMxMCA9IE1TVkMrKyAgNy4xIChWaXN1YWwgU3R1ZGlvIDIwMDMpCisgICAxMzAwID0gTVNWQysrICA3LjAgKFZpc3VhbCBTdHVkaW8gMjAwMikKKyAgIDEyMDAgPSBNU1ZDKysgIDYuMAogKi8KIAogI2lmZGVmIF9NU0NfVkVSCkBAIC0xNTgyLDE1ICsxNTg0LDE0IEBACiAjaWZuZGVmIEhBVkVfU1RESU5UX0gKIHR5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50OF90OwogdHlwZWRlZiBjaGFyIGludDhfdDsKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdWludDE2X3Q7Ci10eXBlZGVmIHNob3J0IGludDE2X3Q7Cit0eXBlZGVmIHVuc2lnbmVkIF9faW50MTYgdWludDE2X3Q7Cit0eXBlZGVmIF9faW50MTYgaW50MTZfdDsKIHR5cGVkZWYgdW5zaWduZWQgX19pbnQzMiB1aW50MzJfdDsKLXR5cGVkZWYgbG9uZyBpbnQzMl90OwordHlwZWRlZiBfX2ludDMyIGludDMyX3Q7CiB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgdWludDY0X3Q7CiB0eXBlZGVmIF9faW50NjQgaW50NjRfdDsKIHR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCB1aW50bWF4X3Q7CiB0eXBlZGVmIF9faW50NjQgaW50bWF4X3Q7Ci10eXBlZGVmIHVuc2lnbmVkIHNob3J0ICAgdWludDE2X3Q7CiAjZWxzZSAvKiBIQVZFX1NURElOVF9IICovCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjZW5kaWYgLyogSEFWRV9TVERJTlRfSCAqLwpAQCAtMTYxNywxMCArMTYxOCwxNyBAQAogI2VuZGlmCiAKICNpZm5kZWYgX19jcGx1c3BsdXMKKyNpZmRlZiBfTVNDX1ZFUgorI3ByYWdtYSB3YXJuaW5nKHB1c2gpCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDgwNCkgLy8gJy0nIDogdW5zYWZlIHVzZSBvZiB0eXBlICdib29sJyBpbiBvcGVyYXRpb24KKyNlbmRpZgogZW51bSB7CiAgICAgbmV0c25tcF9jb21waWxlX3RpbWVfdWludHB0cl90X3NpemVfY2hlY2sKICAgICAgICAgPSBzaXplb2Yoc3RydWN0IG5ldHNubXBfY29tcGlsZV90aW1lX3VpbnRwdHJfdF9zaXplX2NoZWNrX3MgeyBpbnQ6LSEoc2l6ZW9mKHVpbnRwdHJfdCkgPT0gc2l6ZW9mKHZvaWQqKSk7IH0pCiB9OworI2lmZGVmIF9NU0NfVkVSCisjcHJhZ21hIHdhcm5pbmcocG9wKQorI2VuZGlmCiAjZW5kaWYKIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBjbG9zZXNvY2tldCBmdW5jdGlvbi4gICovCkBAIC0xNjc3LDcgKzE2ODUsNyBAQAogLyogTVNWQyBPcGVuU1NMIGxpbmtlciBzZXR0aW5ncy4gKi8KICNpZiBkZWZpbmVkKF9NU0NfVkVSKQogIyAgaWYgZGVmaW5lZChORVRTTk1QX1VTRV9PUEVOU1NMKQotIyAgICBpZmRlZiBORVRTTk1QX1VTRV9ETEwKKyMgICAgaWZkZWYgX0RMTAogIyAgICAgIGlmZGVmIF9ERUJVRwogIyAgICAgICAgcHJhZ21hIGNvbW1lbnQobGliLCAibGliZWF5MzJNRGQubGliIikKICMgICAgICBlbHNlCkBAIC0xNjkxLDYgKzE2OTksNyBAQAogIyAgICAgIGVuZGlmCiAjICAgIGVuZGlmCiAjICAgIHByYWdtYSBjb21tZW50KGxpYiwgImdkaTMyLmxpYiIpCisjICAgIHByYWdtYSBjb21tZW50KGxpYiwgInVzZXIzMi5saWIiKQogIyAgZW5kaWYKICNlbmRpZgogCkBAIC0xNzUxLDcgKzE3NjAsMTEgQEAKICNlbmRpZgogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cnRvdWxsJyBmdW5jdGlvbi4gKi8KKyNpZiBfTVNDX1ZFUiA+PSAxODAwCisjZGVmaW5lIEhBVkVfU1RSVE9VTEwKKyNlbHNlCiAvKiAjdW5kZWYgSEFWRV9TVFJUT1VMTCAqLworI2VuZGlmCiAKIC8qCiAgKiBNb2R1bGUgY29uZmlndXJhdGlvbiBhbmQgY29udHJvbCBzdGFydHMgaGVyZS4KZGlmZiAtLWdpdCBhL3dpbjMyL3NubXBidWxrZ2V0L3NubXBidWxrZ2V0LmRzcCBiL3dpbjMyL3NubXBidWxrZ2V0L3NubXBidWxrZ2V0LmRzcAppbmRleCBmZTVlNWFlLi4zOTU5OWRiIDEwMDY0NAotLS0gYS93aW4zMi9zbm1wYnVsa2dldC9zbm1wYnVsa2dldC5kc3AKKysrIGIvd2luMzIvc25tcGJ1bGtnZXQvc25tcGJ1bGtnZXQuZHNwCkBAIC01MCw3ICs1MCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcGJ1bGtnZXQuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXBidWxrZ2V0LmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KIA0KICFFTFNFSUYgICIkKENGRykiID09ICJzbm1wYnVsa2dldCAtIFdpbjMyIERlYnVnIg0KIA0KQEAgLTc0LDcgKzc0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXBidWxrZ2V0LmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXBidWxrZ2V0LmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KIA0KICFFTkRJRiANCiANCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wYnVsa3dhbGsvc25tcGJ1bGt3YWxrLmRzcCBiL3dpbjMyL3NubXBidWxrd2Fsay9zbm1wYnVsa3dhbGsuZHNwCmluZGV4IGVhOGJiMGMuLjkxZTk0ZDMgMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXBidWxrd2Fsay9zbm1wYnVsa3dhbGsuZHNwCisrKyBiL3dpbjMyL3NubXBidWxrd2Fsay9zbm1wYnVsa3dhbGsuZHNwCkBAIC01MCw3ICs1MCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcGJ1bGt3YWxrLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wYnVsa3dhbGsuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQogDQogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInNubXBidWxrd2FsayAtIFdpbjMyIERlYnVnIg0KIA0KQEAgLTc0LDcgKzc0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXBidWxrd2Fsay5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wYnVsa3dhbGsuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQogDQogIUVORElGIA0KIA0KZGlmZiAtLWdpdCBhL3dpbjMyL3NubXBkL01ha2VmaWxlLmluIGIvd2luMzIvc25tcGQvTWFrZWZpbGUuaW4KaW5kZXggNjUyZGQ4MC4uMWIxYjNhYyAxMDA2NDQKLS0tIGEvd2luMzIvc25tcGQvTWFrZWZpbGUuaW4KKysrIGIvd2luMzIvc25tcGQvTWFrZWZpbGUuaW4KQEAgLTMsNyArMyw2IEBACiBPVVRESVI9CiBJTlRESVI9CiBTREs9Ci1TU0w9CiBMSU5LVFlQRT0KIAogIyBTZXQgdG8gMSB0byBhbGxvdyB0aGUgYnVpbGRpbmcgdXNpbmcgdGhlIERMTCB2ZXJzaW9uIG9mIFNOTVBMSUIuCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wZC9zbm1wZC5kc3AgYi93aW4zMi9zbm1wZC9zbm1wZC5kc3AKaW5kZXggNTUzNDMwNi4uNDVlMmNhZCAxMDA2NDQKLS0tIGEvd2luMzIvc25tcGQvc25tcGQuZHNwCisrKyBiL3dpbjMyL3NubXBkL3NubXBkLmRzcApAQCAtNTAsNyArNTAsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIG5ldHNubXBhZ2VudC5saWIgbmV0c25tcG1pYnMubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXBkLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wZC5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCiANCiAhRUxTRUlGICAiJChDRkcpIiA9PSAic25tcGQgLSBXaW4zMiBEZWJ1ZyINCiANCkBAIC03NCw3ICs3NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgbmV0c25tcGFnZW50LmxpYiBuZXRzbm1wbWlicy5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wZC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wZC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCiANCiAhRU5ESUYgDQogDQpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcGRlbHRhL3NubXBkZWx0YS5kc3AgYi93aW4zMi9zbm1wZGVsdGEvc25tcGRlbHRhLmRzcAppbmRleCBiMTdiODIyLi43ZjVhNWQzIDEwMDY0NAotLS0gYS93aW4zMi9zbm1wZGVsdGEvc25tcGRlbHRhLmRzcAorKysgYi93aW4zMi9zbm1wZGVsdGEvc25tcGRlbHRhLmRzcApAQCAtNTAsNyArNTAsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXBkZWx0YS5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcGRlbHRhLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KIA0KICFFTFNFSUYgICIkKENGRykiID09ICJzbm1wZGVsdGEgLSBXaW4zMiBEZWJ1ZyINCiANCkBAIC03NCw3ICs3NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wZGVsdGEuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcGRlbHRhLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KIA0KICFFTkRJRiANCiANCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wZGYvc25tcGRmLmRzcCBiL3dpbjMyL3NubXBkZi9zbm1wZGYuZHNwCmluZGV4IDg4YzNmNmQuLmUyZTRiOTQgMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXBkZi9zbm1wZGYuZHNwCisrKyBiL3dpbjMyL3NubXBkZi9zbm1wZGYuZHNwCkBAIC01MCw3ICs1MCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcGRmLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wZGYuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQogDQogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInNubXBkZiAtIFdpbjMyIERlYnVnIg0KIA0KQEAgLTc0LDcgKzc0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXBkZi5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wZGYuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQogDQogIUVORElGIA0KIA0KZGlmZiAtLWdpdCBhL3dpbjMyL3NubXBnZXQvc25tcGdldC5kc3AgYi93aW4zMi9zbm1wZ2V0L3NubXBnZXQuZHNwCmluZGV4IDY0OTgwZWQuLjA2MDMyMzIgMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXBnZXQvc25tcGdldC5kc3AKKysrIGIvd2luMzIvc25tcGdldC9zbm1wZ2V0LmRzcApAQCAtNTAsNyArNTAsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXBnZXQuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXBnZXQuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQogDQogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInNubXBnZXQgLSBXaW4zMiBEZWJ1ZyINCiANCkBAIC03NCw3ICs3NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wZ2V0LmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXBnZXQuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQogDQogIUVORElGIA0KIA0KZGlmZiAtLWdpdCBhL3dpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LmRzcCBiL3dpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LmRzcAppbmRleCAyMzMxOTlkLi5jYjYzYzg0IDEwMDY0NAotLS0gYS93aW4zMi9zbm1wZ2V0bmV4dC9zbm1wZ2V0bmV4dC5kc3AKKysrIGIvd2luMzIvc25tcGdldG5leHQvc25tcGdldG5leHQuZHNwCkBAIC01MCw3ICs1MCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcGdldG5leHQuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXBnZXRuZXh0LmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KIA0KICFFTFNFSUYgICIkKENGRykiID09ICJzbm1wZ2V0bmV4dCAtIFdpbjMyIERlYnVnIg0KIA0KQEAgLTc0LDcgKzc0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXBnZXRuZXh0LmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXBnZXRuZXh0LmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KIA0KICFFTkRJRiANCiANCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbiBiL3dpbjMyL3NubXBuZXRzdGF0L01ha2VmaWxlLmluCmluZGV4IGUyN2Q5N2QuLjA1YTAxZTggMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXBuZXRzdGF0L01ha2VmaWxlLmluCisrKyBiL3dpbjMyL3NubXBuZXRzdGF0L01ha2VmaWxlLmluCkBAIC0yLDcgKzIsNiBAQAogQ0ZHPQogT1VURElSPQogSU5URElSPQotU1NMPQogTElOS1RZUEU9CiAKICMgU2V0IHRvIDEgdG8gYWxsb3cgdGhlIGJ1aWxkaW5nIHVzaW5nIHRoZSBETEwgdmVyc2lvbiBvZiBTTk1QTElCLgpAQCAtMjMsOCArMjIsMTAgQEAKIAktQGVyYXNlICIkKElOVERJUilcaWYub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVxpbmV0Lm9iaiIKIAktQGVyYXNlICIkKElOVERJUilcaW5ldDYub2JqIgorCS1AZXJhc2UgIiQoSU5URElSKVxpbmV0eC5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXG1haW4ub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVxyb3V0ZS5vYmoiCisJLUBlcmFzZSAiJChJTlRESVIpXHJvdXRleC5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXGZmcy5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXHZjPz8uaWRiIgogCS1AZXJhc2UgIiQoSU5URElSKVx3aW5zdHViLm9iaiIKQEAgLTg2LDggKzg3LDEwIEBACiAJIiQoSU5URElSKVxpZi5vYmoiIFwKIAkiJChJTlRESVIpXGluZXQub2JqIiBcCiAJIiQoSU5URElSKVxpbmV0Ni5vYmoiIFwKKwkiJChJTlRESVIpXGluZXR4Lm9iaiIgXAogCSIkKElOVERJUilcbWFpbi5vYmoiIFwKIAkiJChJTlRESVIpXHJvdXRlLm9iaiIgXAorCSIkKElOVERJUilccm91dGV4Lm9iaiIgXAogCSIkKElOVERJUilcZmZzLm9iaiIgXAogCSIkKElOVERJUilcd2luc3R1Yi5vYmoiCiAKQEAgLTExNiwxMCArMTE5LDE0IEBACiAJLUBlcmFzZSAiJChJTlRESVIpXGluZXQuc2JyIgogCS1AZXJhc2UgIiQoSU5URElSKVxpbmV0Ni5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXGluZXQ2LnNiciIKKwktQGVyYXNlICIkKElOVERJUilcaW5ldHgub2JqIgorCS1AZXJhc2UgIiQoSU5URElSKVxpbmV0eC5zYnIiCiAJLUBlcmFzZSAiJChJTlRESVIpXG1haW4ub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVxtYWluLnNiciIKIAktQGVyYXNlICIkKElOVERJUilccm91dGUub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVxyb3V0ZS5zYnIiCisJLUBlcmFzZSAiJChJTlRESVIpXHJvdXRleC5vYmoiCisJLUBlcmFzZSAiJChJTlRESVIpXHJvdXRleC5zYnIiCiAJLUBlcmFzZSAiJChJTlRESVIpXGZmcy5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXGZmcy5zYnIiCiAJLUBlcmFzZSAiJChJTlRESVIpXHZjPz8uaWRiIgpAQCAtMTgyLDggKzE4OSwxMCBAQAogCSIkKElOVERJUilcaWYuc2JyIiBcCiAJIiQoSU5URElSKVxpbmV0LnNiciIgXAogCSIkKElOVERJUilcaW5ldDYuc2JyIiBcCisJIiQoSU5URElSKVxpbmV0eC5zYnIiIFwKIAkiJChJTlRESVIpXG1haW4uc2JyIiBcCiAJIiQoSU5URElSKVxyb3V0ZS5zYnIiIFwKKwkiJChJTlRESVIpXHJvdXRleC5zYnIiIFwKIAkiJChJTlRESVIpXGZmcy5zYnIiIFwKIAkiJChJTlRESVIpXHdpbnN0dWIuc2JyIgogCkBAIC0xOTgsOCArMjA3LDEwIEBACiAJIiQoSU5URElSKVxpZi5vYmoiIFwKIAkiJChJTlRESVIpXGluZXQub2JqIiBcCiAJIiQoSU5URElSKVxpbmV0Ni5vYmoiIFwKKwkiJChJTlRESVIpXGluZXR4Lm9iaiIgXAogCSIkKElOVERJUilcbWFpbi5vYmoiIFwKIAkiJChJTlRESVIpXHJvdXRlLm9iaiIgXAorCSIkKElOVERJUilccm91dGV4Lm9iaiIgXAogCSIkKElOVERJUilcZmZzLm9iaiIgXAogCSIkKElOVERJUilcd2luc3R1Yi5vYmoiCiAKQEAgLTI4Myw2ICsyOTQsMTEgQEAKIAogIUVORElGIAogCitTT1VSQ0U9Li5cLi5cYXBwc1wkKFBST0dOQU1FKVxpbmV0eC5jCisKKyIkKElOVERJUilcaW5ldHgub2JqIgkiJChJTlRESVIpXGluZXR4LnNiciIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKIFNPVVJDRT0uLlwuLlxhcHBzXCQoUFJPR05BTUUpXG1haW4uYwogCiAhSUYgICIkKENGRykiID09ICJyZWxlYXNlIgpAQCAtMzE5LDYgKzMzNSwxMSBAQAogCiAhRU5ESUYgCiAKK1NPVVJDRT0uLlwuLlxhcHBzXCQoUFJPR05BTUUpXHJvdXRleC5jCisKKyIkKElOVERJUilccm91dGV4Lm9iaiIJIiQoSU5URElSKVxyb3V0ZXguc2JyIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKKwogU09VUkNFPS4uXC4uXGFwcHNcJChQUk9HTkFNRSlcZmZzLmMKIAogIUlGICAiJChDRkcpIiA9PSAicmVsZWFzZSIKZGlmZiAtLWdpdCBhL3dpbjMyL3NubXBuZXRzdGF0L3NubXBuZXRzdGF0LmRzcCBiL3dpbjMyL3NubXBuZXRzdGF0L3NubXBuZXRzdGF0LmRzcApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDI1ZWMwMzEuLjJlZGE1NzUKLS0tIGEvd2luMzIvc25tcG5ldHN0YXQvc25tcG5ldHN0YXQuZHNwCisrKyBiL3dpbjMyL3NubXBuZXRzdGF0L3NubXBuZXRzdGF0LmRzcApAQCAtNTAsNyArNTAsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXBuZXRzdGF0LmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wbmV0c3RhdC5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCiANCiAhRUxTRUlGICAiJChDRkcpIiA9PSAic25tcG5ldHN0YXQgLSBXaW4zMiBEZWJ1ZyINCiANCkBAIC03NCw3ICs3NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wbmV0c3RhdC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wbmV0c3RhdC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCiANCiAhRU5ESUYgDQogDQpAQCAtODQsNiArODQsMTAgQEAKICMgTmFtZSAic25tcG5ldHN0YXQgLSBXaW4zMiBEZWJ1ZyINCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQogDQorU09VUkNFPS4uXC4uXGFwcHNcc25tcG5ldHN0YXRcZmZzLmMNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCiBTT1VSQ0U9Li5cLi5cYXBwc1xzbm1wbmV0c3RhdFxpZi5jDQogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQpAQCAtOTYsNiArMTAwLDEwIEBACiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCiANCitTT1VSQ0U9Li5cLi5cYXBwc1xzbm1wbmV0c3RhdFxpbmV0eC5jDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQogU09VUkNFPS4uXC4uXGFwcHNcc25tcG5ldHN0YXRcbWFpbi5jDQogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQpAQCAtMTA0LDcgKzExMiw3IEBACiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCiANCi1TT1VSQ0U9Li5cLi5cYXBwc1xzbm1wbmV0c3RhdFxmZnMuYw0KK1NPVVJDRT0uLlwuLlxhcHBzXHNubXBuZXRzdGF0XHJvdXRleC5jDQogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQogDQpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcHNldC9zbm1wc2V0LmRzcCBiL3dpbjMyL3NubXBzZXQvc25tcHNldC5kc3AKaW5kZXggZmRlY2EzMC4uYWQwZjUwOSAxMDA2NDQKLS0tIGEvd2luMzIvc25tcHNldC9zbm1wc2V0LmRzcAorKysgYi93aW4zMi9zbm1wc2V0L3NubXBzZXQuZHNwCkBAIC01MCw3ICs1MCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcHNldC5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcHNldC5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCiANCiAhRUxTRUlGICAiJChDRkcpIiA9PSAic25tcHNldCAtIFdpbjMyIERlYnVnIg0KIA0KQEAgLTc0LDcgKzc0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXBzZXQuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcHNldC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCiANCiAhRU5ESUYgDQogDQpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcHNtX2luaXQuaCBiL3dpbjMyL3NubXBzbV9pbml0LmgKaW5kZXggODAxNWZmNi4uYzhhNDEwYiAxMDA2NDQKLS0tIGEvd2luMzIvc25tcHNtX2luaXQuaAorKysgYi93aW4zMi9zbm1wc21faW5pdC5oCkBAIC0xLDIgKzEgQEAKLS8qIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBjb25maWd1cmUuICBEbyBub3QgbW9kaWZ5IGJ5IGhhbmQuICovCiBpbml0X3VzbSgpOwpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcHNtX3NodXRkb3duLmggYi93aW4zMi9zbm1wc21fc2h1dGRvd24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTBjNTUxCi0tLSAvZGV2L251bGwKKysrIGIvd2luMzIvc25tcHNtX3NodXRkb3duLmgKQEAgLTAsMCArMSBAQAorc2h1dGRvd25fdXNtKCk7CmRpZmYgLS1naXQgYS93aW4zMi9zbm1wc3RhdHVzL3NubXBzdGF0dXMuZHNwIGIvd2luMzIvc25tcHN0YXR1cy9zbm1wc3RhdHVzLmRzcAppbmRleCAxYjY4MzczLi5lNmE0MTAwIDEwMDY0NAotLS0gYS93aW4zMi9zbm1wc3RhdHVzL3NubXBzdGF0dXMuZHNwCisrKyBiL3dpbjMyL3NubXBzdGF0dXMvc25tcHN0YXR1cy5kc3AKQEAgLTUwLDcgKzUwLDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wc3RhdHVzLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wc3RhdHVzLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KIA0KICFFTFNFSUYgICIkKENGRykiID09ICJzbm1wc3RhdHVzIC0gV2luMzIgRGVidWciDQogDQpAQCAtNzQsNyArNzQsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcHN0YXR1cy5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wc3RhdHVzLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KIA0KICFFTkRJRiANCiANCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLmRzcCBiL3dpbjMyL3NubXB0YWJsZS9zbm1wdGFibGUuZHNwCmluZGV4IDc1Zjk2NGYuLjFkZmMxMzggMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXB0YWJsZS9zbm1wdGFibGUuZHNwCisrKyBiL3dpbjMyL3NubXB0YWJsZS9zbm1wdGFibGUuZHNwCkBAIC01MCw3ICs1MCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcHRhYmxlLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wdGFibGUuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQogDQogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInNubXB0YWJsZSAtIFdpbjMyIERlYnVnIg0KIA0KQEAgLTc0LDcgKzc0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXB0YWJsZS5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wdGFibGUuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQogDQogIUVORElGIA0KIA0KZGlmZiAtLWdpdCBhL3dpbjMyL3NubXB0ZXN0L3NubXB0ZXN0LmRzcCBiL3dpbjMyL3NubXB0ZXN0L3NubXB0ZXN0LmRzcAppbmRleCBkZmIwY2YxLi44OWMwOGU5IDEwMDY0NAotLS0gYS93aW4zMi9zbm1wdGVzdC9zbm1wdGVzdC5kc3AKKysrIGIvd2luMzIvc25tcHRlc3Qvc25tcHRlc3QuZHNwCkBAIC01MCw3ICs1MCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcHRlc3QuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXB0ZXN0LmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KIA0KICFFTFNFSUYgICIkKENGRykiID09ICJzbm1wdGVzdCAtIFdpbjMyIERlYnVnIg0KIA0KQEAgLTc0LDcgKzc0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXB0ZXN0LmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXB0ZXN0LmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KIA0KICFFTkRJRiANCiANCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wdHJhbnNsYXRlL3NubXB0cmFuc2xhdGUuZHNwIGIvd2luMzIvc25tcHRyYW5zbGF0ZS9zbm1wdHJhbnNsYXRlLmRzcAppbmRleCBhM2ViZGU1Li5jM2VjYTAyIDEwMDY0NAotLS0gYS93aW4zMi9zbm1wdHJhbnNsYXRlL3NubXB0cmFuc2xhdGUuZHNwCisrKyBiL3dpbjMyL3NubXB0cmFuc2xhdGUvc25tcHRyYW5zbGF0ZS5kc3AKQEAgLTUwLDcgKzUwLDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wdHJhbnNsYXRlLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wdHJhbnNsYXRlLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KIA0KICFFTFNFSUYgICIkKENGRykiID09ICJzbm1wdHJhbnNsYXRlIC0gV2luMzIgRGVidWciDQogDQpAQCAtNzQsNyArNzQsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcHRyYW5zbGF0ZS5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wdHJhbnNsYXRlLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KIA0KICFFTkRJRiANCiANCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC5kc3AgYi93aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC5kc3AKaW5kZXggOGQyN2VlMS4uYzM0ZmZkOCAxMDA2NDQKLS0tIGEvd2luMzIvc25tcHRyYXAvc25tcHRyYXAuZHNwCisrKyBiL3dpbjMyL3NubXB0cmFwL3NubXB0cmFwLmRzcApAQCAtNTAsNyArNTAsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXB0cmFwLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wdHJhcC5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCiANCiAhRUxTRUlGICAiJChDRkcpIiA9PSAic25tcHRyYXAgLSBXaW4zMiBEZWJ1ZyINCiANCkBAIC03NCw3ICs3NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wdHJhcC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wdHJhcC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCiANCiAhRU5ESUYgDQogDQpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcHRyYXBkL01ha2VmaWxlLmluIGIvd2luMzIvc25tcHRyYXBkL01ha2VmaWxlLmluCmluZGV4IGRjNGZlNTAuLjJmYTVjY2IgMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXB0cmFwZC9NYWtlZmlsZS5pbgorKysgYi93aW4zMi9zbm1wdHJhcGQvTWFrZWZpbGUuaW4KQEAgLTIsNyArMiw2IEBACiBDRkc9CiBPVVRESVI9CiBJTlRESVI9Ci1TU0w9CiBMSU5LVFlQRT0KIAogIyBTZXQgdG8gMSB0byBhbGxvdyB0aGUgYnVpbGRpbmcgdXNpbmcgdGhlIERMTCB2ZXJzaW9uIG9mIFNOTVBMSUIuCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wdHJhcGQvc25tcHRyYXBkLmRzcCBiL3dpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQuZHNwCmluZGV4IDUwMzkxOGEuLjlmNDkzODkgMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQuZHNwCisrKyBiL3dpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQuZHNwCkBAIC01MCw3ICs1MCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgbmV0c25tcGFnZW50LmxpYiBuZXRzbm1wbWlicy5saWIgbmV0c25tcHRyYXBkLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wdHJhcGQuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXB0cmFwZC5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCiANCiAhRUxTRUlGICAiJChDRkcpIiA9PSAic25tcHRyYXBkIC0gV2luMzIgRGVidWciDQogDQpAQCAtNzQsNyArNzQsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIG5ldHNubXBhZ2VudC5saWIgbmV0c25tcG1pYnMubGliIG5ldHNubXB0cmFwZC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wdHJhcGQuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcHRyYXBkLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KIA0KICFFTkRJRiANCiANCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wdXNtL3NubXB1c20uZHNwIGIvd2luMzIvc25tcHVzbS9zbm1wdXNtLmRzcAppbmRleCBkYjQzZjJlLi5hMWMwMTI0IDEwMDY0NAotLS0gYS93aW4zMi9zbm1wdXNtL3NubXB1c20uZHNwCisrKyBiL3dpbjMyL3NubXB1c20vc25tcHVzbS5kc3AKQEAgLTUwLDcgKzUwLDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wdXNtLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wdXNtLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KIA0KICFFTFNFSUYgICIkKENGRykiID09ICJzbm1wdXNtIC0gV2luMzIgRGVidWciDQogDQpAQCAtNzQsNyArNzQsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcHVzbS5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wdXNtLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KIA0KICFFTkRJRiANCiANCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaCBiL3dpbjMyL3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3NjNjZjgKLS0tIC9kZXYvbnVsbAorKysgYi93aW4zMi9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaApAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmg+CmRpZmYgLS1naXQgYS93aW4zMi9zbm1wdmFjbS9zbm1wdmFjbS5kc3AgYi93aW4zMi9zbm1wdmFjbS9zbm1wdmFjbS5kc3AKaW5kZXggMDg1NjgzMi4uMmZkNTNmZCAxMDA2NDQKLS0tIGEvd2luMzIvc25tcHZhY20vc25tcHZhY20uZHNwCisrKyBiL3dpbjMyL3NubXB2YWNtL3NubXB2YWNtLmRzcApAQCAtNTAsNyArNTAsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXB2YWNtLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wdmFjbS5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCiANCiAhRUxTRUlGICAiJChDRkcpIiA9PSAic25tcHZhY20gLSBXaW4zMiBEZWJ1ZyINCiANCkBAIC03NCw3ICs3NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wdmFjbS5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wdmFjbS5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCiANCiAhRU5ESUYgDQogDQpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcHdhbGsvc25tcHdhbGsuZHNwIGIvd2luMzIvc25tcHdhbGsvc25tcHdhbGsuZHNwCmluZGV4IDVkODE5NTcuLjY3NTk4ZjEgMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXB3YWxrL3NubXB3YWxrLmRzcAorKysgYi93aW4zMi9zbm1wd2Fsay9zbm1wd2Fsay5kc3AKQEAgLTUwLDcgKzUwLDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wd2Fsay5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcHdhbGsuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQogDQogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInNubXB3YWxrIC0gV2luMzIgRGVidWciDQogDQpAQCAtNzQsNyArNzQsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcHdhbGsuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcHdhbGsuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQogDQogIUVORElGIA0KIA0K